1SCHEMA step_merged_cad_schema;
2
3(* this is a MODIFIED version of the merged schema
4 * original is at http://www.steptools.com/support/stdev_docs/stpcad/step_merged_cad_schema.exp
5 *
6 * modified to eliminate exp2cxx errors. To view changes, use one of
7 * - `git log -p data/STEPTools_merged_schema/step_merged_cad_schema.exp`
8 * - http://github.com/stepcode/stepcode/commits/master/data/STEPTools_merged_schema
9 *)
10
11
12(* Constructed by merging:
13 *  - AP242 (wg12n8324_ap242dis.exp)
14 *  - AP214 (wg3n2628_ap214e3.exp)
15 *  - AP203e2 (wg3n2635_ap203e2.exp)
16 *  - Deprecated AP203e1 (ap203e1_types.exp)
17 *  - AP242 DIS Fixes (ap242_fixes.exp)
18 *)
19
20CONSTANT
21      deprecated_constructed_data_types : SET [0:?] OF STRING := [ 'approved_item', 'certified_item', 'change_request_item', 'contracted_item', 'cc_classified_item', 'date_time_item', 'cc_person_organization_item', 'cc_specified_item', 'start_request_item', 'work_item' ];
22      deprecated_entity_data_types : SET [0:?] OF STRING := [ 'cc_design_approval', 'cc_design_certification', 'cc_design_contract', 'cc_design_date_and_time_assignment', 'cc_design_person_and_organization_assignment', 'cc_design_security_classification', 'cc_design_specification_reference', 'change', 'change_request', 'design_context', 'design_make_from_relationship', 'mechanical_context', 'product_category_relationship', 'start_request', 'start_work', 'supplied_part_relationship' ];
23      deprecated_interfaced_data_types : SET [0:?] OF STRING := [ 'document_with_class', 'ordinal_date', 'product_definition_formation_with_specified_source', 'week_of_year_and_day_date' ];
24      dummy_gri : geometric_representation_item := representation_item('') || geometric_representation_item();
25      dummy_tri : topological_representation_item := representation_item('') || topological_representation_item();
26      pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF' ];
27      schema_date_stamp : STRING := 'Feb 19 18:28:57 2013';
28schema_prefix : STRING := 'STEP_MERGED_CAD_SCHEMA.';
29      the_binarys : elementary_space := make_elementary_space(es_binarys);
30      the_booleans : elementary_space := make_elementary_space(es_booleans);
31      the_complex_numbers : elementary_space := make_elementary_space(es_complex_numbers);
32      the_complex_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_complex_numbers);
33      the_empty_maths_tuple : maths_tuple := [];
34      the_empty_space : finite_space := make_finite_space([]);
35      the_generics : elementary_space := make_elementary_space(es_generics);
36      the_integer_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_integers);
37      the_integers : elementary_space := make_elementary_space(es_integers);
38      the_logicals : elementary_space := make_elementary_space(es_logicals);
39      the_maths_spaces : elementary_space := make_elementary_space(es_maths_spaces);
40      the_neg1_one_interval : finite_real_interval := make_finite_real_interval(-1, closed, 1, closed);
41      the_neghalfpi_halfpi_interval : finite_real_interval := make_finite_real_interval(-0.500000 * 3.14159, closed, 0.500000 * 3.14159, closed);
42      the_negpi_pi_interval : finite_real_interval := make_finite_real_interval(-3.14159, open, 3.14159, closed);
43      the_nonnegative_reals : real_interval_from_min := make_real_interval_from_min(0, closed);
44      the_numbers : elementary_space := make_elementary_space(es_numbers);
45      the_real_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_reals);
46      the_reals : elementary_space := make_elementary_space(es_reals);
47      the_strings : elementary_space := make_elementary_space(es_strings);
48      the_tuples : extended_tuple_space := make_extended_tuple_space(the_zero_tuple_space, the_generics);
49      the_zero_pi_interval : finite_real_interval := make_finite_real_interval(0, closed, 3.14159, closed);
50      the_zero_tuple_space : listed_product_space := make_listed_product_space([]);
51END_CONSTANT;
52
53-- IN AP203e2/AP242
54TYPE absorbed_dose_measure = REAL;
55END_TYPE;
56
57-- IN AP203e2/AP242
58TYPE acceleration_measure = REAL;
59END_TYPE;
60
61-- DIFF IN AP214
62-- DIFF IN AP203e2
63TYPE action_item = SELECT
64  (action,							 -- AP214/AP242
65   action_directive,						 -- Common
66   action_method,						 -- AP214/AP242
67   action_property,						 -- AP214/AP242
68   action_relationship,						 -- AP214/AP242
69   action_request_solution,					 -- AP214/AP242
70   alternate_product_relationship,				 -- AP214/AP242
71   applied_action_assignment,					 -- AP214/AP242
72   applied_classification_assignment,				 -- AP214/AP242
73   applied_person_and_organization_assignment,			 -- AP214/AP242
74   approval_status,						 -- AP214/AP242
75   assembly_component_usage_substitute,				 -- AP214/AP242
76   certification,						 -- AP214/AP242
77   certification_item,						 -- AP203e2/AP242
78   characterized_object,					 -- AP203e2/AP242
79   class,							 -- AP214/AP242
80   class_system,						 -- AP214/AP242
81   classification_item,						 -- AP203e2/AP242
82   configuration_design,					 -- AP214/AP242
83   configuration_effectivity,					 -- Common
84   configuration_item,						 -- AP214/AP242
85   configured_effectivity_assignment,				 -- AP214/AP242
86   contract,							 -- AP214/AP242
87   document_file,						 -- AP214/AP242
88   document_reference_item,					 -- AP203e2/AP242
89   draughting_model,						 -- AP214/AP242
90   drawing_revision,						 -- AP214/AP242
91   evaluated_characteristic,					 -- AP242
92   executed_action,						 -- AP214/AP242
93   general_property,						 -- AP214/AP242
94   identification_item,						 -- AP203e2/AP242
95   material_designation,					 -- AP214/AP242
96   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
97   organization,						 -- AP203e2/AP242
98   organization_relationship,					 -- AP214/AP242
99   organizational_project,					 -- AP214/AP242
100   person_and_organization,					 -- Common
101   presentation_area,						 -- AP214/AP242
102   product,							 -- AP214/AP242
103   product_concept,						 -- AP214/AP242
104   product_concept_feature,					 -- AP214/AP242
105   product_concept_feature_association,				 -- AP214/AP242
106   product_concept_feature_category,				 -- AP214/AP242
107   product_concept_feature_category_usage,			 -- AP214/AP242
108   product_definition,						 -- Common
109   product_definition_formation,				 -- Common
110   product_definition_formation_relationship,			 -- Common
111   product_definition_relationship,				 -- Common
112   product_definition_substitute,				 -- AP214/AP242
113   property_definition,						 -- AP214/AP242
114   requirement_assigned_item,					 -- AP203e2/AP242
115   requirement_for_action_resource,				 -- AP214/AP242
116   resource_property,						 -- AP214/AP242
117   security_classification,					 -- AP214/AP242
118   security_classification_level,				 -- AP214/AP242
119   shape_aspect,						 -- AP214/AP242
120   shape_representation,					 -- AP214/AP242
121   versioned_action_request);					 -- AP214/AP242
122END_TYPE;
123
124-- DIFF IN AP203e2
125-- IN AP203e2/AP242
126TYPE action_method_items = SELECT
127  (action,							 -- AP242
128   action_method,						 -- AP242
129   action_property,						 -- AP242
130   applied_action_assignment,					 -- AP242
131   configuration_design,					 -- AP242
132   contract,							 -- AP242
133   document_file,						 -- AP242
134   event_occurrence,						 -- AP242
135   organization,						 -- AP242
136   organizational_project,					 -- AP242
137   person,							 -- AP242
138   person_and_organization,					 -- AP242
139   product,							 -- Common
140   product_concept,						 -- AP242
141   product_definition,						 -- AP242
142   product_definition_formation,				 -- Common
143   product_definition_formation_relationship,			 -- AP242
144   product_definition_relationship,				 -- AP242
145   property_definition);						 -- AP242
146END_TYPE;
147
148-- DIFF IN AP214
149-- DIFF IN AP203e2
150TYPE action_request_item = SELECT
151  (action,							 -- AP214/AP242
152   action_method,						 -- AP214/AP242
153   action_property,						 -- AP214/AP242
154   action_relationship,						 -- AP214/AP242
155   alternate_product_relationship,				 -- AP214/AP242
156   assembly_component_usage_substitute,				 -- AP214/AP242
157   configuration_design,					 -- AP214/AP242
158   configuration_effectivity,					 -- AP214/AP242
159   configuration_item,						 -- AP214/AP242
160   configured_effectivity_assignment,				 -- AP214/AP242
161   document_file,						 -- AP214/AP242
162   draughting_model,						 -- AP214/AP242
163   drawing_revision,						 -- AP214/AP242
164   general_property,						 -- AP214/AP242
165   material_designation,					 -- AP214/AP242
166   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
167   organizational_project,					 -- AP214/AP242
168   presentation_area,						 -- AP214/AP242
169   product,							 -- AP214/AP242
170   product_concept,						 -- AP214/AP242
171   product_concept_feature,					 -- AP214/AP242
172   product_concept_feature_association,				 -- AP214/AP242
173   product_concept_feature_category,				 -- AP214/AP242
174   product_concept_feature_category_usage,			 -- AP214/AP242
175   product_definition,						 -- Common
176   product_definition_formation,				 -- Common
177   product_definition_formation_relationship,			 -- AP203e2/AP242
178   product_definition_relationship,				 -- Common
179   product_definition_substitute,				 -- AP214/AP242
180   property_definition,						 -- Common
181   resource_property,						 -- AP214/AP242
182   shape_aspect,						 -- AP214/AP242
183   shape_representation,					 -- AP214/AP242
184   versioned_action_request);					 -- AP203e2/AP242
185END_TYPE;
186
187-- IN AP242
188TYPE actuated_direction = ENUMERATION OF
189      (bidirectional,
190       positive_only,
191       negative_only,
192       not_actuated);
193END_TYPE;
194
195TYPE ahead_or_behind = ENUMERATION OF
196      (ahead,
197       exact,
198       behind);
199END_TYPE;
200
201TYPE amount_of_substance_measure = REAL;
202END_TYPE;
203
204-- IN AP203e2/AP242
205TYPE angle_direction_reference_select = SELECT
206      (direction,
207       curve,
208       point_path);
209END_TYPE;
210
211-- IN AP203e2/AP242
212TYPE angle_direction_reference_with_a2p3d_select = SELECT
213      (angle_direction_reference_select,
214       axis2_placement_3d);
215END_TYPE;
216
217TYPE angle_relator = ENUMERATION OF
218      (equal,
219       large,
220       small);
221END_TYPE;
222
223TYPE annotation_plane_element = SELECT
224      (draughting_callout,
225       styled_item);
226END_TYPE;
227
228-- DIFF IN AP203e2
229-- IN AP203e2/AP242
230TYPE annotation_representation_select = SELECT
231  (draughting_model,						 -- AP242
232   presentation_area,						 -- Common
233   presentation_view,						 -- Common
234   symbol_representation);					 -- Common
235END_TYPE;
236
237TYPE annotation_symbol_occurrence_item = SELECT
238      (annotation_symbol,
239       defined_symbol);
240END_TYPE;
241
242-- DIFF IN AP203e2
243TYPE annotation_text_occurrence_item = SELECT
244  (annotation_text,						 -- Common
245   annotation_text_character,					 -- Common
246   composite_text,						 -- Common
247   defined_character_glyph,					 -- AP214/AP242
248   text_literal);						 -- Common
249END_TYPE;
250
251-- DIFF IN AP214
252-- DIFF IN AP203e2
253-- DIFF IN Deprecated AP203e1
254TYPE approval_item = SELECT
255  (action,							 -- AP203e2/AP214/AP242
256   action_directive,						 -- AP203e2/AP214/AP242
257   action_property,						 -- AP214/AP242
258   action_request_solution,					 -- AP214/AP242
259   alternate_product_relationship,				 -- AP203e2/AP214/AP242
260   applied_action_assignment,					 -- AP203e2/AP214/AP242
261   applied_classification_assignment,				 -- AP214/AP242
262   applied_usage_right,						 -- AP203e2/AP242
263   assembly_component_usage_substitute,				 -- AP203e2/AP214/AP242
264   certification,						 -- Common
265   change,							 -- Deprecated AP203e1
266   change_request,						 -- Deprecated AP203e1
267   class,							 -- AP214/AP242
268   class_system,						 -- AP214/AP242
269   configuration_design,					 -- AP214/AP242
270   configuration_effectivity,					 -- Common
271   configuration_item,						 -- AP203e2/AP242/Deprecated AP203e1
272   configured_effectivity_assignment,				 -- AP214/AP242
273   contract,							 -- Common
274   date,							 -- AP203e2/AP242
275   directed_action,						 -- AP203e2/AP242
276   document,							 -- AP203e2/AP242
277   document_file,						 -- AP203e2/AP214/AP242
278   draughting_model,						 -- AP214/AP242
279   drawing_revision,						 -- AP214/AP242
280   effectivity,							 -- AP203e2/AP242
281   executed_action,						 -- AP203e2/AP214/AP242
282   frozen_assignment,						 -- AP242
283   general_property,						 -- AP214/AP242
284   general_property_relationship,				 -- AP203e2/AP242
285   group,							 -- AP203e2/AP242
286   group_relationship,						 -- AP203e2/AP242
287   information_usage_right,					 -- AP203e2/AP242
288   material_designation,					 -- AP214/AP242
289   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
290   organizational_project,					 -- AP214/AP242
291   presentation_area,						 -- AP214/AP242
292   product,							 -- Common
293   product_concept,						 -- AP214/AP242
294   product_concept_feature,					 -- AP214/AP242
295   product_concept_feature_association,				 -- AP214/AP242
296   product_concept_feature_category,				 -- AP214/AP242
297   product_concept_feature_category_usage,			 -- AP214/AP242
298   product_definition,						 -- AP203e2/AP214/AP242
299   product_definition_formation,				 -- AP203e2/AP214/AP242
300   product_definition_formation_relationship,			 -- AP203e2/AP242
301   product_definition_relationship,				 -- AP203e2/AP214/AP242
302   product_definition_substitute,				 -- AP214/AP242
303   property_definition,						 -- AP214/AP242
304   representation,						 -- AP203e2/AP242
305   requirement_assignment,					 -- AP203e2/AP242
306   resource_property,						 -- AP214/AP242
307   security_classification,					 -- AP203e2/AP242/Deprecated AP203e1
308   shape_aspect_relationship,					 -- AP203e2/AP242
309   shape_representation,					 -- AP214/AP242
310   start_request,						 -- Deprecated AP203e1
311   start_work,							 -- Deprecated AP203e1
312   versioned_action_request);					 -- AP203e2/AP214/AP242
313END_TYPE;
314
315-- IN AP214
316TYPE approximation_method = ENUMERATION OF
317      (chordal_deviation,
318       chordal_length);
319END_TYPE;
320
321TYPE area_measure = REAL;
322END_TYPE;
323
324TYPE area_or_view = SELECT
325      (presentation_area,
326       presentation_view);
327END_TYPE;
328
329-- IN AP242
330TYPE area_unit_type = ENUMERATION OF
331      (circular,
332       rectangular,
333       square);
334END_TYPE;
335
336-- IN AP242
337TYPE atom_based_tuple = LIST [0:?] OF atom_based_value;
338END_TYPE;
339
340-- IN AP242
341TYPE atom_based_value = SELECT
342      (maths_atom,
343       atom_based_tuple);
344END_TYPE;
345
346-- IN AP203e2/AP242
347TYPE attribute_classification_item = SELECT
348      (action_directive,
349       action_method,
350       action_property,
351       action_property_representation,
352       action_relationship,
353       action_request_solution,
354       action_request_status,
355       alternate_product_relationship,
356       applied_action_assignment,
357       applied_action_request_assignment,
358       applied_approval_assignment,
359       applied_certification_assignment,
360       applied_document_reference,
361       applied_document_usage_constraint_assignment,
362       applied_effectivity_assignment,
363       applied_event_occurrence_assignment,
364       applied_external_identification_assignment,
365       applied_identification_assignment,
366       applied_organization_assignment,
367       applied_organizational_project_assignment,
368       applied_person_and_organization_assignment,
369       approval,
370       approval_person_organization,
371       approval_relationship,
372       approval_status,
373       certification,
374       context_dependent_unit,
375       contract,
376       date_and_time_assignment,
377       date_assignment,
378       derived_unit,
379       descriptive_representation_item,
380       document_file,
381       document_relationship,
382       effectivity,
383       event_occurrence_relationship,
384       executed_action,
385       general_property,
386       general_property_relationship,
387       group,
388       group_relationship,
389       information_right,
390       information_usage_right,
391       language,
392       measure_representation_item,
393       measure_with_unit,
394       named_unit,
395       organization_relationship,
396       organizational_address,
397       organizational_project_relationship,
398       person_and_organization,
399       person_and_organization_address,
400       product,
401       product_category,
402       product_concept,
403       product_concept_context,
404       product_definition,
405       product_definition_context,
406       product_definition_formation,
407       product_definition_formation_relationship,
408       product_definition_relationship,
409       property_definition,
410       property_definition_relationship,
411       property_definition_representation,
412       representation,
413       representation_context,
414       representation_item,
415       security_classification,
416       time_interval_relationship,
417       uncertainty_measure_with_unit,
418       usage_association,
419       versioned_action_request);
420END_TYPE;
421
422-- IN AP242
423TYPE attribute_identifier = identifier;
424   WHERE
425      WR1:
426         validate_attribute_id(SELF);
427END_TYPE;
428
429-- DIFF IN AP214
430-- DIFF IN AP203e2
431TYPE attribute_language_item = SELECT
432  (action,							 -- AP214/AP242
433   action_directive,						 -- AP214
434   action_method,						 -- AP214
435   action_property,						 -- AP214
436   action_relationship,						 -- AP214
437   actuated_kinematic_pair,					 -- AP242
438   alternate_product_relationship,				 -- Common
439   application_context,						 -- Common
440   applied_certification_assignment,				 -- AP203e2/AP242
441   applied_document_reference,					 -- AP203e2/AP242
442   applied_document_usage_constraint_assignment,		 -- AP203e2/AP242
443   applied_external_identification_assignment,			 -- AP203e2/AP242
444   applied_identification_assignment,				 -- AP203e2/AP242
445   applied_organizational_project_assignment,			 -- AP203e2/AP242
446   applied_security_classification_assignment,			 -- AP203e2/AP242
447   approval,							 -- AP203e2/AP242
448   approval_relationship,					 -- Common
449   approval_status,						 -- AP203e2/AP242
450   assembly_component_usage_substitute,				 -- Common
451   attribute_value_assignment,					 -- Common
452   certification,						 -- Common
453   certification_type,						 -- AP203e2/AP242
454   configuration_design,					 -- Common
455   configuration_item,						 -- Common
456   contract,							 -- Common
457   data_environment,						 -- AP214/AP242
458   date_role,							 -- Common
459   date_time_role,						 -- Common
460   descriptive_representation_item,				 -- Common
461   document_relationship,					 -- Common
462   document_usage_role,						 -- AP203e2/AP242
463   draughting_title,						 -- AP214/AP242
464   effectivity,							 -- Common
465   effectivity_relationship,					 -- Common
466   event_occurrence,						 -- Common
467   external_source,						 -- Common
468   general_property,						 -- Common
469   general_property_relationship,				 -- Common
470   geometric_representation_item,				 -- Common
471   geometric_tolerance,						 -- Common
472   group,							 -- AP214/AP242
473   group_relationship,						 -- AP214/AP242
474   identification_role,						 -- Common
475   information_right,						 -- AP203e2/AP242
476   information_usage_right,					 -- AP203e2/AP242
477   kinematic_pair,						 -- AP214/AP242
478   make_from_usage_option,					 -- AP203e2/AP242
479   mapped_item,							 -- Common
480   multi_language_attribute_assignment,				 -- AP203e2/AP242
481   name_assignment,						 -- AP214/AP242
482   object_role,							 -- AP203e2/AP242
483   organization_relationship,					 -- Common
484   organization_role,						 -- Common
485   organizational_project,					 -- Common
486   organizational_project_relationship,				 -- Common
487   organizational_project_role,					 -- AP203e2/AP242
488   pair_actuator,						 -- AP214
489   person_and_organization,					 -- AP203e2/AP242
490   person_and_organization_role,				 -- Common
491   presentation_layer_assignment,				 -- AP214/AP242
492   process_product_association,					 -- AP214/AP242
493   product,							 -- Common
494   product_concept,						 -- Common
495   product_concept_feature,					 -- AP214/AP242
496   product_concept_feature_association,				 -- AP214/AP242
497   product_concept_relationship,				 -- Common
498   product_definition,						 -- Common
499   product_definition_context,					 -- AP203e2/AP242
500   product_definition_formation,				 -- Common
501   product_definition_formation_relationship,			 -- Common
502   product_definition_relationship,				 -- Common
503   product_definition_shape,					 -- AP203e2/AP242
504   product_definition_substitute,				 -- AP214/AP242
505   product_related_product_category,				 -- Common
506   property_definition,						 -- Common
507   property_definition_relationship,				 -- AP214/AP242
508   representation,						 -- Common
509   representation_relationship,					 -- AP214/AP242
510   requirement_for_action_resource,				 -- AP214/AP242
511   resource_property,						 -- AP214/AP242
512   resource_requirement_type,					 -- AP214/AP242
513   security_classification,					 -- Common
514   security_classification_assignment,				 -- AP203e2/AP242
515   shape_aspect,						 -- Common
516   shape_aspect_relationship,					 -- Common
517   shape_representation,					 -- AP203e2/AP242
518   styled_item,							 -- AP214/AP242
519   time_interval_role,						 -- Common
520   topological_representation_item,				 -- Common
521   uncertainty_measure_with_unit,				 -- Common
522   uncertainty_qualifier,					 -- Common
523   usage_association,						 -- AP203e2/AP242
524   versioned_action_request,					 -- AP214/AP242
525   versioned_action_request_relationship);			 -- AP214/AP242
526END_TYPE;
527
528TYPE attribute_type = SELECT
529      (label,
530       text);
531END_TYPE;
532
533-- IN AP242
534TYPE axial_geometry_constraint_element = SELECT
535      (point,
536       line,
537       circle,
538       plane,
539       cylindrical_surface,
540       conical_surface,
541       spherical_surface,
542       toroidal_surface,
543       surface_of_revolution,
544       sphere,
545       right_circular_cone,
546       right_circular_cylinder,
547       torus,
548       revolved_face_solid,
549       revolved_area_solid);
550END_TYPE;
551
552TYPE axis2_placement = SELECT
553      (axis2_placement_2d,
554       axis2_placement_3d);
555END_TYPE;
556
557TYPE b_spline_curve_form = ENUMERATION OF
558      (polyline_form,
559       circular_arc,
560       elliptic_arc,
561       parabolic_arc,
562       hyperbolic_arc,
563       unspecified);
564END_TYPE;
565
566-- IN AP242
567TYPE b_spline_or_composite_curve_select = SELECT
568      (b_spline_curve,
569       composite_curve);
570END_TYPE;
571
572-- IN AP242
573TYPE b_spline_or_rectangular_composite_surface_select = SELECT
574      (b_spline_surface,
575       rectangular_composite_surface);
576END_TYPE;
577
578TYPE b_spline_surface_form = ENUMERATION OF
579      (plane_surf,
580       cylindrical_surf,
581       conical_surf,
582       spherical_surf,
583       toroidal_surf,
584       surf_of_revolution,
585       ruled_surf,
586       generalised_cone,
587       quadric_surf,
588       surf_of_linear_extrusion,
589       unspecified);
590END_TYPE;
591
592-- IN AP203e2/AP242
593TYPE base_solid_select = SELECT
594      (solid_model,
595       csg_primitive,
596       boolean_result);
597   WHERE
598      WR1:
599         NOT ('STEP_MERGED_CAD_SCHEMA.PRIMITIVE_2D' IN TYPEOF(SELF));
600END_TYPE;
601
602-- IN AP203e2/AP242
603TYPE blend_end_condition_select = SELECT
604      (point_on_curve,
605       edge_curve,
606       vertex);
607END_TYPE;
608
609-- IN AP203e2/AP242
610TYPE blend_radius_variation_type = ENUMERATION OF
611      (linear_blend,
612       cubic_blend,
613       unspecified_blend);
614END_TYPE;
615
616-- DIFF IN AP214
617-- DIFF IN AP203e2
618TYPE boolean_operand = SELECT
619  (boolean_result,						 -- Common
620   csg_primitive,						 -- Common
621   half_space_2d,						 -- AP242
622   half_space_solid,						 -- Common
623   solid_model);							 -- Common
624END_TYPE;
625
626-- IN AP242
627TYPE boolean_operand_2d = SELECT
628      (bounded_primitive_2d,
629       boolean_result_2d);
630END_TYPE;
631
632TYPE boolean_operator = ENUMERATION OF
633      (union,
634       intersection,
635       difference);
636END_TYPE;
637
638-- IN AP242
639TYPE boolean_value = BOOLEAN;
640END_TYPE;
641
642-- IN AP242
643TYPE 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);
650END_TYPE;
651
652TYPE box_characteristic_select = SELECT
653      (box_height,
654       box_width,
655       box_slant_angle,
656       box_rotate_angle);
657END_TYPE;
658
659TYPE box_height = positive_ratio_measure;
660END_TYPE;
661
662TYPE box_rotate_angle = plane_angle_measure;
663END_TYPE;
664
665TYPE box_slant_angle = plane_angle_measure;
666END_TYPE;
667
668TYPE box_width = positive_ratio_measure;
669END_TYPE;
670
671-- IN AP203e2/AP242
672TYPE camera_model_d3_multi_clipping_interection_select = SELECT
673      (camera_model_d3_multi_clipping_union,
674       plane);
675END_TYPE;
676
677-- IN AP203e2/AP242
678TYPE camera_model_d3_multi_clipping_union_select = SELECT
679      (camera_model_d3_multi_clipping_intersection,
680       plane);
681END_TYPE;
682
683-- IN AP203e2/AP242
684TYPE capacitance_measure = REAL;
685END_TYPE;
686
687TYPE category_usage_item = SELECT
688      (product_class);
689END_TYPE;
690
691TYPE celsius_temperature_measure = REAL;
692END_TYPE;
693
694TYPE central_or_parallel = ENUMERATION OF
695      (central,
696       parallel);
697END_TYPE;
698
699-- DIFF IN AP214
700-- DIFF IN AP203e2
701-- DIFF IN Deprecated AP203e1
702TYPE certification_item = SELECT
703  (alternate_product_relationship,				 -- AP203e2/AP242
704   make_from_usage_option,					 -- AP203e2/AP242
705   product_definition,						 -- AP214/AP242
706   product_definition_formation,				 -- AP203e2/AP214/AP242
707   product_definition_formation_relationship,			 -- AP203e2/AP214/AP242
708   product_definition_relationship,				 -- AP214/AP242
709   supplied_part_relationship);					 -- Deprecated AP203e1
710END_TYPE;
711
712-- IN AP242
713TYPE chained_representation_link = SELECT
714      (mapped_item,
715       representation_context,
716       representation_relationship);
717END_TYPE;
718
719-- IN AP242
720TYPE change_management_object = SELECT
721      (action,
722       action_item,
723       action_relationship,
724       class,
725       event_occurrence,
726       project_item);
727END_TYPE;
728
729-- IN AP242
730TYPE change_relationship_select = SELECT
731      (action_relationship,
732       product_definition_formation_relationship,
733       product_definition_relationship,
734       shape_aspect_relationship);
735END_TYPE;
736
737-- IN AP203e2/AP242
738TYPE change_request_item = SELECT
739      (product_definition_formation);
740END_TYPE;
741
742TYPE character_spacing_select = SELECT
743      (length_measure,
744       ratio_measure,
745       measure_with_unit,
746       descriptive_measure);
747END_TYPE;
748
749-- DIFF IN AP214
750TYPE character_style_select = SELECT
751  (character_glyph_style_outline,				 -- AP203e2/AP242
752   character_glyph_style_stroke,				 -- AP203e2/AP242
753   text_style_for_defined_font);					 -- Common
754END_TYPE;
755
756TYPE characterized_action_definition = SELECT
757      (action,
758       action_method,
759       action_method_relationship,
760       action_relationship);
761END_TYPE;
762
763TYPE characterized_definition = SELECT
764      (characterized_object,
765       characterized_product_definition,
766       shape_definition);
767END_TYPE;
768
769-- DIFF IN AP214
770TYPE characterized_material_property = SELECT
771  (material_property_representation,				 -- Common
772   product_material_composition_relationship);			 -- AP203e2/AP242
773END_TYPE;
774
775-- IN AP203e2/AP242
776TYPE characterized_product_composition_value = SELECT
777      (measure_with_unit);
778END_TYPE;
779
780TYPE characterized_product_definition = SELECT
781      (product_definition,
782       product_definition_relationship);
783END_TYPE;
784
785-- IN AP214/AP242
786TYPE characterized_resource_definition = SELECT
787      (action_resource,
788       action_resource_requirement);
789END_TYPE;
790
791TYPE class_usage_effectivity_context_item = SELECT
792      (product_definition);
793END_TYPE;
794
795-- DIFF IN AP214
796-- DIFF IN AP203e2
797TYPE classification_item = SELECT
798  (action,							 -- Common
799   action_directive,						 -- Common
800   action_method,						 -- Common
801   action_property,						 -- Common
802   action_relationship,						 -- Common
803   action_request_solution,					 -- AP203e2/AP242
804   action_request_status,					 -- AP203e2/AP242
805   address,							 -- AP203e2/AP242
806   alternate_product_relationship,				 -- AP203e2/AP242
807   applied_action_assignment,					 -- AP203e2/AP242
808   applied_action_request_assignment,				 -- AP203e2/AP242
809   applied_approval_assignment,					 -- AP203e2/AP242
810   applied_certification_assignment,				 -- AP203e2/AP242
811   applied_contract_assignment,					 -- AP203e2/AP242
812   applied_date_and_time_assignment,				 -- AP203e2/AP242
813   applied_date_assignment,					 -- AP203e2/AP242
814   applied_document_reference,					 -- AP203e2/AP242
815   applied_document_usage_constraint_assignment,		 -- AP203e2/AP242
816   applied_effectivity_assignment,				 -- AP203e2/AP242
817   applied_event_occurrence_assignment,				 -- AP203e2/AP242
818   applied_external_identification_assignment,			 -- AP203e2/AP242
819   applied_identification_assignment,				 -- AP203e2/AP242
820   applied_organization_assignment,				 -- AP203e2/AP242
821   applied_organizational_project_assignment,			 -- AP203e2/AP242
822   applied_person_and_organization_assignment,			 -- AP203e2/AP242
823   applied_security_classification_assignment,			 -- AP203e2/AP242
824   approval,							 -- AP203e2/AP242
825   approval_person_organization,				 -- AP203e2/AP242
826   approval_relationship,					 -- AP203e2/AP242
827   approval_status,						 -- Common
828   assembly_component_usage_substitute,				 -- AP203e2/AP242
829   calendar_date,						 -- AP203e2/AP242
830   certification,						 -- AP203e2/AP242
831   characterized_class,						 -- AP203e2/AP242
832   characterized_object,					 -- AP203e2/AP242
833   class,							 -- Common
834   classified_item,						 -- AP203e2/AP242
835   configuration_item,						 -- Common
836   context_dependent_unit,					 -- AP203e2/AP242
837   contract,							 -- Common
838   conversion_based_unit,					 -- AP203e2/AP242
839   date_and_time,						 -- AP203e2/AP242
840   date_and_time_assignment,					 -- AP203e2/AP242
841   date_assignment,						 -- AP203e2/AP242
842   derived_unit,						 -- AP203e2/AP242
843   descriptive_representation_item,				 -- Common
844   directed_action,						 -- AP203e2/AP242
845   document_file,						 -- Common
846   document_relationship,					 -- AP203e2/AP242
847   document_type,						 -- AP214/AP242
848   effectivity,							 -- Common
849   event_occurrence,						 -- AP203e2/AP242
850   executed_action,						 -- Common
851   feature_definition,						 -- AP214/AP242
852   general_feature,						 -- AP214/AP242
853   general_property,						 -- Common
854   general_property_relationship,				 -- AP203e2/AP242
855   group,							 -- AP203e2/AP242
856   identification_assignment,					 -- AP203e2/AP242
857   information_right,						 -- AP203e2/AP242
858   information_usage_right,					 -- AP203e2/AP242
859   language,							 -- AP203e2/AP242
860   material_designation,					 -- AP214/AP242
861   measure_representation_item,					 -- AP203e2/AP242
862   measure_with_unit,						 -- AP203e2/AP242
863   multi_language_attribute_assignment,				 -- AP203e2/AP242
864   named_unit,							 -- AP203e2/AP242
865   organization,						 -- AP203e2/AP242
866   organization_relationship,					 -- AP203e2/AP242
867   organizational_address,					 -- AP203e2/AP242
868   organizational_project,					 -- Common
869   organizational_project_relationship,				 -- AP203e2/AP242
870   person,							 -- AP203e2/AP242
871   person_and_organization_address,				 -- AP203e2/AP242
872   plus_minus_tolerance,					 -- AP214/AP242
873   process_operation,						 -- AP214/AP242
874   product,							 -- Common
875   product_concept,						 -- Common
876   product_concept_feature,					 -- AP214/AP242
877   product_concept_feature_category,				 -- AP214/AP242
878   product_definition,						 -- Common
879   product_definition_context,					 -- AP203e2/AP242
880   product_definition_formation,				 -- Common
881   product_definition_formation_relationship,			 -- AP203e2/AP242
882   product_definition_relationship,				 -- Common
883   property_definition,						 -- Common
884   property_definition_representation,				 -- AP203e2/AP242
885   representation,						 -- AP203e2/AP242
886   representation_context,					 -- AP203e2/AP242
887   representation_item,						 -- AP203e2/AP242
888   resource_property,						 -- AP214/AP242
889   security_classification,					 -- AP203e2/AP242
890   security_classification_level,				 -- AP214/AP242
891   shape_aspect,						 -- AP214/AP242
892   uncertainty_measure_with_unit,				 -- AP203e2/AP242
893   usage_association,						 -- AP203e2/AP242
894   versioned_action_request);					 -- Common
895END_TYPE;
896
897-- IN AP203e2/AP242
898TYPE classified_item = SELECT
899      (product,
900       product_definition,
901       product_definition_formation);
902END_TYPE;
903
904-- IN AP242
905TYPE closed_or_open_shell_select = SELECT
906      (closed_shell,
907       open_shell);
908END_TYPE;
909
910-- IN AP242
911TYPE common_datum_list = LIST [2:?] OF datum_reference_element;
912   WHERE
913      WR1:
914         SIZEOF(QUERY (dre <* SELF| (dre\shape_aspect.of_shape <> SELF[1]\shape_aspect.of_shape))) = 0;
915END_TYPE;
916
917-- IN AP242
918TYPE compound_inner_area_boundary = SELECT
919      (set_inner_area_boundary);
920END_TYPE;
921
922TYPE compound_item_definition = SELECT
923      (list_representation_item,
924       set_representation_item);
925END_TYPE;
926
927-- IN AP203e2/AP242
928TYPE conductance_measure = REAL;
929END_TYPE;
930
931TYPE configuration_design_item = SELECT
932      (product_definition,
933       product_definition_formation);
934END_TYPE;
935
936TYPE configured_effectivity_context_item = SELECT
937      (product_concept_feature_association);
938END_TYPE;
939
940-- DIFF IN AP203e2
941TYPE configured_effectivity_item = SELECT
942  (action_relationship,						 -- AP214/AP242
943   process_plan,						 -- AP214/AP242
944   product_definition,						 -- Common
945   product_process_plan);					 -- AP214/AP242
946END_TYPE;
947
948-- IN AP242
949TYPE constraint_group_member = SELECT
950      (explicit_constraint,
951       simultaneous_constraint_group);
952END_TYPE;
953
954-- IN AP203e2/AP242
955TYPE constructive_geometry_representation_or_shape_represenation = SELECT
956      (constructive_geometry_representation,
957       shape_representation);
958END_TYPE;
959
960TYPE context_dependent_measure = REAL;
961END_TYPE;
962
963-- DIFF IN AP214
964-- DIFF IN AP203e2
965-- DIFF IN Deprecated AP203e1
966TYPE contract_item = SELECT
967  (action_directive,						 -- AP203e2/AP242
968   alternate_product_relationship,				 -- AP203e2/AP242
969   directed_action,						 -- AP203e2/AP242
970   drawing_revision,						 -- AP214/AP242
971   executed_action,						 -- AP203e2/AP214/AP242
972   information_usage_right,					 -- AP203e2/AP242
973   organization,						 -- AP203e2/AP242
974   person_and_organization,					 -- AP203e2/AP242
975   product,							 -- AP203e2/AP242
976   product_definition_formation);				 -- Common
977END_TYPE;
978
979TYPE count_measure = NUMBER;
980END_TYPE;
981
982-- IN AP242
983TYPE csg_2d_area_select = SELECT
984      (axis2_placement_2d,
985       csg_primitive_solid_2d);
986END_TYPE;
987
988-- IN AP242
989TYPE csg_2d_shape_select = SELECT
990      (mapped_item,
991       axis2_placement_2d,
992       csg_solid_2d);
993END_TYPE;
994
995-- DIFF IN AP214
996-- DIFF IN AP203e2
997TYPE csg_primitive = SELECT
998  (block,							 -- Common
999   bounded_primitive_2d,					 -- AP242
1000   right_angular_wedge,						 -- Common
1001   right_circular_cone,						 -- Common
1002   right_circular_cylinder,					 -- Common
1003   sphere,							 -- Common
1004   torus);							 -- Common
1005END_TYPE;
1006
1007TYPE csg_select = SELECT
1008      (boolean_result,
1009       csg_primitive);
1010END_TYPE;
1011
1012-- IN AP242
1013TYPE csg_select_2d = SELECT
1014      (bounded_primitive_2d,
1015       boolean_result_2d);
1016END_TYPE;
1017
1018-- IN AP242
1019TYPE current_element_assignment_select = SELECT
1020      (modify_element,
1021       add_element);
1022END_TYPE;
1023
1024-- DIFF IN AP214
1025TYPE curve_font_or_scaled_curve_font_select = SELECT
1026  (curve_style_font_and_scaling,				 -- AP203e2/AP242
1027   curve_style_font_select);					 -- Common
1028END_TYPE;
1029
1030-- DIFF IN AP214
1031-- DIFF IN AP203e2
1032TYPE curve_on_surface = SELECT
1033      (composite_curve_on_surface,
1034       pcurve,
1035       surface_curve);
1036END_TYPE;
1037
1038-- IN AP203e2/AP242
1039TYPE curve_or_annotation_curve_occurrence = SELECT
1040      (curve,
1041       annotation_curve_occurrence);
1042END_TYPE;
1043
1044-- IN AP242
1045TYPE curve_or_curve_set = SELECT
1046      (curve,
1047       geometric_curve_set);
1048END_TYPE;
1049
1050TYPE curve_or_render = SELECT
1051      (curve_style,
1052       curve_style_rendering);
1053END_TYPE;
1054
1055-- IN AP242
1056TYPE curve_or_surface_constraint_element = SELECT
1057      (curve,
1058       surface);
1059END_TYPE;
1060
1061TYPE curve_style_font_select = SELECT
1062      (curve_style_font,
1063       pre_defined_curve_font,
1064       externally_defined_curve_font);
1065END_TYPE;
1066
1067-- IN AP214
1068TYPE curve_tolerance_deviation = positive_length_measure;
1069END_TYPE;
1070
1071-- IN AP214
1072TYPE curve_tolerance_parameter = REAL;
1073END_TYPE;
1074
1075-- IN AP242
1076TYPE curves_or_area = ENUMERATION OF
1077      (curves,
1078       area);
1079END_TYPE;
1080
1081-- DIFF IN AP214
1082-- DIFF IN AP203e2
1083-- DIFF IN Deprecated AP203e1
1084TYPE date_and_time_item = SELECT
1085  (action,							 -- AP203e2/AP214/AP242
1086   action_directive,						 -- AP203e2/AP214/AP242
1087   action_method,						 -- AP214/AP242
1088   action_property,						 -- AP214/AP242
1089   action_relationship,						 -- AP214/AP242
1090   action_request_solution,					 -- AP214/AP242
1091   alternate_product_relationship,				 -- AP214/AP242
1092   applied_action_assignment,					 -- AP203e2/AP214/AP242
1093   applied_classification_assignment,				 -- AP214/AP242
1094   applied_organization_assignment,				 -- AP203e2/AP214/AP242
1095   applied_person_and_organization_assignment,			 -- AP203e2/AP214/AP242
1096   applied_security_classification_assignment,			 -- AP203e2/AP242
1097   approval_person_organization,				 -- Common
1098   approval_status,						 -- AP214/AP242
1099   assembly_component_usage_substitute,				 -- AP214/AP242
1100   certification,						 -- Common
1101   change,							 -- Deprecated AP203e1
1102   change_request,						 -- Deprecated AP203e1
1103   class,							 -- AP214/AP242
1104   class_system,						 -- AP214/AP242
1105   configuration_design,					 -- AP214/AP242
1106   configuration_item,						 -- AP214/AP242
1107   configured_effectivity_assignment,				 -- AP214/AP242
1108   contract,							 -- Common
1109   data_quality_definition,					 -- AP242
1110   directed_action,						 -- AP203e2/AP242
1111   document,							 -- AP203e2/AP242
1112   document_file,						 -- AP203e2/AP214/AP242
1113   draughting_model,						 -- AP214/AP242
1114   drawing_revision,						 -- AP214/AP242
1115   effectivity,							 -- AP214/AP242
1116   event_occurrence,						 -- AP203e2/AP214/AP242
1117   executed_action,						 -- AP203e2/AP214/AP242
1118   general_property,						 -- AP214/AP242
1119   information_usage_right,					 -- AP203e2/AP242
1120   material_designation,					 -- AP214/AP242
1121   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
1122   organization_relationship,					 -- AP214/AP242
1123   organizational_project,					 -- AP203e2/AP214/AP242
1124   person_and_organization,					 -- AP214/AP242
1125   presentation_area,						 -- AP214/AP242
1126   product,							 -- AP214/AP242
1127   product_concept,						 -- AP214/AP242
1128   product_concept_feature,					 -- AP214/AP242
1129   product_concept_feature_association,				 -- AP214/AP242
1130   product_concept_feature_category,				 -- AP214/AP242
1131   product_concept_feature_category_usage,			 -- AP214/AP242
1132   product_definition,						 -- Common
1133   product_definition_formation,				 -- AP203e2/AP214/AP242
1134   product_definition_formation_relationship,			 -- AP214/AP242
1135   product_definition_relationship,				 -- AP203e2/AP214/AP242
1136   product_definition_substitute,				 -- AP214/AP242
1137   property_definition,						 -- AP214/AP242
1138   requirement_for_action_resource,				 -- AP214/AP242
1139   resource_property,						 -- AP214/AP242
1140   rule_action,							 -- AP203e2/AP242
1141   security_classification,					 -- Common
1142   security_classification_level,				 -- AP214/AP242
1143   shape_representation,					 -- AP214/AP242
1144   start_request,						 -- Deprecated AP203e1
1145   start_work,							 -- Deprecated AP203e1
1146   versioned_action_request);					 -- AP203e2/AP214/AP242
1147END_TYPE;
1148
1149-- DIFF IN AP214
1150-- DIFF IN AP203e2
1151TYPE date_item = SELECT
1152  (action,							 -- Common
1153   action_directive,						 -- Common
1154   action_method,						 -- AP214/AP242
1155   action_property,						 -- AP214/AP242
1156   action_relationship,						 -- AP214/AP242
1157   action_request_solution,					 -- AP214/AP242
1158   alternate_product_relationship,				 -- AP214/AP242
1159   applied_action_assignment,					 -- Common
1160   applied_classification_assignment,				 -- AP214/AP242
1161   applied_organization_assignment,				 -- Common
1162   applied_person_and_organization_assignment,			 -- Common
1163   applied_security_classification_assignment,			 -- AP203e2/AP242
1164   approval_person_organization,				 -- Common
1165   approval_status,						 -- AP214/AP242
1166   assembly_component_usage_substitute,				 -- AP214/AP242
1167   certification,						 -- Common
1168   class,							 -- AP214/AP242
1169   class_system,						 -- AP214/AP242
1170   configuration_design,					 -- AP214/AP242
1171   configuration_item,						 -- AP214/AP242
1172   configured_effectivity_assignment,				 -- AP214/AP242
1173   contract,							 -- Common
1174   data_quality_definition,					 -- AP242
1175   directed_action,						 -- AP203e2/AP242
1176   document,							 -- AP203e2/AP242
1177   document_file,						 -- Common
1178   draughting_model,						 -- AP214/AP242
1179   drawing_revision,						 -- AP214/AP242
1180   effectivity,							 -- AP214/AP242
1181   event_occurrence,						 -- Common
1182   executed_action,						 -- Common
1183   general_property,						 -- AP214/AP242
1184   information_usage_right,					 -- AP203e2/AP242
1185   material_designation,					 -- AP214/AP242
1186   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
1187   organization_relationship,					 -- AP214/AP242
1188   organizational_project,					 -- Common
1189   person_and_organization,					 -- AP214/AP242
1190   presentation_area,						 -- AP214/AP242
1191   product,							 -- AP214/AP242
1192   product_concept,						 -- AP214/AP242
1193   product_concept_feature,					 -- AP214/AP242
1194   product_concept_feature_association,				 -- AP214/AP242
1195   product_concept_feature_category,				 -- AP214/AP242
1196   product_concept_feature_category_usage,			 -- AP214/AP242
1197   product_definition,						 -- Common
1198   product_definition_formation,				 -- Common
1199   product_definition_formation_relationship,			 -- AP214/AP242
1200   product_definition_relationship,				 -- Common
1201   product_definition_substitute,				 -- AP214/AP242
1202   property_definition,						 -- AP214/AP242
1203   requirement_for_action_resource,				 -- AP214/AP242
1204   resource_property,						 -- AP214/AP242
1205   security_classification,					 -- Common
1206   security_classification_level,				 -- AP214/AP242
1207   shape_representation,					 -- AP214/AP242
1208   versioned_action_request);					 -- Common
1209END_TYPE;
1210
1211TYPE date_time_or_event_occurrence = SELECT
1212      (date_time_select,
1213       event_occurrence);
1214END_TYPE;
1215
1216TYPE date_time_select = SELECT
1217      (date,
1218       date_and_time,
1219       local_time);
1220END_TYPE;
1221
1222-- IN AP242
1223TYPE datum_or_common_datum = SELECT
1224      (common_datum_list,
1225       datum);
1226END_TYPE;
1227
1228-- IN AP242
1229TYPE datum_reference_modifier = SELECT
1230      (datum_reference_modifier_with_value,
1231       simple_datum_reference_modifier);
1232END_TYPE;
1233
1234-- IN AP242
1235TYPE datum_reference_modifier_type = ENUMERATION OF
1236      (circular_or_cylindrical,
1237       distance,
1238       projected,
1239       spherical);
1240END_TYPE;
1241
1242-- IN AP242
1243TYPE datum_system_or_reference = SELECT
1244      (datum_reference,
1245       datum_system);
1246END_TYPE;
1247
1248TYPE day_in_month_number = INTEGER;
1249   WHERE
1250      WR1:
1251         (1 <= SELF) AND (SELF <= 31);
1252END_TYPE;
1253
1254-- IN AP203e2/AP242
1255TYPE day_in_week_number = INTEGER;
1256   WHERE
1257      WR1:
1258         (1 <= SELF) AND (SELF <= 7);
1259END_TYPE;
1260
1261-- IN AP203e2/AP242
1262TYPE day_in_year_number = INTEGER;
1263   WHERE
1264      WR1:
1265         (1 <= SELF) AND (SELF <= 366);
1266END_TYPE;
1267
1268-- DIFF IN AP214
1269-- IN AP214/AP242
1270TYPE defined_glyph_select = SELECT
1271  (externally_defined_character_glyph,				 -- Common
1272   pre_defined_character_glyph);					 -- AP242
1273END_TYPE;
1274
1275TYPE defined_symbol_select = SELECT
1276      (pre_defined_symbol,
1277       externally_defined_symbol);
1278END_TYPE;
1279
1280-- DIFF IN AP203e2
1281TYPE derived_property_select = SELECT
1282  (action_property,						 -- Common
1283   property_definition,						 -- Common
1284   resource_property);						 -- AP214/AP242
1285END_TYPE;
1286
1287-- DIFF IN AP214
1288-- DIFF IN AP203e2
1289TYPE description_attribute_select = SELECT
1290  (action_request_solution,					 -- Common
1291   application_context,						 -- Common
1292   approval_role,						 -- Common
1293   configuration_design,					 -- Common
1294   context_dependent_shape_representation,			 -- Common
1295   date_role,							 -- Common
1296   date_time_role,						 -- Common
1297   effectivity,							 -- Common
1298   external_source,						 -- Common
1299   organization_role,						 -- Common
1300   organizational_project,					 -- AP242
1301   person_and_organization,					 -- Common
1302   person_and_organization_role,				 -- Common
1303   property_definition_representation,				 -- Common
1304   representation);						 -- Common
1305END_TYPE;
1306
1307TYPE descriptive_measure = STRING;
1308END_TYPE;
1309
1310-- IN AP242
1311TYPE detailed_report_type = ENUMERATION OF
1312      (measured_element,
1313       inferior_quality_element);
1314END_TYPE;
1315
1316TYPE dimension_count = INTEGER;
1317   WHERE
1318      WR1:
1319         SELF > 0;
1320END_TYPE;
1321
1322TYPE dimension_extent_usage = ENUMERATION OF
1323      (origin,
1324       target);
1325END_TYPE;
1326
1327TYPE dimensional_characteristic = SELECT
1328      (dimensional_location,
1329       dimensional_size);
1330END_TYPE;
1331
1332TYPE direction_count_select = SELECT
1333      (u_direction_count,
1334       v_direction_count);
1335END_TYPE;
1336
1337-- IN AP203e2/AP242
1338TYPE document_identifier_assigned_item = SELECT
1339      (document);
1340END_TYPE;
1341
1342-- DIFF IN AP214
1343-- DIFF IN AP203e2
1344-- DIFF IN Deprecated AP203e1
1345TYPE document_reference_item = SELECT
1346  (action_directive,						 -- AP214/AP242
1347   action_method,						 -- AP203e2/AP214/AP242
1348   action_relationship,						 -- AP214/AP242
1349   applied_action_assignment,					 -- AP214/AP242
1350   applied_external_identification_assignment,			 -- AP203e2/AP242
1351   approval,							 -- AP214/AP242
1352   assembly_component_usage,					 -- AP203e2/AP242
1353   certification,						 -- AP214/AP242
1354   characterized_class,						 -- AP203e2/AP242
1355   characterized_object,					 -- AP203e2/AP242
1356   class,							 -- AP214/AP242
1357   class_system,						 -- AP214/AP242
1358   configuration_design,					 -- AP214/AP242
1359   configuration_item,						 -- AP203e2/AP214/AP242
1360   contract,							 -- AP214/AP242
1361   descriptive_representation_item,				 -- AP203e2/AP214/AP242
1362   dimensional_size,						 -- AP203e2/AP242
1363   executed_action,						 -- AP203e2/AP214/AP242
1364   externally_conditioned_data_quality_criterion,		 -- AP242
1365   externally_defined_dimension_definition,			 -- AP203e2/AP214/AP242
1366   externally_defined_item,					 -- AP203e2/AP242
1367   feature_definition,						 -- AP214/AP242
1368   general_property,						 -- AP214/AP242
1369   group,							 -- AP203e2/AP242
1370   group_relationship,						 -- AP203e2/AP242
1371   information_right,						 -- AP203e2/AP242
1372   information_usage_right,					 -- AP203e2/AP242
1373   material_designation,					 -- AP203e2/AP214/AP242
1374   measure_representation_item,					 -- AP203e2/AP242
1375   organization,						 -- AP214/AP242
1376   organizational_project,					 -- AP214/AP242
1377   person,							 -- AP214/AP242
1378   presentation_area,						 -- AP214/AP242
1379   process_plan,						 -- AP214/AP242
1380   product,							 -- AP203e2/AP214/AP242
1381   product_category,						 -- AP203e2/AP242
1382   product_concept,						 -- AP214/AP242
1383   product_concept_feature,					 -- AP214/AP242
1384   product_concept_feature_category,				 -- AP214/AP242
1385   product_definition,						 -- Common
1386   product_definition_context,					 -- AP242
1387   product_definition_formation,				 -- AP203e2/AP214/AP242
1388   product_definition_formation_relationship,			 -- AP203e2/AP214/AP242
1389   product_definition_process,					 -- AP214/AP242
1390   product_definition_relationship,				 -- AP203e2/AP214/AP242
1391   product_definition_substitute,				 -- AP214/AP242
1392   product_related_product_category,				 -- AP214/AP242
1393   property_definition,						 -- AP203e2/AP214/AP242
1394   representation,						 -- AP203e2/AP214/AP242
1395   representation_item,						 -- AP203e2/AP242
1396   resource_requirement_type,					 -- AP214/AP242
1397   retention,							 -- AP214/AP242
1398   rule_set,							 -- AP203e2/AP242
1399   security_classification,					 -- AP214/AP242
1400   shape_aspect,						 -- Common
1401   shape_aspect_relationship,					 -- AP203e2/AP214/AP242
1402   usage_association,						 -- AP203e2/AP242
1403   versioned_action_request);					 -- AP203e2/AP214/AP242
1404END_TYPE;
1405
1406-- IN AP203e2/AP242
1407TYPE dose_equivalent_measure = REAL;
1408END_TYPE;
1409
1410-- DIFF IN AP214
1411-- DIFF IN AP203e2
1412TYPE draughting_callout_element = SELECT
1413  (annotation_curve_occurrence,					 -- Common
1414   annotation_fill_area_occurrence,				 -- AP242
1415   annotation_symbol_occurrence,				 -- Common
1416   annotation_text_occurrence,					 -- Common
1417   tessellated_annotation_occurrence);				 -- AP242
1418END_TYPE;
1419
1420TYPE draughting_model_item_association_select = SELECT
1421      (annotation_occurrence,
1422       draughting_callout);
1423END_TYPE;
1424
1425-- IN AP242
1426TYPE draughting_model_item_definition = SELECT
1427      (applied_action_assignment,
1428       applied_action_method_assignment,
1429       applied_action_request_assignment,
1430       applied_approval_assignment,
1431       applied_certification_assignment,
1432       applied_classification_assignment,
1433       applied_contract_assignment,
1434       applied_date_and_time_assignment,
1435       applied_date_assignment,
1436       applied_document_reference,
1437       applied_document_usage_constraint_assignment,
1438       applied_effectivity_assignment,
1439       applied_event_occurrence_assignment,
1440       applied_external_identification_assignment,
1441       applied_group_assignment,
1442       applied_identification_assignment,
1443       applied_ineffectivity_assignment,
1444       applied_name_assignment,
1445       applied_organization_assignment,
1446       applied_organizational_project_assignment,
1447       applied_person_and_organization_assignment,
1448       applied_security_classification_assignment,
1449       applied_time_interval_assignment,
1450       applied_usage_right,
1451       dimensional_size,
1452       geometric_tolerance,
1453       product_definition_relationship,
1454       product_definition_shape,
1455       property_definition,
1456       shape_aspect,
1457       shape_aspect_relationship);
1458END_TYPE;
1459
1460-- IN AP203e2/AP242
1461TYPE draughting_model_item_select = SELECT
1462      (mapped_item,
1463       styled_item,
1464       axis2_placement,
1465       camera_model,
1466       draughting_callout);
1467END_TYPE;
1468
1469-- IN AP242
1470TYPE draughting_subfigure_representation_item = SELECT
1471      (annotation_occurrence,
1472       draughting_callout,
1473       axis2_placement);
1474END_TYPE;
1475
1476-- IN AP242
1477TYPE draughting_symbol_representation_item = SELECT
1478      (annotation_curve_occurrence,
1479       annotation_symbol_occurrence,
1480       annotation_fill_area_occurrence,
1481       annotation_text_occurrence,
1482       axis2_placement);
1483END_TYPE;
1484
1485TYPE draughting_titled_item = SELECT
1486      (drawing_revision,
1487       drawing_sheet_revision);
1488END_TYPE;
1489
1490-- IN AP242
1491TYPE edge_or_curve = SELECT
1492      (curve,
1493       edge);
1494END_TYPE;
1495
1496-- DIFF IN AP203e2
1497TYPE effectivity_item = SELECT
1498  (action,							 -- AP214/AP242
1499   action_method,						 -- AP214/AP242
1500   action_method_relationship,					 -- AP214/AP242
1501   action_property,						 -- AP214/AP242
1502   action_relationship,						 -- AP214/AP242
1503   assembly_component_usage_substitute,				 -- Common
1504   class,							 -- AP214/AP242
1505   class_system,						 -- AP214/AP242
1506   configuration_design,					 -- AP214/AP242
1507   configuration_item,						 -- AP214/AP242
1508   configured_effectivity_assignment,				 -- AP214/AP242
1509   document_file,						 -- AP214/AP242
1510   draughting_model,						 -- AP214/AP242
1511   drawing_revision,						 -- AP214/AP242
1512   general_property,						 -- AP214/AP242
1513   material_designation,					 -- AP214/AP242
1514   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
1515   presentation_area,						 -- AP214/AP242
1516   product,							 -- Common
1517   product_concept,						 -- AP214/AP242
1518   product_concept_feature,					 -- AP214/AP242
1519   product_concept_feature_association,				 -- AP214/AP242
1520   product_concept_feature_category,				 -- AP214/AP242
1521   product_concept_feature_category_usage,			 -- AP214/AP242
1522   product_definition,						 -- Common
1523   product_definition_formation,				 -- Common
1524   product_definition_formation_relationship,			 -- AP214/AP242
1525   product_definition_relationship,				 -- Common
1526   product_definition_substitute,				 -- Common
1527   property_definition,						 -- AP214/AP242
1528   requirement_for_action_resource,				 -- AP214/AP242
1529   resource_property,						 -- AP214/AP242
1530   security_classification,					 -- AP214/AP242
1531   shape_aspect,						 -- AP214/AP242
1532   shape_representation);					 -- AP214/AP242
1533END_TYPE;
1534
1535-- IN AP203e2/AP242
1536TYPE electric_charge_measure = REAL;
1537END_TYPE;
1538
1539TYPE electric_current_measure = REAL;
1540END_TYPE;
1541
1542-- IN AP203e2/AP242
1543TYPE electric_potential_measure = REAL;
1544END_TYPE;
1545
1546-- IN AP242
1547TYPE elementary_function_enumerators = ENUMERATION OF
1548      (ef_and,
1549       ef_or,
1550       ef_not,
1551       ef_xor,
1552       ef_negate_i,
1553       ef_add_i,
1554       ef_subtract_i,
1555       ef_multiply_i,
1556       ef_divide_i,
1557       ef_mod_i,
1558       ef_exponentiate_i,
1559       ef_eq_i,
1560       ef_ne_i,
1561       ef_gt_i,
1562       ef_lt_i,
1563       ef_ge_i,
1564       ef_le_i,
1565       ef_abs_i,
1566       ef_max_i,
1567       ef_min_i,
1568       ef_if_i,
1569       ef_negate_r,
1570       ef_reciprocal_r,
1571       ef_add_r,
1572       ef_subtract_r,
1573       ef_multiply_r,
1574       ef_divide_r,
1575       ef_mod_r,
1576       ef_exponentiate_r,
1577       ef_exponentiate_ri,
1578       ef_eq_r,
1579       ef_ne_r,
1580       ef_gt_r,
1581       ef_lt_r,
1582       ef_ge_r,
1583       ef_le_r,
1584       ef_abs_r,
1585       ef_max_r,
1586       ef_min_r,
1587       ef_acos_r,
1588       ef_asin_r,
1589       ef_atan2_r,
1590       ef_cos_r,
1591       ef_exp_r,
1592       ef_ln_r,
1593       ef_log2_r,
1594       ef_log10_r,
1595       ef_sin_r,
1596       ef_sqrt_r,
1597       ef_tan_r,
1598       ef_if_r,
1599       ef_form_c,
1600       ef_rpart_c,
1601       ef_ipart_c,
1602       ef_negate_c,
1603       ef_reciprocal_c,
1604       ef_add_c,
1605       ef_subtract_c,
1606       ef_multiply_c,
1607       ef_divide_c,
1608       ef_exponentiate_c,
1609       ef_exponentiate_ci,
1610       ef_eq_c,
1611       ef_ne_c,
1612       ef_conjugate_c,
1613       ef_abs_c,
1614       ef_arg_c,
1615       ef_cos_c,
1616       ef_exp_c,
1617       ef_ln_c,
1618       ef_sin_c,
1619       ef_sqrt_c,
1620       ef_tan_c,
1621       ef_if_c,
1622       ef_subscript_s,
1623       ef_eq_s,
1624       ef_ne_s,
1625       ef_gt_s,
1626       ef_lt_s,
1627       ef_ge_s,
1628       ef_le_s,
1629       ef_subsequence_s,
1630       ef_concat_s,
1631       ef_size_s,
1632       ef_format,
1633       ef_value,
1634       ef_like,
1635       ef_if_s,
1636       ef_subscript_b,
1637       ef_eq_b,
1638       ef_ne_b,
1639       ef_gt_b,
1640       ef_lt_b,
1641       ef_ge_b,
1642       ef_le_b,
1643       ef_subsequence_b,
1644       ef_concat_b,
1645       ef_size_b,
1646       ef_if_b,
1647       ef_subscript_t,
1648       ef_eq_t,
1649       ef_ne_t,
1650       ef_concat_t,
1651       ef_size_t,
1652       ef_entuple,
1653       ef_detuple,
1654       ef_insert,
1655       ef_remove,
1656       ef_if_t,
1657       ef_sum_it,
1658       ef_product_it,
1659       ef_add_it,
1660       ef_subtract_it,
1661       ef_scalar_mult_it,
1662       ef_dot_prod_it,
1663       ef_sum_rt,
1664       ef_product_rt,
1665       ef_add_rt,
1666       ef_subtract_rt,
1667       ef_scalar_mult_rt,
1668       ef_dot_prod_rt,
1669       ef_norm_rt,
1670       ef_sum_ct,
1671       ef_product_ct,
1672       ef_add_ct,
1673       ef_subtract_ct,
1674       ef_scalar_mult_ct,
1675       ef_dot_prod_ct,
1676       ef_norm_ct,
1677       ef_if,
1678       ef_ensemble,
1679       ef_member_of);
1680END_TYPE;
1681
1682-- IN AP242
1683TYPE elementary_space_enumerators = ENUMERATION OF
1684      (es_numbers,
1685       es_complex_numbers,
1686       es_reals,
1687       es_integers,
1688       es_logicals,
1689       es_booleans,
1690       es_strings,
1691       es_binarys,
1692       es_maths_spaces,
1693       es_maths_functions,
1694       es_generics);
1695END_TYPE;
1696
1697-- IN AP203e2/AP242
1698TYPE energy_measure = REAL;
1699END_TYPE;
1700
1701-- DIFF IN AP214
1702-- DIFF IN AP203e2
1703TYPE event_occurrence_item = SELECT
1704  (action,							 -- AP214/AP242
1705   action_directive,						 -- AP214/AP242
1706   action_method,						 -- AP214/AP242
1707   action_property,						 -- AP214/AP242
1708   action_relationship,						 -- AP214
1709   action_request_solution,					 -- AP214/AP242
1710   alternate_product_relationship,				 -- AP214/AP242
1711   applied_action_assignment,					 -- AP214/AP242
1712   applied_classification_assignment,				 -- AP214/AP242
1713   applied_person_and_organization_assignment,			 -- AP214
1714   approval_status,						 -- AP214
1715   assembly_component_usage_substitute,				 -- AP214/AP242
1716   certification,						 -- AP214/AP242
1717   class,							 -- AP214/AP242
1718   class_system,						 -- AP214/AP242
1719   configuration_design,					 -- AP214/AP242
1720   configuration_effectivity,					 -- AP214/AP242
1721   configuration_item,						 -- AP214/AP242
1722   configured_effectivity_assignment,				 -- AP214/AP242
1723   contract,							 -- AP214/AP242
1724   document_file,						 -- AP214
1725   draughting_model,						 -- AP214/AP242
1726   drawing_revision,						 -- AP214/AP242
1727   executed_action,						 -- AP214/AP242
1728   general_property,						 -- AP214/AP242
1729   material_designation,					 -- AP214/AP242
1730   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
1731   organization_relationship,					 -- AP214/AP242
1732   organizational_project,					 -- Common
1733   person_and_organization,					 -- AP214/AP242
1734   presentation_area,						 -- AP214/AP242
1735   product,							 -- AP214/AP242
1736   product_concept,						 -- AP214/AP242
1737   product_concept_feature,					 -- AP214/AP242
1738   product_concept_feature_association,				 -- AP214/AP242
1739   product_concept_feature_category,				 -- AP214/AP242
1740   product_concept_feature_category_usage,			 -- AP214/AP242
1741   product_definition,						 -- AP214
1742   product_definition_formation,				 -- AP214/AP242
1743   product_definition_formation_relationship,			 -- AP214/AP242
1744   product_definition_relationship,				 -- AP214/AP242
1745   product_definition_substitute,				 -- AP214/AP242
1746   property_definition,						 -- AP214/AP242
1747   requirement_for_action_resource,				 -- AP214/AP242
1748   resource_property,						 -- AP214/AP242
1749   security_classification,					 -- AP214
1750   security_classification_level,				 -- AP214/AP242
1751   shape_representation,					 -- AP214/AP242
1752   versioned_action_request);					 -- AP214
1753END_TYPE;
1754
1755-- IN AP242
1756TYPE expression_extension_select = SELECT
1757      (expression_extension_string,
1758       expression_extension_numeric);
1759END_TYPE;
1760
1761-- IN AP242
1762TYPE extension_options = ENUMERATION OF
1763      (eo_none,
1764       eo_cont,
1765       eo_cont_right,
1766       eo_cont_left);
1767END_TYPE;
1768
1769-- DIFF IN AP214
1770-- DIFF IN AP203e2
1771TYPE external_identification_item = SELECT
1772  (action_relationship,						 -- AP203e2/AP242
1773   action_request_status,					 -- AP203e2/AP242
1774   applied_organization_assignment,				 -- AP203e2/AP242
1775   applied_person_and_organization_assignment,			 -- AP203e2/AP242
1776   approval,							 -- AP203e2/AP242
1777   approval_status,						 -- AP203e2/AP242
1778   assembly_bond_definition,					 -- AP242
1779   date_and_time_assignment,					 -- AP203e2/AP242
1780   date_assignment,						 -- AP203e2/AP242
1781   document_file,						 -- Common
1782   external_source,						 -- AP203e2/AP242
1783   externally_defined_class,					 -- Common
1784   externally_defined_context_dependent_unit,			 -- AP203e2/AP242
1785   externally_defined_conversion_based_unit,			 -- AP203e2/AP242
1786   externally_defined_general_property,				 -- Common
1787   externally_defined_picture_representation_item,		 -- AP203e2/AP242
1788   externally_defined_representation_item,			 -- AP203e2/AP242
1789   generic_product_definition_reference,			 -- AP242
1790   organizational_address,					 -- AP203e2/AP242
1791   product_definition,						 -- Common
1792   security_classification,					 -- AP203e2/AP242
1793   trimmed_curve,						 -- AP203e2/AP242
1794   versioned_action_request);					 -- AP203e2/AP242
1795END_TYPE;
1796
1797-- IN AP242
1798TYPE face_or_surface = SELECT
1799      (face,
1800       surface);
1801END_TYPE;
1802
1803-- DIFF IN AP214
1804TYPE fill_area_style_tile_shape_select = SELECT
1805  (externally_defined_tile,					 -- AP203e2/AP242
1806   fill_area_style_tile_coloured_region,			 -- AP203e2/AP242
1807   fill_area_style_tile_curve_with_style,			 -- AP203e2/AP242
1808   fill_area_style_tile_symbol_with_style,			 -- Common
1809   pre_defined_tile);						 -- AP203e2/AP242
1810END_TYPE;
1811
1812TYPE fill_style_select = SELECT
1813      (fill_area_style_colour,
1814       externally_defined_tile_style,
1815       fill_area_style_tiles,
1816       externally_defined_hatch_style,
1817       fill_area_style_hatching);
1818END_TYPE;
1819
1820-- DIFF IN AP214
1821TYPE font_select = SELECT
1822  (externally_defined_text_font,				 -- Common
1823   pre_defined_text_font,					 -- Common
1824   text_font);							 -- AP203e2/AP242
1825END_TYPE;
1826
1827-- IN AP203e2/AP242
1828TYPE force_measure = REAL;
1829END_TYPE;
1830
1831TYPE founded_item_select = SELECT
1832      (founded_item,
1833       representation_item);
1834END_TYPE;
1835
1836-- IN AP203e2/AP242
1837TYPE frequency_measure = REAL;
1838END_TYPE;
1839
1840-- IN AP203e2/AP242
1841TYPE generalized_surface_select = SELECT
1842      (surface,
1843       face_surface,
1844       surfaced_open_shell);
1845END_TYPE;
1846
1847-- IN AP242
1848TYPE geometric_constraint_element = SELECT
1849      (point,
1850       curve,
1851       surface,
1852       vector,
1853       direction);
1854END_TYPE;
1855
1856-- IN AP203e2/AP242
1857TYPE geometric_item_specific_usage_select = SELECT
1858      (shape_aspect,
1859       shape_aspect_relationship);
1860END_TYPE;
1861
1862-- IN AP242
1863TYPE geometric_model_item = SELECT
1864      (connected_face_set,
1865       edge_loop,
1866       geometric_representation_item);
1867END_TYPE;
1868
1869-- DIFF IN AP214
1870-- DIFF IN AP203e2
1871TYPE geometric_set_select = SELECT
1872      (curve,
1873       point,
1874       surface);
1875END_TYPE;
1876
1877-- IN AP242
1878TYPE geometric_tolerance_modifier = ENUMERATION OF
1879      (any_cross_section,
1880       common_zone,
1881       each_radial_element,
1882       free_state,
1883       least_material_requirement,
1884       line_element,
1885       major_diameter,
1886       maximum_material_requirement,
1887       minor_diameter,
1888       not_convex,
1889       pitch_diameter,
1890       reciprocity_requirement,
1891       separate_requirement,
1892       statistical_tolerance,
1893       tangent_plane);
1894END_TYPE;
1895
1896-- IN AP242
1897TYPE geometric_tolerance_target = SELECT
1898      (dimensional_location,
1899       dimensional_size,
1900       product_definition_shape,
1901       shape_aspect);
1902END_TYPE;
1903
1904-- IN AP214
1905TYPE group_item = SELECT
1906      (geometric_representation_item,
1907       mapped_item,
1908       product_concept_feature,
1909       shape_aspect,
1910       styled_item,
1911       topological_representation_item);
1912END_TYPE;
1913
1914-- DIFF IN AP203e2
1915-- IN AP203e2/AP242
1916TYPE groupable_item = SELECT
1917      (applied_identification_assignment,
1918       applied_name_assignment,
1919       component_feature,
1920       geometric_representation_item,
1921       group_relationship,
1922       mapped_item,
1923       package_product_concept_feature,
1924       product_concept_feature,
1925       product_definition,
1926       product_definition_formation,
1927       property_definition_representation,
1928       representation,
1929       representation_item,
1930       representation_relationship_with_transformation,
1931       shape_aspect,
1932       shape_aspect_relationship,
1933       shape_representation_relationship,
1934       styled_item,
1935       topological_representation_item);
1936   WHERE
1937      WR1:
1938         NOT ('STEP_MERGED_CAD_SCHEMA.GROUP' IN TYPEOF(SELF));
1939END_TYPE;
1940
1941TYPE hour_in_day = INTEGER;
1942   WHERE
1943      WR1:
1944         (0 <= SELF) AND (SELF < 24);
1945END_TYPE;
1946
1947-- DIFF IN AP214
1948-- DIFF IN AP203e2
1949TYPE id_attribute_select = SELECT
1950  (action,							 -- Common
1951   address,							 -- Common
1952   application_context,						 -- Common
1953   dimensional_size,						 -- AP242
1954   geometric_tolerance,						 -- AP242
1955   group,							 -- Common
1956   organizational_project,					 -- Common
1957   product_category,						 -- Common
1958   property_definition,						 -- Common
1959   representation,						 -- Common
1960   shape_aspect,						 -- Common
1961   shape_aspect_relationship);					 -- Common
1962END_TYPE;
1963
1964-- DIFF IN AP214
1965-- DIFF IN AP203e2
1966TYPE identification_item = SELECT
1967  (action,							 -- AP214/AP242
1968   action_directive,						 -- AP214/AP242
1969   action_method,						 -- AP214/AP242
1970   action_property,						 -- AP214/AP242
1971   applied_identification_assignment,				 -- AP214/AP242
1972   approval_status,						 -- Common
1973   characterized_class,						 -- AP203e2/AP242
1974   class,							 -- Common
1975   class_system,						 -- AP214/AP242
1976   configuration_item,						 -- Common
1977   contract,							 -- AP203e2/AP242
1978   dimensional_size,						 -- Common
1979   document_file,						 -- Common
1980   document_type,						 -- AP214/AP242
1981   draughting_model,						 -- AP214/AP242
1982   effectivity,							 -- AP214/AP242
1983   general_property,						 -- Common
1984   group,							 -- AP203e2/AP242
1985   group_relationship,						 -- AP203e2/AP242
1986   information_right,						 -- AP203e2/AP242
1987   information_usage_right,					 -- AP203e2/AP242
1988   material_designation,					 -- AP203e2/AP242
1989   measure_representation_item,					 -- AP214/AP242
1990   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
1991   organization,						 -- Common
1992   organizational_project,					 -- AP214/AP242
1993   person_and_organization,					 -- Common
1994   presentation_area,						 -- AP214/AP242
1995   product,							 -- Common
1996   product_category,						 -- AP203e2/AP242
1997   product_class,						 -- AP203e2/AP242
1998   product_concept,						 -- Common
1999   product_concept_feature,					 -- Common
2000   product_concept_feature_category,				 -- AP214/AP242
2001   product_definition,						 -- Common
2002   product_definition_formation,				 -- Common
2003   product_definition_relationship,				 -- AP214/AP242
2004   product_identification,					 -- AP203e2/AP242
2005   property_definition,						 -- AP214/AP242
2006   property_definition_relationship,				 -- AP214/AP242
2007   representation,						 -- AP203e2/AP242
2008   rule_set,							 -- AP203e2/AP242
2009   security_classification,					 -- AP203e2/AP242
2010   security_classification_level,				 -- Common
2011   shape_aspect_relationship,					 -- Common
2012   shape_representation,					 -- Common
2013   usage_association,						 -- AP203e2/AP242
2014   versioned_action_request);					 -- AP214/AP242
2015END_TYPE;
2016
2017TYPE identifier = STRING;
2018END_TYPE;
2019
2020-- IN AP203e2/AP242
2021TYPE illuminance_measure = REAL;
2022END_TYPE;
2023
2024-- IN AP203e2/AP242
2025TYPE inductance_measure = REAL;
2026END_TYPE;
2027
2028-- IN AP242
2029TYPE input_selector = positive_integer;
2030END_TYPE;
2031
2032-- IN AP242
2033TYPE inspected_ecdq_element_select = inspected_element_select;
2034END_TYPE;
2035
2036-- IN AP242
2037TYPE inspected_element_select = SELECT
2038      (assembly_component_usage,
2039       axis2_placement_3d,
2040       b_spline_or_composite_curve_select,
2041       b_spline_or_rectangular_composite_surface_select,
2042       cartesian_transformation_operator_3d,
2043       closed_or_open_shell_select,
2044       connected_face_set,
2045       curve,
2046       direction,
2047       edge_curve,
2048       edge_loop,
2049       face_surface,
2050       global_uncertainty_assigned_context,
2051       global_unit_assigned_context,
2052       group,
2053       manifold_solid_brep,
2054       placement,
2055       point,
2056       presentation_layer_assignment,
2057       representation_item,
2058       styled_item,
2059       surface,
2060       vertex_point);
2061END_TYPE;
2062
2063-- IN AP242
2064TYPE inspected_shape_element_select = inspected_element_select;
2065END_TYPE;
2066
2067-- IN AP203e2/AP242
2068TYPE instance_usage_context_select = SELECT
2069      (product_definition_relationship,
2070       product_definition_usage);
2071END_TYPE;
2072
2073-- IN AP242
2074TYPE internal_or_reflected_shape_aspect = SELECT
2075      (shape_aspect,
2076       identifier);
2077END_TYPE;
2078
2079-- DIFF IN AP214
2080-- IN AP214/AP242
2081TYPE interpolation_type = ENUMERATION OF
2082      (undefined_interpolation_type,
2083       discontinuous_interpolation_type,
2084       synchronous_interpolation_type,
2085       linear_interpolation_type);
2086END_TYPE;
2087
2088-- DIFF IN AP214
2089TYPE invisibility_context = SELECT
2090  (draughting_model,						 -- AP203e2/AP242
2091   presentation_representation,					 -- Common
2092   presentation_set);						 -- Common
2093END_TYPE;
2094
2095TYPE invisible_item = SELECT
2096      (draughting_callout,
2097       presentation_layer_assignment,
2098       representation,
2099       styled_item);
2100END_TYPE;
2101
2102-- IN AP203e2/AP242
2103TYPE ir_usage_item = action_item;
2104END_TYPE;
2105
2106-- IN AP242
2107TYPE item_identified_representation_usage_definition = SELECT
2108      (applied_action_assignment,
2109       applied_action_method_assignment,
2110       applied_action_request_assignment,
2111       applied_approval_assignment,
2112       applied_certification_assignment,
2113       applied_classification_assignment,
2114       applied_contract_assignment,
2115       applied_date_and_time_assignment,
2116       applied_date_assignment,
2117       applied_document_reference,
2118       applied_document_usage_constraint_assignment,
2119       applied_effectivity_assignment,
2120       applied_event_occurrence_assignment,
2121       applied_external_identification_assignment,
2122       applied_group_assignment,
2123       applied_identification_assignment,
2124       applied_ineffectivity_assignment,
2125       applied_name_assignment,
2126       applied_organization_assignment,
2127       applied_organizational_project_assignment,
2128       applied_person_and_organization_assignment,
2129       applied_security_classification_assignment,
2130       applied_time_interval_assignment,
2131       applied_usage_right,
2132       dimensional_size,
2133       geometric_tolerance,
2134       product_definition_relationship,
2135       property_definition,
2136       represented_definition);
2137END_TYPE;
2138
2139-- IN AP242
2140TYPE item_identified_representation_usage_select = SELECT
2141      (representation_item,
2142       list_representation_item,
2143       set_representation_item);
2144END_TYPE;
2145
2146-- DIFF IN AP214
2147-- IN AP214/AP242
2148TYPE kinematic_analysis_definition = SELECT
2149  (interpolated_configuration_sequence,				 -- Common
2150   prescribed_path);						 -- AP242
2151END_TYPE;
2152
2153-- IN AP214
2154TYPE kinematic_frame_background = SELECT
2155      (point,
2156       curve,
2157       surface);
2158END_TYPE;
2159
2160-- IN AP242
2161TYPE kinematic_link_representation_items = SELECT
2162      (curve,
2163       point,
2164       rigid_placement,
2165       surface);
2166END_TYPE;
2167
2168-- IN AP214/AP242
2169TYPE kinematic_result = SELECT
2170      (interpolated_configuration_sequence,
2171       resulting_path);
2172END_TYPE;
2173
2174-- IN AP242
2175TYPE kinematic_topology_representation_select = SELECT
2176      (kinematic_topology_structure,
2177       kinematic_topology_directed_structure,
2178       kinematic_topology_network_structure);
2179END_TYPE;
2180
2181TYPE knot_type = ENUMERATION OF
2182      (uniform_knots,
2183       quasi_uniform_knots,
2184       piecewise_bezier_knots,
2185       unspecified);
2186END_TYPE;
2187
2188TYPE label = STRING;
2189END_TYPE;
2190
2191-- IN AP214
2192TYPE language_item = SELECT
2193      (representation);
2194END_TYPE;
2195
2196TYPE layered_item = SELECT
2197      (presentation_representation,
2198       representation_item);
2199END_TYPE;
2200
2201TYPE length_measure = REAL;
2202END_TYPE;
2203
2204TYPE limit_condition = ENUMERATION OF
2205      (maximum_material_condition,
2206       least_material_condition,
2207       regardless_of_feature_size);
2208END_TYPE;
2209
2210-- IN AP242
2211TYPE linear_geometry_constraint_element = SELECT
2212      (line,
2213       plane,
2214       direction,
2215       vector);
2216END_TYPE;
2217
2218-- IN AP242
2219TYPE link_or_shape_representation = SELECT
2220      (kinematic_link_representation,
2221       shape_representation);
2222END_TYPE;
2223
2224-- DIFF IN AP214
2225TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item;
2226END_TYPE;
2227
2228TYPE list_representation_item = LIST [1:?] OF representation_item;
2229END_TYPE;
2230
2231-- IN AP242
2232TYPE location_in_aggregate_item = LIST [1:?] OF integer_representation_item;
2233END_TYPE;
2234
2235-- IN AP242
2236TYPE location_of_extreme_value_select = SELECT
2237      (inspected_shape_element_select,
2238       b_spline_surface_knot_locator,
2239       b_spline_curve_knot_locator,
2240       b_spline_curve_segment,
2241       b_spline_surface_strip,
2242       b_spline_surface_patch,
2243       composite_curve_transition_locator,
2244       rectangular_composite_surface_transition_locator,
2245       boundary_curve_of_b_spline_or_rectangular_composite_surface,
2246       oriented_edge,
2247       face_bound,
2248       point_on_edge_curve,
2249       point_on_face_surface,
2250       subedge,
2251       subface);
2252END_TYPE;
2253
2254-- IN AP203e2/AP242
2255TYPE luminous_flux_measure = REAL;
2256END_TYPE;
2257
2258TYPE luminous_intensity_measure = REAL;
2259END_TYPE;
2260
2261-- IN AP203e2/AP242
2262TYPE magnetic_flux_density_measure = REAL;
2263END_TYPE;
2264
2265-- IN AP203e2/AP242
2266TYPE magnetic_flux_measure = REAL;
2267END_TYPE;
2268
2269TYPE marker_select = SELECT
2270      (marker_type,
2271       pre_defined_marker);
2272END_TYPE;
2273
2274TYPE marker_type = ENUMERATION OF
2275      (dot,
2276       x,
2277       plus,
2278       asterisk,
2279       ring,
2280       square,
2281       triangle);
2282END_TYPE;
2283
2284TYPE mass_measure = REAL;
2285END_TYPE;
2286
2287-- IN AP242
2288TYPE maths_atom = SELECT
2289      (maths_simple_atom,
2290       maths_enum_atom);
2291END_TYPE;
2292
2293-- IN AP242
2294TYPE maths_binary = BINARY;
2295END_TYPE;
2296
2297-- IN AP242
2298TYPE maths_boolean = BOOLEAN;
2299END_TYPE;
2300
2301-- IN AP242
2302TYPE maths_enum_atom = SELECT
2303      (elementary_space_enumerators,
2304       ordering_type,
2305       elementary_function_enumerators,
2306       open_closed,
2307       space_constraint_type,
2308       repackage_options,
2309       extension_options);
2310END_TYPE;
2311
2312-- IN AP242
2313TYPE maths_expression = SELECT
2314      (atom_based_value,
2315       maths_tuple,
2316       generic_expression);
2317END_TYPE;
2318
2319-- IN AP242
2320TYPE maths_function_select = SELECT
2321      (maths_function,
2322       elementary_function_enumerators);
2323END_TYPE;
2324
2325-- IN AP242
2326TYPE maths_integer = INTEGER;
2327END_TYPE;
2328
2329-- IN AP242
2330TYPE maths_logical = LOGICAL;
2331END_TYPE;
2332
2333-- IN AP242
2334TYPE maths_number = NUMBER;
2335END_TYPE;
2336
2337-- IN AP242
2338TYPE maths_real = REAL;
2339END_TYPE;
2340
2341-- IN AP242
2342TYPE maths_simple_atom = SELECT
2343      (maths_number,
2344       maths_real,
2345       maths_integer,
2346       maths_logical,
2347       maths_boolean,
2348       maths_string,
2349       maths_binary);
2350END_TYPE;
2351
2352-- IN AP242
2353TYPE maths_space_or_function = SELECT
2354      (maths_space,
2355       maths_function);
2356END_TYPE;
2357
2358-- IN AP242
2359TYPE maths_string = STRING;
2360END_TYPE;
2361
2362-- IN AP242
2363TYPE maths_tuple = LIST [0:?] OF maths_value;
2364END_TYPE;
2365
2366-- IN AP242
2367TYPE maths_value = SELECT
2368      (atom_based_value,
2369       maths_tuple,
2370       generic_expression);
2371   WHERE
2372      constancy:
2373         NOT ('GENERIC_EXPRESSION' IN stripped_typeof(SELF)) OR expression_is_constant(SELF);
2374END_TYPE;
2375
2376-- DIFF IN AP214
2377TYPE measure_value = SELECT
2378  (absorbed_dose_measure,					 -- AP203e2/AP242
2379   acceleration_measure,					 -- AP203e2/AP242
2380   amount_of_substance_measure,					 -- Common
2381   area_measure,						 -- Common
2382   capacitance_measure,						 -- AP203e2/AP242
2383   celsius_temperature_measure,					 -- Common
2384   conductance_measure,						 -- AP203e2/AP242
2385   context_dependent_measure,					 -- Common
2386   count_measure,						 -- Common
2387   descriptive_measure,						 -- Common
2388   dose_equivalent_measure,					 -- AP203e2/AP242
2389   electric_charge_measure,					 -- AP203e2/AP242
2390   electric_current_measure,					 -- Common
2391   electric_potential_measure,					 -- AP203e2/AP242
2392   energy_measure,						 -- AP203e2/AP242
2393   force_measure,						 -- AP203e2/AP242
2394   frequency_measure,						 -- AP203e2/AP242
2395   illuminance_measure,						 -- AP203e2/AP242
2396   inductance_measure,						 -- AP203e2/AP242
2397   length_measure,						 -- Common
2398   luminous_flux_measure,					 -- AP203e2/AP242
2399   luminous_intensity_measure,					 -- Common
2400   magnetic_flux_density_measure,				 -- AP203e2/AP242
2401   magnetic_flux_measure,					 -- AP203e2/AP242
2402   mass_measure,						 -- Common
2403   non_negative_length_measure,					 -- Common
2404   numeric_measure,						 -- Common
2405   parameter_value,						 -- Common
2406   plane_angle_measure,						 -- Common
2407   positive_length_measure,					 -- Common
2408   positive_plane_angle_measure,				 -- Common
2409   positive_ratio_measure,					 -- Common
2410   power_measure,						 -- AP203e2/AP242
2411   pressure_measure,						 -- AP203e2/AP242
2412   radioactivity_measure,					 -- AP203e2/AP242
2413   ratio_measure,						 -- Common
2414   resistance_measure,						 -- AP203e2/AP242
2415   solid_angle_measure,						 -- Common
2416   thermodynamic_temperature_measure,				 -- Common
2417   time_measure,						 -- Common
2418   velocity_measure,						 -- AP203e2/AP242
2419   volume_measure);						 -- Common
2420END_TYPE;
2421
2422-- IN AP242
2423TYPE measured_value_select = SELECT
2424      (boolean_value,
2425       measure_value,
2426       plane_angle_and_ratio_pair,
2427       plane_angle_and_length_pair);
2428END_TYPE;
2429
2430-- IN AP203e2/AP242
2431TYPE mechanical_design_and_draughting_relationship_select = SELECT
2432      (draughting_model,
2433       mechanical_design_geometric_presentation_representation,
2434       mechanical_design_presentation_representation_with_draughting,
2435       mechanical_design_shaded_presentation_representation,
2436       shape_representation);
2437END_TYPE;
2438
2439-- IN AP203e2/AP242
2440TYPE mechanical_design_geometric_presentation_area_items = SELECT
2441      (axis2_placement,
2442       mapped_item);
2443END_TYPE;
2444
2445-- IN AP203e2/AP242
2446TYPE mechanical_design_geometric_presentation_representation_items = SELECT
2447      (axis2_placement,
2448       camera_model_d3,
2449       mapped_item,
2450       styled_item);
2451END_TYPE;
2452
2453-- IN AP242
2454TYPE mechanical_design_shaded_presentation_area_items = SELECT
2455      (axis2_placement,
2456       mapped_item);
2457END_TYPE;
2458
2459-- IN AP242
2460TYPE mechanical_design_shaded_presentation_representation_items = SELECT
2461      (axis2_placement,
2462       camera_model_d3,
2463       mapped_item,
2464       styled_item);
2465END_TYPE;
2466
2467-- IN AP203e2/AP242
2468TYPE message = STRING;
2469END_TYPE;
2470
2471TYPE minute_in_hour = INTEGER;
2472   WHERE
2473      WR1:
2474         (0 <= SELF) AND (SELF <= 59);
2475END_TYPE;
2476
2477TYPE month_in_year_number = INTEGER;
2478   WHERE
2479      WR1:
2480         (1 <= SELF) AND (SELF <= 12);
2481END_TYPE;
2482
2483-- IN AP214
2484TYPE motion_parameter_measure = SELECT
2485      (parameter_value,
2486       measure_with_unit);
2487END_TYPE;
2488
2489-- DIFF IN AP214
2490-- DIFF IN AP203e2
2491TYPE multi_language_attribute_item = SELECT
2492  (action,							 -- AP214/AP242
2493   action_directive,						 -- AP214/AP242
2494   action_method,						 -- AP214/AP242
2495   action_property,						 -- AP214/AP242
2496   action_relationship,						 -- AP214/AP242
2497   actuated_kinematic_pair,					 -- AP242
2498   alternate_product_relationship,				 -- Common
2499   application_context,						 -- Common
2500   applied_certification_assignment,				 -- AP203e2/AP242
2501   applied_document_reference,					 -- AP203e2/AP242
2502   applied_document_usage_constraint_assignment,		 -- AP203e2/AP242
2503   applied_external_identification_assignment,			 -- AP203e2/AP242
2504   applied_identification_assignment,				 -- AP203e2/AP242
2505   applied_organizational_project_assignment,			 -- AP203e2/AP242
2506   approval,							 -- AP203e2/AP242
2507   approval_relationship,					 -- Common
2508   approval_status,						 -- AP203e2/AP242
2509   assembly_component_usage_substitute,				 -- Common
2510   attribute_value_assignment,					 -- AP203e2/AP242
2511   certification,						 -- Common
2512   certification_type,						 -- AP203e2/AP242
2513   colour,							 -- AP203e2/AP242
2514   configuration_design,					 -- Common
2515   configuration_item,						 -- Common
2516   contract,							 -- Common
2517   data_environment,						 -- AP214/AP242
2518   date_role,							 -- Common
2519   date_time_role,						 -- Common
2520   descriptive_representation_item,				 -- Common
2521   document_relationship,					 -- Common
2522   document_usage_role,						 -- AP203e2/AP242
2523   draughting_title,						 -- AP214/AP242
2524   effectivity,							 -- Common
2525   effectivity_relationship,					 -- Common
2526   event_occurrence,						 -- Common
2527   external_source,						 -- Common
2528   general_property,						 -- Common
2529   general_property_relationship,				 -- Common
2530   geometric_representation_item,				 -- Common
2531   geometric_tolerance,						 -- Common
2532   group,							 -- AP214/AP242
2533   group_relationship,						 -- AP214/AP242
2534   identification_role,						 -- Common
2535   information_right,						 -- AP203e2/AP242
2536   information_usage_right,					 -- AP203e2/AP242
2537   kinematic_pair,						 -- AP214/AP242
2538   make_from_usage_option,					 -- AP203e2/AP242
2539   mapped_item,							 -- Common
2540   name_assignment,						 -- AP214/AP242
2541   object_role,							 -- AP203e2/AP242
2542   organization_relationship,					 -- Common
2543   organization_role,						 -- Common
2544   organizational_project,					 -- Common
2545   organizational_project_relationship,				 -- Common
2546   organizational_project_role,					 -- AP203e2/AP242
2547   pair_actuator,						 -- AP214
2548   person_and_organization,					 -- AP203e2/AP242
2549   person_and_organization_role,				 -- Common
2550   presentation_layer_assignment,				 -- AP214/AP242
2551   process_product_association,					 -- AP214/AP242
2552   product,							 -- Common
2553   product_concept,						 -- Common
2554   product_concept_feature,					 -- AP214/AP242
2555   product_concept_feature_association,				 -- AP214/AP242
2556   product_concept_relationship,				 -- Common
2557   product_definition,						 -- Common
2558   product_definition_context,					 -- AP203e2/AP242
2559   product_definition_formation,				 -- Common
2560   product_definition_formation_relationship,			 -- Common
2561   product_definition_relationship,				 -- Common
2562   product_definition_shape,					 -- AP203e2/AP242
2563   product_definition_substitute,				 -- AP214/AP242
2564   product_related_product_category,				 -- Common
2565   property_definition,						 -- Common
2566   property_definition_relationship,				 -- AP214/AP242
2567   representation,						 -- Common
2568   representation_relationship,					 -- Common
2569   requirement_for_action_resource,				 -- AP214/AP242
2570   resource_property,						 -- AP214/AP242
2571   resource_requirement_type,					 -- AP214/AP242
2572   security_classification,					 -- Common
2573   security_classification_assignment,				 -- AP203e2/AP242
2574   shape_aspect,						 -- Common
2575   shape_aspect_relationship,					 -- Common
2576   shape_representation,					 -- AP203e2/AP242
2577   styled_item,							 -- AP214/AP242
2578   time_interval_role,						 -- Common
2579   topological_representation_item,				 -- Common
2580   uncertainty_measure_with_unit,				 -- Common
2581   uncertainty_qualifier,					 -- AP214/AP242
2582   usage_association,						 -- AP203e2/AP242
2583   versioned_action_request,					 -- AP214/AP242
2584   versioned_action_request_relationship);			 -- AP214/AP242
2585END_TYPE;
2586
2587-- IN AP242
2588TYPE multi_or_next_assembly_usage_occurrence = SELECT
2589      (multi_level_reference_designator,
2590       next_assembly_usage_occurrence);
2591END_TYPE;
2592
2593TYPE name_attribute_select = SELECT
2594      (action_request_solution,
2595       address,
2596       configuration_design,
2597       context_dependent_shape_representation,
2598       derived_unit,
2599       effectivity,
2600       person_and_organization,
2601       product_definition,
2602       product_definition_substitute,
2603       property_definition_representation);
2604END_TYPE;
2605
2606-- DIFF IN AP214
2607TYPE name_item = SELECT
2608  (assembly_component_usage,					 -- AP203e2/AP242
2609   external_class_library,					 -- AP203e2/AP242
2610   group,							 -- AP203e2/AP242
2611   group_relationship,						 -- AP203e2/AP242
2612   kinematic_joint,						 -- AP214
2613   kinematic_link,						 -- AP214
2614   kinematic_structure,						 -- AP214
2615   product,							 -- AP203e2/AP242
2616   product_definition);						 -- AP203e2/AP242
2617END_TYPE;
2618
2619TYPE non_negative_length_measure = length_measure;
2620   WHERE
2621      WR1:
2622         SELF >= 0.0;
2623END_TYPE;
2624
2625-- IN AP203e2/AP242
2626TYPE nonnegative_integer = INTEGER;
2627   WHERE
2628      nonnegativity:
2629         SELF >= 0;
2630END_TYPE;
2631
2632TYPE null_style = ENUMERATION OF
2633      (null);
2634END_TYPE;
2635
2636TYPE numeric_measure = NUMBER;
2637END_TYPE;
2638
2639-- IN AP242
2640TYPE one_or_two = positive_integer;
2641   WHERE
2642      in_range:
2643         (SELF = 1) OR (SELF = 2);
2644END_TYPE;
2645
2646-- IN AP242
2647TYPE open_closed = ENUMERATION OF
2648      (open,
2649       closed);
2650END_TYPE;
2651
2652-- IN AP242
2653TYPE ordering_type = ENUMERATION OF
2654      (by_rows,
2655       by_columns);
2656END_TYPE;
2657
2658-- DIFF IN AP214
2659-- DIFF IN AP203e2
2660TYPE organization_item = SELECT
2661  (action,							 -- Common
2662   action_directive,						 -- Common
2663   action_method,						 -- AP214/AP242
2664   action_property,						 -- AP214/AP242
2665   action_relationship,						 -- AP214/AP242
2666   action_request_solution,					 -- AP214/AP242
2667   alternate_product_relationship,				 -- Common
2668   applied_action_assignment,					 -- Common
2669   applied_classification_assignment,				 -- Common
2670   applied_identification_assignment,				 -- Common
2671   applied_organization_assignment,				 -- AP214/AP242
2672   applied_person_and_organization_assignment,			 -- AP214/AP242
2673   applied_security_classification_assignment,			 -- AP203e2/AP242
2674   approval,							 -- Common
2675   approval_status,						 -- AP214/AP242
2676   assembly_component_usage_substitute,				 -- Common
2677   certification,						 -- Common
2678   class,							 -- Common
2679   class_system,						 -- AP214/AP242
2680   configuration_design,					 -- AP214/AP242
2681   configuration_effectivity,					 -- AP214/AP242
2682   configuration_item,						 -- Common
2683   configured_effectivity_assignment,				 -- AP214/AP242
2684   contract,							 -- Common
2685   data_quality_definition,					 -- AP242
2686   document_file,						 -- Common
2687   document_type,						 -- AP214/AP242
2688   draughting_model,						 -- AP214/AP242
2689   drawing_revision,						 -- AP214/AP242
2690   effectivity,							 -- AP214/AP242
2691   event_occurrence,						 -- AP214/AP242
2692   executed_action,						 -- Common
2693   general_property,						 -- Common
2694   information_usage_right,					 -- AP203e2/AP242
2695   material_designation,					 -- AP214/AP242
2696   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
2697   organization,						 -- AP214/AP242
2698   organization_relationship,					 -- AP214/AP242
2699   organizational_project,					 -- Common
2700   person_and_organization,					 -- AP214/AP242
2701   presentation_area,						 -- AP214/AP242
2702   product,							 -- Common
2703   product_concept,						 -- AP214/AP242
2704   product_concept_feature,					 -- AP214/AP242
2705   product_concept_feature_association,				 -- AP214/AP242
2706   product_concept_feature_category,				 -- AP214/AP242
2707   product_concept_feature_category_usage,			 -- AP214/AP242
2708   product_definition,						 -- Common
2709   product_definition_formation,				 -- Common
2710   product_definition_formation_relationship,			 -- Common
2711   product_definition_relationship,				 -- AP214/AP242
2712   product_definition_substitute,				 -- AP214/AP242
2713   property_definition,						 -- Common
2714   requirement_for_action_resource,				 -- AP214/AP242
2715   resource_property,						 -- AP214/AP242
2716   rule_action,							 -- AP203e2/AP242
2717   security_classification,					 -- Common
2718   security_classification_level,				 -- AP214/AP242
2719   shape_representation,					 -- Common
2720   versioned_action_request);					 -- Common
2721END_TYPE;
2722
2723-- IN AP203e2/AP242
2724TYPE orientation_basis_select = SELECT
2725      (axis2_placement_3d,
2726       min_and_major_ply_orientation_basis);
2727END_TYPE;
2728
2729-- IN AP242
2730TYPE parallel_offset_type = ENUMERATION OF
2731      (curve_2d_offset,
2732       curve_3d_offset,
2733       surface_offset);
2734END_TYPE;
2735
2736TYPE parameter_value = REAL;
2737END_TYPE;
2738
2739-- IN AP242
2740TYPE path_or_composite_curve = SELECT
2741      (composite_curve,
2742       path);
2743END_TYPE;
2744
2745TYPE pcurve_or_surface = SELECT
2746      (pcurve,
2747       surface);
2748END_TYPE;
2749
2750-- DIFF IN AP214
2751-- DIFF IN AP203e2
2752-- DIFF IN Deprecated AP203e1
2753TYPE person_and_organization_item = SELECT
2754  (action,							 -- AP203e2/AP214/AP242
2755   action_directive,						 -- AP203e2/AP214/AP242
2756   action_method,						 -- AP214/AP242
2757   action_property,						 -- AP214/AP242
2758   action_relationship,						 -- AP214/AP242
2759   action_request_solution,					 -- AP214/AP242
2760   alternate_product_relationship,				 -- AP203e2/AP214/AP242
2761   applied_action_assignment,					 -- AP203e2/AP214/AP242
2762   applied_classification_assignment,				 -- AP203e2/AP214/AP242
2763   applied_identification_assignment,				 -- AP203e2/AP242
2764   applied_organization_assignment,				 -- AP214/AP242
2765   applied_person_and_organization_assignment,			 -- AP214/AP242
2766   applied_security_classification_assignment,			 -- AP203e2/AP242
2767   approval,							 -- AP203e2/AP242
2768   approval_status,						 -- AP214/AP242
2769   assembly_component_usage_substitute,				 -- AP203e2/AP214/AP242
2770   certification,						 -- AP203e2/AP214/AP242
2771   change,							 -- Deprecated AP203e1
2772   change_request,						 -- Deprecated AP203e1
2773   class,							 -- AP214/AP242
2774   class_system,						 -- AP214/AP242
2775   configuration_design,					 -- AP214/AP242
2776   configuration_effectivity,					 -- AP214/AP242
2777   configuration_item,						 -- Common
2778   configured_effectivity_assignment,				 -- AP214/AP242
2779   contract,							 -- Common
2780   data_quality_definition,					 -- AP242
2781   document_file,						 -- AP203e2/AP214/AP242
2782   document_type,						 -- AP214/AP242
2783   draughting_model,						 -- AP214/AP242
2784   drawing_revision,						 -- AP214/AP242
2785   event_occurrence,						 -- AP214/AP242
2786   executed_action,						 -- AP203e2/AP214/AP242
2787   general_property,						 -- AP203e2/AP214/AP242
2788   information_usage_right,					 -- AP203e2/AP242
2789   material_designation,					 -- AP214/AP242
2790   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
2791   organization,						 -- AP214/AP242
2792   organization_relationship,					 -- AP214/AP242
2793   organizational_project,					 -- AP203e2/AP214/AP242
2794   person_and_organization,					 -- AP203e2/AP214/AP242
2795   presentation_area,						 -- AP214/AP242
2796   product,							 -- Common
2797   product_concept,						 -- AP214/AP242
2798   product_concept_feature,					 -- AP214/AP242
2799   product_concept_feature_association,				 -- AP214/AP242
2800   product_concept_feature_category,				 -- AP214/AP242
2801   product_concept_feature_category_usage,			 -- AP214/AP242
2802   product_definition,						 -- Common
2803   product_definition_formation,				 -- Common
2804   product_definition_formation_relationship,			 -- AP203e2/AP214/AP242
2805   product_definition_relationship,				 -- AP214/AP242
2806   product_definition_substitute,				 -- AP214/AP242
2807   property_definition,						 -- AP203e2/AP214/AP242
2808   requirement_for_action_resource,				 -- AP214/AP242
2809   resource_property,						 -- AP214/AP242
2810   rule_action,							 -- AP203e2/AP242
2811   security_classification,					 -- Common
2812   security_classification_level,				 -- AP214/AP242
2813   shape_representation,					 -- AP203e2/AP214/AP242
2814   start_request,						 -- Deprecated AP203e1
2815   start_work,							 -- Deprecated AP203e1
2816   versioned_action_request);					 -- AP203e2/AP214/AP242
2817END_TYPE;
2818
2819TYPE person_organization_select = SELECT
2820      (person,
2821       organization,
2822       person_and_organization);
2823END_TYPE;
2824
2825-- IN AP203e2/AP242
2826TYPE picture_representation_item_select = SELECT
2827      (styled_item,
2828       planar_box,
2829       axis2_placement_2d);
2830END_TYPE;
2831
2832-- IN AP242
2833TYPE planar_curve_select = SELECT
2834      (line,
2835       conic,
2836       trimmed_curve,
2837       pcurve,
2838       surface_curve);
2839   WHERE
2840      WR1:
2841         SELF\geometric_representation_item.dim = 3;
2842      WR2:
2843         check_curve_planarity(SELF);
2844END_TYPE;
2845
2846TYPE plane_angle_measure = REAL;
2847END_TYPE;
2848
2849TYPE plane_or_planar_box = SELECT
2850      (plane,
2851       planar_box);
2852END_TYPE;
2853
2854-- IN AP203e2/AP242
2855TYPE point_and_vector_member = SELECT
2856      (point,
2857       direction);
2858END_TYPE;
2859
2860-- IN AP203e2/AP242
2861TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member;
2862END_TYPE;
2863
2864-- IN AP242
2865TYPE point_curve_or_surface_constraint_element = SELECT
2866      (point,
2867       curve,
2868       surface);
2869END_TYPE;
2870
2871-- IN AP203e2/AP242
2872TYPE point_path_members = LIST [1:?] OF point_and_vector;
2873END_TYPE;
2874
2875-- IN AP242
2876TYPE point_placement_shape_representation_item = SELECT
2877      (compound_representation_item,
2878       mapped_item,
2879       axis2_placement_3d);
2880END_TYPE;
2881
2882-- IN AP203e2/AP242
2883TYPE positive_integer = nonnegative_integer;
2884   WHERE
2885      positivity:
2886         SELF > 0;
2887END_TYPE;
2888
2889TYPE positive_length_measure = non_negative_length_measure;
2890   WHERE
2891      WR1:
2892         SELF > 0.0;
2893END_TYPE;
2894
2895TYPE positive_plane_angle_measure = plane_angle_measure;
2896   WHERE
2897      WR1:
2898         SELF > 0.0;
2899END_TYPE;
2900
2901TYPE positive_ratio_measure = ratio_measure;
2902   WHERE
2903      WR1:
2904         SELF > 0.0;
2905END_TYPE;
2906
2907-- IN AP203e2/AP242
2908TYPE power_measure = REAL;
2909END_TYPE;
2910
2911-- IN AP242
2912TYPE preferred_ordering = ENUMERATION OF
2913      (extremity_order,
2914       detected_order);
2915END_TYPE;
2916
2917TYPE preferred_surface_curve_representation = ENUMERATION OF
2918      (curve_3d,
2919       pcurve_s1,
2920       pcurve_s2);
2921END_TYPE;
2922
2923TYPE presentable_text = STRING;
2924   WHERE
2925      WR1:
2926         control_characters_free(SELF);
2927END_TYPE;
2928
2929TYPE presentation_representation_select = SELECT
2930      (presentation_representation,
2931       presentation_set);
2932END_TYPE;
2933
2934TYPE presentation_size_assignment_select = SELECT
2935      (presentation_view,
2936       presentation_area,
2937       area_in_set);
2938END_TYPE;
2939
2940-- DIFF IN AP214
2941-- DIFF IN AP203e2
2942TYPE presentation_style_select = SELECT
2943  (approximation_tolerance,					 -- AP214
2944   curve_style,							 -- Common
2945   externally_defined_style,					 -- AP214/AP242
2946   fill_area_style,						 -- Common
2947   null_style,							 -- Common
2948   point_style,							 -- Common
2949   pre_defined_presentation_style,				 -- AP214
2950   surface_style_usage,						 -- Common
2951   symbol_style,						 -- Common
2952   text_style);							 -- Common
2953END_TYPE;
2954
2955TYPE presented_item_select = SELECT
2956      (action,
2957       action_method,
2958       action_relationship,
2959       product_concept,
2960       product_concept_feature,
2961       product_concept_feature_category,
2962       product_definition,
2963       product_definition_formation,
2964       product_definition_relationship);
2965END_TYPE;
2966
2967-- IN AP203e2/AP242
2968TYPE pressure_measure = REAL;
2969END_TYPE;
2970
2971-- IN AP242
2972TYPE previous_element_assignment_select = SELECT
2973      (modify_element,
2974       delete_element);
2975END_TYPE;
2976
2977-- IN AP203e2/AP242
2978TYPE product_definition_or_assembly_relationship = SELECT
2979      (assembly_component_usage,
2980       product_definition);
2981END_TYPE;
2982
2983-- IN AP203e2/AP242
2984TYPE product_definition_or_breakdown_element_usage = SELECT
2985      (product_definition,
2986       product_definition_usage);
2987END_TYPE;
2988
2989-- IN AP203e2/AP242
2990TYPE product_definition_or_product_definition_relationship = SELECT
2991      (product_definition,
2992       product_definition_usage);
2993END_TYPE;
2994
2995-- IN AP242
2996TYPE product_definition_or_reference = SELECT
2997      (product_definition,
2998       generic_product_definition_reference);
2999END_TYPE;
3000
3001TYPE product_or_formation_or_definition = SELECT
3002      (product,
3003       product_definition_formation,
3004       product_definition);
3005END_TYPE;
3006
3007-- IN AP214
3008TYPE product_or_presentation_space = ENUMERATION OF
3009      (product_shape_space,
3010       presentation_area_space);
3011END_TYPE;
3012
3013-- IN AP242
3014TYPE product_space = SELECT
3015      (uniform_product_space,
3016       listed_product_space);
3017END_TYPE;
3018
3019-- DIFF IN AP203e2
3020TYPE project_item = SELECT
3021  (assembly_component_usage,					 -- AP214/AP242
3022   configuration_item,						 -- AP214/AP242
3023   executed_action,						 -- Common
3024   product,							 -- AP214/AP242
3025   product_concept,						 -- Common
3026   product_definition,						 -- AP214/AP242
3027   product_definition_formation);				 -- AP214/AP242
3028END_TYPE;
3029
3030-- IN AP214/AP242
3031TYPE property_or_shape_select = SELECT
3032      (property_definition,
3033       shape_definition);
3034END_TYPE;
3035
3036-- IN AP242
3037TYPE property_variable_rep_select = SELECT
3038      (dimensional_size,
3039       representation);
3040END_TYPE;
3041
3042-- IN AP242
3043TYPE radial_geometry_constraint_element = SELECT
3044      (circle,
3045       cylindrical_surface,
3046       conical_surface,
3047       spherical_surface,
3048       right_circular_cylinder,
3049       right_circular_cone,
3050       sphere);
3051END_TYPE;
3052
3053-- IN AP203e2/AP242
3054TYPE radioactivity_measure = REAL;
3055END_TYPE;
3056
3057TYPE ratio_measure = REAL;
3058END_TYPE;
3059
3060-- IN AP242
3061TYPE real_interval = SELECT
3062      (real_interval_from_min,
3063       real_interval_to_max,
3064       finite_real_interval,
3065       elementary_space);
3066   WHERE
3067      WR1:
3068         NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR (SELF\elementary_space.space_id = es_reals);
3069END_TYPE;
3070
3071TYPE rendering_properties_select = SELECT
3072      (surface_style_reflectance_ambient,
3073       surface_style_transparent);
3074END_TYPE;
3075
3076-- IN AP242
3077TYPE repackage_options = ENUMERATION OF
3078      (ro_nochange,
3079       ro_wrap_as_tuple,
3080       ro_unwrap_tuple);
3081END_TYPE;
3082
3083TYPE represented_definition = SELECT
3084      (general_property,
3085       property_definition,
3086       property_definition_relationship,
3087       shape_aspect,
3088       shape_aspect_relationship);
3089END_TYPE;
3090
3091-- DIFF IN AP203e2
3092-- IN AP203e2/AP242
3093TYPE requirement_assigned_item = SELECT
3094  (assembly_joint,						 -- AP242
3095   configuration_item,						 -- Common
3096   descriptive_representation_item,				 -- Common
3097   product,							 -- Common
3098   product_class,						 -- Common
3099   product_definition,						 -- Common
3100   product_definition_formation,				 -- Common
3101   product_definition_relationship,				 -- Common
3102   representation,						 -- Common
3103   shape_aspect);						 -- Common
3104END_TYPE;
3105
3106-- IN AP203e2/AP242
3107TYPE requirement_satisfaction_item = SELECT
3108      (requirement_assigned_item);
3109END_TYPE;
3110
3111-- IN AP203e2/AP242
3112TYPE requirement_source_item = SELECT
3113      (characterized_object,
3114       group,
3115       group_relationship,
3116       product,
3117       product_definition,
3118       product_definition_formation,
3119       product_definition_relationship,
3120       shape_aspect);
3121END_TYPE;
3122
3123-- IN AP203e2/AP242
3124TYPE resistance_measure = REAL;
3125END_TYPE;
3126
3127TYPE reversible_topology = SELECT
3128      (reversible_topology_item,
3129       list_of_reversible_topology_item,
3130       set_of_reversible_topology_item);
3131END_TYPE;
3132
3133TYPE reversible_topology_item = SELECT
3134      (edge,
3135       path,
3136       face,
3137       face_bound,
3138       closed_shell,
3139       open_shell);
3140END_TYPE;
3141
3142-- DIFF IN AP214
3143-- IN AP214/AP242
3144TYPE rigid_placement = SELECT
3145  (axis2_placement_3d,						 -- Common
3146   su_parameters);						 -- AP242
3147END_TYPE;
3148
3149TYPE role_select = SELECT
3150      (action_assignment,
3151       action_request_assignment,
3152       approval_assignment,
3153       approval_date_time,
3154       certification_assignment,
3155       contract_assignment,
3156       document_reference,
3157       effectivity_assignment,
3158       group_assignment,
3159       name_assignment,
3160       security_classification_assignment);
3161END_TYPE;
3162
3163-- IN AP214
3164TYPE rotational_range_measure = SELECT
3165      (plane_angle_measure,
3166       unlimited_range);
3167END_TYPE;
3168
3169-- IN AP203e2/AP242
3170TYPE rule_superseded_item = SELECT
3171      (product_definition_formation);
3172END_TYPE;
3173
3174TYPE second_in_minute = REAL;
3175   WHERE
3176      WR1:
3177         (0 <= SELF) AND (SELF <= 60.0);
3178END_TYPE;
3179
3180-- DIFF IN AP214
3181-- DIFF IN AP203e2
3182-- DIFF IN Deprecated AP203e1
3183TYPE security_classification_item = SELECT
3184  (action,							 -- AP214/AP242
3185   action_directive,						 -- AP214/AP242
3186   action_property,						 -- AP214/AP242
3187   applied_action_assignment,					 -- AP214/AP242
3188   assembly_component_usage,					 -- AP203e2/AP242/Deprecated AP203e1
3189   assembly_component_usage_substitute,				 -- AP214/AP242
3190   class_system,						 -- AP214/AP242
3191   configuration_design,					 -- AP214/AP242
3192   configuration_effectivity,					 -- AP214/AP242
3193   configured_effectivity_assignment,				 -- AP214/AP242
3194   document,							 -- AP203e2/AP242
3195   document_file,						 -- AP203e2/AP214/AP242
3196   draughting_model,						 -- AP214/AP242
3197   drawing_revision,						 -- AP214/AP242
3198   executed_action,						 -- AP214/AP242
3199   general_property,						 -- AP214/AP242
3200   make_from_usage_option,					 -- AP203e2/AP242
3201   material_designation,					 -- AP214/AP242
3202   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
3203   organizational_project,					 -- AP214/AP242
3204   presentation_area,						 -- AP214/AP242
3205   product,							 -- AP203e2/AP214/AP242
3206   product_concept,						 -- AP214/AP242
3207   product_concept_feature,					 -- AP214/AP242
3208   product_concept_feature_category,				 -- AP214/AP242
3209   product_definition,						 -- AP203e2/AP214/AP242
3210   product_definition_formation,				 -- Common
3211   product_definition_relationship,				 -- AP214/AP242
3212   product_definition_usage,					 -- AP203e2/AP242
3213   property_definition,						 -- AP214/AP242
3214   resource_property,						 -- AP214/AP242
3215   shape_representation,					 -- AP214/AP242
3216   versioned_action_request);					 -- AP214/AP242
3217END_TYPE;
3218
3219-- IN AP242
3220TYPE set_inner_area_boundary = SET [1:?] OF bounded_primitive_2d;
3221END_TYPE;
3222
3223-- DIFF IN AP214
3224TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item;
3225END_TYPE;
3226
3227TYPE set_representation_item = SET [1:?] OF representation_item;
3228END_TYPE;
3229
3230TYPE shading_curve_method = ENUMERATION OF
3231      (constant_colour,
3232       linear_colour);
3233END_TYPE;
3234
3235TYPE shading_surface_method = ENUMERATION OF
3236      (constant_shading,
3237       colour_shading,
3238       dot_shading,
3239       normal_shading);
3240END_TYPE;
3241
3242-- IN AP242
3243TYPE shape_data_quality_assessment_specification_select = SELECT
3244      (shape_data_quality_assessment_by_logical_test,
3245       shape_data_quality_assessment_by_numerical_test);
3246END_TYPE;
3247
3248-- IN AP242
3249TYPE shape_data_quality_value_limit_type_select = SELECT
3250      (shape_data_quality_value_range,
3251       shape_data_quality_value_limit);
3252END_TYPE;
3253
3254TYPE shape_definition = SELECT
3255      (product_definition_shape,
3256       shape_aspect,
3257       shape_aspect_relationship);
3258END_TYPE;
3259
3260-- IN AP242
3261TYPE shape_dimension_representation_item = SELECT
3262      (compound_representation_item,
3263       descriptive_representation_item,
3264       measure_representation_item,
3265       placement);
3266END_TYPE;
3267
3268-- IN AP242
3269TYPE shape_model = SELECT
3270      (constructive_geometry_representation,
3271       shape_representation);
3272END_TYPE;
3273
3274-- IN AP242
3275TYPE shape_representation_item = SELECT
3276      (geometric_representation_item,
3277       topological_representation_item);
3278END_TYPE;
3279
3280-- IN AP242
3281TYPE shape_representation_with_parameters_items = SELECT
3282      (descriptive_representation_item,
3283       direction,
3284       measure_representation_item,
3285       placement);
3286END_TYPE;
3287
3288-- DIFF IN AP214
3289TYPE shell = SELECT
3290  (closed_shell,						 -- Common
3291   open_shell,							 -- Common
3292   vertex_shell,						 -- AP203e2/AP242
3293   wire_shell);							 -- AP203e2/AP242
3294END_TYPE;
3295
3296TYPE si_prefix = ENUMERATION OF
3297      (exa,
3298       peta,
3299       tera,
3300       giga,
3301       mega,
3302       kilo,
3303       hecto,
3304       deca,
3305       deci,
3306       centi,
3307       milli,
3308       micro,
3309       nano,
3310       pico,
3311       femto,
3312       atto);
3313END_TYPE;
3314
3315-- CASE DIFF IN AP214
3316-- CASE DIFF IN AP203e2
3317TYPE si_unit_name = ENUMERATION OF
3318      (metre,
3319       gram,
3320       second,
3321       ampere,
3322       kelvin,
3323       mole,
3324       candela,
3325       radian,
3326       steradian,
3327       hertz,
3328       newton,
3329       pascal,
3330       joule,
3331       watt,
3332       coulomb,
3333       volt,
3334       farad,
3335       ohm,
3336       siemens,
3337       weber,
3338       tesla,
3339       henry,
3340       degree_Celsius,
3341       lumen,
3342       lux,
3343       becquerel,
3344       gray,
3345       sievert);
3346END_TYPE;
3347
3348-- IN AP242
3349TYPE simple_datum_reference_modifier = ENUMERATION OF
3350      (any_cross_section,
3351       any_longitudinal_section,
3352       basic,
3353       contacting_feature,
3354       degree_of_freedom_constraint_u,
3355       degree_of_freedom_constraint_v,
3356       degree_of_freedom_constraint_w,
3357       degree_of_freedom_constraint_x,
3358       degree_of_freedom_constraint_y,
3359       degree_of_freedom_constraint_z,
3360       distance_variable,
3361       free_state,
3362       least_material_requirement,
3363       line,
3364       major_diameter,
3365       maximum_material_requirement,
3366       minor_diameter,
3367       orientation,
3368       pitch_diameter,
3369       plane,
3370       point,
3371       translation);
3372END_TYPE;
3373
3374TYPE size_select = SELECT
3375      (positive_length_measure,
3376       measure_with_unit,
3377       descriptive_measure);
3378END_TYPE;
3379
3380-- DIFF IN AP203e2
3381-- IN AP203e2/AP242
3382TYPE sketch_basis_select = SELECT
3383  (curve_bounded_surface,					 -- Common
3384   face_surface,						 -- Common
3385   planar_curve_select);						 -- AP242
3386END_TYPE;
3387
3388-- IN AP242
3389TYPE sketch_element_select = SELECT
3390      (curve,
3391       point);
3392   WHERE
3393      WR1:
3394         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
3395END_TYPE;
3396
3397-- IN AP242
3398TYPE sketch_type_select = SELECT
3399      (neutral_sketch_representation,
3400       positioned_sketch,
3401       subsketch);
3402END_TYPE;
3403
3404TYPE solid_angle_measure = REAL;
3405END_TYPE;
3406
3407TYPE source = ENUMERATION OF
3408      (made,
3409       bought,
3410       not_known);
3411END_TYPE;
3412
3413-- DIFF IN AP214
3414TYPE source_item = SELECT
3415  (identifier,							 -- Common
3416   message);							 -- AP203e2/AP242
3417END_TYPE;
3418
3419-- IN AP242
3420TYPE space_constraint_type = ENUMERATION OF
3421      (sc_equal,
3422       sc_subspace,
3423       sc_member);
3424END_TYPE;
3425
3426-- IN AP214/AP242
3427TYPE spatial_rotation = SELECT
3428      (ypr_rotation,
3429       rotation_about_direction);
3430END_TYPE;
3431
3432-- IN AP214
3433TYPE specified_item = SELECT
3434      (drawing_revision);
3435END_TYPE;
3436
3437-- IN AP242
3438TYPE spherical_pair_select = SELECT
3439      (spherical_pair,
3440       spherical_pair_with_pin);
3441END_TYPE;
3442
3443-- IN AP203e2/AP242
3444TYPE start_request_item = SELECT
3445      (product_definition_formation);
3446END_TYPE;
3447
3448-- IN AP242
3449TYPE statistical_value_type = ENUMERATION OF
3450      (number_of_inspected_instances,
3451       number_of_quality_defects_detected);
3452END_TYPE;
3453
3454-- IN AP203e2/AP242
3455TYPE string_representation_item_select = SELECT
3456      (descriptive_representation_item,
3457       included_text_block,
3458       structured_text_composition);
3459END_TYPE;
3460
3461-- DIFF IN AP214
3462TYPE style_context_select = SELECT
3463  (group,							 -- Common
3464   presentation_layer_assignment,				 -- Common
3465   presentation_set,						 -- Common
3466   representation,						 -- Common
3467   representation_item,						 -- Common
3468   representation_relationship,					 -- AP203e2/AP242
3469   shape_representation_relationship);				 -- AP214
3470END_TYPE;
3471
3472-- IN AP242 DIS Fixes
3473TYPE styled_item_target = SELECT
3474      (representation_item,  -- relax select to allow existing topology usage
3475       representation);
3476END_TYPE;
3477
3478-- IN AP242
3479TYPE summary_report_type = ENUMERATION OF
3480      (unspecified,
3481       conclusion_only,
3482       number_of_quality_defects,
3483       number_of_inspections_and_conclusion,
3484       full_statistics);
3485END_TYPE;
3486
3487-- IN AP214/AP242
3488TYPE supported_item = SELECT
3489      (action_directive,
3490       action,
3491       action_method);
3492END_TYPE;
3493
3494-- IN AP242
3495TYPE surface_boundary_type = ENUMERATION OF
3496      (u_parameter_min,
3497       v_parameter_min,
3498       u_parameter_max,
3499       v_parameter_max);
3500END_TYPE;
3501
3502-- IN AP242
3503TYPE surface_model = SELECT
3504      (face_based_surface_model,
3505       shell_based_surface_model);
3506END_TYPE;
3507
3508-- IN AP242
3509TYPE surface_or_solid_model = SELECT
3510      (surface_model,
3511       solid_model);
3512END_TYPE;
3513
3514TYPE surface_side = ENUMERATION OF
3515      (positive,
3516       negative,
3517       both);
3518END_TYPE;
3519
3520-- DIFF IN AP214
3521TYPE surface_side_style_select = SELECT
3522  (pre_defined_surface_side_style,				 -- AP203e2/AP242
3523   surface_side_style);						 -- Common
3524END_TYPE;
3525
3526TYPE surface_style_element_select = SELECT
3527      (surface_style_fill_area,
3528       surface_style_boundary,
3529       surface_style_silhouette,
3530       surface_style_segmentation_curve,
3531       surface_style_control_grid,
3532       surface_style_parameter_line,
3533       surface_style_rendering);
3534END_TYPE;
3535
3536-- IN AP214
3537TYPE surface_tolerance_deviation = positive_length_measure;
3538END_TYPE;
3539
3540-- IN AP214
3541TYPE surface_tolerance_parameter = REAL;
3542END_TYPE;
3543
3544-- IN AP242
3545TYPE swept_surface_or_solid = SELECT
3546      (swept_surface,
3547       swept_face_solid,
3548       swept_area_solid);
3549END_TYPE;
3550
3551TYPE symbol_style_select = SELECT
3552      (symbol_colour);
3553END_TYPE;
3554
3555-- IN AP242
3556TYPE tangent_contact_type = ENUMERATION OF
3557      (point_contact,
3558       curve_contact,
3559       surface_contact);
3560END_TYPE;
3561
3562-- IN AP242
3563TYPE tessellated_edge_or_vertex = SELECT
3564      (tessellated_edge,
3565       tessellated_vertex);
3566END_TYPE;
3567
3568TYPE text = STRING;
3569END_TYPE;
3570
3571TYPE text_alignment = label;
3572END_TYPE;
3573
3574TYPE text_delineation = label;
3575END_TYPE;
3576
3577-- DIFF IN AP203e2
3578TYPE text_or_character = SELECT
3579  (annotation_text,						 -- Common
3580   annotation_text_character,					 -- Common
3581   composite_text,						 -- Common
3582   defined_character_glyph,					 -- AP214/AP242
3583   text_literal);						 -- Common
3584END_TYPE;
3585
3586TYPE text_path = ENUMERATION OF
3587      (left,
3588       right,
3589       up,
3590       down);
3591END_TYPE;
3592
3593-- DIFF IN AP203e2
3594TYPE text_string_representation_item = SELECT
3595  (annotation_text,						 -- Common
3596   annotation_text_character,					 -- Common
3597   axis2_placement,						 -- Common
3598   composite_text,						 -- Common
3599   defined_character_glyph,					 -- AP214/AP242
3600   text_literal);						 -- Common
3601END_TYPE;
3602
3603TYPE thermodynamic_temperature_measure = REAL;
3604END_TYPE;
3605
3606-- DIFF IN AP214
3607-- DIFF IN AP203e2
3608TYPE time_interval_item = SELECT
3609  (action,							 -- Common
3610   action_directive,						 -- AP214/AP242
3611   action_method,						 -- AP214/AP242
3612   action_property,						 -- AP214/AP242
3613   action_relationship,						 -- AP214/AP242
3614   action_request_solution,					 -- AP214/AP242
3615   alternate_product_relationship,				 -- AP214/AP242
3616   applied_action_assignment,					 -- AP214/AP242
3617   applied_classification_assignment,				 -- AP214/AP242
3618   applied_person_and_organization_assignment,			 -- AP214/AP242
3619   approval_status,						 -- AP214/AP242
3620   assembly_component_usage_substitute,				 -- AP214/AP242
3621   certification,						 -- AP214/AP242
3622   class,							 -- AP214/AP242
3623   class_system,						 -- AP214/AP242
3624   configuration_design,					 -- AP214/AP242
3625   configuration_effectivity,					 -- AP214/AP242
3626   configuration_item,						 -- AP214/AP242
3627   configured_effectivity_assignment,				 -- AP214/AP242
3628   contract,							 -- AP214/AP242
3629   document_file,						 -- AP214/AP242
3630   draughting_model,						 -- AP214/AP242
3631   drawing_revision,						 -- AP214/AP242
3632   executed_action,						 -- AP214/AP242
3633   general_property,						 -- AP214/AP242
3634   material_designation,					 -- AP214/AP242
3635   mechanical_design_geometric_presentation_representation,	 -- AP214/AP242
3636   organization_relationship,					 -- AP214/AP242
3637   organizational_project,					 -- AP214/AP242
3638   person_and_organization,					 -- AP214/AP242
3639   presentation_area,						 -- AP214/AP242
3640   product,							 -- AP214/AP242
3641   product_concept,						 -- AP214/AP242
3642   product_concept_feature,					 -- AP214/AP242
3643   product_concept_feature_association,				 -- AP214/AP242
3644   product_concept_feature_category,				 -- AP214/AP242
3645   product_concept_feature_category_usage,			 -- AP214/AP242
3646   product_definition,						 -- AP214/AP242
3647   product_definition_formation,				 -- AP214/AP242
3648   product_definition_formation_relationship,			 -- AP214/AP242
3649   product_definition_relationship,				 -- AP214/AP242
3650   product_definition_substitute,				 -- AP214/AP242
3651   property_definition,						 -- AP214/AP242
3652   requirement_for_action_resource,				 -- AP214/AP242
3653   resource_property,						 -- AP214/AP242
3654   security_classification,					 -- AP214/AP242
3655   security_classification_level,				 -- AP214/AP242
3656   shape_representation,					 -- AP214/AP242
3657   time_interval_based_effectivity,				 -- AP203e2/AP242
3658   versioned_action_request);					 -- AP214/AP242
3659END_TYPE;
3660
3661TYPE time_measure = REAL;
3662END_TYPE;
3663
3664-- IN AP214
3665TYPE tolerance_deviation_select = SELECT
3666      (curve_tolerance_deviation,
3667       surface_tolerance_deviation);
3668END_TYPE;
3669
3670-- DIFF IN AP214
3671-- DIFF IN AP203e2
3672TYPE tolerance_method_definition = SELECT
3673      (limits_and_fits,
3674       tolerance_value);
3675END_TYPE;
3676
3677-- IN AP214
3678TYPE tolerance_parameter_select = SELECT
3679      (curve_tolerance_parameter,
3680       surface_tolerance_parameter);
3681END_TYPE;
3682
3683-- IN AP214
3684TYPE tolerance_select = SELECT
3685      (approximation_tolerance_deviation,
3686       approximation_tolerance_parameter);
3687END_TYPE;
3688
3689-- IN AP242
3690TYPE tolerance_zone_target = SELECT
3691      (dimensional_location,
3692       dimensional_size,
3693       geometric_tolerance,
3694       general_datum_reference);
3695END_TYPE;
3696
3697TYPE transformation = SELECT
3698      (item_defined_transformation,
3699       functionally_defined_transformation);
3700END_TYPE;
3701
3702TYPE transition_code = ENUMERATION OF
3703      (discontinuous,
3704       continuous,
3705       cont_same_gradient,
3706       cont_same_gradient_same_curvature);
3707END_TYPE;
3708
3709-- IN AP214
3710TYPE translational_range_measure = SELECT
3711      (length_measure,
3712       unlimited_range);
3713END_TYPE;
3714
3715-- IN AP203e2/AP242
3716TYPE trim_condition_select = SELECT
3717      (length_measure,
3718       plane_angle_measure,
3719       generalized_surface_select,
3720       solid_model);
3721END_TYPE;
3722
3723-- IN AP203e2/AP242
3724TYPE trim_intent = ENUMERATION OF
3725      (blind,
3726       offset,
3727       through_all,
3728       unspecified,
3729       up_to_next);
3730END_TYPE;
3731
3732TYPE trimming_preference = ENUMERATION OF
3733      (cartesian,
3734       parameter,
3735       unspecified);
3736END_TYPE;
3737
3738TYPE trimming_select = SELECT
3739      (cartesian_point,
3740       parameter_value);
3741END_TYPE;
3742
3743-- IN AP242
3744TYPE tuple_space = SELECT
3745      (product_space,
3746       extended_tuple_space);
3747END_TYPE;
3748
3749TYPE u_direction_count = INTEGER;
3750   WHERE
3751      WR1:
3752         SELF > 1;
3753END_TYPE;
3754
3755-- IN AP242
3756TYPE u_or_v_parameter = ENUMERATION OF
3757      (u_parameter,
3758       v_parameter);
3759END_TYPE;
3760
3761TYPE unit = SELECT
3762      (derived_unit,
3763       named_unit);
3764END_TYPE;
3765
3766-- IN AP214
3767TYPE unlimited_range = ENUMERATION OF
3768      (unlimited);
3769END_TYPE;
3770
3771-- IN AP242
3772TYPE used_quality_representation_select = SELECT
3773      (data_quality_criteria_representation,
3774       data_quality_inspection_result_representation);
3775END_TYPE;
3776
3777TYPE v_direction_count = INTEGER;
3778   WHERE
3779      WR1:
3780         SELF > 1;
3781END_TYPE;
3782
3783-- IN AP242
3784TYPE value_format_type = identifier;
3785   WHERE
3786      WR1:
3787         LENGTH(SELF) <= 80;
3788END_TYPE;
3789
3790-- DIFF IN AP214
3791-- DIFF IN AP203e2
3792TYPE value_qualifier = SELECT
3793  (precision_qualifier,						 -- Common
3794   type_qualifier,						 -- Common
3795   uncertainty_qualifier,					 -- Common
3796   value_format_type_qualifier);					 -- AP242
3797END_TYPE;
3798
3799-- DIFF IN AP214
3800-- DIFF IN AP203e2
3801TYPE vector_or_direction = SELECT
3802      (direction,
3803       vector);
3804END_TYPE;
3805
3806-- IN AP203e2/AP242
3807TYPE velocity_measure = REAL;
3808END_TYPE;
3809
3810TYPE volume_measure = REAL;
3811END_TYPE;
3812
3813-- IN AP203e2/AP242
3814TYPE week_in_year_number = INTEGER;
3815   WHERE
3816      WR1:
3817         (1 <= SELF) AND (SELF <= 53);
3818END_TYPE;
3819
3820-- IN AP203e2/AP242
3821TYPE work_item = SELECT
3822      (product_definition_formation);
3823END_TYPE;
3824
3825TYPE year_number = INTEGER;
3826END_TYPE;
3827
3828-- IN AP214/AP242
3829TYPE ypr_enumeration = ENUMERATION OF
3830      (yaw,
3831       pitch,
3832       roll);
3833END_TYPE;
3834
3835-- IN AP214/AP242
3836TYPE ypr_rotation = ARRAY [ypr_index(yaw):ypr_index(roll)] OF plane_angle_measure;
3837END_TYPE;
3838
3839-- IN AP242
3840TYPE zero_or_one = nonnegative_integer;
3841   WHERE
3842      in_range:
3843         (SELF = 0) OR (SELF = 1);
3844END_TYPE;
3845
3846-- IN AP242
3847ENTITY abrupt_change_of_surface_normal
3848   SUBTYPE OF (geometry_with_local_irregularity);
3849      small_vector_tolerance : length_measure;
3850      test_point_distance_tolerance : length_measure;
3851      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
3852   WHERE
3853      WR1:
3854         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
3855      WR2:
3856         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
3857      WR3:
3858         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ]);
3859      WR4:
3860         validate_accuracy_types(SELF, []);
3861END_ENTITY;
3862
3863-- IN AP214/AP242
3864ENTITY abs_function
3865   SUBTYPE OF (unary_function_call);
3866END_ENTITY;
3867
3868-- IN AP203e2/AP242
3869ENTITY absorbed_dose_measure_with_unit
3870   SUBTYPE OF (measure_with_unit);
3871   WHERE
3872      WR1:
3873         'STEP_MERGED_CAD_SCHEMA.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
3874END_ENTITY;
3875
3876-- IN AP203e2/AP242
3877ENTITY absorbed_dose_unit
3878   SUBTYPE OF (derived_unit);
3879   WHERE
3880      WR1:
3881         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.gray);
3882END_ENTITY;
3883
3884-- IN AP203e2/AP242
3885ENTITY abstract_variable
3886   SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item);
3887END_ENTITY;
3888
3889-- IN AP242
3890ENTITY abstracted_expression_function
3891   SUBTYPE OF (maths_function, quantifier_expression);
3892   DERIVE
3893      expr : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
3894      SELF\quantifier_expression.variables : LIST [1:?] OF UNIQUE generic_variable := remove_first(SELF\multiple_arity_generic_expression.operands);
3895   WHERE
3896      WR1:
3897         SIZEOF(QUERY (operand <* SELF\multiple_arity_generic_expression.operands| NOT has_values_space(operand))) = 0;
3898END_ENTITY;
3899
3900-- IN AP203e2/AP242
3901ENTITY acceleration_measure_with_unit
3902   SUBTYPE OF (measure_with_unit);
3903   WHERE
3904      WR1:
3905         'STEP_MERGED_CAD_SCHEMA.ACCELERATION_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
3906END_ENTITY;
3907
3908-- IN AP203e2/AP242
3909ENTITY acceleration_unit
3910   SUBTYPE OF (derived_unit);
3911   WHERE
3912      WR1:
3913         derive_dimensional_exponents(SELF) = dimensional_exponents(1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0);
3914END_ENTITY;
3915
3916-- IN AP214/AP242
3917ENTITY acos_function
3918   SUBTYPE OF (unary_function_call);
3919END_ENTITY;
3920
3921ENTITY action;
3922      name : label;
3923      description : OPTIONAL text;
3924      chosen_method : action_method;
3925   DERIVE
3926      id : identifier := get_id_value(SELF);
3927   WHERE
3928      WR1:
3929         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
3930END_ENTITY;
3931
3932ENTITY action_assignment
3933   ABSTRACT SUPERTYPE;
3934      assigned_action : action;
3935   DERIVE
3936      role : object_role := get_role(SELF);
3937   WHERE
3938      WR1:
3939         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
3940END_ENTITY;
3941
3942ENTITY action_directive;
3943      name : label;
3944      description : OPTIONAL text;
3945      analysis : text;
3946      comment : text;
3947      requests : SET [1:?] OF versioned_action_request;
3948END_ENTITY;
3949
3950ENTITY action_method;
3951      name : label;
3952      description : OPTIONAL text;
3953      consequence : text;
3954      purpose : text;
3955END_ENTITY;
3956
3957-- IN AP203e2/AP242
3958ENTITY action_method_assignment
3959   ABSTRACT SUPERTYPE;
3960      assigned_action_method : action_method;
3961      role : action_method_role;
3962END_ENTITY;
3963
3964ENTITY action_method_relationship;
3965      name : label;
3966      description : OPTIONAL text;
3967      relating_method : action_method;
3968      related_method : action_method;
3969END_ENTITY;
3970
3971-- IN AP203e2/AP242
3972ENTITY action_method_role;
3973      name : label;
3974      description : OPTIONAL text;
3975END_ENTITY;
3976
3977ENTITY action_property;
3978      name : label;
3979      description : text;
3980      definition : characterized_action_definition;
3981END_ENTITY;
3982
3983ENTITY action_property_representation;
3984      name : label;
3985      description : text;
3986      property : action_property;
3987      representation : representation;
3988END_ENTITY;
3989
3990ENTITY action_relationship;
3991      name : label;
3992      description : OPTIONAL text;
3993      relating_action : action;
3994      related_action : action;
3995END_ENTITY;
3996
3997ENTITY action_request_assignment
3998   ABSTRACT SUPERTYPE;
3999      assigned_action_request : versioned_action_request;
4000   DERIVE
4001      role : object_role := get_role(SELF);
4002   WHERE
4003      WR1:
4004         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
4005END_ENTITY;
4006
4007ENTITY action_request_solution;
4008      method : action_method;
4009      request : versioned_action_request;
4010   DERIVE
4011      description : text := get_description_value(SELF);
4012      name : label := get_name_value(SELF);
4013   WHERE
4014      WR1:
4015         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
4016      WR2:
4017         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
4018END_ENTITY;
4019
4020ENTITY action_request_status;
4021      status : label;
4022      assigned_request : versioned_action_request;
4023END_ENTITY;
4024
4025-- IN AP214/AP242
4026ENTITY action_resource;
4027      name : label;
4028      description : OPTIONAL text;
4029      usage : SET [1:?] OF supported_item;
4030      kind : action_resource_type;
4031END_ENTITY;
4032
4033-- CASE DIFF IN AP214
4034-- IN AP214/AP242
4035ENTITY action_resource_requirement;
4036      name : label;
4037      description : text;
4038      kind : resource_requirement_type;
4039      operations : SET [1:?] OF characterized_action_definition;
4040END_ENTITY;
4041
4042-- IN AP214/AP242
4043ENTITY action_resource_type;
4044      name : label;
4045END_ENTITY;
4046
4047ENTITY action_status;
4048      status : label;
4049      assigned_action : executed_action;
4050END_ENTITY;
4051
4052-- IN AP242
4053ENTITY actuated_kinematic_pair
4054   SUBTYPE OF (kinematic_pair);
4055      t_x : OPTIONAL actuated_direction;
4056      t_y : OPTIONAL actuated_direction;
4057      t_z : OPTIONAL actuated_direction;
4058      r_x : OPTIONAL actuated_direction;
4059      r_y : OPTIONAL actuated_direction;
4060      r_z : OPTIONAL actuated_direction;
4061END_ENTITY;
4062
4063-- IN AP242
4064ENTITY add_element
4065   SUBTYPE OF (change_element);
4066END_ENTITY;
4067
4068ENTITY address;
4069      internal_location : OPTIONAL label;
4070      street_number : OPTIONAL label;
4071      street : OPTIONAL label;
4072      postal_box : OPTIONAL label;
4073      town : OPTIONAL label;
4074      region : OPTIONAL label;
4075      postal_code : OPTIONAL label;
4076      country : OPTIONAL label;
4077      facsimile_number : OPTIONAL label;
4078      telephone_number : OPTIONAL label;
4079      electronic_mail_address : OPTIONAL label;
4080      telex_number : OPTIONAL label;
4081   DERIVE
4082      name : label := get_name_value(SELF);
4083      url : identifier := get_id_value(SELF);
4084   WHERE
4085      WR1:
4086         ((((((((((EXISTS(internal_location) OR EXISTS(street_number)) OR EXISTS(street)) OR EXISTS(postal_box)) OR EXISTS(town)) OR EXISTS(region)) OR EXISTS(postal_code)) OR EXISTS(country)) OR EXISTS(facsimile_number)) OR EXISTS(telephone_number)) OR EXISTS(electronic_mail_address)) OR EXISTS(telex_number);
4087END_ENTITY;
4088
4089ENTITY advanced_brep_shape_representation
4090   SUBTYPE OF (shape_representation);
4091   WHERE
4092      WR1:
4093         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.FACETED_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
4094      WR2:
4095         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
4096      WR3:
4097         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fcs)))) = 0))) = 0))) = 0;
4098      WR4:
4099         SIZEOF(QUERY (msb <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
4100      WR5:
4101         SIZEOF(QUERY (brv <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation)) = 0))) = 0;
4102      WR6:
4103         SIZEOF(QUERY (mi <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
4104END_ENTITY;
4105
4106ENTITY advanced_face
4107   SUBTYPE OF (face_surface);
4108   WHERE
4109      WR1:
4110         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.ELEMENTARY_SURFACE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.SWEPT_SURFACE' ] * TYPEOF(face_geometry)) = 1;
4111      WR2:
4112         SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element)))) = 0))) = 0;
4113      WR3:
4114         SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0;
4115      WR4:
4116         SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT ((('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe\edge.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe\edge.edge_end)) AND ('STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))))) = 0))) = 0;
4117      WR5:
4118         SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound)))) = 0;
4119      WR6:
4120         NOT ('STEP_MERGED_CAD_SCHEMA.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ] * TYPEOF(face_geometry\swept_surface.swept_curve)) = 1);
4121      WR7:
4122         SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))))) = 0;
4123      WR8:
4124         SIZEOF(QUERY (bnd <* bounds| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP', 'STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnd.bound)) = 1))) = 0;
4125      WR9:
4126         SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(QUERY (sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(sc_ag)))) = 0))) = 0))) = 0;
4127      WR10:
4128         (NOT ('STEP_MERGED_CAD_SCHEMA.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR (NOT ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(face_geometry\swept_surface.swept_curve)) OR (SIZEOF(face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3))) = 0))) = 0);
4129END_ENTITY;
4130
4131-- IN AP242
4132ENTITY agc_with_dimension
4133   SUBTYPE OF (angle_geometric_constraint);
4134      angle_value : plane_angle_measure;
4135END_ENTITY;
4136
4137-- IN AP242
4138ENTITY all_around_shape_aspect
4139   SUBTYPE OF (continuous_shape_aspect);
4140END_ENTITY;
4141
4142-- CASE DIFF IN AP214
4143ENTITY alternate_product_relationship;
4144      name : label;
4145      definition : OPTIONAL text;
4146      alternate : product;
4147      base : product;
4148      basis : text;
4149   UNIQUE
4150      UR1 : alternate, base;
4151   WHERE
4152      WR1:
4153         alternate :<>: base;
4154END_ENTITY;
4155
4156ENTITY amount_of_substance_measure_with_unit
4157   SUBTYPE OF (measure_with_unit);
4158   WHERE
4159      WR1:
4160         'STEP_MERGED_CAD_SCHEMA.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
4161END_ENTITY;
4162
4163ENTITY amount_of_substance_unit
4164   SUBTYPE OF (named_unit);
4165   WHERE
4166      WR1:
4167         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
4168END_ENTITY;
4169
4170-- IN AP214/AP242
4171ENTITY and_expression
4172   SUBTYPE OF (multiple_arity_boolean_expression);
4173END_ENTITY;
4174
4175-- IN AP242
4176ENTITY angle_assembly_constraint_with_dimension
4177   SUBTYPE OF (binary_assembly_constraint, agc_with_dimension);
4178END_ENTITY;
4179
4180-- IN AP203e2/AP242
4181ENTITY angle_direction_reference
4182   SUBTYPE OF (representation_item_relationship, geometric_representation_item);
4183      SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select;
4184      SELF\representation_item_relationship.relating_representation_item : orientation_basis_select;
4185   WHERE
4186      WR1:
4187         ('STEP_MERGED_CAD_SCHEMA.POINT_PATH' IN TYPEOF(related_representation_item)) AND ('STEP_MERGED_CAD_SCHEMA.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item)) OR NOT ('STEP_MERGED_CAD_SCHEMA.POINT_PATH' IN TYPEOF(related_representation_item)) AND ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item));
4188END_ENTITY;
4189
4190-- IN AP242
4191ENTITY angle_geometric_constraint
4192   SUBTYPE OF (explicit_geometric_constraint);
4193      SELF\explicit_constraint.constrained_elements : SET [1:?] OF linear_geometry_constraint_element;
4194      SELF\explicit_constraint.reference_elements : SET [0:1] OF linear_geometry_constraint_element;
4195   WHERE
4196      WR1:
4197         (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR ('STEP_MERGED_CAD_SCHEMA.AGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
4198END_ENTITY;
4199
4200ENTITY angular_dimension
4201   SUBTYPE OF (dimension_curve_directed_callout);
4202END_ENTITY;
4203
4204ENTITY angular_location
4205   SUBTYPE OF (dimensional_location);
4206      angle_selection : angle_relator;
4207END_ENTITY;
4208
4209ENTITY angular_size
4210   SUBTYPE OF (dimensional_size);
4211      angle_selection : angle_relator;
4212END_ENTITY;
4213
4214ENTITY angularity_tolerance
4215   SUBTYPE OF (geometric_tolerance_with_datum_reference);
4216END_ENTITY;
4217
4218-- DIFF IN AP214
4219-- DIFF IN AP203e2
4220ENTITY annotation_curve_occurrence
4221   SUPERTYPE OF (ONEOF(dimension_curve, leader_curve, projection_curve))
4222   SUBTYPE OF (annotation_occurrence);
4223      SELF\styled_item.item : curve_or_curve_set;
4224END_ENTITY;
4225
4226ENTITY annotation_fill_area
4227   SUBTYPE OF (geometric_representation_item);
4228      boundaries : SET [1:?] OF curve;
4229   WHERE
4230      WR1:
4231         (SELF\geometric_representation_item.dim = 3) OR (SIZEOF(QUERY (curve <* SELF.boundaries| NOT ((((('STEP_MERGED_CAD_SCHEMA.CIRCLE' IN TYPEOF(curve)) OR ('STEP_MERGED_CAD_SCHEMA.ELLIPSE' IN TYPEOF(curve))) OR ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(curve)) AND (curve\b_spline_curve.closed_curve = TRUE)) OR ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(curve)) AND (curve\composite_curve.closed_curve = TRUE)) OR ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(curve)) AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = curve\polyline.points[HIINDEX(curve\polyline.points)])))) = 0);
4232END_ENTITY;
4233
4234ENTITY annotation_fill_area_occurrence
4235   SUBTYPE OF (annotation_occurrence);
4236      fill_style_target : point;
4237      SELF\styled_item.item : annotation_fill_area;
4238END_ENTITY;
4239
4240-- DIFF IN AP214
4241-- DIFF IN AP203e2
4242ENTITY annotation_occurrence
4243   SUPERTYPE OF (ONEOF(annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence) ANDOR ONEOF(annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_plane, annotation_symbol_occurrence, annotation_text_occurrence, tessellated_annotation_occurrence))
4244   SUBTYPE OF (styled_item);
4245   WHERE
4246      WR1:
4247         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
4248      WR2:
4249         SIZEOF(QUERY (reps <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0;
4250END_ENTITY;
4251
4252ENTITY annotation_occurrence_associativity
4253   SUBTYPE OF (annotation_occurrence_relationship);
4254   WHERE
4255      WR1:
4256         SIZEOF(TYPEOF(SELF.related_annotation_occurrence) * [ 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE', 'STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' ]) = 1;
4257END_ENTITY;
4258
4259ENTITY annotation_occurrence_relationship;
4260      name : label;
4261      description : text;
4262      relating_annotation_occurrence : annotation_occurrence;
4263      related_annotation_occurrence : annotation_occurrence;
4264END_ENTITY;
4265
4266ENTITY annotation_plane
4267   SUBTYPE OF (annotation_occurrence, geometric_representation_item);
4268      elements : OPTIONAL SET [1:?] OF annotation_plane_element;
4269      SELF\styled_item.item : plane_or_planar_box;
4270   WHERE
4271      WR1:
4272         SELF\geometric_representation_item.dim = 3;
4273      WR2:
4274         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement));
4275      WR3:
4276         ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1])) OR ('STEP_MERGED_CAD_SCHEMA.' + 'PLANE' IN TYPEOF(SELF\styled_item.item)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]));
4277      WR4:
4278         (SIZEOF(SELF\styled_item.styles) = 1) AND (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1);
4279END_ENTITY;
4280
4281ENTITY annotation_subfigure_occurrence
4282   SUBTYPE OF (annotation_symbol_occurrence);
4283   WHERE
4284      WR1:
4285         SIZEOF(QUERY (sty <* SELF.styles| NOT (SIZEOF(sty.styles) = 1))) = 0;
4286      WR2:
4287         SIZEOF(QUERY (sty <* SELF.styles| NOT ('STEP_MERGED_CAD_SCHEMA.NULL_STYLE' IN TYPEOF(sty.styles[1])))) = 0;
4288      WR3:
4289         'STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item);
4290      WR4:
4291         'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation);
4292END_ENTITY;
4293
4294ENTITY annotation_symbol
4295   SUBTYPE OF (mapped_item);
4296      SELF\mapped_item.mapping_source : symbol_representation_map;
4297      SELF\mapped_item.mapping_target : symbol_target;
4298   WHERE
4299      WR1:
4300         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
4301END_ENTITY;
4302
4303ENTITY annotation_symbol_occurrence
4304   SUBTYPE OF (annotation_occurrence);
4305      SELF\styled_item.item : annotation_symbol_occurrence_item;
4306END_ENTITY;
4307
4308ENTITY annotation_text
4309   SUBTYPE OF (mapped_item);
4310      SELF\mapped_item.mapping_target : axis2_placement;
4311   WHERE
4312      WR1:
4313         'STEP_MERGED_CAD_SCHEMA.TEXT_STRING_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
4314      WR2:
4315         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
4316END_ENTITY;
4317
4318ENTITY annotation_text_character
4319   SUBTYPE OF (mapped_item);
4320      alignment : text_alignment;
4321      SELF\mapped_item.mapping_target : axis2_placement;
4322   WHERE
4323      WR1:
4324         'STEP_MERGED_CAD_SCHEMA.CHARACTER_GLYPH_SYMBOL' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
4325      WR2:
4326         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
4327END_ENTITY;
4328
4329ENTITY annotation_text_occurrence
4330   SUBTYPE OF (annotation_occurrence);
4331      SELF\styled_item.item : annotation_text_occurrence_item;
4332END_ENTITY;
4333
4334ENTITY apex
4335   SUBTYPE OF (derived_shape_aspect);
4336END_ENTITY;
4337
4338ENTITY application_context;
4339      application : label;
4340   DERIVE
4341      description : text := get_description_value(SELF);
4342      id : identifier := get_id_value(SELF);
4343   INVERSE
4344      context_elements : SET [1:?] OF application_context_element FOR frame_of_reference;
4345   WHERE
4346      WR1:
4347         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
4348      WR2:
4349         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
4350END_ENTITY;
4351
4352ENTITY application_context_element
4353   SUPERTYPE OF (ONEOF(product_concept_context, product_context, product_definition_context));
4354      name : label;
4355      frame_of_reference : application_context;
4356END_ENTITY;
4357
4358-- IN AP214
4359ENTITY application_context_relationship;
4360      name : label;
4361      description : OPTIONAL text;
4362      relating_context : application_context;
4363      related_context : application_context;
4364END_ENTITY;
4365
4366-- IN AP242
4367ENTITY application_defined_function
4368   SUBTYPE OF (maths_function);
4369      explicit_domain : tuple_space;
4370      explicit_range : tuple_space;
4371      parameters : LIST [0:?] OF maths_value;
4372   WHERE
4373      WR1:
4374         expression_is_constant(explicit_domain);
4375      WR2:
4376         expression_is_constant(explicit_range);
4377END_ENTITY;
4378
4379ENTITY application_protocol_definition;
4380      status : label;
4381      application_interpreted_model_schema_name : label;
4382      application_protocol_year : year_number;
4383      application : application_context;
4384END_ENTITY;
4385
4386ENTITY applied_action_assignment
4387   SUBTYPE OF (action_assignment);
4388      items : SET [1:?] OF action_item;
4389END_ENTITY;
4390
4391-- IN AP203e2/AP242
4392ENTITY applied_action_method_assignment
4393   SUBTYPE OF (action_method_assignment);
4394      items : SET [1:?] OF action_method_items;
4395END_ENTITY;
4396
4397ENTITY applied_action_request_assignment
4398   SUBTYPE OF (action_request_assignment);
4399      items : SET [1:?] OF action_request_item;
4400END_ENTITY;
4401
4402ENTITY applied_approval_assignment
4403   SUBTYPE OF (approval_assignment);
4404      items : SET [1:?] OF approval_item;
4405END_ENTITY;
4406
4407-- IN AP214/AP242
4408ENTITY applied_area
4409   SUBTYPE OF (shape_aspect);
4410   WHERE
4411      WR1:
4412         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape);
4413      WR2:
4414         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
4415      WR3:
4416         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT ((2 <= SIZEOF(impl_rep.used_representation.items)) AND (SIZEOF(impl_rep.used_representation.items) <= 3)))) = 0))) = 0;
4417      WR4:
4418         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| NOT (srwp_i.name IN [ 'orientation', 'effective length', 'maximum length' ]))) > 0))) = 0))) = 0;
4419      WR5:
4420         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'effective length'))) = 1))) = 0))) <= 1;
4421      WR6:
4422         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'maximum length'))) <= 1))) = 0))) = 0;
4423      WR7:
4424         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
4425END_ENTITY;
4426
4427-- IN AP203e2/AP242
4428ENTITY applied_attribute_classification_assignment
4429   SUBTYPE OF (attribute_classification_assignment);
4430      items : SET [1:?] OF attribute_classification_item;
4431      SELF\attribute_classification_assignment.assigned_class : class;
4432END_ENTITY;
4433
4434ENTITY applied_certification_assignment
4435   SUBTYPE OF (certification_assignment);
4436      items : SET [1:?] OF certification_item;
4437END_ENTITY;
4438
4439ENTITY applied_classification_assignment
4440   SUBTYPE OF (classification_assignment);
4441      items : SET [1:?] OF classification_item;
4442END_ENTITY;
4443
4444ENTITY applied_contract_assignment
4445   SUBTYPE OF (contract_assignment);
4446      items : SET [1:?] OF contract_item;
4447END_ENTITY;
4448
4449ENTITY applied_date_and_time_assignment
4450   SUBTYPE OF (date_and_time_assignment);
4451      items : SET [1:?] OF date_and_time_item;
4452END_ENTITY;
4453
4454ENTITY applied_date_assignment
4455   SUBTYPE OF (date_assignment);
4456      items : SET [1:?] OF date_item;
4457END_ENTITY;
4458
4459ENTITY applied_document_reference
4460   SUBTYPE OF (document_reference);
4461      items : SET [1:?] OF document_reference_item;
4462END_ENTITY;
4463
4464ENTITY applied_document_usage_constraint_assignment
4465   SUBTYPE OF (document_usage_constraint_assignment);
4466      items : SET [1:?] OF document_reference_item;
4467END_ENTITY;
4468
4469ENTITY applied_effectivity_assignment
4470   SUBTYPE OF (effectivity_assignment);
4471      items : SET [1:?] OF effectivity_item;
4472END_ENTITY;
4473
4474ENTITY applied_event_occurrence_assignment
4475   SUBTYPE OF (event_occurrence_assignment);
4476      items : SET [1:?] OF event_occurrence_item;
4477END_ENTITY;
4478
4479ENTITY applied_external_identification_assignment
4480   SUBTYPE OF (external_identification_assignment);
4481      items : SET [1:?] OF external_identification_item;
4482END_ENTITY;
4483
4484-- DIFF IN AP214
4485ENTITY applied_group_assignment
4486   SUBTYPE OF (group_assignment);
4487      items : SET [1:?] OF groupable_item;
4488END_ENTITY;
4489
4490ENTITY applied_identification_assignment
4491   SUBTYPE OF (identification_assignment);
4492      items : SET [1:?] OF identification_item;
4493END_ENTITY;
4494
4495-- IN AP214/AP242
4496ENTITY applied_ineffectivity_assignment
4497   SUBTYPE OF (effectivity_assignment);
4498      items : SET [1:?] OF effectivity_item;
4499   WHERE
4500      WR1:
4501         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LOT_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.SERIAL_NUMBERED_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_EFFECTIVITY' ] * TYPEOF(SELF.assigned_effectivity)) = 0;
4502END_ENTITY;
4503
4504-- DIFF IN AP214
4505ENTITY applied_name_assignment
4506   SUBTYPE OF (name_assignment);
4507      item : name_item;
4508END_ENTITY;
4509
4510ENTITY applied_organization_assignment
4511   SUBTYPE OF (organization_assignment);
4512      items : SET [1:?] OF organization_item;
4513END_ENTITY;
4514
4515ENTITY applied_organizational_project_assignment
4516   SUBTYPE OF (organizational_project_assignment);
4517      items : SET [1:?] OF project_item;
4518END_ENTITY;
4519
4520ENTITY applied_person_and_organization_assignment
4521   SUBTYPE OF (person_and_organization_assignment);
4522      items : SET [1:?] OF person_and_organization_item;
4523END_ENTITY;
4524
4525ENTITY applied_presented_item
4526   SUBTYPE OF (presented_item);
4527      items : SET [1:?] OF presented_item_select;
4528END_ENTITY;
4529
4530ENTITY applied_security_classification_assignment
4531   SUBTYPE OF (security_classification_assignment);
4532      items : SET [1:?] OF security_classification_item;
4533END_ENTITY;
4534
4535-- DIFF IN AP203e2
4536-- IN AP203e2/AP214
4537ENTITY applied_time_interval_assignment
4538   SUBTYPE OF (time_interval_assignment);
4539      items : SET [1:?] OF time_interval_item;
4540END_ENTITY;
4541
4542-- IN AP203e2/AP242
4543ENTITY applied_usage_right
4544   SUBTYPE OF (applied_action_assignment);
4545      SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item;
4546END_ENTITY;
4547
4548ENTITY approval;
4549      status : approval_status;
4550      level : label;
4551END_ENTITY;
4552
4553ENTITY approval_assignment
4554   ABSTRACT SUPERTYPE;
4555      assigned_approval : approval;
4556   DERIVE
4557      role : object_role := get_role(SELF);
4558   WHERE
4559      WR1:
4560         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
4561END_ENTITY;
4562
4563ENTITY approval_date_time;
4564      date_time : date_time_select;
4565      dated_approval : approval;
4566   DERIVE
4567      role : object_role := get_role(SELF);
4568   WHERE
4569      WR1:
4570         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
4571END_ENTITY;
4572
4573ENTITY approval_person_organization;
4574      person_organization : person_organization_select;
4575      authorized_approval : approval;
4576      role : approval_role;
4577END_ENTITY;
4578
4579ENTITY approval_relationship;
4580      name : label;
4581      description : OPTIONAL text;
4582      relating_approval : approval;
4583      related_approval : approval;
4584END_ENTITY;
4585
4586ENTITY approval_role;
4587      role : label;
4588   DERIVE
4589      description : text := get_description_value(SELF);
4590   WHERE
4591      WR1:
4592         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
4593END_ENTITY;
4594
4595ENTITY approval_status;
4596      name : label;
4597END_ENTITY;
4598
4599-- IN AP214
4600ENTITY approximation_tolerance
4601   SUBTYPE OF (founded_item);
4602      tolerance : tolerance_select;
4603END_ENTITY;
4604
4605-- IN AP214
4606ENTITY approximation_tolerance_deviation
4607   SUBTYPE OF (founded_item);
4608      tessellation_type : approximation_method;
4609      tolerances : SET [1:2] OF tolerance_deviation_select;
4610      definition_space : product_or_presentation_space;
4611   WHERE
4612      wr1:
4613         (HIINDEX(SELF.tolerances) = 1) XOR (TYPEOF(SELF.tolerances[1]) <> TYPEOF(SELF.tolerances[2]));
4614END_ENTITY;
4615
4616-- IN AP214
4617ENTITY approximation_tolerance_parameter
4618   SUBTYPE OF (founded_item);
4619      tolerances : SET [1:2] OF tolerance_parameter_select;
4620   WHERE
4621      wr1:
4622         (HIINDEX(SELF.tolerances) = 1) XOR (TYPEOF(SELF.tolerances[1]) <> TYPEOF(SELF.tolerances[2]));
4623END_ENTITY;
4624
4625ENTITY area_in_set;
4626      area : presentation_area;
4627      in_set : presentation_set;
4628END_ENTITY;
4629
4630ENTITY area_measure_with_unit
4631   SUBTYPE OF (measure_with_unit);
4632   WHERE
4633      WR1:
4634         'STEP_MERGED_CAD_SCHEMA.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
4635END_ENTITY;
4636
4637ENTITY area_unit
4638   SUBTYPE OF (derived_unit);
4639   WHERE
4640      WR1:
4641         derive_dimensional_exponents(SELF) = dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
4642END_ENTITY;
4643
4644-- IN AP242
4645ENTITY area_with_outer_boundary
4646   SUBTYPE OF (half_space_2d);
4647      SELF\half_space_2d.base_curve : composite_curve;
4648   WHERE
4649      WR1:
4650         base_curve\composite_curve.closed_curve = TRUE;
4651END_ENTITY;
4652
4653-- IN AP242
4654ENTITY array_placement_group
4655   SUPERTYPE OF (ONEOF(linear_array_placement_group_component, rectangular_array_placement_group_component))
4656   SUBTYPE OF (assembly_group_component);
4657END_ENTITY;
4658
4659-- IN AP214/AP242
4660ENTITY asin_function
4661   SUBTYPE OF (unary_function_call);
4662END_ENTITY;
4663
4664-- IN AP242
4665ENTITY assembly_bond_definition
4666   SUBTYPE OF (shape_aspect);
4667   UNIQUE
4668      UR1 : SELF\shape_aspect.name;
4669END_ENTITY;
4670
4671-- IN AP242
4672ENTITY assembly_component
4673   SUBTYPE OF (component_definition, product_definition_shape);
4674   DERIVE
4675      SELF\property_definition.definition : assembly_component := SELF;
4676   WHERE
4677      WR1:
4678         NOT EXISTS(SELF\property_definition.description);
4679END_ENTITY;
4680
4681-- DIFF IN AP214
4682-- DIFF IN AP203e2
4683ENTITY assembly_component_usage
4684   SUPERTYPE OF (quantified_assembly_component_usage ANDOR ONEOF(multi_level_reference_designator, next_assembly_usage_occurrence, promissory_usage_occurrence, specified_higher_usage_occurrence))
4685   SUBTYPE OF (product_definition_usage);
4686      reference_designator : OPTIONAL identifier;
4687END_ENTITY;
4688
4689-- CASE DIFF IN AP214
4690ENTITY assembly_component_usage_substitute;
4691      name : label;
4692      definition : OPTIONAL text;
4693      base : assembly_component_usage;
4694      substitute : assembly_component_usage;
4695   UNIQUE
4696      UR1 : base, substitute;
4697   WHERE
4698      WR1:
4699         base.relating_product_definition :=: substitute.relating_product_definition;
4700      WR2:
4701         base :<>: substitute;
4702END_ENTITY;
4703
4704-- IN AP242
4705ENTITY assembly_geometric_constraint
4706   ABSTRACT SUPERTYPE OF (ONEOF(binary_assembly_constraint, fixed_constituent_assembly_constraint))
4707   SUBTYPE OF (explicit_constraint);
4708END_ENTITY;
4709
4710-- IN AP242
4711ENTITY assembly_group_component
4712   SUBTYPE OF (assembly_component);
4713END_ENTITY;
4714
4715-- IN AP242
4716ENTITY assembly_group_component_definition_placement_link
4717   SUBTYPE OF (product_definition, product_definition_relationship);
4718      SELF\product_definition_relationship.related_product_definition : assembly_component;
4719      SELF\product_definition_relationship.relating_product_definition : assembly_component;
4720   WHERE
4721      WR1:
4722         SELF\product_definition_relationship.related_product_definition :<>: SELF\product_definition_relationship.relating_product_definition;
4723      WR2:
4724         acyclic_product_definition_relationship(SELF, [ SELF\product_definition_relationship.related_product_definition ], 'STEP_MERGED_CAD_SCHEMA.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK');
4725END_ENTITY;
4726
4727-- IN AP242
4728ENTITY assembly_joint
4729   SUBTYPE OF (component_feature_joint);
4730   WHERE
4731      WR1:
4732         acyclic_shape_aspect_relationship(SELF, [ SELF\shape_aspect_relationship.related_shape_aspect ], 'STEP_MERGED_CAD_SCHEMA.' + 'ASSEMBLY_JOINT');
4733END_ENTITY;
4734
4735-- IN AP203e2/AP242
4736ENTITY assigned_requirement
4737   SUBTYPE OF (group_assignment);
4738      items : SET [1:1] OF product_definition;
4739      SELF\group_assignment.assigned_group : requirement_assignment;
4740END_ENTITY;
4741
4742-- IN AP214/AP242
4743ENTITY atan_function
4744   SUBTYPE OF (binary_function_call);
4745END_ENTITY;
4746
4747-- IN AP242
4748ENTITY atom_based_literal
4749   SUBTYPE OF (generic_literal);
4750      lit_value : atom_based_value;
4751END_ENTITY;
4752
4753-- IN AP203e2/AP242
4754ENTITY atomic_formula
4755   SUBTYPE OF (compound_representation_item);
4756END_ENTITY;
4757
4758-- IN AP203e2/AP242
4759ENTITY attribute_assertion
4760   SUBTYPE OF (fact_type, property_definition_representation, representation);
4761END_ENTITY;
4762
4763ENTITY attribute_classification_assignment
4764   ABSTRACT SUPERTYPE;
4765      assigned_class : group;
4766      attribute_name : label;
4767      role : classification_role;
4768END_ENTITY;
4769
4770-- DIFF IN AP214
4771ENTITY attribute_language_assignment
4772   SUBTYPE OF (attribute_classification_assignment);
4773      items : SET [1:?] OF attribute_language_item;
4774      SELF\attribute_classification_assignment.assigned_class : language;
4775   WHERE
4776      WR1:
4777         SELF\attribute_classification_assignment.role.name IN [ 'primary', 'translated' ];
4778      WR2:
4779         SELF\attribute_classification_assignment.attribute_name <> '';
4780END_ENTITY;
4781
4782ENTITY attribute_value_assignment
4783   ABSTRACT SUPERTYPE;
4784      attribute_name : label;
4785      attribute_value : attribute_type;
4786      role : attribute_value_role;
4787END_ENTITY;
4788
4789ENTITY attribute_value_role;
4790      name : label;
4791      description : OPTIONAL text;
4792END_ENTITY;
4793
4794-- IN AP203e2/AP242
4795ENTITY auxiliary_geometric_representation_item
4796   SUBTYPE OF (geometric_representation_item, variational_representation_item);
4797END_ENTITY;
4798
4799ENTITY axis1_placement
4800   SUBTYPE OF (placement);
4801      axis : OPTIONAL direction;
4802   DERIVE
4803      z : direction := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0, 1.0 ]));
4804   WHERE
4805      WR1:
4806         SELF\geometric_representation_item.dim = 3;
4807END_ENTITY;
4808
4809ENTITY axis2_placement_2d
4810   SUBTYPE OF (placement);
4811      ref_direction : OPTIONAL direction;
4812   DERIVE
4813      p : LIST [2:2] OF direction := build_2axes(ref_direction);
4814   WHERE
4815      WR1:
4816         SELF\geometric_representation_item.dim = 2;
4817END_ENTITY;
4818
4819ENTITY axis2_placement_3d
4820   SUBTYPE OF (placement);
4821      axis : OPTIONAL direction;
4822      ref_direction : OPTIONAL direction;
4823   DERIVE
4824      p : LIST [3:3] OF direction := build_axes(axis, ref_direction);
4825   WHERE
4826      WR1:
4827         SELF\placement.location.dim = 3;
4828      WR2:
4829         NOT EXISTS(axis) OR (axis.dim = 3);
4830      WR3:
4831         NOT EXISTS(ref_direction) OR (ref_direction.dim = 3);
4832      WR4:
4833         (NOT EXISTS(axis) OR NOT EXISTS(ref_direction)) OR (cross_product(axis, ref_direction).magnitude > 0.0);
4834END_ENTITY;
4835
4836-- IN AP242
4837ENTITY b_spline_basis
4838   SUBTYPE OF (maths_function, generic_literal);
4839      degree : nonnegative_integer;
4840      repeated_knots : LIST [2:?] OF REAL;
4841   DERIVE
4842      num_basis : positive_integer := SIZEOF(repeated_knots) - order;
4843      order : positive_integer := degree + 1;
4844   WHERE
4845      WR1:
4846         num_basis >= order;
4847      WR2:
4848         nondecreasing(repeated_knots);
4849      WR3:
4850         repeated_knots[order] < repeated_knots[(num_basis + 1)];
4851END_ENTITY;
4852
4853-- DIFF IN AP214
4854ENTITY b_spline_curve
4855   SUPERTYPE OF (ONEOF(uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)
4856   SUBTYPE OF (bounded_curve);
4857      degree : INTEGER;
4858      control_points_list : LIST [2:?] OF cartesian_point;
4859      curve_form : b_spline_curve_form;
4860      closed_curve : LOGICAL;
4861      self_intersect : LOGICAL;
4862   DERIVE
4863      control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list, 0, upper_index_on_control_points);
4864      upper_index_on_control_points : INTEGER := SIZEOF(control_points_list) - 1;
4865   WHERE
4866      WR1:
4867         ((('STEP_MERGED_CAD_SCHEMA.UNIFORM_CURVE' IN TYPEOF(SELF)) OR ('STEP_MERGED_CAD_SCHEMA.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF))) OR ('STEP_MERGED_CAD_SCHEMA.BEZIER_CURVE' IN TYPEOF(SELF))) OR ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(SELF));
4868END_ENTITY;
4869
4870-- IN AP242
4871ENTITY b_spline_curve_knot_locator
4872   SUBTYPE OF (founded_item);
4873      basis_curve : b_spline_curve;
4874      knot_index : INTEGER;
4875   WHERE
4876      WR1:
4877         SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
4878END_ENTITY;
4879
4880-- IN AP242
4881ENTITY b_spline_curve_segment
4882   SUBTYPE OF (founded_item);
4883      basis_curve : b_spline_curve;
4884      start_knot_index : INTEGER;
4885   WHERE
4886      WR1:
4887         SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
4888END_ENTITY;
4889
4890ENTITY b_spline_curve_with_knots
4891   SUBTYPE OF (b_spline_curve);
4892      knot_multiplicities : LIST [2:?] OF INTEGER;
4893      knots : LIST [2:?] OF parameter_value;
4894      knot_spec : knot_type;
4895   DERIVE
4896      upper_index_on_knots : INTEGER := SIZEOF(knots);
4897   WHERE
4898      WR1:
4899         constraints_param_b_spline(degree, upper_index_on_knots, upper_index_on_control_points, knot_multiplicities, knots);
4900      WR2:
4901         SIZEOF(knot_multiplicities) = upper_index_on_knots;
4902END_ENTITY;
4903
4904-- IN AP242
4905ENTITY b_spline_function
4906   SUBTYPE OF (maths_function, unary_generic_expression);
4907      basis : LIST [1:?] OF b_spline_basis;
4908      SELF\unary_generic_expression.operand : maths_function;
4909   DERIVE
4910      coef : maths_function := SELF\unary_generic_expression.operand;
4911   WHERE
4912      WR1:
4913         function_is_table(coef);
4914      WR2:
4915         (space_dimension(coef.range) = 1) AND (number_superspace_of(factor1(coef.range)) = the_reals);
4916      WR3:
4917         SIZEOF(basis) <= SIZEOF(shape_of_array(coef));
4918      WR4:
4919         compare_basis_and_coef(basis, coef);
4920END_ENTITY;
4921
4922-- DIFF IN AP214
4923ENTITY b_spline_surface
4924   SUPERTYPE OF (ONEOF(b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)
4925   SUBTYPE OF (bounded_surface);
4926      u_degree : INTEGER;
4927      v_degree : INTEGER;
4928      control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
4929      surface_form : b_spline_surface_form;
4930      u_closed : LOGICAL;
4931      v_closed : LOGICAL;
4932      self_intersect : LOGICAL;
4933   DERIVE
4934      control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list, 0, u_upper, 0, v_upper);
4935      u_upper : INTEGER := SIZEOF(control_points_list) - 1;
4936      v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
4937   WHERE
4938      WR1:
4939         ((('STEP_MERGED_CAD_SCHEMA.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR ('STEP_MERGED_CAD_SCHEMA.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF))) OR ('STEP_MERGED_CAD_SCHEMA.BEZIER_SURFACE' IN TYPEOF(SELF))) OR ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF));
4940END_ENTITY;
4941
4942-- IN AP242
4943ENTITY b_spline_surface_knot_locator
4944   SUBTYPE OF (founded_item);
4945      basis_surface : b_spline_surface;
4946      knot_index : INTEGER;
4947      surface_parameter : u_or_v_parameter;
4948   WHERE
4949      WR1:
4950         SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
4951END_ENTITY;
4952
4953-- IN AP242
4954ENTITY b_spline_surface_patch
4955   SUBTYPE OF (founded_item);
4956      basis_surface : b_spline_surface;
4957      u_start_knot_index : INTEGER;
4958      v_start_knot_index : INTEGER;
4959   WHERE
4960      WR1:
4961         SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
4962END_ENTITY;
4963
4964-- IN AP242
4965ENTITY b_spline_surface_strip
4966   SUBTYPE OF (founded_item);
4967      basis_surface : b_spline_surface;
4968      start_knot_index : INTEGER;
4969      surface_parameter : u_or_v_parameter;
4970   WHERE
4971      WR1:
4972         SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
4973END_ENTITY;
4974
4975ENTITY b_spline_surface_with_knots
4976   SUBTYPE OF (b_spline_surface);
4977      u_multiplicities : LIST [2:?] OF INTEGER;
4978      v_multiplicities : LIST [2:?] OF INTEGER;
4979      u_knots : LIST [2:?] OF parameter_value;
4980      v_knots : LIST [2:?] OF parameter_value;
4981      knot_spec : knot_type;
4982   DERIVE
4983      knot_u_upper : INTEGER := SIZEOF(u_knots);
4984      knot_v_upper : INTEGER := SIZEOF(v_knots);
4985   WHERE
4986      WR1:
4987         constraints_param_b_spline(SELF\b_spline_surface.u_degree, knot_u_upper, SELF\b_spline_surface.u_upper, u_multiplicities, u_knots);
4988      WR2:
4989         constraints_param_b_spline(SELF\b_spline_surface.v_degree, knot_v_upper, SELF\b_spline_surface.v_upper, v_multiplicities, v_knots);
4990      WR3:
4991         SIZEOF(u_multiplicities) = knot_u_upper;
4992      WR4:
4993         SIZEOF(v_multiplicities) = knot_v_upper;
4994END_ENTITY;
4995
4996-- IN AP203e2/AP242
4997ENTITY back_chaining_rule
4998   SUBTYPE OF (rule_definition);
4999END_ENTITY;
5000
5001-- IN AP203e2/AP242
5002ENTITY back_chaining_rule_body
5003   SUBTYPE OF (property_definition, property_definition_representation, representation);
5004END_ENTITY;
5005
5006-- CASE DIFF IN AP214
5007ENTITY background_colour
5008   SUBTYPE OF (colour);
5009      presentation : area_or_view;
5010   UNIQUE
5011      UR1 : presentation;
5012END_ENTITY;
5013
5014-- IN AP214/AP242
5015ENTITY barring_hole
5016   SUBTYPE OF (feature_definition);
5017   WHERE
5018      WR1:
5019         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage')) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = 1;
5020      WR2:
5021         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'barring profile') AND (sa.description = 'closed profile occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage'))) = 1))) = 1;
5022      WR3:
5023         (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1) AND (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((1 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 2)))) = 1);
5024      WR4:
5025         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| NOT (i.name IN [ 'orientation', 'base radius' ]))) > 0))) = 0;
5026      WR5:
5027         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) <> 1))) = 0;
5028END_ENTITY;
5029
5030-- IN AP242
5031ENTITY basic_sparse_matrix
5032   SUBTYPE OF (explicit_table_function, multiple_arity_generic_expression);
5033      default_entry : maths_value;
5034      order : ordering_type;
5035      SELF\multiple_arity_generic_expression.operands : LIST [3:3] OF maths_function;
5036   DERIVE
5037      index : maths_function := SELF\multiple_arity_generic_expression.operands[1];
5038      loc : maths_function := SELF\multiple_arity_generic_expression.operands[2];
5039      val : maths_function := SELF\multiple_arity_generic_expression.operands[3];
5040   WHERE
5041      WR1:
5042         function_is_1d_table(index);
5043      WR2:
5044         function_is_1d_table(loc);
5045      WR3:
5046         function_is_1d_table(val);
5047      WR4:
5048         check_sparse_index_domain(index.domain, index_base, shape, order);
5049      WR5:
5050         check_sparse_index_to_loc(index.range, loc.domain);
5051      WR6:
5052         loc.domain = val.domain;
5053      WR7:
5054         check_sparse_loc_range(loc.range, index_base, shape, order);
5055      WR8:
5056         member_of(default_entry, val.range);
5057END_ENTITY;
5058
5059-- IN AP214/AP242
5060ENTITY bead
5061   SUBTYPE OF (feature_definition);
5062   WHERE
5063      WR1:
5064         (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) <= 1) AND (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) > 2))) = 0);
5065      WR2:
5066         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| NOT (i.name IN [ 'orientation', 'base radius' ]))) > 0))) = 0;
5067      WR3:
5068         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) > 1))) = 0;
5069      WR4:
5070         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'sweep path') AND (sa.description = 'path feature component occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'path feature component usage')) AND ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
5071      WR5:
5072         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'bead profile') AND (sa.description = 'open profile occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage')) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE' ] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = 1;
5073      WR6:
5074         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'end condition') AND (sa.description = 'bead end occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'bead end usage')) AND (sar.description = 'starting')) AND ('STEP_MERGED_CAD_SCHEMA.BEAD_END' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
5075      WR7:
5076         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'end condition') AND (sa.description = 'bead end occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'bead end usage')) AND (sar.description = 'ending')) AND ('STEP_MERGED_CAD_SCHEMA.BEAD_END' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
5077END_ENTITY;
5078
5079-- IN AP214/AP242
5080ENTITY bead_end
5081   SUBTYPE OF (shape_aspect);
5082   WHERE
5083      WR1:
5084         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
5085      WR2:
5086         SELF.description IN [ 'linear', 'open', 'radiused' ];
5087      WR3:
5088         (SELF.description <> 'linear') XOR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) > 0);
5089      WR4:
5090         (SELF.description <> 'linear') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2))) = 1);
5091      WR5:
5092         (SELF.description <> 'linear') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'end length') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1);
5093      WR6:
5094         (SELF.description <> 'linear') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| ((i.name = 'end shape') AND (i\descriptive_representation_item.description IN [ 'straight', 'tapered' ])) AND ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1);
5095      WR7:
5096         SIZEOF(QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ((((('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'bead end usage')) AND (sar.description IN [ 'starting', 'ending' ])) AND ('STEP_MERGED_CAD_SCHEMA.BEAD' IN TYPEOF(sar.related_shape_aspect.of_shape.definition))) AND (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'end condition')) AND (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'bead end occurrence'))) = 1;
5097END_ENTITY;
5098
5099-- IN AP242
5100ENTITY between_shape_aspect
5101   SUBTYPE OF (continuous_shape_aspect);
5102END_ENTITY;
5103
5104-- IN AP203e2/AP242
5105ENTITY beveled_sheet_representation
5106   SUBTYPE OF (shape_representation);
5107END_ENTITY;
5108
5109ENTITY bezier_curve
5110   SUBTYPE OF (b_spline_curve);
5111END_ENTITY;
5112
5113ENTITY bezier_surface
5114   SUBTYPE OF (b_spline_surface);
5115END_ENTITY;
5116
5117-- IN AP242
5118ENTITY binary_assembly_constraint
5119   ABSTRACT SUPERTYPE OF (ONEOF(parallel_assembly_constraint, surface_distance_assembly_constraint_with_dimension, angle_assembly_constraint_with_dimension, perpendicular_assembly_constraint, incidence_assembly_constraint, coaxial_assembly_constraint, tangent_assembly_constraint))
5120   SUBTYPE OF (assembly_geometric_constraint, representation_relationship_with_transformation);
5121      SELF\representation_relationship.rep_1 : representative_shape_representation;
5122      SELF\representation_relationship.rep_2 : representative_shape_representation;
5123   WHERE
5124      WR1:
5125         (SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3) AND (SELF\explicit_constraint.reference_elements[1]\geometric_representation_item.dim = 3);
5126      WR2:
5127         (SELF\representation_relationship.rep_1 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND (SELF\representation_relationship.rep_2 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
5128      WR3:
5129         (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND (SIZEOF(SELF\explicit_constraint.reference_elements) = 1);
5130      WR4:
5131         (SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1 = SELF\explicit_constraint.reference_elements[1]) AND (SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2 = SELF\explicit_constraint.constrained_elements[1]);
5132END_ENTITY;
5133
5134-- IN AP214/AP242
5135ENTITY binary_boolean_expression
5136   ABSTRACT SUPERTYPE OF (ONEOF(xor_expression, equals_expression))
5137   SUBTYPE OF (boolean_expression, binary_generic_expression);
5138END_ENTITY;
5139
5140-- DIFF IN AP214
5141-- IN AP214/AP242
5142ENTITY binary_function_call
5143   ABSTRACT SUPERTYPE
5144   SUBTYPE OF (binary_numeric_expression);
5145END_ENTITY;
5146
5147ENTITY binary_generic_expression
5148   ABSTRACT SUPERTYPE
5149   SUBTYPE OF (generic_expression);
5150      operands : LIST [2:2] OF generic_expression;
5151END_ENTITY;
5152
5153-- IN AP242
5154ENTITY binary_literal
5155   SUBTYPE OF (generic_literal);
5156      lit_value : BINARY;
5157END_ENTITY;
5158
5159-- DIFF IN AP203e2
5160ENTITY binary_numeric_expression
5161   ABSTRACT SUPERTYPE OF (ONEOF(minus_expression, div_expression, mod_expression, slash_expression, power_expression, binary_function_call))
5162   SUBTYPE OF (numeric_expression, binary_generic_expression);
5163      SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression;
5164END_ENTITY;
5165
5166-- IN AP203e2/AP242
5167ENTITY binary_representation_item
5168   SUBTYPE OF (representation_item);
5169      binary_value : BINARY;
5170END_ENTITY;
5171
5172ENTITY block
5173   SUBTYPE OF (geometric_representation_item);
5174      position : axis2_placement_3d;
5175      x : positive_length_measure;
5176      y : positive_length_measure;
5177      z : positive_length_measure;
5178END_ENTITY;
5179
5180-- IN AP214/AP242
5181ENTITY boolean_defined_function
5182   ABSTRACT SUPERTYPE
5183   SUBTYPE OF (defined_function, boolean_expression);
5184END_ENTITY;
5185
5186-- DIFF IN AP203e2
5187ENTITY boolean_expression
5188   ABSTRACT SUPERTYPE OF (ONEOF(simple_boolean_expression, unary_boolean_expression, binary_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression, boolean_defined_function))
5189   SUBTYPE OF (expression);
5190END_ENTITY;
5191
5192ENTITY boolean_literal
5193   SUBTYPE OF (simple_boolean_expression, generic_literal);
5194      the_value : BOOLEAN;
5195END_ENTITY;
5196
5197-- IN AP203e2/AP242
5198ENTITY boolean_representation_item
5199   SUBTYPE OF (representation_item, boolean_literal);
5200END_ENTITY;
5201
5202ENTITY boolean_result
5203   SUBTYPE OF (geometric_representation_item);
5204      operator : boolean_operator;
5205      first_operand : boolean_operand;
5206      second_operand : boolean_operand;
5207END_ENTITY;
5208
5209-- IN AP242
5210ENTITY boolean_result_2d
5211   SUBTYPE OF (boolean_result);
5212      SELF\boolean_result.first_operand : boolean_operand_2d;
5213      SELF\boolean_result.second_operand : boolean_operand_2d;
5214END_ENTITY;
5215
5216-- IN AP214/AP242
5217ENTITY boolean_variable
5218   SUBTYPE OF (simple_boolean_expression, variable);
5219END_ENTITY;
5220
5221-- IN AP214/AP242
5222ENTITY boss
5223   SUBTYPE OF (feature_definition);
5224   WHERE
5225      WR1:
5226         SELF\characterized_object.description IN [ 'circular', 'complex', 'rectangular' ];
5227      WR2:
5228         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'boss height occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear')) AND (sdr.name = 'boss height'))) = 1))) = 1))) = 0;
5229      WR3:
5230         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((1 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 2)))) = 1))) = 1;
5231      WR4:
5232         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (srwp_i.name = 'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
5233      WR5:
5234         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) = 0;
5235      WR6:
5236         NOT (SELF\characterized_object.description = 'circular') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'circular profile occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
5237      WR7:
5238         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'top condition occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'boss top usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.BOSS_TOP' IN TYPEOF(fcr.relating_shape_aspect)))) = 1))) = 1))) = 0;
5239      WR8:
5240         NOT (SELF\characterized_object.description = 'circular') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr.related_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.BOSS' IN TYPEOF(fcr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
5241      WR9:
5242         NOT (SELF\characterized_object.description = 'complex') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
5243      WR10:
5244         NOT (SELF\characterized_object.description IN [ 'complex', 'rectangular' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr.related_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.BOSS' IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.related_shape_aspect.description IN [ 'angle taper', 'directed taper' ]))) = 1))) <= 1))) = 0);
5245      WR11:
5246         NOT (SELF\characterized_object.description = 'rectangular') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'rectangular profile occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
5247      WR12:
5248         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
5249END_ENTITY;
5250
5251-- IN AP214/AP242
5252ENTITY boss_top
5253   SUBTYPE OF (shape_aspect);
5254   WHERE
5255      WR1:
5256         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
5257      WR2:
5258         SELF.description IN [ 'planar', 'complex' ];
5259      WR3:
5260         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
5261      WR4:
5262         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
5263      WR5:
5264         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
5265      WR6:
5266         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ((sar.description = 'boss top usage') AND (sar.name IN [ 'boss height start', 'boss height end' ])) AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description = 'top condition occurrence') AND ('STEP_MERGED_CAD_SCHEMA.BOSS' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('STEP_MERGED_CAD_SCHEMA.BOSS_TOP' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
5267      WR7:
5268         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) <= 1))) = 0;
5269      WR8:
5270         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
5271      WR9:
5272         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'top radius'))) <= 1))) = 0))) = 0;
5273END_ENTITY;
5274
5275-- IN AP242
5276ENTITY bound_parameter_environment
5277   SUBTYPE OF (environment);
5278   WHERE
5279      WR1:
5280         ('STEP_MERGED_CAD_SCHEMA.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF(SELF\environment.syntactic_representation)) AND ('STEP_MERGED_CAD_SCHEMA.INSTANCE_ATTRIBUTE_REFERENCE' IN TYPEOF(SELF\environment.semantics));
5281END_ENTITY;
5282
5283-- IN AP242
5284ENTITY bound_variational_parameter
5285   SUBTYPE OF (variational_parameter);
5286   DERIVE
5287      SELF\variational_parameter.parameter_current_value : maths_value := ?;
5288   WHERE
5289      WR1:
5290         'STEP_MERGED_CAD_SCHEMA.BOUND_PARAMETER_ENVIRONMENT' IN TYPEOF(SELF\generic_variable.interpretation);
5291END_ENTITY;
5292
5293ENTITY boundary_curve
5294   SUBTYPE OF (composite_curve_on_surface);
5295   WHERE
5296      WR1:
5297         SELF\composite_curve.closed_curve;
5298END_ENTITY;
5299
5300-- IN AP242
5301ENTITY boundary_curve_of_b_spline_or_rectangular_composite_surface
5302   SUBTYPE OF (founded_item);
5303      basis_surface : b_spline_or_rectangular_composite_surface_select;
5304      boundary_type : surface_boundary_type;
5305   WHERE
5306      WR1:
5307         SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
5308END_ENTITY;
5309
5310ENTITY bounded_curve
5311   SUPERTYPE OF (ONEOF(polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve))
5312   SUBTYPE OF (curve);
5313END_ENTITY;
5314
5315-- IN AP203e2/AP214
5316ENTITY bounded_pcurve
5317   SUBTYPE OF (pcurve, bounded_curve);
5318   WHERE
5319      wr1:
5320         'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\pcurve.reference_to_curve.items[1]);
5321END_ENTITY;
5322
5323ENTITY bounded_surface
5324   SUPERTYPE OF (ONEOF(b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface))
5325   SUBTYPE OF (surface);
5326END_ENTITY;
5327
5328-- IN AP203e2/AP214
5329ENTITY bounded_surface_curve
5330   SUBTYPE OF (surface_curve, bounded_curve);
5331   WHERE
5332      wr1:
5333         'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve.curve_3d);
5334END_ENTITY;
5335
5336ENTITY box_domain
5337   SUBTYPE OF (founded_item);
5338      corner : cartesian_point;
5339      xlength : positive_length_measure;
5340      ylength : positive_length_measure;
5341      zlength : positive_length_measure;
5342   WHERE
5343      WR1:
5344         SIZEOF(QUERY (item <* USEDIN(SELF, '')| NOT ('STEP_MERGED_CAD_SCHEMA.BOXED_HALF_SPACE' IN TYPEOF(item)))) = 0;
5345END_ENTITY;
5346
5347ENTITY boxed_half_space
5348   SUBTYPE OF (half_space_solid);
5349      enclosure : box_domain;
5350END_ENTITY;
5351
5352-- IN AP203e2/AP242
5353ENTITY breakdown_context
5354   SUBTYPE OF (product_definition_relationship);
5355END_ENTITY;
5356
5357-- IN AP203e2/AP242
5358ENTITY breakdown_element_group_assignment
5359   SUBTYPE OF (group_assignment);
5360      items : SET [1:1] OF product_definition_or_breakdown_element_usage;
5361      SELF\group_assignment.assigned_group : product_definition_element_relationship;
5362END_ENTITY;
5363
5364-- IN AP203e2/AP242
5365ENTITY breakdown_element_realization
5366   SUBTYPE OF (characterized_object, product_definition_element_relationship);
5367END_ENTITY;
5368
5369-- IN AP203e2/AP242
5370ENTITY breakdown_element_usage
5371   SUBTYPE OF (product_definition_relationship);
5372END_ENTITY;
5373
5374-- IN AP203e2/AP242
5375ENTITY breakdown_of
5376   SUBTYPE OF (product_definition_relationship);
5377END_ENTITY;
5378
5379ENTITY brep_with_voids
5380   SUBTYPE OF (manifold_solid_brep);
5381      voids : SET [1:?] OF oriented_closed_shell;
5382END_ENTITY;
5383
5384-- IN AP203e2/AP242
5385ENTITY bytes_representation_item
5386   SUBTYPE OF (binary_representation_item);
5387   DERIVE
5388      no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8;
5389   WHERE
5390      WR1:
5391         BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0;
5392END_ENTITY;
5393
5394ENTITY calendar_date
5395   SUBTYPE OF (date);
5396      day_component : day_in_month_number;
5397      month_component : month_in_year_number;
5398   WHERE
5399      WR1:
5400         valid_calendar_date(SELF);
5401END_ENTITY;
5402
5403-- DIFF IN AP214
5404-- DIFF IN AP203e2
5405ENTITY camera_image
5406   SUPERTYPE OF (ONEOF(camera_image_2d_with_scale, camera_image_3d_with_scale))
5407   SUBTYPE OF (mapped_item);
5408      SELF\mapped_item.mapping_source : camera_usage;
5409      SELF\mapped_item.mapping_target : planar_box;
5410   WHERE
5411      WR1:
5412         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
5413END_ENTITY;
5414
5415-- IN AP214/AP242
5416ENTITY camera_image_2d_with_scale
5417   SUBTYPE OF (camera_image);
5418   DERIVE
5419      scale : positive_ratio_measure := SELF\mapped_item.mapping_target\planar_extent.size_in_x / SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window\planar_extent.size_in_x;
5420   WHERE
5421      WR1:
5422         'STEP_MERGED_CAD_SCHEMA.CAMERA_MODEL_D2' IN TYPEOF(SELF\mapped_item.mapping_source.mapping_origin);
5423      WR2:
5424         aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window);
5425      WR3:
5426         SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window_clipping;
5427END_ENTITY;
5428
5429ENTITY camera_image_3d_with_scale
5430   SUBTYPE OF (camera_image);
5431   DERIVE
5432      scale : positive_ratio_measure := SELF\mapped_item.mapping_target\planar_extent.size_in_x / SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_x;
5433   WHERE
5434      WR1:
5435         'STEP_MERGED_CAD_SCHEMA.CAMERA_MODEL_D3' IN TYPEOF(SELF\mapped_item.mapping_source.mapping_origin);
5436      WR2:
5437         aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window);
5438      WR3:
5439         SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.front_plane_clipping AND SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_volume_sides_clipping;
5440      WR4:
5441         (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) AND (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0);
5442      WR5:
5443         (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_x > 0) AND (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_y > 0);
5444      WR6:
5445         ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement));
5446END_ENTITY;
5447
5448-- DIFF IN AP203e2
5449ENTITY camera_model
5450   ABSTRACT SUPERTYPE OF (ONEOF(camera_model_d2, camera_model_d3))
5451   SUBTYPE OF (geometric_representation_item);
5452   WHERE
5453      WR1:
5454         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ITEM_DEFINED_TRANSFORMATION.' + 'TRANSFORM_ITEM_1')) + SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_MAP.MAPPING_ORIGIN')) > 0;
5455      WR2:
5456         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM.ITEM')) = 0;
5457END_ENTITY;
5458
5459-- IN AP214/AP242
5460ENTITY camera_model_d2
5461   SUBTYPE OF (camera_model);
5462      view_window : planar_box;
5463      view_window_clipping : BOOLEAN;
5464   WHERE
5465      WR1:
5466         SELF\geometric_representation_item.dim = 2;
5467END_ENTITY;
5468
5469ENTITY camera_model_d3
5470   SUBTYPE OF (camera_model);
5471      view_reference_system : axis2_placement_3d;
5472      perspective_of_volume : view_volume;
5473   WHERE
5474      WR1:
5475         SELF\geometric_representation_item.dim = 3;
5476END_ENTITY;
5477
5478-- IN AP203e2/AP242
5479ENTITY camera_model_d3_multi_clipping
5480   SUBTYPE OF (camera_model_d3);
5481      shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select;
5482END_ENTITY;
5483
5484-- IN AP203e2/AP242
5485ENTITY camera_model_d3_multi_clipping_intersection
5486   SUBTYPE OF (geometric_representation_item);
5487      shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select;
5488END_ENTITY;
5489
5490-- IN AP203e2/AP242
5491ENTITY camera_model_d3_multi_clipping_union
5492   SUBTYPE OF (geometric_representation_item);
5493      shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select;
5494END_ENTITY;
5495
5496ENTITY camera_model_d3_with_hlhsr
5497   SUBTYPE OF (camera_model_d3);
5498      hidden_line_surface_removal : BOOLEAN;
5499END_ENTITY;
5500
5501-- IN AP203e2/AP242
5502ENTITY camera_model_with_light_sources
5503   SUBTYPE OF (camera_model_d3);
5504      sources : SET [1:?] OF light_source;
5505END_ENTITY;
5506
5507ENTITY camera_usage
5508   SUBTYPE OF (representation_map);
5509      SELF\representation_map.mapping_origin : camera_model;
5510   WHERE
5511      WR1:
5512         NOT ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF\representation_map.mapped_representation));
5513END_ENTITY;
5514
5515-- IN AP203e2/AP242
5516ENTITY capacitance_measure_with_unit
5517   SUBTYPE OF (measure_with_unit);
5518   WHERE
5519      WR1:
5520         'STEP_MERGED_CAD_SCHEMA.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
5521END_ENTITY;
5522
5523-- IN AP203e2/AP242
5524ENTITY capacitance_unit
5525   SUBTYPE OF (derived_unit);
5526   WHERE
5527      WR1:
5528         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.farad);
5529END_ENTITY;
5530
5531-- IN AP242
5532ENTITY cartesian_complex_number_region
5533   SUBTYPE OF (maths_space, generic_literal);
5534      real_constraint : real_interval;
5535      imag_constraint : real_interval;
5536   WHERE
5537      WR1:
5538         ((min_exists(real_constraint) OR max_exists(real_constraint)) OR min_exists(imag_constraint)) OR max_exists(imag_constraint);
5539END_ENTITY;
5540
5541ENTITY cartesian_point
5542   SUBTYPE OF (point);
5543      coordinates : LIST [1:3] OF length_measure;
5544END_ENTITY;
5545
5546-- IN AP203e2/AP214
5547ENTITY cartesian_transformation_operator
5548   SUPERTYPE OF (ONEOF(cartesian_transformation_operator_2d, cartesian_transformation_operator_3d))
5549   SUBTYPE OF (geometric_representation_item, functionally_defined_transformation);
5550      axis1 : OPTIONAL direction;
5551      axis2 : OPTIONAL direction;
5552      local_origin : cartesian_point;
5553      scale : OPTIONAL REAL;
5554   DERIVE
5555      scl : REAL := NVL(scale, 1.0);
5556   WHERE
5557      wr1:
5558         scl > 0.0;
5559END_ENTITY;
5560
5561ENTITY cartesian_transformation_operator_2d
5562   SUBTYPE OF (cartesian_transformation_operator);
5563   DERIVE
5564      u : LIST [2:2] OF direction := base_axis(2, SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2, ?);
5565   WHERE
5566      WR1:
5567         SELF\geometric_representation_item.dim = 2;
5568END_ENTITY;
5569
5570ENTITY cartesian_transformation_operator_3d
5571   SUBTYPE OF (cartesian_transformation_operator);
5572      axis3 : OPTIONAL direction;
5573   DERIVE
5574      u : LIST [3:3] OF direction := base_axis(3, SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2, axis3);
5575   WHERE
5576      WR1:
5577         SELF\geometric_representation_item.dim = 3;
5578END_ENTITY;
5579
5580-- IN AP242
5581ENTITY cdgc_with_dimension
5582   SUBTYPE OF (curve_distance_geometric_constraint);
5583      distance_value : non_negative_length_measure;
5584END_ENTITY;
5585
5586ENTITY celsius_temperature_measure_with_unit
5587   SUBTYPE OF (measure_with_unit);
5588   WHERE
5589      WR1:
5590         'STEP_MERGED_CAD_SCHEMA.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
5591END_ENTITY;
5592
5593ENTITY centre_of_symmetry
5594   SUBTYPE OF (derived_shape_aspect);
5595END_ENTITY;
5596
5597ENTITY certification;
5598      name : label;
5599      purpose : text;
5600      kind : certification_type;
5601END_ENTITY;
5602
5603ENTITY certification_assignment
5604   ABSTRACT SUPERTYPE;
5605      assigned_certification : certification;
5606   DERIVE
5607      role : object_role := get_role(SELF);
5608   WHERE
5609      WR1:
5610         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
5611END_ENTITY;
5612
5613ENTITY certification_type;
5614      description : label;
5615END_ENTITY;
5616
5617-- IN AP242
5618ENTITY chain_based_geometric_item_specific_usage
5619   SUBTYPE OF (geometric_item_specific_usage, chain_based_item_identified_representation_usage);
5620END_ENTITY;
5621
5622-- IN AP242
5623ENTITY chain_based_item_identified_representation_usage
5624   SUBTYPE OF (item_identified_representation_usage);
5625      nodes : LIST [2:?] OF UNIQUE representation;
5626      undirected_link : LIST [1:?] OF chained_representation_link;
5627   DERIVE
5628      directed_link : LIST [1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
5629      leaf : representation := SELF\item_identified_representation_usage.used_representation;
5630      root : representation := nodes[1];
5631      SELF\item_identified_representation_usage.used_representation : representation := nodes[HIINDEX(nodes)];
5632   WHERE
5633      WR1:
5634         EXISTS(directed_link);
5635END_ENTITY;
5636
5637-- IN AP214/AP242
5638ENTITY chamfer
5639   SUBTYPE OF (transition_feature);
5640   WHERE
5641      WR1:
5642         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'chamfer face'))) <= 1))) = 0;
5643      WR2:
5644         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(fcr.related_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.CHAMFER' IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.related_shape_aspect.description = 'first offset'))) = 1;
5645      WR3:
5646         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(fcr.related_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.CHAMFER' IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.related_shape_aspect.description = 'second offset'))) = 1;
5647END_ENTITY;
5648
5649-- IN AP214/AP242
5650ENTITY chamfer_offset
5651   SUBTYPE OF (shape_aspect);
5652   WHERE
5653      WR1:
5654         SELF.description IN [ 'first offset', 'second offset' ];
5655      WR2:
5656         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
5657      WR3:
5658         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
5659      WR4:
5660         NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'offset amount'))) = 1))) = 0))) = 0);
5661      WR5:
5662         NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape'))) <= 1))) = 0);
5663      WR6:
5664         NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'offset amount') OR (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'offset angle'))) = 1))) = 0))) = 0);
5665      WR7:
5666         NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape'))) <= 1))) = 0);
5667      WR8:
5668         SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.CHAMFER' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(sdr.related_shape_aspect)))) = 1;
5669END_ENTITY;
5670
5671-- IN AP203e2/AP242
5672ENTITY change
5673   SUBTYPE OF (action_assignment);
5674      items : SET [1:?] OF work_item;
5675END_ENTITY;
5676
5677-- IN AP242
5678ENTITY change_composition_relationship
5679   SUBTYPE OF (group_relationship);
5680      SELF\group_relationship.related_group : change_element;
5681      SELF\group_relationship.relating_group : change_group;
5682   DERIVE
5683      composition : change_group := SELF\group_relationship.relating_group;
5684      element : change_element := SELF\group_relationship.related_group;
5685END_ENTITY;
5686
5687-- IN AP242
5688ENTITY change_element
5689   ABSTRACT SUPERTYPE OF (ONEOF(modify_element, delete_element, add_element))
5690   SUBTYPE OF (group, characterized_object);
5691END_ENTITY;
5692
5693-- IN AP242
5694ENTITY change_element_sequence
5695   SUBTYPE OF (group_relationship);
5696      SELF\group_relationship.related_group : change_element;
5697      SELF\group_relationship.relating_group : change_element;
5698   DERIVE
5699      next : change_element := SELF\group_relationship.related_group;
5700      previous : change_element := SELF\group_relationship.relating_group;
5701END_ENTITY;
5702
5703-- IN AP242
5704ENTITY change_group
5705   SUBTYPE OF (group);
5706END_ENTITY;
5707
5708-- IN AP242
5709ENTITY change_group_assignment
5710   SUBTYPE OF (group_assignment);
5711      item : change_relationship_select;
5712      SELF\group_assignment.assigned_group : change_group;
5713END_ENTITY;
5714
5715-- IN AP203e2/AP242
5716ENTITY change_request
5717   SUBTYPE OF (action_request_assignment);
5718      items : SET [1:?] OF change_request_item;
5719END_ENTITY;
5720
5721-- IN AP203e2/AP242
5722ENTITY character_glyph_font_usage;
5723      character : generic_character_glyph_symbol;
5724      font : text_font;
5725END_ENTITY;
5726
5727-- IN AP203e2/AP242
5728ENTITY character_glyph_style_outline
5729   SUBTYPE OF (founded_item);
5730      outline_style : curve_style;
5731END_ENTITY;
5732
5733-- IN AP203e2/AP242
5734ENTITY character_glyph_style_stroke
5735   SUBTYPE OF (founded_item);
5736      stroke_style : curve_style;
5737END_ENTITY;
5738
5739ENTITY character_glyph_symbol
5740   SUBTYPE OF (generic_character_glyph_symbol);
5741      character_box : planar_extent;
5742      baseline_ratio : ratio_measure;
5743   DERIVE
5744      box_height : length_measure := character_box.size_in_y;
5745   WHERE
5746      WR1:
5747         (0.0 <= baseline_ratio) AND (baseline_ratio <= 1.0);
5748      WR2:
5749         item_in_context(SELF.character_box, SELF\representation.context_of_items);
5750      WR3:
5751         'STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(SELF.box_height);
5752END_ENTITY;
5753
5754-- IN AP203e2/AP242
5755ENTITY character_glyph_symbol_outline
5756   SUBTYPE OF (character_glyph_symbol);
5757      outlines : SET [1:?] OF annotation_fill_area;
5758   WHERE
5759      WR1:
5760         SELF.outlines <= SELF\representation.items;
5761END_ENTITY;
5762
5763-- IN AP203e2/AP242
5764ENTITY character_glyph_symbol_stroke
5765   SUBTYPE OF (character_glyph_symbol);
5766      strokes : SET [1:?] OF curve;
5767   WHERE
5768      WR1:
5769         SELF.strokes <= SELF\representation.items;
5770END_ENTITY;
5771
5772-- IN AP203e2/AP242
5773ENTITY characteristic_data_column_header
5774   SUBTYPE OF (general_property);
5775END_ENTITY;
5776
5777-- IN AP203e2/AP242
5778ENTITY characteristic_data_column_header_link
5779   SUBTYPE OF (general_property_relationship);
5780END_ENTITY;
5781
5782-- IN AP203e2/AP242
5783ENTITY characteristic_data_table_header
5784   SUBTYPE OF (general_property);
5785END_ENTITY;
5786
5787-- IN AP203e2/AP242
5788ENTITY characteristic_data_table_header_decomposition
5789   SUBTYPE OF (general_property_relationship);
5790END_ENTITY;
5791
5792-- IN AP203e2/AP242
5793ENTITY characteristic_type
5794   SUBTYPE OF (group);
5795END_ENTITY;
5796
5797-- IN AP242
5798ENTITY characterized_chain_based_item_within_representation
5799   SUBTYPE OF (characterized_item_within_representation);
5800      nodes : LIST [2:?] OF UNIQUE representation;
5801      undirected_link : LIST [1:?] OF chained_representation_link;
5802   DERIVE
5803      directed_link : LIST [1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
5804      leaf : representation := SELF\characterized_item_within_representation.rep;
5805      SELF\characterized_item_within_representation.rep : representation := nodes[HIINDEX(nodes)];
5806      root : representation := nodes[1];
5807   WHERE
5808      WR1:
5809         EXISTS(directed_link);
5810END_ENTITY;
5811
5812ENTITY characterized_class
5813   SUBTYPE OF (characterized_object, class);
5814END_ENTITY;
5815
5816-- IN AP242
5817ENTITY characterized_item_within_representation
5818   SUBTYPE OF (characterized_object);
5819      item : representation_item;
5820      rep : representation;
5821   UNIQUE
5822      WR1 : item, rep;
5823   WHERE
5824      WR2:
5825         rep IN using_representations(item);
5826END_ENTITY;
5827
5828ENTITY characterized_object;
5829      name : label;
5830      description : OPTIONAL text;
5831END_ENTITY;
5832
5833-- IN AP242
5834ENTITY characterized_representation
5835   SUBTYPE OF (representation, characterized_object);
5836   DERIVE
5837      SELF\characterized_object.description : text := SELF\representation.description;
5838      SELF\characterized_object.name : label := SELF\representation.name;
5839END_ENTITY;
5840
5841ENTITY circle
5842   SUBTYPE OF (conic);
5843      radius : positive_length_measure;
5844END_ENTITY;
5845
5846-- IN AP242
5847ENTITY circular_area
5848   SUBTYPE OF (primitive_2d);
5849      centre : cartesian_point;
5850      radius : positive_length_measure;
5851END_ENTITY;
5852
5853-- IN AP214/AP242
5854ENTITY circular_closed_profile
5855   SUBTYPE OF (shape_aspect);
5856   WHERE
5857      WR1:
5858         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
5859      WR2:
5860         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
5861      WR3:
5862         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0;
5863      WR4:
5864         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
5865      WR5:
5866         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0))) = 0;
5867END_ENTITY;
5868
5869-- IN AP242
5870ENTITY circular_path
5871   SUBTYPE OF (path_node);
5872      via_point : cartesian_point;
5873END_ENTITY;
5874
5875-- IN AP214/AP242
5876ENTITY circular_pattern
5877   SUBTYPE OF (replicate_feature);
5878   WHERE
5879      WR1:
5880         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 3))) = 0;
5881      WR2:
5882         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
5883      WR3:
5884         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 5)))) = 0))) = 0;
5885      WR4:
5886         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) <= 1))) = 0))) = 0;
5887      WR5:
5888         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'base feature rotation'))) <= 1))) = 0))) = 0;
5889      WR6:
5890         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'number of features'))) = 1))) = 0))) = 0;
5891      WR7:
5892         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'angular spacing'))) = 1))) = 0))) = 0;
5893      WR8:
5894         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
5895END_ENTITY;
5896
5897ENTITY circular_runout_tolerance
5898   SUBTYPE OF (geometric_tolerance_with_datum_reference);
5899END_ENTITY;
5900
5901ENTITY class
5902   SUBTYPE OF (group);
5903END_ENTITY;
5904
5905-- IN AP203e2/AP242
5906ENTITY class_by_extension
5907   SUBTYPE OF (class);
5908END_ENTITY;
5909
5910-- IN AP203e2/AP242
5911ENTITY class_by_intension
5912   SUBTYPE OF (class);
5913END_ENTITY;
5914
5915ENTITY class_system
5916   SUBTYPE OF (group);
5917END_ENTITY;
5918
5919ENTITY class_usage_effectivity_context_assignment
5920   SUBTYPE OF (effectivity_context_assignment);
5921      items : SET [1:?] OF class_usage_effectivity_context_item;
5922   WHERE
5923      WR1:
5924         SELF.role.name = 'class usage influence';
5925      WR2:
5926         SIZEOF(QUERY (i <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(i)))) = 0;
5927      WR3:
5928         ((('STEP_MERGED_CAD_SCHEMA.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity)) = 1)) AND (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage')) AND (SIZEOF(QUERY (i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items| NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)))) = 0);
5929END_ENTITY;
5930
5931ENTITY classification_assignment
5932   ABSTRACT SUPERTYPE;
5933      assigned_class : group;
5934      role : classification_role;
5935END_ENTITY;
5936
5937ENTITY classification_role;
5938      name : label;
5939      description : OPTIONAL text;
5940END_ENTITY;
5941
5942-- IN AP242
5943ENTITY clgc_with_dimension
5944   SUBTYPE OF (curve_length_geometric_constraint);
5945      length_value : positive_length_measure;
5946END_ENTITY;
5947
5948-- IN AP242
5949ENTITY closed_curve_style_parameters
5950   SUBTYPE OF (curve_style_parameters_representation);
5951END_ENTITY;
5952
5953-- IN AP214/AP242
5954ENTITY closed_path_profile
5955   SUBTYPE OF (shape_aspect);
5956   WHERE
5957      WR1:
5958         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
5959      WR2:
5960         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
5961      WR3:
5962         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
5963      WR4:
5964         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
5965      WR5:
5966         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
5967END_ENTITY;
5968
5969ENTITY closed_shell
5970   SUBTYPE OF (connected_face_set);
5971END_ENTITY;
5972
5973-- IN AP242
5974ENTITY coaxial_assembly_constraint
5975   SUBTYPE OF (binary_assembly_constraint, coaxial_geometric_constraint);
5976END_ENTITY;
5977
5978-- IN AP242
5979ENTITY coaxial_geometric_constraint
5980   SUBTYPE OF (explicit_geometric_constraint);
5981      SELF\explicit_constraint.constrained_elements : SET [1:?] OF axial_geometry_constraint_element;
5982      SELF\explicit_constraint.reference_elements : SET [0:1] OF axial_geometry_constraint_element;
5983   WHERE
5984      WR1:
5985         SIZEOF(QUERY (q <* SELF\explicit_constraint.reference_elements| (SIZEOF(TYPEOF(q) * [ 'STEP_MERGED_CAD_SCHEMA.POINT', 'STEP_MERGED_CAD_SCHEMA.PLANE', 'STEP_MERGED_CAD_SCHEMA.SPHERICAL_SURFACE', 'STEP_MERGED_CAD_SCHEMA.SPHERE' ]) > 0))) = 0;
5986END_ENTITY;
5987
5988ENTITY coaxiality_tolerance
5989   SUBTYPE OF (geometric_tolerance_with_datum_reference);
5990END_ENTITY;
5991
5992ENTITY colour;
5993END_ENTITY;
5994
5995ENTITY colour_rgb
5996   SUBTYPE OF (colour_specification);
5997      red : REAL;
5998      green : REAL;
5999      blue : REAL;
6000   WHERE
6001      WR1:
6002         (0.0 <= red) AND (red <= 1.0);
6003      WR2:
6004         (0.0 <= green) AND (green <= 1.0);
6005      WR3:
6006         (0.0 <= blue) AND (blue <= 1.0);
6007END_ENTITY;
6008
6009ENTITY colour_specification
6010   SUBTYPE OF (colour);
6011      name : label;
6012END_ENTITY;
6013
6014ENTITY common_datum
6015   SUBTYPE OF (composite_shape_aspect, datum);
6016   WHERE
6017      WR1:
6018         SIZEOF(SELF\composite_shape_aspect.component_relationships) = 2;
6019      WR2:
6020         SIZEOF(QUERY (sar <* SELF\composite_shape_aspect.component_relationships| NOT (('STEP_MERGED_CAD_SCHEMA.DATUM' IN TYPEOF(sar.related_shape_aspect)) AND NOT ('STEP_MERGED_CAD_SCHEMA.COMMON_DATUM' IN TYPEOF(sar.related_shape_aspect))))) = 0;
6021END_ENTITY;
6022
6023-- IN AP214/AP242
6024ENTITY comparison_equal
6025   SUBTYPE OF (comparison_expression);
6026END_ENTITY;
6027
6028-- DIFF IN AP203e2
6029ENTITY comparison_expression
6030   ABSTRACT SUPERTYPE OF (ONEOF(comparison_equal, comparison_greater, comparison_greater_equal, comparison_less, comparison_less_equal, comparison_not_equal, like_expression))
6031   SUBTYPE OF (boolean_expression, binary_generic_expression);
6032      SELF\binary_generic_expression.operands : LIST [2:2] OF expression;
6033   WHERE
6034      WR1:
6035         (('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2])) OR ('STEP_MERGED_CAD_SCHEMA.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STEP_MERGED_CAD_SCHEMA.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2]))) OR ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2]));
6036END_ENTITY;
6037
6038-- IN AP214/AP242
6039ENTITY comparison_greater
6040   SUBTYPE OF (comparison_expression);
6041END_ENTITY;
6042
6043-- IN AP214/AP242
6044ENTITY comparison_greater_equal
6045   SUBTYPE OF (comparison_expression);
6046END_ENTITY;
6047
6048-- IN AP214/AP242
6049ENTITY comparison_less
6050   SUBTYPE OF (comparison_expression);
6051END_ENTITY;
6052
6053-- IN AP214/AP242
6054ENTITY comparison_less_equal
6055   SUBTYPE OF (comparison_expression);
6056END_ENTITY;
6057
6058-- IN AP214/AP242
6059ENTITY comparison_not_equal
6060   SUBTYPE OF (comparison_expression);
6061END_ENTITY;
6062
6063-- IN AP242
6064ENTITY complex_area
6065   ABSTRACT SUPERTYPE OF (path_area_with_parameters ANDOR primitive_2d_with_inner_boundary)
6066   SUBTYPE OF (primitive_2d);
6067END_ENTITY;
6068
6069-- IN AP203e2/AP242
6070ENTITY complex_clause
6071   SUBTYPE OF (compound_representation_item);
6072END_ENTITY;
6073
6074-- IN AP203e2/AP242
6075ENTITY complex_conjunctive_clause
6076   SUBTYPE OF (complex_clause);
6077END_ENTITY;
6078
6079-- IN AP203e2/AP242
6080ENTITY complex_disjunctive_clause
6081   SUBTYPE OF (complex_clause);
6082END_ENTITY;
6083
6084-- IN AP242
6085ENTITY complex_number_literal
6086   SUBTYPE OF (generic_literal);
6087      real_part : REAL;
6088      imag_part : REAL;
6089END_ENTITY;
6090
6091-- IN AP242
6092ENTITY complex_number_literal_polar
6093   SUBTYPE OF (complex_number_literal);
6094      modulus : REAL;
6095      argument : REAL;
6096   DERIVE
6097      SELF\complex_number_literal.imag_part : REAL := modulus * sin(argument);
6098      SELF\complex_number_literal.real_part : REAL := modulus * cos(argument);
6099   WHERE
6100      WR1:
6101         modulus >= 0;
6102      WR2:
6103         (0 <= argument) AND (argument <= 2 * 3.14159);
6104END_ENTITY;
6105
6106-- IN AP203e2/AP242
6107ENTITY complex_shelled_solid
6108   SUBTYPE OF (shelled_solid);
6109      thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface;
6110      thickness_list : LIST [1:?] OF length_measure;
6111   WHERE
6112      WR1:
6113         SIZEOF(thickened_face_list) = SIZEOF(thickness_list);
6114      WR2:
6115         SIZEOF(QUERY (q <* thickness_list| (q = 0))) = 0;
6116END_ENTITY;
6117
6118-- IN AP242
6119ENTITY complex_triangulated_face
6120   SUBTYPE OF (tessellated_face);
6121      pnindex : LIST [0:?] OF INTEGER;
6122      triangle_strips : LIST [0:?] OF LIST [3:?] OF INTEGER;
6123      triangle_fans : LIST [0:?] OF LIST [3:?] OF INTEGER;
6124   WHERE
6125      WR1:
6126         (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.pnmax);
6127      WR2:
6128         NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <> coordinates.npoints));
6129      WR3:
6130         NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
6131END_ENTITY;
6132
6133-- IN AP242
6134ENTITY complex_triangulated_surface_set
6135   SUBTYPE OF (tessellated_surface_set);
6136      pnindex : LIST [0:?] OF INTEGER;
6137      triangle_strips : LIST [0:?] OF LIST [3:?] OF INTEGER;
6138      triangle_fans : LIST [0:?] OF LIST [3:?] OF INTEGER;
6139   WHERE
6140      WR1:
6141         (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_surface_set.pnmax);
6142      WR2:
6143         NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax <> coordinates.npoints));
6144      WR3:
6145         NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
6146END_ENTITY;
6147
6148-- IN AP242
6149ENTITY component_definition
6150   SUBTYPE OF (product_definition, product_definition_relationship);
6151   DERIVE
6152      SELF\product_definition_relationship.related_product_definition : component_definition := SELF;
6153   WHERE
6154      WR1:
6155         NOT EXISTS(SELF\product_definition_relationship.description);
6156      WR2:
6157         NOT EXISTS(SELF\property_definition.description);
6158      WR3:
6159         SELF\product_definition_relationship.id = SELF\product_definition.id;
6160      WR4:
6161         SELF\product_definition_relationship.name = 'definition usage';
6162      WR5:
6163         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF));
6164END_ENTITY;
6165
6166-- IN AP242
6167ENTITY component_feature
6168   SUBTYPE OF (shape_aspect);
6169      SELF\shape_aspect.of_shape : assembly_component;
6170END_ENTITY;
6171
6172-- IN AP242
6173ENTITY component_feature_joint
6174   SUBTYPE OF (shape_aspect_relationship, shape_aspect);
6175      SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
6176      SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
6177END_ENTITY;
6178
6179-- IN AP242
6180ENTITY component_feature_relationship
6181   SUBTYPE OF (shape_aspect_relationship);
6182      SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
6183      SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
6184   WHERE
6185      WR1:
6186         SELF\shape_aspect_relationship.related_shape_aspect :<>: SELF\shape_aspect_relationship.relating_shape_aspect;
6187END_ENTITY;
6188
6189-- IN AP242
6190ENTITY component_mating_constraint_condition
6191   SUBTYPE OF (shape_aspect);
6192   UNIQUE
6193      UR1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
6194END_ENTITY;
6195
6196-- IN AP242
6197ENTITY component_path_shape_aspect
6198   SUBTYPE OF (shape_aspect);
6199      location : multi_or_next_assembly_usage_occurrence;
6200      component_shape_aspect : internal_or_reflected_shape_aspect;
6201   UNIQUE
6202      UR1 : location, component_shape_aspect;
6203END_ENTITY;
6204
6205-- IN AP242
6206ENTITY component_terminal
6207   SUBTYPE OF (component_feature);
6208END_ENTITY;
6209
6210-- IN AP203e2
6211ENTITY composite_assembly_definition
6212   SUBTYPE OF (product_definition);
6213   WHERE
6214      WR1:
6215         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) = 1;
6216END_ENTITY;
6217
6218-- IN AP203e2/AP242
6219ENTITY composite_assembly_sequence_definition
6220   SUBTYPE OF (product_definition);
6221   WHERE
6222      WR1:
6223         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) > 0;
6224END_ENTITY;
6225
6226-- IN AP203e2/AP242
6227ENTITY composite_assembly_table
6228   SUBTYPE OF (part_laminate_table);
6229END_ENTITY;
6230
6231-- DIFF IN AP214
6232ENTITY composite_curve
6233   SUBTYPE OF (bounded_curve);
6234      segments : LIST [1:?] OF composite_curve_segment;
6235      self_intersect : LOGICAL;
6236   DERIVE
6237      closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous;
6238      n_segments : INTEGER := SIZEOF(segments);
6239   WHERE
6240      WR1:
6241         NOT closed_curve AND (SIZEOF(QUERY (temp <* segments| (temp.transition = discontinuous))) = 1) OR closed_curve AND (SIZEOF(QUERY (temp <* segments| (temp.transition = discontinuous))) = 0);
6242END_ENTITY;
6243
6244ENTITY composite_curve_on_surface
6245   SUPERTYPE OF (boundary_curve)
6246   SUBTYPE OF (composite_curve);
6247   DERIVE
6248      basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
6249   WHERE
6250      WR1:
6251         SIZEOF(basis_surface) > 0;
6252      WR2:
6253         constraints_composite_curve_on_surface(SELF);
6254END_ENTITY;
6255
6256ENTITY composite_curve_segment
6257   SUBTYPE OF (founded_item);
6258      transition : transition_code;
6259      same_sense : BOOLEAN;
6260      parent_curve : curve;
6261   INVERSE
6262      using_curves : BAG [1:?] OF composite_curve FOR segments;
6263   WHERE
6264      WR1:
6265         'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE' IN TYPEOF(parent_curve);
6266END_ENTITY;
6267
6268-- IN AP242
6269ENTITY composite_curve_transition_locator
6270   SUBTYPE OF (founded_item);
6271      basis_curve : composite_curve;
6272      transition_index : INTEGER;
6273   WHERE
6274      WR1:
6275         SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
6276END_ENTITY;
6277
6278-- IN AP242
6279ENTITY composite_group_shape_aspect
6280   SUBTYPE OF (composite_shape_aspect);
6281END_ENTITY;
6282
6283-- IN AP214/AP242
6284ENTITY composite_hole
6285   SUBTYPE OF (compound_feature);
6286   WHERE
6287      WR1:
6288         SELF\characterized_object.description IN [ 'counterbore', 'countersunk' ];
6289      WR2:
6290         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND ('STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(sar.related_shape_aspect)))) = 2))) = 1))) = 1;
6291      WR3:
6292         NOT (SELF\characterized_object.description = 'countersunk') OR (SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(sar.related_shape_aspect)) AND NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(sar.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY (fcr2 <* QUERY (sar2 <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar2.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar2)))| ('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr2.related_shape_aspect)))) = 1))) = 0))) = 0))) = 1))) = 1))) = 1);
6293END_ENTITY;
6294
6295-- IN AP203e2/AP242
6296ENTITY composite_material_designation
6297   SUBTYPE OF (material_designation);
6298END_ENTITY;
6299
6300-- DIFF IN AP214
6301-- DIFF IN AP203e2
6302ENTITY composite_shape_aspect
6303   SUPERTYPE OF (ONEOF(continuous_shape_aspect, common_datum, composite_group_shape_aspect))
6304   SUBTYPE OF (shape_aspect);
6305   INVERSE
6306      component_relationships : SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
6307END_ENTITY;
6308
6309-- IN AP203e2/AP242
6310ENTITY composite_sheet_representation
6311   SUBTYPE OF (shape_representation);
6312   WHERE
6313      WR1:
6314         SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION') ] * TYPEOF(SELF)) = 1;
6315END_ENTITY;
6316
6317ENTITY composite_text
6318   SUBTYPE OF (geometric_representation_item);
6319      collected_text : SET [2:?] OF text_or_character;
6320   WHERE
6321      WR1:
6322         acyclic_composite_text(SELF, SELF.collected_text);
6323END_ENTITY;
6324
6325ENTITY composite_text_with_associated_curves
6326   SUBTYPE OF (composite_text);
6327      associated_curves : SET [1:?] OF curve;
6328END_ENTITY;
6329
6330ENTITY composite_text_with_blanking_box
6331   SUBTYPE OF (composite_text);
6332      blanking : planar_box;
6333END_ENTITY;
6334
6335-- IN AP203e2/AP242
6336ENTITY composite_text_with_delineation
6337   SUBTYPE OF (composite_text);
6338      delineation : text_delineation;
6339END_ENTITY;
6340
6341ENTITY composite_text_with_extent
6342   SUBTYPE OF (composite_text);
6343      extent : planar_extent;
6344END_ENTITY;
6345
6346-- IN AP242
6347ENTITY composite_unit_shape_aspect
6348   SUBTYPE OF (composite_shape_aspect);
6349END_ENTITY;
6350
6351-- IN AP214/AP242
6352ENTITY compound_feature
6353   SUBTYPE OF (feature_definition);
6354   WHERE
6355      WR1:
6356         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (csa.name = 'compound feature in solid') AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)))) = 1))) = 1;
6357      WR2:
6358         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)))) = 1))) = 1;
6359      WR3:
6360         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY (fcr <* csa.component_relationships| NOT ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr)))) = 0))) = 1))) = 1;
6361      WR4:
6362         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)))) = 1))) = 1;
6363      WR5:
6364         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.THREAD' IN TYPEOF(sar.related_shape_aspect)))) = 0))) = 1))) = 1;
6365      WR6:
6366         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.COMPOUND_FEATURE' IN TYPEOF(sar.related_shape_aspect)) AND (sar.related_shape_aspect\characterized_object.name <> SELF\characterized_object.name))) = 0))) = 1))) = 1;
6367END_ENTITY;
6368
6369-- DIFF IN AP214
6370-- DIFF IN AP203e2
6371ENTITY compound_representation_item
6372   SUPERTYPE OF (ONEOF(point_and_vector, point_path) ANDOR ONEOF(row_representation_item, table_representation_item))
6373   SUBTYPE OF (representation_item);
6374      item_element : compound_item_definition;
6375END_ENTITY;
6376
6377ENTITY compound_shape_representation
6378   SUBTYPE OF (shape_representation);
6379   WHERE
6380      WR1:
6381         ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND (SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3);
6382      WR2:
6383         SIZEOF(QUERY (cbsr_i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_BASED_WIREFRAME_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'FACE_BASED_SURFACE_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_3D') ] * TYPEOF(cbsr_i)) <> 1))) = 0;
6384      WR3:
6385         SIZEOF(QUERY (cbsr_i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_BASED_WIREFRAME_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'FACE_BASED_SURFACE_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM') ] * TYPEOF(cbsr_i)) = 1))) > 0;
6386      WR4:
6387         SIZEOF(QUERY (cbsr_i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(cbsr_i)) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOUND_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION') ] * TYPEOF(cbsr_i\mapped_item.mapping_source)) <> 1))) = 0;
6388END_ENTITY;
6389
6390-- IN AP214/AP242
6391ENTITY concat_expression
6392   SUBTYPE OF (string_expression, multiple_arity_generic_expression);
6393      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF string_expression;
6394END_ENTITY;
6395
6396ENTITY concentricity_tolerance
6397   SUBTYPE OF (geometric_tolerance_with_datum_reference);
6398END_ENTITY;
6399
6400ENTITY concept_feature_operator;
6401      name : label;
6402      description : OPTIONAL text;
6403END_ENTITY;
6404
6405ENTITY concept_feature_relationship;
6406      name : label;
6407      description : OPTIONAL text;
6408      relating_product_concept_feature : product_concept_feature;
6409      related_product_concept_feature : product_concept_feature;
6410END_ENTITY;
6411
6412ENTITY concept_feature_relationship_with_condition
6413   SUBTYPE OF (concept_feature_relationship);
6414      conditional_operator : concept_feature_operator;
6415END_ENTITY;
6416
6417ENTITY conditional_concept_feature
6418   SUBTYPE OF (product_concept_feature);
6419      condition : concept_feature_relationship_with_condition;
6420END_ENTITY;
6421
6422-- IN AP203e2/AP242
6423ENTITY conductance_measure_with_unit
6424   SUBTYPE OF (measure_with_unit);
6425   WHERE
6426      WR1:
6427         'STEP_MERGED_CAD_SCHEMA.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
6428END_ENTITY;
6429
6430-- IN AP203e2/AP242
6431ENTITY conductance_unit
6432   SUBTYPE OF (derived_unit);
6433   WHERE
6434      WR1:
6435         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.siemens);
6436END_ENTITY;
6437
6438ENTITY configurable_item
6439   SUBTYPE OF (configuration_item);
6440      item_concept_feature : SET [1:?] OF product_concept_feature_association;
6441END_ENTITY;
6442
6443-- IN AP214
6444ENTITY configuration_definition;
6445      pair_values : SET [1:?] OF pair_value;
6446      t_parameter : motion_parameter_measure;
6447END_ENTITY;
6448
6449-- DIFF IN AP214
6450ENTITY configuration_design;
6451      configuration : configuration_item;
6452      design : configuration_design_item;
6453   DERIVE
6454      description : text := get_description_value(SELF);
6455      name : label := get_name_value(SELF);
6456   UNIQUE
6457      UR1 : configuration, design;
6458   WHERE
6459      WR1:
6460         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
6461      WR2:
6462         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
6463END_ENTITY;
6464
6465-- DIFF IN AP214
6466ENTITY configuration_effectivity
6467   SUBTYPE OF (product_definition_effectivity);
6468      configuration : configuration_design;
6469   UNIQUE
6470      UR1 : configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id;
6471   WHERE
6472      WR1:
6473         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF\product_definition_effectivity.usage);
6474END_ENTITY;
6475
6476-- IN AP214
6477ENTITY configuration_interpolation;
6478      previous_configuration_definition : configuration_definition;
6479      next_configuration_definition : configuration_definition;
6480      interpolation : interpolation_type;
6481END_ENTITY;
6482
6483ENTITY configuration_item;
6484      id : identifier;
6485      name : label;
6486      description : OPTIONAL text;
6487      item_concept : product_concept;
6488      purpose : OPTIONAL label;
6489END_ENTITY;
6490
6491-- IN AP203e2/AP242
6492ENTITY configuration_item_hierarchical_relationship
6493   SUBTYPE OF (configuration_item_relationship);
6494END_ENTITY;
6495
6496-- IN AP203e2/AP242
6497ENTITY configuration_item_relationship;
6498      name : label;
6499      description : OPTIONAL text;
6500      relating_configuration_item : configuration_item;
6501      related_configuration_item : configuration_item;
6502END_ENTITY;
6503
6504-- IN AP203e2/AP242
6505ENTITY configuration_item_revision_sequence
6506   SUBTYPE OF (configuration_item_relationship);
6507END_ENTITY;
6508
6509ENTITY configured_effectivity_assignment
6510   SUBTYPE OF (effectivity_assignment);
6511      items : SET [1:?] OF configured_effectivity_item;
6512   WHERE
6513      WR1:
6514         (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EFFECTIVITY' ] * TYPEOF(SELF.assigned_effectivity)) = 1) AND (SELF.assigned_effectivity.id = 'configuration validity');
6515      WR2:
6516         SIZEOF(SELF.items) = 1;
6517      WR3:
6518         SIZEOF(QUERY (i <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(i)) OR NOT (i\product_definition.frame_of_reference.name IN [ 'conceptual definition', 'part occurrence', 'functional definition', 'alternative definition' ]))) = 0;
6519      WR4:
6520         SELF.role.name IN [ 'design', 'usage' ];
6521      WR5:
6522         (SELF.role.name <> 'design') OR (SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence'))) = 0);
6523      WR6:
6524         (SELF.role.name <> 'usage') OR (SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition'))) = 0);
6525      WR7:
6526         SELF.role.description IN [ 'exception', 'inherited', 'local' ];
6527      WR8:
6528         SIZEOF(QUERY (x <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT')| ('STEP_MERGED_CAD_SCHEMA.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x)))) = 1;
6529END_ENTITY;
6530
6531-- DIFF IN AP214
6532ENTITY configured_effectivity_context_assignment
6533   SUBTYPE OF (effectivity_context_assignment);
6534      items : SET [1:?] OF configured_effectivity_context_item;
6535      SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment;
6536   WHERE
6537      WR1:
6538         SIZEOF(SELF.items) = 1;
6539END_ENTITY;
6540
6541ENTITY conic
6542   SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola))
6543   SUBTYPE OF (curve);
6544      position : axis2_placement;
6545END_ENTITY;
6546
6547-- IN AP203e2/AP242
6548ENTITY conical_stepped_hole_transition
6549   SUBTYPE OF (geometric_representation_item);
6550      transition_number : positive_integer;
6551      cone_apex_angle : plane_angle_measure;
6552      cone_base_radius : positive_length_measure;
6553END_ENTITY;
6554
6555ENTITY conical_surface
6556   SUBTYPE OF (elementary_surface);
6557      radius : length_measure;
6558      semi_angle : plane_angle_measure;
6559   WHERE
6560      WR1:
6561         radius >= 0.0;
6562END_ENTITY;
6563
6564ENTITY connected_edge_set
6565   SUBTYPE OF (topological_representation_item);
6566      ces_edges : SET [1:?] OF edge;
6567END_ENTITY;
6568
6569ENTITY connected_face_set
6570   SUPERTYPE OF (ONEOF(closed_shell, open_shell))
6571   SUBTYPE OF (topological_representation_item);
6572      cfs_faces : SET [1:?] OF face;
6573END_ENTITY;
6574
6575ENTITY connected_face_sub_set
6576   SUBTYPE OF (connected_face_set);
6577      parent_face_set : connected_face_set;
6578END_ENTITY;
6579
6580-- IN AP242
6581ENTITY connection_zone_based_assembly_joint
6582   SUBTYPE OF (assembly_joint);
6583END_ENTITY;
6584
6585-- IN AP242
6586ENTITY connection_zone_interface_plane_relationship
6587   SUBTYPE OF (shape_aspect, shape_aspect_relationship);
6588   UNIQUE
6589      UR1 : SELF\shape_aspect.name;
6590END_ENTITY;
6591
6592-- IN AP242
6593ENTITY constant_function
6594   SUBTYPE OF (maths_function, generic_literal);
6595      sole_output : maths_value;
6596      source_of_domain : maths_space_or_function;
6597   WHERE
6598      WR1:
6599         no_cyclic_domain_reference(source_of_domain, [ SELF ]);
6600      WR2:
6601         expression_is_constant(domain_from(source_of_domain));
6602END_ENTITY;
6603
6604-- IN AP242
6605ENTITY constrained_kinematic_motion_representation
6606   SUBTYPE OF (representation_relationship_with_transformation);
6607      SELF\representation_relationship.rep_1 : representative_shape_representation;
6608      SELF\representation_relationship.rep_2 : representative_shape_representation;
6609   WHERE
6610      WR1:
6611         ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
6612      WR2:
6613         (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) = 3) AND (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) = 3);
6614      WR3:
6615         (SELF\representation_relationship.rep_1 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND (SELF\representation_relationship.rep_2 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
6616      WR4:
6617         'STEP_MERGED_CAD_SCHEMA.KINEMATIC_PAIR' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
6618END_ENTITY;
6619
6620ENTITY constructive_geometry_representation
6621   SUBTYPE OF (representation);
6622   WHERE
6623      WR1:
6624         ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ((2 <= SELF.context_of_items\geometric_representation_context.coordinate_space_dimension) AND (SELF.context_of_items\geometric_representation_context.coordinate_space_dimension <= 3));
6625      WR2:
6626         SIZEOF(QUERY (cgr_i <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PLACEMENT', 'STEP_MERGED_CAD_SCHEMA.CURVE', 'STEP_MERGED_CAD_SCHEMA.EDGE', 'STEP_MERGED_CAD_SCHEMA.FACE', 'STEP_MERGED_CAD_SCHEMA.POINT', 'STEP_MERGED_CAD_SCHEMA.SURFACE', 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' ] * TYPEOF(cgr_i)) <> 1))) = 0;
6627      WR3:
6628         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_2')) > 0;
6629      WR4:
6630         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION')) = 0;
6631END_ENTITY;
6632
6633-- DIFF IN AP214
6634ENTITY constructive_geometry_representation_relationship
6635   SUBTYPE OF (representation_relationship);
6636      SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation;
6637      SELF\representation_relationship.rep_2 : constructive_geometry_representation;
6638   WHERE
6639      WR1:
6640         (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items));
6641      WR2:
6642         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
6643END_ENTITY;
6644
6645ENTITY contact_ratio_representation
6646   SUBTYPE OF (representation);
6647   WHERE
6648      WR1:
6649         (SIZEOF(SELF.items) = 1) AND (SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) = 1) AND (i.name = 'ratio value'))) = 1);
6650      WR2:
6651         (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (pdr\property_definition_representation.name = 'contact ratio reference'))) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (pdr\property_definition_representation.name = 'contact ratio reference') AND ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(pdr\property_definition_representation.definition\property_definition.definition)))) = 1);
6652      WR3:
6653         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa\general_property_association.base_definition)) AND (gpa\general_property_association.base_definition\general_property.name = 'surface_condition'))) = 1))) = 1);
6654END_ENTITY;
6655
6656-- IN AP242
6657ENTITY contacting_feature
6658   SUBTYPE OF (shape_aspect);
6659   WHERE
6660      WR1:
6661         SELF\shape_aspect.product_definitional = FALSE;
6662END_ENTITY;
6663
6664ENTITY context_dependent_invisibility
6665   SUBTYPE OF (invisibility);
6666      presentation_context : invisibility_context;
6667END_ENTITY;
6668
6669-- IN AP242
6670ENTITY context_dependent_kinematic_link_representation;
6671      representation_relation : kinematic_link_representation_association;
6672      represented_product_relation : product_definition_relationship_kinematics;
6673END_ENTITY;
6674
6675ENTITY context_dependent_over_riding_styled_item
6676   SUBTYPE OF (over_riding_styled_item);
6677      style_context : LIST [1:?] OF style_context_select;
6678   WHERE
6679      WR1:
6680         (SIZEOF(QUERY (sc <* SELF.style_context| ('STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(sc)))) = 1) OR (SIZEOF(QUERY (sc <* SELF.style_context| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(sc)) OR ('STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)))) = SIZEOF(style_context));
6681END_ENTITY;
6682
6683ENTITY context_dependent_shape_representation;
6684      representation_relation : shape_representation_relationship;
6685      represented_product_relation : product_definition_shape;
6686   DERIVE
6687      description : text := get_description_value(SELF);
6688      name : label := get_name_value(SELF);
6689   WHERE
6690      WR1:
6691         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition);
6692      WR2:
6693         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
6694      WR3:
6695         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
6696END_ENTITY;
6697
6698ENTITY context_dependent_unit
6699   SUBTYPE OF (named_unit);
6700      name : label;
6701END_ENTITY;
6702
6703-- IN AP242
6704ENTITY continuous_shape_aspect
6705   SUPERTYPE OF (ONEOF(between_shape_aspect, all_around_shape_aspect))
6706   SUBTYPE OF (composite_shape_aspect);
6707END_ENTITY;
6708
6709ENTITY contract;
6710      name : label;
6711      purpose : text;
6712      kind : contract_type;
6713END_ENTITY;
6714
6715ENTITY contract_assignment
6716   ABSTRACT SUPERTYPE;
6717      assigned_contract : contract;
6718   DERIVE
6719      role : object_role := get_role(SELF);
6720   WHERE
6721      WR1:
6722         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
6723END_ENTITY;
6724
6725-- IN AP203e2/AP242
6726ENTITY contract_relationship;
6727      id : identifier;
6728      name : label;
6729      description : OPTIONAL text;
6730      relating_contract : contract;
6731      related_contract : contract;
6732END_ENTITY;
6733
6734ENTITY contract_type;
6735      description : label;
6736END_ENTITY;
6737
6738-- DIFF IN AP214
6739ENTITY conversion_based_unit
6740   SUBTYPE OF (named_unit);
6741      name : label;
6742      conversion_factor : measure_with_unit;
6743   WHERE
6744      WR1:
6745         SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component);
6746END_ENTITY;
6747
6748ENTITY coordinated_universal_time_offset;
6749      hour_offset : INTEGER;
6750      minute_offset : OPTIONAL INTEGER;
6751      sense : ahead_or_behind;
6752   DERIVE
6753      actual_minute_offset : INTEGER := NVL(minute_offset, 0);
6754   WHERE
6755      WR1:
6756         (0 <= hour_offset) AND (hour_offset < 24);
6757      WR2:
6758         (0 <= actual_minute_offset) AND (actual_minute_offset <= 59);
6759      WR3:
6760         NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (sense = exact));
6761END_ENTITY;
6762
6763-- IN AP242
6764ENTITY coordinates_list
6765   SUBTYPE OF (tessellated_item);
6766      npoints : INTEGER;
6767      position_coords : LIST [1:?] OF LIST [3:3] OF REAL;
6768   WHERE
6769      WR1:
6770         npoints = SIZEOF(position_coords);
6771      WR2:
6772         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.REPOSITIONED_TESSELLATED_ITEM' ] * TYPEOF(SELF)) = 0;
6773END_ENTITY;
6774
6775-- IN AP214/AP242
6776ENTITY cos_function
6777   SUBTYPE OF (unary_function_call);
6778END_ENTITY;
6779
6780-- IN AP242
6781ENTITY csg_2d_shape_representation
6782   SUBTYPE OF (shape_representation);
6783      SELF\representation.items : SET [1:?] OF csg_2d_shape_select;
6784   WHERE
6785      WR1:
6786         SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
6787      WR2:
6788         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CSG_SOLID' ] * TYPEOF(it)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'CSG_2D_SHAPE_REPRESENTATION' IN TYPEOF(it\mapped_item.mapping_source.mapped_representation)))) >= 1;
6789      WR3:
6790         SIZEOF(QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CSG_2D_SHAPE_REPRESENTATION' IN TYPEOF(it\mapped_item.mapping_source.mapped_representation)))) = 0;
6791END_ENTITY;
6792
6793-- IN AP242
6794ENTITY csg_primitive_solid_2d
6795   SUBTYPE OF (csg_solid_2d);
6796      SELF\csg_solid.tree_root_expression : bounded_primitive_2d;
6797END_ENTITY;
6798
6799ENTITY csg_shape_representation
6800   SUBTYPE OF (shape_representation);
6801   WHERE
6802      WR1:
6803         SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
6804      WR2:
6805         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CSG_SOLID', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D', 'STEP_MERGED_CAD_SCHEMA.SOLID_REPLICA', 'STEP_MERGED_CAD_SCHEMA.REVOLVED_FACE_SOLID', 'STEP_MERGED_CAD_SCHEMA.EXTRUDED_FACE_SOLID' ] * TYPEOF(it)) <> 1))) = 0;
6806      WR3:
6807         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.CSG_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
6808      WR4:
6809         SIZEOF(QUERY (sr <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SOLID_REPLICA' IN TYPEOF(it)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CSG_SOLID', 'STEP_MERGED_CAD_SCHEMA.REVOLVED_FACE_SOLID', 'STEP_MERGED_CAD_SCHEMA.EXTRUDED_FACE_SOLID' ] * TYPEOF(sr\solid_replica.parent_solid)) = 0))) = 0;
6810      WR5:
6811         SIZEOF(QUERY (it <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) > 0;
6812END_ENTITY;
6813
6814ENTITY csg_solid
6815   SUBTYPE OF (solid_model);
6816      tree_root_expression : csg_select;
6817END_ENTITY;
6818
6819-- IN AP242
6820ENTITY csg_solid_2d
6821   SUBTYPE OF (csg_solid);
6822      SELF\csg_solid.tree_root_expression : csg_select_2d;
6823   WHERE
6824      WR1:
6825         valid_csg_2d_primitives(SELF);
6826END_ENTITY;
6827
6828-- IN AP203e2/AP242
6829ENTITY currency
6830   ABSTRACT SUPERTYPE OF (ONEOF(externally_defined_currency, iso4217_currency))
6831   SUBTYPE OF (context_dependent_unit);
6832   WHERE
6833      WR1:
6834         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
6835END_ENTITY;
6836
6837-- IN AP203e2/AP242
6838ENTITY currency_measure_with_unit
6839   SUBTYPE OF (measure_with_unit);
6840      SELF\measure_with_unit.unit_component : currency;
6841END_ENTITY;
6842
6843-- IN AP242
6844ENTITY current_change_element_assignment
6845   SUBTYPE OF (group_assignment);
6846      items : SET [1:?] OF change_management_object;
6847      SELF\group_assignment.assigned_group : current_element_assignment_select;
6848END_ENTITY;
6849
6850ENTITY curve
6851   SUPERTYPE OF (ONEOF(line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica))
6852   SUBTYPE OF (geometric_representation_item);
6853END_ENTITY;
6854
6855-- IN AP242
6856ENTITY curve_based_path
6857   SUBTYPE OF (path_node);
6858      path_curve : curve;
6859END_ENTITY;
6860
6861-- IN AP242
6862ENTITY curve_based_path_with_orientation
6863   SUBTYPE OF (kinematic_path_segment);
6864      position_curve : bounded_curve;
6865      orientation_curve : bounded_curve;
6866   WHERE
6867      WR1:
6868         TYPEOF(position_curve) = TYPEOF(orientation_curve);
6869END_ENTITY;
6870
6871-- IN AP242
6872ENTITY curve_based_path_with_orientation_and_parameters
6873   SUBTYPE OF (curve_based_path_with_orientation);
6874      parameters : path_parameter_representation;
6875END_ENTITY;
6876
6877ENTITY curve_bounded_surface
6878   SUBTYPE OF (bounded_surface);
6879      basis_surface : surface;
6880      boundaries : SET [1:?] OF boundary_curve;
6881      implicit_outer : BOOLEAN;
6882   WHERE
6883      WR1:
6884         NOT implicit_outer OR (SIZEOF(QUERY (temp <* boundaries| ('STEP_MERGED_CAD_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp)))) = 0);
6885      WR2:
6886         NOT implicit_outer OR ('STEP_MERGED_CAD_SCHEMA.BOUNDED_SURFACE' IN TYPEOF(basis_surface));
6887      WR3:
6888         SIZEOF(QUERY (temp <* boundaries| ('STEP_MERGED_CAD_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp)))) <= 1;
6889      WR4:
6890         SIZEOF(QUERY (temp <* boundaries| (temp\composite_curve_on_surface.basis_surface[1] <> SELF.basis_surface))) = 0;
6891END_ENTITY;
6892
6893ENTITY curve_dimension
6894   SUBTYPE OF (dimension_curve_directed_callout);
6895END_ENTITY;
6896
6897-- IN AP242
6898ENTITY curve_distance_geometric_constraint
6899   SUBTYPE OF (explicit_geometric_constraint);
6900      near_points : SET [0:4] OF near_point_relationship;
6901      SELF\explicit_constraint.constrained_elements : SET [1:2] OF curve;
6902      SELF\explicit_constraint.reference_elements : SET [0:4] OF point_curve_or_surface_constraint_element;
6903   WHERE
6904      WR1:
6905         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR ('STEP_MERGED_CAD_SCHEMA.CDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
6906      WR2:
6907         SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
6908      WR3:
6909         SIZEOF(QUERY (q <* near_points| NOT (q\representation_item_relationship.relating_representation_item IN SELF\explicit_constraint.reference_elements))) = 0;
6910END_ENTITY;
6911
6912-- IN AP242
6913ENTITY curve_length_geometric_constraint
6914   SUBTYPE OF (explicit_geometric_constraint);
6915      SELF\explicit_constraint.constrained_elements : SET [1:?] OF bounded_curve;
6916   WHERE
6917      WR1:
6918         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
6919END_ENTITY;
6920
6921ENTITY curve_replica
6922   SUBTYPE OF (curve);
6923      parent_curve : curve;
6924      transformation : cartesian_transformation_operator;
6925   WHERE
6926      WR1:
6927         transformation.dim = parent_curve.dim;
6928      WR2:
6929         acyclic_curve_replica(SELF, parent_curve);
6930END_ENTITY;
6931
6932-- IN AP242
6933ENTITY curve_segment_set
6934   SUBTYPE OF (geometric_representation_item);
6935      segments : SET [1:?] OF composite_curve_segment;
6936END_ENTITY;
6937
6938-- IN AP242
6939ENTITY curve_smoothness_geometric_constraint
6940   SUBTYPE OF (explicit_geometric_constraint);
6941      smoothness : transition_code;
6942      SELF\explicit_constraint.constrained_elements : SET [1:1] OF curve_segment_set;
6943   WHERE
6944      WR1:
6945         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
6946END_ENTITY;
6947
6948ENTITY curve_style
6949   SUBTYPE OF (founded_item);
6950      name : label;
6951      curve_font : curve_font_or_scaled_curve_font_select;
6952      curve_width : size_select;
6953      curve_colour : colour;
6954END_ENTITY;
6955
6956ENTITY curve_style_font
6957   SUBTYPE OF (founded_item);
6958      name : label;
6959      pattern_list : LIST [1:?] OF curve_style_font_pattern;
6960END_ENTITY;
6961
6962-- IN AP203e2/AP242
6963ENTITY curve_style_font_and_scaling
6964   SUBTYPE OF (founded_item);
6965      name : label;
6966      curve_font : curve_style_font_select;
6967      curve_font_scaling : REAL;
6968END_ENTITY;
6969
6970ENTITY curve_style_font_pattern
6971   SUBTYPE OF (founded_item);
6972      visible_segment_length : positive_length_measure;
6973      invisible_segment_length : positive_length_measure;
6974END_ENTITY;
6975
6976-- IN AP242
6977ENTITY curve_style_parameters_representation
6978   SUBTYPE OF (representation);
6979END_ENTITY;
6980
6981-- IN AP242
6982ENTITY curve_style_parameters_with_ends
6983   SUBTYPE OF (curve_style_parameters_representation);
6984END_ENTITY;
6985
6986ENTITY curve_style_rendering;
6987      rendering_method : shading_curve_method;
6988      rendering_properties : surface_rendering_properties;
6989END_ENTITY;
6990
6991ENTITY curve_swept_solid_shape_representation
6992   SUBTYPE OF (shape_representation);
6993   WHERE
6994      WR1:
6995         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SWEPT_AREA_SOLID', 'STEP_MERGED_CAD_SCHEMA.SWEPT_DISK_SOLID', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
6996      WR2:
6997         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SWEPT_AREA_SOLID', 'STEP_MERGED_CAD_SCHEMA.SWEPT_DISK_SOLID', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
6998      WR3:
6999         SIZEOF(QUERY (mi <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
7000      WR4:
7001         SIZEOF(QUERY (scsas <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE_SWEPT_AREA_SOLID' IN TYPEOF(it)))| NOT (('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0;
7002END_ENTITY;
7003
7004-- IN AP242
7005ENTITY curve_with_excessive_segments
7006   SUBTYPE OF (overcomplex_geometry);
7007      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
7008   WHERE
7009      WR1:
7010         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
7011      WR2:
7012         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
7013      WR3:
7014         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_OR_COMPOSITE_CURVE_SELECT' ]);
7015      WR4:
7016         validate_locations_of_extreme_value_type(SELF, []);
7017      WR5:
7018         validate_accuracy_types(SELF, []);
7019END_ENTITY;
7020
7021-- IN AP242
7022ENTITY curve_with_small_curvature_radius
7023   SUBTYPE OF (geometry_with_local_near_degeneracy);
7024      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
7025   WHERE
7026      WR1:
7027         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
7028      WR2:
7029         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
7030      WR3:
7031         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE' ]);
7032      WR4:
7033         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE' ]);
7034      WR5:
7035         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
7036END_ENTITY;
7037
7038-- DIFF IN AP214
7039-- IN AP214/AP242
7040ENTITY cylindrical_pair
7041   SUBTYPE OF (low_order_kinematic_pair);
7042   DERIVE
7043      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
7044      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
7045      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
7046      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
7047      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
7048      SELF\low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
7049END_ENTITY;
7050
7051-- IN AP214
7052ENTITY cylindrical_pair_range
7053   SUBTYPE OF (simple_pair_range);
7054      SELF\simple_pair_range.applies_to_pair : cylindrical_pair;
7055      lower_limit_actual_translation : translational_range_measure;
7056      upper_limit_actual_translation : translational_range_measure;
7057      lower_limit_actual_rotation : rotational_range_measure;
7058      upper_limit_actual_rotation : rotational_range_measure;
7059   WHERE
7060      wr1:
7061         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_translation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_translation))) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
7062      wr2:
7063         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation))) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
7064END_ENTITY;
7065
7066-- DIFF IN AP214
7067-- IN AP214/AP242
7068ENTITY cylindrical_pair_value
7069   SUBTYPE OF (pair_value);
7070      actual_translation : length_measure;
7071      actual_rotation : plane_angle_measure;
7072      SELF\pair_value.applies_to_pair : cylindrical_pair;
7073END_ENTITY;
7074
7075-- IN AP242
7076ENTITY cylindrical_pair_with_range
7077   SUBTYPE OF (cylindrical_pair);
7078      lower_limit_actual_translation : OPTIONAL length_measure;
7079      upper_limit_actual_translation : OPTIONAL length_measure;
7080      lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
7081      upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
7082   WHERE
7083      WR1:
7084         (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
7085      WR2:
7086         (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
7087END_ENTITY;
7088
7089ENTITY cylindrical_surface
7090   SUBTYPE OF (elementary_surface);
7091      radius : positive_length_measure;
7092END_ENTITY;
7093
7094ENTITY cylindricity_tolerance
7095   SUBTYPE OF (geometric_tolerance);
7096   WHERE
7097      WR1:
7098         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
7099END_ENTITY;
7100
7101ENTITY data_environment;
7102      name : label;
7103      description : text;
7104      elements : SET [1:?] OF property_definition_representation;
7105END_ENTITY;
7106
7107-- IN AP242
7108ENTITY data_quality_assessment_measurement_association;
7109      assessment_specification : data_quality_criterion_assessment_association;
7110      measurement_requirement : data_quality_criterion_measurement_association;
7111   WHERE
7112      WR1:
7113         SELF.measurement_requirement\representation_item_relationship.relating_representation_item :=: SELF.assessment_specification.criterion;
7114END_ENTITY;
7115
7116-- IN AP242
7117ENTITY data_quality_assessment_specification;
7118      description : text;
7119END_ENTITY;
7120
7121-- IN AP242
7122ENTITY data_quality_criteria_representation
7123   SUBTYPE OF (representation);
7124   WHERE
7125      WR1:
7126         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION' IN TYPEOF(q)))) > 0;
7127END_ENTITY;
7128
7129-- IN AP242
7130ENTITY data_quality_criterion
7131   SUBTYPE OF (representation_item);
7132   WHERE
7133      WR1:
7134         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN TYPEOF(q)))) = 0;
7135END_ENTITY;
7136
7137-- IN AP242
7138ENTITY data_quality_criterion_assessment_association;
7139      criterion : data_quality_criterion;
7140      assessment_specification : data_quality_assessment_specification;
7141END_ENTITY;
7142
7143-- IN AP242
7144ENTITY data_quality_criterion_measurement_association
7145   SUBTYPE OF (representation_item_relationship);
7146      SELF\representation_item_relationship.related_representation_item : data_quality_measurement_requirement;
7147      SELF\representation_item_relationship.relating_representation_item : data_quality_criterion;
7148END_ENTITY;
7149
7150-- IN AP242
7151ENTITY data_quality_definition;
7152      description : text;
7153END_ENTITY;
7154
7155-- IN AP242
7156ENTITY data_quality_definition_relationship;
7157      description : text;
7158      relating_data_quality_definition : data_quality_definition;
7159      related_data_quality_definition : data_quality_definition;
7160END_ENTITY;
7161
7162-- IN AP242
7163ENTITY data_quality_definition_representation_relationship;
7164      description : text;
7165      definition : data_quality_definition;
7166      used_representation : used_quality_representation_select;
7167END_ENTITY;
7168
7169-- IN AP242
7170ENTITY data_quality_inspection_criterion_report
7171   SUBTYPE OF (data_quality_inspection_report);
7172      statistical_values : SET [1:2] OF data_quality_inspection_criterion_report_item;
7173   WHERE
7174      WR1:
7175         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SUMMARY_REPORT_REQUEST' IN TYPEOF(i1)))) > 0;
7176      WR2:
7177         (SIZEOF(SELF.statistical_values) = 1) OR (SELF.statistical_values[1].value_type <> SELF.statistical_values[2].value_type);
7178END_ENTITY;
7179
7180-- IN AP242
7181ENTITY data_quality_inspection_criterion_report_item
7182   SUBTYPE OF (representation_item);
7183      statistical_value : INTEGER;
7184      value_type : statistical_value_type;
7185   WHERE
7186      WR1:
7187         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' IN TYPEOF(q)))) = 0;
7188END_ENTITY;
7189
7190-- IN AP242
7191ENTITY data_quality_inspection_instance_report
7192   SUBTYPE OF (data_quality_inspection_report);
7193      inspected_instances : LIST [1:?] OF data_quality_inspection_instance_report_item;
7194   WHERE
7195      WR1:
7196         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DETAILED_REPORT_REQUEST' IN TYPEOF(i1)))) > 0;
7197END_ENTITY;
7198
7199-- IN AP242
7200ENTITY data_quality_inspection_instance_report_item
7201   SUBTYPE OF (representation_item);
7202      inspected_elements : SET [1:?] OF inspected_element_select;
7203   WHERE
7204      WR1:
7205         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' IN TYPEOF(q)))) = 0;
7206END_ENTITY;
7207
7208-- IN AP242
7209ENTITY data_quality_inspection_report
7210   SUPERTYPE OF (ONEOF(data_quality_inspection_criterion_report, data_quality_inspection_instance_report))
7211   SUBTYPE OF (representation_item);
7212      inspection_result : data_quality_inspection_result;
7213   WHERE
7214      WR1:
7215         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' IN TYPEOF(q)))) = 0;
7216END_ENTITY;
7217
7218-- IN AP242
7219ENTITY data_quality_inspection_result
7220   SUBTYPE OF (representation_item);
7221      criterion_inspected : data_quality_criterion;
7222   WHERE
7223      WR1:
7224         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' IN TYPEOF(q)))) = 0;
7225END_ENTITY;
7226
7227-- IN AP242
7228ENTITY data_quality_inspection_result_representation
7229   SUBTYPE OF (representation);
7230      criteria_inspected : data_quality_criteria_representation;
7231   WHERE
7232      WR1:
7233         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q)))) > 0;
7234      WR2:
7235         SIZEOF(inspected_product_definition(SELF)) > 0;
7236END_ENTITY;
7237
7238-- IN AP242
7239ENTITY data_quality_inspection_result_with_judgement
7240   SUBTYPE OF (data_quality_inspection_result);
7241      judgement : BOOLEAN;
7242END_ENTITY;
7243
7244-- IN AP242
7245ENTITY data_quality_measurement_requirement
7246   SUBTYPE OF (representation_item);
7247   WHERE
7248      WR1:
7249         SIZEOF(QUERY (q <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN TYPEOF(q)))) = 0;
7250END_ENTITY;
7251
7252-- IN AP242
7253ENTITY data_quality_report_measurement_association
7254   SUBTYPE OF (representation_item_relationship);
7255      SELF\representation_item_relationship.related_representation_item : data_quality_inspection_report;
7256      SELF\representation_item_relationship.relating_representation_item : data_quality_measurement_requirement;
7257END_ENTITY;
7258
7259-- IN AP242
7260ENTITY data_quality_report_request
7261   ABSTRACT SUPERTYPE OF (ONEOF(summary_report_request, detailed_report_request));
7262      description : text;
7263      criterion_of_report_request : data_quality_criterion;
7264END_ENTITY;
7265
7266-- DIFF IN AP214
7267ENTITY date
7268   SUPERTYPE OF (ONEOF(calendar_date, ordinal_date, week_of_year_and_day_date, year_month));
7269      year_component : year_number;
7270END_ENTITY;
7271
7272ENTITY date_and_time;
7273      date_component : date;
7274      time_component : local_time;
7275END_ENTITY;
7276
7277ENTITY date_and_time_assignment
7278   ABSTRACT SUPERTYPE;
7279      assigned_date_and_time : date_and_time;
7280      role : date_time_role;
7281END_ENTITY;
7282
7283ENTITY date_assignment
7284   ABSTRACT SUPERTYPE;
7285      assigned_date : date;
7286      role : date_role;
7287END_ENTITY;
7288
7289-- IN AP203e2/AP242
7290ENTITY date_representation_item
7291   SUBTYPE OF (representation_item, date);
7292END_ENTITY;
7293
7294ENTITY date_role;
7295      name : label;
7296   DERIVE
7297      description : text := get_description_value(SELF);
7298   WHERE
7299      WR1:
7300         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
7301END_ENTITY;
7302
7303-- IN AP203e2/AP242
7304ENTITY date_time_representation_item
7305   SUBTYPE OF (representation_item, date_and_time);
7306END_ENTITY;
7307
7308ENTITY date_time_role;
7309      name : label;
7310   DERIVE
7311      description : text := get_description_value(SELF);
7312   WHERE
7313      WR1:
7314         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
7315END_ENTITY;
7316
7317-- DIFF IN AP214
7318-- DIFF IN AP203e2
7319ENTITY dated_effectivity
7320   SUBTYPE OF (effectivity);
7321      effectivity_end_date : OPTIONAL date_time_or_event_occurrence;
7322      effectivity_start_date : OPTIONAL date_time_or_event_occurrence;
7323   WHERE
7324      WR1:
7325         EXISTS(effectivity_end_date) OR EXISTS(effectivity_start_date);
7326END_ENTITY;
7327
7328-- DIFF IN AP214
7329-- DIFF IN AP203e2
7330ENTITY datum
7331   SUBTYPE OF (shape_aspect);
7332      identification : identifier;
7333   INVERSE
7334      established_by_relationships : SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect;
7335   UNIQUE
7336      UR1 : identification, SELF\shape_aspect.of_shape;
7337   WHERE
7338      WR1:
7339         ('STEP_MERGED_CAD_SCHEMA.COMMON_DATUM' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (x <* SELF\datum.established_by_relationships| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.DATUM_FEATURE', 'STEP_MERGED_CAD_SCHEMA.DATUM_TARGET' ] * TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)) = 1))) >= 1);
7340      WR2:
7341         SIZEOF(QUERY (x <* SELF\datum.established_by_relationships| ('STEP_MERGED_CAD_SCHEMA.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) <= 1;
7342      WR3:
7343         SELF\shape_aspect.product_definitional = FALSE;
7344      WR4:
7345         SELF\shape_aspect.name = '';
7346END_ENTITY;
7347
7348-- DIFF IN AP214
7349-- DIFF IN AP203e2
7350ENTITY datum_feature
7351   SUPERTYPE OF (ONEOF(dimensional_location_with_datum_feature, dimensional_size_with_datum_feature))
7352   SUBTYPE OF (shape_aspect);
7353   INVERSE
7354      feature_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
7355   WHERE
7356      WR1:
7357         SIZEOF(QUERY (sar <* SELF\datum_feature.feature_basis_relationship| ('STEP_MERGED_CAD_SCHEMA.DATUM' IN TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
7358      WR2:
7359         SELF\shape_aspect.product_definitional = TRUE;
7360END_ENTITY;
7361
7362ENTITY datum_feature_callout
7363   SUBTYPE OF (draughting_callout);
7364END_ENTITY;
7365
7366ENTITY datum_reference;
7367      precedence : INTEGER;
7368      referenced_datum : datum;
7369   WHERE
7370      WR1:
7371         precedence > 0;
7372END_ENTITY;
7373
7374-- IN AP242
7375ENTITY datum_reference_compartment
7376   SUBTYPE OF (general_datum_reference);
7377   INVERSE
7378      owner : datum_system FOR constituents;
7379END_ENTITY;
7380
7381-- IN AP242
7382ENTITY datum_reference_element
7383   SUBTYPE OF (general_datum_reference);
7384   DERIVE
7385      owner : general_datum_reference := sts_get_general_datum_reference(SELF);
7386   WHERE
7387      WR1:
7388         SELF <> owner;
7389      WR2:
7390         EXISTS(owner);
7391      WR3:
7392         SELF\shape_aspect.of_shape = owner\shape_aspect.of_shape;
7393END_ENTITY;
7394
7395-- IN AP242
7396ENTITY datum_reference_modifier_with_value;
7397      modifier_type : datum_reference_modifier_type;
7398      modifier_value : length_measure_with_unit;
7399   WHERE
7400      WR1:
7401         modifier_value\measure_with_unit.value_component > 0.0;
7402END_ENTITY;
7403
7404-- IN AP242
7405ENTITY datum_system
7406   SUBTYPE OF (shape_aspect);
7407      constituents : LIST [1:3] OF UNIQUE datum_reference_compartment;
7408   UNIQUE
7409      UR1 : SELF\shape_aspect.of_shape, SELF\shape_aspect.name;
7410   WHERE
7411      WR1:
7412         SELF\shape_aspect.product_definitional = FALSE;
7413END_ENTITY;
7414
7415-- DIFF IN AP214
7416ENTITY datum_target
7417   SUBTYPE OF (shape_aspect);
7418      target_id : identifier;
7419   INVERSE
7420      target_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
7421   WHERE
7422      WR1:
7423         SIZEOF(QUERY (sar <* SELF\datum_target.target_basis_relationship| ('STEP_MERGED_CAD_SCHEMA.DATUM' IN TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
7424      WR2:
7425         SELF\shape_aspect.product_definitional = TRUE;
7426END_ENTITY;
7427
7428ENTITY datum_target_callout
7429   SUBTYPE OF (draughting_callout);
7430END_ENTITY;
7431
7432ENTITY default_tolerance_table
7433   SUBTYPE OF (representation);
7434   WHERE
7435      WR1:
7436         SIZEOF(QUERY (i <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)))) = 0;
7437      WR2:
7438         ((SIZEOF(QUERY (rr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_1')| (rr.name < 'general tolerance definition'))) = 0) AND (SIZEOF(QUERY (rr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_1')| (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance'))) = 0)) AND (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_2')) = 0);
7439END_ENTITY;
7440
7441ENTITY default_tolerance_table_cell
7442   SUBTYPE OF (compound_representation_item);
7443   WHERE
7444      WR1:
7445         SIZEOF(QUERY (x <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))) = 1;
7446      WR2:
7447         default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element);
7448      WR3:
7449         default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element);
7450      WR4:
7451         default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element);
7452      WR5:
7453         default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element);
7454END_ENTITY;
7455
7456-- IN AP214/AP242
7457ENTITY defined_character_glyph
7458   SUBTYPE OF (geometric_representation_item);
7459      definition : defined_glyph_select;
7460      placement : axis2_placement;
7461END_ENTITY;
7462
7463-- IN AP242
7464ENTITY defined_constraint
7465   ABSTRACT SUPERTYPE OF (equal_parameter_constraint)
7466   SUBTYPE OF (explicit_constraint);
7467END_ENTITY;
7468
7469-- CASE DIFF IN AP214
7470-- IN AP214/AP242
7471ENTITY defined_function
7472   ABSTRACT SUPERTYPE OF (ONEOF(numeric_defined_function, string_defined_function, boolean_defined_function) ANDOR SQL_mappable_defined_function);
7473END_ENTITY;
7474
7475ENTITY defined_symbol
7476   SUBTYPE OF (geometric_representation_item);
7477      definition : defined_symbol_select;
7478      target : symbol_target;
7479END_ENTITY;
7480
7481-- IN AP242
7482ENTITY definite_integral_expression
7483   SUBTYPE OF (quantifier_expression);
7484      lower_limit_neg_infinity : BOOLEAN;
7485      upper_limit_pos_infinity : BOOLEAN;
7486   DERIVE
7487      integrand : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
7488      variable_of_integration : maths_variable := SELF\multiple_arity_generic_expression.operands[2];
7489      SELF\quantifier_expression.variables : LIST [1:1] OF UNIQUE generic_variable := [ variable_of_integration ];
7490   WHERE
7491      WR1:
7492         has_values_space(integrand);
7493      WR2:
7494         space_is_continuum(values_space_of(integrand));
7495      WR3:
7496         definite_integral_expr_check(SELF\multiple_arity_generic_expression.operands, lower_limit_neg_infinity, upper_limit_pos_infinity);
7497END_ENTITY;
7498
7499-- IN AP242
7500ENTITY definite_integral_function
7501   SUBTYPE OF (maths_function, unary_generic_expression);
7502      variable_of_integration : input_selector;
7503      lower_limit_neg_infinity : BOOLEAN;
7504      upper_limit_pos_infinity : BOOLEAN;
7505      SELF\unary_generic_expression.operand : maths_function;
7506   DERIVE
7507      integrand : maths_function := SELF\unary_generic_expression.operand;
7508   WHERE
7509      WR1:
7510         space_is_continuum(integrand.range);
7511      WR2:
7512         definite_integral_check(integrand.domain, variable_of_integration, lower_limit_neg_infinity, upper_limit_pos_infinity);
7513END_ENTITY;
7514
7515ENTITY definitional_representation
7516   SUBTYPE OF (representation);
7517   WHERE
7518      WR1:
7519         'STEP_MERGED_CAD_SCHEMA.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
7520END_ENTITY;
7521
7522-- IN AP203e2/AP242
7523ENTITY definitional_representation_relationship
7524   SUBTYPE OF (representation_relationship);
7525   WHERE
7526      WR1:
7527         acyclic_representation_relationship(SELF, [ SELF\representation_relationship.rep_2 ], 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION');
7528END_ENTITY;
7529
7530-- IN AP203e2/AP242
7531ENTITY definitional_representation_relationship_with_same_context
7532   SUBTYPE OF (definitional_representation_relationship);
7533   WHERE
7534      WR1:
7535         SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items;
7536END_ENTITY;
7537
7538ENTITY degenerate_pcurve
7539   SUBTYPE OF (point);
7540      basis_surface : surface;
7541      reference_to_curve : definitional_representation;
7542   WHERE
7543      WR1:
7544         SIZEOF(reference_to_curve\representation.items) = 1;
7545      WR2:
7546         'STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
7547      WR3:
7548         reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
7549END_ENTITY;
7550
7551ENTITY degenerate_toroidal_surface
7552   SUBTYPE OF (toroidal_surface);
7553      select_outer : BOOLEAN;
7554   WHERE
7555      WR1:
7556         major_radius < minor_radius;
7557END_ENTITY;
7558
7559-- IN AP242
7560ENTITY delete_element
7561   SUBTYPE OF (change_element);
7562END_ENTITY;
7563
7564-- DIFF IN AP214
7565-- DIFF IN AP203e2
7566ENTITY derived_shape_aspect
7567   SUPERTYPE OF (ONEOF(apex, centre_of_symmetry, geometric_alignment, geometric_contact, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent))
7568   SUBTYPE OF (shape_aspect);
7569   INVERSE
7570      deriving_relationships : SET [1:?] OF shape_aspect_deriving_relationship FOR relating_shape_aspect;
7571END_ENTITY;
7572
7573-- DIFF IN AP214
7574ENTITY derived_unit
7575   SUPERTYPE OF (ONEOF(absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit, pressure_unit, resistance_unit, velocity_unit, volume_unit));
7576      elements : SET [1:?] OF derived_unit_element;
7577   DERIVE
7578      name : label := get_name_value(SELF);
7579   WHERE
7580      WR1:
7581         (SIZEOF(elements) > 1) OR (SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0);
7582      WR2:
7583         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
7584END_ENTITY;
7585
7586ENTITY derived_unit_element;
7587      unit : named_unit;
7588      exponent : REAL;
7589END_ENTITY;
7590
7591-- IN AP214
7592ENTITY derived_unit_variable
7593   SUBTYPE OF (derived_unit, variable_semantics);
7594   INVERSE
7595      associated_variable_environment : environment FOR semantics;
7596END_ENTITY;
7597
7598ENTITY description_attribute;
7599      attribute_value : text;
7600      described_item : description_attribute_select;
7601END_ENTITY;
7602
7603-- DIFF IN AP214
7604ENTITY descriptive_representation_item
7605   SUPERTYPE OF (ONEOF(tagged_text_item, uniform_resource_identifier))
7606   SUBTYPE OF (representation_item);
7607      description : text;
7608END_ENTITY;
7609
7610-- IN AP203e2/AP242
7611ENTITY design_make_from_relationship
7612   SUBTYPE OF (product_definition_relationship);
7613END_ENTITY;
7614
7615-- IN AP242
7616ENTITY detailed_report_request
7617   SUBTYPE OF (data_quality_report_request);
7618      detailed_report_request_type : detailed_report_type;
7619      report_sequence : preferred_ordering;
7620END_ENTITY;
7621
7622-- IN AP242
7623ENTITY detailed_report_request_with_number_of_data
7624   SUBTYPE OF (detailed_report_request);
7625      number_of_data : INTEGER;
7626   DERIVE
7627      SELF\detailed_report_request.detailed_report_request_type : detailed_report_type := measured_element;
7628END_ENTITY;
7629
7630ENTITY diameter_dimension
7631   SUBTYPE OF (dimension_curve_directed_callout);
7632END_ENTITY;
7633
7634-- IN AP203e2/AP242
7635ENTITY dielectric_constant_measure_with_unit
7636   SUBTYPE OF (ratio_measure_with_unit);
7637END_ENTITY;
7638
7639ENTITY dimension_callout
7640   SUBTYPE OF (draughting_callout);
7641   WHERE
7642      WR1:
7643         ('STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(dce_1)))) = 0);
7644      WR2:
7645         ('STEP_MERGED_CAD_SCHEMA.PROJECTION_DIRECTED_CALLOUT' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE' IN TYPEOF(dce_1)))) = 0);
7646      WR3:
7647         ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY (dce_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE' IN TYPEOF(dce_1)))) = 0);
7648END_ENTITY;
7649
7650ENTITY dimension_callout_component_relationship
7651   SUBTYPE OF (draughting_callout_relationship);
7652   WHERE
7653      WR1:
7654         SELF.name IN [ 'prefix', 'suffix' ];
7655      WR2:
7656         'STEP_MERGED_CAD_SCHEMA.STRUCTURED_DIMENSION_CALLOUT' IN TYPEOF(SELF.relating_draughting_callout);
7657      WR3:
7658         SIZEOF(TYPEOF(SELF.related_draughting_callout) * [ 'STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.PROJECTION_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.STRUCTURED_DIMENSION_CALLOUT' ]) = 0;
7659      WR4:
7660         SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents = SELF.related_draughting_callout.contents;
7661      WR5:
7662         (SELF.name = 'prefix') AND (SIZEOF(QUERY (ato <* QUERY (con <* SELF.related_draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| NOT (ato.name = 'prefix text'))) = 0);
7663      WR6:
7664         (SELF.name = 'suffix') AND (SIZEOF(QUERY (ato <* QUERY (con <* SELF.related_draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| NOT (ato.name = 'suffix text'))) = 0);
7665END_ENTITY;
7666
7667ENTITY dimension_callout_relationship
7668   SUBTYPE OF (draughting_callout_relationship);
7669   WHERE
7670      WR1:
7671         SELF.name IN [ 'primary', 'secondary' ];
7672      WR2:
7673         SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [ 'STEP_MERGED_CAD_SCHEMA.ANGULAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.CURVE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.DIAMETER_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.LINEAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.ORDINATE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.RADIUS_DIMENSION' ]) >= 1;
7674      WR3:
7675         SIZEOF(TYPEOF(SELF.related_draughting_callout) * [ 'STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.PROJECTION_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT' ]) = 0;
7676      WR4:
7677         SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents = SELF.related_draughting_callout.contents;
7678END_ENTITY;
7679
7680ENTITY dimension_curve
7681   SUBTYPE OF (annotation_curve_occurrence);
7682   WHERE
7683      WR1:
7684         SIZEOF(QUERY (dct <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct)))) <= 2;
7685      WR2:
7686         SIZEOF(QUERY (dcdc <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT.CONTENTS')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc)))) >= 1;
7687      WR3:
7688         (SIZEOF(QUERY (dct1 <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin))) <= 1) AND (SIZEOF(QUERY (dct2 <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target))) <= 1);
7689END_ENTITY;
7690
7691ENTITY dimension_curve_directed_callout
7692   SUBTYPE OF (draughting_callout);
7693   WHERE
7694      WR1:
7695         SIZEOF(QUERY (d_c <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE' IN TYPEOF(d_c)))) <= 2;
7696      WR2:
7697         SIZEOF(SELF\draughting_callout.contents) >= 2;
7698END_ENTITY;
7699
7700ENTITY dimension_curve_terminator
7701   SUBTYPE OF (terminator_symbol);
7702      role : dimension_extent_usage;
7703   WHERE
7704      WR1:
7705         'STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE' IN TYPEOF(SELF\terminator_symbol.annotated_curve);
7706END_ENTITY;
7707
7708-- IN AP203e2/AP242
7709ENTITY dimension_curve_terminator_to_projection_curve_associativity
7710   SUBTYPE OF (annotation_occurrence_associativity);
7711      SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve;
7712      SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator;
7713END_ENTITY;
7714
7715ENTITY dimension_pair
7716   SUBTYPE OF (draughting_callout_relationship);
7717   WHERE
7718      WR1:
7719         SELF.name IN [ 'chained', 'parallel' ];
7720      WR2:
7721         SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [ 'STEP_MERGED_CAD_SCHEMA.ANGULAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.CURVE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.DIAMETER_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.LINEAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.ORDINATE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.RADIUS_DIMENSION' ]) = 1;
7722      WR3:
7723         SIZEOF(TYPEOF(SELF.related_draughting_callout) * [ 'STEP_MERGED_CAD_SCHEMA.ANGULAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.CURVE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.DIAMETER_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.LINEAR_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.ORDINATE_DIMENSION', 'STEP_MERGED_CAD_SCHEMA.RADIUS_DIMENSION' ]) = 1;
7724END_ENTITY;
7725
7726ENTITY dimension_related_tolerance_zone_element;
7727      related_dimension : dimensional_location;
7728      related_element : tolerance_zone_definition;
7729END_ENTITY;
7730
7731ENTITY dimension_text_associativity
7732   SUBTYPE OF (text_literal, mapped_item);
7733   WHERE
7734      WR1:
7735         'STEP_MERGED_CAD_SCHEMA.SHAPE_DIMENSION_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
7736      WR2:
7737         'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT' IN TYPEOF(SELF\mapped_item.mapping_target);
7738      WR3:
7739         SIZEOF(QUERY (ato <* QUERY (si <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.STYLED_ITEM.ITEM')| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(si)))| NOT (SIZEOF(QUERY (dc <* USEDIN(ato, ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT.CONTENTS'))| ('STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT' IN TYPEOF(dc))) * [ SELF\mapped_item.mapping_target ]) = 1))) = 0;
7740END_ENTITY;
7741
7742ENTITY dimensional_characteristic_representation;
7743      dimension : dimensional_characteristic;
7744      representation : shape_dimension_representation;
7745END_ENTITY;
7746
7747ENTITY dimensional_exponents;
7748      length_exponent : REAL;
7749      mass_exponent : REAL;
7750      time_exponent : REAL;
7751      electric_current_exponent : REAL;
7752      thermodynamic_temperature_exponent : REAL;
7753      amount_of_substance_exponent : REAL;
7754      luminous_intensity_exponent : REAL;
7755END_ENTITY;
7756
7757ENTITY dimensional_location
7758   SUPERTYPE OF (ONEOF(angular_location, dimensional_location_with_path))
7759   SUBTYPE OF (shape_aspect_relationship);
7760   WHERE
7761      WR1:
7762         SELF\shape_aspect_relationship.relating_shape_aspect :<>: SELF\shape_aspect_relationship.related_shape_aspect;
7763      WR2:
7764         SELF\shape_aspect_relationship.relating_shape_aspect.of_shape :=: SELF\shape_aspect_relationship.related_shape_aspect.of_shape;
7765END_ENTITY;
7766
7767-- IN AP242
7768ENTITY dimensional_location_with_datum_feature
7769   SUBTYPE OF (datum_feature, dimensional_location);
7770END_ENTITY;
7771
7772ENTITY dimensional_location_with_path
7773   SUBTYPE OF (dimensional_location);
7774      path : shape_aspect;
7775END_ENTITY;
7776
7777-- DIFF IN AP214
7778-- DIFF IN AP203e2
7779ENTITY dimensional_size
7780   SUPERTYPE OF (ONEOF(angular_size, dimensional_size_with_path));
7781      applies_to : shape_aspect;
7782      name : label;
7783   DERIVE
7784      id : identifier := get_id_value(SELF);
7785   UNIQUE
7786      UR1 : id, applies_to;
7787   WHERE
7788      WR1:
7789         applies_to.product_definitional = TRUE;
7790      WR2:
7791         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
7792END_ENTITY;
7793
7794-- IN AP242
7795ENTITY dimensional_size_with_datum_feature
7796   SUBTYPE OF (datum_feature, dimensional_size);
7797END_ENTITY;
7798
7799ENTITY dimensional_size_with_path
7800   SUBTYPE OF (dimensional_size);
7801      path : shape_aspect;
7802END_ENTITY;
7803
7804ENTITY directed_action
7805   SUBTYPE OF (executed_action);
7806      directive : action_directive;
7807END_ENTITY;
7808
7809-- IN AP214/AP242
7810ENTITY directed_angle
7811   SUBTYPE OF (shape_aspect);
7812   WHERE
7813      WR1:
7814         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
7815      WR2:
7816         SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1;
7817      WR3:
7818         SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1))) = 1;
7819      WR4:
7820         SELF.description IN [ 'punch direction', 'profile normal', 'surface normal' ];
7821      WR5:
7822         SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'angle') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
7823END_ENTITY;
7824
7825ENTITY directed_dimensional_location
7826   SUBTYPE OF (dimensional_location);
7827END_ENTITY;
7828
7829ENTITY direction
7830   SUBTYPE OF (geometric_representation_item);
7831      direction_ratios : LIST [2:3] OF REAL;
7832   WHERE
7833      WR1:
7834         SIZEOF(QUERY (tmp <* direction_ratios| (tmp <> 0.0))) > 0;
7835END_ENTITY;
7836
7837-- IN AP214/AP242
7838ENTITY direction_shape_representation
7839   SUBTYPE OF (shape_representation);
7840   WHERE
7841      WR1:
7842         SIZEOF(SELF.items) = 1;
7843      WR2:
7844         SIZEOF(QUERY (it <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.DIRECTION' IN TYPEOF(it)))) = 0;
7845END_ENTITY;
7846
7847-- IN AP242
7848ENTITY disallowed_assembly_relationship_usage
7849   SUBTYPE OF (externally_conditioned_data_quality_criterion);
7850   WHERE
7851      WR1:
7852         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ASSEMBLY_COMPONENT_USAGE' ]);
7853END_ENTITY;
7854
7855-- IN AP242
7856ENTITY disconnected_face_set
7857   SUBTYPE OF (erroneous_topology);
7858      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
7859   WHERE
7860      WR1:
7861         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
7862      WR2:
7863         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
7864      WR3:
7865         validate_locations_of_extreme_value_type(SELF, []);
7866      WR4:
7867         validate_accuracy_types(SELF, []);
7868END_ENTITY;
7869
7870-- IN AP242
7871ENTITY discontinuous_geometry
7872   ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuous_curve, g2_discontinuous_curve, g1_discontinuous_surface, g2_discontinuous_surface))
7873   SUBTYPE OF (inapt_geometry);
7874END_ENTITY;
7875
7876-- IN AP214/AP242
7877ENTITY div_expression
7878   SUBTYPE OF (binary_numeric_expression);
7879END_ENTITY;
7880
7881-- DIFF IN AP214
7882ENTITY document;
7883      id : identifier;
7884      name : label;
7885      description : OPTIONAL text;
7886      kind : document_type;
7887   INVERSE
7888      representation_types : SET [0:?] OF document_representation_type FOR represented_document;
7889END_ENTITY;
7890
7891ENTITY document_file
7892   SUBTYPE OF (document, characterized_object);
7893   WHERE
7894      WR1:
7895         SELF\characterized_object.name = '';
7896      WR2:
7897         NOT EXISTS(SELF\characterized_object.description);
7898      WR3:
7899         SIZEOF(QUERY (drt <* SELF\document.representation_types| (drt.name IN [ 'digital', 'physical' ]))) = 1;
7900END_ENTITY;
7901
7902-- IN AP203e2/AP242
7903ENTITY document_identifier
7904   SUBTYPE OF (group);
7905   UNIQUE
7906      UR1 : SELF\group.name, SELF\group.description;
7907END_ENTITY;
7908
7909-- IN AP203e2/AP242
7910ENTITY document_identifier_assignment
7911   SUBTYPE OF (group_assignment);
7912      items : SET [1:?] OF document_identifier_assigned_item;
7913      SELF\group_assignment.assigned_group : document_identifier;
7914END_ENTITY;
7915
7916-- DIFF IN AP214
7917-- DIFF IN AP203e2
7918ENTITY document_product_association
7919   ABSTRACT SUPERTYPE;
7920      name : label;
7921      description : OPTIONAL text;
7922      relating_document : document;
7923      related_product : product_or_formation_or_definition;
7924END_ENTITY;
7925
7926ENTITY document_product_equivalence
7927   SUBTYPE OF (document_product_association);
7928   WHERE
7929      WR1:
7930         SELF\document_product_association.name = 'equivalence';
7931      WR2:
7932         NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR (SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document') AND (SIZEOF(QUERY (prpc <* USEDIN(SELF\document_product_association.related_product, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'document'))) = 1);
7933      WR3:
7934         NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR (SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF(QUERY (prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'document'))) = 1);
7935      WR4:
7936         NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR (SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF(QUERY (prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'document'))) = 1);
7937END_ENTITY;
7938
7939ENTITY document_reference
7940   ABSTRACT SUPERTYPE;
7941      assigned_document : document;
7942      source : label;
7943   DERIVE
7944      role : object_role := get_role(SELF);
7945   WHERE
7946      WR1:
7947         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
7948END_ENTITY;
7949
7950ENTITY document_relationship;
7951      name : label;
7952      description : OPTIONAL text;
7953      relating_document : document;
7954      related_document : document;
7955END_ENTITY;
7956
7957ENTITY document_representation_type;
7958      name : label;
7959      represented_document : document;
7960END_ENTITY;
7961
7962ENTITY document_type;
7963      product_data_type : label;
7964END_ENTITY;
7965
7966ENTITY document_usage_constraint;
7967      source : document;
7968      subject_element : label;
7969      subject_element_value : text;
7970END_ENTITY;
7971
7972ENTITY document_usage_constraint_assignment
7973   ABSTRACT SUPERTYPE;
7974      assigned_document_usage : document_usage_constraint;
7975      role : document_usage_role;
7976END_ENTITY;
7977
7978ENTITY document_usage_role;
7979      name : label;
7980      description : OPTIONAL text;
7981END_ENTITY;
7982
7983-- IN Deprecated AP203e1
7984ENTITY document_with_class
7985  SUBTYPE OF (document);
7986     class : identifier;
7987END_ENTITY;
7988
7989-- IN AP203e2/AP242
7990ENTITY dose_equivalent_measure_with_unit
7991   SUBTYPE OF (measure_with_unit);
7992   WHERE
7993      WR1:
7994         'STEP_MERGED_CAD_SCHEMA.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
7995END_ENTITY;
7996
7997-- IN AP203e2/AP242
7998ENTITY dose_equivalent_unit
7999   SUBTYPE OF (derived_unit);
8000   WHERE
8001      WR1:
8002         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.sievert);
8003END_ENTITY;
8004
8005-- IN AP203e2/AP242
8006ENTITY double_offset_shelled_solid
8007   SUBTYPE OF (shelled_solid);
8008      thickness2 : length_measure;
8009   WHERE
8010      WR1:
8011         thickness2 <> 0;
8012      WR2:
8013         SELF\shelled_solid.thickness <> thickness2;
8014END_ENTITY;
8015
8016-- IN AP203e2/AP242
8017ENTITY draped_defined_transformation
8018   SUBTYPE OF (transformation_with_derived_angle);
8019END_ENTITY;
8020
8021ENTITY draughting_annotation_occurrence
8022   SUBTYPE OF (annotation_occurrence);
8023   WHERE
8024      WR1:
8025         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT ((SIZEOF(sty.styles) = 1) AND ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sty.styles[1]))))) = 0);
8026      WR2:
8027         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT ((SIZEOF(sty.styles) = 1) AND ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1]))))) = 0);
8028      WR3:
8029         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (bound <* SELF.item\annotation_fill_area.boundaries| NOT (SIZEOF(QUERY (si <* USEDIN(bound, 'STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM.ITEM')| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si)))) > 0))) = 0);
8030      WR4:
8031         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT ((SIZEOF(sty.styles) = 1) AND (SIZEOF(TYPEOF(sty.styles[1]) * [ 'STEP_MERGED_CAD_SCHEMA.SYMBOL_STYLE', 'STEP_MERGED_CAD_SCHEMA.NULL_STYLE' ]) = 1)))) = 0);
8032      WR5:
8033         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item))) OR (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SYMBOL_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION') ] * TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation)) = 1);
8034      WR6:
8035         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (sty <* SELF.styles| NOT ((SIZEOF(sty.styles) = 1) AND ('STEP_MERGED_CAD_SCHEMA.TEXT_STYLE' IN TYPEOF(sty.styles[1]))))) = 0);
8036      WR7:
8037         NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) OR (SIZEOF(TYPEOF(SELF.item) * [ 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT', 'STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL' ]) = 1);
8038      WR8:
8039         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* SELF.item\composite_text.collected_text| NOT ('STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL' IN TYPEOF(tl)))) = 0);
8040      WR9:
8041         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL' IN TYPEOF(SELF.item))) OR (SELF.item\text_literal.alignment IN [ 'baseline left', 'baseline centre', 'baseline right' ]);
8042      WR10:
8043         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* QUERY (text <* SELF.item\composite_text.collected_text| ('STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL' IN TYPEOF(text)))| NOT (tl\text_literal.alignment IN [ 'baseline left', 'baseline centre', 'baseline right' ]))) = 0);
8044      WR11:
8045         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR check_text_alignment(SELF.item);
8046      WR12:
8047         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR check_text_font(SELF.item);
8048      WR13:
8049         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (tl <* QUERY (text <* SELF.item\composite_text.collected_text| ('STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL' IN TYPEOF(text)))| NOT (SIZEOF(TYPEOF(tl) * [ ('STEP_MERGED_CAD_SCHEMA.' + 'TEXT_LITERAL_WITH_BLANKING_BOX'), ('STEP_MERGED_CAD_SCHEMA.' + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES') ]) = 0))) = 0);
8050      WR14:
8051         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (crv <* SELF.item\text_literal_with_associated_curves.associated_curves| NOT (SIZEOF(QUERY (si <* USEDIN(crv, 'STEP_MERGED_CAD_SCHEMA.STYLED_ITEM.ITEM')| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si)))) > 0))) = 0);
8052      WR15:
8053         NOT (('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' IN TYPEOF(SELF.item))) OR (SIZEOF(QUERY (crv <* SELF.item\composite_text_with_associated_curves.associated_curves| NOT (SIZEOF(QUERY (si <* USEDIN(crv, 'STEP_MERGED_CAD_SCHEMA.STYLED_ITEM.ITEM')| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si)))) > 0))) = 0);
8054      WR16:
8055         SIZEOF(QUERY (cs <* QUERY (sty <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sty.styles[1])))| NOT (('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(cs.styles[1]\curve_style.curve_width)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs.styles[1]\curve_style.curve_width\measure_with_unit.value_component))))) = 0;
8056      WR17:
8057         SIZEOF(QUERY (fas <* QUERY (sty <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1])))| NOT ((SIZEOF(QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles| ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE_TILES' IN TYPEOF(fs)))) <= 1) AND (SIZEOF(QUERY (fst <* QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles| ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE_TILES' IN TYPEOF(fs)))| NOT (SIZEOF(fst\fill_area_style_tiles.tiles) = 1))) = 0)))) = 0;
8058      WR18:
8059         SIZEOF(QUERY (fas <* QUERY (sty <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1])))| NOT (SIZEOF(QUERY (fsh <* QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles| ('STEP_MERGED_CAD_SCHEMA.FILL_AREA_STYLE_HATCHING' IN TYPEOF(fs)))| NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: fsh\fill_area_style_hatching.pattern_start))) = 0))) = 0;
8060      WR19:
8061         SIZEOF(QUERY (ts <* QUERY (sty <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.TEXT_STYLE' IN TYPEOF(sty.styles[1])))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN TYPEOF(ts.styles[1])))) = 0;
8062      WR20:
8063         SIZEOF(QUERY (ts <* QUERY (sty <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN TYPEOF(sty.styles[1])))| NOT (SIZEOF(ts.styles[1]\text_style_with_box_characteristics.characteristics) = 4))) = 0;
8064END_ENTITY;
8065
8066-- DIFF IN AP203e2
8067ENTITY draughting_callout
8068   SUBTYPE OF (geometric_representation_item);
8069      contents : SET [1:?] OF draughting_callout_element;
8070   WHERE
8071      WR1:
8072         (((SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(l_1)))) = 0) OR ('STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT' IN TYPEOF(SELF)) AND (SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE' IN TYPEOF(l_1)))) = 0)) OR ('STEP_MERGED_CAD_SCHEMA.PROJECTION_DIRECTED_CALLOUT' IN TYPEOF(SELF)) AND (SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE' IN TYPEOF(l_1)))) = 0)) OR ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF));
8073END_ENTITY;
8074
8075ENTITY draughting_callout_relationship;
8076      name : label;
8077      description : text;
8078      relating_draughting_callout : draughting_callout;
8079      related_draughting_callout : draughting_callout;
8080END_ENTITY;
8081
8082ENTITY draughting_elements
8083   SUBTYPE OF (draughting_callout);
8084   WHERE
8085      WR1:
8086         SIZEOF(QUERY (l_c <* QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(con)))| NOT (SIZEOF(QUERY (ldc <* USEDIN(l_c, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT.CONTENTS')| ('STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc)))) <= 1))) = 0;
8087      WR2:
8088         NOT ('STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE' IN TYPEOF(con)))) <= 2);
8089      WR3:
8090         SIZEOF(QUERY (rc <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(rc)) AND (rc.name = 'primary'))) <= 1;
8091      WR4:
8092         SIZEOF(QUERY (rc <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(rc)) AND (rc.name = 'secondary'))) <= 1;
8093      WR5:
8094         SIZEOF(QUERY (sec <* QUERY (rc <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(rc)) AND (rc.name = 'secondary'))| NOT (SIZEOF(QUERY (prim <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(prim)) AND (prim.name = 'primary'))) = 1))) = 0;
8095END_ENTITY;
8096
8097-- DIFF IN AP214
8098ENTITY draughting_model
8099   SUBTYPE OF (representation);
8100      SELF\representation.items : SET [1:?] OF draughting_model_item_select;
8101   UNIQUE
8102      UR1 : SELF\representation.name;
8103   WHERE
8104      WR1:
8105         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_MODEL' ] * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) = 1))) = 0;
8106      WR2:
8107         SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(si\styled_item.item)))| NOT (('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY (sty <* smi\styled_item.styles| NOT (SIZEOF(QUERY (psa <* sty.styles| NOT ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(psa)))) = 1))) = 1)))) = 0;
8108END_ENTITY;
8109
8110-- DIFF IN AP214
8111-- DIFF IN AP203e2
8112ENTITY draughting_model_item_association
8113   SUBTYPE OF (item_identified_representation_usage);
8114      SELF\item_identified_representation_usage.definition : draughting_model_item_definition;
8115      SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select;
8116      SELF\item_identified_representation_usage.used_representation : annotation_representation_select;
8117END_ENTITY;
8118
8119ENTITY draughting_pre_defined_colour
8120   SUBTYPE OF (pre_defined_colour);
8121   WHERE
8122      WR1:
8123         SELF.name IN [ 'red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'black', 'white' ];
8124END_ENTITY;
8125
8126ENTITY draughting_pre_defined_curve_font
8127   SUBTYPE OF (pre_defined_curve_font);
8128   WHERE
8129      WR1:
8130         SELF.name IN [ 'continuous', 'chain', 'chain double dash', 'dashed', 'dotted' ];
8131END_ENTITY;
8132
8133ENTITY draughting_pre_defined_text_font
8134   SUBTYPE OF (pre_defined_text_font);
8135   WHERE
8136      WR1:
8137         SELF.name[ 1 : 8 ] = 'ISO 3098';
8138END_ENTITY;
8139
8140-- IN AP214
8141ENTITY draughting_specification_reference
8142   SUBTYPE OF (document_reference);
8143      specified_items : SET [1:?] OF specified_item;
8144   WHERE
8145      wr1:
8146         SELF.assigned_document.kind.product_data_type = 'draughting specification';
8147END_ENTITY;
8148
8149-- DIFF IN AP214
8150-- DIFF IN AP203e2
8151ENTITY draughting_subfigure_representation
8152   SUBTYPE OF (symbol_representation);
8153      SELF\representation.items : SET [1:?] OF draughting_subfigure_representation_item;
8154   WHERE
8155      WR1:
8156         SIZEOF(QUERY (item <* SELF\representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT' ] * TYPEOF(item)) = 1))) >= 1;
8157      WR2:
8158         SIZEOF(QUERY (srm <* QUERY (rm <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION')| ('STEP_MERGED_CAD_SCHEMA.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(rm)))| NOT (SIZEOF(QUERY (a_s <* QUERY (mi <* srm.map_usage| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL' IN TYPEOF(mi)))| NOT (SIZEOF(QUERY (aso <* USEDIN(a_s, 'STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM.ITEM')| NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SUBFIGURE_OCCURRENCE' IN TYPEOF(aso)))) = 0))) = 0))) > 0;
8159      WR3:
8160         SIZEOF(SELF.context_of_items.representations_in_context) = 1;
8161END_ENTITY;
8162
8163-- DIFF IN AP214
8164-- DIFF IN AP203e2
8165ENTITY draughting_symbol_representation
8166   SUBTYPE OF (symbol_representation);
8167      SELF\representation.items : SET [1:?] OF draughting_symbol_representation_item;
8168   UNIQUE
8169      UR1 : SELF\representation.name;
8170   WHERE
8171      WR1:
8172         SIZEOF(QUERY (item <* SELF\representation.items| (SIZEOF(TYPEOF(item) * [ 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_CURVE_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_FILL_AREA_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' ]) = 1))) >= 1;
8173      WR2:
8174         SIZEOF(QUERY (item <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SUBFIGURE_OCCURRENCE' IN TYPEOF(item)))) = 0;
8175      WR3:
8176         SIZEOF(QUERY (rm <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION')| NOT ('STEP_MERGED_CAD_SCHEMA.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(rm)))) = 0;
8177      WR4:
8178         SIZEOF(SELF.context_of_items.representations_in_context) = 1;
8179END_ENTITY;
8180
8181ENTITY draughting_text_literal_with_delineation
8182   SUBTYPE OF (text_literal_with_delineation);
8183   WHERE
8184      WR1:
8185         SELF.delineation IN [ 'underline', 'overline' ];
8186END_ENTITY;
8187
8188ENTITY draughting_title;
8189      items : SET [1:?] OF draughting_titled_item;
8190      language : label;
8191      contents : text;
8192END_ENTITY;
8193
8194ENTITY drawing_definition;
8195      drawing_number : identifier;
8196      drawing_type : OPTIONAL label;
8197END_ENTITY;
8198
8199-- CASE DIFF IN AP214
8200ENTITY drawing_revision
8201   SUBTYPE OF (presentation_set);
8202      revision_identifier : identifier;
8203      drawing_identifier : drawing_definition;
8204      intended_scale : OPTIONAL text;
8205   UNIQUE
8206      UR1 : revision_identifier, drawing_identifier;
8207END_ENTITY;
8208
8209ENTITY drawing_revision_sequence;
8210      predecessor : drawing_revision;
8211      successor : drawing_revision;
8212   WHERE
8213      WR1:
8214         predecessor :<>: successor;
8215END_ENTITY;
8216
8217-- IN AP214/AP242
8218ENTITY drawing_sheet_layout
8219   SUBTYPE OF (draughting_symbol_representation);
8220END_ENTITY;
8221
8222ENTITY drawing_sheet_revision
8223   SUBTYPE OF (presentation_area);
8224      revision_identifier : identifier;
8225   WHERE
8226      WR1:
8227         SIZEOF(QUERY (item <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(item)) AND ('STEP_MERGED_CAD_SCHEMA.DRAWING_SHEET_REVISION' IN TYPEOF(item\mapped_item.mapping_source.mapped_representation)))) = 0;
8228END_ENTITY;
8229
8230-- IN AP203e2/AP242
8231ENTITY drawing_sheet_revision_sequence
8232   SUBTYPE OF (representation_relationship);
8233   WHERE
8234      WR1:
8235         SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
8236      WR2:
8237         'STEP_MERGED_CAD_SCHEMA.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\representation_relationship.rep_1);
8238      WR3:
8239         'STEP_MERGED_CAD_SCHEMA.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\representation_relationship.rep_2);
8240END_ENTITY;
8241
8242-- DIFF IN AP214
8243ENTITY drawing_sheet_revision_usage
8244   SUBTYPE OF (area_in_set);
8245      sheet_number : identifier;
8246   UNIQUE
8247      UR1 : sheet_number, SELF\area_in_set.in_set;
8248   WHERE
8249      WR1:
8250         ('STEP_MERGED_CAD_SCHEMA.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\area_in_set.area)) AND ('STEP_MERGED_CAD_SCHEMA.DRAWING_REVISION' IN TYPEOF(SELF\area_in_set.in_set));
8251END_ENTITY;
8252
8253ENTITY edge
8254   SUPERTYPE OF (ONEOF(edge_curve, oriented_edge, subedge))
8255   SUBTYPE OF (topological_representation_item);
8256      edge_start : vertex;
8257      edge_end : vertex;
8258END_ENTITY;
8259
8260ENTITY edge_based_wireframe_model
8261   SUBTYPE OF (geometric_representation_item);
8262      ebwm_boundary : SET [1:?] OF connected_edge_set;
8263END_ENTITY;
8264
8265ENTITY edge_based_wireframe_shape_representation
8266   SUBTYPE OF (shape_representation);
8267   WHERE
8268      WR1:
8269         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
8270      WR2:
8271         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) >= 1;
8272      WR3:
8273         SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (edges <* eb.ces_edges| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(edges)))) = 0))) = 0))) = 0;
8274      WR4:
8275         SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (pline_edges <* QUERY (edges <* eb.ces_edges| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(edges\edge_curve.edge_geometry)))| NOT (SIZEOF(pline_edges\edge_curve.edge_geometry\polyline.points) > 2))) = 0))) = 0))) = 0;
8276      WR5:
8277         SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (edges <* eb.ces_edges| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(edges.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(edges.edge_end))))) = 0))) = 0))) = 0;
8278      WR6:
8279         SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry))) = 0))) = 0))) = 0;
8280      WR7:
8281         SIZEOF(QUERY (ebwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT (SIZEOF(QUERY (edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)))) = 0))) = 0))) = 0;
8282      WR8:
8283         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
8284      WR9:
8285         SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
8286END_ENTITY;
8287
8288-- DIFF IN AP203e2
8289-- IN AP203e2/AP242
8290ENTITY edge_blended_solid
8291   ABSTRACT SUPERTYPE OF (track_blended_solid ANDOR ONEOF(solid_with_constant_radius_edge_blend, solid_with_chamfered_edges))
8292   SUBTYPE OF (modified_solid);
8293      blended_edges : LIST [1:?] OF UNIQUE edge_curve;
8294END_ENTITY;
8295
8296ENTITY edge_curve
8297   SUBTYPE OF (edge, geometric_representation_item);
8298      edge_geometry : curve;
8299      same_sense : BOOLEAN;
8300END_ENTITY;
8301
8302ENTITY edge_loop
8303   SUBTYPE OF (loop, path);
8304   DERIVE
8305      ne : INTEGER := SIZEOF(SELF\path.edge_list);
8306   WHERE
8307      WR1:
8308         SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].edge_end;
8309END_ENTITY;
8310
8311-- IN AP214/AP242
8312ENTITY edge_round
8313   SUBTYPE OF (transition_feature);
8314   WHERE
8315      WR1:
8316         NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
8317      WR2:
8318         NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 1) AND (SIZEOF(impl_rep.used_representation.items) <= 3))) = 0))) = 0);
8319      WR3:
8320         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
8321      WR4:
8322         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0);
8323      WR5:
8324         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) = 0);
8325      WR6:
8326         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'edge round face'))) <= 1))) = 0;
8327      WR7:
8328         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape'))) <= 1))) = 0;
8329      WR8:
8330         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape'))) <= 1))) = 0;
8331END_ENTITY;
8332
8333-- IN AP242
8334ENTITY edge_with_excessive_segments
8335   SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
8336      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8337   WHERE
8338      WR1:
8339         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
8340      WR2:
8341         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
8342      WR3:
8343         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
8344      WR4:
8345         validate_locations_of_extreme_value_type(SELF, []);
8346      WR5:
8347         validate_accuracy_types(SELF, []);
8348END_ENTITY;
8349
8350-- DIFF IN AP214
8351ENTITY effectivity
8352   SUPERTYPE OF (ONEOF(serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity));
8353      id : identifier;
8354   DERIVE
8355      description : text := get_description_value(SELF);
8356      name : label := get_name_value(SELF);
8357   WHERE
8358      WR1:
8359         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
8360      WR2:
8361         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
8362END_ENTITY;
8363
8364ENTITY effectivity_assignment
8365   ABSTRACT SUPERTYPE;
8366      assigned_effectivity : effectivity;
8367   DERIVE
8368      role : object_role := get_role(SELF);
8369   WHERE
8370      WR1:
8371         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
8372END_ENTITY;
8373
8374ENTITY effectivity_context_assignment
8375   ABSTRACT SUPERTYPE;
8376      assigned_effectivity_assignment : effectivity_assignment;
8377      role : effectivity_context_role;
8378END_ENTITY;
8379
8380ENTITY effectivity_context_role;
8381      name : label;
8382      description : OPTIONAL text;
8383END_ENTITY;
8384
8385ENTITY effectivity_relationship;
8386      name : label;
8387      description : OPTIONAL text;
8388      related_effectivity : effectivity;
8389      relating_effectivity : effectivity;
8390END_ENTITY;
8391
8392-- IN AP203e2/AP242
8393ENTITY electric_charge_measure_with_unit
8394   SUBTYPE OF (measure_with_unit);
8395   WHERE
8396      WR1:
8397         'STEP_MERGED_CAD_SCHEMA.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8398END_ENTITY;
8399
8400-- IN AP203e2/AP242
8401ENTITY electric_charge_unit
8402   SUBTYPE OF (derived_unit);
8403   WHERE
8404      WR1:
8405         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.coulomb);
8406END_ENTITY;
8407
8408ENTITY electric_current_measure_with_unit
8409   SUBTYPE OF (measure_with_unit);
8410   WHERE
8411      WR1:
8412         'STEP_MERGED_CAD_SCHEMA.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8413END_ENTITY;
8414
8415ENTITY electric_current_unit
8416   SUBTYPE OF (named_unit);
8417   WHERE
8418      WR1:
8419         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
8420END_ENTITY;
8421
8422-- IN AP203e2/AP242
8423ENTITY electric_potential_measure_with_unit
8424   SUBTYPE OF (measure_with_unit);
8425   WHERE
8426      WR1:
8427         'STEP_MERGED_CAD_SCHEMA.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8428END_ENTITY;
8429
8430-- IN AP203e2/AP242
8431ENTITY electric_potential_unit
8432   SUBTYPE OF (derived_unit);
8433   WHERE
8434      WR1:
8435         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.volt);
8436END_ENTITY;
8437
8438-- IN AP214
8439ENTITY element_delivery
8440   SUBTYPE OF (action);
8441   WHERE
8442      wr1:
8443         (SIZEOF(QUERY (aa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_ASSIGNMENT.ASSIGNED_ACTION')| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)))) = 1) AND (SIZEOF(QUERY (aaa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_ASSIGNMENT.ASSIGNED_ACTION')| ((('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aaa)) AND (aaa.role.name = 'deliverable element')) AND (SIZEOF(aaa.items) = 1)) AND (SIZEOF(QUERY (i <* aaa.items| (('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)) AND (SIZEOF(i\applied_action_assignment.items) = 1)) AND (SIZEOF(QUERY (i1 <* aaa\applied_action_assignment.items| (('STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURATION_ITEM' IN TYPEOF(i1)) OR ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(i1)) AND (i1\product_definition.frame_of_reference.name = 'physical occurrence')) OR ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF(i1)) AND (SIZEOF(QUERY (prpc <* USEDIN(i1, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc\product_category.name IN [ 'part', 'raw material', 'tool' ]))) = 1))) = 1))) = 1))) = 1);
8444      wr2:
8445         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')) = 1) AND (SIZEOF(QUERY (aoa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (aoa.role.name = 'destination'))) = 1);
8446      wr3:
8447         ((SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY.DEFINITION')) = 1) AND (SIZEOF(QUERY (ap <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY.DEFINITION')| (SIZEOF(USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')) = 1))) = 1)) AND (SIZEOF(QUERY (ap <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY.DEFINITION')| (SIZEOF(QUERY (apr <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| ((apr.representation.name = 'delivery quantity') AND (SIZEOF(apr.representation.items) = 1)) AND (SIZEOF(QUERY (i <* apr.representation.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) = 1))) = 1))) = 1))) = 1);
8448      wr4:
8449         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_RELATIONSHIP.RELATING_ACTION')) + SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_RELATIONSHIP.RELATED_ACTION')) = 0;
8450END_ENTITY;
8451
8452-- IN AP203e2/AP242
8453ENTITY elementary_brep_shape_representation
8454   SUBTYPE OF (shape_representation);
8455   WHERE
8456      WR1:
8457         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.FACETED_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
8458      WR2:
8459         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
8460      WR3:
8461         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(fcs)))) = 0))) = 0))) = 0;
8462      WR4:
8463         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(fcs\face_surface.face_geometry)))) = 0))) = 0))) = 0;
8464      WR5:
8465         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)))) = 0))) = 0))) = 0))) = 0))) = 0;
8466      WR6:
8467         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.POLYLINE' ] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0))) = 0))) = 0))) = 0;
8468      WR7:
8469         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_end))))) = 0))) = 0))) = 0))) = 0))) = 0;
8470      WR8:
8471         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3))) = 0))) = 0))) = 0))) = 0))) = 0;
8472      WR9:
8473         SIZEOF(QUERY (msb <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
8474      WR10:
8475         SIZEOF(QUERY (brv <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation)) = 0))) = 0;
8476      WR11:
8477         SIZEOF(QUERY (mi <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
8478      WR12:
8479         SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))))) = 0))) = 0))) = 0))) = 0;
8480END_ENTITY;
8481
8482-- IN AP242
8483ENTITY elementary_function
8484   SUBTYPE OF (maths_function, generic_literal);
8485      func_id : elementary_function_enumerators;
8486END_ENTITY;
8487
8488-- IN AP242
8489ENTITY elementary_space
8490   SUBTYPE OF (maths_space, generic_literal);
8491      space_id : elementary_space_enumerators;
8492END_ENTITY;
8493
8494ENTITY elementary_surface
8495   SUPERTYPE OF (ONEOF(plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface))
8496   SUBTYPE OF (surface);
8497      position : axis2_placement_3d;
8498END_ENTITY;
8499
8500ENTITY ellipse
8501   SUBTYPE OF (conic);
8502      semi_axis_1 : positive_length_measure;
8503      semi_axis_2 : positive_length_measure;
8504END_ENTITY;
8505
8506-- IN AP242
8507ENTITY elliptic_area
8508   SUBTYPE OF (primitive_2d);
8509      position : axis2_placement_2d;
8510      semi_axis_1 : positive_length_measure;
8511      semi_axis_2 : positive_length_measure;
8512END_ENTITY;
8513
8514-- IN AP203e2/AP242
8515ENTITY energy_measure_with_unit
8516   SUBTYPE OF (measure_with_unit);
8517   WHERE
8518      WR1:
8519         'STEP_MERGED_CAD_SCHEMA.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8520END_ENTITY;
8521
8522-- IN AP203e2/AP242
8523ENTITY energy_unit
8524   SUBTYPE OF (derived_unit);
8525   WHERE
8526      WR1:
8527         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.joule);
8528END_ENTITY;
8529
8530-- IN AP242
8531ENTITY entirely_narrow_face
8532   SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
8533      width_tolerance : length_measure;
8534      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8535   WHERE
8536      WR1:
8537         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
8538      WR2:
8539         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
8540      WR3:
8541         validate_locations_of_extreme_value_type(SELF, []);
8542      WR4:
8543         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
8544END_ENTITY;
8545
8546-- IN AP242
8547ENTITY entirely_narrow_solid
8548   SUBTYPE OF (inapt_manifold_solid_brep);
8549      width_tolerance : length_measure;
8550      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8551   WHERE
8552      WR1:
8553         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
8554      WR2:
8555         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' ]);
8556      WR3:
8557         validate_locations_of_extreme_value_type(SELF, []);
8558      WR4:
8559         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
8560END_ENTITY;
8561
8562-- IN AP242
8563ENTITY entirely_narrow_surface
8564   SUBTYPE OF (nearly_degenerate_geometry);
8565      width_tolerance : length_measure;
8566      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8567   WHERE
8568      WR1:
8569         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
8570      WR2:
8571         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.BOUNDED_SURFACE' ]);
8572      WR3:
8573         validate_locations_of_extreme_value_type(SELF, []);
8574      WR4:
8575         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
8576END_ENTITY;
8577
8578-- IN AP203e2/AP242
8579ENTITY entity_assertion
8580   SUBTYPE OF (fact_type);
8581END_ENTITY;
8582
8583-- IN AP203e2/AP242
8584ENTITY enum_reference_prefix
8585   SUBTYPE OF (descriptive_representation_item);
8586END_ENTITY;
8587
8588ENTITY environment;
8589      syntactic_representation : generic_variable;
8590      semantics : variable_semantics;
8591END_ENTITY;
8592
8593-- IN AP242
8594ENTITY equal_parameter_constraint
8595   SUBTYPE OF (defined_constraint);
8596      SELF\explicit_constraint.constrained_elements : SET [1:?] OF variational_parameter;
8597      SELF\explicit_constraint.reference_elements : SET [0:1] OF variational_parameter;
8598   WHERE
8599      WR1:
8600         SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) >= 2;
8601END_ENTITY;
8602
8603-- IN AP214/AP242
8604ENTITY equals_expression
8605   SUBTYPE OF (binary_boolean_expression);
8606END_ENTITY;
8607
8608-- IN AP242
8609ENTITY erroneous_b_spline_curve_definition
8610   SUBTYPE OF (erroneous_geometry);
8611      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8612   WHERE
8613      WR1:
8614         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
8615      WR2:
8616         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS' ]);
8617      WR3:
8618         validate_locations_of_extreme_value_type(SELF, []);
8619      WR4:
8620         validate_accuracy_types(SELF, []);
8621END_ENTITY;
8622
8623-- IN AP242
8624ENTITY erroneous_b_spline_surface_definition
8625   SUBTYPE OF (erroneous_geometry);
8626      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8627   WHERE
8628      WR1:
8629         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
8630      WR2:
8631         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' ]);
8632      WR3:
8633         validate_locations_of_extreme_value_type(SELF, []);
8634      WR4:
8635         validate_accuracy_types(SELF, []);
8636END_ENTITY;
8637
8638-- IN AP242
8639ENTITY erroneous_data
8640   ABSTRACT SUPERTYPE OF (ONEOF(erroneous_topology, erroneous_geometry, erroneous_topology_and_geometry_relationship, erroneous_manifold_solid_brep))
8641   SUBTYPE OF (shape_data_quality_criterion);
8642END_ENTITY;
8643
8644-- IN AP242
8645ENTITY erroneous_geometry
8646   ABSTRACT SUPERTYPE OF (ONEOF(inconsistent_curve_transition_code, erroneous_b_spline_curve_definition, inconsistent_surface_transition_code, erroneous_b_spline_surface_definition))
8647   SUBTYPE OF (erroneous_data);
8648END_ENTITY;
8649
8650-- IN AP242
8651ENTITY erroneous_manifold_solid_brep
8652   ABSTRACT SUPERTYPE OF (ONEOF(wrongly_oriented_void, wrongly_placed_void, intersecting_shells_in_solid, solid_with_wrong_number_of_voids))
8653   SUBTYPE OF (erroneous_data);
8654END_ENTITY;
8655
8656-- IN AP242
8657ENTITY erroneous_topology
8658   ABSTRACT SUPERTYPE OF (ONEOF(open_edge_loop, open_closed_shell, inconsistent_adjacent_face_normals, disconnected_face_set))
8659   SUBTYPE OF (erroneous_data);
8660END_ENTITY;
8661
8662-- IN AP242
8663ENTITY erroneous_topology_and_geometry_relationship
8664   ABSTRACT SUPERTYPE OF (ONEOF(inconsistent_edge_and_curve_directions, inconsistent_face_and_surface_normals, inconsistent_face_and_closed_shell_normals, intersecting_loops_in_face, wrongly_placed_loop))
8665   SUBTYPE OF (erroneous_data);
8666END_ENTITY;
8667
8668-- IN AP203e2/AP242
8669ENTITY evaluated_characteristic
8670   SUBTYPE OF (representation, representation_relationship);
8671   UNIQUE
8672      UR1 : SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
8673   WHERE
8674      WR1:
8675         SELF\representation_relationship.rep_1 <> SELF\representation_relationship.rep_2;
8676END_ENTITY;
8677
8678-- IN AP242
8679ENTITY evaluated_characteristic_of_product_as_individual_test_result
8680   SUBTYPE OF (evaluated_characteristic);
8681END_ENTITY;
8682
8683ENTITY evaluated_degenerate_pcurve
8684   SUBTYPE OF (degenerate_pcurve);
8685      equivalent_point : cartesian_point;
8686END_ENTITY;
8687
8688-- IN AP203e2/AP242
8689ENTITY evaluation_product_definition
8690   SUBTYPE OF (product_definition);
8691END_ENTITY;
8692
8693ENTITY event_occurrence;
8694      id : identifier;
8695      name : label;
8696      description : OPTIONAL text;
8697END_ENTITY;
8698
8699ENTITY event_occurrence_assignment
8700   ABSTRACT SUPERTYPE;
8701      assigned_event_occurrence : event_occurrence;
8702      role : event_occurrence_role;
8703END_ENTITY;
8704
8705-- IN AP214
8706ENTITY event_occurrence_context_assignment
8707   ABSTRACT SUPERTYPE;
8708      assigned_event_occurrence_assignment : event_occurrence_assignment;
8709      role : event_occurrence_context_role;
8710END_ENTITY;
8711
8712-- IN AP214
8713ENTITY event_occurrence_context_role;
8714      name : label;
8715      description : OPTIONAL text;
8716END_ENTITY;
8717
8718-- IN AP203e2/AP242
8719ENTITY event_occurrence_relationship;
8720      name : label;
8721      description : OPTIONAL text;
8722      relating_event : event_occurrence;
8723      related_event : event_occurrence;
8724END_ENTITY;
8725
8726ENTITY event_occurrence_role;
8727      name : label;
8728      description : OPTIONAL text;
8729END_ENTITY;
8730
8731-- IN AP242
8732ENTITY excessive_use_of_groups
8733   SUBTYPE OF (externally_conditioned_data_quality_criterion);
8734   WHERE
8735      WR1:
8736         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.GROUP' ]);
8737END_ENTITY;
8738
8739-- IN AP242
8740ENTITY excessive_use_of_layers
8741   SUBTYPE OF (externally_conditioned_data_quality_criterion);
8742   WHERE
8743      WR1:
8744         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT' ]);
8745END_ENTITY;
8746
8747-- IN AP242
8748ENTITY excessively_high_degree_curve
8749   SUBTYPE OF (overcomplex_geometry);
8750      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8751   WHERE
8752      WR1:
8753         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
8754      WR2:
8755         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
8756      WR3:
8757         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
8758      WR4:
8759         validate_locations_of_extreme_value_type(SELF, []);
8760      WR5:
8761         validate_accuracy_types(SELF, []);
8762END_ENTITY;
8763
8764-- IN AP242
8765ENTITY excessively_high_degree_surface
8766   SUBTYPE OF (overcomplex_geometry);
8767      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8768   WHERE
8769      WR1:
8770         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
8771      WR2:
8772         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
8773      WR3:
8774         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
8775      WR4:
8776         validate_locations_of_extreme_value_type(SELF, []);
8777      WR5:
8778         validate_accuracy_types(SELF, []);
8779END_ENTITY;
8780
8781ENTITY exclusive_product_concept_feature_category
8782   SUBTYPE OF (product_concept_feature_category);
8783END_ENTITY;
8784
8785ENTITY executed_action
8786   SUBTYPE OF (action);
8787END_ENTITY;
8788
8789-- IN AP214/AP242
8790ENTITY exp_function
8791   SUBTYPE OF (unary_function_call);
8792END_ENTITY;
8793
8794-- IN AP203e2/AP242
8795ENTITY expanded_uncertainty
8796   SUBTYPE OF (standard_uncertainty);
8797      coverage_factor : REAL;
8798END_ENTITY;
8799
8800-- IN AP242
8801ENTITY explicit_constraint
8802   ABSTRACT SUPERTYPE OF (ONEOF(defined_constraint, free_form_constraint))
8803   SUBTYPE OF (variational_representation_item);
8804      description : OPTIONAL text;
8805      constrained_elements : SET [1:?] OF representation_item;
8806      reference_elements : SET [0:?] OF representation_item;
8807   WHERE
8808      WR1:
8809         SIZEOF(constrained_elements * reference_elements) = 0;
8810END_ENTITY;
8811
8812-- IN AP242
8813ENTITY explicit_geometric_constraint
8814   ABSTRACT SUPERTYPE OF (ONEOF(fixed_element_geometric_constraint, parallel_geometric_constraint, point_distance_geometric_constraint, skew_line_distance_geometric_constraint, curve_distance_geometric_constraint, surface_distance_geometric_constraint, radius_geometric_constraint, curve_length_geometric_constraint, parallel_offset_geometric_constraint, angle_geometric_constraint, perpendicular_geometric_constraint, incidence_geometric_constraint, coaxial_geometric_constraint, tangent_geometric_constraint, symmetry_geometric_constraint, swept_point_curve_geometric_constraint, swept_curve_surface_geometric_constraint, curve_smoothness_geometric_constraint, surface_smoothness_geometric_constraint))
8815   SUBTYPE OF (defined_constraint, geometric_representation_item);
8816      SELF\explicit_constraint.constrained_elements : SET [1:?] OF geometric_representation_item;
8817      SELF\explicit_constraint.reference_elements : SET [0:?] OF geometric_representation_item;
8818END_ENTITY;
8819
8820-- IN AP203e2/AP242
8821ENTITY explicit_procedural_geometric_representation_item_relationship
8822   SUBTYPE OF (explicit_procedural_representation_item_relationship);
8823      SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
8824      SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence;
8825   WHERE
8826      WR1:
8827         NOT ('STEP_MERGED_CAD_SCHEMA.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' IN TYPEOF(SELF\representation_item_relationship.related_representation_item));
8828END_ENTITY;
8829
8830-- IN AP203e2/AP242
8831ENTITY explicit_procedural_representation_item_relationship
8832   SUBTYPE OF (representation_item_relationship);
8833      SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence;
8834   WHERE
8835      WR1:
8836         NOT ('STEP_MERGED_CAD_SCHEMA.PROCEDURAL_REPRESENTATION_SEQUENCE' IN TYPEOF(SELF\representation_item_relationship.related_representation_item));
8837      WR2:
8838         SIZEOF(QUERY (q <* using_representations(SELF\representation_item_relationship.related_representation_item)| item_in_context(SELF\representation_item_relationship.relating_representation_item, q.context_of_items))) > 0;
8839END_ENTITY;
8840
8841-- IN AP203e2/AP242
8842ENTITY explicit_procedural_representation_relationship
8843   SUBTYPE OF (representation_relationship);
8844      SELF\representation_relationship.rep_1 : procedural_representation;
8845   WHERE
8846      WR1:
8847         NOT ('STEP_MERGED_CAD_SCHEMA.PROCEDURAL_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_2)) AND NOT ('STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_2));
8848      WR2:
8849         SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items;
8850END_ENTITY;
8851
8852-- IN AP203e2/AP242
8853ENTITY explicit_procedural_shape_representation_relationship
8854   SUBTYPE OF (explicit_procedural_representation_relationship);
8855      SELF\representation_relationship.rep_1 : procedural_shape_representation;
8856      SELF\representation_relationship.rep_2 : shape_representation;
8857END_ENTITY;
8858
8859-- IN AP242
8860ENTITY explicit_table_function
8861   ABSTRACT SUPERTYPE OF (ONEOF(listed_data, externally_listed_data, linearized_table_function, basic_sparse_matrix))
8862   SUBTYPE OF (maths_function);
8863      index_base : zero_or_one;
8864      shape : LIST [1:?] OF positive_integer;
8865END_ENTITY;
8866
8867-- DIFF IN AP203e2
8868ENTITY expression
8869   ABSTRACT SUPERTYPE OF (ONEOF(numeric_expression, boolean_expression, string_expression))
8870   SUBTYPE OF (generic_expression);
8871END_ENTITY;
8872
8873ENTITY expression_conversion_based_unit
8874   SUBTYPE OF (context_dependent_unit, variable_semantics);
8875   INVERSE
8876      associated_variable_environment : environment FOR semantics;
8877END_ENTITY;
8878
8879-- IN AP242
8880ENTITY expression_denoted_function
8881   SUBTYPE OF (maths_function, unary_generic_expression);
8882   DERIVE
8883      expr : generic_expression := SELF\unary_generic_expression.operand;
8884   WHERE
8885      WR1:
8886         schema_prefix + 'FUNCTION_SPACE' IN TYPEOF(values_space_of(expr));
8887END_ENTITY;
8888
8889-- IN AP242
8890ENTITY expression_extension_numeric
8891   SUBTYPE OF (measure_with_unit, numeric_expression);
8892END_ENTITY;
8893
8894-- IN AP242
8895ENTITY expression_extension_string
8896   SUBTYPE OF (measure_with_unit, string_expression);
8897END_ENTITY;
8898
8899-- IN AP242
8900ENTITY expression_extension_to_select;
8901      type_expression_associated : expression_extension_select;
8902END_ENTITY;
8903
8904-- IN AP242
8905ENTITY extended_tuple_space
8906   SUBTYPE OF (maths_space, generic_literal);
8907      base : product_space;
8908      extender : maths_space;
8909   WHERE
8910      WR1:
8911         expression_is_constant(base) AND expression_is_constant(extender);
8912      WR2:
8913         no_cyclic_space_reference(SELF, []);
8914      WR3:
8915         extender <> the_empty_space;
8916END_ENTITY;
8917
8918ENTITY extension
8919   SUBTYPE OF (derived_shape_aspect);
8920   WHERE
8921      WR1:
8922         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
8923END_ENTITY;
8924
8925-- IN AP203e2/AP242
8926ENTITY extent
8927   SUBTYPE OF (characterized_object);
8928END_ENTITY;
8929
8930-- IN AP203e2/AP242
8931ENTITY external_class_library
8932   SUBTYPE OF (external_source);
8933END_ENTITY;
8934
8935ENTITY external_identification_assignment
8936   ABSTRACT SUPERTYPE
8937   SUBTYPE OF (identification_assignment);
8938      source : external_source;
8939END_ENTITY;
8940
8941ENTITY external_source;
8942      source_id : source_item;
8943   DERIVE
8944      description : text := get_description_value(SELF);
8945   WHERE
8946      WR1:
8947         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
8948END_ENTITY;
8949
8950-- IN AP203e2/AP242
8951ENTITY external_source_relationship;
8952      name : label;
8953      description : OPTIONAL text;
8954      relating_source : external_source;
8955      related_source : external_source;
8956END_ENTITY;
8957
8958-- IN AP242
8959ENTITY externally_conditioned_data_quality_criteria_representation
8960   SUBTYPE OF (data_quality_criteria_representation);
8961   WHERE
8962      WR1:
8963         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN TYPEOF(q)))) > 0;
8964END_ENTITY;
8965
8966-- IN AP242
8967ENTITY externally_conditioned_data_quality_criterion
8968   SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
8969   WHERE
8970      WR1:
8971         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.' + 'CRITERION')) = 0;
8972      WR2:
8973         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_ITEM_RELATIONSHIP.' + 'RELATED_REPRESENTATION_ITEM'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN TYPEOF(i1)))) = 0;
8974      WR3:
8975         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_ITEM_RELATIONSHIP.' + 'RELATING_REPRESENTATION_ITEM'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN TYPEOF(i1)))) = 0;
8976END_ENTITY;
8977
8978-- IN AP242
8979ENTITY externally_conditioned_data_quality_inspection_instance_report_item
8980   SUBTYPE OF (data_quality_inspection_instance_report_item);
8981      SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1:?] OF inspected_ecdq_element_select;
8982   WHERE
8983      WR1:
8984         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_INSTANCE_REPORT.' + 'INSPECTED_INSTANCES'))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(i1.inspection_result)))) = 0;
8985END_ENTITY;
8986
8987-- IN AP242
8988ENTITY externally_conditioned_data_quality_inspection_result
8989   SUBTYPE OF (data_quality_inspection_result);
8990   WHERE
8991      WR1:
8992         'STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN TYPEOF(SELF\data_quality_inspection_result.criterion_inspected);
8993END_ENTITY;
8994
8995-- IN AP242
8996ENTITY externally_conditioned_data_quality_inspection_result_representation
8997   SUBTYPE OF (data_quality_inspection_result_representation);
8998   WHERE
8999      WR1:
9000         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q)))) > 0;
9001END_ENTITY;
9002
9003-- IN AP214/AP242
9004ENTITY externally_defined_character_glyph
9005   SUBTYPE OF (externally_defined_item);
9006END_ENTITY;
9007
9008ENTITY externally_defined_class
9009   SUBTYPE OF (class, externally_defined_item);
9010END_ENTITY;
9011
9012-- IN AP203e2/AP242
9013ENTITY externally_defined_colour
9014   SUBTYPE OF (colour_specification, externally_defined_item);
9015END_ENTITY;
9016
9017-- IN AP203e2/AP242
9018ENTITY externally_defined_context_dependent_unit
9019   SUBTYPE OF (context_dependent_unit, externally_defined_item);
9020END_ENTITY;
9021
9022-- IN AP203e2/AP242
9023ENTITY externally_defined_conversion_based_unit
9024   SUBTYPE OF (conversion_based_unit, externally_defined_item);
9025END_ENTITY;
9026
9027-- IN AP203e2/AP242
9028ENTITY externally_defined_currency
9029   SUBTYPE OF (currency, externally_defined_context_dependent_unit);
9030END_ENTITY;
9031
9032ENTITY externally_defined_curve_font
9033   SUBTYPE OF (externally_defined_item);
9034END_ENTITY;
9035
9036ENTITY externally_defined_dimension_definition
9037   SUBTYPE OF (dimensional_size, externally_defined_item);
9038   WHERE
9039      WR1:
9040         (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification');
9041      WR2:
9042         1 >= SIZEOF(QUERY (adr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification')));
9043END_ENTITY;
9044
9045-- IN AP214/AP242
9046ENTITY externally_defined_feature_definition
9047   SUBTYPE OF (feature_definition, externally_defined_item);
9048   WHERE
9049      WR1:
9050         ((((SELF\characterized_object.description = 'thread') AND (SELF\externally_defined_item.item_id = 'external thread')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification') OR ((SELF\characterized_object.description = 'gear') AND (SELF\externally_defined_item.item_id = 'external gear')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification')) OR ((SELF\characterized_object.description = 'marking') AND (SELF\externally_defined_item.item_id = 'external marking')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification')) OR ((SELF\characterized_object.description = 'knurl') AND (SELF\externally_defined_item.item_id = 'external knurl')) AND (SELF\externally_defined_item.source.source_id = 'external feature specification');
9051      WR2:
9052         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((5 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 10)))) = 1))) = 1);
9053      WR3:
9054         NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2))) = 1))) = 1);
9055      WR4:
9056         NOT (SELF\characterized_object.description = 'knurl') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1))) = 1))) = 1);
9057      WR5:
9058         NOT (SELF\characterized_object.description IN [ 'knurl', 'thread' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'applied area usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
9059      WR6:
9060         NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))) = 0);
9061      WR7:
9062         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'removal direction')) AND ((it.description = 'internal') OR (it.description = 'external')))) = 1))) = 0))) = 0);
9063      WR8:
9064         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0))) = 0);
9065      WR9:
9066         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'hand'))) = 1))) = 0))) = 0);
9067      WR10:
9068         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) = 0);
9069      WR11:
9070         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0);
9071      WR12:
9072         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) <= 1))) = 0))) = 0);
9073      WR13:
9074         NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'number of threads'))) = 1))) = 0))) = 0);
9075      WR14:
9076         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))) = 0;
9077      WR15:
9078         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'nominal size'))) <= 1))) = 0))) = 0;
9079      WR16:
9080         NOT (SELF\characterized_object.description IN [ 'knurl', 'gear', 'thread' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
9081      WR17:
9082         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.used_representation.items))) AND (SIZEOF(pdr.used_representation.items) >= 11))) = 1))) = 1);
9083      WR18:
9084         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth'))) = 1))) = 0))) = 0);
9085      WR19:
9086         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'reference pressure angle'))) = 1))) = 0))) = 0);
9087      WR20:
9088         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor'))) = 1))) = 0))) = 0);
9089      WR21:
9090         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth'))) = 1))) = 0))) = 0);
9091      WR22:
9092         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'face width'))) = 1))) = 0))) = 0);
9093      WR23:
9094         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter'))) = 1))) = 0))) = 0);
9095      WR24:
9096         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'module or diametral pitch')) AND ((it.description = 'module') OR (it.description = 'diametral pitch')))) = 1))) = 0))) = 0);
9097      WR25:
9098         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute'))) = 1))) = 0))) = 0);
9099      WR26:
9100         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'internal or external gear')) AND ((it.description = 'internal') OR (it.description = 'external')))) = 1))) = 0))) = 0);
9101      WR27:
9102         NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius'))) <= 1))) = 0))) = 0);
9103END_ENTITY;
9104
9105ENTITY externally_defined_general_property
9106   SUBTYPE OF (general_property, externally_defined_item);
9107END_ENTITY;
9108
9109ENTITY externally_defined_hatch_style
9110   SUBTYPE OF (externally_defined_item, geometric_representation_item);
9111END_ENTITY;
9112
9113ENTITY externally_defined_item;
9114      item_id : source_item;
9115      source : external_source;
9116END_ENTITY;
9117
9118ENTITY externally_defined_item_relationship;
9119      name : label;
9120      description : OPTIONAL text;
9121      relating_item : externally_defined_item;
9122      related_item : externally_defined_item;
9123END_ENTITY;
9124
9125-- IN AP242
9126ENTITY externally_defined_item_with_multiple_references
9127   SUBTYPE OF (externally_defined_item);
9128      references : LIST [1:?] OF UNIQUE source_item;
9129   UNIQUE
9130      UR1 : references;
9131   WHERE
9132      WR1:
9133         NOT (SELF\externally_defined_item.item_id IN references);
9134END_ENTITY;
9135
9136-- IN AP203e2/AP242
9137ENTITY externally_defined_marker
9138   SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
9139END_ENTITY;
9140
9141-- IN AP203e2/AP242
9142ENTITY externally_defined_picture_representation_item
9143   SUBTYPE OF (picture_representation_item);
9144   INVERSE
9145      source : applied_external_identification_assignment FOR items;
9146   WHERE
9147      WR1:
9148         NOT (SELF\representation_item.name IN pre_defined_picture_representation_types);
9149END_ENTITY;
9150
9151-- IN AP242
9152ENTITY externally_defined_representation
9153   SUBTYPE OF (representation, externally_defined_item);
9154      SELF\representation.items : SET [1:?] OF externally_defined_representation_item;
9155END_ENTITY;
9156
9157-- IN AP203e2/AP242
9158ENTITY externally_defined_representation_item
9159   SUBTYPE OF (representation_item, externally_defined_item);
9160END_ENTITY;
9161
9162-- IN AP203e2/AP242
9163ENTITY externally_defined_string
9164   SUBTYPE OF (externally_defined_representation_item);
9165END_ENTITY;
9166
9167-- IN AP214/AP242
9168ENTITY externally_defined_style
9169   SUBTYPE OF (externally_defined_item, founded_item);
9170END_ENTITY;
9171
9172ENTITY externally_defined_symbol
9173   SUBTYPE OF (externally_defined_item);
9174END_ENTITY;
9175
9176-- IN AP203e2/AP242
9177ENTITY externally_defined_terminator_symbol
9178   SUBTYPE OF (externally_defined_symbol);
9179END_ENTITY;
9180
9181ENTITY externally_defined_text_font
9182   SUBTYPE OF (externally_defined_item);
9183END_ENTITY;
9184
9185-- IN AP203e2/AP242
9186ENTITY externally_defined_tile
9187   SUBTYPE OF (externally_defined_item);
9188END_ENTITY;
9189
9190ENTITY externally_defined_tile_style
9191   SUBTYPE OF (externally_defined_item, geometric_representation_item);
9192END_ENTITY;
9193
9194-- IN AP242
9195ENTITY externally_listed_data
9196   SUBTYPE OF (explicit_table_function, generic_literal, externally_defined_item);
9197      value_range : maths_space;
9198   WHERE
9199      WR1:
9200         expression_is_constant(value_range);
9201END_ENTITY;
9202
9203-- IN AP242
9204ENTITY extreme_instance;
9205      locations_of_extreme_value : SET [1:?] OF location_of_extreme_value_select;
9206      measured_value : measured_value_select;
9207END_ENTITY;
9208
9209-- IN AP242
9210ENTITY extreme_patch_width_variation
9211   SUBTYPE OF (geometry_with_local_irregularity);
9212      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9213   WHERE
9214      WR1:
9215         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9216      WR2:
9217         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE');
9218      WR3:
9219         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
9220      WR4:
9221         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_KNOT_LOCATOR' ]);
9222      WR5:
9223         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
9224END_ENTITY;
9225
9226ENTITY extruded_area_solid
9227   SUBTYPE OF (swept_area_solid);
9228      extruded_direction : direction;
9229      depth : positive_length_measure;
9230   WHERE
9231      WR1:
9232         dot_product(SELF\swept_area_solid.swept_area.basis_surface\elementary_surface.position.p[3], extruded_direction) <> 0.0;
9233END_ENTITY;
9234
9235ENTITY extruded_face_solid
9236   SUBTYPE OF (swept_face_solid);
9237      extruded_direction : direction;
9238      depth : positive_length_measure;
9239   WHERE
9240      WR1:
9241         dot_product(SELF\swept_face_solid.swept_face.face_geometry\elementary_surface.position.p[3], extruded_direction) <> 0.0;
9242END_ENTITY;
9243
9244-- IN AP203e2/AP242
9245ENTITY extruded_face_solid_with_draft_angle
9246   SUBTYPE OF (extruded_face_solid_with_trim_conditions);
9247      draft_angle : plane_angle_measure;
9248   WHERE
9249      WR1:
9250         draft_angle <> 0;
9251END_ENTITY;
9252
9253-- IN AP203e2/AP242
9254ENTITY extruded_face_solid_with_multiple_draft_angles
9255   SUBTYPE OF (extruded_face_solid_with_trim_conditions);
9256      drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve;
9257      draft_angles : LIST [2:?] OF plane_angle_measure;
9258   WHERE
9259      WR1:
9260         SIZEOF(drafted_edges) = SIZEOF(draft_angles);
9261      WR2:
9262         SIZEOF(QUERY (q <* draft_angles| (q = 0))) = 0;
9263      WR3:
9264         SIZEOF(QUERY (q <* drafted_edges| (SIZEOF(QUERY (r <* q| NOT (SELF\swept_face_solid.swept_face IN using_items(r, [])))) > 0))) = 0;
9265END_ENTITY;
9266
9267-- IN AP203e2/AP242
9268ENTITY extruded_face_solid_with_trim_conditions
9269   SUPERTYPE OF (ONEOF(extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles))
9270   SUBTYPE OF (extruded_face_solid);
9271      first_trim_condition : trim_condition_select;
9272      second_trim_condition : trim_condition_select;
9273      first_trim_intent : trim_intent;
9274      second_trim_intent : trim_intent;
9275      first_offset : non_negative_length_measure;
9276      second_offset : non_negative_length_measure;
9277   WHERE
9278      WR1:
9279         NOT (('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(first_trim_condition)) OR ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(second_trim_condition)));
9280      WR2:
9281         NOT (('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND ((first_trim_intent = trim_intent.offset) OR (first_trim_intent = trim_intent.up_to_next)) OR ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)) AND ((second_trim_intent = trim_intent.offset) OR (second_trim_intent = trim_intent.up_to_next)));
9282      WR3:
9283         NOT (NOT ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND ((first_trim_intent = trim_intent.blind) OR (first_trim_intent = trim_intent.through_all)) OR NOT ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)) AND ((second_trim_intent = trim_intent.blind) OR (second_trim_intent = trim_intent.through_all)));
9284      WR4:
9285         ((first_trim_intent = trim_intent.offset) AND (first_offset > 0) XOR (first_trim_intent <> trim_intent.offset) AND (first_offset = 0)) AND ((second_trim_intent = trim_intent.offset) AND (second_offset > 0) XOR (second_trim_intent <> trim_intent.offset) AND (second_offset = 0));
9286      WR5:
9287         NOT ((('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(second_trim_condition))) AND (first_trim_condition = second_trim_condition));
9288END_ENTITY;
9289
9290ENTITY face
9291   SUPERTYPE OF (ONEOF(face_surface, subface, oriented_face))
9292   SUBTYPE OF (topological_representation_item);
9293      bounds : SET [1:?] OF face_bound;
9294   WHERE
9295      WR1:
9296         NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)));
9297      WR2:
9298         SIZEOF(QUERY (temp <* bounds| ('STEP_MERGED_CAD_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(temp)))) <= 1;
9299END_ENTITY;
9300
9301ENTITY face_based_surface_model
9302   SUBTYPE OF (geometric_representation_item);
9303      fbsm_faces : SET [1:?] OF connected_face_set;
9304END_ENTITY;
9305
9306ENTITY face_bound
9307   SUBTYPE OF (topological_representation_item);
9308      bound : loop;
9309      orientation : BOOLEAN;
9310END_ENTITY;
9311
9312ENTITY face_outer_bound
9313   SUBTYPE OF (face_bound);
9314END_ENTITY;
9315
9316-- IN AP214/AP242
9317ENTITY face_shape_representation
9318   SUBTYPE OF (shape_representation);
9319   WHERE
9320      WR1:
9321         SIZEOF(SELF.items) >= 1;
9322      WR2:
9323         SIZEOF(QUERY (it <* SELF.items| NOT (('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(it)) OR ('STEP_MERGED_CAD_SCHEMA.ORIENTED_FACE' IN TYPEOF(it))))) = 0;
9324END_ENTITY;
9325
9326-- IN AP242
9327ENTITY face_shape_representation_relationship
9328   SUBTYPE OF (representation_relationship);
9329   WHERE
9330      WR1:
9331         'STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_1);
9332      WR2:
9333         'STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_2);
9334END_ENTITY;
9335
9336ENTITY face_surface
9337   SUBTYPE OF (face, geometric_representation_item);
9338      face_geometry : surface;
9339      same_sense : BOOLEAN;
9340   WHERE
9341      WR1:
9342         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_SURFACE' IN TYPEOF(face_geometry));
9343END_ENTITY;
9344
9345-- IN AP242
9346ENTITY face_surface_with_excessive_patches_in_one_direction
9347   SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
9348      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9349   WHERE
9350      WR1:
9351         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9352      WR2:
9353         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
9354      WR3:
9355         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
9356      WR4:
9357         validate_locations_of_extreme_value_type(SELF, []);
9358      WR5:
9359         validate_accuracy_types(SELF, []);
9360END_ENTITY;
9361
9362ENTITY faceted_brep
9363   SUBTYPE OF (manifold_solid_brep);
9364END_ENTITY;
9365
9366ENTITY faceted_brep_shape_representation
9367   SUBTYPE OF (shape_representation);
9368   WHERE
9369      WR1:
9370         SIZEOF(QUERY (it <* items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.FACETED_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
9371      WR2:
9372         SIZEOF(QUERY (it <* items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.FACETED_BREP', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
9373      WR3:
9374         SIZEOF(QUERY (fbrep <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.FACETED_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(fbrep)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(fcs)) AND (('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(fcs\face_surface.face_geometry)) AND ('STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(fcs\face_surface.face_geometry\elementary_surface.position.location)))))) = 0))) = 0))) = 0;
9375      WR4:
9376         SIZEOF(QUERY (fbrep <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.FACETED_BREP' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* msb_shells(fbrep)| NOT (SIZEOF(QUERY (fcs <* csh\connected_face_set.cfs_faces| NOT (SIZEOF(QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(bnds)))) = 1))) = 0))) = 0))) = 0;
9377      WR5:
9378         SIZEOF(QUERY (msb <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\manifold_solid_brep.outer)))) = 0;
9379      WR6:
9380         SIZEOF(QUERY (brv <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation)) = 0))) = 0;
9381      WR7:
9382         SIZEOF(QUERY (mi <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
9383END_ENTITY;
9384
9385-- IN AP203e2/AP242
9386ENTITY fact_type
9387   SUBTYPE OF (property_definition);
9388END_ENTITY;
9389
9390-- IN AP214/AP242
9391ENTITY feature_component_definition
9392   SUBTYPE OF (characterized_object);
9393   WHERE
9394      WR1:
9395         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')) = 1))) = 0;
9396END_ENTITY;
9397
9398-- DIFF IN AP214
9399-- IN AP214/AP242
9400ENTITY feature_component_relationship
9401   SUPERTYPE OF (ONEOF(pattern_omit_membership, pattern_offset_membership))
9402   SUBTYPE OF (shape_aspect_relationship);
9403   WHERE
9404      WR1:
9405         ((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT', 'STEP_MERGED_CAD_SCHEMA.REPLICATE_FEATURE', 'STEP_MERGED_CAD_SCHEMA.TRANSITION_FEATURE', 'STEP_MERGED_CAD_SCHEMA.MODIFIED_PATTERN' ] * TYPEOF(SELF.relating_shape_aspect)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.MACHINING_FEATURE_DEFINITION' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition));
9406END_ENTITY;
9407
9408-- DIFF IN AP214
9409-- IN AP214/AP242
9410ENTITY feature_definition
9411   SUPERTYPE OF (ONEOF(boss, compound_feature, externally_defined_feature_definition, flat_face, gear, marking, outer_round, outside_profile, pocket, protrusion, removal_volume, replicate_feature, revolved_profile, rib_top, round_hole, rounded_end, spherical_cap, step, slot, thread, turned_knurl))
9412   SUBTYPE OF (characterized_object);
9413END_ENTITY;
9414
9415-- IN AP242
9416ENTITY feature_definition_with_connection_area
9417   SUBTYPE OF (shape_feature_definition);
9418END_ENTITY;
9419
9420-- IN AP242
9421ENTITY feature_for_datum_target_relationship
9422   SUBTYPE OF (shape_aspect_relationship);
9423      SELF\shape_aspect_relationship.related_shape_aspect : datum_target;
9424   UNIQUE
9425      UR1 : related_shape_aspect;
9426   WHERE
9427      WR1:
9428         relating_shape_aspect.of_shape :=: related_shape_aspect.of_shape;
9429      WR2:
9430         relating_shape_aspect\shape_aspect.product_definitional = TRUE;
9431END_ENTITY;
9432
9433-- IN AP214/AP242
9434ENTITY feature_in_panel
9435   SUBTYPE OF (feature_definition);
9436   WHERE
9437      WR1:
9438         SELF.description IN [ 'pocket', 'boss', 'stairstep' ];
9439      WR2:
9440         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND NOT ((2 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 3)))) = 0;
9441      WR3:
9442         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| NOT (i.name IN [ 'orientation', 'base radius', 'target radius' ]))) > 0))) = 0;
9443      WR4:
9444         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
9445      WR5:
9446         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'target radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
9447      WR6:
9448         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.name = 'base boundary') AND (sa.description IN [ 'directed angle occurrence', 'closed profile occurrence' ]))) = 1;
9449      WR7:
9450         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.name = 'target boundary') AND (sa.description IN [ 'directed angle occurrence', 'closed profile occurrence' ]))) = 1;
9451      WR8:
9452         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'directed angle occurrence'))) <= 1;
9453      WR9:
9454         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'directed angle occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'directed angle usage')) AND ('STEP_MERGED_CAD_SCHEMA.DIRECTED_ANGLE' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'directed angle occurrence')));
9455      WR10:
9456         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'closed profile occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage')) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'closed profile occurrence')));
9457      WR11:
9458         (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) <= 1) AND (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND NOT (pdr.used_representation.name = 'target face'))) = 0);
9459      WR12:
9460         (SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.name = 'target boundary') AND (sa.description = 'directed angle occurrence'))) = 0) OR (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1);
9461END_ENTITY;
9462
9463-- IN AP214/AP242
9464ENTITY feature_pattern
9465   SUBTYPE OF (replicate_feature);
9466   WHERE
9467      WR1:
9468         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| NOT ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(srwp_i)))) > 0))) > 0))) = 0;
9469      WR2:
9470         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'base feature placement'))) > 1))) = 0))) = 0;
9471END_ENTITY;
9472
9473-- IN AP214
9474ENTITY featured_shape
9475   SUBTYPE OF (product_definition_shape);
9476   WHERE
9477      wr1:
9478         'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.definition);
9479      wr2:
9480         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')| ((pdr.name = 'featured shape sequence') AND ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pdr.relating_property_definition))) AND (pdr.relating_property_definition :<>: SELF))) = 1);
9481      wr3:
9482         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')| (SELF.definition :=: pdr.relating_property_definition.definition))) = 1;
9483      wr4:
9484         SIZEOF(QUERY (sa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'PLACED_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'INSTANCED_FEATURE') ] * TYPEOF(sa)) = 1))) >= 1;
9485END_ENTITY;
9486
9487ENTITY fill_area_style
9488   SUBTYPE OF (founded_item);
9489      name : label;
9490      fill_styles : SET [1:?] OF fill_style_select;
9491   WHERE
9492      WR1:
9493         SIZEOF(QUERY (fill_style <* SELF.fill_styles| ('STEP_MERGED_CAD_SCHEMA.' + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF(fill_style)))) <= 1;
9494END_ENTITY;
9495
9496ENTITY fill_area_style_colour;
9497      name : label;
9498      fill_colour : colour;
9499END_ENTITY;
9500
9501ENTITY fill_area_style_hatching
9502   SUBTYPE OF (geometric_representation_item);
9503      hatch_line_appearance : curve_style;
9504      start_of_next_hatch_line : one_direction_repeat_factor;
9505      point_of_reference_hatch_line : cartesian_point;
9506      pattern_start : cartesian_point;
9507      hatch_line_angle : plane_angle_measure;
9508END_ENTITY;
9509
9510-- IN AP203e2/AP242
9511ENTITY fill_area_style_tile_coloured_region
9512   SUBTYPE OF (geometric_representation_item);
9513      closed_curve : curve_or_annotation_curve_occurrence;
9514      region_colour : colour;
9515   WHERE
9516      WR1:
9517         ((((NOT ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(closed_curve)) OR ('STEP_MERGED_CAD_SCHEMA.CIRCLE' IN TYPEOF(closed_curve))) OR ('STEP_MERGED_CAD_SCHEMA.ELLIPSE' IN TYPEOF(closed_curve))) OR ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(closed_curve)) AND (closed_curve\b_spline_curve.closed_curve = TRUE)) OR ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(closed_curve)) AND (closed_curve\composite_curve.closed_curve = TRUE)) OR ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(closed_curve)) AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]);
9518END_ENTITY;
9519
9520-- IN AP203e2/AP242
9521ENTITY fill_area_style_tile_curve_with_style
9522   SUBTYPE OF (geometric_representation_item);
9523      styled_curve : annotation_curve_occurrence;
9524END_ENTITY;
9525
9526ENTITY fill_area_style_tile_symbol_with_style
9527   SUBTYPE OF (geometric_representation_item);
9528      symbol : annotation_symbol_occurrence;
9529END_ENTITY;
9530
9531ENTITY fill_area_style_tiles
9532   SUBTYPE OF (geometric_representation_item);
9533      tiling_pattern : two_direction_repeat_factor;
9534      tiles : SET [1:?] OF fill_area_style_tile_shape_select;
9535      tiling_scale : positive_ratio_measure;
9536END_ENTITY;
9537
9538-- IN AP214/AP242
9539ENTITY fillet
9540   SUBTYPE OF (transition_feature);
9541   WHERE
9542      WR1:
9543         NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
9544      WR2:
9545         NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 1) AND (SIZEOF(impl_rep.used_representation.items) <= 3))) = 0))) = 0);
9546      WR3:
9547         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
9548      WR4:
9549         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0);
9550      WR5:
9551         NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) = 0);
9552      WR6:
9553         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'fillet face'))) = 1))) = 0;
9554      WR7:
9555         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape'))) = 1))) = 0;
9556      WR8:
9557         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape'))) = 1))) = 0;
9558END_ENTITY;
9559
9560-- IN AP242
9561ENTITY finite_function
9562   SUBTYPE OF (maths_function, generic_literal);
9563      pairs : SET [1:?] OF LIST [2:2] OF maths_value;
9564   WHERE
9565      WR1:
9566         VALUE_UNIQUE(list_selected_components(pairs, 1));
9567END_ENTITY;
9568
9569-- IN AP242
9570ENTITY finite_integer_interval
9571   SUBTYPE OF (maths_space, generic_literal);
9572      min : INTEGER;
9573      max : INTEGER;
9574   DERIVE
9575      size : positive_integer := max - min + 1;
9576   WHERE
9577      WR1:
9578         min <= max;
9579END_ENTITY;
9580
9581-- IN AP242
9582ENTITY finite_real_interval
9583   SUBTYPE OF (maths_space, generic_literal);
9584      min : REAL;
9585      min_closure : open_closed;
9586      max : REAL;
9587      max_closure : open_closed;
9588   WHERE
9589      WR1:
9590         min < max;
9591END_ENTITY;
9592
9593-- IN AP242
9594ENTITY finite_space
9595   SUBTYPE OF (maths_space, generic_literal);
9596      members : SET [0:?] OF maths_value;
9597   WHERE
9598      WR1:
9599         VALUE_UNIQUE(members);
9600      WR2:
9601         SIZEOF(QUERY (expr <* QUERY (member <* members| ('STEP_MERGED_CAD_SCHEMA.GENERIC_EXPRESSION' IN TYPEOF(member)))| NOT expression_is_constant(expr))) = 0;
9602      WR3:
9603         no_cyclic_space_reference(SELF, []);
9604END_ENTITY;
9605
9606-- IN AP242
9607ENTITY fixed_constituent_assembly_constraint
9608   SUBTYPE OF (assembly_geometric_constraint, fixed_element_geometric_constraint);
9609      fixed_constituent : representative_shape_representation;
9610   WHERE
9611      WR1:
9612         SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3;
9613      WR2:
9614         assembly_leaf(using_product_definition_of_shape_representation(fixed_constituent)[1]);
9615      WR3:
9616         (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND (SIZEOF(SELF\explicit_constraint.reference_elements) = 0);
9617      WR4:
9618         fixed_constituent IN using_representations(SELF\explicit_constraint.constrained_elements[1]) + using_representation_with_mapping(SELF\explicit_constraint.constrained_elements[1]);
9619END_ENTITY;
9620
9621-- IN AP242
9622ENTITY fixed_element_geometric_constraint
9623   SUBTYPE OF (explicit_geometric_constraint);
9624      SELF\explicit_constraint.constrained_elements : SET [1:?] OF geometric_constraint_element;
9625   WHERE
9626      WR1:
9627         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
9628END_ENTITY;
9629
9630-- IN AP242
9631ENTITY fixed_instance_attribute_set
9632   SUBTYPE OF (variational_representation_item);
9633      fixed_attributes : SET [1:?] OF instance_attribute_reference;
9634   WHERE
9635      WR1:
9636         SIZEOF(QUERY (q <* using_representations(SELF)| (SIZEOF(QUERY (r <* q.items| ('STEP_MERGED_CAD_SCHEMA.FIXED_INSTANCE_ATTRIBUTE_SET' IN TYPEOF(r)))) > 1))) = 0;
9637END_ENTITY;
9638
9639-- IN AP242
9640ENTITY flat_face
9641   SUBTYPE OF (feature_definition);
9642   WHERE
9643      WR1:
9644         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction'))) = 1))) = 0;
9645      WR2:
9646         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear')) AND (sdr.name = 'course of travel'))) = 1))) = 1))) = 0;
9647      WR3:
9648         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'removal boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.LINEAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'removal boundary'))) = 1))) = 1))) = 0;
9649      WR4:
9650         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'boundary'))) = 1))) <= 1))) = 0;
9651      WR5:
9652         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
9653      WR6:
9654         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOSS', 'STEP_MERGED_CAD_SCHEMA.PROTRUSION' ] * TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
9655      WR7:
9656         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'removal depth'))) <= 1))) = 0))) = 0;
9657END_ENTITY;
9658
9659-- IN AP203e2/AP242
9660ENTITY flat_pattern_ply_representation_relationship
9661   SUBTYPE OF (shape_representation_relationship);
9662   WHERE
9663      WR1:
9664         'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_1) * TYPEOF(SELF\representation_relationship.rep_2);
9665      WR2:
9666         SELF\representation_relationship.rep_1.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
9667END_ENTITY;
9668
9669ENTITY flatness_tolerance
9670   SUBTYPE OF (geometric_tolerance);
9671   WHERE
9672      WR1:
9673         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
9674END_ENTITY;
9675
9676-- IN AP203e2/AP242
9677ENTITY force_measure_with_unit
9678   SUBTYPE OF (measure_with_unit);
9679   WHERE
9680      WR1:
9681         'STEP_MERGED_CAD_SCHEMA.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
9682END_ENTITY;
9683
9684-- IN AP203e2/AP242
9685ENTITY force_unit
9686   SUBTYPE OF (derived_unit);
9687   WHERE
9688      WR1:
9689         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.newton);
9690END_ENTITY;
9691
9692-- DIFF IN AP214
9693-- IN AP214/AP242
9694ENTITY format_function
9695   SUBTYPE OF (string_expression, binary_generic_expression);
9696   DERIVE
9697      format_string : generic_expression := SELF\binary_generic_expression.operands[2];
9698      value_to_format : generic_expression := SELF\binary_generic_expression.operands[1];
9699   WHERE
9700      WR1:
9701         ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(value_to_format)) AND ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(format_string));
9702END_ENTITY;
9703
9704-- IN AP203e2/AP242
9705ENTITY forward_chaining_rule
9706   SUBTYPE OF (rule_definition);
9707END_ENTITY;
9708
9709-- IN AP203e2/AP242
9710ENTITY forward_chaining_rule_premise
9711   SUBTYPE OF (property_definition, property_definition_representation, representation);
9712END_ENTITY;
9713
9714-- DIFF IN AP214
9715-- DIFF IN AP203e2
9716ENTITY founded_item
9717   SUPERTYPE OF (ONEOF(b_spline_curve_knot_locator, b_spline_curve_segment, b_spline_surface_knot_locator, b_spline_surface_patch, b_spline_surface_strip, boundary_curve_of_b_spline_or_rectangular_composite_surface, box_domain, character_glyph_style_outline, character_glyph_style_stroke, composite_curve_segment, composite_curve_transition_locator, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, externally_defined_style, fill_area_style, interpolated_configuration_segment, kinematic_path_segment, plane_angle_and_length_pair, plane_angle_and_ratio_pair, point_style, presentation_style_assignment, rectangular_composite_surface_transition_locator, surface_patch, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style, view_volume) ANDOR ONEOF(character_glyph_style_outline, character_glyph_style_stroke, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, externally_defined_style, fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style));
9718   DERIVE
9719      users : SET [0:?] OF founded_item_select := using_items(SELF, []);
9720   WHERE
9721      WR1:
9722         SIZEOF(users) > 0;
9723      WR2:
9724         NOT (SELF IN users);
9725END_ENTITY;
9726
9727-- IN AP214
9728ENTITY founded_kinematic_path
9729   SUBTYPE OF (representation);
9730      SELF\representation.items : SET [1:?] OF kinematic_path;
9731      SELF\representation.context_of_items : geometric_representation_context;
9732   DERIVE
9733      paths : SET [1:?] OF kinematic_path := SELF\representation.items;
9734      founding : geometric_representation_context := SELF\representation.context_of_items;
9735END_ENTITY;
9736
9737-- IN AP242
9738ENTITY free_edge
9739   SUBTYPE OF (inapt_topology);
9740      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
9741   WHERE
9742      WR1:
9743         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
9744      WR2:
9745         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
9746      WR3:
9747         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
9748      WR4:
9749         validate_accuracy_types(SELF, []);
9750      WR5:
9751         SIZEOF(QUERY (sdqr <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(sdqr)) AND (SIZEOF(QUERY (sdqiir <* bag_to_set(USEDIN(sdqr, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(sdqiir)) AND (SIZEOF(QUERY (sdqiri <* sdqiir.inspected_instances| ('STEP_MERGED_CAD_SCHEMA.CLOSED_SHELL' IN TYPEOF(sdqiri.inspected_elements[1])))) = 0))) = 0))) = 0;
9752END_ENTITY;
9753
9754-- IN AP242
9755ENTITY free_form_assignment
9756   SUBTYPE OF (free_form_constraint);
9757   WHERE
9758      WR1:
9759         SIZEOF(QUERY (q <* SELF\free_form_constraint.constrained_elements| (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) = 0;
9760      WR2:
9761         SIZEOF(QUERY (q <* SELF\free_form_constraint.reference_elements| NOT (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) = 0;
9762      WR3:
9763         SIZEOF(SELF\free_form_constraint.reference_elements) >= 1;
9764      WR4:
9765         SIZEOF(QUERY (q <* SELF\free_form_constraint.constrained_elements| NOT compatible_spaces(values_space_of(SELF\free_form_constraint.constraining_expression), q\maths_variable.values_space))) = 0;
9766END_ENTITY;
9767
9768-- IN AP242
9769ENTITY free_form_constraint
9770   ABSTRACT SUPERTYPE OF (ONEOF(free_form_assignment, free_form_relation))
9771   SUBTYPE OF (explicit_constraint);
9772      constraining_expression : expression;
9773      SELF\explicit_constraint.constrained_elements : SET [1:?] OF variational_parameter;
9774      SELF\explicit_constraint.reference_elements : SET [0:?] OF variational_parameter;
9775END_ENTITY;
9776
9777-- IN AP242
9778ENTITY free_form_relation
9779   SUBTYPE OF (free_form_constraint);
9780   WHERE
9781      WR1:
9782         'STEP_MERGED_CAD_SCHEMA.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\free_form_constraint.constraining_expression);
9783      WR2:
9784         SIZEOF(QUERY (q <* SELF\free_form_constraint.constrained_elements + SELF\free_form_constraint.reference_elements| NOT (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) = 0;
9785END_ENTITY;
9786
9787-- IN AP242
9788ENTITY free_kinematic_motion_representation
9789   SUBTYPE OF (representation_relationship_with_transformation);
9790      motion : kinematic_path;
9791      SELF\representation_relationship.rep_1 : representative_shape_representation;
9792      SELF\representation_relationship.rep_2 : representative_shape_representation;
9793   WHERE
9794      WR1:
9795         'STEP_MERGED_CAD_SCHEMA.ITEM_DEFINED_TRANSFORMATION' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
9796      WR2:
9797         ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
9798      WR3:
9799         (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) = 3) AND (dimension_of(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) = 3);
9800      WR4:
9801         (SELF\representation_relationship.rep_1 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND (SELF\representation_relationship.rep_2 IN using_representations(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2) + using_representation_with_mapping(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
9802END_ENTITY;
9803
9804-- IN AP203e2/AP242
9805ENTITY frequency_measure_with_unit
9806   SUBTYPE OF (measure_with_unit);
9807   WHERE
9808      WR1:
9809         'STEP_MERGED_CAD_SCHEMA.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
9810END_ENTITY;
9811
9812-- IN AP203e2/AP242
9813ENTITY frequency_unit
9814   SUBTYPE OF (derived_unit);
9815   WHERE
9816      WR1:
9817         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.hertz);
9818END_ENTITY;
9819
9820-- IN AP242
9821ENTITY frozen_assignment
9822   SUBTYPE OF (approval_assignment);
9823      items : SET [1:?] OF change_management_object;
9824END_ENTITY;
9825
9826-- DIFF IN AP214
9827-- IN AP214/AP242
9828ENTITY fully_constrained_pair
9829   SUBTYPE OF (low_order_kinematic_pair);
9830   DERIVE
9831      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
9832      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
9833      SELF\low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
9834      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
9835      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
9836      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
9837END_ENTITY;
9838
9839-- IN AP203e2/AP242
9840ENTITY func
9841   SUBTYPE OF (compound_representation_item);
9842END_ENTITY;
9843
9844-- IN AP242
9845ENTITY function_application
9846   SUBTYPE OF (multiple_arity_generic_expression);
9847      func : maths_function_select;
9848      arguments : LIST [1:?] OF maths_expression;
9849   DERIVE
9850      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF generic_expression := [ convert_to_maths_function(func) ] + convert_to_operands(arguments);
9851   WHERE
9852      WR1:
9853         function_applicability(func, arguments);
9854END_ENTITY;
9855
9856-- IN AP242
9857ENTITY function_space
9858   SUBTYPE OF (maths_space, generic_literal);
9859      domain_constraint : space_constraint_type;
9860      domain_argument : maths_space;
9861      range_constraint : space_constraint_type;
9862      range_argument : maths_space;
9863   WHERE
9864      WR1:
9865         expression_is_constant(domain_argument) AND expression_is_constant(range_argument);
9866      WR2:
9867         (domain_argument <> the_empty_space) AND (range_argument <> the_empty_space);
9868      WR3:
9869         (domain_constraint <> sc_member) OR NOT member_of(the_empty_space, domain_argument);
9870      WR4:
9871         (range_constraint <> sc_member) OR NOT member_of(the_empty_space, range_argument);
9872      WR5:
9873         NOT (any_space_satisfies(domain_constraint, domain_argument) AND any_space_satisfies(range_constraint, range_argument));
9874END_ENTITY;
9875
9876-- IN AP203e2/AP242
9877ENTITY functional_breakdown_context
9878   SUBTYPE OF (breakdown_context);
9879END_ENTITY;
9880
9881-- IN AP203e2/AP242
9882ENTITY functional_element_usage
9883   SUBTYPE OF (breakdown_element_usage);
9884END_ENTITY;
9885
9886ENTITY functionally_defined_transformation;
9887      name : label;
9888      description : OPTIONAL text;
9889END_ENTITY;
9890
9891-- IN AP242
9892ENTITY g1_discontinuity_between_adjacent_faces
9893   SUBTYPE OF (non_smooth_geometry_transition_across_edge);
9894      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9895   WHERE
9896      WR1:
9897         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9898      WR2:
9899         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
9900      WR3:
9901         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
9902      WR4:
9903         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
9904      WR5:
9905         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' ]);
9906END_ENTITY;
9907
9908-- IN AP242
9909ENTITY g1_discontinuous_curve
9910   SUBTYPE OF (discontinuous_geometry);
9911      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9912   WHERE
9913      WR1:
9914         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9915      WR2:
9916         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
9917      WR3:
9918         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
9919      WR4:
9920         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_CURVE_KNOT_LOCATOR' ]);
9921      WR5:
9922         validate_accuracy_types(SELF, []);
9923END_ENTITY;
9924
9925-- IN AP242
9926ENTITY g1_discontinuous_surface
9927   SUBTYPE OF (discontinuous_geometry);
9928      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9929   WHERE
9930      WR1:
9931         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9932      WR2:
9933         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
9934      WR3:
9935         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
9936      WR4:
9937         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_KNOT_LOCATOR' ]);
9938      WR5:
9939         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' ]);
9940END_ENTITY;
9941
9942-- IN AP242
9943ENTITY g2_discontinuity_between_adjacent_faces
9944   SUBTYPE OF (non_smooth_geometry_transition_across_edge);
9945      assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
9946      flat_curvature_radius_tolerance : length_measure;
9947      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9948   WHERE
9949      WR1:
9950         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9951      WR2:
9952         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' IN value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
9953      WR3:
9954         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PLANE_ANGLE_AND_RATIO_PAIR');
9955      WR4:
9956         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
9957      WR5:
9958         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
9959      WR6:
9960         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' ]);
9961END_ENTITY;
9962
9963-- IN AP242
9964ENTITY g2_discontinuous_curve
9965   SUBTYPE OF (discontinuous_geometry);
9966      assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
9967      flat_curvature_radius_tolerance : length_measure;
9968      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9969   WHERE
9970      WR1:
9971         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9972      WR2:
9973         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' IN value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
9974      WR3:
9975         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PLANE_ANGLE_AND_RATIO_PAIR');
9976      WR4:
9977         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
9978      WR5:
9979         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_CURVE_KNOT_LOCATOR' ]);
9980      WR6:
9981         validate_accuracy_types(SELF, []);
9982END_ENTITY;
9983
9984-- IN AP242
9985ENTITY g2_discontinuous_surface
9986   SUBTYPE OF (discontinuous_geometry);
9987      assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
9988      flat_curvature_radius_tolerance : length_measure;
9989      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9990   WHERE
9991      WR1:
9992         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
9993      WR2:
9994         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' IN value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
9995      WR3:
9996         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PLANE_ANGLE_AND_RATIO_PAIR');
9997      WR4:
9998         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
9999      WR5:
10000         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_KNOT_LOCATOR' ]);
10001      WR6:
10002         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' ]);
10003END_ENTITY;
10004
10005-- IN AP242
10006ENTITY gap_between_adjacent_edges_in_loop
10007   SUBTYPE OF (geometric_gap_in_topology);
10008      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10009   WHERE
10010      WR1:
10011         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10012      WR2:
10013         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10014      WR3:
10015         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' ]);
10016      WR4:
10017         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' ]);
10018      WR5:
10019         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10020END_ENTITY;
10021
10022-- IN AP242
10023ENTITY gap_between_edge_and_base_surface
10024   SUBTYPE OF (geometric_gap_in_topology);
10025      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10026   WHERE
10027      WR1:
10028         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10029      WR2:
10030         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10031      WR3:
10032         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
10033      WR4:
10034         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE' ]);
10035      WR5:
10036         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10037END_ENTITY;
10038
10039-- IN AP242
10040ENTITY gap_between_faces_related_to_an_edge
10041   SUBTYPE OF (geometric_gap_in_topology);
10042      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10043   WHERE
10044      WR1:
10045         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10046      WR2:
10047         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10048      WR3:
10049         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
10050      WR4:
10051         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
10052      WR5:
10053         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10054END_ENTITY;
10055
10056-- IN AP242
10057ENTITY gap_between_pcurves_related_to_an_edge
10058   SUBTYPE OF (geometric_gap_in_topology);
10059      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10060   WHERE
10061      WR1:
10062         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10063      WR2:
10064         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10065      WR3:
10066         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
10067      WR4:
10068         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ]);
10069      WR5:
10070         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10071END_ENTITY;
10072
10073-- IN AP242
10074ENTITY gap_between_vertex_and_base_surface
10075   SUBTYPE OF (geometric_gap_in_topology);
10076      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10077   WHERE
10078      WR1:
10079         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10080      WR2:
10081         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10082      WR3:
10083         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
10084      WR4:
10085         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE' ]);
10086      WR5:
10087         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10088END_ENTITY;
10089
10090-- IN AP242
10091ENTITY gap_between_vertex_and_edge
10092   SUBTYPE OF (geometric_gap_in_topology);
10093      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10094   WHERE
10095      WR1:
10096         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10097      WR2:
10098         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
10099      WR3:
10100         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
10101      WR4:
10102         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
10103      WR5:
10104         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10105END_ENTITY;
10106
10107-- IN AP242
10108ENTITY gear
10109   SUBTYPE OF (feature_definition);
10110   WHERE
10111      WR1:
10112         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.used_representation.items))) AND (SIZEOF(pdr.used_representation.items) <= 13))) = 1))) = 1;
10113      WR2:
10114         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth'))) = 1))) = 0))) = 0);
10115      WR3:
10116         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'reference pressure angle'))) = 1))) = 0))) = 0);
10117      WR4:
10118         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor'))) = 1))) = 0))) = 0);
10119      WR5:
10120         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth'))) = 1))) = 0))) = 0);
10121      WR6:
10122         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'face width'))) = 1))) = 0))) = 0);
10123      WR7:
10124         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter'))) = 1))) = 0))) = 0);
10125      WR8:
10126         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'module or diametral pitch')) AND ((it.description = 'module') OR (it.description = 'diametral pitch')))) = 1))) = 0))) = 0);
10127      WR9:
10128         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'internal or external gear')) AND ((it.description = 'internal') OR (it.description = 'external')))) = 1))) = 0))) = 0);
10129      WR10:
10130         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute'))) = 1))) = 0))) = 0);
10131      WR11:
10132         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius'))) <= 1))) = 0))) = 0);
10133      WR12:
10134         NOT (SELF\characterized_object.description IN [ 'helix gear', 'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'reference helix angle'))) = 1))) = 0))) = 0);
10135      WR13:
10136         NOT (SELF\characterized_object.description IN [ 'helix gear', 'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'gear tooth')) AND ((it.description = 'left hand tooth') OR (it.description = 'right hand tooth')))) = 1))) = 0))) = 0);
10137      WR14:
10138         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) = 0))) = 0);
10139      WR15:
10140         NOT (SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'root angle'))) = 1))) = 0))) = 0);
10141      WR16:
10142         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
10143END_ENTITY;
10144
10145-- DIFF IN AP214
10146-- IN AP214/AP242
10147ENTITY gear_pair
10148   SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
10149      radius_first_link : length_measure;
10150      radius_second_link : length_measure;
10151      bevel : plane_angle_measure;
10152      helical_angle : plane_angle_measure;
10153      gear_ratio : REAL;
10154   WHERE
10155      WR1:
10156         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
10157END_ENTITY;
10158
10159-- IN AP214
10160ENTITY gear_pair_range
10161   SUBTYPE OF (simple_pair_range);
10162      SELF\simple_pair_range.applies_to_pair : gear_pair;
10163      lower_limit_actual_rotation_1 : rotational_range_measure;
10164      upper_limit_actual_rotation_1 : rotational_range_measure;
10165   WHERE
10166      wr1:
10167         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation_1)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation_1))) XOR (lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1);
10168END_ENTITY;
10169
10170-- DIFF IN AP214
10171-- IN AP214/AP242
10172ENTITY gear_pair_value
10173   SUBTYPE OF (pair_value);
10174      actual_rotation_1 : plane_angle_measure;
10175      SELF\pair_value.applies_to_pair : gear_pair;
10176   DERIVE
10177      actual_rotation_2 : plane_angle_measure := -actual_rotation_1 * SELF\pair_value.applies_to_pair\gear_pair.gear_ratio;
10178END_ENTITY;
10179
10180-- IN AP242
10181ENTITY gear_pair_with_range
10182   SUBTYPE OF (gear_pair);
10183      lower_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
10184      upper_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
10185   WHERE
10186      WR1:
10187         (NOT EXISTS(lower_limit_actual_rotation_1) OR NOT EXISTS(upper_limit_actual_rotation_1)) XOR (lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1);
10188END_ENTITY;
10189
10190-- IN AP242
10191ENTITY general_datum_reference
10192   ABSTRACT SUPERTYPE OF (ONEOF(datum_reference_compartment, datum_reference_element))
10193   SUBTYPE OF (shape_aspect);
10194      base : datum_or_common_datum;
10195      modifiers : OPTIONAL SET [1:?] OF datum_reference_modifier;
10196   WHERE
10197      WR1:
10198         SELF\shape_aspect.name = '';
10199      WR2:
10200         NOT EXISTS(SELF\shape_aspect.description);
10201      WR3:
10202         NOT EXISTS(SELF\shape_aspect.id);
10203      WR4:
10204         SELF\shape_aspect.product_definitional = FALSE;
10205      WR5:
10206         NOT ('STEP_MERGED_CAD_SCHEMA.DATUM' IN TYPEOF(base)) OR (SELF\shape_aspect.of_shape = base\shape_aspect.of_shape);
10207      WR6:
10208         NOT ('STEP_MERGED_CAD_SCHEMA.COMMON_DATUM_LIST' IN TYPEOF(base)) OR (SELF\shape_aspect.of_shape = base[1]\shape_aspect.of_shape);
10209END_ENTITY;
10210
10211-- DIFF IN AP214
10212-- IN AP214/AP242
10213ENTITY general_feature
10214   SUBTYPE OF (shape_feature_definition);
10215   WHERE
10216      WR1:
10217         (SIZEOF(get_property_definition_representations(SELF)) <= 1) AND (SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) <= 1);
10218      WR2:
10219         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'course of travel occurrence'))) = SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'course of travel'))) = 1)));
10220      WR3:
10221         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'course of travel occurrence'))) = SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)))) = 1)));
10222      WR4:
10223         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'boundary occurrence'))) = SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'boundary occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage'))) = 1)));
10224      WR5:
10225         (SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)))) <= 1) AND (SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 'general compound feature')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND ('STEP_MERGED_CAD_SCHEMA.INSTANCED_FEATURE' IN TYPEOF(sar.related_shape_aspect)))) >= 2))) <= 1);
10226END_ENTITY;
10227
10228-- IN AP242
10229ENTITY general_linear_function
10230   SUBTYPE OF (maths_function, unary_generic_expression);
10231      sum_index : one_or_two;
10232      SELF\unary_generic_expression.operand : maths_function;
10233   DERIVE
10234      mat : maths_function := SELF\unary_generic_expression.operand;
10235   WHERE
10236      WR1:
10237         function_is_2d_table(mat);
10238      WR2:
10239         (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.range), es_numbers);
10240END_ENTITY;
10241
10242ENTITY general_material_property
10243   SUBTYPE OF (general_property);
10244   WHERE
10245      WR1:
10246         SIZEOF(QUERY (gpa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION')| NOT ('STEP_MERGED_CAD_SCHEMA.MATERIAL_PROPERTY' IN TYPEOF(gpa\general_property_association.derived_definition)))) = 0;
10247END_ENTITY;
10248
10249ENTITY general_property;
10250      id : identifier;
10251      name : label;
10252      description : OPTIONAL text;
10253END_ENTITY;
10254
10255ENTITY general_property_association;
10256      name : label;
10257      description : OPTIONAL text;
10258      base_definition : general_property;
10259      derived_definition : derived_property_select;
10260   WHERE
10261      WR1:
10262         SIZEOF(USEDIN(derived_definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1;
10263      WR2:
10264         derived_definition.name = base_definition.name;
10265END_ENTITY;
10266
10267ENTITY general_property_relationship;
10268      name : label;
10269      description : OPTIONAL text;
10270      relating_property : general_property;
10271      related_property : general_property;
10272END_ENTITY;
10273
10274-- IN AP242
10275ENTITY generated_finite_numeric_space
10276   SUBTYPE OF (finite_space);
10277      start_value : maths_number;
10278      increment_value : maths_number;
10279      increment_number : positive_integer;
10280   DERIVE
10281      SELF\finite_space.members : SET [2:?] OF maths_number := make_numeric_set(start_value, increment_value, increment_number);
10282   WHERE
10283      WR1:
10284         increment_value <> 0.0;
10285END_ENTITY;
10286
10287ENTITY generic_character_glyph_symbol
10288   ABSTRACT SUPERTYPE
10289   SUBTYPE OF (symbol_representation);
10290END_ENTITY;
10291
10292ENTITY generic_expression
10293   ABSTRACT SUPERTYPE OF (ONEOF(simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression));
10294   WHERE
10295      WR1:
10296         is_acyclic(SELF);
10297END_ENTITY;
10298
10299ENTITY generic_literal
10300   ABSTRACT SUPERTYPE
10301   SUBTYPE OF (simple_generic_expression);
10302END_ENTITY;
10303
10304-- IN AP242
10305ENTITY generic_product_definition_reference
10306   ABSTRACT SUPERTYPE OF (ONEOF(product_definition_reference, product_definition_reference_with_local_representation));
10307      source : external_source;
10308END_ENTITY;
10309
10310ENTITY generic_variable
10311   ABSTRACT SUPERTYPE
10312   SUBTYPE OF (simple_generic_expression);
10313   INVERSE
10314      interpretation : environment FOR syntactic_representation;
10315END_ENTITY;
10316
10317ENTITY geometric_alignment
10318   SUBTYPE OF (derived_shape_aspect);
10319   WHERE
10320      WR1:
10321         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
10322END_ENTITY;
10323
10324-- IN AP242
10325ENTITY geometric_contact
10326   SUBTYPE OF (derived_shape_aspect);
10327   WHERE
10328      WR1:
10329         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 2;
10330END_ENTITY;
10331
10332ENTITY geometric_curve_set
10333   SUBTYPE OF (geometric_set);
10334   WHERE
10335      WR1:
10336         SIZEOF(QUERY (temp <* SELF\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(temp)))) = 0;
10337END_ENTITY;
10338
10339-- IN AP242
10340ENTITY geometric_gap_in_topology
10341   ABSTRACT SUPERTYPE OF (ONEOF(gap_between_adjacent_edges_in_loop, gap_between_vertex_and_base_surface, gap_between_vertex_and_edge, gap_between_edge_and_base_surface, gap_between_pcurves_related_to_an_edge, gap_between_faces_related_to_an_edge))
10342   SUBTYPE OF (inapt_topology_and_geometry_relationship);
10343END_ENTITY;
10344
10345ENTITY geometric_intersection
10346   SUBTYPE OF (derived_shape_aspect);
10347   WHERE
10348      WR1:
10349         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
10350END_ENTITY;
10351
10352-- DIFF IN AP214
10353-- DIFF IN AP203e2
10354ENTITY geometric_item_specific_usage
10355   SUBTYPE OF (item_identified_representation_usage);
10356      SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select;
10357      SELF\item_identified_representation_usage.identified_item : geometric_model_item;
10358      SELF\item_identified_representation_usage.used_representation : shape_model;
10359   UNIQUE
10360      UR1 : definition;
10361END_ENTITY;
10362
10363-- IN AP203e2/AP242
10364ENTITY geometric_model_element_relationship
10365   SUBTYPE OF (geometric_representation_item, representation_item_relationship);
10366      SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
10367      SELF\representation_item_relationship.relating_representation_item : geometric_representation_item;
10368   UNIQUE
10369      UR1 : relating_representation_item, related_representation_item;
10370   WHERE
10371      WR1:
10372         SELF\representation_item_relationship.relating_representation_item :<>: SELF\representation_item_relationship.related_representation_item;
10373END_ENTITY;
10374
10375-- DIFF IN AP214
10376-- DIFF IN AP203e2
10377ENTITY geometric_representation_context
10378   SUPERTYPE OF (ONEOF(geometric_representation_context_with_parameter, path_parameter_representation_context))
10379   SUBTYPE OF (representation_context);
10380      coordinate_space_dimension : dimension_count;
10381END_ENTITY;
10382
10383-- IN AP242
10384ENTITY geometric_representation_context_with_parameter
10385   SUBTYPE OF (geometric_representation_context);
10386      parameter_unit : OPTIONAL unit;
10387END_ENTITY;
10388
10389-- DIFF IN AP214
10390-- DIFF IN AP203e2
10391ENTITY geometric_representation_item
10392   SUPERTYPE OF ((((((ONEOF(point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, primitive_2d, right_angular_wedge, volume, half_space_solid, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, tessellated_item) ANDOR ONEOF(camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, curve, direction, light_source)) ANDOR ONEOF(annotation_fill_area, composite_text, curve, defined_character_glyph, defined_symbol, point, symbol_target, text_literal)) ANDOR ONEOF(kinematic_path, placement)) ANDOR ONEOF(curve, externally_defined_hatch_style, externally_defined_tile_style, fill_area_style_hatching, fill_area_style_tile_coloured_region, fill_area_style_tile_curve_with_style, fill_area_style_tile_symbol_with_style, fill_area_style_tiles, one_direction_repeat_factor, point, vector)) ANDOR ONEOF(curve, planar_extent)) ANDOR ONEOF(rotation_about_direction, su_parameters))
10393   SUBTYPE OF (representation_item);
10394   DERIVE
10395      dim : dimension_count := dimension_of(SELF);
10396   WHERE
10397      WR1:
10398         SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(using_rep.context_of_items)))) = 0;
10399END_ENTITY;
10400
10401-- DIFF IN AP214
10402ENTITY geometric_set
10403   SUBTYPE OF (geometric_representation_item);
10404      elements : SET [1:?] OF geometric_set_select;
10405END_ENTITY;
10406
10407-- DIFF IN AP214
10408-- DIFF IN AP203e2
10409ENTITY geometric_tolerance
10410   ABSTRACT SUPERTYPE OF ((((geometric_tolerance_with_datum_reference ANDOR geometric_tolerance_with_defined_unit) ANDOR ONEOF(geometric_tolerance_with_modifiers, modified_geometric_tolerance)) ANDOR unequally_disposed_geometric_tolerance) ANDOR ONEOF(cylindricity_tolerance, flatness_tolerance, line_profile_tolerance, position_tolerance, roundness_tolerance, straightness_tolerance, surface_profile_tolerance));
10411      name : label;
10412      description : OPTIONAL text;
10413      magnitude : OPTIONAL length_measure_with_unit;
10414      toleranced_shape_aspect : geometric_tolerance_target;
10415   DERIVE
10416      controlling_shape : product_definition_shape := sts_get_product_definition_shape(toleranced_shape_aspect);
10417      id : identifier := get_id_value(SELF);
10418   UNIQUE
10419      UR1 : id, controlling_shape;
10420   WHERE
10421      WR1:
10422         magnitude\measure_with_unit.value_component >= 0.0;
10423      WR2:
10424         EXISTS(controlling_shape);
10425      WR3:
10426         NOT ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP' IN TYPEOF(toleranced_shape_aspect)) OR (toleranced_shape_aspect\shape_aspect_relationship.relating_shape_aspect.of_shape :=: toleranced_shape_aspect\shape_aspect_relationship.related_shape_aspect.of_shape);
10427      WR4:
10428         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
10429END_ENTITY;
10430
10431ENTITY geometric_tolerance_relationship;
10432      name : label;
10433      description : text;
10434      relating_geometric_tolerance : geometric_tolerance;
10435      related_geometric_tolerance : geometric_tolerance;
10436END_ENTITY;
10437
10438-- DIFF IN AP214
10439-- DIFF IN AP203e2
10440ENTITY geometric_tolerance_with_datum_reference
10441   SUPERTYPE OF (ONEOF(angularity_tolerance, circular_runout_tolerance, coaxiality_tolerance, concentricity_tolerance, parallelism_tolerance, perpendicularity_tolerance, symmetry_tolerance, total_runout_tolerance))
10442   SUBTYPE OF (geometric_tolerance);
10443      datum_system : SET [1:?] OF datum_system_or_reference;
10444   WHERE
10445      WR1:
10446         (SIZEOF(QUERY (ds <* datum_system| ('STEP_MERGED_CAD_SCHEMA.' + 'DATUM_SYSTEM' IN TYPEOF(ds)))) = 0) OR (SIZEOF(datum_system) = 1);
10447END_ENTITY;
10448
10449-- IN AP242
10450ENTITY geometric_tolerance_with_defined_area_unit
10451   SUBTYPE OF (geometric_tolerance_with_defined_unit);
10452      area_type : area_unit_type;
10453      second_unit_size : OPTIONAL length_measure_with_unit;
10454   WHERE
10455      WR1:
10456         NOT (EXISTS(second_unit_size) XOR (area_type = area_unit_type.rectangular));
10457END_ENTITY;
10458
10459-- DIFF IN AP214
10460-- DIFF IN AP203e2
10461ENTITY geometric_tolerance_with_defined_unit
10462   SUBTYPE OF (geometric_tolerance);
10463      unit_size : length_measure_with_unit;
10464   WHERE
10465      WR1:
10466         ('NUMBER' IN TYPEOF(unit_size\measure_with_unit.value_component)) AND (unit_size\measure_with_unit.value_component > 0.0);
10467END_ENTITY;
10468
10469-- IN AP242
10470ENTITY geometric_tolerance_with_maximum_tolerance
10471   SUBTYPE OF (geometric_tolerance_with_modifiers);
10472      maximum_upper_tolerance : length_measure_with_unit;
10473   WHERE
10474      WR1:
10475         (geometric_tolerance_modifier.maximum_material_requirement IN SELF\geometric_tolerance_with_modifiers.modifiers) OR (geometric_tolerance_modifier.least_material_requirement IN SELF\geometric_tolerance_with_modifiers.modifiers);
10476      WR2:
10477         (maximum_upper_tolerance\measure_with_unit.unit_component = SELF\geometric_tolerance.magnitude\measure_with_unit.unit_component) AND (maximum_upper_tolerance\measure_with_unit.value_component > SELF\geometric_tolerance.magnitude\measure_with_unit.value_component);
10478END_ENTITY;
10479
10480-- IN AP242
10481ENTITY geometric_tolerance_with_modifiers
10482   SUBTYPE OF (geometric_tolerance);
10483      modifiers : SET [1:?] OF geometric_tolerance_modifier;
10484END_ENTITY;
10485
10486ENTITY geometrical_tolerance_callout
10487   SUBTYPE OF (draughting_callout);
10488END_ENTITY;
10489
10490ENTITY geometrically_bounded_2d_wireframe_representation
10491   SUBTYPE OF (shape_representation);
10492   WHERE
10493      WR1:
10494         SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
10495      WR2:
10496         SIZEOF(QUERY (item <* SELF.items| NOT (SIZEOF(TYPEOF(item) * [ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_2D', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ]) = 1))) = 0;
10497      WR3:
10498         SIZEOF(QUERY (item <* SELF.items| (SIZEOF(TYPEOF(item) * [ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ]) = 1))) >= 1;
10499      WR4:
10500         SIZEOF(QUERY (mi <* QUERY (item <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(item)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
10501      WR5:
10502         SIZEOF(QUERY (gcs <* QUERY (item <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (elem <* gcs\geometric_set.elements| NOT (SIZEOF(TYPEOF(elem) * [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.CIRCLE', 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE', 'STEP_MERGED_CAD_SCHEMA.ELLIPSE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_2D', 'STEP_MERGED_CAD_SCHEMA.POINT', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' ]) = 1))) = 0))) = 0;
10503      WR6:
10504         SIZEOF(QUERY (gcs <* QUERY (item <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (crv <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(elem)))| NOT valid_basis_curve_in_2d_wireframe(crv))) = 0))) = 0;
10505      WR7:
10506         SIZEOF(QUERY (gcs <* QUERY (item <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (pnt <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.POINT' IN TYPEOF(elem)))| NOT (SIZEOF(TYPEOF(pnt) * [ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE' ]) = 1))) = 0))) = 0;
10507END_ENTITY;
10508
10509ENTITY geometrically_bounded_surface_shape_representation
10510   SUBTYPE OF (shape_representation);
10511   WHERE
10512      WR1:
10513         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
10514      WR2:
10515         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
10516      WR3:
10517         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\mapped_item.mapping_source.mapped_representation.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0;
10518      WR4:
10519         SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pnt <* QUERY (gsel <* gs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.POINT' IN TYPEOF(gsel)))| NOT gbsf_check_point(pnt))) = 0))) = 0;
10520      WR5:
10521         SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cv <* QUERY (gsel <* gs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(gsel)))| NOT gbsf_check_curve(cv))) = 0))) = 0;
10522      WR6:
10523         SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (sf <* QUERY (gsel <* gs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(gsel)))| NOT gbsf_check_surface(sf))) = 0))) = 0;
10524      WR7:
10525         SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| (SIZEOF(QUERY (gsel <* gs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(gsel)))) > 0))) > 0;
10526END_ENTITY;
10527
10528ENTITY geometrically_bounded_wireframe_shape_representation
10529   SUBTYPE OF (shape_representation);
10530   WHERE
10531      WR1:
10532         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF(TYPEOF(it) * [ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ]) = 1))) = 0;
10533      WR2:
10534         SIZEOF(QUERY (it <* SELF.items| (SIZEOF(TYPEOF(it) * [ 'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ]) = 1))) >= 1;
10535      WR3:
10536         SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (crv <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(elem)))| NOT valid_geometrically_bounded_wf_curve(crv))) = 0))) = 0;
10537      WR4:
10538         SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pnts <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.POINT' IN TYPEOF(elem)))| NOT valid_geometrically_bounded_wf_point(pnts))) = 0))) = 0;
10539      WR5:
10540         SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cnc <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.CONIC' IN TYPEOF(elem)))| NOT ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(cnc\conic.position)))) = 0))) = 0;
10541      WR6:
10542         SIZEOF(QUERY (gcs <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (pline <* QUERY (elem <* gcs\geometric_set.elements| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(elem)))| NOT (SIZEOF(pline\polyline.points) > 2))) = 0))) = 0;
10543      WR7:
10544         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
10545END_ENTITY;
10546
10547-- IN AP242
10548ENTITY geometry_with_local_irregularity
10549   ABSTRACT SUPERTYPE OF (ONEOF(extreme_patch_width_variation, zero_surface_normal, abrupt_change_of_surface_normal))
10550   SUBTYPE OF (inapt_geometry);
10551END_ENTITY;
10552
10553-- IN AP242
10554ENTITY geometry_with_local_near_degeneracy
10555   ABSTRACT SUPERTYPE OF (ONEOF(curve_with_small_curvature_radius, short_length_curve_segment, surface_with_small_curvature_radius, small_area_surface_patch, narrow_surface_patch, indistinct_surface_knots, indistinct_curve_knots, nearly_degenerate_surface_boundary, nearly_degenerate_surface_patch))
10556   SUBTYPE OF (inapt_geometry);
10557END_ENTITY;
10558
10559-- IN AP203e2/AP242
10560ENTITY global_assignment
10561   SUBTYPE OF (representation_item_relationship);
10562END_ENTITY;
10563
10564ENTITY global_uncertainty_assigned_context
10565   SUBTYPE OF (representation_context);
10566      uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
10567END_ENTITY;
10568
10569ENTITY global_unit_assigned_context
10570   SUBTYPE OF (representation_context);
10571      units : SET [1:?] OF unit;
10572END_ENTITY;
10573
10574-- IN AP203e2/AP242
10575ENTITY ground_fact
10576   SUBTYPE OF (atomic_formula);
10577END_ENTITY;
10578
10579-- DIFF IN AP214
10580-- DIFF IN AP203e2
10581ENTITY group
10582   SUPERTYPE OF (ONEOF(change_group, change_element));
10583      name : label;
10584      description : OPTIONAL text;
10585   DERIVE
10586      id : identifier := get_id_value(SELF);
10587   WHERE
10588      WR1:
10589         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
10590END_ENTITY;
10591
10592-- DIFF IN AP214
10593-- DIFF IN AP203e2
10594ENTITY group_assignment
10595   ABSTRACT SUPERTYPE OF (ONEOF(current_change_element_assignment, previous_change_element_assignment, change_group_assignment));
10596      assigned_group : group;
10597   DERIVE
10598      role : object_role := get_role(SELF);
10599   WHERE
10600      WR1:
10601         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
10602END_ENTITY;
10603
10604ENTITY group_relationship;
10605      name : label;
10606      description : OPTIONAL text;
10607      relating_group : group;
10608      related_group : group;
10609END_ENTITY;
10610
10611-- IN AP242
10612ENTITY half_space_2d
10613   SUBTYPE OF (primitive_2d);
10614      base_curve : curve;
10615      agreement_flag : BOOLEAN;
10616END_ENTITY;
10617
10618ENTITY half_space_solid
10619   SUBTYPE OF (geometric_representation_item);
10620      base_surface : surface;
10621      agreement_flag : BOOLEAN;
10622END_ENTITY;
10623
10624ENTITY hardness_representation
10625   SUBTYPE OF (representation);
10626   WHERE
10627      WR1:
10628         ((2 <= SIZEOF(SELF.items)) AND (SIZEOF(SELF.items) <= 4)) AND (SIZEOF(QUERY (i <* items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name IN [ 'measuring method', 'measuring position' ]))) + SIZEOF(QUERY (i <* items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) = 1) AND (i.name IN [ 'depth', 'hardness' ]))) = SIZEOF(SELF.items));
10629      WR2:
10630         SIZEOF(QUERY (i <* SELF.items| (i.name = 'measuring method'))) = 1;
10631      WR3:
10632         SIZEOF(QUERY (i <* SELF.items| (i.name = 'hardness'))) = 1;
10633      WR4:
10634         SIZEOF(QUERY (i <* SELF.items| (i.name = 'measuring position'))) <= 1;
10635      WR5:
10636         SIZEOF(QUERY (i <* SELF.items| (i.name = 'depth'))) <= 1;
10637      WR6:
10638         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)) AND (gpa\general_property_association.base_definition\general_property.name = 'surface_condition'))) = 1))) = 1);
10639END_ENTITY;
10640
10641-- DIFF IN AP214
10642ENTITY hidden_element_over_riding_styled_item
10643   SUBTYPE OF (context_dependent_over_riding_styled_item);
10644      SELF\styled_item.item : camera_image;
10645      SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view;
10646   INVERSE
10647      container : SET [1:?] OF presentation_view FOR items;
10648   WHERE
10649      WR1:
10650         'STEP_MERGED_CAD_SCHEMA.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF(SELF.item\mapped_item.mapping_source.mapping_origin);
10651END_ENTITY;
10652
10653-- IN AP242
10654ENTITY high_degree_axi_symmetric_surface
10655   SUBTYPE OF (overcomplex_geometry);
10656      approximation_tolerance : length_measure;
10657      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10658   WHERE
10659      WR1:
10660         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10661      WR2:
10662         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
10663      WR3:
10664         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
10665      WR4:
10666         validate_locations_of_extreme_value_type(SELF, []);
10667      WR5:
10668         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10669END_ENTITY;
10670
10671-- IN AP242
10672ENTITY high_degree_conic
10673   SUBTYPE OF (overcomplex_geometry);
10674      approximation_tolerance : length_measure;
10675      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10676   WHERE
10677      WR1:
10678         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10679      WR2:
10680         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
10681      WR3:
10682         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
10683      WR4:
10684         validate_locations_of_extreme_value_type(SELF, []);
10685      WR5:
10686         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10687END_ENTITY;
10688
10689-- IN AP242
10690ENTITY high_degree_linear_curve
10691   SUBTYPE OF (overcomplex_geometry);
10692      approximation_tolerance : length_measure;
10693      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10694   WHERE
10695      WR1:
10696         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10697      WR2:
10698         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
10699      WR3:
10700         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
10701      WR4:
10702         validate_locations_of_extreme_value_type(SELF, []);
10703      WR5:
10704         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10705END_ENTITY;
10706
10707-- IN AP242
10708ENTITY high_degree_planar_surface
10709   SUBTYPE OF (overcomplex_geometry);
10710      approximation_tolerance : length_measure;
10711      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10712   WHERE
10713      WR1:
10714         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
10715      WR2:
10716         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
10717      WR3:
10718         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
10719      WR4:
10720         validate_locations_of_extreme_value_type(SELF, []);
10721      WR5:
10722         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
10723END_ENTITY;
10724
10725-- IN AP242
10726ENTITY high_order_kinematic_pair
10727   ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_and_planar_curve_pair, point_on_surface_pair, point_on_planar_curve_pair, planar_curve_pair, surface_pair))
10728   SUBTYPE OF (kinematic_pair);
10729   WHERE
10730      WR1:
10731         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_2| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
10732END_ENTITY;
10733
10734-- IN AP214/AP242
10735ENTITY hole_bottom
10736   SUBTYPE OF (shape_aspect);
10737   WHERE
10738      WR1:
10739         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
10740      WR2:
10741         SELF.description IN [ 'through', 'flat', 'flat with radius', 'flat with taper', 'spherical', 'conical' ];
10742      WR3:
10743         NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 0))) = 0);
10744      WR4:
10745         NOT (SELF.description IN [ 'flat with radius', 'flat with taper', 'spherical', 'conical' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
10746      WR5:
10747         NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 0))) = 0))) = 0);
10748      WR6:
10749         NOT (SELF.description IN [ 'flat with radius', 'spherical' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0);
10750      WR7:
10751         NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0);
10752      WR8:
10753         NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 1) AND (SIZEOF(impl_rep.used_representation.items) <= 2))) = 0))) = 0);
10754      WR9:
10755         (SELF.description = 'through') OR (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'hole bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (fcr.name IN [ 'hole depth start', 'hole depth end' ]))) >= 1);
10756      WR10:
10757         NOT (SELF.description = 'flat with radius') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) = 1))) = 0))) = 0);
10758      WR11:
10759         NOT (SELF.description = 'spherical') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
10760      WR12:
10761         NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tip radius'))) <= 1))) = 0))) = 0);
10762      WR13:
10763         NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) = 0))) = 0);
10764      WR14:
10765         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'hole bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND ('STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('STEP_MERGED_CAD_SCHEMA.HOLE_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
10766      WR15:
10767         NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'final diameter'))) = 1))) = 0))) = 0);
10768      WR16:
10769         NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'taper diameter'))) = 1))) = 0))) = 0);
10770END_ENTITY;
10771
10772-- IN AP214/AP242
10773ENTITY hole_in_panel
10774   SUBTYPE OF (feature_definition);
10775   WHERE
10776      WR1:
10777         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage')) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = 1;
10778      WR2:
10779         SIZEOF(get_property_definition_representations(SELF)) = SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| (SIZEOF(pdr.used_representation.items) = 1)));
10780END_ENTITY;
10781
10782-- IN AP242
10783ENTITY homogeneous_linear_function
10784   SUBTYPE OF (maths_function, unary_generic_expression);
10785      sum_index : one_or_two;
10786      SELF\unary_generic_expression.operand : maths_function;
10787   DERIVE
10788      mat : maths_function := SELF\unary_generic_expression.operand;
10789   WHERE
10790      WR1:
10791         function_is_2d_table(mat);
10792      WR2:
10793         (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.range), es_numbers);
10794END_ENTITY;
10795
10796-- IN AP214/AP242
10797ENTITY homokinetic_pair
10798   SUBTYPE OF (universal_pair);
10799   WHERE
10800      WR1:
10801         NOT EXISTS(SELF.input_skew_angle);
10802END_ENTITY;
10803
10804ENTITY hyperbola
10805   SUBTYPE OF (conic);
10806      semi_axis : positive_length_measure;
10807      semi_imag_axis : positive_length_measure;
10808END_ENTITY;
10809
10810ENTITY id_attribute;
10811      attribute_value : identifier;
10812      identified_item : id_attribute_select;
10813END_ENTITY;
10814
10815ENTITY identification_assignment
10816   ABSTRACT SUPERTYPE;
10817      assigned_id : identifier;
10818      role : identification_role;
10819END_ENTITY;
10820
10821ENTITY identification_role;
10822      name : label;
10823      description : OPTIONAL text;
10824END_ENTITY;
10825
10826-- IN AP203e2/AP242
10827ENTITY illuminance_measure_with_unit
10828   SUBTYPE OF (measure_with_unit);
10829   WHERE
10830      WR1:
10831         'STEP_MERGED_CAD_SCHEMA.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
10832END_ENTITY;
10833
10834-- IN AP203e2/AP242
10835ENTITY illuminance_unit
10836   SUBTYPE OF (derived_unit);
10837   WHERE
10838      WR1:
10839         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lux);
10840END_ENTITY;
10841
10842-- IN AP242
10843ENTITY implicit_explicit_positioned_sketch_relationship
10844   SUBTYPE OF (representation_item_relationship);
10845      SELF\representation_item_relationship.related_representation_item : positioned_sketch;
10846      SELF\representation_item_relationship.relating_representation_item : repositioned_neutral_sketch;
10847   WHERE
10848      WR1:
10849         SIZEOF(QUERY (q <* using_representations(SELF\representation_item_relationship.related_representation_item)| item_in_context(SELF\representation_item_relationship.relating_representation_item, q.context_of_items))) > 0;
10850END_ENTITY;
10851
10852-- IN AP242
10853ENTITY implicit_intersection_curve
10854   SUBTYPE OF (implicit_planar_curve);
10855      external_surface : surface;
10856END_ENTITY;
10857
10858-- IN AP242
10859ENTITY implicit_model_intersection_curve
10860   SUBTYPE OF (implicit_planar_curve);
10861      intersected_model : surface_or_solid_model;
10862END_ENTITY;
10863
10864-- IN AP242
10865ENTITY implicit_planar_curve
10866   ABSTRACT SUPERTYPE OF (ONEOF(implicit_intersection_curve, implicit_projected_curve, implicit_model_intersection_curve, implicit_silhouette_curve))
10867   SUBTYPE OF (curve, auxiliary_geometric_representation_item);
10868      using_sketch : positioned_sketch;
10869      computed_representation : curve;
10870   DERIVE
10871      curve_plane : plane := get_plane_of_implicit_geometry(using_sketch);
10872   WHERE
10873      WR1:
10874         SIZEOF(TYPEOF(computed_representation) * [ 'STEP_MERGED_CAD_SCHEMA.IMPLICIT_PLANAR_CURVE', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' ]) = 0;
10875END_ENTITY;
10876
10877-- IN AP242
10878ENTITY implicit_planar_intersection_point
10879   SUBTYPE OF (implicit_point_on_plane);
10880      external_curve : curve;
10881END_ENTITY;
10882
10883-- IN AP242
10884ENTITY implicit_planar_projection_point
10885   SUBTYPE OF (implicit_point_on_plane);
10886      external_point : point;
10887      projection_direction : direction;
10888END_ENTITY;
10889
10890-- IN AP242
10891ENTITY implicit_point_on_plane
10892   ABSTRACT SUPERTYPE OF (ONEOF(implicit_planar_intersection_point, implicit_planar_projection_point))
10893   SUBTYPE OF (point, auxiliary_geometric_representation_item);
10894      using_sketch : positioned_sketch;
10895      computed_representation : cartesian_point;
10896   DERIVE
10897      plane_of_point : plane := get_plane_of_implicit_geometry(using_sketch);
10898   WHERE
10899      WR1:
10900         (plane_of_point\elementary_surface.position.location = computed_representation) XOR (dot_product(plane_of_point\elementary_surface.position.p[3], get_relative_direction_2points(plane_of_point\elementary_surface.position.location, computed_representation)) = 0);
10901      WR2:
10902         SIZEOF(TYPEOF(computed_representation) * [ 'STEP_MERGED_CAD_SCHEMA.IMPLICIT_POINT_ON_PLANE', 'STEP_MERGED_CAD_SCHEMA.POINT_REPLICA' ]) = 0;
10903END_ENTITY;
10904
10905-- IN AP242
10906ENTITY implicit_projected_curve
10907   SUBTYPE OF (implicit_planar_curve);
10908      external_curve : curve;
10909      projection_direction : direction;
10910END_ENTITY;
10911
10912-- IN AP242
10913ENTITY implicit_silhouette_curve
10914   SUBTYPE OF (implicit_planar_curve);
10915      silhouetted_model : surface_or_solid_model;
10916      view_direction : direction;
10917END_ENTITY;
10918
10919-- IN AP242
10920ENTITY imported_curve_function
10921   SUBTYPE OF (maths_function, generic_literal);
10922      geometry : curve;
10923      parametric_domain : tuple_space;
10924   WHERE
10925      WR1:
10926         expression_is_constant(parametric_domain);
10927END_ENTITY;
10928
10929-- IN AP242
10930ENTITY imported_point_function
10931   SUBTYPE OF (maths_function, generic_literal);
10932      geometry : point;
10933END_ENTITY;
10934
10935-- IN AP242
10936ENTITY imported_surface_function
10937   SUBTYPE OF (maths_function, generic_literal);
10938      geometry : surface;
10939      parametric_domain : tuple_space;
10940   WHERE
10941      WR1:
10942         expression_is_constant(parametric_domain);
10943END_ENTITY;
10944
10945-- IN AP242
10946ENTITY imported_volume_function
10947   SUBTYPE OF (maths_function, generic_literal);
10948      geometry : volume;
10949      parametric_domain : tuple_space;
10950   WHERE
10951      WR1:
10952         expression_is_constant(parametric_domain);
10953END_ENTITY;
10954
10955-- IN AP242
10956ENTITY inappropriate_element_visibility
10957   SUBTYPE OF (externally_conditioned_data_quality_criterion);
10958   WHERE
10959      WR1:
10960         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' ]);
10961END_ENTITY;
10962
10963-- IN AP242
10964ENTITY inappropriate_use_of_layer
10965   SUBTYPE OF (externally_conditioned_data_quality_criterion);
10966   WHERE
10967      WR1:
10968         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT' ]);
10969END_ENTITY;
10970
10971-- IN AP242
10972ENTITY inapt_data
10973   ABSTRACT SUPERTYPE OF (ONEOF(inapt_topology, inapt_geometry, inapt_topology_and_geometry_relationship, inapt_manifold_solid_brep))
10974   SUBTYPE OF (shape_data_quality_criterion);
10975END_ENTITY;
10976
10977-- IN AP242
10978ENTITY inapt_geometry
10979   ABSTRACT SUPERTYPE OF (ONEOF(nearly_degenerate_geometry, discontinuous_geometry, self_intersecting_geometry, geometry_with_local_near_degeneracy, overlapping_geometry, multiply_defined_geometry, geometry_with_local_irregularity, overcomplex_geometry))
10980   SUBTYPE OF (inapt_data);
10981END_ENTITY;
10982
10983-- IN AP242
10984ENTITY inapt_manifold_solid_brep
10985   ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_solids, small_volume_solid, multiply_defined_solids, entirely_narrow_solid, solid_with_excessive_number_of_voids))
10986   SUBTYPE OF (inapt_data);
10987END_ENTITY;
10988
10989-- IN AP242
10990ENTITY inapt_topology
10991   ABSTRACT SUPERTYPE OF (ONEOF(free_edge, non_manifold_at_edge, non_manifold_at_vertex, over_used_vertex))
10992   SUBTYPE OF (inapt_data);
10993END_ENTITY;
10994
10995-- IN AP242
10996ENTITY inapt_topology_and_geometry_relationship
10997   ABSTRACT SUPERTYPE OF (ONEOF(topology_related_to_nearly_degenerate_geometry, geometric_gap_in_topology, non_smooth_geometry_transition_across_edge, topology_related_to_self_intersecting_geometry, steep_geometry_transition_across_edge, topology_related_to_overlapping_geometry, topology_related_to_multiply_defined_geometry, overcomplex_topology_and_geometry_relationship))
10998   SUBTYPE OF (inapt_data);
10999END_ENTITY;
11000
11001-- IN AP242
11002ENTITY incidence_assembly_constraint
11003   SUBTYPE OF (binary_assembly_constraint, incidence_geometric_constraint);
11004END_ENTITY;
11005
11006-- IN AP242
11007ENTITY incidence_geometric_constraint
11008   SUBTYPE OF (explicit_geometric_constraint);
11009      near_points : SET [0:?] OF near_point_relationship;
11010      SELF\explicit_constraint.constrained_elements : SET [1:?] OF geometric_constraint_element;
11011      SELF\explicit_constraint.reference_elements : SET [0:?] OF geometric_constraint_element;
11012   WHERE
11013      WR1:
11014         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
11015      WR2:
11016         SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
11017      WR3:
11018         SIZEOF(QUERY (q <* near_points| NOT (q\representation_item_relationship.relating_representation_item IN SELF\explicit_constraint.reference_elements))) = 0;
11019END_ENTITY;
11020
11021-- IN AP203e2/AP242
11022ENTITY included_text_block
11023   SUBTYPE OF (mapped_item);
11024   WHERE
11025      WR1:
11026         'STEP_MERGED_CAD_SCHEMA.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
11027END_ENTITY;
11028
11029ENTITY inclusion_product_concept_feature
11030   SUBTYPE OF (conditional_concept_feature);
11031   WHERE
11032      WR1:
11033         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
11034      WR2:
11035         SIZEOF(QUERY (cfr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE')| ('STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)))) + SIZEOF(QUERY (cfr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE')| ('STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)))) = 0;
11036      WR3:
11037         SELF.condition.conditional_operator.name = 'implication';
11038END_ENTITY;
11039
11040-- IN AP242
11041ENTITY inconsistent_adjacent_face_normals
11042   SUBTYPE OF (erroneous_topology);
11043      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11044   WHERE
11045      WR1:
11046         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11047      WR2:
11048         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'CLOSED_OR_OPEN_SHELL_SELECT' ]);
11049      WR3:
11050         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
11051      WR4:
11052         validate_accuracy_types(SELF, []);
11053END_ENTITY;
11054
11055-- IN AP242
11056ENTITY inconsistent_curve_transition_code
11057   SUBTYPE OF (erroneous_geometry);
11058      angle_tolerance : plane_angle_measure;
11059      curvature_ratio_tolerance : ratio_measure;
11060      distance_tolerance : length_measure;
11061      flat_curvature_radius_tolerance : length_measure;
11062      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11063   WHERE
11064      WR1:
11065         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11066      WR2:
11067         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' ]);
11068      WR3:
11069         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'COMPOSITE_CURVE_TRANSITION_LOCATOR' ]);
11070      WR4:
11071         validate_accuracy_types(SELF, []);
11072END_ENTITY;
11073
11074-- IN AP242
11075ENTITY inconsistent_edge_and_curve_directions
11076   SUBTYPE OF (erroneous_topology_and_geometry_relationship);
11077      distance_tolerance : length_measure;
11078      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11079   WHERE
11080      WR1:
11081         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11082      WR2:
11083         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
11084      WR3:
11085         validate_locations_of_extreme_value_type(SELF, []);
11086      WR4:
11087         validate_accuracy_types(SELF, []);
11088END_ENTITY;
11089
11090-- IN AP242
11091ENTITY inconsistent_element_reference
11092   SUBTYPE OF (externally_conditioned_data_quality_criterion);
11093   WHERE
11094      WR1:
11095         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' ]);
11096END_ENTITY;
11097
11098-- IN AP242
11099ENTITY inconsistent_face_and_closed_shell_normals
11100   SUBTYPE OF (erroneous_topology_and_geometry_relationship);
11101      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11102   WHERE
11103      WR1:
11104         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11105      WR2:
11106         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
11107      WR3:
11108         validate_locations_of_extreme_value_type(SELF, []);
11109      WR4:
11110         validate_accuracy_types(SELF, []);
11111END_ENTITY;
11112
11113-- IN AP242
11114ENTITY inconsistent_face_and_surface_normals
11115   SUBTYPE OF (erroneous_topology_and_geometry_relationship);
11116      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11117   WHERE
11118      WR1:
11119         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11120      WR2:
11121         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
11122      WR3:
11123         validate_locations_of_extreme_value_type(SELF, []);
11124      WR4:
11125         validate_accuracy_types(SELF, []);
11126END_ENTITY;
11127
11128-- IN AP242
11129ENTITY inconsistent_surface_transition_code
11130   SUBTYPE OF (erroneous_geometry);
11131      angle_tolerance : plane_angle_measure;
11132      curvature_ratio_tolerance : ratio_measure;
11133      distance_tolerance : length_measure;
11134      flat_curvature_radius_tolerance : length_measure;
11135      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11136   WHERE
11137      WR1:
11138         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11139      WR2:
11140         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_COMPOSITE_SURFACE' ]);
11141      WR3:
11142         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'RECTANGULAR_COMPOSITE_SURFACE_TRANSITION_LOCATOR' ]);
11143      WR4:
11144         validate_accuracy_types(SELF, []);
11145END_ENTITY;
11146
11147-- DIFF IN AP214
11148-- IN AP214/AP242
11149ENTITY index_expression
11150   SUBTYPE OF (string_expression, binary_generic_expression);
11151   DERIVE
11152      index : generic_expression := SELF\binary_generic_expression.operands[2];
11153      operand : generic_expression := SELF\binary_generic_expression.operands[1];
11154   WHERE
11155      WR1:
11156         ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(operand)) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(index));
11157      WR2:
11158         is_int_expr(index);
11159END_ENTITY;
11160
11161-- IN AP203e2/AP242
11162ENTITY indirectly_selected_elements
11163   SUBTYPE OF (user_selected_elements);
11164      indirectly_picked_items : SET [1:?] OF representation_item;
11165END_ENTITY;
11166
11167-- DIFF IN AP203e2
11168-- IN AP203e2/AP242
11169ENTITY indirectly_selected_shape_elements
11170   SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements);
11171      SELF\indirectly_selected_elements.indirectly_picked_items : SET [1:?] OF shape_representation_item;
11172END_ENTITY;
11173
11174-- IN AP242
11175ENTITY indistinct_curve_knots
11176   SUBTYPE OF (geometry_with_local_near_degeneracy);
11177      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
11178   WHERE
11179      WR1:
11180         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PARAMETER_VALUE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
11181      WR2:
11182         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PARAMETER_VALUE');
11183      WR3:
11184         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS' ]);
11185      WR4:
11186         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_CURVE_KNOT_LOCATOR' ]);
11187      WR5:
11188         validate_accuracy_types(SELF, []);
11189END_ENTITY;
11190
11191-- IN AP242
11192ENTITY indistinct_surface_knots
11193   SUBTYPE OF (geometry_with_local_near_degeneracy);
11194      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
11195   WHERE
11196      WR1:
11197         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PARAMETER_VALUE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
11198      WR2:
11199         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PARAMETER_VALUE');
11200      WR3:
11201         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' ]);
11202      WR4:
11203         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_KNOT_LOCATOR' ]);
11204      WR5:
11205         validate_accuracy_types(SELF, []);
11206END_ENTITY;
11207
11208-- IN AP203e2/AP242
11209ENTITY inductance_measure_with_unit
11210   SUBTYPE OF (measure_with_unit);
11211   WHERE
11212      WR1:
11213         'STEP_MERGED_CAD_SCHEMA.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
11214END_ENTITY;
11215
11216-- IN AP203e2/AP242
11217ENTITY inductance_unit
11218   SUBTYPE OF (derived_unit);
11219   WHERE
11220      WR1:
11221         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.henry);
11222END_ENTITY;
11223
11224-- IN AP203e2/AP242
11225ENTITY information_right
11226   SUBTYPE OF (action_method);
11227END_ENTITY;
11228
11229-- IN AP203e2/AP242
11230ENTITY information_usage_right
11231   SUBTYPE OF (action_method);
11232END_ENTITY;
11233
11234-- IN AP214
11235ENTITY initial_state;
11236      applies_to_mechanism : mechanism;
11237      pair_values : SET [1:?] OF pair_value;
11238   WHERE
11239      wr1:
11240         SIZEOF(QUERY (joint <* applies_to_mechanism.structure_definition.joints| (SIZEOF(QUERY (init_val <* pair_values| (init_val.applies_to_pair.joint :=: joint))) <> 1))) = 0;
11241END_ENTITY;
11242
11243-- IN AP242
11244ENTITY instance_attribute_reference
11245   SUBTYPE OF (variable_semantics);
11246      attribute_name : attribute_identifier;
11247      owning_instance : representation_item;
11248END_ENTITY;
11249
11250-- IN AP242
11251ENTITY instance_report_item_with_extreme_instances
11252   SUBTYPE OF (shape_data_quality_inspection_instance_report_item);
11253      extreme_instances : LIST [1:?] OF extreme_instance;
11254END_ENTITY;
11255
11256-- IN AP203e2/AP242
11257ENTITY instance_usage_context_assignment
11258   SUBTYPE OF (product_definition_context);
11259      items : SET [1:?] OF instance_usage_context_select;
11260END_ENTITY;
11261
11262-- DIFF IN AP214
11263-- DIFF IN AP203e2
11264ENTITY instanced_feature
11265   SUBTYPE OF (feature_definition, shape_aspect);
11266   WHERE
11267      WR1:
11268         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
11269      WR2:
11270         SELF.product_definitional;
11271END_ENTITY;
11272
11273ENTITY int_literal
11274   SUBTYPE OF (literal_number);
11275      SELF\literal_number.the_value : INTEGER;
11276END_ENTITY;
11277
11278-- IN AP214/AP242
11279ENTITY int_numeric_variable
11280   SUBTYPE OF (numeric_variable);
11281END_ENTITY;
11282
11283-- IN AP214/AP242
11284ENTITY int_value_function
11285   SUBTYPE OF (value_function);
11286END_ENTITY;
11287
11288-- IN AP214/AP242
11289ENTITY integer_defined_function
11290   ABSTRACT SUPERTYPE
11291   SUBTYPE OF (numeric_defined_function);
11292END_ENTITY;
11293
11294-- IN AP242
11295ENTITY integer_interval_from_min
11296   SUBTYPE OF (maths_space, generic_literal);
11297      min : INTEGER;
11298END_ENTITY;
11299
11300-- IN AP242
11301ENTITY integer_interval_to_max
11302   SUBTYPE OF (maths_space, generic_literal);
11303      max : INTEGER;
11304END_ENTITY;
11305
11306-- IN AP203e2/AP242
11307ENTITY integer_representation_item
11308   SUBTYPE OF (representation_item, int_literal);
11309END_ENTITY;
11310
11311-- IN AP242
11312ENTITY integer_tuple_literal
11313   SUBTYPE OF (generic_literal);
11314      lit_value : LIST [1:?] OF INTEGER;
11315END_ENTITY;
11316
11317-- IN AP242
11318ENTITY interfaced_group_component
11319   SUBTYPE OF (assembly_group_component);
11320END_ENTITY;
11321
11322-- IN AP242
11323ENTITY interpolated_configuration_representation
11324   SUBTYPE OF (representation);
11325      SELF\representation.context_of_items : geometric_representation_context_with_parameter;
11326      SELF\representation.items : SET [1:?] OF interpolated_configuration_sequence;
11327END_ENTITY;
11328
11329-- IN AP242
11330ENTITY interpolated_configuration_segment
11331   SUBTYPE OF (founded_item);
11332      state : mechanism_state_representation;
11333      t_parameter : parameter_value;
11334      interpolation : interpolation_type;
11335END_ENTITY;
11336
11337-- DIFF IN AP214
11338-- IN AP214/AP242
11339ENTITY interpolated_configuration_sequence
11340   SUBTYPE OF (representation_item);
11341      segments : LIST [2:?] OF interpolated_configuration_segment;
11342   DERIVE
11343      closed_interpolation : LOGICAL := segments[n_segments].interpolation <> discontinuous_interpolation_type;
11344      configured_mechanism : mechanism_representation := segments[1].state.represented_mechanism;
11345      n_segments : INTEGER := SIZEOF(segments);
11346   WHERE
11347      WR1:
11348         SIZEOF(QUERY (ics <* segments| (ics.state.represented_mechanism :<>: configured_mechanism))) = 0;
11349END_ENTITY;
11350
11351-- IN AP242
11352ENTITY intersecting_connected_face_sets
11353   SUBTYPE OF (topology_related_to_self_intersecting_geometry);
11354      interference_tolerance : length_measure;
11355      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11356   WHERE
11357      WR1:
11358         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11359      WR2:
11360         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET', 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
11361      WR3:
11362         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE' ]);
11363      WR4:
11364         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
11365END_ENTITY;
11366
11367-- IN AP242
11368ENTITY intersecting_loops_in_face
11369   SUBTYPE OF (erroneous_topology_and_geometry_relationship);
11370      interference_tolerance : length_measure;
11371      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11372   WHERE
11373      WR1:
11374         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11375      WR2:
11376         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE' ]);
11377      WR3:
11378         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
11379      WR4:
11380         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
11381END_ENTITY;
11382
11383-- IN AP242
11384ENTITY intersecting_shells_in_solid
11385   SUBTYPE OF (erroneous_manifold_solid_brep);
11386      interference_tolerance : length_measure;
11387      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11388   WHERE
11389      WR1:
11390         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
11391      WR2:
11392         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' ]);
11393      WR3:
11394         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' ]);
11395      WR4:
11396         validate_accuracy_types(SELF, []);
11397END_ENTITY;
11398
11399ENTITY intersection_curve
11400   SUBTYPE OF (surface_curve);
11401   WHERE
11402      WR1:
11403         SIZEOF(SELF\surface_curve.associated_geometry) = 2;
11404      WR2:
11405         associated_surface(SELF\surface_curve.associated_geometry[1]) <> associated_surface(SELF\surface_curve.associated_geometry[2]);
11406END_ENTITY;
11407
11408-- DIFF IN AP214
11409ENTITY interval_expression
11410   SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
11411   DERIVE
11412      interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
11413      interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
11414      interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
11415   WHERE
11416      WR1:
11417         (('STEP_MERGED_CAD_SCHEMA.EXPRESSION' IN TYPEOF(interval_low)) AND ('STEP_MERGED_CAD_SCHEMA.EXPRESSION' IN TYPEOF(interval_item))) AND ('STEP_MERGED_CAD_SCHEMA.EXPRESSION' IN TYPEOF(interval_high));
11418      WR2:
11419         (('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF.interval_high))) AND ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF.interval_item)) OR (('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_item))) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_high));
11420END_ENTITY;
11421
11422ENTITY invisibility;
11423      invisible_items : SET [1:?] OF invisible_item;
11424END_ENTITY;
11425
11426-- IN AP203e2/AP242
11427ENTITY iso4217_currency
11428   SUBTYPE OF (currency);
11429END_ENTITY;
11430
11431ENTITY item_defined_transformation;
11432      name : label;
11433      description : OPTIONAL text;
11434      transform_item_1 : representation_item;
11435      transform_item_2 : representation_item;
11436END_ENTITY;
11437
11438-- DIFF IN AP214
11439-- DIFF IN AP203e2
11440ENTITY item_identified_representation_usage;
11441      name : label;
11442      description : OPTIONAL text;
11443      definition : item_identified_representation_usage_definition;
11444      used_representation : representation;
11445      identified_item : item_identified_representation_usage_select;
11446   WHERE
11447      WR1:
11448         SELF.used_representation IN using_representations(SELF.identified_item);
11449END_ENTITY;
11450
11451-- IN AP242
11452ENTITY item_link_motion_relationship
11453   SUBTYPE OF (link_motion_relationship);
11454      item : geometric_representation_item;
11455      SELF\representation_relationship.rep_1 : shape_representation;
11456END_ENTITY;
11457
11458-- IN AP214/AP242
11459ENTITY joggle
11460   SUBTYPE OF (feature_definition);
11461   WHERE
11462      WR1:
11463         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND NOT ((5 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 10)))) = 0;
11464      WR2:
11465         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| NOT (i.name IN [ 'orientation', 'base radius 1', 'base radius 2', 'direction angle 1', 'direction angle 2', 'height', 'slope angle 1', 'slope angle 2', 'top radius 1', 'top radius 2' ]))) > 0))) = 0;
11466      WR3:
11467         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'direction angle 1') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
11468      WR4:
11469         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'direction angle 2') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
11470      WR5:
11471         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'height') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
11472      WR6:
11473         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'slope angle 1') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
11474      WR7:
11475         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'slope angle 2') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
11476      WR8:
11477         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'defining path') AND (sa.description = 'path feature component occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'path feature component usage')) AND ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect))) AND (sar.relating_shape_aspect.description = 'linear'))) = 1))) = 1;
11478      WR9:
11479         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| ((sa.name = 'termination') AND (sa.description = 'joggle termination occurrence')) AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'joggle termination usage')) AND ('STEP_MERGED_CAD_SCHEMA.JOGGLE_TERMINATION' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
11480      WR10:
11481         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius 1') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
11482      WR11:
11483         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius 2') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
11484      WR12:
11485         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'top radius 1') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
11486      WR13:
11487         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'top radius 2') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
11488END_ENTITY;
11489
11490-- IN AP214/AP242
11491ENTITY joggle_termination
11492   SUBTYPE OF (shape_aspect);
11493   WHERE
11494      WR1:
11495         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
11496      WR2:
11497         SELF.description IN [ 'value termination', 'face termination' ];
11498      WR3:
11499         (SELF.description = 'value termination') XOR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 0);
11500      WR4:
11501         (SELF.description <> 'value termination') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2))) = 1);
11502      WR5:
11503         (SELF.description <> 'value termination') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'depth') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1);
11504      WR6:
11505         (SELF.description <> 'value termination') OR (SIZEOF(QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'angle') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1);
11506      WR7:
11507         SIZEOF(QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (((('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'joggle termination usage')) AND ('STEP_MERGED_CAD_SCHEMA.JOGGLE' IN TYPEOF(sar.related_shape_aspect.of_shape.definition))) AND (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'termination')) AND (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'joggle termination occurrence'))) = 1;
11508END_ENTITY;
11509
11510-- IN AP214/AP242
11511ENTITY kinematic_analysis_consistency;
11512      control : kinematic_control;
11513      result : kinematic_analysis_result;
11514   WHERE
11515      WR1:
11516         control.controlled_mechanism :=: result.analysed_mechanism;
11517END_ENTITY;
11518
11519-- DIFF IN AP214
11520-- IN AP214/AP242
11521ENTITY kinematic_analysis_result;
11522      analysed_mechanism : mechanism_representation;
11523      result : kinematic_result;
11524END_ENTITY;
11525
11526-- DIFF IN AP214
11527-- IN AP214/AP242
11528ENTITY kinematic_control;
11529      controlled_mechanism : mechanism_representation;
11530      contained_kinematic_programs : kinematic_analysis_definition;
11531END_ENTITY;
11532
11533-- IN AP214
11534ENTITY kinematic_frame_background_representation
11535   SUBTYPE OF (representation);
11536      SELF\representation.items : SET [1:?] OF kinematic_frame_background;
11537      SELF\representation.context_of_items : geometric_representation_context;
11538   WHERE
11539      wr1:
11540         SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
11541END_ENTITY;
11542
11543-- IN AP214
11544ENTITY kinematic_frame_background_representation_association
11545   SUBTYPE OF (representation_relationship_with_transformation);
11546      SELF\representation_relationship_with_transformation.transformation_operator : kinematic_frame_based_transformation;
11547   WHERE
11548      wr1:
11549         'STEP_MERGED_CAD_SCHEMA.KINEMATIC_LINK_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_1);
11550      wr2:
11551         'STEP_MERGED_CAD_SCHEMA.KINEMATIC_FRAME_BACKGROUND_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_2);
11552      wr3:
11553         SELF\representation_relationship_with_transformation.transformation_operator\kinematic_frame_based_transformation.transformator IN SELF\representation_relationship.rep_1.items;
11554END_ENTITY;
11555
11556-- IN AP214
11557ENTITY kinematic_frame_based_transformation
11558   SUBTYPE OF (geometric_representation_item, functionally_defined_transformation);
11559      transformator : rigid_placement;
11560   WHERE
11561      wr1:
11562         SELF\geometric_representation_item.dim = 3;
11563END_ENTITY;
11564
11565-- IN AP214
11566ENTITY kinematic_ground_representation
11567   SUBTYPE OF (representation);
11568   INVERSE
11569      property : kinematic_property_representation_relation FOR used_representation;
11570   WHERE
11571      wr1:
11572         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
11573END_ENTITY;
11574
11575-- DIFF IN AP214
11576-- IN AP214/AP242
11577ENTITY kinematic_joint
11578   SUBTYPE OF (edge);
11579      SELF\edge.edge_end : kinematic_link;
11580      SELF\edge.edge_start : kinematic_link;
11581   UNIQUE
11582      UR1 : edge_start, edge_end;
11583   WHERE
11584      WR1:
11585         edge_start :<>: edge_end;
11586END_ENTITY;
11587
11588-- DIFF IN AP214
11589-- IN AP214/AP242
11590ENTITY kinematic_link
11591   SUBTYPE OF (vertex);
11592END_ENTITY;
11593
11594-- DIFF IN AP214
11595-- IN AP214/AP242
11596ENTITY kinematic_link_representation
11597   ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_link_representation, rigid_link_representation))
11598   SUBTYPE OF (representation);
11599      represented_link : kinematic_link;
11600      SELF\representation.context_of_items : geometric_representation_context;
11601      SELF\representation.items : SET [1:?] OF kinematic_link_representation_items;
11602   INVERSE
11603      associated_shape_representation : SET [0:1] OF kinematic_link_representation_association FOR rep_1;
11604END_ENTITY;
11605
11606-- DIFF IN AP214
11607-- IN AP214/AP242
11608ENTITY kinematic_link_representation_association
11609   SUBTYPE OF (representation_relationship);
11610      SELF\representation_relationship.rep_1 : kinematic_link_representation;
11611      SELF\representation_relationship.rep_2 : shape_representation;
11612   WHERE
11613      WR1:
11614         (SELF\representation_relationship.rep_2.context_of_items :=: SELF\representation_relationship.rep_1.context_of_items) OR ('STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
11615END_ENTITY;
11616
11617-- IN AP214
11618ENTITY kinematic_link_representation_relation;
11619      topological_aspects : kinematic_link;
11620      geometric_aspects : kinematic_link_representation;
11621   UNIQUE
11622      ur1 : topological_aspects;
11623END_ENTITY;
11624
11625-- IN AP242
11626ENTITY kinematic_loop
11627   SUBTYPE OF (edge_loop);
11628      SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_joint;
11629END_ENTITY;
11630
11631-- DIFF IN AP214
11632-- IN AP214/AP242
11633ENTITY kinematic_pair
11634   ABSTRACT SUPERTYPE OF (ONEOF(high_order_kinematic_pair, low_order_kinematic_pair_with_motion_coupling, low_order_kinematic_pair) ANDOR actuated_kinematic_pair)
11635   SUBTYPE OF (geometric_representation_item, item_defined_transformation);
11636      joint : kinematic_joint;
11637      SELF\item_defined_transformation.transform_item_1 : rigid_placement;
11638      SELF\item_defined_transformation.transform_item_2 : rigid_placement;
11639   DERIVE
11640      associated_link_representations_1 : SET [1:?] OF kinematic_link_representation := sort_link_associations(link_representation_associations, TRUE);
11641      associated_link_representations_2 : SET [1:?] OF kinematic_link_representation := sort_link_associations(link_representation_associations, FALSE);
11642      SELF\item_defined_transformation.name : label := SELF\representation_item.name;
11643   INVERSE
11644      link_representation_associations : SET [1:?] OF pair_representation_relationship FOR transformation_operator;
11645END_ENTITY;
11646
11647-- DIFF IN AP214
11648-- IN AP214/AP242
11649ENTITY kinematic_path
11650   ABSTRACT SUPERTYPE OF (ONEOF(kinematic_path_defined_by_nodes, kinematic_path_defined_by_curves))
11651   SUBTYPE OF (geometric_representation_item);
11652      segments : LIST [1:?] OF kinematic_path_segment;
11653      t_start : parameter_value;
11654   DERIVE
11655      closed_path : LOGICAL := segments[n_segments].transition <> discontinuous;
11656      n_segments : INTEGER := SIZEOF(segments);
11657   WHERE
11658      WR1:
11659         SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER' IN TYPEOF(using_rep.context_of_items)))) = 0;
11660END_ENTITY;
11661
11662-- IN AP242
11663ENTITY kinematic_path_defined_by_curves
11664   SUBTYPE OF (kinematic_path);
11665      SELF\kinematic_path.segments : LIST [1:?] OF curve_based_path_with_orientation;
11666END_ENTITY;
11667
11668-- IN AP242
11669ENTITY kinematic_path_defined_by_nodes
11670   SUBTYPE OF (kinematic_path);
11671      placement_start : placement;
11672      SELF\kinematic_path.segments : LIST [1:?] OF path_node;
11673END_ENTITY;
11674
11675-- IN AP242
11676ENTITY kinematic_path_segment
11677   ABSTRACT SUPERTYPE OF (ONEOF(path_node, curve_based_path_with_orientation))
11678   SUBTYPE OF (founded_item);
11679      t_end : parameter_value;
11680      transition : transition_code;
11681END_ENTITY;
11682
11683-- IN AP214
11684ENTITY kinematic_property_definition
11685   SUBTYPE OF (property_definition);
11686      ground_definition : characterized_definition;
11687END_ENTITY;
11688
11689-- IN AP242
11690ENTITY kinematic_property_definition_representation
11691   ABSTRACT SUPERTYPE OF (ONEOF(kinematic_property_topology_representation, kinematic_property_mechanism_representation))
11692   SUBTYPE OF (property_definition_representation);
11693      SELF\property_definition_representation.definition : product_definition_kinematics;
11694END_ENTITY;
11695
11696-- IN AP242
11697ENTITY kinematic_property_mechanism_representation
11698   SUBTYPE OF (kinematic_property_definition_representation);
11699      base : kinematic_link_representation;
11700      SELF\property_definition_representation.used_representation : mechanism_representation;
11701   WHERE
11702      WR1:
11703         SIZEOF(QUERY (i <* used_representation.items| (base :=: i\representation_relationship.rep_1) OR (base :=: i\representation_relationship.rep_2))) > 0;
11704END_ENTITY;
11705
11706-- IN AP214
11707ENTITY kinematic_property_representation_relation
11708   SUBTYPE OF (property_definition_representation);
11709   UNIQUE
11710      ur1 : SELF\property_definition_representation.definition;
11711   WHERE
11712      wr1:
11713         'STEP_MERGED_CAD_SCHEMA.KINEMATIC_PROPERTY_DEFINITION' IN TYPEOF(SELF\property_definition_representation.definition);
11714      wr2:
11715         'STEP_MERGED_CAD_SCHEMA.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(SELF\property_definition_representation.used_representation);
11716END_ENTITY;
11717
11718-- IN AP242
11719ENTITY kinematic_property_topology_representation
11720   SUBTYPE OF (kinematic_property_definition_representation);
11721      base : kinematic_link;
11722      SELF\property_definition_representation.used_representation : kinematic_topology_representation_select;
11723   WHERE
11724      WR1:
11725         used_representation IN using_representations(base);
11726END_ENTITY;
11727
11728-- IN AP214
11729ENTITY kinematic_structure;
11730      joints : SET [1:?] OF kinematic_joint;
11731END_ENTITY;
11732
11733-- IN AP242
11734ENTITY kinematic_topology_directed_structure
11735   SUBTYPE OF (representation);
11736      parent : kinematic_topology_structure;
11737      SELF\representation.items : SET [1:?] OF oriented_joint;
11738   WHERE
11739      WR1:
11740         context_of_items :=: parent.context_of_items;
11741      WR2:
11742         get_kinematic_joints_from_oriented_joints(items) <= parent.items;
11743END_ENTITY;
11744
11745-- IN AP242
11746ENTITY kinematic_topology_network_structure
11747   SUBTYPE OF (representation);
11748      parent : kinematic_topology_structure;
11749      SELF\representation.items : SET [1:?] OF kinematic_loop;
11750   WHERE
11751      WR1:
11752         context_of_items :=: parent.context_of_items;
11753      WR2:
11754         get_kinematic_joints_from_kinematic_loops(items) <= parent.items;
11755END_ENTITY;
11756
11757-- IN AP242
11758ENTITY kinematic_topology_structure
11759   SUBTYPE OF (representation);
11760      SELF\representation.items : SET [1:?] OF kinematic_joint;
11761   WHERE
11762      WR1:
11763         SIZEOF(QUERY (item <* items| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' IN TYPEOF(item)))) = 0;
11764END_ENTITY;
11765
11766-- IN AP242
11767ENTITY kinematic_topology_substructure
11768   SUBTYPE OF (kinematic_topology_structure);
11769      parent : kinematic_topology_structure;
11770   WHERE
11771      WR1:
11772         context_of_items :=: parent.context_of_items;
11773      WR2:
11774         SELF\kinematic_topology_structure.items <= parent\kinematic_topology_structure.items;
11775END_ENTITY;
11776
11777-- IN AP242
11778ENTITY kinematic_topology_tree_structure
11779   SUBTYPE OF (kinematic_topology_directed_structure);
11780END_ENTITY;
11781
11782ENTITY known_source
11783   SUBTYPE OF (external_source, pre_defined_item);
11784END_ENTITY;
11785
11786-- IN AP203e2/AP242
11787ENTITY laid_defined_transformation
11788   SUBTYPE OF (transformation_with_derived_angle);
11789END_ENTITY;
11790
11791-- IN AP203e2/AP242
11792ENTITY laminate_table
11793   SUPERTYPE OF (ONEOF(part_laminate_table, zone_structural_makeup))
11794   SUBTYPE OF (product_definition);
11795END_ENTITY;
11796
11797ENTITY language
11798   SUBTYPE OF (group);
11799   WHERE
11800      WR1:
11801         SELF\group.name <> '';
11802END_ENTITY;
11803
11804-- IN AP214
11805ENTITY language_assignment
11806   SUBTYPE OF (classification_assignment);
11807      items : SET [1:?] OF language_item;
11808   WHERE
11809      wr1:
11810         'STEP_MERGED_CAD_SCHEMA.' + 'LANGUAGE' IN TYPEOF(SELF.assigned_class);
11811      wr2:
11812         SELF.role.name = 'language';
11813      wr3:
11814         SIZEOF(SELF.items) = SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION' IN TYPEOF(i)) AND (i\representation.name = 'document content')));
11815END_ENTITY;
11816
11817ENTITY leader_curve
11818   SUBTYPE OF (annotation_curve_occurrence);
11819   WHERE
11820      WR1:
11821         SIZEOF(QUERY (ldc <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT.CONTENTS')| ('STEP_MERGED_CAD_SCHEMA.' + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc)))) >= 1;
11822END_ENTITY;
11823
11824ENTITY leader_directed_callout
11825   SUBTYPE OF (draughting_callout);
11826   WHERE
11827      WR1:
11828         SIZEOF(QUERY (l_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(l_1)))) >= 1;
11829      WR2:
11830         SIZEOF(SELF\draughting_callout.contents) >= 2;
11831END_ENTITY;
11832
11833ENTITY leader_directed_dimension
11834   SUBTYPE OF (leader_directed_callout);
11835   WHERE
11836      WR1:
11837         SIZEOF(QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(con)))) = 1;
11838END_ENTITY;
11839
11840ENTITY leader_terminator
11841   SUBTYPE OF (terminator_symbol);
11842   WHERE
11843      WR1:
11844         'STEP_MERGED_CAD_SCHEMA.LEADER_CURVE' IN TYPEOF(SELF\terminator_symbol.annotated_curve);
11845END_ENTITY;
11846
11847-- IN AP214/AP242
11848ENTITY length_function
11849   SUBTYPE OF (numeric_expression, unary_generic_expression);
11850      SELF\unary_generic_expression.operand : string_expression;
11851END_ENTITY;
11852
11853ENTITY length_measure_with_unit
11854   SUBTYPE OF (measure_with_unit);
11855   WHERE
11856      WR1:
11857         'STEP_MERGED_CAD_SCHEMA.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
11858END_ENTITY;
11859
11860ENTITY length_unit
11861   SUBTYPE OF (named_unit);
11862   WHERE
11863      WR1:
11864         ((((((SELF\named_unit.dimensions.length_exponent = 1.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
11865END_ENTITY;
11866
11867ENTITY light_source
11868   SUPERTYPE OF (ONEOF(light_source_ambient, light_source_directional, light_source_positional, light_source_spot))
11869   SUBTYPE OF (geometric_representation_item);
11870      light_colour : colour;
11871   WHERE
11872      WR1:
11873         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM.ITEM')) = 0;
11874END_ENTITY;
11875
11876ENTITY light_source_ambient
11877   SUBTYPE OF (light_source);
11878END_ENTITY;
11879
11880ENTITY light_source_directional
11881   SUBTYPE OF (light_source);
11882      orientation : direction;
11883END_ENTITY;
11884
11885ENTITY light_source_positional
11886   SUBTYPE OF (light_source);
11887      position : cartesian_point;
11888      constant_attenuation : REAL;
11889      distance_attenuation : REAL;
11890END_ENTITY;
11891
11892ENTITY light_source_spot
11893   SUBTYPE OF (light_source);
11894      position : cartesian_point;
11895      orientation : direction;
11896      concentration_exponent : REAL;
11897      constant_attenuation : REAL;
11898      distance_attenuation : REAL;
11899      spread_angle : positive_plane_angle_measure;
11900END_ENTITY;
11901
11902-- IN AP214/AP242
11903ENTITY like_expression
11904   SUBTYPE OF (comparison_expression);
11905   WHERE
11906      WR1:
11907         ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2]));
11908END_ENTITY;
11909
11910ENTITY limits_and_fits;
11911      form_variance : label;
11912      zone_variance : label;
11913      grade : label;
11914      source : text;
11915END_ENTITY;
11916
11917ENTITY line
11918   SUBTYPE OF (curve);
11919      pnt : cartesian_point;
11920      dir : vector;
11921   WHERE
11922      WR1:
11923         dir.dim = pnt.dim;
11924END_ENTITY;
11925
11926ENTITY line_profile_tolerance
11927   SUBTYPE OF (geometric_tolerance);
11928END_ENTITY;
11929
11930-- IN AP242
11931ENTITY linear_array_component_definition_link
11932   SUBTYPE OF (product_definition, product_definition_relationship);
11933      SELF\product_definition_relationship.related_product_definition : linear_array_placement_group_component;
11934      SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;
11935   WHERE
11936      WR1:
11937         SELF\product_definition_relationship.related_product_definition :<>: SELF\product_definition_relationship.relating_product_definition;
11938      WR2:
11939         acyclic_product_definition_relationship(SELF, [ SELF\product_definition_relationship.related_product_definition ], 'STEP_MERGED_CAD_SCHEMA.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK');
11940END_ENTITY;
11941
11942-- IN AP242
11943ENTITY linear_array_placement_group_component
11944   SUBTYPE OF (array_placement_group);
11945END_ENTITY;
11946
11947ENTITY linear_dimension
11948   SUBTYPE OF (dimension_curve_directed_callout);
11949END_ENTITY;
11950
11951-- IN AP242
11952ENTITY linear_flexible_and_pinion_pair
11953   SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
11954      pinion_radius : length_measure;
11955   WHERE
11956      WR1:
11957         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
11958END_ENTITY;
11959
11960-- IN AP242
11961ENTITY linear_flexible_and_planar_curve_pair
11962   SUBTYPE OF (high_order_kinematic_pair);
11963      pair_curve : curve;
11964      orientation : BOOLEAN;
11965   WHERE
11966      WR1:
11967         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (pair_curve IN r.items))) = 0;
11968      WR2:
11969         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
11970END_ENTITY;
11971
11972-- IN AP242
11973ENTITY linear_flexible_link_representation
11974   SUBTYPE OF (kinematic_link_representation);
11975END_ENTITY;
11976
11977-- IN AP242
11978ENTITY linear_path
11979   SUBTYPE OF (path_node);
11980   DERIVE
11981      SELF\kinematic_path_segment.transition : transition_code := continuous;
11982END_ENTITY;
11983
11984-- IN AP242
11985ENTITY linear_profile
11986   SUBTYPE OF (shape_aspect);
11987   WHERE
11988      WR1:
11989         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
11990      WR2:
11991         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
11992      WR3:
11993         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0;
11994      WR4:
11995         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
11996      WR5:
11997         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'profile length'))) = 1))) = 0))) = 0;
11998END_ENTITY;
11999
12000-- IN AP242
12001ENTITY linearized_table_function
12002   SUBTYPE OF (explicit_table_function, unary_generic_expression);
12003      first : INTEGER;
12004      SELF\unary_generic_expression.operand : maths_function;
12005   DERIVE
12006      source : maths_function := SELF\unary_generic_expression.operand;
12007   WHERE
12008      WR1:
12009         function_is_1d_array(source);
12010      WR2:
12011         member_of(first, source\maths_function.domain);
12012END_ENTITY;
12013
12014-- IN AP242
12015ENTITY link_motion_relationship
12016   SUBTYPE OF (definitional_representation_relationship, representation_relationship_with_transformation);
12017      SELF\representation_relationship.rep_1 : link_or_shape_representation;
12018      SELF\representation_relationship.rep_2 : link_motion_representation_along_path;
12019      SELF\representation_relationship_with_transformation.transformation_operator : link_motion_transformation;
12020   WHERE
12021      WR1:
12022         transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items;
12023      WR2:
12024         transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items;
12025END_ENTITY;
12026
12027-- IN AP242
12028ENTITY link_motion_representation_along_path
12029   SUPERTYPE OF (ONEOF(prescribed_path, resulting_path))
12030   SUBTYPE OF (representation);
12031      SELF\representation.context_of_items : geometric_representation_context_with_parameter;
12032      SELF\representation.items : SET [1:?] OF kinematic_path;
12033END_ENTITY;
12034
12035-- IN AP242
12036ENTITY link_motion_transformation
12037   SUBTYPE OF (item_defined_transformation);
12038      SELF\item_defined_transformation.transform_item_1 : rigid_placement;
12039      SELF\item_defined_transformation.transform_item_2 : kinematic_path;
12040END_ENTITY;
12041
12042-- IN AP242
12043ENTITY listed_data
12044   SUBTYPE OF (explicit_table_function, generic_literal);
12045      values : LIST [1:?] OF maths_value;
12046      value_range : maths_space;
12047   DERIVE
12048      SELF\explicit_table_function.shape : LIST [1:?] OF positive_integer := [ SIZEOF(values) ];
12049   WHERE
12050      WR1:
12051         expression_is_constant(value_range);
12052      WR2:
12053         SIZEOF(QUERY (val <* values| NOT member_of(val, value_range))) = 0;
12054END_ENTITY;
12055
12056-- IN AP242
12057ENTITY listed_product_space
12058   SUBTYPE OF (maths_space, generic_literal);
12059      factors : LIST [0:?] OF maths_space;
12060   WHERE
12061      WR1:
12062         SIZEOF(QUERY (space <* factors| NOT expression_is_constant(space))) = 0;
12063      WR2:
12064         no_cyclic_space_reference(SELF, []);
12065      WR3:
12066         NOT (the_empty_space IN factors);
12067END_ENTITY;
12068
12069-- IN AP203e2/AP242
12070ENTITY literal_conjunction
12071   SUBTYPE OF (simple_clause);
12072END_ENTITY;
12073
12074-- IN AP203e2/AP242
12075ENTITY literal_disjunction
12076   SUBTYPE OF (simple_clause);
12077END_ENTITY;
12078
12079ENTITY literal_number
12080   ABSTRACT SUPERTYPE OF (ONEOF(int_literal, real_literal))
12081   SUBTYPE OF (simple_numeric_expression, generic_literal);
12082      the_value : NUMBER;
12083END_ENTITY;
12084
12085ENTITY local_time;
12086      hour_component : hour_in_day;
12087      minute_component : OPTIONAL minute_in_hour;
12088      second_component : OPTIONAL second_in_minute;
12089      zone : coordinated_universal_time_offset;
12090   WHERE
12091      WR1:
12092         valid_time(SELF);
12093END_ENTITY;
12094
12095-- IN AP242
12096ENTITY location_in_aggregate_representation_item
12097   SUBTYPE OF (compound_representation_item);
12098      SELF\compound_representation_item.item_element : location_in_aggregate_item;
12099END_ENTITY;
12100
12101-- IN AP214/AP242
12102ENTITY location_shape_representation
12103   SUBTYPE OF (shape_representation);
12104   WHERE
12105      WR1:
12106         SIZEOF(SELF.items) = 1;
12107      WR2:
12108         SIZEOF(QUERY (it <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.POINT' IN TYPEOF(it)))) = 0;
12109END_ENTITY;
12110
12111-- IN AP214/AP242
12112ENTITY locator
12113   SUBTYPE OF (feature_definition);
12114   WHERE
12115      WR1:
12116         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND NOT ((2 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 5)))) = 0;
12117      WR2:
12118         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'diameter') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
12119      WR3:
12120         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'tip radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
12121      WR4:
12122         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'tip angle') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1;
12123      WR5:
12124         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'base radius') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) <= 1;
12125END_ENTITY;
12126
12127-- IN AP214/AP242
12128ENTITY log10_function
12129   SUBTYPE OF (unary_function_call);
12130END_ENTITY;
12131
12132-- IN AP214/AP242
12133ENTITY log2_function
12134   SUBTYPE OF (unary_function_call);
12135END_ENTITY;
12136
12137-- IN AP214/AP242
12138ENTITY log_function
12139   SUBTYPE OF (unary_function_call);
12140END_ENTITY;
12141
12142-- IN AP203e2/AP242
12143ENTITY logical_literal
12144   SUBTYPE OF (generic_literal);
12145      lit_value : LOGICAL;
12146END_ENTITY;
12147
12148-- IN AP203e2/AP242
12149ENTITY logical_representation_item
12150   SUBTYPE OF (representation_item, logical_literal);
12151END_ENTITY;
12152
12153ENTITY loop
12154   SUPERTYPE OF (ONEOF(vertex_loop, edge_loop, poly_loop))
12155   SUBTYPE OF (topological_representation_item);
12156END_ENTITY;
12157
12158-- IN AP203e2/AP242
12159ENTITY loss_tangent_measure_with_unit
12160   SUBTYPE OF (ratio_measure_with_unit);
12161END_ENTITY;
12162
12163ENTITY lot_effectivity
12164   SUBTYPE OF (effectivity);
12165      effectivity_lot_id : identifier;
12166      effectivity_lot_size : measure_with_unit;
12167END_ENTITY;
12168
12169-- IN AP242
12170ENTITY low_order_kinematic_pair
12171   SUPERTYPE OF (ONEOF(revolute_pair, cylindrical_pair, spherical_pair, spherical_pair_with_pin, planar_pair, unconstrained_pair, fully_constrained_pair, prismatic_pair, universal_pair, low_order_kinematic_pair_with_range))
12172   SUBTYPE OF (kinematic_pair);
12173      t_x : BOOLEAN;
12174      t_y : BOOLEAN;
12175      t_z : BOOLEAN;
12176      r_x : BOOLEAN;
12177      r_y : BOOLEAN;
12178      r_z : BOOLEAN;
12179   WHERE
12180      WR1:
12181         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
12182      WR2:
12183         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_2| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
12184END_ENTITY;
12185
12186-- IN AP242
12187ENTITY low_order_kinematic_pair_value
12188   SUBTYPE OF (pair_value);
12189      actual_translation_x : length_measure;
12190      actual_translation_y : length_measure;
12191      actual_translation_z : length_measure;
12192      actual_rotation_x : plane_angle_measure;
12193      actual_rotation_y : plane_angle_measure;
12194      actual_rotation_z : plane_angle_measure;
12195      SELF\pair_value.applies_to_pair : low_order_kinematic_pair;
12196END_ENTITY;
12197
12198-- IN AP242
12199ENTITY low_order_kinematic_pair_with_motion_coupling
12200   ABSTRACT SUPERTYPE OF (ONEOF(gear_pair, linear_flexible_and_pinion_pair, rack_and_pinion_pair, screw_pair))
12201   SUBTYPE OF (kinematic_pair);
12202   WHERE
12203      WR1:
12204         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_2| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
12205END_ENTITY;
12206
12207-- IN AP242
12208ENTITY low_order_kinematic_pair_with_range
12209   SUBTYPE OF (low_order_kinematic_pair);
12210      lower_limit_actual_rotation_x : OPTIONAL plane_angle_measure;
12211      upper_limit_actual_rotation_x : OPTIONAL plane_angle_measure;
12212      lower_limit_actual_rotation_y : OPTIONAL plane_angle_measure;
12213      upper_limit_actual_rotation_y : OPTIONAL plane_angle_measure;
12214      lower_limit_actual_rotation_z : OPTIONAL plane_angle_measure;
12215      upper_limit_actual_rotation_z : OPTIONAL plane_angle_measure;
12216      lower_limit_actual_translation_x : OPTIONAL length_measure;
12217      upper_limit_actual_translation_x : OPTIONAL length_measure;
12218      lower_limit_actual_translation_y : OPTIONAL length_measure;
12219      upper_limit_actual_translation_y : OPTIONAL length_measure;
12220      lower_limit_actual_translation_z : OPTIONAL length_measure;
12221      upper_limit_actual_translation_z : OPTIONAL length_measure;
12222END_ENTITY;
12223
12224-- IN AP203e2/AP242
12225ENTITY luminous_flux_measure_with_unit
12226   SUBTYPE OF (measure_with_unit);
12227   WHERE
12228      WR1:
12229         'STEP_MERGED_CAD_SCHEMA.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12230END_ENTITY;
12231
12232-- IN AP203e2/AP242
12233ENTITY luminous_flux_unit
12234   SUBTYPE OF (named_unit);
12235   WHERE
12236      WR1:
12237         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lumen);
12238END_ENTITY;
12239
12240ENTITY luminous_intensity_measure_with_unit
12241   SUBTYPE OF (measure_with_unit);
12242   WHERE
12243      WR1:
12244         'STEP_MERGED_CAD_SCHEMA.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12245END_ENTITY;
12246
12247ENTITY luminous_intensity_unit
12248   SUBTYPE OF (named_unit);
12249   WHERE
12250      WR1:
12251         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.0);
12252END_ENTITY;
12253
12254-- IN AP203e2/AP242
12255ENTITY magnetic_flux_density_measure_with_unit
12256   SUBTYPE OF (measure_with_unit);
12257   WHERE
12258      WR1:
12259         'STEP_MERGED_CAD_SCHEMA.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12260END_ENTITY;
12261
12262-- IN AP203e2/AP242
12263ENTITY magnetic_flux_density_unit
12264   SUBTYPE OF (derived_unit);
12265   WHERE
12266      WR1:
12267         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.tesla);
12268END_ENTITY;
12269
12270-- IN AP203e2/AP242
12271ENTITY magnetic_flux_measure_with_unit
12272   SUBTYPE OF (measure_with_unit);
12273   WHERE
12274      WR1:
12275         'STEP_MERGED_CAD_SCHEMA.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12276END_ENTITY;
12277
12278-- IN AP203e2/AP242
12279ENTITY magnetic_flux_unit
12280   SUBTYPE OF (derived_unit);
12281   WHERE
12282      WR1:
12283         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.weber);
12284END_ENTITY;
12285
12286-- IN AP242
12287ENTITY make_from_feature_relationship
12288   SUBTYPE OF (component_feature_relationship);
12289END_ENTITY;
12290
12291ENTITY make_from_usage_option
12292   SUBTYPE OF (product_definition_usage);
12293      ranking : INTEGER;
12294      ranking_rationale : text;
12295      quantity : measure_with_unit;
12296   WHERE
12297      WR1:
12298         NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.value_component > 0);
12299END_ENTITY;
12300
12301ENTITY manifold_solid_brep
12302   SUBTYPE OF (solid_model);
12303      outer : closed_shell;
12304END_ENTITY;
12305
12306ENTITY manifold_subsurface_shape_representation
12307   SUBTYPE OF (shape_representation);
12308   WHERE
12309      WR1:
12310         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
12311      WR2:
12312         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
12313      WR3:
12314         SIZEOF(QUERY (mi <* QUERY (it <* items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
12315      WR4:
12316         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.OPEN_SHELL' IN TYPEOF(cfss)))) = 0;
12317      WR5:
12318         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(cfss\connected_face_sub_set.parent_face_set)) AND (SIZEOF(QUERY (fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces| NOT advanced_face_properties(fac))) = 0) OR (SIZEOF(QUERY (fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fac)))) = 0)))) = 0;
12319      WR6:
12320         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| (SIZEOF(QUERY (fac <* cfss\connected_face_set.cfs_faces| NOT advanced_face_properties(fac))) = 0))) = 0;
12321      WR7:
12322         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)) OR ('STEP_MERGED_CAD_SCHEMA.SUBEDGE' IN TYPEOF(oe.edge_element))))) = 0))) = 0))) = 0))) = 0;
12323      WR8:
12324         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_end))))) = 0))) = 0))) = 0))) = 0;
12325      WR9:
12326         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (bnds <* fcs.bounds| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP', 'STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnds.bound)) = 1))) = 0))) = 0))) = 0;
12327      WR10:
12328         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0))) = 0))) = 0;
12329      WR11:
12330         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(QUERY (sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(sc_ag)))) = 0))) = 0))) = 0))) = 0))) = 0;
12331      WR12:
12332         SIZEOF(QUERY (cfss <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (fcs <* cfss\connected_face_set.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3))) = 0))) = 0))) = 0))) = 0;
12333END_ENTITY;
12334
12335ENTITY manifold_surface_shape_representation
12336   SUBTYPE OF (shape_representation);
12337   WHERE
12338      WR1:
12339         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
12340      WR2:
12341         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
12342      WR3:
12343         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (('STEP_MERGED_CAD_SCHEMA.MANIFOLD_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\mapped_item.mapping_source.mapped_representation.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(mr_it)))) > 0)))) = 0;
12344      WR4:
12345         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (sh <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.OPEN_SHELL', 'STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL', 'STEP_MERGED_CAD_SCHEMA.CLOSED_SHELL' ] * TYPEOF(sh)) = 1))) = 0))) = 0;
12346      WR5:
12347         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(fa)))) = 0))) = 0))) = 0;
12348      WR6:
12349         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR msf_surface_check(fa\face_surface.face_geometry)))) = 0))) = 0))) = 0;
12350      WR7:
12351         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (bnds <* fa.bounds| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP', 'STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
12352      WR8:
12353         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
12354      WR9:
12355         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe_cv <* QUERY (oe <* elp_fbnds\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA', 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D', 'STEP_MERGED_CAD_SCHEMA.PCURVE', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' ] * TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
12356      WR10:
12357         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT msf_curve_check(oe.edge_element\edge_curve.edge_geometry))) = 0))) = 0)))) = 0))) = 0))) = 0;
12358      WR11:
12359         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_end))))) = 0))) = 0)))) = 0))) = 0))) = 0;
12360      WR12:
12361         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
12362      WR13:
12363         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) = 0))) = 0;
12364      WR14:
12365         SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (fa <* cfs\connected_face_set.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0;
12366END_ENTITY;
12367
12368ENTITY mapped_item
12369   SUBTYPE OF (representation_item);
12370      mapping_source : representation_map;
12371      mapping_target : representation_item;
12372   WHERE
12373      WR1:
12374         acyclic_mapped_representation(SELF);
12375END_ENTITY;
12376
12377-- IN AP242
12378ENTITY marking
12379   SUBTYPE OF (feature_definition);
12380   WHERE
12381      WR1:
12382         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((2 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 6)))) = 1))) = 1;
12383      WR2:
12384         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))) = 0;
12385      WR3:
12386         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'special instructions'))) <= 1))) = 0))) = 0;
12387      WR4:
12388         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'font name'))) <= 1))) = 0))) = 0;
12389      WR5:
12390         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'character height'))) <= 1))) = 0))) = 0;
12391      WR6:
12392         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'character spacing'))) <= 1))) = 0))) = 0;
12393      WR7:
12394         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
12395END_ENTITY;
12396
12397ENTITY mass_measure_with_unit
12398   SUBTYPE OF (measure_with_unit);
12399   WHERE
12400      WR1:
12401         'STEP_MERGED_CAD_SCHEMA.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12402END_ENTITY;
12403
12404ENTITY mass_unit
12405   SUBTYPE OF (named_unit);
12406   WHERE
12407      WR1:
12408         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
12409END_ENTITY;
12410
12411-- IN AP242
12412ENTITY mated_part_relationship
12413   SUBTYPE OF (group, group_assignment, product_definition_shape, product_definition_relationship, shape_aspect);
12414      items : SET [0:?] OF product_definition;
12415   DERIVE
12416      SELF\group_assignment.assigned_group : mated_part_relationship := SELF;
12417      SELF\property_definition.definition : mated_part_relationship := SELF;
12418      SELF\shape_aspect.of_shape : mated_part_relationship := SELF;
12419END_ENTITY;
12420
12421ENTITY material_designation;
12422      name : label;
12423      definitions : SET [1:?] OF characterized_definition;
12424END_ENTITY;
12425
12426ENTITY material_designation_characterization;
12427      name : label;
12428      description : text;
12429      designation : material_designation;
12430      property : characterized_material_property;
12431END_ENTITY;
12432
12433-- CASE DIFF IN AP214
12434ENTITY material_property
12435   SUBTYPE OF (property_definition);
12436   UNIQUE
12437      UR1 : SELF\property_definition.name, SELF\property_definition.definition;
12438   WHERE
12439      WR1:
12440         ('STEP_MERGED_CAD_SCHEMA.CHARACTERIZED_OBJECT' IN TYPEOF(SELF\property_definition.definition)) OR (SIZEOF(bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - QUERY (temp <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'))| ('STEP_MERGED_CAD_SCHEMA.' + 'MATERIAL_PROPERTY_REPRESENTATION' IN TYPEOF(temp)))) = 0);
12441END_ENTITY;
12442
12443ENTITY material_property_representation
12444   SUBTYPE OF (property_definition_representation);
12445      dependent_environment : data_environment;
12446END_ENTITY;
12447
12448-- IN AP242
12449ENTITY maths_enum_literal
12450   SUBTYPE OF (generic_literal);
12451      lit_value : maths_enum_atom;
12452END_ENTITY;
12453
12454-- IN AP242
12455ENTITY maths_function
12456   ABSTRACT SUPERTYPE OF (ONEOF(finite_function, constant_function, selector_function, elementary_function, restriction_function, repackaging_function, reindexed_array_function, series_composed_function, parallel_composed_function, explicit_table_function, homogeneous_linear_function, general_linear_function, b_spline_basis, b_spline_function, rationalize_function, partial_derivative_function, definite_integral_function, abstracted_expression_function, expression_denoted_function, imported_point_function, imported_curve_function, imported_surface_function, imported_volume_function, application_defined_function))
12457   SUBTYPE OF (generic_expression);
12458   DERIVE
12459      domain : tuple_space := derive_function_domain(SELF);
12460      range : tuple_space := derive_function_range(SELF);
12461END_ENTITY;
12462
12463-- IN AP242
12464ENTITY maths_space
12465   ABSTRACT SUPERTYPE OF (ONEOF(elementary_space, finite_integer_interval, integer_interval_from_min, integer_interval_to_max, finite_real_interval, real_interval_from_min, real_interval_to_max, cartesian_complex_number_region, polar_complex_number_region, finite_space, uniform_product_space, listed_product_space, extended_tuple_space, function_space))
12466   SUBTYPE OF (generic_expression);
12467END_ENTITY;
12468
12469-- IN AP242
12470ENTITY maths_tuple_literal
12471   SUBTYPE OF (generic_literal);
12472      lit_value : LIST [0:?] OF maths_value;
12473END_ENTITY;
12474
12475-- IN AP242
12476ENTITY maths_variable
12477   SUBTYPE OF (generic_variable);
12478      values_space : maths_space;
12479      name : label;
12480   WHERE
12481      WR1:
12482         expression_is_constant(values_space);
12483END_ENTITY;
12484
12485-- IN AP214/AP242
12486ENTITY maximum_function
12487   SUBTYPE OF (multiple_arity_function_call);
12488END_ENTITY;
12489
12490ENTITY measure_qualification;
12491      name : label;
12492      description : text;
12493      qualified_measure : measure_with_unit;
12494      qualifiers : SET [1:?] OF value_qualifier;
12495   WHERE
12496      WR1:
12497         SIZEOF(QUERY (temp <* qualifiers| ('STEP_MERGED_CAD_SCHEMA.PRECISION_QUALIFIER' IN TYPEOF(temp)))) < 2;
12498      WR2:
12499         NOT ('STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(SELF\measure_qualification.qualified_measure));
12500END_ENTITY;
12501
12502ENTITY measure_representation_item
12503   SUBTYPE OF (representation_item, measure_with_unit);
12504END_ENTITY;
12505
12506-- DIFF IN AP214
12507ENTITY measure_with_unit
12508   SUPERTYPE OF (ONEOF(length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit, electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit, acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit, conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit, magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit, illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit, magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit, velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit, dose_equivalent_measure_with_unit));
12509      value_component : measure_value;
12510      unit_component : unit;
12511   WHERE
12512      WR1:
12513         valid_units(SELF);
12514END_ENTITY;
12515
12516-- IN AP203e2/AP242
12517ENTITY mechanical_design_and_draughting_relationship
12518   SUBTYPE OF (definitional_representation_relationship_with_same_context);
12519      SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select;
12520      SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select;
12521   WHERE
12522      WR1:
12523         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR (('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
12524      WR2:
12525         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR (('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
12526      WR3:
12527         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR (('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
12528END_ENTITY;
12529
12530-- DIFF IN AP214
12531ENTITY mechanical_design_geometric_presentation_area
12532   SUBTYPE OF (presentation_area);
12533      SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items;
12534   WHERE
12535      WR1:
12536         SIZEOF(QUERY (it1 <* SELF.items| NOT ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it1)) OR ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(it1\mapped_item.mapping_source.mapped_representation)))) = 0;
12537      WR2:
12538         SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it1)))| ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(mi1\mapped_item.mapping_source.mapped_representation)))| NOT (SIZEOF(QUERY (it2 <* pv\mapped_item.mapping_source.mapped_representation\representation.items| NOT (('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT' IN TYPEOF(it2)) OR (('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it2)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))) = 0))) = 0;
12539      WR3:
12540         (SIZEOF(QUERY (ps <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| (ps\presentation_size.size.size_in_x <= 0) OR (ps\presentation_size.size.size_in_y <= 0))) = 0) AND (SIZEOF(QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| (SIZEOF(QUERY (ps <* USEDIN(ais, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| (ps\presentation_size.size.size_in_x <= 0) OR (ps\presentation_size.size.size_in_y <= 0))) > 0))) = 0);
12541      WR4:
12542         (SIZEOF(QUERY (ps <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(ps.size.placement)))) = 1) AND (SIZEOF(QUERY (ps <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(ps.size.placement)))) = 0) OR (SIZEOF(QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| (SIZEOF(QUERY (ps <* USEDIN(ais, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(ps.size.placement)))) = 1))) = 1) AND (SIZEOF(QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| (SIZEOF(QUERY (ps <* USEDIN(ais, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(ps.size.placement)))) = 0))) = 1);
12543END_ENTITY;
12544
12545-- DIFF IN AP214
12546ENTITY mechanical_design_geometric_presentation_representation
12547   SUBTYPE OF (representation);
12548      SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items;
12549   WHERE
12550      WR1:
12551         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION') ] * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) = 1))) = 0;
12552      WR2:
12553         SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(si\styled_item.item)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation)))) = 0;
12554      WR3:
12555         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (pss <* psa.styles| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.POINT_STYLE', 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' ] * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
12556      WR4:
12557         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psbc <* QUERY (psa <* si\styled_item.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)))| NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_ITEM'), 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION' ] * TYPEOF(psbc\presentation_style_by_context.style_context)) = 1))) = 0))) = 0;
12558      WR5:
12559         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ps <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.POINT_STYLE' IN TYPEOF(pss)))| NOT (('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(ps\point_style.marker_size)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0;
12560      WR6:
12561         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (cs <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(pss)))| NOT (((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(cs\curve_style.curve_colour)) = 1) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0;
12562      WR7:
12563         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_SIDE_STYLE' IN TYPEOF(ssu\surface_style_usage.style)))) = 0))) = 0))) = 0;
12564      WR8:
12565         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_PARAMETER_LINE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_CONTROL_GRID'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SILHOUETTE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SEGMENTATION_CURVE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_FILL_AREA'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_BOUNDARY') ] * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
12566      WR9:
12567         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sspl <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
12568      WR10:
12569         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sscg <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
12570      WR11:
12571         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssh <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
12572      WR12:
12573         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssc <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
12574      WR13:
12575         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssbd <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_FONT', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
12576END_ENTITY;
12577
12578-- IN AP203e2/AP242
12579ENTITY mechanical_design_presentation_representation_with_draughting
12580   SUBTYPE OF (representation);
12581      SELF\representation.items : SET [1:?] OF camera_model_d3;
12582END_ENTITY;
12583
12584-- DIFF IN AP203e2
12585-- IN AP203e2/AP242
12586ENTITY mechanical_design_shaded_presentation_area
12587   SUBTYPE OF (presentation_area);
12588      SELF\representation.items : SET [1:?] OF mechanical_design_shaded_presentation_area_items;
12589   WHERE
12590      WR1:
12591         SIZEOF(QUERY (it1 <* SELF.items| NOT (('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it1)) AND ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(it1\mapped_item.mapping_source.mapped_representation))))) = 0;
12592      WR2:
12593         SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it1)))| ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(mi1\mapped_item.mapping_source.mapped_representation)))| NOT (SIZEOF(QUERY (it2 <* pv\mapped_item.mapping_source.mapped_representation\representation.items| NOT (('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT' IN TYPEOF(it2)) OR (('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it2)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))) = 0))) = 0;
12594      WR3:
12595         (SIZEOF(QUERY (ps <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| NOT ((ps\presentation_size.size.size_in_x > 0) AND (ps\presentation_size.size.size_in_y > 0)))) = 0) AND (SIZEOF(QUERY (pset <* QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SET' IN TYPEOF(ais.in_set)))| (SIZEOF(QUERY (ps <* USEDIN(pset, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| NOT ((ps\presentation_size.size.size_in_x > 0) AND (ps\presentation_size.size.size_in_y > 0)))) = 0))) = 0);
12596      WR4:
12597         (SIZEOF(QUERY (psize <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(psize.size.placement)))) = 1) AND (SIZEOF(QUERY (pset <* QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SET' IN TYPEOF(ais.in_set)))| (SIZEOF(QUERY (psize <* USEDIN(pset, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(psize.size.placement)))) = 0))) = 0);
12598      WR5:
12599         SIZEOF(QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it1)))| ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(mi1\mapped_item.mapping_source.mapped_representation)))| NOT (SIZEOF(QUERY (ci <* pv\mapped_item.mapping_source.mapped_representation\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci)) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_MODEL_D3'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_MODEL_D3_WITH_HLHSR'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_MODEL_WITH_LIGHT_SOURCES') ] * TYPEOF(ci\mapped_item.mapping_source.mapping_origin)) = 1))) = 0))) = 0;
12600END_ENTITY;
12601
12602-- DIFF IN AP203e2
12603-- IN AP203e2/AP242
12604ENTITY mechanical_design_shaded_presentation_representation
12605   SUBTYPE OF (representation);
12606      SELF\representation.items : SET [1:?] OF mechanical_design_shaded_presentation_representation_items;
12607   WHERE
12608      WR1:
12609         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION') ] * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) = 1))) = 0;
12610      WR2:
12611         SIZEOF(QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(si\styled_item.item)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation)))) = 0;
12612      WR3:
12613         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (pss <* psa.styles| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.POINT_STYLE', 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' ] * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
12614      WR4:
12615         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psbc <* QUERY (psa <* si\styled_item.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION' ] * TYPEOF(psbc\presentation_style_by_context.style_context)) = 1))) = 0))) = 0;
12616      WR5:
12617         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ps <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.POINT_STYLE' IN TYPEOF(pss)))| NOT ((('STEP_MERGED_CAD_SCHEMA.MARKER_TYPE' IN TYPEOF(ps\point_style.marker)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(ps\point_style.marker_size))) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0;
12618      WR6:
12619         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (cs <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(pss)))| NOT (((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(cs\curve_style.curve_colour)) = 1) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0;
12620      WR7:
12621         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT ('STEP_MERGED_CAD_SCHEMA.SURFACE_SIDE_STYLE' IN TYPEOF(ssu\surface_style_usage.style)))) = 0))) = 0))) = 0;
12622      WR8:
12623         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_PARAMETER_LINE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_CONTROL_GRID'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SILHOUETTE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SEGMENTATION_CURVE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_BOUNDARY'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_FILL_AREA'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_RENDERING') ] * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
12624      WR9:
12625         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssfa <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_FILL_AREA' IN TYPEOF(sses)))| NOT (SIZEOF(QUERY (fss <* ssfa\surface_style_fill_area.fill_area.fill_styles| NOT (('STEP_MERGED_CAD_SCHEMA.' + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF(fss)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0))) = 0))) = 0))) = 0;
12626      WR10:
12627         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sspl <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_RENDERING' IN TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) = 0))) = 0))) = 0))) = 0;
12628      WR11:
12629         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sscg <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_font)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_RENDERING' IN TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) = 0))) = 0))) = 0))) = 0;
12630      WR12:
12631         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssh <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_RENDERING' IN TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) = 0))) = 0))) = 0))) = 0;
12632      WR13:
12633         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (sssc <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_RENDERING' IN TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) = 0))) = 0))) = 0))) = 0;
12634      WR14:
12635         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssbd <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)))| NOT (((('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) = 1)) AND ('STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width))) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE_STYLE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) = 1) OR ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_RENDERING' IN TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style_rendering.rendering_properties.rendered_colour)) = 1)))) = 0))) = 0))) = 0))) = 0;
12636      WR15:
12637         SIZEOF(QUERY (si <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (psa <* si\styled_item.styles| NOT (SIZEOF(QUERY (ssu <* QUERY (pss <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(pss)))| NOT (SIZEOF(QUERY (ssre <* QUERY (sses <* ssu\surface_style_usage.style\surface_side_style.styles| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_RENDERING' IN TYPEOF(sses)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COLOUR_RGB', ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ] * TYPEOF(ssre\surface_style_rendering.surface_colour)) = 1))) = 0))) = 0))) = 0))) = 0;
12638END_ENTITY;
12639
12640-- IN AP214
12641ENTITY mechanism;
12642      structure_definition : kinematic_structure;
12643      base : kinematic_link;
12644      containing_property : kinematic_property_definition;
12645--    WHERE
12646--       wr1:
12647--          SIZEOF(QUERY (joint <* structure_definition.joints| (base :=: joint.first_link) OR (base :=: joint.second_link))) > 0;
12648END_ENTITY;
12649
12650-- IN AP214
12651ENTITY mechanism_base_placement
12652   SUBTYPE OF (representation_relationship_with_transformation);
12653      base_of_mechanism : mechanism;
12654      SELF\representation_relationship_with_transformation.transformation_operator : cartesian_transformation_operator_3d;
12655   DERIVE
12656      SELF\representation_relationship.rep_2 : kinematic_link_representation := representation_of_link(base_of_mechanism.base);
12657   UNIQUE
12658      ur1 : base_of_mechanism;
12659   WHERE
12660      wr1:
12661         ('STEP_MERGED_CAD_SCHEMA.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_1)) OR ('STEP_MERGED_CAD_SCHEMA.KINEMATIC_LINK_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_1));
12662      wr2:
12663         suitably_based_mechanism(SELF, base_of_mechanism);
12664      wr3:
12665         SELF\representation_relationship_with_transformation.transformation_operator IN SELF\representation_relationship.rep_1.items;
12666END_ENTITY;
12667
12668-- IN AP242
12669ENTITY mechanism_representation
12670   SUBTYPE OF (representation);
12671      represented_topology : kinematic_topology_representation_select;
12672      SELF\representation.context_of_items : geometric_representation_context;
12673      SELF\representation.items : SET [1:?] OF pair_representation_relationship;
12674   DERIVE
12675      represented_joints : SET [1:?] OF kinematic_joint := collect_joints(items);
12676   WHERE
12677      WR1:
12678         (('STEP_MERGED_CAD_SCHEMA.KINEMATIC_TOPOLOGY_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: represented_topology.items) OR ('STEP_MERGED_CAD_SCHEMA.KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: get_kinematic_joints_from_oriented_joints(represented_topology.items))) OR ('STEP_MERGED_CAD_SCHEMA.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: get_kinematic_joints_from_kinematic_loops(represented_topology.items));
12679END_ENTITY;
12680
12681-- IN AP242
12682ENTITY mechanism_state_representation
12683   SUBTYPE OF (representation);
12684      represented_mechanism : mechanism_representation;
12685      SELF\representation.items : SET [1:?] OF pair_value;
12686   DERIVE
12687      SELF\representation.context_of_items : geometric_representation_context := represented_mechanism.context_of_items;
12688END_ENTITY;
12689
12690-- IN AP203e2/AP242
12691ENTITY min_and_major_ply_orientation_basis
12692   SUBTYPE OF (representation_item_relationship, geometric_representation_item);
12693      SELF\representation_item_relationship.related_representation_item : axis2_placement_3d;
12694      SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d;
12695   DERIVE
12696      major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item;
12697      minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item;
12698END_ENTITY;
12699
12700-- IN AP214/AP242
12701ENTITY minimum_function
12702   SUBTYPE OF (multiple_arity_function_call);
12703END_ENTITY;
12704
12705-- IN AP214/AP242
12706ENTITY minus_expression
12707   SUBTYPE OF (binary_numeric_expression);
12708END_ENTITY;
12709
12710-- IN AP214/AP242
12711ENTITY minus_function
12712   SUBTYPE OF (unary_function_call);
12713END_ENTITY;
12714
12715-- IN AP214/AP242
12716ENTITY mod_expression
12717   SUBTYPE OF (binary_numeric_expression);
12718END_ENTITY;
12719
12720ENTITY modified_geometric_tolerance
12721   SUBTYPE OF (geometric_tolerance);
12722      modifier : limit_condition;
12723END_ENTITY;
12724
12725-- DIFF IN AP214
12726-- IN AP214/AP242
12727ENTITY modified_pattern
12728   SUBTYPE OF (shape_aspect);
12729   WHERE
12730      WR1:
12731         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.REPLICATE_FEATURE', 'STEP_MERGED_CAD_SCHEMA.INSTANCED_FEATURE' ] * TYPEOF(fcr.related_shape_aspect.of_shape.definition)) >= 1) AND (fcr.description = 'base shape'))) = 1;
12732      WR2:
12733         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(fcr.related_shape_aspect.of_shape.definition)) = 1) AND (fcr.description = 'base pattern'))) = 1;
12734      WR3:
12735         SIZEOF(QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (SIZEOF(QUERY (msar <* USEDIN(sar.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PATTERN_OFFSET_MEMBERSHIP', 'STEP_MERGED_CAD_SCHEMA.PATTERN_OMIT_MEMBERSHIP' ] * TYPEOF(sar)) = 1) AND (sar.description = 'modified pattern')) AND (sar :<>: msar))) >= 1))) = 0;
12736END_ENTITY;
12737
12738-- IN AP203e2/AP242
12739ENTITY modified_solid
12740   ABSTRACT SUPERTYPE OF (ONEOF(edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration))
12741   SUBTYPE OF (solid_model);
12742      rationale : text;
12743      base_solid : base_solid_select;
12744END_ENTITY;
12745
12746-- IN AP203e2/AP242
12747ENTITY modified_solid_with_placed_configuration
12748   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern))
12749   SUBTYPE OF (modified_solid);
12750      placing : axis2_placement_3d;
12751END_ENTITY;
12752
12753-- IN AP242
12754ENTITY modify_element
12755   SUBTYPE OF (change_element);
12756END_ENTITY;
12757
12758ENTITY moments_of_inertia_representation
12759   SUBTYPE OF (representation);
12760   WHERE
12761      WR1:
12762         (SIZEOF(SELF.items) = 1) AND (SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'moments of inertia matrix'))) = 1);
12763      WR2:
12764         SIZEOF(QUERY (i <* SELF.items| (('STEP_MERGED_CAD_SCHEMA.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element))) AND value_range_aggregate_rep_item(i\compound_representation_item.item_element))) = 1;
12765END_ENTITY;
12766
12767-- IN AP214
12768ENTITY motion_link_relationship
12769   SUPERTYPE OF (resulting_path)
12770   SUBTYPE OF (representation_relationship);
12771      SELF\representation_relationship.rep_1 : founded_kinematic_path;
12772      SELF\representation_relationship.rep_2 : kinematic_link_representation;
12773      related_frame : rigid_placement;
12774   DERIVE
12775      motion : founded_kinematic_path := SELF\representation_relationship.rep_1;
12776      frame_link : kinematic_link_representation := SELF\representation_relationship.rep_2;
12777   WHERE
12778      wr1:
12779         related_frame IN frame_link\representation.items;
12780END_ENTITY;
12781
12782-- IN AP214/AP242
12783ENTITY mult_expression
12784   SUBTYPE OF (multiple_arity_numeric_expression);
12785END_ENTITY;
12786
12787-- DIFF IN AP214
12788ENTITY multi_language_attribute_assignment
12789   SUBTYPE OF (attribute_value_assignment);
12790      items : SET [1:?] OF multi_language_attribute_item;
12791   DERIVE
12792      translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class;
12793   INVERSE
12794      language_indication : SET [1:1] OF attribute_language_assignment FOR items;
12795   WHERE
12796      WR1:
12797         SELF\attribute_value_assignment.role.name = 'alternate language';
12798      WR2:
12799         SIZEOF(QUERY (ala <* language_indication| (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND (ala\attribute_classification_assignment.role.name = 'translated'))) = 1;
12800      WR3:
12801         SELF\attribute_value_assignment.attribute_name <> '';
12802      WR4:
12803         SIZEOF(QUERY (ci <* items| (SIZEOF(QUERY (ata <* USEDIN(ci, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND (ata.translation_language :=: translation_language))) > 1))) = 0;
12804      WR5:
12805         SIZEOF(QUERY (ci <* items| (SIZEOF(QUERY (ata <* USEDIN(ci, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| ((ata\attribute_classification_assignment.role.name = 'primary') AND (ata\attribute_classification_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name)) AND (ata\attribute_classification_assignment.assigned_class :=: translation_language))) > 0))) = 0;
12806END_ENTITY;
12807
12808-- IN AP242
12809ENTITY multi_level_reference_designator
12810   SUBTYPE OF (assembly_component_usage);
12811      location : LIST [1:?] OF UNIQUE next_assembly_usage_occurrence;
12812   DERIVE
12813      leaf : product_definition_or_reference := SELF\product_definition_relationship.related_product_definition;
12814      SELF\product_definition_relationship.related_product_definition : product_definition_or_reference := location[HIINDEX(location)]\product_definition_relationship.related_product_definition;
12815      SELF\product_definition_relationship.relating_product_definition : product_definition := location[1]\product_definition_relationship.relating_product_definition;
12816      root : product_definition := SELF\product_definition_relationship.relating_product_definition;
12817   WHERE
12818      WR1:
12819         unambiguously_specified_multi_level_reference_designator(location);
12820      WR2:
12821         SIZEOF(QUERY (cp <* location| NOT EXISTS(cp\assembly_component_usage.reference_designator))) = 0;
12822END_ENTITY;
12823
12824-- DIFF IN AP203e2
12825ENTITY multiple_arity_boolean_expression
12826   ABSTRACT SUPERTYPE OF (ONEOF(and_expression, or_expression))
12827   SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
12828      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression;
12829END_ENTITY;
12830
12831-- IN AP214/AP242
12832ENTITY multiple_arity_function_call
12833   ABSTRACT SUPERTYPE OF (ONEOF(maximum_function, minimum_function))
12834   SUBTYPE OF (multiple_arity_numeric_expression);
12835END_ENTITY;
12836
12837ENTITY multiple_arity_generic_expression
12838   ABSTRACT SUPERTYPE
12839   SUBTYPE OF (generic_expression);
12840      operands : LIST [2:?] OF generic_expression;
12841END_ENTITY;
12842
12843-- DIFF IN AP203e2
12844ENTITY multiple_arity_numeric_expression
12845   ABSTRACT SUPERTYPE OF (ONEOF(plus_expression, mult_expression, multiple_arity_function_call))
12846   SUBTYPE OF (numeric_expression, multiple_arity_generic_expression);
12847      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression;
12848END_ENTITY;
12849
12850-- IN AP242
12851ENTITY multiply_defined_cartesian_points
12852   SUBTYPE OF (multiply_defined_geometry);
12853      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12854   WHERE
12855      WR1:
12856         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12857      WR2:
12858         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12859      WR3:
12860         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' ]);
12861      WR4:
12862         validate_locations_of_extreme_value_type(SELF, []);
12863      WR5:
12864         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12865END_ENTITY;
12866
12867-- IN AP242
12868ENTITY multiply_defined_curves
12869   SUBTYPE OF (multiply_defined_geometry);
12870      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12871   WHERE
12872      WR1:
12873         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12874      WR2:
12875         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12876      WR3:
12877         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE', 'STEP_MERGED_CAD_SCHEMA.CURVE' ]);
12878      WR4:
12879         validate_locations_of_extreme_value_type(SELF, []);
12880      WR5:
12881         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12882END_ENTITY;
12883
12884-- IN AP242
12885ENTITY multiply_defined_directions
12886   SUBTYPE OF (multiply_defined_geometry);
12887      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12888   WHERE
12889      WR1:
12890         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12891      WR2:
12892         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
12893      WR3:
12894         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.DIRECTION', 'STEP_MERGED_CAD_SCHEMA.DIRECTION' ]);
12895      WR4:
12896         validate_locations_of_extreme_value_type(SELF, []);
12897      WR5:
12898         validate_accuracy_types(SELF, []);
12899END_ENTITY;
12900
12901-- IN AP242
12902ENTITY multiply_defined_edges
12903   SUBTYPE OF (topology_related_to_multiply_defined_geometry);
12904      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12905   WHERE
12906      WR1:
12907         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12908      WR2:
12909         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12910      WR3:
12911         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
12912      WR4:
12913         validate_locations_of_extreme_value_type(SELF, []);
12914      WR5:
12915         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12916END_ENTITY;
12917
12918-- IN AP242
12919ENTITY multiply_defined_faces
12920   SUBTYPE OF (topology_related_to_multiply_defined_geometry);
12921      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12922   WHERE
12923      WR1:
12924         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12925      WR2:
12926         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12927      WR3:
12928         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
12929      WR4:
12930         validate_locations_of_extreme_value_type(SELF, []);
12931      WR5:
12932         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12933END_ENTITY;
12934
12935-- IN AP242
12936ENTITY multiply_defined_geometry
12937   ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_curves, multiply_defined_surfaces, multiply_defined_cartesian_points, multiply_defined_directions, multiply_defined_placements))
12938   SUBTYPE OF (inapt_geometry);
12939END_ENTITY;
12940
12941-- IN AP242
12942ENTITY multiply_defined_placements
12943   SUBTYPE OF (multiply_defined_geometry);
12944      assessment_specification_2 : shape_data_quality_assessment_by_numerical_test;
12945      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12946   WHERE
12947      WR1:
12948         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12949      WR2:
12950         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
12951      WR3:
12952         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PLANE_ANGLE_AND_LENGTH_PAIR');
12953      WR4:
12954         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLACEMENT', 'STEP_MERGED_CAD_SCHEMA.PLACEMENT' ]);
12955      WR5:
12956         validate_locations_of_extreme_value_type(SELF, []);
12957      WR6:
12958         validate_accuracy_types(SELF, []);
12959      WR7:
12960         SIZEOF(QUERY (sdqr <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(sdqr)) AND (SIZEOF(QUERY (sdqiir <* bag_to_set(USEDIN(sdqr, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(sdqiir)) AND (SIZEOF(QUERY (sdqiri <* sdqiir.inspected_instances| (TYPEOF(sdqiri.inspected_elements[1]) <> TYPEOF(sdqiri.inspected_elements[2])))) = 0))) = 0))) = 0;
12961END_ENTITY;
12962
12963-- IN AP242
12964ENTITY multiply_defined_solids
12965   SUBTYPE OF (inapt_manifold_solid_brep);
12966      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12967   WHERE
12968      WR1:
12969         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12970      WR2:
12971         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12972      WR3:
12973         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' ]);
12974      WR4:
12975         validate_locations_of_extreme_value_type(SELF, []);
12976      WR5:
12977         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12978END_ENTITY;
12979
12980-- IN AP242
12981ENTITY multiply_defined_surfaces
12982   SUBTYPE OF (multiply_defined_geometry);
12983      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
12984   WHERE
12985      WR1:
12986         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
12987      WR2:
12988         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
12989      WR3:
12990         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE', 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
12991      WR4:
12992         validate_locations_of_extreme_value_type(SELF, []);
12993      WR5:
12994         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
12995END_ENTITY;
12996
12997-- IN AP242
12998ENTITY multiply_defined_vertices
12999   SUBTYPE OF (topology_related_to_multiply_defined_geometry);
13000      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13001   WHERE
13002      WR1:
13003         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13004      WR2:
13005         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
13006      WR3:
13007         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT', 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' ]);
13008      WR4:
13009         validate_locations_of_extreme_value_type(SELF, []);
13010      WR5:
13011         validate_accuracy_types(SELF, []);
13012END_ENTITY;
13013
13014ENTITY name_assignment
13015   ABSTRACT SUPERTYPE;
13016      assigned_name : label;
13017   DERIVE
13018      role : object_role := get_role(SELF);
13019   WHERE
13020      WR1:
13021         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
13022END_ENTITY;
13023
13024ENTITY name_attribute;
13025      attribute_value : label;
13026      named_item : name_attribute_select;
13027END_ENTITY;
13028
13029-- DIFF IN AP214
13030ENTITY named_unit
13031   SUPERTYPE OF (ONEOF(si_unit, conversion_based_unit, context_dependent_unit) ANDOR ONEOF(length_unit, mass_unit, time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit));
13032      dimensions : dimensional_exponents;
13033END_ENTITY;
13034
13035-- IN AP214
13036ENTITY named_unit_variable
13037   SUBTYPE OF (named_unit, variable_semantics);
13038   INVERSE
13039      associated_variable_environment : environment FOR semantics;
13040END_ENTITY;
13041
13042-- IN AP242
13043ENTITY narrow_surface_patch
13044   SUBTYPE OF (geometry_with_local_near_degeneracy);
13045      width_tolerance : length_measure;
13046      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13047   WHERE
13048      WR1:
13049         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
13050      WR2:
13051         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
13052      WR3:
13053         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_PATCH' ]);
13054      WR4:
13055         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
13056END_ENTITY;
13057
13058-- IN AP242
13059ENTITY near_point_relationship
13060   SUBTYPE OF (representation_item_relationship);
13061      SELF\representation_item_relationship.related_representation_item : point;
13062      SELF\representation_item_relationship.relating_representation_item : curve_or_surface_constraint_element;
13063END_ENTITY;
13064
13065-- IN AP242
13066ENTITY nearly_degenerate_geometry
13067   ABSTRACT SUPERTYPE OF (ONEOF(small_area_surface, short_length_curve, entirely_narrow_surface))
13068   SUBTYPE OF (inapt_geometry);
13069END_ENTITY;
13070
13071-- IN AP242
13072ENTITY nearly_degenerate_surface_boundary
13073   SUBTYPE OF (geometry_with_local_near_degeneracy);
13074      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13075   WHERE
13076      WR1:
13077         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13078      WR2:
13079         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
13080      WR3:
13081         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' ]);
13082      WR4:
13083         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'BOUNDARY_CURVE_OF_B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE' ]);
13084      WR5:
13085         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
13086END_ENTITY;
13087
13088-- IN AP242
13089ENTITY nearly_degenerate_surface_patch
13090   SUBTYPE OF (geometry_with_local_near_degeneracy);
13091      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13092   WHERE
13093      WR1:
13094         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13095      WR2:
13096         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
13097      WR3:
13098         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
13099      WR4:
13100         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_PATCH' ]);
13101      WR5:
13102         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
13103END_ENTITY;
13104
13105-- IN AP242
13106ENTITY neutral_sketch_representation
13107   SUBTYPE OF (shape_representation);
13108      neutral_sketch_semantics : curves_or_area;
13109      SELF\representation.items : SET [1:?] OF sketch_element_select;
13110   WHERE
13111      WR1:
13112         SIZEOF(QUERY (q <* items| NOT (('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(q)) AND (q\geometric_representation_item.dim = 3)))) = 0;
13113END_ENTITY;
13114
13115-- DIFF IN AP214
13116-- DIFF IN AP203e2
13117ENTITY next_assembly_usage_occurrence
13118   SUBTYPE OF (assembly_component_usage);
13119   UNIQUE
13120      UR1 : SELF\assembly_component_usage.reference_designator, SELF\product_definition_relationship.relating_product_definition;
13121END_ENTITY;
13122
13123-- IN AP214/AP242
13124ENTITY ngon_closed_profile
13125   SUBTYPE OF (shape_aspect);
13126   WHERE
13127      WR1:
13128         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
13129      WR2:
13130         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
13131      WR3:
13132         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 4)))) = 0))) = 0;
13133      WR4:
13134         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| ((((srwp_i.name = 'orientation') OR (srwp_i.name = 'number of sides')) OR (srwp_i.name = 'circumscribed diameter')) OR (srwp_i.name = 'corner radius')) OR (srwp_i.name = 'diameter across flats'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
13135      WR5:
13136         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
13137      WR6:
13138         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'number of sides'))) = 1))) = 0))) = 0;
13139      WR7:
13140         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name IN [ 'circumscribed diameter', 'diameter across flats' ]))) = 1))) = 0))) = 0;
13141      WR8:
13142         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) = 0;
13143END_ENTITY;
13144
13145-- IN AP242
13146ENTITY non_agreed_accuracy_parameter_usage
13147   SUBTYPE OF (externally_conditioned_data_quality_criterion);
13148   WHERE
13149      WR1:
13150         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT' ]);
13151END_ENTITY;
13152
13153-- IN AP242
13154ENTITY non_agreed_scale_usage
13155   SUBTYPE OF (externally_conditioned_data_quality_criterion);
13156   WHERE
13157      WR1:
13158         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_TRANSFORMATION_OPERATOR_3D' ]);
13159END_ENTITY;
13160
13161-- IN AP242
13162ENTITY non_agreed_unit_usage
13163   SUBTYPE OF (externally_conditioned_data_quality_criterion);
13164   WHERE
13165      WR1:
13166         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' ]);
13167END_ENTITY;
13168
13169-- IN AP242
13170ENTITY non_manifold_at_edge
13171   SUBTYPE OF (inapt_topology);
13172      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13173   WHERE
13174      WR1:
13175         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
13176      WR2:
13177         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
13178      WR3:
13179         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
13180      WR4:
13181         validate_accuracy_types(SELF, []);
13182END_ENTITY;
13183
13184-- IN AP242
13185ENTITY non_manifold_at_vertex
13186   SUBTYPE OF (inapt_topology);
13187      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13188   WHERE
13189      WR1:
13190         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
13191      WR2:
13192         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
13193      WR3:
13194         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' ]);
13195      WR4:
13196         validate_accuracy_types(SELF, []);
13197END_ENTITY;
13198
13199ENTITY non_manifold_surface_shape_representation
13200   SUBTYPE OF (shape_representation);
13201   WHERE
13202      WR1:
13203         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
13204      WR2:
13205         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) > 0;
13206      WR3:
13207         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (('STEP_MERGED_CAD_SCHEMA.' + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\mapped_item.mapping_source.mapped_representation.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(mr_it)))) > 0)))) = 0;
13208      WR4:
13209         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.ORIENTED_FACE' ] * TYPEOF(fa)) = 1))) = 0))) = 0))) = 0;
13210      WR5:
13211         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(fa)))| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(f_sf)) OR nmsf_surface_check(f_sf\face_surface.face_geometry)))) = 0))) = 0))) = 0;
13212      WR6:
13213         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces| ('STEP_MERGED_CAD_SCHEMA.ORIENTED_FACE' IN TYPEOF(fa)))| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(o_fa\oriented_face.face_element)) OR nmsf_surface_check(o_fa\oriented_face.face_element\face_surface.face_geometry)))) = 0))) = 0))) = 0;
13214      WR7:
13215         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (bnds <* fa.bounds| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP', 'STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
13216      WR8:
13217         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
13218      WR9:
13219         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe_cv <* QUERY (oe <* elp_fbnds\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA', 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D', 'STEP_MERGED_CAD_SCHEMA.PCURVE', 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' ] * TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
13220      WR10:
13221         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT nmsf_curve_check(oe.edge_element\edge_curve.edge_geometry))) = 0))) = 0)))) = 0))) = 0))) = 0;
13222      WR11:
13223         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_end))))) = 0))) = 0)))) = 0))) = 0))) = 0;
13224      WR12:
13225         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
13226      WR13:
13227         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) = 0))) = 0;
13228      WR14:
13229         SIZEOF(QUERY (fbsm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (cfs <* fbsm\face_based_surface_model.fbsm_faces| NOT (SIZEOF(QUERY (fa <* cfs.cfs_faces| NOT (('STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT', 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0;
13230END_ENTITY;
13231
13232-- IN AP242
13233ENTITY non_referenced_coordinate_system
13234   SUBTYPE OF (externally_conditioned_data_quality_criterion);
13235   WHERE
13236      WR1:
13237         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ]);
13238END_ENTITY;
13239
13240-- IN AP242
13241ENTITY non_smooth_geometry_transition_across_edge
13242   ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuity_between_adjacent_faces, g2_discontinuity_between_adjacent_faces))
13243   SUBTYPE OF (inapt_topology_and_geometry_relationship);
13244END_ENTITY;
13245
13246-- IN AP242
13247ENTITY non_uniform_zone_definition
13248   SUBTYPE OF (tolerance_zone_definition);
13249END_ENTITY;
13250
13251-- IN AP214/AP242
13252ENTITY not_expression
13253   SUBTYPE OF (unary_boolean_expression);
13254      SELF\unary_generic_expression.operand : boolean_expression;
13255END_ENTITY;
13256
13257-- IN AP203e2/AP242
13258ENTITY null_representation_item
13259   SUBTYPE OF (representation_item);
13260END_ENTITY;
13261
13262-- IN AP214/AP242
13263ENTITY numeric_defined_function
13264   ABSTRACT SUPERTYPE OF (ONEOF(integer_defined_function, real_defined_function))
13265   SUBTYPE OF (numeric_expression, defined_function);
13266END_ENTITY;
13267
13268-- CASE DIFF IN AP214
13269-- DIFF IN AP203e2
13270ENTITY numeric_expression
13271   ABSTRACT SUPERTYPE OF (ONEOF(simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression, length_function, value_function, numeric_defined_function))
13272   SUBTYPE OF (expression);
13273   DERIVE
13274      is_int : BOOLEAN := is_int_expr(SELF);
13275      sql_mappable : BOOLEAN := is_SQL_mappable(SELF);
13276END_ENTITY;
13277
13278-- IN AP214/AP242
13279ENTITY numeric_variable
13280   SUPERTYPE OF (ONEOF(int_numeric_variable, real_numeric_variable))
13281   SUBTYPE OF (simple_numeric_expression, variable);
13282   WHERE
13283      WR1:
13284         ('STEP_MERGED_CAD_SCHEMA.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR ('STEP_MERGED_CAD_SCHEMA.REAL_NUMERIC_VARIABLE' IN TYPEOF(SELF));
13285END_ENTITY;
13286
13287ENTITY object_role;
13288      name : label;
13289      description : OPTIONAL text;
13290END_ENTITY;
13291
13292-- IN AP214/AP242
13293ENTITY odd_function
13294   SUBTYPE OF (unary_boolean_expression);
13295      SELF\unary_generic_expression.operand : numeric_expression;
13296   WHERE
13297      WR1:
13298         is_int_expr(operand);
13299END_ENTITY;
13300
13301ENTITY offset_curve_2d
13302   SUBTYPE OF (curve);
13303      basis_curve : curve;
13304      distance : length_measure;
13305      self_intersect : LOGICAL;
13306   WHERE
13307      WR1:
13308         basis_curve.dim = 2;
13309END_ENTITY;
13310
13311ENTITY offset_curve_3d
13312   SUBTYPE OF (curve);
13313      basis_curve : curve;
13314      distance : length_measure;
13315      self_intersect : LOGICAL;
13316      ref_direction : direction;
13317   WHERE
13318      WR1:
13319         (basis_curve.dim = 3) AND (ref_direction.dim = 3);
13320END_ENTITY;
13321
13322ENTITY offset_surface
13323   SUBTYPE OF (surface);
13324      basis_surface : surface;
13325      distance : length_measure;
13326      self_intersect : LOGICAL;
13327END_ENTITY;
13328
13329ENTITY one_direction_repeat_factor
13330   SUBTYPE OF (geometric_representation_item);
13331      repeat_factor : vector;
13332END_ENTITY;
13333
13334-- IN AP242
13335ENTITY open_closed_shell
13336   SUBTYPE OF (erroneous_topology);
13337      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13338   WHERE
13339      WR1:
13340         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
13341      WR2:
13342         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CLOSED_SHELL' ]);
13343      WR3:
13344         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
13345      WR4:
13346         validate_accuracy_types(SELF, []);
13347END_ENTITY;
13348
13349-- IN AP242
13350ENTITY open_edge_loop
13351   SUBTYPE OF (erroneous_topology);
13352      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13353   WHERE
13354      WR1:
13355         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
13356      WR2:
13357         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' ]);
13358      WR3:
13359         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' ]);
13360      WR4:
13361         validate_accuracy_types(SELF, []);
13362END_ENTITY;
13363
13364-- IN AP214/AP242
13365ENTITY open_path_profile
13366   SUBTYPE OF (shape_aspect);
13367   WHERE
13368      WR1:
13369         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
13370      WR2:
13371         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
13372      WR3:
13373         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
13374      WR4:
13375         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
13376      WR5:
13377         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
13378      WR6:
13379         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
13380END_ENTITY;
13381
13382ENTITY open_shell
13383   SUBTYPE OF (connected_face_set);
13384END_ENTITY;
13385
13386-- IN AP214/AP242
13387ENTITY or_expression
13388   SUBTYPE OF (multiple_arity_boolean_expression);
13389END_ENTITY;
13390
13391-- IN AP203e2/AP242
13392ENTITY ordinal_date
13393   SUBTYPE OF (date);
13394      day_component : day_in_year_number;
13395   WHERE
13396      WR1:
13397         NOT leap_year(SELF.year_component) AND ((1 <= day_component) AND (day_component <= 365)) OR leap_year(SELF.year_component) AND ((1 <= day_component) AND (day_component <= 366));
13398END_ENTITY;
13399
13400ENTITY ordinate_dimension
13401   SUBTYPE OF (projection_directed_callout);
13402END_ENTITY;
13403
13404ENTITY organization;
13405      id : OPTIONAL identifier;
13406      name : label;
13407      description : OPTIONAL text;
13408END_ENTITY;
13409
13410ENTITY organization_assignment
13411   ABSTRACT SUPERTYPE;
13412      assigned_organization : organization;
13413      role : organization_role;
13414END_ENTITY;
13415
13416ENTITY organization_relationship;
13417      name : label;
13418      description : OPTIONAL text;
13419      relating_organization : organization;
13420      related_organization : organization;
13421END_ENTITY;
13422
13423ENTITY organization_role;
13424      name : label;
13425   DERIVE
13426      description : text := get_description_value(SELF);
13427   WHERE
13428      WR1:
13429         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
13430END_ENTITY;
13431
13432ENTITY organizational_address
13433   SUBTYPE OF (address);
13434      organizations : SET [1:?] OF organization;
13435      description : OPTIONAL text;
13436END_ENTITY;
13437
13438ENTITY organizational_project;
13439      name : label;
13440      description : OPTIONAL text;
13441      responsible_organizations : SET [1:?] OF organization;
13442   DERIVE
13443      id : identifier := get_id_value(SELF);
13444   WHERE
13445      WR1:
13446         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
13447END_ENTITY;
13448
13449ENTITY organizational_project_assignment
13450   ABSTRACT SUPERTYPE;
13451      assigned_organizational_project : organizational_project;
13452      role : organizational_project_role;
13453END_ENTITY;
13454
13455ENTITY organizational_project_relationship;
13456      name : label;
13457      description : OPTIONAL text;
13458      relating_organizational_project : organizational_project;
13459      related_organizational_project : organizational_project;
13460END_ENTITY;
13461
13462ENTITY organizational_project_role;
13463      name : label;
13464      description : OPTIONAL text;
13465END_ENTITY;
13466
13467ENTITY oriented_closed_shell
13468   SUBTYPE OF (closed_shell);
13469      closed_shell_element : closed_shell;
13470      orientation : BOOLEAN;
13471   DERIVE
13472      SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, SELF.closed_shell_element.cfs_faces);
13473   WHERE
13474      WR1:
13475         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(SELF.closed_shell_element));
13476END_ENTITY;
13477
13478-- DIFF IN AP214
13479ENTITY oriented_edge
13480   SUBTYPE OF (edge);
13481      edge_element : edge;
13482      orientation : BOOLEAN;
13483   DERIVE
13484      SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation, SELF.edge_element.edge_end, SELF.edge_element.edge_start);
13485      SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation, SELF.edge_element.edge_start, SELF.edge_element.edge_end);
13486   WHERE
13487      WR1:
13488         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' IN TYPEOF(SELF.edge_element));
13489END_ENTITY;
13490
13491ENTITY oriented_face
13492   SUBTYPE OF (face);
13493      face_element : face;
13494      orientation : BOOLEAN;
13495   DERIVE
13496      SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation, SELF.face_element.bounds);
13497   WHERE
13498      WR1:
13499         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_FACE' IN TYPEOF(SELF.face_element));
13500END_ENTITY;
13501
13502-- IN AP242
13503ENTITY oriented_joint
13504   SUBTYPE OF (oriented_edge);
13505      SELF\oriented_edge.edge_element : kinematic_joint;
13506END_ENTITY;
13507
13508ENTITY oriented_open_shell
13509   SUBTYPE OF (open_shell);
13510      open_shell_element : open_shell;
13511      orientation : BOOLEAN;
13512   DERIVE
13513      SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, SELF.open_shell_element.cfs_faces);
13514   WHERE
13515      WR1:
13516         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_OPEN_SHELL' IN TYPEOF(SELF.open_shell_element));
13517END_ENTITY;
13518
13519ENTITY oriented_path
13520   SUBTYPE OF (path);
13521      path_element : path;
13522      orientation : BOOLEAN;
13523   DERIVE
13524      SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation, SELF.path_element.edge_list);
13525   WHERE
13526      WR1:
13527         NOT ('STEP_MERGED_CAD_SCHEMA.ORIENTED_PATH' IN TYPEOF(SELF.path_element));
13528END_ENTITY;
13529
13530ENTITY oriented_surface
13531   SUBTYPE OF (surface);
13532      orientation : BOOLEAN;
13533END_ENTITY;
13534
13535ENTITY outer_boundary_curve
13536   SUBTYPE OF (boundary_curve);
13537END_ENTITY;
13538
13539-- IN AP242
13540ENTITY outer_round
13541   SUBTYPE OF (feature_definition);
13542   WHERE
13543      WR1:
13544         NOT (SELF\characterized_object.description = 'outer diameter') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 3))) = 1))) = 1);
13545      WR2:
13546         NOT (SELF\characterized_object.description = 'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((2 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 3)))) = 1))) = 1);
13547      WR3:
13548         SELF\characterized_object.description IN [ 'outer diameter', 'outer diameter to shoulder' ];
13549      WR4:
13550         NOT (SELF\characterized_object.description = 'outer diameter') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1))) = 0))) = 0);
13551      WR5:
13552         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0))) = 0;
13553      WR6:
13554         NOT (SELF\characterized_object.description = 'outer diameter to shoulder') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'v-shape boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.VEE_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'v-shape'))) = 1))) = 1))) = 0);
13555      WR7:
13556         NOT (SELF\characterized_object.description = 'outer diameter') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'reduced size occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.OUTER_ROUND' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (sdr.name = 'reduced size'))) = 1))) <= 1))) = 0);
13557      WR8:
13558         NOT (SELF\characterized_object.description = 'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'length'))) <= 1))) = 0))) = 0);
13559      WR9:
13560         NOT (SELF\characterized_object.description = 'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'feature length'))) <= 1))) = 0))) = 0);
13561END_ENTITY;
13562
13563-- IN AP242
13564ENTITY outside_profile
13565   SUBTYPE OF (feature_definition);
13566   WHERE
13567      WR1:
13568         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1))) = 1))) = 1;
13569      WR2:
13570         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description IN [ 'boundary occurrence', 'non-planar boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence' ]))) = 1))) = 0;
13571      WR3:
13572         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE', 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.LINEAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'outside boundary'))) = 1))) = 1))) = 0);
13573      WR4:
13574         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description IN [ 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| NOT (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile floor usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PROFILE_FLOOR' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.OUTSIDE_PROFILE' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) = 1))) = 0))) = 0);
13575      WR5:
13576         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description IN [ 'outside boundary', 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' ] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.name = 'profile swept shape')) AND (sdr.relating_shape_aspect.description = 'linear'))) = 1))) = 1))) = 0);
13577      WR6:
13578         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'complex boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE', 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.LINEAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
13579      WR7:
13580         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'partial circular boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
13581      WR8:
13582         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'closed circular boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
13583      WR9:
13584         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'open rectangular boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
13585      WR10:
13586         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'closed rectangular boundary occurrence'))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
13587      WR11:
13588         (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description IN [ 'boundary occurrence', 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction'))) = 1))) = 0);
13589      WR12:
13590         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
13591END_ENTITY;
13592
13593ENTITY over_riding_styled_item
13594   SUBTYPE OF (styled_item);
13595      over_ridden_style : styled_item;
13596END_ENTITY;
13597
13598-- IN AP242
13599ENTITY over_used_vertex
13600   SUBTYPE OF (inapt_topology);
13601      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13602   WHERE
13603      WR1:
13604         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13605      WR2:
13606         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
13607      WR3:
13608         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' ]);
13609      WR4:
13610         validate_locations_of_extreme_value_type(SELF, []);
13611      WR5:
13612         validate_accuracy_types(SELF, []);
13613END_ENTITY;
13614
13615-- IN AP242
13616ENTITY overcomplex_geometry
13617   ABSTRACT SUPERTYPE OF (ONEOF(excessively_high_degree_curve, excessively_high_degree_surface, surface_with_excessive_patches_in_one_direction, curve_with_excessive_segments, high_degree_linear_curve, high_degree_planar_surface, high_degree_conic, high_degree_axi_symmetric_surface))
13618   SUBTYPE OF (inapt_geometry);
13619END_ENTITY;
13620
13621-- IN AP242
13622ENTITY overcomplex_topology_and_geometry_relationship
13623   ABSTRACT SUPERTYPE OF (ONEOF(unused_patches, edge_with_excessive_segments, face_surface_with_excessive_patches_in_one_direction))
13624   SUBTYPE OF (inapt_topology_and_geometry_relationship);
13625END_ENTITY;
13626
13627-- IN AP242
13628ENTITY overlapping_geometry
13629   ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_curves, partly_overlapping_surfaces))
13630   SUBTYPE OF (inapt_geometry);
13631END_ENTITY;
13632
13633ENTITY package_product_concept_feature
13634   SUBTYPE OF (product_concept_feature);
13635   WHERE
13636      WR1:
13637         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(SELF));
13638      WR2:
13639         SIZEOF(QUERY (cfr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP.' + 'RELATING_PRODUCT_CONCEPT_FEATURE')| ('STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)) AND (SIZEOF(QUERY (ipcf <* USEDIN(cfr, 'STEP_MERGED_CAD_SCHEMA.' + 'CONDITIONAL_CONCEPT_FEATURE.' + 'CONDITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(ipcf)))) = 1))) > 0;
13640END_ENTITY;
13641
13642-- IN AP214
13643ENTITY pair_actuator;
13644      actuated_pair : kinematic_pair;
13645      name : label;
13646   UNIQUE
13647      ur1 : actuated_pair;
13648END_ENTITY;
13649
13650-- IN AP242
13651ENTITY pair_representation_relationship
13652   SUBTYPE OF (geometric_representation_item, representation_relationship_with_transformation);
13653      SELF\representation_relationship.rep_1 : kinematic_link_representation;
13654      SELF\representation_relationship.rep_2 : kinematic_link_representation;
13655      SELF\representation_relationship_with_transformation.transformation_operator : kinematic_pair;
13656   WHERE
13657      WR1:
13658         transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items;
13659      WR2:
13660         transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items;
13661      WR3:
13662         rep_1\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_start;
13663      WR4:
13664         rep_2\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_end;
13665END_ENTITY;
13666
13667-- DIFF IN AP214
13668-- IN AP214/AP242
13669ENTITY pair_value
13670   ABSTRACT SUPERTYPE OF (ONEOF(sliding_surface_pair_value, rolling_surface_pair_value, revolute_pair_value, prismatic_pair_value, screw_pair_value, cylindrical_pair_value, spherical_pair_value, sliding_curve_pair_value, rolling_curve_pair_value, gear_pair_value, rack_and_pinion_pair_value, universal_pair_value, planar_pair_value, unconstrained_pair_value, point_on_surface_pair_value, point_on_planar_curve_pair_value, low_order_kinematic_pair_value))
13671   SUBTYPE OF (geometric_representation_item);
13672      applies_to_pair : kinematic_pair;
13673END_ENTITY;
13674
13675ENTITY parabola
13676   SUBTYPE OF (conic);
13677      focal_dist : length_measure;
13678   WHERE
13679      WR1:
13680         focal_dist <> 0.0;
13681END_ENTITY;
13682
13683-- IN AP242
13684ENTITY parallel_assembly_constraint
13685   SUBTYPE OF (binary_assembly_constraint, parallel_geometric_constraint);
13686END_ENTITY;
13687
13688-- IN AP242
13689ENTITY parallel_assembly_constraint_with_dimension
13690   SUBTYPE OF (parallel_assembly_constraint, pgc_with_dimension);
13691END_ENTITY;
13692
13693-- IN AP242
13694ENTITY parallel_composed_function
13695   SUBTYPE OF (maths_function, multiple_arity_generic_expression);
13696      source_of_domain : maths_space_or_function;
13697      prep_functions : LIST [1:?] OF maths_function;
13698      final_function : maths_function_select;
13699   DERIVE
13700      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF generic_expression := convert_to_operands_prcmfn(source_of_domain, prep_functions, final_function);
13701   WHERE
13702      WR1:
13703         no_cyclic_domain_reference(source_of_domain, [ SELF ]);
13704      WR2:
13705         expression_is_constant(domain_from(source_of_domain));
13706      WR3:
13707         parallel_composed_function_domain_check(domain_from(source_of_domain), prep_functions);
13708      WR4:
13709         parallel_composed_function_composability_check(prep_functions, final_function);
13710END_ENTITY;
13711
13712-- IN AP242
13713ENTITY parallel_geometric_constraint
13714   SUBTYPE OF (explicit_geometric_constraint);
13715      SELF\explicit_constraint.constrained_elements : SET [1:?] OF linear_geometry_constraint_element;
13716      SELF\explicit_constraint.reference_elements : SET [0:1] OF linear_geometry_constraint_element;
13717END_ENTITY;
13718
13719ENTITY parallel_offset
13720   SUBTYPE OF (derived_shape_aspect);
13721      offset : measure_with_unit;
13722   WHERE
13723      WR1:
13724         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
13725END_ENTITY;
13726
13727-- IN AP242
13728ENTITY parallel_offset_geometric_constraint
13729   SUBTYPE OF (explicit_geometric_constraint);
13730      offset_type : parallel_offset_type;
13731      SELF\explicit_constraint.constrained_elements : SET [1:?] OF curve_or_surface_constraint_element;
13732      SELF\explicit_constraint.reference_elements : SET [0:1] OF curve_or_surface_constraint_element;
13733   WHERE
13734      WR1:
13735         NOT (((offset_type = curve_2d_offset) OR (offset_type = curve_3d_offset)) AND (SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements| ('STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(q)))) > 0));
13736      WR2:
13737         NOT ((offset_type = surface_offset) AND (SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements| ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(q)))) > 0));
13738END_ENTITY;
13739
13740ENTITY parallelism_tolerance
13741   SUBTYPE OF (geometric_tolerance_with_datum_reference);
13742END_ENTITY;
13743
13744ENTITY parametric_representation_context
13745   SUBTYPE OF (representation_context);
13746END_ENTITY;
13747
13748-- IN AP203e2/AP242
13749ENTITY part_laminate_table
13750   SUPERTYPE OF (ONEOF(composite_assembly_table, ply_laminate_table))
13751   SUBTYPE OF (laminate_table);
13752END_ENTITY;
13753
13754-- IN AP214/AP242
13755ENTITY partial_circular_profile
13756   SUBTYPE OF (shape_aspect);
13757   WHERE
13758      WR1:
13759         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
13760      WR2:
13761         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
13762      WR3:
13763         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 3))) = 0))) = 0;
13764      WR4:
13765         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
13766      WR5:
13767         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
13768      WR6:
13769         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1))) = 0))) = 0;
13770      WR7:
13771         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
13772END_ENTITY;
13773
13774-- IN AP242
13775ENTITY partial_derivative_expression
13776   SUBTYPE OF (unary_generic_expression);
13777      d_variables : LIST [1:?] OF maths_variable;
13778      extension : extension_options;
13779   DERIVE
13780      derivand : generic_expression := SELF\unary_generic_expression.operand;
13781   WHERE
13782      WR1:
13783         has_values_space(derivand);
13784      WR2:
13785         space_is_continuum(values_space_of(derivand));
13786      WR3:
13787         SIZEOF(QUERY (vbl <* d_variables| NOT subspace_of(values_space_of(vbl), the_reals) AND NOT subspace_of(values_space_of(vbl), the_complex_numbers))) = 0;
13788END_ENTITY;
13789
13790-- IN AP242
13791ENTITY partial_derivative_function
13792   SUBTYPE OF (maths_function, unary_generic_expression);
13793      d_variables : LIST [1:?] OF input_selector;
13794      extension : extension_options;
13795      SELF\unary_generic_expression.operand : maths_function;
13796   DERIVE
13797      derivand : maths_function := SELF\unary_generic_expression.operand;
13798   WHERE
13799      WR1:
13800         space_is_continuum(derivand.range);
13801      WR2:
13802         partial_derivative_check(derivand.domain, d_variables);
13803END_ENTITY;
13804
13805-- IN AP203e2/AP242
13806ENTITY partial_document_with_structured_text_representation_assignment
13807   SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
13808END_ENTITY;
13809
13810-- IN AP242
13811ENTITY partly_overlapping_curves
13812   SUBTYPE OF (overlapping_geometry);
13813      interference_tolerance : length_measure;
13814      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13815   WHERE
13816      WR1:
13817         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13818      WR2:
13819         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
13820      WR3:
13821         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE', 'STEP_MERGED_CAD_SCHEMA.CURVE' ]);
13822      WR4:
13823         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE', 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' ]);
13824      WR5:
13825         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
13826END_ENTITY;
13827
13828-- IN AP242
13829ENTITY partly_overlapping_edges
13830   SUBTYPE OF (topology_related_to_overlapping_geometry);
13831      interference_tolerance : length_measure;
13832      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13833   WHERE
13834      WR1:
13835         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13836      WR2:
13837         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
13838      WR3:
13839         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
13840      WR4:
13841         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SUBEDGE', 'STEP_MERGED_CAD_SCHEMA.SUBEDGE' ]);
13842      WR5:
13843         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
13844END_ENTITY;
13845
13846-- IN AP242
13847ENTITY partly_overlapping_faces
13848   SUBTYPE OF (topology_related_to_overlapping_geometry);
13849      interference_tolerance : length_measure;
13850      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13851   WHERE
13852      WR1:
13853         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13854      WR2:
13855         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
13856      WR3:
13857         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
13858      WR4:
13859         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SUBFACE', 'STEP_MERGED_CAD_SCHEMA.SUBFACE' ]);
13860      WR5:
13861         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
13862END_ENTITY;
13863
13864-- IN AP242
13865ENTITY partly_overlapping_solids
13866   SUBTYPE OF (inapt_manifold_solid_brep);
13867      interference_tolerance : length_measure;
13868      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13869   WHERE
13870      WR1:
13871         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13872      WR2:
13873         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
13874      WR3:
13875         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP', 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' ]);
13876      WR4:
13877         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SUBFACE', 'STEP_MERGED_CAD_SCHEMA.SUBFACE' ]);
13878      WR5:
13879         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
13880END_ENTITY;
13881
13882-- IN AP242
13883ENTITY partly_overlapping_surfaces
13884   SUBTYPE OF (overlapping_geometry);
13885      interference_tolerance : length_measure;
13886      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13887   WHERE
13888      WR1:
13889         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
13890      WR2:
13891         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
13892      WR3:
13893         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE', 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
13894      WR4:
13895         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE', 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE' ]);
13896      WR5:
13897         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
13898END_ENTITY;
13899
13900ENTITY path
13901   SUPERTYPE OF (ONEOF(edge_loop, oriented_path))
13902   SUBTYPE OF (topological_representation_item);
13903      edge_list : LIST [1:?] OF UNIQUE oriented_edge;
13904   WHERE
13905      WR1:
13906         path_head_to_tail(SELF);
13907END_ENTITY;
13908
13909-- IN AP242
13910ENTITY path_area_with_parameters
13911   SUBTYPE OF (complex_area, mapped_item);
13912   WHERE
13913      WR1:
13914         'STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(SELF\mapped_item.mapping_target);
13915      WR2:
13916         'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE_PARAMETERS_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source\representation_map.mapped_representation);
13917      WR3:
13918         SELF\mapped_item.mapping_source\representation_map.mapping_origin\representation_item.name = 'curve width';
13919END_ENTITY;
13920
13921-- IN AP214/AP242
13922ENTITY path_feature_component
13923   SUBTYPE OF (shape_aspect);
13924   WHERE
13925      WR1:
13926         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
13927      WR2:
13928         SELF.description IN [ 'partial circular', 'complete circular', 'linear', 'complex' ];
13929      WR3:
13930         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
13931      WR4:
13932         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
13933      WR5:
13934         NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 3))) = 0))) = 0);
13935      WR6:
13936         NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
13937      WR7:
13938         NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1))) = 0))) = 0);
13939      WR8:
13940         NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0);
13941      WR9:
13942         NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
13943      WR10:
13944         NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0);
13945      WR11:
13946         NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'distance'))) = 1))) = 0))) = 0);
13947      WR12:
13948         NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
13949      WR13:
13950         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (('STEP_MERGED_CAD_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'sweep path')) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (srwp_i.name = 'profile shape'))) = 1))) = 1))) = 0);
13951END_ENTITY;
13952
13953-- IN AP242
13954ENTITY path_node
13955   ABSTRACT SUPERTYPE OF (ONEOF(point_to_point_path, circular_path, linear_path, curve_based_path))
13956   SUBTYPE OF (kinematic_path_segment);
13957      placement_end : placement;
13958END_ENTITY;
13959
13960-- IN AP242
13961ENTITY path_parameter_representation
13962   SUBTYPE OF (definitional_representation);
13963      SELF\representation.context_of_items : path_parameter_representation_context;
13964      SELF\representation.items : SET [1:?] OF bounded_curve;
13965   WHERE
13966      WR1:
13967         SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
13968END_ENTITY;
13969
13970-- IN AP242
13971ENTITY path_parameter_representation_context
13972   SUBTYPE OF (geometric_representation_context, parametric_representation_context);
13973END_ENTITY;
13974
13975-- IN AP214/AP242
13976ENTITY path_shape_representation
13977   SUBTYPE OF (shape_representation);
13978   WHERE
13979      WR1:
13980         SIZEOF(SELF.items) >= 1;
13981      WR2:
13982         SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE', 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.PATH' ] * TYPEOF(i)) = 1))) >= 1;
13983END_ENTITY;
13984
13985-- IN AP214/AP242
13986ENTITY pattern_offset_membership
13987   SUBTYPE OF (feature_component_relationship);
13988   WHERE
13989      WR1:
13990         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <* QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(pdr.definition)) = 1))) = 0))) = 0;
13991      WR2:
13992         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description = 'modified pattern') AND ('STEP_MERGED_CAD_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
13993      WR3:
13994         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| ('STEP_MERGED_CAD_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) AND NOT (SIZEOF(QUERY (modfcr <* QUERY (modsar <* USEDIN(fcr.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(modsar.related_shape_aspect.of_shape.definition)) = 1) AND (modsar :<>: fcr))| NOT (modfcr.related_shape_aspect.of_shape.definition :=: SELF.relating_shape_aspect.of_shape.definition))) = 0))) = 0;
13995      WR4:
13996         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 2))) = 0);
13997      WR5:
13998         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1))) = 0);
13999      WR6:
14000         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF(pdr.used_representation.items) = 2))) = 0))) = 0);
14001      WR7:
14002         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'index number'))) = 1))) = 0))) = 0);
14003      WR8:
14004         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'offset'))) = 1))) = 0))) = 0);
14005      WR9:
14006         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 3))) = 0))) = 0);
14007      WR10:
14008         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'row index'))) = 1))) = 0))) = 0);
14009      WR11:
14010         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'column index'))) = 1))) = 0))) = 0);
14011      WR12:
14012         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'offset distance'))) = 1))) = 0))) = 0);
14013      WR13:
14014         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'offset direction'))) = 1))) = 0);
14015END_ENTITY;
14016
14017-- IN AP214/AP242
14018ENTITY pattern_omit_membership
14019   SUBTYPE OF (feature_component_relationship);
14020   WHERE
14021      WR1:
14022         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <* QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(pdr.definition)) = 1))) = 0))) = 0;
14023      WR2:
14024         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description = 'modified pattern') AND ('STEP_MERGED_CAD_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
14025      WR3:
14026         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF))| ('STEP_MERGED_CAD_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) AND NOT (SIZEOF(QUERY (modfcr <* QUERY (modsar <* USEDIN(fcr.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(modsar.related_shape_aspect.of_shape.definition)) = 1) AND (modsar :<>: fcr))| NOT (modfcr.related_shape_aspect.of_shape.definition :=: SELF.relating_shape_aspect.of_shape.definition))) = 0))) = 0;
14027      WR4:
14028         SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1))) = 0;
14029      WR5:
14030         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF(pdr.used_representation.items) = 1))) = 0))) = 0);
14031      WR6:
14032         NOT ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'index number'))) = 1))) = 0))) = 0);
14033      WR7:
14034         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF(pdr.used_representation.items) = 2))) = 0))) = 0);
14035      WR8:
14036         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'row index'))) = 1))) = 0))) = 0);
14037      WR9:
14038         NOT ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'column index'))) = 1))) = 0))) = 0);
14039END_ENTITY;
14040
14041ENTITY pcurve
14042   SUBTYPE OF (curve);
14043      basis_surface : surface;
14044      reference_to_curve : definitional_representation;
14045   WHERE
14046      WR1:
14047         SIZEOF(reference_to_curve\representation.items) = 1;
14048      WR2:
14049         'STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
14050      WR3:
14051         reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
14052END_ENTITY;
14053
14054-- IN AP242
14055ENTITY pdgc_with_dimension
14056   SUBTYPE OF (point_distance_geometric_constraint);
14057      distance_value : non_negative_length_measure;
14058END_ENTITY;
14059
14060-- IN AP203e2
14061ENTITY percentage_laminate_definition
14062   SUBTYPE OF (product_definition);
14063   WHERE
14064      WR1:
14065         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) > 0;
14066END_ENTITY;
14067
14068-- IN AP203e2/AP242
14069ENTITY percentage_laminate_table
14070   SUBTYPE OF (zone_structural_makeup);
14071END_ENTITY;
14072
14073-- IN AP203e2
14074ENTITY percentage_ply_definition
14075   SUBTYPE OF (product_definition);
14076   WHERE
14077      WR1:
14078         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PERCENTAGE_LAMINATE_DEFINITION' IN TYPEOF(pdr.related_product_definition)) AND (pdr.name = 'makeup and properties'))) = 0;
14079END_ENTITY;
14080
14081-- IN AP242
14082ENTITY perpendicular_assembly_constraint
14083   SUBTYPE OF (binary_assembly_constraint, perpendicular_geometric_constraint);
14084END_ENTITY;
14085
14086-- IN AP242
14087ENTITY perpendicular_geometric_constraint
14088   SUBTYPE OF (explicit_geometric_constraint);
14089      SELF\explicit_constraint.constrained_elements : SET [1:?] OF linear_geometry_constraint_element;
14090      SELF\explicit_constraint.reference_elements : SET [0:2] OF linear_geometry_constraint_element;
14091   WHERE
14092      WR1:
14093         NOT ((SIZEOF(SELF\explicit_constraint.reference_elements) = 2) AND NOT ((SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements| ('STEP_MERGED_CAD_SCHEMA.LINE' IN TYPEOF(q)))) = SIZEOF(SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements)) XOR (SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements| ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(q)))) = SIZEOF(SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements))));
14094      WR2:
14095         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR (SIZEOF(SELF\explicit_constraint.constrained_elements) IN [ 2, 3 ]);
14096      WR3:
14097         NOT ((SIZEOF(SELF\explicit_constraint.reference_elements) = 0) AND (SIZEOF(SELF\explicit_constraint.constrained_elements) = 3)) AND NOT ((SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements| ('STEP_MERGED_CAD_SCHEMA.LINE' IN TYPEOF(q)))) = 3) XOR (SIZEOF(QUERY (q <* SELF\explicit_constraint.constrained_elements| ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(q)))) = 3));
14098END_ENTITY;
14099
14100ENTITY perpendicular_to
14101   SUBTYPE OF (derived_shape_aspect);
14102   WHERE
14103      WR1:
14104         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
14105END_ENTITY;
14106
14107ENTITY perpendicularity_tolerance
14108   SUBTYPE OF (geometric_tolerance_with_datum_reference);
14109END_ENTITY;
14110
14111ENTITY person;
14112      id : identifier;
14113      last_name : OPTIONAL label;
14114      first_name : OPTIONAL label;
14115      middle_names : OPTIONAL LIST [1:?] OF label;
14116      prefix_titles : OPTIONAL LIST [1:?] OF label;
14117      suffix_titles : OPTIONAL LIST [1:?] OF label;
14118   WHERE
14119      WR1:
14120         EXISTS(last_name) OR EXISTS(first_name);
14121END_ENTITY;
14122
14123-- DIFF IN AP214
14124ENTITY person_and_organization;
14125      the_person : person;
14126      the_organization : organization;
14127   DERIVE
14128      description : text := get_description_value(SELF);
14129      name : label := get_name_value(SELF);
14130   WHERE
14131      WR1:
14132         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
14133      WR2:
14134         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
14135END_ENTITY;
14136
14137-- DIFF IN AP214
14138ENTITY person_and_organization_address
14139   SUBTYPE OF (organizational_address, personal_address);
14140      SELF\organizational_address.organizations : SET [1:1] OF organization;
14141      SELF\personal_address.people : SET [1:1] OF person;
14142   WHERE
14143      WR1:
14144         SIZEOF(QUERY (pao <* USEDIN(SELF\personal_address.people[1], 'STEP_MERGED_CAD_SCHEMA.PERSON_AND_ORGANIZATION.THE_PERSON')| (pao.the_organization :=: SELF\organizational_address.organizations[1]))) = 1;
14145END_ENTITY;
14146
14147ENTITY person_and_organization_assignment
14148   ABSTRACT SUPERTYPE;
14149      assigned_person_and_organization : person_and_organization;
14150      role : person_and_organization_role;
14151END_ENTITY;
14152
14153ENTITY person_and_organization_role;
14154      name : label;
14155   DERIVE
14156      description : text := get_description_value(SELF);
14157   WHERE
14158      WR1:
14159         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
14160END_ENTITY;
14161
14162ENTITY personal_address
14163   SUBTYPE OF (address);
14164      people : SET [1:?] OF person;
14165      description : OPTIONAL text;
14166END_ENTITY;
14167
14168-- IN AP242
14169ENTITY pgc_with_dimension
14170   SUBTYPE OF (parallel_geometric_constraint);
14171      distance_value : non_negative_length_measure;
14172      negative_direction : BOOLEAN;
14173   WHERE
14174      WR1:
14175         (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
14176      WR2:
14177         SIZEOF(QUERY (q <* SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements| (SIZEOF(TYPEOF(q) * [ 'STEP_MERGED_CAD_SCHEMA.DIRECTION', 'STEP_MERGED_CAD_SCHEMA.VECTOR' ]) > 0))) = 0;
14178END_ENTITY;
14179
14180-- IN AP203e2/AP242
14181ENTITY physical_breakdown_context
14182   SUBTYPE OF (breakdown_context);
14183END_ENTITY;
14184
14185-- IN AP242
14186ENTITY physical_component
14187   SUBTYPE OF (assembly_component);
14188END_ENTITY;
14189
14190-- IN AP242
14191ENTITY physical_component_feature
14192   SUBTYPE OF (component_feature);
14193END_ENTITY;
14194
14195-- IN AP242
14196ENTITY physical_component_terminal
14197   SUBTYPE OF (component_terminal, physical_component_feature);
14198END_ENTITY;
14199
14200-- IN AP203e2/AP242
14201ENTITY physical_element_usage
14202   SUBTYPE OF (breakdown_element_usage);
14203END_ENTITY;
14204
14205-- IN AP214
14206ENTITY physically_modelled_product_definition
14207   SUBTYPE OF (product_definition_with_associated_documents);
14208   WHERE
14209      wr1:
14210         SELF.frame_of_reference\application_context_element.name = 'physical model occurrence';
14211      wr2:
14212         (SIZEOF(documentation_ids) = 1) AND (SIZEOF(QUERY (d <* documentation_ids| (SIZEOF(QUERY (drt <* d.representation_types| (drt.name = 'physical'))) = 1))) = 1);
14213END_ENTITY;
14214
14215-- IN AP203e2/AP242
14216ENTITY picture_representation
14217   SUBTYPE OF (presentation_view);
14218      SELF\representation.items : SET [2:?] OF picture_representation_item_select;
14219   INVERSE
14220      size : presentation_size FOR unit;
14221   WHERE
14222      WR1:
14223         SIZEOF(QUERY (item <* items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(item)))) = 1;
14224      WR2:
14225         SIZEOF(QUERY (se <* QUERY (item <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(item)))| NOT ('STEP_MERGED_CAD_SCHEMA.PICTURE_REPRESENTATION_ITEM' IN TYPEOF(se\styled_item.item)))) = 0;
14226END_ENTITY;
14227
14228-- IN AP203e2/AP242
14229ENTITY picture_representation_item
14230   ABSTRACT SUPERTYPE OF (ONEOF(externally_defined_picture_representation_item, predefined_picture_representation_item))
14231   SUBTYPE OF (bytes_representation_item);
14232END_ENTITY;
14233
14234-- DIFF IN AP214
14235ENTITY placed_datum_target_feature
14236   SUBTYPE OF (datum_target);
14237   DERIVE
14238      representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF);
14239   WHERE
14240      WR1:
14241         SELF.description IN [ 'point', 'line', 'rectangle', 'circle', 'circular curve' ];
14242      WR2:
14243         SIZEOF(QUERY (pdr <* representation_associations| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1;
14244      WR3:
14245         valid_datum_target_parameters(SELF);
14246END_ENTITY;
14247
14248ENTITY placed_feature
14249   SUBTYPE OF (shape_aspect);
14250END_ENTITY;
14251
14252ENTITY placement
14253   SUPERTYPE OF (ONEOF(axis1_placement, axis2_placement_2d, axis2_placement_3d))
14254   SUBTYPE OF (geometric_representation_item);
14255      location : cartesian_point;
14256END_ENTITY;
14257
14258ENTITY planar_box
14259   SUBTYPE OF (planar_extent);
14260      placement : axis2_placement;
14261END_ENTITY;
14262
14263-- DIFF IN AP214
14264-- IN AP214/AP242
14265ENTITY planar_curve_pair
14266   SUPERTYPE OF (ONEOF(sliding_curve_pair, rolling_curve_pair) ANDOR planar_curve_pair_range)
14267   SUBTYPE OF (high_order_kinematic_pair);
14268      curve_1 : curve;
14269      curve_2 : curve;
14270      orientation : BOOLEAN;
14271   WHERE
14272      WR1:
14273         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (curve_1 IN r.items))) = 0;
14274      WR2:
14275         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_2| NOT (curve_2 IN r.items))) = 0;
14276      WR3:
14277         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
14278END_ENTITY;
14279
14280-- DIFF IN AP214
14281-- IN AP214/AP242
14282ENTITY planar_curve_pair_range
14283   SUBTYPE OF (planar_curve_pair);
14284      range_on_curve_1 : trimmed_curve;
14285      range_on_curve_2 : trimmed_curve;
14286   WHERE
14287      WR1:
14288         SELF\planar_curve_pair.curve_1 :=: range_on_curve_1.basis_curve;
14289      WR2:
14290         SELF\planar_curve_pair.curve_2 :=: range_on_curve_2.basis_curve;
14291      WR3:
14292         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (range_on_curve_1 IN r.items))) = 0;
14293      WR4:
14294         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_2| NOT (range_on_curve_2 IN r.items))) = 0;
14295END_ENTITY;
14296
14297ENTITY planar_extent
14298   SUBTYPE OF (geometric_representation_item);
14299      size_in_x : length_measure;
14300      size_in_y : length_measure;
14301END_ENTITY;
14302
14303-- DIFF IN AP214
14304-- IN AP214/AP242
14305ENTITY planar_pair
14306   SUBTYPE OF (low_order_kinematic_pair);
14307   DERIVE
14308      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
14309      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
14310      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
14311      SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
14312      SELF\low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
14313      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
14314END_ENTITY;
14315
14316-- IN AP214
14317ENTITY planar_pair_range
14318   SUBTYPE OF (simple_pair_range);
14319      SELF\simple_pair_range.applies_to_pair : planar_pair;
14320      lower_limit_actual_rotation : rotational_range_measure;
14321      upper_limit_actual_rotation : rotational_range_measure;
14322      lower_limit_actual_translation_x : translational_range_measure;
14323      upper_limit_actual_translation_x : translational_range_measure;
14324      lower_limit_actual_translation_y : translational_range_measure;
14325      upper_limit_actual_translation_y : translational_range_measure;
14326   WHERE
14327      wr1:
14328         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation))) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
14329      wr2:
14330         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_translation_x)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_translation_x))) XOR (lower_limit_actual_translation_x < upper_limit_actual_translation_x);
14331      wr3:
14332         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_translation_y)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_translation_y))) XOR (lower_limit_actual_translation_y < upper_limit_actual_translation_y);
14333END_ENTITY;
14334
14335-- DIFF IN AP214
14336-- IN AP214/AP242
14337ENTITY planar_pair_value
14338   SUBTYPE OF (pair_value);
14339      actual_rotation : plane_angle_measure;
14340      actual_translation_x : length_measure;
14341      actual_translation_y : length_measure;
14342      SELF\pair_value.applies_to_pair : planar_pair;
14343END_ENTITY;
14344
14345-- IN AP242
14346ENTITY planar_pair_with_range
14347   SUBTYPE OF (planar_pair);
14348      lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
14349      upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
14350      lower_limit_actual_translation_x : OPTIONAL length_measure;
14351      upper_limit_actual_translation_x : OPTIONAL length_measure;
14352      lower_limit_actual_translation_y : OPTIONAL length_measure;
14353      upper_limit_actual_translation_y : OPTIONAL length_measure;
14354   WHERE
14355      WR1:
14356         (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
14357      WR2:
14358         (NOT EXISTS(lower_limit_actual_translation_x) OR NOT EXISTS(upper_limit_actual_translation_x)) XOR (lower_limit_actual_translation_x < upper_limit_actual_translation_x);
14359      WR3:
14360         (NOT EXISTS(lower_limit_actual_translation_y) OR NOT EXISTS(upper_limit_actual_translation_y)) XOR (lower_limit_actual_translation_y < upper_limit_actual_translation_y);
14361END_ENTITY;
14362
14363-- IN AP214/AP242
14364ENTITY planar_shape_representation
14365   SUBTYPE OF (shape_representation);
14366   WHERE
14367      WR1:
14368         SIZEOF(SELF.items) = 1;
14369      WR2:
14370         SIZEOF(QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(it)))) = 1;
14371END_ENTITY;
14372
14373ENTITY plane
14374   SUBTYPE OF (elementary_surface);
14375END_ENTITY;
14376
14377-- IN AP242
14378ENTITY plane_angle_and_length_pair
14379   SUBTYPE OF (founded_item);
14380      plane_angle_value : plane_angle_measure;
14381      length_value : length_measure;
14382END_ENTITY;
14383
14384-- IN AP242
14385ENTITY plane_angle_and_ratio_pair
14386   SUBTYPE OF (founded_item);
14387      plane_angle_value : plane_angle_measure;
14388      ratio_value : ratio_measure;
14389END_ENTITY;
14390
14391ENTITY plane_angle_measure_with_unit
14392   SUBTYPE OF (measure_with_unit);
14393   WHERE
14394      WR1:
14395         'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
14396END_ENTITY;
14397
14398ENTITY plane_angle_unit
14399   SUBTYPE OF (named_unit);
14400   WHERE
14401      WR1:
14402         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
14403END_ENTITY;
14404
14405-- IN AP214/AP242
14406ENTITY plus_expression
14407   SUBTYPE OF (multiple_arity_numeric_expression);
14408END_ENTITY;
14409
14410-- CASE DIFF IN AP214
14411ENTITY plus_minus_tolerance;
14412      range : tolerance_method_definition;
14413      toleranced_dimension : dimensional_characteristic;
14414   UNIQUE
14415      UR1 : toleranced_dimension;
14416END_ENTITY;
14417
14418-- IN AP203e2
14419ENTITY ply_laminate_definition
14420   SUBTYPE OF (product_definition);
14421   WHERE
14422      WR1:
14423         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) = 1;
14424END_ENTITY;
14425
14426-- IN AP203e2/AP242
14427ENTITY ply_laminate_sequence_definition
14428   SUBTYPE OF (product_definition);
14429   WHERE
14430      WR1:
14431         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) > 0;
14432END_ENTITY;
14433
14434-- IN AP203e2/AP242
14435ENTITY ply_laminate_table
14436   SUBTYPE OF (part_laminate_table);
14437END_ENTITY;
14438
14439-- IN AP214/AP242
14440ENTITY pocket
14441   SUBTYPE OF (feature_definition);
14442   WHERE
14443      WR1:
14444         SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular', 'complex', 'circular cutout', 'complex cutout', 'recess' ];
14445      WR2:
14446         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'pocket depth occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((sar.description = 'path feature component usage') AND (sar.name = 'pocket depth')) AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear'))) = 1))) = 1))) = 0;
14447      WR3:
14448         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1;
14449      WR4:
14450         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((1 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 2)))) = 1))) = 1;
14451      WR5:
14452         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (srwp_i.name = 'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
14453      WR6:
14454         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) = 0;
14455      WR7:
14456         NOT (SELF\characterized_object.description IN [ 'complex', 'non-circular cutout', 'recess' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE', 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
14457      WR8:
14458         NOT (SELF\characterized_object.description = 'closed rectangular') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'closed boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
14459      WR9:
14460         NOT (SELF\characterized_object.description = 'open rectangular') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'open boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
14461      WR10:
14462         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'pocket bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.POCKET_BOTTOM' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))) = 0;
14463      WR11:
14464         NOT (SELF\characterized_object.description IN [ 'complex', 'non-circular cutout', 'recess' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (fcr.related_shape_aspect.description IN [ 'angle taper', 'directed taper' ]))) = 1))) <= 1))) = 0);
14465      WR12:
14466         NOT (SELF\characterized_object.description = 'circular cutout') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
14467      WR13:
14468         NOT (SELF\characterized_object.description IN [ 'circular cutout', 'complex cutout' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'pocket bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.POCKET_BOTTOM' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (sdr.relating_shape_aspect.description = 'through'))) = 1))) = 1))) = 0);
14469      WR14:
14470         NOT (SELF\characterized_object.description = 'recess') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'pocket bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.POCKET_BOTTOM' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition))) AND (sdr.relating_shape_aspect.description IN [ 'planar', 'complex' ]))) = 1))) = 1))) = 0);
14471      WR15:
14472         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
14473      WR16:
14474         NOT (SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular', 'complex', 'recess' ]) OR (SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOSS', 'STEP_MERGED_CAD_SCHEMA.PROTRUSION' ] * TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1);
14475      WR17:
14476         NOT (SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND (fcr.related_shape_aspect.description IN [ 'angle taper', 'directed taper' ]))) >= 1))) <= 1))) = 0);
14477END_ENTITY;
14478
14479-- IN AP214/AP242
14480ENTITY pocket_bottom
14481   SUBTYPE OF (shape_aspect);
14482   WHERE
14483      WR1:
14484         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
14485      WR2:
14486         SELF.description IN [ 'planar', 'complex', 'through' ];
14487      WR3:
14488         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor normal'))) = 1))) = 0);
14489      WR4:
14490         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor location'))) = 1))) = 0);
14491      WR5:
14492         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor face'))) = 1))) = 0);
14493      WR6:
14494         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
14495      WR7:
14496         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) <= 1))) = 0))) = 0);
14497      WR8:
14498         NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
14499      WR9:
14500         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0);
14501      WR10:
14502         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'pocket bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND ('STEP_MERGED_CAD_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('STEP_MERGED_CAD_SCHEMA.POCKET_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
14503      WR11:
14504         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'pocket bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (fcr.related_shape_aspect.description = 'bottom condition occurrence') AND (fcr.related_shape_aspect.name IN [ 'pocket depth start', 'pocket depth end' ]))) = 0);
14505END_ENTITY;
14506
14507-- IN AP242
14508ENTITY pogc_with_dimension
14509   SUBTYPE OF (parallel_offset_geometric_constraint);
14510      offset_value : positive_length_measure;
14511      offset_direction_constrained : BOOLEAN;
14512   WHERE
14513      WR1:
14514         (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
14515      WR2:
14516         NOT (offset_direction_constrained = TRUE) AND ((offset_type = curve_2d_offset) OR (offset_type = surface_offset));
14517END_ENTITY;
14518
14519ENTITY point
14520   SUPERTYPE OF (ONEOF(cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve))
14521   SUBTYPE OF (geometric_representation_item);
14522END_ENTITY;
14523
14524-- IN AP203e2/AP242
14525ENTITY point_and_vector
14526   SUBTYPE OF (compound_representation_item, geometric_representation_item);
14527      SELF\compound_representation_item.item_element : point_and_vector_members;
14528END_ENTITY;
14529
14530-- IN AP242
14531ENTITY point_distance_geometric_constraint
14532   SUBTYPE OF (explicit_geometric_constraint);
14533      SELF\explicit_constraint.constrained_elements : SET [1:?] OF point;
14534      SELF\explicit_constraint.reference_elements : SET [0:4] OF point_curve_or_surface_constraint_element;
14535   WHERE
14536      WR1:
14537         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR ('STEP_MERGED_CAD_SCHEMA.PDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
14538END_ENTITY;
14539
14540ENTITY point_on_curve
14541   SUBTYPE OF (point);
14542      basis_curve : curve;
14543      point_parameter : parameter_value;
14544END_ENTITY;
14545
14546-- IN AP242
14547ENTITY point_on_edge_curve
14548   SUBTYPE OF (point_on_curve);
14549      basis_edge_curve : edge_curve;
14550   DERIVE
14551      SELF\point_on_curve.basis_curve : curve := SELF.basis_edge_curve.edge_geometry;
14552   WHERE
14553      WR1:
14554         SIZEOF(using_representations(SELF.basis_edge_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
14555END_ENTITY;
14556
14557-- IN AP242
14558ENTITY point_on_face_surface
14559   SUBTYPE OF (point_on_surface);
14560      basis_face_surface : face_surface;
14561   DERIVE
14562      SELF\point_on_surface.basis_surface : surface := SELF.basis_face_surface.face_geometry;
14563   WHERE
14564      WR1:
14565         SIZEOF(using_representations(SELF.basis_face_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
14566END_ENTITY;
14567
14568-- DIFF IN AP214
14569-- IN AP214/AP242
14570ENTITY point_on_planar_curve_pair
14571   SUBTYPE OF (high_order_kinematic_pair);
14572      pair_curve : curve;
14573      orientation : BOOLEAN;
14574   WHERE
14575      WR1:
14576         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (pair_curve IN r.items))) = 0;
14577      WR2:
14578         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
14579END_ENTITY;
14580
14581-- IN AP214
14582ENTITY point_on_planar_curve_pair_range
14583   SUBTYPE OF (simple_pair_range);
14584      SELF\simple_pair_range.applies_to_pair : point_on_planar_curve_pair;
14585      range_on_pair_curve : trimmed_curve;
14586      lower_limit_yaw : rotational_range_measure;
14587      upper_limit_yaw : rotational_range_measure;
14588      lower_limit_pitch : rotational_range_measure;
14589      upper_limit_pitch : rotational_range_measure;
14590      lower_limit_roll : rotational_range_measure;
14591      upper_limit_roll : rotational_range_measure;
14592   WHERE
14593      wr1:
14594         SELF\simple_pair_range.applies_to_pair\point_on_planar_curve_pair.pair_curve :=: range_on_pair_curve.basis_curve;
14595      wr2:
14596         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw))) XOR (lower_limit_yaw < upper_limit_yaw);
14597      wr3:
14598         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch))) XOR (lower_limit_pitch < upper_limit_pitch);
14599      wr4:
14600         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll))) XOR (lower_limit_roll < upper_limit_roll);
14601END_ENTITY;
14602
14603-- DIFF IN AP214
14604-- IN AP214/AP242
14605ENTITY point_on_planar_curve_pair_value
14606   SUBTYPE OF (pair_value);
14607      actual_point_on_curve : point_on_curve;
14608      input_orientation : spatial_rotation;
14609      SELF\pair_value.applies_to_pair : point_on_planar_curve_pair;
14610   DERIVE
14611      actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair, input_orientation);
14612   WHERE
14613      WR1:
14614         SELF\pair_value.applies_to_pair\point_on_planar_curve_pair.pair_curve :=: actual_point_on_curve.basis_curve;
14615END_ENTITY;
14616
14617-- IN AP242
14618ENTITY point_on_planar_curve_pair_with_range
14619   SUBTYPE OF (point_on_planar_curve_pair);
14620      range_on_pair_curve : trimmed_curve;
14621      lower_limit_yaw : OPTIONAL plane_angle_measure;
14622      upper_limit_yaw : OPTIONAL plane_angle_measure;
14623      lower_limit_pitch : OPTIONAL plane_angle_measure;
14624      upper_limit_pitch : OPTIONAL plane_angle_measure;
14625      lower_limit_roll : OPTIONAL plane_angle_measure;
14626      upper_limit_roll : OPTIONAL plane_angle_measure;
14627   WHERE
14628      WR1:
14629         (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
14630      WR2:
14631         (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
14632      WR3:
14633         (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
14634      WR4:
14635         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (range_on_pair_curve IN r.items))) = 0;
14636END_ENTITY;
14637
14638ENTITY point_on_surface
14639   SUBTYPE OF (point);
14640      basis_surface : surface;
14641      point_parameter_u : parameter_value;
14642      point_parameter_v : parameter_value;
14643END_ENTITY;
14644
14645-- DIFF IN AP214
14646-- IN AP214/AP242
14647ENTITY point_on_surface_pair
14648   SUBTYPE OF (high_order_kinematic_pair);
14649      pair_surface : surface;
14650   WHERE
14651      WR1:
14652         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (pair_surface IN r.items))) = 0;
14653      WR2:
14654         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
14655END_ENTITY;
14656
14657-- IN AP214
14658ENTITY point_on_surface_pair_range
14659   SUBTYPE OF (simple_pair_range);
14660      SELF\simple_pair_range.applies_to_pair : point_on_surface_pair;
14661      range_on_pair_surface : rectangular_trimmed_surface;
14662      lower_limit_yaw : rotational_range_measure;
14663      upper_limit_yaw : rotational_range_measure;
14664      lower_limit_pitch : rotational_range_measure;
14665      upper_limit_pitch : rotational_range_measure;
14666      lower_limit_roll : rotational_range_measure;
14667      upper_limit_roll : rotational_range_measure;
14668   WHERE
14669      wr1:
14670         SELF\simple_pair_range.applies_to_pair\point_on_surface_pair.pair_surface :=: range_on_pair_surface.basis_surface;
14671      wr2:
14672         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw))) XOR (lower_limit_yaw < upper_limit_yaw);
14673      wr3:
14674         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch))) XOR (lower_limit_pitch < upper_limit_pitch);
14675      wr4:
14676         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll))) XOR (lower_limit_roll < upper_limit_roll);
14677END_ENTITY;
14678
14679-- DIFF IN AP214
14680-- IN AP214/AP242
14681ENTITY point_on_surface_pair_value
14682   SUBTYPE OF (pair_value);
14683      actual_point_on_surface : point_on_surface;
14684      input_orientation : spatial_rotation;
14685      SELF\pair_value.applies_to_pair : point_on_surface_pair;
14686   DERIVE
14687      actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair, input_orientation);
14688   WHERE
14689      WR1:
14690         SELF\pair_value.applies_to_pair\point_on_surface_pair.pair_surface :=: actual_point_on_surface.basis_surface;
14691END_ENTITY;
14692
14693-- IN AP242
14694ENTITY point_on_surface_pair_with_range
14695   SUBTYPE OF (point_on_surface_pair);
14696      range_on_pair_surface : rectangular_trimmed_surface;
14697      lower_limit_yaw : OPTIONAL plane_angle_measure;
14698      upper_limit_yaw : OPTIONAL plane_angle_measure;
14699      lower_limit_pitch : OPTIONAL plane_angle_measure;
14700      upper_limit_pitch : OPTIONAL plane_angle_measure;
14701      lower_limit_roll : OPTIONAL plane_angle_measure;
14702      upper_limit_roll : OPTIONAL plane_angle_measure;
14703   WHERE
14704      WR1:
14705         (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
14706      WR2:
14707         (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
14708      WR3:
14709         (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
14710      WR4:
14711         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (range_on_pair_surface IN r.items))) = 0;
14712END_ENTITY;
14713
14714-- IN AP203e2/AP242
14715ENTITY point_path
14716   SUBTYPE OF (compound_representation_item, geometric_representation_item);
14717      SELF\compound_representation_item.item_element : point_path_members;
14718END_ENTITY;
14719
14720-- DIFF IN AP214
14721-- IN AP214/AP242
14722ENTITY point_placement_shape_representation
14723   SUBTYPE OF (shape_representation);
14724      SELF\representation.items : SET [1:?] OF point_placement_shape_representation_item;
14725   WHERE
14726      WR1:
14727         SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.COMPOUND_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(i)) = 1))) > 0;
14728END_ENTITY;
14729
14730ENTITY point_replica
14731   SUBTYPE OF (point);
14732      parent_pt : point;
14733      transformation : cartesian_transformation_operator;
14734   WHERE
14735      WR1:
14736         transformation.dim = parent_pt.dim;
14737      WR2:
14738         acyclic_point_replica(SELF, parent_pt);
14739END_ENTITY;
14740
14741ENTITY point_style
14742   SUBTYPE OF (founded_item);
14743      name : label;
14744      marker : marker_select;
14745      marker_size : size_select;
14746      marker_colour : colour;
14747END_ENTITY;
14748
14749-- IN AP242
14750ENTITY point_to_point_path
14751   SUBTYPE OF (path_node);
14752   DERIVE
14753      SELF\kinematic_path_segment.transition : transition_code := discontinuous;
14754END_ENTITY;
14755
14756-- IN AP203e2
14757ENTITY polar_complex_number_literal
14758   SUBTYPE OF (generic_literal);
14759      radius : REAL;
14760      angle : REAL;
14761   WHERE
14762      WR1:
14763         radius >= 0;
14764      WR2:
14765         (0 <= angle) AND (angle < 2 * 3.14159);
14766END_ENTITY;
14767
14768-- IN AP242
14769ENTITY polar_complex_number_region
14770   SUBTYPE OF (maths_space, generic_literal);
14771      centre : complex_number_literal;
14772      distance_constraint : real_interval;
14773      direction_constraint : finite_real_interval;
14774   WHERE
14775      WR1:
14776         min_exists(distance_constraint) AND (real_min(distance_constraint) >= 0.0);
14777      WR2:
14778         (-3.14159 <= direction_constraint.min) AND (direction_constraint.min < 3.14159);
14779      WR3:
14780         direction_constraint.max - direction_constraint.min <= 2.0 * 3.14159;
14781      WR4:
14782         (direction_constraint.max - direction_constraint.min < 2.0 * 3.14159) OR (direction_constraint.min_closure = open);
14783      WR5:
14784         ((direction_constraint.max - direction_constraint.min < 2.0 * 3.14159) OR (direction_constraint.max_closure = open)) OR (direction_constraint.min = -3.14159);
14785      WR6:
14786         (((real_min(distance_constraint) > 0.0) OR max_exists(distance_constraint)) OR (direction_constraint.max - direction_constraint.min < 2.0 * 3.14159)) OR (direction_constraint.max_closure = open);
14787END_ENTITY;
14788
14789ENTITY poly_loop
14790   SUBTYPE OF (loop, geometric_representation_item);
14791      polygon : LIST [3:?] OF UNIQUE cartesian_point;
14792END_ENTITY;
14793
14794-- IN AP242
14795ENTITY polygonal_area
14796   SUBTYPE OF (primitive_2d);
14797      bounds : LIST [3:?] OF UNIQUE cartesian_point;
14798END_ENTITY;
14799
14800ENTITY polyline
14801   SUBTYPE OF (bounded_curve);
14802      points : LIST [2:?] OF cartesian_point;
14803END_ENTITY;
14804
14805ENTITY position_tolerance
14806   SUBTYPE OF (geometric_tolerance);
14807END_ENTITY;
14808
14809-- IN AP203e2/AP242
14810ENTITY positioned_sketch
14811   SUBTYPE OF (geometric_representation_item);
14812      sketch_basis : sketch_basis_select;
14813      auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item;
14814   WHERE
14815      WR1:
14816         NOT (('STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(sketch_basis)) AND NOT ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sketch_basis\curve_bounded_surface.basis_surface)));
14817      WR2:
14818         NOT (('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND NOT ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry)));
14819      WR3:
14820         SIZEOF(QUERY (q <* auxiliary_elements| (SIZEOF(TYPEOF(q) * [ 'STEP_MERGED_CAD_SCHEMA.POINT', 'STEP_MERGED_CAD_SCHEMA.CURVE' ]) = 0))) = 0;
14821      WR4:
14822         SIZEOF(QUERY (q <* auxiliary_elements| (q\geometric_representation_item.dim <> 3))) = 0;
14823END_ENTITY;
14824
14825-- IN AP214/AP242
14826ENTITY power_expression
14827   SUBTYPE OF (binary_numeric_expression);
14828END_ENTITY;
14829
14830-- IN AP203e2/AP242
14831ENTITY power_measure_with_unit
14832   SUBTYPE OF (measure_with_unit);
14833   WHERE
14834      WR1:
14835         'STEP_MERGED_CAD_SCHEMA.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
14836END_ENTITY;
14837
14838-- IN AP203e2/AP242
14839ENTITY power_unit
14840   SUBTYPE OF (derived_unit);
14841   WHERE
14842      WR1:
14843         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.watt);
14844END_ENTITY;
14845
14846-- IN AP242
14847ENTITY pre_defined_character_glyph
14848   SUBTYPE OF (pre_defined_item);
14849END_ENTITY;
14850
14851ENTITY pre_defined_colour
14852   SUBTYPE OF (pre_defined_item, colour);
14853END_ENTITY;
14854
14855ENTITY pre_defined_curve_font
14856   SUBTYPE OF (pre_defined_item);
14857END_ENTITY;
14858
14859ENTITY pre_defined_dimension_symbol
14860   SUBTYPE OF (pre_defined_symbol);
14861   WHERE
14862      WR1:
14863         SELF.name IN [ 'arc length', 'conical taper', 'counterbore', 'countersink', 'depth', 'diameter', 'plus minus', 'radius', 'slope', 'spherical diameter', 'spherical radius', 'square' ];
14864END_ENTITY;
14865
14866ENTITY pre_defined_geometrical_tolerance_symbol
14867   SUBTYPE OF (pre_defined_symbol);
14868   WHERE
14869      WR1:
14870         SELF.name IN [ 'angularity', 'basic dimension', 'blanked datum reference', 'circular runout', 'circularity', 'concentricity', 'cylindricity', 'datum target identification', 'diameter', 'filled datum reference', 'flatness', 'least material condition', 'maximum material condition', 'parallelism', 'perpendicularity', 'position', 'profile of a line', 'profile of a surface', 'projected tolerance zone', 'regardless of feature size', 'straightness', 'symmetry', 'total runout' ];
14871END_ENTITY;
14872
14873ENTITY pre_defined_item;
14874      name : label;
14875END_ENTITY;
14876
14877ENTITY pre_defined_marker
14878   SUBTYPE OF (pre_defined_item);
14879END_ENTITY;
14880
14881ENTITY pre_defined_point_marker_symbol
14882   SUBTYPE OF (pre_defined_marker, pre_defined_symbol);
14883   WHERE
14884      WR1:
14885         SELF.name IN [ 'asterisk', 'circle', 'dot', 'plus', 'square', 'triangle', 'x' ];
14886END_ENTITY;
14887
14888-- IN AP214
14889ENTITY pre_defined_presentation_style
14890   SUBTYPE OF (founded_item, pre_defined_item);
14891END_ENTITY;
14892
14893ENTITY pre_defined_surface_condition_symbol
14894   SUBTYPE OF (pre_defined_symbol);
14895   WHERE
14896      WR1:
14897         SELF.name IN [ '000', '010', '020', '030', '040', '050', '060', '070', '001', '011', '021', '031', '041', '051', '061', '071', '100', '110', '120', '130', '140', '150', '160', '170', '101', '111', '121', '131', '141', '151', '161', '171', '200', '210', '220', '230', '240', '250', '260', '270', '201', '211', '221', '231', '241', '251', '261', '271' ];
14898END_ENTITY;
14899
14900-- IN AP203e2/AP242
14901ENTITY pre_defined_surface_side_style
14902   SUBTYPE OF (pre_defined_item);
14903END_ENTITY;
14904
14905ENTITY pre_defined_symbol
14906   SUBTYPE OF (pre_defined_item);
14907END_ENTITY;
14908
14909ENTITY pre_defined_terminator_symbol
14910   SUBTYPE OF (pre_defined_symbol);
14911   WHERE
14912      WR1:
14913         SELF.name IN [ 'blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle', 'filled triangle' ];
14914END_ENTITY;
14915
14916ENTITY pre_defined_text_font
14917   SUBTYPE OF (pre_defined_item);
14918END_ENTITY;
14919
14920-- IN AP203e2/AP242
14921ENTITY pre_defined_tile
14922   SUBTYPE OF (pre_defined_item);
14923END_ENTITY;
14924
14925ENTITY precision_qualifier;
14926      precision_value : INTEGER;
14927END_ENTITY;
14928
14929-- IN AP203e2/AP242
14930ENTITY predefined_picture_representation_item
14931   SUBTYPE OF (picture_representation_item);
14932   WHERE
14933      WR1:
14934         SELF\representation_item.name IN pre_defined_picture_representation_types;
14935END_ENTITY;
14936
14937-- IN AP242
14938ENTITY prescribed_path
14939   SUBTYPE OF (link_motion_representation_along_path);
14940      controlling_joints : OPTIONAL SET [1:6] OF kinematic_joint;
14941END_ENTITY;
14942
14943ENTITY presentation_area
14944   SUBTYPE OF (presentation_representation);
14945   WHERE
14946      WR1:
14947         (SIZEOF(QUERY (ais <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'AREA_IN_SET.AREA')| (SIZEOF(USEDIN(ais, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')) = 1))) > 0) OR (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_SIZE.UNIT')) = 1);
14948END_ENTITY;
14949
14950ENTITY presentation_layer_assignment;
14951      name : label;
14952      description : text;
14953      assigned_items : SET [1:?] OF layered_item;
14954END_ENTITY;
14955
14956ENTITY presentation_representation
14957   SUPERTYPE OF (ONEOF(presentation_area, presentation_view))
14958   SUBTYPE OF (representation);
14959      SELF\representation.context_of_items : geometric_representation_context;
14960   WHERE
14961      WR1:
14962         SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
14963      WR2:
14964         (('STEP_MERGED_CAD_SCHEMA.PRESENTATION_AREA' IN TYPEOF(SELF)) OR (SIZEOF(QUERY (prr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_2')| ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_REPRESENTATION' IN TYPEOF(prr\representation_relationship.rep_1)))) > 0)) OR (SIZEOF(QUERY (rm <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_MAP.' + 'MAPPED_REPRESENTATION')| (SIZEOF(QUERY (mi <* USEDIN(rm, 'STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM.' + 'MAPPING_SOURCE')| (SIZEOF(QUERY (rep <* using_representations(mi)| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_REPRESENTATION' IN TYPEOF(rep)))) > 0))) > 0))) > 0);
14965END_ENTITY;
14966
14967ENTITY presentation_set;
14968   INVERSE
14969      areas : SET [1:?] OF area_in_set FOR in_set;
14970END_ENTITY;
14971
14972-- CASE DIFF IN AP214
14973ENTITY presentation_size;
14974      unit : presentation_size_assignment_select;
14975      size : planar_box;
14976   UNIQUE
14977      UR1 : unit;
14978   WHERE
14979      WR1:
14980         ('STEP_MERGED_CAD_SCHEMA.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF.unit)) AND item_in_context(SELF.size, SELF.unit\representation.context_of_items) OR ('STEP_MERGED_CAD_SCHEMA.AREA_IN_SET' IN TYPEOF(SELF.unit)) AND (SIZEOF(QUERY (ais <* SELF.unit\area_in_set.in_set.areas| NOT item_in_context(SELF.size, ais.area\representation.context_of_items))) = 0);
14981END_ENTITY;
14982
14983ENTITY presentation_style_assignment
14984   SUBTYPE OF (founded_item);
14985      styles : SET [1:?] OF presentation_style_select;
14986   WHERE
14987      WR1:
14988         SIZEOF(QUERY (style1 <* SELF.styles| NOT (SIZEOF(QUERY (style2 <* SELF.styles - style1| NOT ((TYPEOF(style1) <> TYPEOF(style2)) OR (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_STYLE_USAGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_STYLE') ] * TYPEOF(style1)) = 1)))) = 0))) = 0;
14989      WR2:
14990         SIZEOF(QUERY (style1 <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(style1)))) <= 2;
14991      WR3:
14992         SIZEOF(QUERY (style1 <* SELF.styles| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(style1)) AND (SIZEOF(QUERY (style2 <* SELF.styles - style1| ('STEP_MERGED_CAD_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(style2)) AND (((style1\surface_style_usage.side = both) OR (style2\surface_style_usage.side = both)) OR (style1\surface_style_usage.side = style2\surface_style_usage.side)))) > 0))) = 0;
14993END_ENTITY;
14994
14995ENTITY presentation_style_by_context
14996   SUBTYPE OF (presentation_style_assignment);
14997      style_context : style_context_select;
14998END_ENTITY;
14999
15000ENTITY presentation_view
15001   SUBTYPE OF (presentation_representation);
15002END_ENTITY;
15003
15004ENTITY presented_item
15005   ABSTRACT SUPERTYPE;
15006END_ENTITY;
15007
15008ENTITY presented_item_representation;
15009      presentation : presentation_representation_select;
15010      item : presented_item;
15011END_ENTITY;
15012
15013-- IN AP203e2/AP242
15014ENTITY pressure_measure_with_unit
15015   SUBTYPE OF (measure_with_unit);
15016   WHERE
15017      WR1:
15018         'STEP_MERGED_CAD_SCHEMA.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15019END_ENTITY;
15020
15021-- IN AP203e2/AP242
15022ENTITY pressure_unit
15023   SUBTYPE OF (derived_unit);
15024   WHERE
15025      WR1:
15026         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.pascal);
15027END_ENTITY;
15028
15029-- IN AP242
15030ENTITY previous_change_element_assignment
15031   SUBTYPE OF (group_assignment);
15032      items : SET [1:?] OF change_management_object;
15033      SELF\group_assignment.assigned_group : previous_element_assignment_select;
15034END_ENTITY;
15035
15036-- IN AP242
15037ENTITY primitive_2d
15038   SUPERTYPE OF (ONEOF(circular_area, elliptic_area, rectangular_area, polygonal_area, half_space_2d))
15039   SUBTYPE OF (geometric_representation_item);
15040   WHERE
15041      WR1:
15042         SELF\geometric_representation_item.dim = 2;
15043END_ENTITY;
15044
15045-- IN AP242
15046ENTITY primitive_2d_with_inner_boundary
15047   SUBTYPE OF (complex_area, compound_representation_item);
15048   DERIVE
15049      inner_boundary : compound_inner_area_boundary := SELF\compound_representation_item.item_element;
15050   WHERE
15051      WR1:
15052         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_AREA', 'STEP_MERGED_CAD_SCHEMA.ELLIPTIC_AREA', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_AREA', 'STEP_MERGED_CAD_SCHEMA.POLYGONAL_AREA', 'STEP_MERGED_CAD_SCHEMA.AREA_WITH_OUTER_BOUNDARY', 'STEP_MERGED_CAD_SCHEMA.PATH_AREA_WITH_PARAMETERS' ] * TYPEOF(SELF)) > 0;
15053      WR2:
15054         SIZEOF(QUERY (inner <* inner_boundary| ('STEP_MERGED_CAD_SCHEMA.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN TYPEOF(inner)))) = 0;
15055      WR3:
15056         open_path_based_inner_boundary(inner_boundary);
15057END_ENTITY;
15058
15059-- DIFF IN AP214
15060-- IN AP214/AP242
15061ENTITY prismatic_pair
15062   SUBTYPE OF (low_order_kinematic_pair);
15063   DERIVE
15064      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
15065      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
15066      SELF\low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
15067      SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
15068      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
15069      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
15070END_ENTITY;
15071
15072-- IN AP214
15073ENTITY prismatic_pair_range
15074   SUBTYPE OF (simple_pair_range);
15075      SELF\simple_pair_range.applies_to_pair : prismatic_pair;
15076      lower_limit_actual_translation : translational_range_measure;
15077      upper_limit_actual_translation : translational_range_measure;
15078   WHERE
15079      wr1:
15080         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_translation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_translation))) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
15081END_ENTITY;
15082
15083-- DIFF IN AP214
15084-- IN AP214/AP242
15085ENTITY prismatic_pair_value
15086   SUBTYPE OF (pair_value);
15087      actual_translation : length_measure;
15088      SELF\pair_value.applies_to_pair : prismatic_pair;
15089END_ENTITY;
15090
15091-- IN AP242
15092ENTITY prismatic_pair_with_range
15093   SUBTYPE OF (prismatic_pair);
15094      lower_limit_actual_translation : OPTIONAL length_measure;
15095      upper_limit_actual_translation : OPTIONAL length_measure;
15096   WHERE
15097      WR1:
15098         (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
15099END_ENTITY;
15100
15101-- IN AP203e2/AP242
15102ENTITY procedural_representation
15103   SUBTYPE OF (representation);
15104      SELF\representation.items : SET [1:?] OF procedural_representation_sequence;
15105END_ENTITY;
15106
15107-- IN AP203e2/AP242
15108ENTITY procedural_representation_sequence
15109   SUBTYPE OF (representation_item);
15110      elements : LIST [1:?] OF representation_item;
15111      suppressed_items : SET [0:?] OF representation_item;
15112      rationale : text;
15113   WHERE
15114      WR1:
15115         SIZEOF(QUERY (q <* suppressed_items| NOT (q IN elements))) = 0;
15116END_ENTITY;
15117
15118-- IN AP203e2/AP242
15119ENTITY procedural_shape_representation
15120   SUBTYPE OF (procedural_representation, shape_representation);
15121      SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence;
15122END_ENTITY;
15123
15124-- DIFF IN AP203e2
15125-- IN AP203e2/AP242
15126ENTITY procedural_shape_representation_sequence
15127   SUBTYPE OF (geometric_representation_item, procedural_representation_sequence);
15128      SELF\procedural_representation_sequence.elements : LIST [1:?] OF shape_representation_item;
15129END_ENTITY;
15130
15131-- IN AP214/AP242
15132ENTITY process_operation
15133   SUBTYPE OF (action_method);
15134   WHERE
15135      WR1:
15136         SIZEOF(QUERY (amr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_METHOD_RELATIONSHIP.' + 'RELATING_METHOD')| NOT ('STEP_MERGED_CAD_SCHEMA.PROCESS_OPERATION' IN TYPEOF(amr\action_method_relationship.related_method)) OR (SELF :=: amr\action_method_relationship.related_method))) = 0;
15137      WR2:
15138         SIZEOF(QUERY (amr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.ACTION_METHOD_RELATIONSHIP.' + 'RELATED_METHOD')| NOT ('STEP_MERGED_CAD_SCHEMA.PROCESS_OPERATION' IN TYPEOF(amr\action_method_relationship.relating_method)) OR (SELF :=: amr\action_method_relationship.relating_method))) = 0;
15139END_ENTITY;
15140
15141-- IN AP214/AP242
15142ENTITY process_plan
15143   SUBTYPE OF (action);
15144   WHERE
15145      WR1:
15146         SIZEOF(QUERY (ar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATED_ACTION')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PROCESS_PLAN', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_PROCESS_PLAN' ] * TYPEOF(ar.relating_action)) <> 1))) = 0;
15147      WR2:
15148         SIZEOF(QUERY (ar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATING_ACTION')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PROCESS_PLAN', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_PROCESS_PLAN' ] * TYPEOF(ar.related_action)) = 1) OR (ar.name = 'process operation occurrence') AND ('STEP_MERGED_CAD_SCHEMA.PROCESS_OPERATION' IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATING_ACTION'));
15149END_ENTITY;
15150
15151-- IN AP214/AP242
15152ENTITY process_product_association;
15153      name : label;
15154      description : text;
15155      defined_product : characterized_product_definition;
15156      process : product_definition_process;
15157END_ENTITY;
15158
15159-- IN AP214/AP242
15160ENTITY process_property_association;
15161      name : label;
15162      description : text;
15163      process : property_process;
15164      property_or_shape : property_or_shape_select;
15165END_ENTITY;
15166
15167ENTITY product;
15168      id : identifier;
15169      name : label;
15170      description : OPTIONAL text;
15171      frame_of_reference : SET [1:?] OF product_context;
15172END_ENTITY;
15173
15174-- IN AP242
15175ENTITY product_as_planned
15176   SUBTYPE OF (product_definition_formation);
15177END_ENTITY;
15178
15179ENTITY product_category;
15180      name : label;
15181      description : OPTIONAL text;
15182   DERIVE
15183      id : identifier := get_id_value(SELF);
15184   WHERE
15185      WR1:
15186         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
15187END_ENTITY;
15188
15189-- IN AP214/AP242
15190ENTITY product_category_relationship;
15191      name : label;
15192      description : OPTIONAL text;
15193      category : product_category;
15194      sub_category : product_category;
15195   WHERE
15196      WR1:
15197         acyclic_product_category_relationship(SELF, [ SELF.sub_category ]);
15198END_ENTITY;
15199
15200ENTITY product_class
15201   SUBTYPE OF (product_concept, characterized_object);
15202END_ENTITY;
15203
15204-- CASE DIFF IN AP214
15205ENTITY product_concept;
15206      id : identifier;
15207      name : label;
15208      description : OPTIONAL text;
15209      market_context : product_concept_context;
15210   UNIQUE
15211      UR1 : id;
15212END_ENTITY;
15213
15214ENTITY product_concept_context
15215   SUBTYPE OF (application_context_element);
15216      market_segment_type : label;
15217END_ENTITY;
15218
15219ENTITY product_concept_feature;
15220      id : identifier;
15221      name : label;
15222      description : OPTIONAL text;
15223END_ENTITY;
15224
15225ENTITY product_concept_feature_association;
15226      name : label;
15227      description : OPTIONAL text;
15228      concept : product_concept;
15229      feature : product_concept_feature;
15230END_ENTITY;
15231
15232ENTITY product_concept_feature_category
15233   SUBTYPE OF (group);
15234   WHERE
15235      WR1:
15236         SIZEOF(QUERY (aga <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP')| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) AND ((aga\group_assignment.role\object_role.name <> 'specification category member') OR (SIZEOF(QUERY (i <* aga\applied_group_assignment.items| ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF(i)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(i)))) <> SIZEOF(aga\applied_group_assignment.items))))) = 0;
15237END_ENTITY;
15238
15239-- DIFF IN AP214
15240ENTITY product_concept_feature_category_usage
15241   SUBTYPE OF (group_assignment);
15242      items : SET [1:?] OF category_usage_item;
15243      SELF\group_assignment.assigned_group : product_concept_feature_category;
15244   WHERE
15245      WR1:
15246         SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ];
15247END_ENTITY;
15248
15249ENTITY product_concept_relationship;
15250      name : label;
15251      description : OPTIONAL text;
15252      relating_product_concept : product_concept;
15253      related_product_concept : product_concept;
15254END_ENTITY;
15255
15256ENTITY product_context
15257   SUBTYPE OF (application_context_element);
15258      discipline_type : label;
15259END_ENTITY;
15260
15261-- IN AP242
15262ENTITY product_data_and_data_quality_relationship;
15263      description : text;
15264      product_data : product_definition;
15265      data_quality : data_quality_definition;
15266END_ENTITY;
15267
15268-- DIFF IN AP214
15269-- DIFF IN AP203e2
15270ENTITY product_definition
15271   SUPERTYPE OF (ONEOF(composite_assembly_sequence_definition, laminate_table, ply_laminate_sequence_definition));
15272      id : identifier;
15273      description : OPTIONAL text;
15274      formation : product_definition_formation;
15275      frame_of_reference : product_definition_context;
15276   DERIVE
15277      name : label := get_name_value(SELF);
15278   WHERE
15279      WR1:
15280         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
15281END_ENTITY;
15282
15283ENTITY product_definition_context
15284   SUBTYPE OF (application_context_element);
15285      life_cycle_stage : label;
15286END_ENTITY;
15287
15288ENTITY product_definition_context_association;
15289      definition : product_definition;
15290      frame_of_reference : product_definition_context;
15291      role : product_definition_context_role;
15292END_ENTITY;
15293
15294ENTITY product_definition_context_role;
15295      name : label;
15296      description : OPTIONAL text;
15297END_ENTITY;
15298
15299ENTITY product_definition_effectivity
15300   SUBTYPE OF (effectivity);
15301      usage : product_definition_relationship;
15302   WHERE
15303      WR1:
15304         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0;
15305END_ENTITY;
15306
15307-- IN AP203e2/AP242
15308ENTITY product_definition_element_relationship
15309   SUBTYPE OF (group);
15310END_ENTITY;
15311
15312-- CASE DIFF IN AP214
15313ENTITY product_definition_formation;
15314      id : identifier;
15315      description : OPTIONAL text;
15316      of_product : product;
15317   UNIQUE
15318      UR1 : id, of_product;
15319END_ENTITY;
15320
15321ENTITY product_definition_formation_relationship;
15322      id : identifier;
15323      name : label;
15324      description : OPTIONAL text;
15325      relating_product_definition_formation : product_definition_formation;
15326      related_product_definition_formation : product_definition_formation;
15327END_ENTITY;
15328
15329ENTITY product_definition_formation_with_specified_source
15330   SUBTYPE OF (product_definition_formation);
15331      make_or_buy : source;
15332END_ENTITY;
15333
15334-- IN AP203e2/AP242
15335ENTITY product_definition_group_assignment
15336   SUBTYPE OF (group_assignment);
15337      items : SET [1:1] OF product_definition_or_product_definition_relationship;
15338      SELF\group_assignment.assigned_group : product_definition_element_relationship;
15339END_ENTITY;
15340
15341-- IN AP242
15342ENTITY product_definition_kinematics
15343   SUBTYPE OF (property_definition);
15344      SELF\property_definition.definition : product_definition;
15345   INVERSE
15346      representation_relation : kinematic_property_definition_representation FOR definition;
15347   UNIQUE
15348      UR1 : definition;
15349END_ENTITY;
15350
15351ENTITY product_definition_occurrence_relationship;
15352      name : label;
15353      description : OPTIONAL text;
15354      occurrence : product_definition;
15355      occurrence_usage : assembly_component_usage;
15356   WHERE
15357      WR1:
15358         occurrence_usage.relating_product_definition :<>: occurrence;
15359      WR2:
15360         occurrence_usage.related_product_definition :<>: occurrence;
15361      WR3:
15362         occurrence.formation :=: occurrence_usage.related_product_definition.formation;
15363END_ENTITY;
15364
15365-- IN AP214/AP242
15366ENTITY product_definition_process
15367   SUBTYPE OF (action);
15368      identification : identifier;
15369   INVERSE
15370      product_definitions : SET [1:?] OF process_product_association FOR process;
15371END_ENTITY;
15372
15373-- IN AP242
15374ENTITY product_definition_reference
15375   SUBTYPE OF (generic_product_definition_reference);
15376      product_id : identifier;
15377      product_definition_formation_id : identifier;
15378      product_definition_id : identifier;
15379      id_owning_organization_name : OPTIONAL label;
15380END_ENTITY;
15381
15382-- IN AP242
15383ENTITY product_definition_reference_with_local_representation
15384   SUBTYPE OF (generic_product_definition_reference, product_definition);
15385END_ENTITY;
15386
15387-- DIFF IN AP214
15388-- DIFF IN AP203e2
15389ENTITY product_definition_relationship;
15390      id : identifier;
15391      name : label;
15392      description : OPTIONAL text;
15393      relating_product_definition : product_definition_or_reference;
15394      related_product_definition : product_definition_or_reference;
15395END_ENTITY;
15396
15397-- IN AP242
15398ENTITY product_definition_relationship_kinematics
15399   SUBTYPE OF (property_definition);
15400      SELF\property_definition.definition : product_definition_relationship;
15401   UNIQUE
15402      UR1 : definition;
15403END_ENTITY;
15404
15405-- IN AP214/AP242
15406ENTITY product_definition_resource
15407   SUBTYPE OF (action_resource, product_definition);
15408   WHERE
15409      WR1:
15410         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) > 0;
15411      WR2:
15412         SELF.frame_of_reference.name IN [ 'part_definition', 'part occurrence', 'physical occurrence' ];
15413END_ENTITY;
15414
15415-- CASE DIFF IN AP214
15416ENTITY product_definition_shape
15417   SUBTYPE OF (property_definition);
15418   UNIQUE
15419      UR1 : SELF\property_definition.definition;
15420   WHERE
15421      WR1:
15422         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CHARACTERIZED_PRODUCT_DEFINITION', 'STEP_MERGED_CAD_SCHEMA.CHARACTERIZED_OBJECT' ] * TYPEOF(SELF\property_definition.definition)) > 0;
15423END_ENTITY;
15424
15425ENTITY product_definition_substitute;
15426      description : OPTIONAL text;
15427      context_relationship : product_definition_relationship;
15428      substitute_definition : product_definition;
15429   DERIVE
15430      name : label := get_name_value(SELF);
15431   WHERE
15432      WR1:
15433         context_relationship.related_product_definition :<>: substitute_definition;
15434      WR2:
15435         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
15436END_ENTITY;
15437
15438-- CASE DIFF IN AP214
15439ENTITY product_definition_usage
15440   SUPERTYPE OF (ONEOF(make_from_usage_option, assembly_component_usage))
15441   SUBTYPE OF (product_definition_relationship);
15442   UNIQUE
15443      UR1 : SELF\product_definition_relationship.id, SELF\product_definition_relationship.relating_product_definition, SELF\product_definition_relationship.related_product_definition;
15444   WHERE
15445      WR1:
15446         acyclic_product_definition_relationship(SELF, [ SELF\product_definition_relationship.related_product_definition ], 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_USAGE');
15447END_ENTITY;
15448
15449ENTITY product_definition_with_associated_documents
15450   SUBTYPE OF (product_definition);
15451      documentation_ids : SET [1:?] OF document;
15452END_ENTITY;
15453
15454-- IN AP242
15455ENTITY product_design_to_individual
15456   SUBTYPE OF (product_relationship);
15457   DERIVE
15458      individual_product : product := SELF\product_relationship.related_product;
15459      product_design : product := SELF\product_relationship.relating_product;
15460END_ENTITY;
15461
15462-- IN AP242
15463ENTITY product_design_version_to_individual
15464   SUBTYPE OF (product_definition_formation_relationship);
15465   DERIVE
15466      individual_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
15467      product_design_version : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
15468END_ENTITY;
15469
15470-- DIFF IN AP214
15471ENTITY product_identification
15472   SUBTYPE OF (configuration_item, characterized_object);
15473      SELF\configuration_item.item_concept : product_class;
15474   WHERE
15475      WR1:
15476         SIZEOF(QUERY (cd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.CONFIGURATION_DESIGN.CONFIGURATION')| ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF(cd.design)) AND (SIZEOF(QUERY (prpc <* USEDIN(cd.design\product_definition_formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'raw material', 'tool' ]))) > 0))) <= 1;
15477      WR2:
15478         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURABLE_ITEM' IN TYPEOF(SELF)) XOR ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_SPECIFICATION' IN TYPEOF(SELF));
15479END_ENTITY;
15480
15481-- IN AP203e2/AP242
15482ENTITY product_material_composition_relationship
15483   SUBTYPE OF (product_definition_relationship);
15484      class : label;
15485      constituent_amount : SET [1:?] OF characterized_product_composition_value;
15486      composition_basis : label;
15487      determination_method : text;
15488END_ENTITY;
15489
15490-- IN AP242
15491ENTITY product_planned_to_realized
15492   SUBTYPE OF (product_definition_formation_relationship);
15493   DERIVE
15494      planned_product : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
15495      realized_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
15496END_ENTITY;
15497
15498-- IN AP214/AP242
15499ENTITY product_process_plan
15500   SUBTYPE OF (product_definition_process);
15501   WHERE
15502      WR1:
15503         SIZEOF(QUERY (ar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATED_ACTION')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PROCESS_PLAN', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_PROCESS_PLAN' ] * TYPEOF(ar.relating_action)) <> 1))) = 0;
15504      WR2:
15505         SIZEOF(QUERY (ar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATING_ACTION')| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PROCESS_PLAN', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_PROCESS_PLAN' ] * TYPEOF(ar.related_action)) = 1) OR (ar.name = 'process operation occurrence') AND ('STEP_MERGED_CAD_SCHEMA.PROCESS_OPERATION' IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATING_ACTION'));
15506      WR3:
15507         SIZEOF(QUERY (ppa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROCESS_PRODUCT_ASSOCIATION.PROCESS')| (ppa.name <> 'produced output') OR NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(ppa.defined_product)))) = 0;
15508END_ENTITY;
15509
15510ENTITY product_related_product_category
15511   SUBTYPE OF (product_category);
15512      products : SET [1:?] OF product;
15513END_ENTITY;
15514
15515-- IN AP242
15516ENTITY product_relationship;
15517      id : identifier;
15518      name : label;
15519      description : OPTIONAL text;
15520      relating_product : product;
15521      related_product : product;
15522END_ENTITY;
15523
15524ENTITY product_specification
15525   SUBTYPE OF (product_identification, configurable_item);
15526END_ENTITY;
15527
15528-- IN AP242
15529ENTITY profile_floor
15530   SUBTYPE OF (shape_aspect);
15531   WHERE
15532      WR1:
15533         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
15534      WR2:
15535         SELF.description IN [ 'planar', 'complex', 'through' ];
15536      WR3:
15537         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
15538      WR4:
15539         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 1) AND (SIZEOF(impl_rep.used_representation.items) <= 2))) = 0))) = 0);
15540      WR5:
15541         NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
15542      WR6:
15543         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
15544      WR7:
15545         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'profile floor usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.OUTSIDE_PROFILE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND ('STEP_MERGED_CAD_SCHEMA.PROFILE_FLOOR' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
15546      WR8:
15547         NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'shape profile floor orientation')) AND (it.description IN [ 'shape profile start', 'shape profile end' ]))) = 1))) = 0))) = 0);
15548      WR9:
15549         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor'))) = 1))) = 1);
15550      WR10:
15551         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor'))) = 1))) = 1);
15552END_ENTITY;
15553
15554-- DIFF IN AP214
15555-- DIFF IN AP203e2
15556ENTITY projected_zone_definition
15557   SUBTYPE OF (tolerance_zone_definition);
15558      projection_end : shape_aspect;
15559      projected_length : length_measure_with_unit;
15560   WHERE
15561      WR1:
15562         ('NUMBER' IN TYPEOF(projected_length\measure_with_unit.value_component)) AND (projected_length\measure_with_unit.value_component > 0.0);
15563      WR2:
15564         derive_dimensional_exponents(projected_length\measure_with_unit.unit_component) = dimensional_exponents(1, 0, 0, 0, 0, 0, 0);
15565END_ENTITY;
15566
15567-- IN AP242
15568ENTITY projected_zone_definition_with_offset
15569   SUBTYPE OF (projected_zone_definition);
15570      offset : length_measure_with_unit;
15571END_ENTITY;
15572
15573ENTITY projection_curve
15574   SUBTYPE OF (annotation_curve_occurrence);
15575END_ENTITY;
15576
15577ENTITY projection_directed_callout
15578   SUBTYPE OF (draughting_callout);
15579   WHERE
15580      WR1:
15581         SIZEOF(QUERY (p_1 <* SELF\draughting_callout.contents| ('STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE' IN TYPEOF(p_1)))) <= 2;
15582      WR2:
15583         SIZEOF(SELF\draughting_callout.contents) >= 2;
15584END_ENTITY;
15585
15586ENTITY promissory_usage_occurrence
15587   SUBTYPE OF (assembly_component_usage);
15588END_ENTITY;
15589
15590-- DIFF IN AP214
15591-- DIFF IN AP203e2
15592ENTITY property_definition
15593   SUPERTYPE OF (ONEOF(product_definition_kinematics, product_definition_relationship_kinematics, product_definition_shape));
15594      name : label;
15595      description : OPTIONAL text;
15596      definition : characterized_definition;
15597   DERIVE
15598      id : identifier := get_id_value(SELF);
15599   WHERE
15600      WR1:
15601         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
15602END_ENTITY;
15603
15604ENTITY property_definition_relationship;
15605      name : label;
15606      description : text;
15607      relating_property_definition : property_definition;
15608      related_property_definition : property_definition;
15609END_ENTITY;
15610
15611ENTITY property_definition_representation;
15612      definition : represented_definition;
15613      used_representation : representation;
15614   DERIVE
15615      description : text := get_description_value(SELF);
15616      name : label := get_name_value(SELF);
15617   WHERE
15618      WR1:
15619         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
15620      WR2:
15621         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
15622END_ENTITY;
15623
15624-- IN AP214/AP242
15625ENTITY property_process
15626   SUBTYPE OF (action);
15627      identification : identifier;
15628   INVERSE
15629      properties : SET [1:?] OF process_property_association FOR process;
15630END_ENTITY;
15631
15632-- IN AP242
15633ENTITY protrusion
15634   SUBTYPE OF (feature_definition);
15635   WHERE
15636      WR1:
15637         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
15638      WR2:
15639         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'shape volume occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'volume shape usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (sdr.relating_shape_aspect.description = 'volume shape'))) = 1))) = 1))) = 0;
15640      WR3:
15641         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
15642END_ENTITY;
15643
15644ENTITY qualified_representation_item
15645   SUBTYPE OF (representation_item);
15646      qualifiers : SET [1:?] OF value_qualifier;
15647   WHERE
15648      WR1:
15649         SIZEOF(QUERY (temp <* qualifiers| ('STEP_MERGED_CAD_SCHEMA.PRECISION_QUALIFIER' IN TYPEOF(temp)))) < 2;
15650END_ENTITY;
15651
15652ENTITY qualitative_uncertainty
15653   SUBTYPE OF (uncertainty_qualifier);
15654      uncertainty_value : text;
15655END_ENTITY;
15656
15657ENTITY quantified_assembly_component_usage
15658   SUBTYPE OF (assembly_component_usage);
15659      quantity : measure_with_unit;
15660   WHERE
15661      WR1:
15662         NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.value_component > 0);
15663END_ENTITY;
15664
15665-- IN AP242
15666ENTITY quantifier_expression
15667   ABSTRACT SUPERTYPE
15668   SUBTYPE OF (multiple_arity_generic_expression);
15669      variables : LIST [1:?] OF UNIQUE generic_variable;
15670   WHERE
15671      WR1:
15672         SIZEOF(QUERY (vrbl <* variables| NOT (vrbl IN SELF\multiple_arity_generic_expression.operands))) = 0;
15673      WR2:
15674         SIZEOF(QUERY (vrbl <* variables| NOT (schema_prefix + 'BOUND_VARIABLE_SEMANTICS' IN TYPEOF(vrbl.interpretation.semantics)))) = 0;
15675END_ENTITY;
15676
15677ENTITY quasi_uniform_curve
15678   SUBTYPE OF (b_spline_curve);
15679END_ENTITY;
15680
15681ENTITY quasi_uniform_surface
15682   SUBTYPE OF (b_spline_surface);
15683END_ENTITY;
15684
15685-- DIFF IN AP214
15686-- IN AP214/AP242
15687ENTITY rack_and_pinion_pair
15688   SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
15689      pinion_radius : length_measure;
15690   WHERE
15691      WR1:
15692         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
15693END_ENTITY;
15694
15695-- IN AP214
15696ENTITY rack_and_pinion_pair_range
15697   SUBTYPE OF (simple_pair_range);
15698      SELF\simple_pair_range.applies_to_pair : rack_and_pinion_pair;
15699      lower_limit_rack_displacement : translational_range_measure;
15700      upper_limit_rack_displacement : translational_range_measure;
15701   WHERE
15702      wr1:
15703         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_rack_displacement)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_rack_displacement))) XOR (lower_limit_rack_displacement < upper_limit_rack_displacement);
15704END_ENTITY;
15705
15706-- DIFF IN AP214
15707-- IN AP214/AP242
15708ENTITY rack_and_pinion_pair_value
15709   SUBTYPE OF (pair_value);
15710      actual_displacement : length_measure;
15711      SELF\pair_value.applies_to_pair : rack_and_pinion_pair;
15712   DERIVE
15713      actual_rotation : plane_angle_measure := 0.0;
15714END_ENTITY;
15715
15716-- IN AP242
15717ENTITY rack_and_pinion_pair_with_range
15718   SUBTYPE OF (rack_and_pinion_pair);
15719      lower_limit_rack_displacement : OPTIONAL length_measure;
15720      upper_limit_rack_displacement : OPTIONAL length_measure;
15721   WHERE
15722      WR1:
15723         (NOT EXISTS(lower_limit_rack_displacement) OR NOT EXISTS(upper_limit_rack_displacement)) XOR (lower_limit_rack_displacement < upper_limit_rack_displacement);
15724END_ENTITY;
15725
15726-- IN AP203e2/AP242
15727ENTITY radioactivity_measure_with_unit
15728   SUBTYPE OF (measure_with_unit);
15729   WHERE
15730      WR1:
15731         'STEP_MERGED_CAD_SCHEMA.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15732END_ENTITY;
15733
15734-- IN AP203e2/AP242
15735ENTITY radioactivity_unit
15736   SUBTYPE OF (derived_unit);
15737   WHERE
15738      WR1:
15739         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.becquerel);
15740END_ENTITY;
15741
15742ENTITY radius_dimension
15743   SUBTYPE OF (dimension_curve_directed_callout);
15744   WHERE
15745      WR1:
15746         SIZEOF(QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.PROJECTION_CURVE' IN TYPEOF(con)))) <= 1;
15747END_ENTITY;
15748
15749-- IN AP242
15750ENTITY radius_geometric_constraint
15751   SUBTYPE OF (explicit_geometric_constraint);
15752      SELF\explicit_constraint.constrained_elements : SET [1:?] OF radial_geometry_constraint_element;
15753   WHERE
15754      WR1:
15755         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
15756END_ENTITY;
15757
15758-- IN AP203e2/AP242
15759ENTITY range_characteristic
15760   SUBTYPE OF (representation, descriptive_representation_item);
15761   WHERE
15762      WR1:
15763         NOT (SELF\representation.name IN [ 'tolerance', 'minimum tolerance', 'maximum tolerance', 'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance' ]);
15764END_ENTITY;
15765
15766ENTITY ratio_measure_with_unit
15767   SUBTYPE OF (measure_with_unit);
15768   WHERE
15769      WR1:
15770         'STEP_MERGED_CAD_SCHEMA.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15771END_ENTITY;
15772
15773ENTITY ratio_unit
15774   SUBTYPE OF (named_unit);
15775   WHERE
15776      WR1:
15777         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
15778END_ENTITY;
15779
15780ENTITY rational_b_spline_curve
15781   SUBTYPE OF (b_spline_curve);
15782      weights_data : LIST [2:?] OF REAL;
15783   DERIVE
15784      weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data, 0, upper_index_on_control_points);
15785   WHERE
15786      WR1:
15787         SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.control_points_list);
15788      WR2:
15789         curve_weights_positive(SELF);
15790END_ENTITY;
15791
15792ENTITY rational_b_spline_surface
15793   SUBTYPE OF (b_spline_surface);
15794      weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
15795   DERIVE
15796      weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data, 0, u_upper, 0, v_upper);
15797   WHERE
15798      WR1:
15799         (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(SELF\b_spline_surface.control_points_list[1]));
15800      WR2:
15801         surface_weights_positive(SELF);
15802END_ENTITY;
15803
15804-- IN AP203e2/AP242
15805ENTITY rational_representation_item
15806   SUBTYPE OF (representation_item, slash_expression);
15807   WHERE
15808      WR1:
15809         SIZEOF(QUERY (operand <* SELF\binary_generic_expression.operands| NOT ('STEP_MERGED_CAD_SCHEMA.INT_LITERAL' IN TYPEOF(operand)))) = 0;
15810END_ENTITY;
15811
15812-- IN AP242
15813ENTITY rationalize_function
15814   SUBTYPE OF (maths_function, unary_generic_expression);
15815      SELF\unary_generic_expression.operand : maths_function;
15816   DERIVE
15817      fun : maths_function := SELF\unary_generic_expression.operand;
15818   WHERE
15819      WR1:
15820         (space_dimension(fun.domain) = 1) AND (space_dimension(fun.range) = 1);
15821      WR2:
15822         number_tuple_subspace_check(factor1(fun.range));
15823      WR3:
15824         space_dimension(factor1(fun.range)) > 1;
15825END_ENTITY;
15826
15827-- IN AP214/AP242
15828ENTITY real_defined_function
15829   ABSTRACT SUPERTYPE
15830   SUBTYPE OF (numeric_defined_function);
15831END_ENTITY;
15832
15833-- IN AP242
15834ENTITY real_interval_from_min
15835   SUBTYPE OF (maths_space, generic_literal);
15836      min : REAL;
15837      min_closure : open_closed;
15838END_ENTITY;
15839
15840-- IN AP242
15841ENTITY real_interval_to_max
15842   SUBTYPE OF (maths_space, generic_literal);
15843      max : REAL;
15844      max_closure : open_closed;
15845END_ENTITY;
15846
15847ENTITY real_literal
15848   SUBTYPE OF (literal_number);
15849      SELF\literal_number.the_value : REAL;
15850END_ENTITY;
15851
15852-- IN AP214/AP242
15853ENTITY real_numeric_variable
15854   SUBTYPE OF (numeric_variable);
15855END_ENTITY;
15856
15857-- IN AP203e2/AP242
15858ENTITY real_representation_item
15859   SUBTYPE OF (representation_item, real_literal);
15860END_ENTITY;
15861
15862-- IN AP242
15863ENTITY real_tuple_literal
15864   SUBTYPE OF (generic_literal);
15865      lit_value : LIST [1:?] OF REAL;
15866END_ENTITY;
15867
15868-- IN AP242
15869ENTITY rectangular_area
15870   SUBTYPE OF (primitive_2d);
15871      position : axis2_placement_2d;
15872      x : positive_length_measure;
15873      y : positive_length_measure;
15874END_ENTITY;
15875
15876-- IN AP242
15877ENTITY rectangular_array_placement_group_component
15878   SUBTYPE OF (array_placement_group);
15879END_ENTITY;
15880
15881-- IN AP214/AP242
15882ENTITY rectangular_closed_profile
15883   SUBTYPE OF (shape_aspect);
15884   WHERE
15885      WR1:
15886         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
15887      WR2:
15888         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
15889      WR3:
15890         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT ((SIZEOF(impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 4)))) = 0))) = 0;
15891      WR4:
15892         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (((srwp_i.name = 'orientation') OR (srwp_i.name = 'length')) OR (srwp_i.name = 'width')) OR (srwp_i.name = 'corner radius'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
15893      WR5:
15894         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
15895      WR6:
15896         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
15897      WR7:
15898         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'length'))) = 1))) = 0))) = 0;
15899      WR8:
15900         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) = 0;
15901END_ENTITY;
15902
15903ENTITY rectangular_composite_surface
15904   SUBTYPE OF (bounded_surface);
15905      segments : LIST [1:?] OF LIST [1:?] OF surface_patch;
15906   DERIVE
15907      n_u : INTEGER := SIZEOF(segments);
15908      n_v : INTEGER := SIZEOF(segments[1]);
15909   WHERE
15910      WR1:
15911         SIZEOF(QUERY (s <* segments| (n_v <> SIZEOF(s)))) = 0;
15912      WR2:
15913         constraints_rectangular_composite_surface(SELF);
15914END_ENTITY;
15915
15916-- IN AP242
15917ENTITY rectangular_composite_surface_transition_locator
15918   SUBTYPE OF (founded_item);
15919      basis_surface : rectangular_composite_surface;
15920      surface_parameter : u_or_v_parameter;
15921      u_transition_index : INTEGER;
15922      v_transition_index : INTEGER;
15923   WHERE
15924      WR1:
15925         SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
15926END_ENTITY;
15927
15928-- IN AP214/AP242
15929ENTITY rectangular_pattern
15930   SUBTYPE OF (replicate_feature);
15931   WHERE
15932      WR1:
15933         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 5))) = 0;
15934      WR2:
15935         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'row layout direction'))) = 1))) = 0;
15936      WR3:
15937         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'column layout direction'))) = 1))) = 0;
15938      WR4:
15939         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
15940      WR5:
15941         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 5))) = 0))) = 0;
15942      WR6:
15943         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'number of rows'))) = 1))) = 0))) = 0;
15944      WR7:
15945         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'number of columns'))) = 1))) = 0))) = 0;
15946      WR8:
15947         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'row spacing'))) = 1))) = 0))) = 0;
15948      WR9:
15949         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'column spacing'))) = 1))) = 0))) = 0;
15950      WR10:
15951         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
15952END_ENTITY;
15953
15954ENTITY rectangular_trimmed_surface
15955   SUBTYPE OF (bounded_surface);
15956      basis_surface : surface;
15957      u1 : parameter_value;
15958      u2 : parameter_value;
15959      v1 : parameter_value;
15960      v2 : parameter_value;
15961      usense : BOOLEAN;
15962      vsense : BOOLEAN;
15963   WHERE
15964      WR1:
15965         u1 <> u2;
15966      WR2:
15967         v1 <> v2;
15968      WR3:
15969         (('STEP_MERGED_CAD_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) AND NOT ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(basis_surface)) OR ('STEP_MERGED_CAD_SCHEMA.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface))) OR (usense = (u2 > u1));
15970      WR4:
15971         (('STEP_MERGED_CAD_SCHEMA.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) OR ('STEP_MERGED_CAD_SCHEMA.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) OR (vsense = (v2 > v1));
15972END_ENTITY;
15973
15974ENTITY referenced_modified_datum
15975   SUBTYPE OF (datum_reference);
15976      modifier : limit_condition;
15977END_ENTITY;
15978
15979-- IN AP242
15980ENTITY reindexed_array_function
15981   SUBTYPE OF (maths_function, unary_generic_expression);
15982      starting_indices : LIST [1:?] OF INTEGER;
15983      SELF\unary_generic_expression.operand : maths_function;
15984   WHERE
15985      WR1:
15986         function_is_array(SELF\unary_generic_expression.operand);
15987      WR2:
15988         SIZEOF(starting_indices) = SIZEOF(shape_of_array(SELF\unary_generic_expression.operand));
15989END_ENTITY;
15990
15991ENTITY relative_event_occurrence
15992   SUBTYPE OF (event_occurrence);
15993      base_event : event_occurrence;
15994      offset : time_measure_with_unit;
15995END_ENTITY;
15996
15997-- IN AP242
15998ENTITY removal_volume
15999   SUBTYPE OF (feature_definition);
16000   WHERE
16001      WR1:
16002         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
16003      WR2:
16004         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'shape volume occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'volume shape usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (sdr.relating_shape_aspect.description = 'volume shape'))) = 1))) = 1))) = 0;
16005END_ENTITY;
16006
16007ENTITY rep_item_group
16008   SUBTYPE OF (group, representation_item);
16009   WHERE
16010      WR1:
16011         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0;
16012      WR2:
16013         SIZEOF(QUERY (r <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION.' + 'ITEMS')| (r.name = 'group representation'))) > 0;
16014      WR3:
16015         SIZEOF(QUERY (ga <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP')| (ga.role.name <> 'group membership'))) = 0;
16016      WR4:
16017         SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'TOPOLOGICAL_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM') ] * TYPEOF(SELF)) = 1;
16018END_ENTITY;
16019
16020-- IN AP242
16021ENTITY repackaging_function
16022   SUBTYPE OF (maths_function, unary_generic_expression);
16023      input_repack : repackage_options;
16024      output_repack : repackage_options;
16025      selected_output : nonnegative_integer;
16026      SELF\unary_generic_expression.operand : maths_function;
16027   WHERE
16028      WR1:
16029         (input_repack <> ro_wrap_as_tuple) OR (space_dimension(operand.domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(operand.domain)));
16030      WR2:
16031         (output_repack <> ro_unwrap_tuple) OR (space_dimension(operand.range) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(operand.range)));
16032      WR3:
16033         selected_output <= space_dimension(repackage(operand.range, output_repack));
16034END_ENTITY;
16035
16036ENTITY reparametrised_composite_curve_segment
16037   SUBTYPE OF (composite_curve_segment);
16038      param_length : parameter_value;
16039   WHERE
16040      WR1:
16041         param_length > 0.0;
16042END_ENTITY;
16043
16044-- DIFF IN AP214
16045-- IN AP214/AP242
16046ENTITY replicate_feature
16047   SUPERTYPE OF (ONEOF(circular_pattern, rectangular_pattern, feature_pattern))
16048   SUBTYPE OF (feature_definition);
16049   WHERE
16050      WR1:
16051         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
16052      WR2:
16053         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.REPLICATE_FEATURE', 'STEP_MERGED_CAD_SCHEMA.INSTANCED_FEATURE' ] * TYPEOF(fcr.related_shape_aspect)) >= 1) AND (fcr.name = 'pattern basis'))) = 1;
16054      WR3:
16055         SIZEOF(QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| NOT ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))) + SIZEOF(QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| NOT ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))) = 0;
16056END_ENTITY;
16057
16058-- IN AP242
16059ENTITY repositioned_neutral_sketch
16060   SUBTYPE OF (mapped_item, geometric_representation_item);
16061   DERIVE
16062      map : representation_map := SELF\mapped_item.mapping_source;
16063   WHERE
16064      WR1:
16065         'STEP_MERGED_CAD_SCHEMA.NEUTRAL_SKETCH_REPRESENTATION' IN TYPEOF(map.mapped_representation);
16066      WR2:
16067         'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_2D' IN TYPEOF(map.mapping_origin);
16068      WR3:
16069         'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\mapped_item.mapping_target);
16070END_ENTITY;
16071
16072-- IN AP242
16073ENTITY repositioned_tessellated_item
16074   SUBTYPE OF (tessellated_item);
16075      location : axis2_placement_3d;
16076   WHERE
16077      WR1:
16078         NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_CURVE_SET', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_GEOMETRIC_SET', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_POINT_SET', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_SURFACE_SET', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_SHELL', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_SOLID', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_WIRE' ] * TYPEOF(SELF)) = 0);
16079END_ENTITY;
16080
16081-- DIFF IN AP214
16082-- DIFF IN AP203e2
16083ENTITY representation
16084   SUPERTYPE OF ((ONEOF(interpolated_configuration_representation, link_motion_representation_along_path) ANDOR ONEOF(kinematic_link_representation, kinematic_topology_structure, kinematic_topology_directed_structure, kinematic_topology_network_structure, mechanism_representation, shape_representation)) ANDOR ONEOF(kinematic_topology_structure, kinematic_topology_directed_structure, kinematic_topology_network_structure));
16085      name : label;
16086      items : SET [1:?] OF representation_item;
16087      context_of_items : representation_context;
16088   DERIVE
16089      description : text := get_description_value(SELF);
16090      id : identifier := get_id_value(SELF);
16091   WHERE
16092      WR1:
16093         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
16094      WR2:
16095         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
16096END_ENTITY;
16097
16098ENTITY representation_context;
16099      context_identifier : identifier;
16100      context_type : text;
16101   INVERSE
16102      representations_in_context : SET [1:?] OF representation FOR context_of_items;
16103END_ENTITY;
16104
16105-- DIFF IN AP214
16106-- DIFF IN AP203e2
16107ENTITY representation_item
16108   SUPERTYPE OF ((ONEOF(binary_representation_item, compound_representation_item, mapped_item, value_representation_item) ANDOR ONEOF(mapped_item, styled_item)) ANDOR ONEOF(boolean_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item, real_representation_item));
16109      name : label;
16110   WHERE
16111      WR1:
16112         SIZEOF(using_representations(SELF)) > 0;
16113END_ENTITY;
16114
16115-- IN AP203e2/AP242
16116ENTITY representation_item_relationship;
16117      name : label;
16118      description : OPTIONAL text;
16119      relating_representation_item : representation_item;
16120      related_representation_item : representation_item;
16121END_ENTITY;
16122
16123ENTITY representation_map;
16124      mapping_origin : representation_item;
16125      mapped_representation : representation;
16126   INVERSE
16127      map_usage : SET [1:?] OF mapped_item FOR mapping_source;
16128   WHERE
16129      WR1:
16130         item_in_context(SELF.mapping_origin, SELF.mapped_representation.context_of_items);
16131END_ENTITY;
16132
16133-- IN AP242
16134ENTITY representation_proxy_item
16135   SUBTYPE OF (representation_item);
16136END_ENTITY;
16137
16138ENTITY representation_relationship;
16139      name : label;
16140      description : OPTIONAL text;
16141      rep_1 : representation;
16142      rep_2 : representation;
16143END_ENTITY;
16144
16145ENTITY representation_relationship_with_transformation
16146   SUBTYPE OF (representation_relationship);
16147      transformation_operator : transformation;
16148   WHERE
16149      WR1:
16150         SELF\representation_relationship.rep_1.context_of_items :<>: SELF\representation_relationship.rep_2.context_of_items;
16151END_ENTITY;
16152
16153-- IN AP242
16154ENTITY representative_shape_representation
16155   SUBTYPE OF (shape_representation);
16156   WHERE
16157      WR1:
16158         unique_in_product_definition(SELF) OR unique_in_shape_aspect(SELF);
16159END_ENTITY;
16160
16161-- IN AP203e2/AP242
16162ENTITY requirement_assigned_object
16163   SUBTYPE OF (group_assignment);
16164      items : SET [1:1] OF requirement_assigned_item;
16165      SELF\group_assignment.assigned_group : requirement_assignment;
16166END_ENTITY;
16167
16168-- IN AP203e2/AP242
16169ENTITY requirement_assignment
16170   SUBTYPE OF (characterized_object, group);
16171END_ENTITY;
16172
16173-- IN AP214/AP242
16174ENTITY requirement_for_action_resource
16175   SUBTYPE OF (action_resource_requirement);
16176      resources : SET [1:?] OF action_resource;
16177END_ENTITY;
16178
16179-- IN AP203e2/AP242
16180ENTITY requirement_source
16181   SUBTYPE OF (group);
16182END_ENTITY;
16183
16184-- IN AP203e2
16185ENTITY requirement_view_definition_relationship
16186   SUBTYPE OF (product_definition_relationship);
16187END_ENTITY;
16188
16189-- IN AP203e2/AP242
16190ENTITY resistance_measure_with_unit
16191   SUBTYPE OF (measure_with_unit);
16192   WHERE
16193      WR1:
16194         'STEP_MERGED_CAD_SCHEMA.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
16195END_ENTITY;
16196
16197-- IN AP203e2/AP242
16198ENTITY resistance_unit
16199   SUBTYPE OF (derived_unit);
16200   WHERE
16201      WR1:
16202         derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.ohm);
16203END_ENTITY;
16204
16205-- IN AP214/AP242
16206ENTITY resource_property;
16207      name : label;
16208      description : text;
16209      resource : characterized_resource_definition;
16210END_ENTITY;
16211
16212-- IN AP214/AP242
16213ENTITY resource_property_representation;
16214      name : label;
16215      description : text;
16216      property : resource_property;
16217      representation : representation;
16218END_ENTITY;
16219
16220-- IN AP214/AP242
16221ENTITY resource_requirement_type;
16222      name : label;
16223      description : text;
16224END_ENTITY;
16225
16226-- IN AP242
16227ENTITY restriction_function
16228   SUBTYPE OF (maths_function, unary_generic_expression);
16229      SELF\unary_generic_expression.operand : maths_space;
16230END_ENTITY;
16231
16232-- DIFF IN AP214
16233-- IN AP214/AP242
16234ENTITY resulting_path
16235   SUBTYPE OF (motion_link_relationship, link_motion_representation_along_path);
16236      controlling_joints : SET [1:?] OF kinematic_joint;
16237END_ENTITY;
16238
16239-- IN AP214/AP242
16240ENTITY retention
16241   SUBTYPE OF (action);
16242   WHERE
16243      WR1:
16244         SIZEOF(QUERY (aa <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_ASSIGNMENT.ASSIGNED_ACTION')| ('ACTIVITY.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND (aa.role.name = 'retention'))) >= 1;
16245      WR2:
16246         ((SIZEOF(QUERY (atia <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')| (atia.role.name = 'minimum retention period'))) = 1) AND (SIZEOF(QUERY (atia <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')| (atia.role.name = 'maximum retention period'))) = 1)) AND (SIZEOF(QUERY (atia1 <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')| (((atia1.role.name = 'minimum retention period') AND ('STEP_MERGED_CAD_SCHEMA.TIME_INTERVAL_WITH_BOUNDS' IN TYPEOF(atia1.assigned_time_interval))) AND (EXISTS(atia1.assigned_time_interval\time_interval_with_bounds.secondary_bound) OR EXISTS(atia1.assigned_time_interval\time_interval_with_bounds.duration))) AND (SIZEOF(QUERY (atia2 <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')| (((atia2.role.name = 'maximum retention period') AND ('STEP_MERGED_CAD_SCHEMA.TIME_INTERVAL_WITH_BOUNDS' IN TYPEOF(atia2.assigned_time_interval))) AND (EXISTS(atia2.assigned_time_interval\time_interval_with_bounds.secondary_bound) OR EXISTS(atia2.assigned_time_interval\time_interval_with_bounds.duration))) AND (atia1.assigned_time_interval\time_interval_with_bounds.primary_bound :=: atia2.assigned_time_interval\time_interval_with_bounds.primary_bound))) = 1))) = 1);
16247      WR3:
16248         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATING_ACTION')) + SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ACTION_RELATIONSHIP.RELATED_ACTION')) = 0;
16249END_ENTITY;
16250
16251-- DIFF IN AP214
16252-- IN AP214/AP242
16253ENTITY revolute_pair
16254   SUBTYPE OF (low_order_kinematic_pair);
16255   DERIVE
16256      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
16257      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
16258      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
16259      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
16260      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
16261      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
16262END_ENTITY;
16263
16264-- IN AP214
16265ENTITY revolute_pair_range
16266   SUBTYPE OF (simple_pair_range);
16267      SELF\simple_pair_range.applies_to_pair : revolute_pair;
16268      lower_limit_actual_rotation : rotational_range_measure;
16269      upper_limit_actual_rotation : rotational_range_measure;
16270   WHERE
16271      wr1:
16272         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation))) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
16273END_ENTITY;
16274
16275-- DIFF IN AP214
16276-- IN AP214/AP242
16277ENTITY revolute_pair_value
16278   SUBTYPE OF (pair_value);
16279      actual_rotation : plane_angle_measure;
16280      SELF\pair_value.applies_to_pair : revolute_pair;
16281END_ENTITY;
16282
16283-- IN AP242
16284ENTITY revolute_pair_with_range
16285   SUBTYPE OF (revolute_pair);
16286      lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
16287      upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
16288   WHERE
16289      WR1:
16290         (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
16291END_ENTITY;
16292
16293ENTITY revolved_area_solid
16294   SUBTYPE OF (swept_area_solid);
16295      axis : axis1_placement;
16296      angle : plane_angle_measure;
16297   DERIVE
16298      axis_line : line := representation_item('') || geometric_representation_item() || curve() || line(axis.location, representation_item('') || geometric_representation_item() || vector(axis.z, 1.0));
16299END_ENTITY;
16300
16301ENTITY revolved_face_solid
16302   SUBTYPE OF (swept_face_solid);
16303      axis : axis1_placement;
16304      angle : plane_angle_measure;
16305   DERIVE
16306      axis_line : line := representation_item('') || geometric_representation_item() || curve() || line(axis.location, representation_item('') || geometric_representation_item() || vector(axis.z, 1.0));
16307END_ENTITY;
16308
16309-- IN AP203e2/AP242
16310ENTITY revolved_face_solid_with_trim_conditions
16311   SUBTYPE OF (revolved_face_solid);
16312      first_trim_condition : trim_condition_select;
16313      second_trim_condition : trim_condition_select;
16314   WHERE
16315      WR1:
16316         NOT (('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) OR ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)));
16317      WR2:
16318         NOT ((('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(first_trim_condition)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(second_trim_condition))) AND (first_trim_condition = second_trim_condition));
16319END_ENTITY;
16320
16321-- IN AP242
16322ENTITY revolved_profile
16323   SUBTYPE OF (feature_definition);
16324   WHERE
16325      WR1:
16326         SELF\characterized_object.description IN [ 'groove', 'flat', 'round', 'open profile' ];
16327      WR2:
16328         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0;
16329      WR3:
16330         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
16331      WR4:
16332         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction'))) = 1;
16333      WR5:
16334         NOT (SELF\characterized_object.description = 'open profile') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'outer edge shape occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'outer edge shape'))) = 1))) = 1))) = 0);
16335      WR6:
16336         NOT (SELF\characterized_object.description = 'flat') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'flat edge shape occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.LINEAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'flat edge shape'))) = 1))) = 1))) = 0);
16337      WR7:
16338         NOT (SELF\characterized_object.description = 'round') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'rounded edge shape occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'rounded edge shape'))) = 1))) = 1))) = 0);
16339      WR8:
16340         NOT (SELF\characterized_object.description = 'groove') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'sweep occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'sweep'))) = 1))) = 1))) = 0);
16341      WR9:
16342         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
16343END_ENTITY;
16344
16345-- IN AP242
16346ENTITY rgc_with_dimension
16347   SUBTYPE OF (radius_geometric_constraint);
16348      radius_value : positive_length_measure;
16349END_ENTITY;
16350
16351-- IN AP214
16352ENTITY rib
16353   SUBTYPE OF (feature_definition);
16354   WHERE
16355      wr1:
16356         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND NOT ((1 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 3)))) = 0;
16357      wr2:
16358         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| NOT (i.name IN [ 'orientation', 'fillet radius', 'shoulder radius' ]))) > 0))) = 0;
16359      wr3:
16360         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'fillet radius') AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'LENGTH_MEASURE_WITH_UNIT') ] * TYPEOF(i)) = 2))) = 1))) <= 1;
16361      wr4:
16362         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (i.name = 'shoulder radius') AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'LENGTH_MEASURE_WITH_UNIT') ] * TYPEOF(i)) = 2))) = 1))) <= 1;
16363      wr5:
16364         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'swept shape occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'profile usage')) AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'PARTIAL_CIRCULAR_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SQUARE_U_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ROUNDED_U_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'TEE_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'VEE_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'OPEN_PATH_PROFILE') ] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = 1;
16365      wr6:
16366         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.name = 'course of travel')) AND ('STEP_MERGED_CAD_SCHEMA.' + 'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
16367      wr7:
16368         SIZEOF(QUERY (sa <* get_shape_aspects(SELF)| (sa.description = 'change in boundary occurrence') AND (SIZEOF(QUERY (sar <* USEDIN(sa, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar.description = 'taper usage')) AND ('STEP_MERGED_CAD_SCHEMA.' + 'TAPER' IN TYPEOF(sar.relating_shape_aspect))) AND (sar.relating_shape_aspect.description = 'directed taper'))) = 1))) <= 1;
16369END_ENTITY;
16370
16371-- IN AP242
16372ENTITY rib_top
16373   SUBTYPE OF (feature_definition);
16374   WHERE
16375      WR1:
16376         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'rib top condition occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'rib top usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.RIB_TOP_FLOOR' IN TYPEOF(sdr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.RIB_TOP' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))) = 0;
16377      WR2:
16378         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction'))) = 1))) = 1;
16379      WR3:
16380         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
16381END_ENTITY;
16382
16383-- IN AP242
16384ENTITY rib_top_floor
16385   SUBTYPE OF (shape_aspect);
16386   WHERE
16387      WR1:
16388         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
16389      WR2:
16390         SELF.description IN [ 'planar', 'complex' ];
16391      WR3:
16392         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.description = 'rib top usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description = 'rib top condition occurrence') AND ('STEP_MERGED_CAD_SCHEMA.RIB_TOP' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('STEP_MERGED_CAD_SCHEMA.RIB_TOP_FLOOR' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
16393      WR4:
16394         NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'rib top face'))) = 1))) = 0);
16395      WR5:
16396         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'rib top face'))) = 1))) = 0);
16397      WR6:
16398         NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.NGON_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'STEP_MERGED_CAD_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'rib top floor boundary'))) = 1))) = 1))) = 0);
16399END_ENTITY;
16400
16401ENTITY right_angular_wedge
16402   SUBTYPE OF (geometric_representation_item);
16403      position : axis2_placement_3d;
16404      x : positive_length_measure;
16405      y : positive_length_measure;
16406      z : positive_length_measure;
16407      ltx : length_measure;
16408   WHERE
16409      WR1:
16410         (0.0 <= ltx) AND (ltx < x);
16411END_ENTITY;
16412
16413ENTITY right_circular_cone
16414   SUBTYPE OF (geometric_representation_item);
16415      position : axis1_placement;
16416      height : positive_length_measure;
16417      radius : length_measure;
16418      semi_angle : plane_angle_measure;
16419   WHERE
16420      WR1:
16421         radius >= 0.0;
16422END_ENTITY;
16423
16424ENTITY right_circular_cylinder
16425   SUBTYPE OF (geometric_representation_item);
16426      position : axis1_placement;
16427      height : positive_length_measure;
16428      radius : positive_length_measure;
16429END_ENTITY;
16430
16431-- IN AP203e2/AP242
16432ENTITY right_to_usage_association
16433   SUBTYPE OF (action_method_relationship);
16434      SELF\action_method_relationship.related_method : information_right;
16435      SELF\action_method_relationship.relating_method : information_usage_right;
16436   DERIVE
16437      right_applied : information_right := SELF\action_method_relationship.related_method;
16438      right_usage : information_usage_right := SELF\action_method_relationship.relating_method;
16439END_ENTITY;
16440
16441-- IN AP242
16442ENTITY rigid_link_representation
16443   SUBTYPE OF (kinematic_link_representation);
16444END_ENTITY;
16445
16446-- IN AP242
16447ENTITY rigid_subsketch
16448   SUBTYPE OF (subsketch);
16449END_ENTITY;
16450
16451ENTITY role_association;
16452      role : object_role;
16453      item_with_role : role_select;
16454END_ENTITY;
16455
16456-- IN AP214/AP242
16457ENTITY rolling_curve_pair
16458   SUBTYPE OF (planar_curve_pair);
16459END_ENTITY;
16460
16461-- DIFF IN AP214
16462-- IN AP214/AP242
16463ENTITY rolling_curve_pair_value
16464   SUBTYPE OF (pair_value);
16465      actual_point_on_curve_1 : point_on_curve;
16466      SELF\pair_value.applies_to_pair : rolling_curve_pair;
16467   WHERE
16468      WR1:
16469         SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve;
16470END_ENTITY;
16471
16472-- IN AP214/AP242
16473ENTITY rolling_surface_pair
16474   SUBTYPE OF (surface_pair);
16475END_ENTITY;
16476
16477-- DIFF IN AP214
16478-- IN AP214/AP242
16479ENTITY rolling_surface_pair_value
16480   SUBTYPE OF (pair_value);
16481      actual_point_on_surface : point_on_surface;
16482      actual_rotation : plane_angle_measure;
16483      SELF\pair_value.applies_to_pair : rolling_surface_pair;
16484   WHERE
16485      WR1:
16486         SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface.basis_surface;
16487END_ENTITY;
16488
16489-- DIFF IN AP214
16490-- IN AP214/AP242
16491ENTITY rotation_about_direction
16492   SUBTYPE OF (geometric_representation_item);
16493      direction_of_axis : direction;
16494      rotation_angle : plane_angle_measure;
16495   WHERE
16496      WR1:
16497         SIZEOF(direction_of_axis.direction_ratios) = 3;
16498END_ENTITY;
16499
16500-- IN AP214/AP242
16501ENTITY round_hole
16502   SUBTYPE OF (feature_definition);
16503   WHERE
16504      WR1:
16505         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'diameter occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'diameter'))) = 1))) = 1))) = 0;
16506      WR2:
16507         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'hole depth occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'hole depth')) AND (sdr.relating_shape_aspect.description = 'linear'))) = 1))) = 1))) = 0;
16508      WR3:
16509         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'hole bottom usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.HOLE_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))) = 0;
16510      WR4:
16511         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage') AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))) <= 1))) = 0;
16512      WR5:
16513         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1;
16514END_ENTITY;
16515
16516-- IN AP242
16517ENTITY rounded_end
16518   SUBTYPE OF (feature_definition);
16519   WHERE
16520      WR1:
16521         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
16522      WR2:
16523         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'partial circular boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
16524      WR3:
16525         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear'))) = 1))) = 1))) = 0;
16526      WR4:
16527         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
16528END_ENTITY;
16529
16530-- IN AP214/AP242
16531ENTITY rounded_u_profile
16532   SUBTYPE OF (shape_aspect);
16533   WHERE
16534      WR1:
16535         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
16536      WR2:
16537         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
16538      WR3:
16539         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 1) AND (SIZEOF(impl_rep.used_representation.items) <= 2))) = 0))) = 0;
16540      WR4:
16541         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (srwp_i.name = 'orientation') OR (srwp_i.name = 'depth'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
16542      WR5:
16543         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
16544      WR6:
16545         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
16546      WR7:
16547         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
16548END_ENTITY;
16549
16550ENTITY roundness_tolerance
16551   SUBTYPE OF (geometric_tolerance);
16552   WHERE
16553      WR1:
16554         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
16555END_ENTITY;
16556
16557-- IN AP203e2/AP242
16558ENTITY row_representation_item
16559   SUBTYPE OF (compound_representation_item);
16560      SELF\compound_representation_item.item_element : list_representation_item;
16561END_ENTITY;
16562
16563-- IN AP203e2/AP242
16564ENTITY row_value
16565   SUBTYPE OF (compound_representation_item);
16566END_ENTITY;
16567
16568-- IN AP203e2/AP242
16569ENTITY row_variable
16570   SUBTYPE OF (abstract_variable);
16571END_ENTITY;
16572
16573-- IN AP203e2/AP242
16574ENTITY rule_action
16575   SUBTYPE OF (action);
16576END_ENTITY;
16577
16578-- IN AP203e2/AP242
16579ENTITY rule_condition
16580   SUBTYPE OF (atomic_formula);
16581END_ENTITY;
16582
16583-- IN AP203e2/AP242
16584ENTITY rule_definition
16585   SUBTYPE OF (rule_software_definition);
16586END_ENTITY;
16587
16588-- IN AP203e2/AP242
16589ENTITY rule_set
16590   SUBTYPE OF (rule_software_definition);
16591END_ENTITY;
16592
16593-- IN AP203e2/AP242
16594ENTITY rule_set_group
16595   SUBTYPE OF (rule_software_definition);
16596END_ENTITY;
16597
16598-- IN AP203e2/AP242
16599ENTITY rule_software_definition
16600   SUBTYPE OF (product_definition);
16601END_ENTITY;
16602
16603-- IN AP203e2/AP242
16604ENTITY rule_superseded_assignment
16605   SUBTYPE OF (action_assignment);
16606      items : SET [1:?] OF rule_superseded_item;
16607END_ENTITY;
16608
16609-- IN AP203e2/AP242
16610ENTITY rule_supersedence
16611   SUBTYPE OF (rule_action);
16612END_ENTITY;
16613
16614ENTITY ruled_surface_swept_area_solid
16615   SUBTYPE OF (surface_curve_swept_area_solid);
16616   WHERE
16617      WR1:
16618         ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND (SELF.reference_surface\b_spline_surface.u_degree = 1);
16619      WR2:
16620         ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(SELF.directrix)) OR ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) AND (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = SELF.reference_surface\b_spline_surface.v_degree);
16621END_ENTITY;
16622
16623ENTITY runout_zone_definition
16624   SUBTYPE OF (tolerance_zone_definition);
16625      orientation : runout_zone_orientation;
16626END_ENTITY;
16627
16628-- DIFF IN AP214
16629-- DIFF IN AP203e2
16630ENTITY runout_zone_orientation;
16631      angle : plane_angle_measure_with_unit;
16632END_ENTITY;
16633
16634ENTITY runout_zone_orientation_reference_direction
16635   SUBTYPE OF (runout_zone_orientation);
16636      orientation_defining_relationship : shape_aspect_relationship;
16637END_ENTITY;
16638
16639-- IN AP203e2/AP242
16640ENTITY satisfied_requirement
16641   SUBTYPE OF (group_assignment);
16642      items : SET [1:1] OF product_definition;
16643      SELF\group_assignment.assigned_group : satisfies_requirement;
16644END_ENTITY;
16645
16646-- IN AP203e2/AP242
16647ENTITY satisfies_requirement
16648   SUBTYPE OF (group);
16649END_ENTITY;
16650
16651-- IN AP203e2/AP242
16652ENTITY satisfying_item
16653   SUBTYPE OF (group_assignment);
16654      items : SET [1:1] OF requirement_satisfaction_item;
16655      SELF\group_assignment.assigned_group : satisfies_requirement;
16656END_ENTITY;
16657
16658-- IN AP203e2/AP242
16659ENTITY scalar_variable
16660   SUBTYPE OF (abstract_variable);
16661END_ENTITY;
16662
16663-- IN AP203e2
16664ENTITY scattering_parameter
16665   SUBTYPE OF (polar_complex_number_literal);
16666   WHERE
16667      WR1:
16668         SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\polar_complex_number_literal || SELF\scattering_parameter)) = 0;
16669END_ENTITY;
16670
16671-- DIFF IN AP214
16672-- IN AP214/AP242
16673ENTITY screw_pair
16674   SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
16675      pitch : length_measure;
16676   WHERE
16677      WR1:
16678         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
16679END_ENTITY;
16680
16681-- IN AP214
16682ENTITY screw_pair_range
16683   SUBTYPE OF (simple_pair_range);
16684      SELF\simple_pair_range.applies_to_pair : screw_pair;
16685      lower_limit_actual_rotation : rotational_range_measure;
16686      upper_limit_actual_rotation : rotational_range_measure;
16687   WHERE
16688      wr1:
16689         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation))) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
16690END_ENTITY;
16691
16692-- DIFF IN AP214
16693-- IN AP214/AP242
16694ENTITY screw_pair_value
16695   SUBTYPE OF (pair_value);
16696      actual_rotation : plane_angle_measure;
16697      SELF\pair_value.applies_to_pair : screw_pair;
16698   DERIVE
16699      actual_translation : length_measure := SELF\pair_value.applies_to_pair\screw_pair.pitch * plane_angle_for_pair_in_radian(SELF\pair_value.applies_to_pair, actual_rotation) / 2 * 3.14159;
16700END_ENTITY;
16701
16702-- IN AP242
16703ENTITY screw_pair_with_range
16704   SUBTYPE OF (screw_pair);
16705      lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
16706      upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
16707   WHERE
16708      WR1:
16709         (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
16710END_ENTITY;
16711
16712-- IN AP203e2/AP242
16713ENTITY sculptured_solid
16714   SUBTYPE OF (modified_solid);
16715      sculpturing_element : generalized_surface_select;
16716      positive_side : BOOLEAN;
16717END_ENTITY;
16718
16719-- IN AP242
16720ENTITY sdgc_with_dimension
16721   SUBTYPE OF (surface_distance_geometric_constraint);
16722      distance_value : non_negative_length_measure;
16723END_ENTITY;
16724
16725ENTITY seam_curve
16726   SUBTYPE OF (surface_curve);
16727   WHERE
16728      WR1:
16729         SIZEOF(SELF\surface_curve.associated_geometry) = 2;
16730      WR2:
16731         associated_surface(SELF\surface_curve.associated_geometry[1]) = associated_surface(SELF\surface_curve.associated_geometry[2]);
16732      WR3:
16733         'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[1]);
16734      WR4:
16735         'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[2]);
16736END_ENTITY;
16737
16738-- IN AP214
16739ENTITY seam_edge
16740   SUBTYPE OF (oriented_edge);
16741      pcurve_reference : pcurve;
16742   WHERE
16743      wr1:
16744         ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(edge_element)) AND ('STEP_MERGED_CAD_SCHEMA.SEAM_CURVE' IN TYPEOF(edge_element\edge_curve.edge_geometry));
16745      wr2:
16746         pcurve_reference IN edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry;
16747END_ENTITY;
16748
16749ENTITY security_classification;
16750      name : label;
16751      purpose : text;
16752      security_level : security_classification_level;
16753END_ENTITY;
16754
16755ENTITY security_classification_assignment
16756   ABSTRACT SUPERTYPE;
16757      assigned_security_classification : security_classification;
16758   DERIVE
16759      role : object_role := get_role(SELF);
16760   WHERE
16761      WR1:
16762         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
16763END_ENTITY;
16764
16765ENTITY security_classification_level;
16766      name : label;
16767END_ENTITY;
16768
16769-- IN AP242
16770ENTITY selector_function
16771   SUBTYPE OF (maths_function, generic_literal);
16772      selector : input_selector;
16773      source_of_domain : maths_space_or_function;
16774   WHERE
16775      WR1:
16776         no_cyclic_domain_reference(source_of_domain, [ SELF ]);
16777      WR2:
16778         expression_is_constant(domain_from(source_of_domain));
16779END_ENTITY;
16780
16781-- IN AP242
16782ENTITY self_intersecting_curve
16783   SUBTYPE OF (self_intersecting_geometry);
16784      arc_length_separation_factor : REAL;
16785      interference_tolerance : length_measure;
16786      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
16787   WHERE
16788      WR1:
16789         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
16790      WR2:
16791         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE' ]);
16792      WR3:
16793         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE' ]);
16794      WR4:
16795         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
16796END_ENTITY;
16797
16798-- IN AP242
16799ENTITY self_intersecting_geometry
16800   ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_curve, self_intersecting_surface))
16801   SUBTYPE OF (inapt_geometry);
16802END_ENTITY;
16803
16804-- IN AP242
16805ENTITY self_intersecting_loop
16806   SUBTYPE OF (topology_related_to_self_intersecting_geometry);
16807      arc_length_distance_factor : REAL;
16808      interference_tolerance : length_measure;
16809      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
16810   WHERE
16811      WR1:
16812         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
16813      WR2:
16814         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' ]);
16815      WR3:
16816         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
16817      WR4:
16818         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
16819END_ENTITY;
16820
16821-- IN AP242
16822ENTITY self_intersecting_shell
16823   SUBTYPE OF (topology_related_to_self_intersecting_geometry);
16824      geodesic_separation_factor : REAL;
16825      interference_tolerance : length_measure;
16826      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
16827   WHERE
16828      WR1:
16829         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
16830      WR2:
16831         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
16832      WR3:
16833         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE', 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_FACE_SURFACE' ]);
16834      WR4:
16835         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
16836END_ENTITY;
16837
16838-- IN AP242
16839ENTITY self_intersecting_surface
16840   SUBTYPE OF (self_intersecting_geometry);
16841      geodesic_separation_factor : REAL;
16842      interference_tolerance : length_measure;
16843      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
16844   WHERE
16845      WR1:
16846         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
16847      WR2:
16848         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
16849      WR3:
16850         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE', 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ]);
16851      WR4:
16852         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
16853END_ENTITY;
16854
16855ENTITY serial_numbered_effectivity
16856   SUBTYPE OF (effectivity);
16857      effectivity_start_id : identifier;
16858      effectivity_end_id : OPTIONAL identifier;
16859END_ENTITY;
16860
16861-- IN AP242
16862ENTITY series_composed_function
16863   SUBTYPE OF (maths_function, multiple_arity_generic_expression);
16864      SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF maths_function;
16865   WHERE
16866      WR1:
16867         composable_sequence(SELF\multiple_arity_generic_expression.operands);
16868END_ENTITY;
16869
16870-- DIFF IN AP214
16871-- DIFF IN AP203e2
16872ENTITY shape_aspect
16873   SUPERTYPE OF (ONEOF(contacting_feature, datum, datum_feature, datum_target, datum_system, general_datum_reference));
16874      name : label;
16875      description : OPTIONAL text;
16876      of_shape : product_definition_shape;
16877      product_definitional : LOGICAL;
16878   DERIVE
16879      id : identifier := get_id_value(SELF);
16880   UNIQUE
16881      UR1 : id, of_shape;
16882   WHERE
16883      WR1:
16884         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
16885END_ENTITY;
16886
16887ENTITY shape_aspect_associativity
16888   SUBTYPE OF (shape_aspect_relationship);
16889   WHERE
16890      WR1:
16891         SELF.relating_shape_aspect.product_definitional;
16892      WR2:
16893         NOT SELF.related_shape_aspect.product_definitional;
16894END_ENTITY;
16895
16896-- DIFF IN AP214
16897-- DIFF IN AP203e2
16898ENTITY shape_aspect_deriving_relationship
16899   SUBTYPE OF (shape_aspect_relationship);
16900      SELF\shape_aspect_relationship.relating_shape_aspect : derived_shape_aspect;
16901END_ENTITY;
16902
16903ENTITY shape_aspect_relationship;
16904      name : label;
16905      description : OPTIONAL text;
16906      relating_shape_aspect : shape_aspect;
16907      related_shape_aspect : shape_aspect;
16908   DERIVE
16909      id : identifier := get_id_value(SELF);
16910   WHERE
16911      WR1:
16912         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
16913END_ENTITY;
16914
16915-- IN AP242
16916ENTITY shape_aspect_relationship_representation_association;
16917      represented_shape_aspect_relationship : shape_aspect_relationship;
16918      representing_representation_relationship : representation_relationship;
16919   WHERE
16920      WR1:
16921         ('STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(representing_representation_relationship\representation_relationship.rep_1)) AND ('STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(representing_representation_relationship\representation_relationship.rep_2));
16922      WR2:
16923         (represented_shape_aspect_relationship.relating_shape_aspect IN using_shape_aspect_of_shape_representation(representing_representation_relationship.rep_1)) AND (represented_shape_aspect_relationship.related_shape_aspect IN using_shape_aspect_of_shape_representation(representing_representation_relationship.rep_2));
16924      WR3:
16925         (find_representative_shape_representation_of_product_definition(using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect)).context_of_items :=: find_representative_shape_representation_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect).context_of_items) AND (find_representative_shape_representation_of_product_definition(using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect)).context_of_items :=: find_representative_shape_representation_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect).context_of_items);
16926      WR4:
16927         using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect) :<>: using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect);
16928      WR5:
16929         find_assembly_root([ using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.relating_shape_aspect) ]) :=: find_assembly_root([ using_product_definition_of_shape_aspect(represented_shape_aspect_relationship.related_shape_aspect) ]);
16930END_ENTITY;
16931
16932-- IN AP214
16933ENTITY shape_aspect_transition
16934   SUBTYPE OF (shape_aspect_relationship);
16935   WHERE
16936      wr1:
16937         SIZEOF(QUERY (pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect)| (SIZEOF(QUERY (pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect)| (SIZEOF(QUERY (item_1 <* pdr_1.used_representation.items| (SIZEOF(QUERY (item_2 <* pdr_2.used_representation.items| NOT (('STEP_MERGED_CAD_SCHEMA.' + 'EDGE' IN TYPEOF(item_1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE' IN TYPEOF(item_2)) XOR ('STEP_MERGED_CAD_SCHEMA.' + 'FACE' IN TYPEOF(item_1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'FACE' IN TYPEOF(item_2))))) > 0))) > 0))) > 0))) = 0;
16938      wr2:
16939         SIZEOF(QUERY (pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect)| (SIZEOF(QUERY (pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect)| (SIZEOF(QUERY (item_1 <* pdr_1.used_representation.items| (SIZEOF(QUERY (item_2 <* pdr_2.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.' + 'EDGE' IN TYPEOF(item_1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE' IN TYPEOF(item_2))) AND NOT ((((item_1\edge.edge_start :=: item_2\edge.edge_start) OR (item_1\edge.edge_start :=: item_2\edge.edge_end)) OR (item_1\edge.edge_end :=: item_2\edge.edge_start)) OR (item_1\edge.edge_end :=: item_2\edge.edge_end)))) > 0))) > 0))) > 0))) = 0;
16940      wr3:
16941         SIZEOF(QUERY (pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect)| (SIZEOF(QUERY (pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect)| (SIZEOF(QUERY (item_1 <* pdr_1.used_representation.items| (SIZEOF(QUERY (item_2 <* pdr_2.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.' + 'FACE' IN TYPEOF(item_1)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'FACE' IN TYPEOF(item_2))) AND (SIZEOF(QUERY (f_1 <* item_1\face.bounds| ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_LOOP' IN TYPEOF(f_1.bound)) AND (SIZEOF(QUERY (f_2 <* item_2\face.bounds| ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_LOOP' IN TYPEOF(f_2.bound)) AND (SIZEOF(QUERY (oe_1 <* f_1.bound\path.edge_list| (SIZEOF(QUERY (oe_2 <* f_2.bound\path.edge_list| (oe_1.edge_element :=: oe_2.edge_element))) = 0))) = 0))) = 0))) = 0))) = 0))) = 0))) = 0))) = 0;
16942      wr4:
16943         SELF.name IN [ 'g0', 'g1', 'g2' ];
16944END_ENTITY;
16945
16946-- IN AP242
16947ENTITY shape_criteria_representation_with_accuracy
16948   SUBTYPE OF (shape_data_quality_criteria_representation);
16949      required_general_accuracy : SET [1:?] OF shape_measurement_accuracy;
16950END_ENTITY;
16951
16952-- IN AP242
16953ENTITY shape_data_quality_assessment_by_logical_test
16954   SUBTYPE OF (data_quality_assessment_specification);
16955END_ENTITY;
16956
16957-- IN AP242
16958ENTITY shape_data_quality_assessment_by_numerical_test
16959   SUBTYPE OF (data_quality_assessment_specification);
16960      threshold : shape_data_quality_value_limit_type_select;
16961END_ENTITY;
16962
16963-- IN AP242
16964ENTITY shape_data_quality_criteria_representation
16965   SUBTYPE OF (data_quality_criteria_representation);
16966   WHERE
16967      WR1:
16968         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_CRITERION' IN TYPEOF(q)))) > 0;
16969END_ENTITY;
16970
16971-- IN AP242
16972ENTITY shape_data_quality_criterion
16973   SUPERTYPE OF (ONEOF(erroneous_data, inapt_data))
16974   SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
16975      assessment_specification : shape_data_quality_assessment_specification_select;
16976   WHERE
16977      WR1:
16978         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.' + 'CRITERION')) = 0;
16979      WR2:
16980         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_ITEM_RELATIONSHIP.' + 'RELATED_REPRESENTATION_ITEM'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN TYPEOF(i1)))) = 0;
16981      WR3:
16982         SIZEOF(QUERY (i1 <* bag_to_set(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_ITEM_RELATIONSHIP.' + 'RELATING_REPRESENTATION_ITEM'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN TYPEOF(i1)))) = 0;
16983END_ENTITY;
16984
16985-- IN AP242
16986ENTITY shape_data_quality_criterion_and_accuracy_association;
16987      required_specific_accuracy : shape_measurement_accuracy;
16988      shape_data_quality_criterion : shape_data_quality_criterion;
16989END_ENTITY;
16990
16991-- IN AP242
16992ENTITY shape_data_quality_inspected_shape_and_result_relationship
16993   SUBTYPE OF (shape_representation_relationship);
16994      SELF\representation_relationship.rep_1 : shape_representation;
16995      SELF\representation_relationship.rep_2 : shape_data_quality_inspection_result_representation;
16996   WHERE
16997      WR1:
16998         SIZEOF(using_product_definition_of_shape_representation(SELF.rep_1) * bag_to_set(inspected_product_definition(SELF.rep_2))) > 0;
16999      WR2:
17000         SELF.rep_1\representation.context_of_items :=: SELF.rep_2\representation.context_of_items;
17001END_ENTITY;
17002
17003-- IN AP242
17004ENTITY shape_data_quality_inspection_criterion_report
17005   SUBTYPE OF (data_quality_inspection_criterion_report);
17006      representative_measured_value : measured_value_select;
17007END_ENTITY;
17008
17009-- IN AP242
17010ENTITY shape_data_quality_inspection_instance_report
17011   SUBTYPE OF (data_quality_inspection_instance_report);
17012      SELF\data_quality_inspection_instance_report.inspected_instances : LIST [1:?] OF shape_data_quality_inspection_instance_report_item;
17013END_ENTITY;
17014
17015-- IN AP242
17016ENTITY shape_data_quality_inspection_instance_report_item
17017   SUBTYPE OF (data_quality_inspection_instance_report_item);
17018      measured_value : measured_value_select;
17019      SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1:?] OF inspected_shape_element_select;
17020END_ENTITY;
17021
17022-- IN AP242
17023ENTITY shape_data_quality_inspection_result
17024   SUBTYPE OF (data_quality_inspection_result);
17025      SELF\data_quality_inspection_result.criterion_inspected : shape_data_quality_criterion;
17026END_ENTITY;
17027
17028-- IN AP242
17029ENTITY shape_data_quality_inspection_result_representation
17030   SUBTYPE OF (data_quality_inspection_result_representation);
17031   WHERE
17032      WR1:
17033         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q)))) > 0;
17034      WR2:
17035         'STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
17036      WR3:
17037         SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.' + 'REP_2')) > 0;
17038END_ENTITY;
17039
17040-- IN AP242
17041ENTITY shape_data_quality_lower_value_limit
17042   SUBTYPE OF (shape_data_quality_value_limit);
17043   WHERE
17044      WR1:
17045         SELF\qualified_representation_item.qualifiers[1].name = 'minimum';
17046END_ENTITY;
17047
17048-- IN AP242
17049ENTITY shape_data_quality_upper_value_limit
17050   SUBTYPE OF (shape_data_quality_value_limit);
17051   WHERE
17052      WR1:
17053         SELF\qualified_representation_item.qualifiers[1].name = 'maximum';
17054END_ENTITY;
17055
17056-- IN AP242
17057ENTITY shape_data_quality_value_limit
17058   ABSTRACT SUPERTYPE OF (ONEOF(shape_data_quality_upper_value_limit, shape_data_quality_lower_value_limit))
17059   SUBTYPE OF (measure_representation_item, qualified_representation_item);
17060END_ENTITY;
17061
17062-- IN AP242
17063ENTITY shape_data_quality_value_range
17064   SUBTYPE OF (compound_representation_item);
17065   WHERE
17066      WR1:
17067         ('STEP_MERGED_CAD_SCHEMA.SET_REPRESENTATION_ITEM' IN TYPEOF(SELF\compound_representation_item.item_element)) AND ((SIZEOF(SELF\compound_representation_item.item_element) = 2) AND ((SIZEOF(QUERY (i1 <* SELF\compound_representation_item.item_element| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)))) = 2) OR (SIZEOF(QUERY (i2 <* SELF\compound_representation_item.item_element| ('STEP_MERGED_CAD_SCHEMA.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i2)))) = 2)));
17068      WR2:
17069         (SIZEOF(QUERY (i <* SELF\compound_representation_item.item_element| (i.name = 'upper limit'))) = 1) AND (SIZEOF(QUERY (i <* SELF\compound_representation_item.item_element| (i.name = 'lower limit'))) = 1);
17070      WR3:
17071         (SIZEOF(QUERY (i1 <* SELF\compound_representation_item.item_element| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND (SIZEOF(QUERY (i2 <* SELF\compound_representation_item.item_element| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i2)) AND (i1 :<>: i2)) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) OR (SIZEOF(QUERY (i1 <* SELF\compound_representation_item.item_element| ('STEP_MERGED_CAD_SCHEMA.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND (SIZEOF(QUERY (i2 <* SELF\compound_representation_item.item_element| (('STEP_MERGED_CAD_SCHEMA.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i2)) AND (i1 :<>: i2)) AND (TYPEOF(i1\value_representation_item.value_component) = TYPEOF(i2\value_representation_item.value_component)))) = 1))) = 2);
17072END_ENTITY;
17073
17074-- IN AP214/AP242
17075ENTITY shape_defining_relationship
17076   SUBTYPE OF (shape_aspect_relationship);
17077END_ENTITY;
17078
17079-- DIFF IN AP214
17080-- DIFF IN AP203e2
17081ENTITY shape_definition_representation
17082   SUBTYPE OF (property_definition_representation);
17083      SELF\property_definition_representation.definition : property_definition;
17084      SELF\property_definition_representation.used_representation : shape_representation;
17085   WHERE
17086      WR1:
17087         ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(definition)) OR ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION' IN TYPEOF(definition\property_definition.definition));
17088END_ENTITY;
17089
17090-- DIFF IN AP214
17091-- DIFF IN AP203e2
17092ENTITY shape_dimension_representation
17093   SUBTYPE OF (shape_representation);
17094      SELF\representation.items : SET [1:?] OF shape_dimension_representation_item;
17095END_ENTITY;
17096
17097-- DIFF IN AP203e2
17098-- IN AP203e2/AP242
17099ENTITY shape_feature_definition
17100   SUBTYPE OF (feature_definition);
17101END_ENTITY;
17102
17103-- IN AP242
17104ENTITY shape_inspection_result_accuracy_association;
17105      applied_specific_accuracy : shape_measurement_accuracy;
17106      shape_data_quality_result : shape_data_quality_inspection_result;
17107END_ENTITY;
17108
17109-- IN AP242
17110ENTITY shape_inspection_result_representation_with_accuracy
17111   SUBTYPE OF (shape_data_quality_inspection_result_representation);
17112      applied_general_accuracy : SET [1:?] OF shape_measurement_accuracy;
17113END_ENTITY;
17114
17115-- IN AP242
17116ENTITY shape_measurement_accuracy;
17117      description : text;
17118      range : shape_data_quality_value_limit_type_select;
17119END_ENTITY;
17120
17121ENTITY shape_representation
17122   SUBTYPE OF (representation);
17123END_ENTITY;
17124
17125ENTITY shape_representation_relationship
17126   SUBTYPE OF (representation_relationship);
17127   WHERE
17128      WR1:
17129         'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2);
17130END_ENTITY;
17131
17132-- DIFF IN AP214
17133-- DIFF IN AP203e2
17134ENTITY shape_representation_with_parameters
17135   SUBTYPE OF (shape_representation);
17136      SELF\representation.items : SET [1:?] OF shape_representation_with_parameters_items;
17137END_ENTITY;
17138
17139-- IN AP242
17140ENTITY shape_summary_request_with_representative_value
17141   SUBTYPE OF (summary_report_request);
17142END_ENTITY;
17143
17144ENTITY shell_based_surface_model
17145   SUBTYPE OF (geometric_representation_item);
17146      sbsm_boundary : SET [1:?] OF shell;
17147   WHERE
17148      WR1:
17149         constraints_geometry_shell_based_surface_model(SELF);
17150END_ENTITY;
17151
17152-- IN AP203e2/AP242
17153ENTITY shell_based_wireframe_model
17154   SUBTYPE OF (geometric_representation_item);
17155      sbwm_boundary : SET [1:?] OF shell;
17156   WHERE
17157      WR1:
17158         constraints_geometry_shell_based_wireframe_model(SELF);
17159END_ENTITY;
17160
17161-- IN AP203e2/AP242
17162ENTITY shell_based_wireframe_shape_representation
17163   SUBTYPE OF (shape_representation);
17164   WHERE
17165      WR1:
17166         SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM', 'STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) = 1))) = 0;
17167      WR2:
17168         SIZEOF(QUERY (it <* SELF.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL', 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) >= 1;
17169      WR3:
17170         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list| NOT ('STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' IN TYPEOF(el.edge_element)))) = 0))) = 0))) = 0))) = 0;
17171      WR4:
17172         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(wsb)))| NOT (SIZEOF(QUERY (pline_el <* QUERY (el <* eloop\path.edge_list| ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(el.edge_element\edge_curve.edge_geometry)))| NOT (SIZEOF(pline_el.edge_element\edge_curve.edge_geometry\polyline.points) > 2))) = 0))) = 0))) = 0))) = 0;
17173      WR5:
17174         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry))) = 0))) = 0))) = 0))) = 0;
17175      WR6:
17176         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list| NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(el.edge_element.edge_start)) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(el.edge_element.edge_end))))) = 0))) = 0))) = 0))) = 0;
17177      WR7:
17178         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (eloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' IN TYPEOF(wsb)))| NOT (SIZEOF(QUERY (el <* eloop\path.edge_list| NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)))) = 0))) = 0))) = 0))) = 0;
17179      WR8:
17180         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (vloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(wsb)))| NOT ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vloop\vertex_loop.loop_vertex)))) = 0))) = 0))) = 0;
17181      WR9:
17182         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (ws <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(sb)))| NOT (SIZEOF(QUERY (vloop <* QUERY (wsb <* ws\wire_shell.wire_shell_extent| ('STEP_MERGED_CAD_SCHEMA.VERTEX_LOOP' IN TYPEOF(wsb)))| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) = 0))) = 0))) = 0;
17183      WR10:
17184         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (vs <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.VERTEX_SHELL' IN TYPEOF(sb)))| NOT ('STEP_MERGED_CAD_SCHEMA.VERTEX_POINT' IN TYPEOF(vs\vertex_shell.vertex_shell_extent.loop_vertex)))) = 0))) = 0;
17185      WR11:
17186         SIZEOF(QUERY (sbwm <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF(it)))| NOT (SIZEOF(QUERY (vs <* QUERY (sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('STEP_MERGED_CAD_SCHEMA.VERTEX_SHELL' IN TYPEOF(sb)))| NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry))) = 0))) = 0;
17187      WR12:
17188         SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
17189      WR13:
17190         SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
17191END_ENTITY;
17192
17193-- IN AP203e2/AP242
17194ENTITY shelled_solid
17195   SUPERTYPE OF (ONEOF(double_offset_shelled_solid, complex_shelled_solid))
17196   SUBTYPE OF (modified_solid);
17197      deleted_face_set : SET [1:?] OF face_surface;
17198      thickness : length_measure;
17199   WHERE
17200      WR1:
17201         thickness <> 0;
17202END_ENTITY;
17203
17204-- IN AP242
17205ENTITY short_length_curve
17206   SUBTYPE OF (nearly_degenerate_geometry);
17207      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17208   WHERE
17209      WR1:
17210         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17211      WR2:
17212         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
17213      WR3:
17214         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CURVE' ]);
17215      WR4:
17216         validate_locations_of_extreme_value_type(SELF, []);
17217      WR5:
17218         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
17219END_ENTITY;
17220
17221-- IN AP242
17222ENTITY short_length_curve_segment
17223   SUBTYPE OF (geometry_with_local_near_degeneracy);
17224      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17225   WHERE
17226      WR1:
17227         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17228      WR2:
17229         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
17230      WR3:
17231         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' ]);
17232      WR4:
17233         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_CURVE_SEGMENT' ]);
17234      WR5:
17235         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
17236END_ENTITY;
17237
17238-- IN AP242
17239ENTITY short_length_edge
17240   SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
17241      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17242   WHERE
17243      WR1:
17244         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17245      WR2:
17246         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
17247      WR3:
17248         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_CURVE' ]);
17249      WR4:
17250         validate_locations_of_extreme_value_type(SELF, []);
17251      WR5:
17252         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
17253END_ENTITY;
17254
17255-- IN AP203e2/AP242
17256ENTITY si_absorbed_dose_unit
17257   SUBTYPE OF (absorbed_dose_unit, si_unit);
17258   WHERE
17259      WR1:
17260         SELF\si_unit.name = si_unit_name.gray;
17261      WR2:
17262         NOT EXISTS(SELF\derived_unit.name);
17263END_ENTITY;
17264
17265-- IN AP203e2/AP242
17266ENTITY si_capacitance_unit
17267   SUBTYPE OF (capacitance_unit, si_unit);
17268   WHERE
17269      WR1:
17270         SELF\si_unit.name = si_unit_name.farad;
17271      WR2:
17272         NOT EXISTS(SELF\derived_unit.name);
17273END_ENTITY;
17274
17275-- IN AP203e2/AP242
17276ENTITY si_conductance_unit
17277   SUBTYPE OF (conductance_unit, si_unit);
17278   WHERE
17279      WR1:
17280         SELF\si_unit.name = si_unit_name.siemens;
17281      WR2:
17282         NOT EXISTS(SELF\derived_unit.name);
17283END_ENTITY;
17284
17285-- IN AP203e2/AP242
17286ENTITY si_dose_equivalent_unit
17287   SUBTYPE OF (dose_equivalent_unit, si_unit);
17288   WHERE
17289      WR1:
17290         SELF\si_unit.name = si_unit_name.sievert;
17291      WR2:
17292         NOT EXISTS(SELF\derived_unit.name);
17293END_ENTITY;
17294
17295-- IN AP203e2/AP242
17296ENTITY si_electric_charge_unit
17297   SUBTYPE OF (electric_charge_unit, si_unit);
17298   WHERE
17299      WR1:
17300         SELF\si_unit.name = si_unit_name.coulomb;
17301      WR2:
17302         NOT EXISTS(SELF\derived_unit.name);
17303END_ENTITY;
17304
17305-- IN AP203e2/AP242
17306ENTITY si_electric_potential_unit
17307   SUBTYPE OF (electric_potential_unit, si_unit);
17308   WHERE
17309      WR1:
17310         SELF\si_unit.name = si_unit_name.volt;
17311      WR2:
17312         NOT EXISTS(SELF\derived_unit.name);
17313END_ENTITY;
17314
17315-- IN AP203e2/AP242
17316ENTITY si_energy_unit
17317   SUBTYPE OF (energy_unit, si_unit);
17318   WHERE
17319      WR1:
17320         SELF\si_unit.name = si_unit_name.joule;
17321      WR2:
17322         NOT EXISTS(SELF\derived_unit.name);
17323END_ENTITY;
17324
17325-- IN AP203e2/AP242
17326ENTITY si_force_unit
17327   SUBTYPE OF (force_unit, si_unit);
17328   WHERE
17329      WR1:
17330         SELF\si_unit.name = si_unit_name.newton;
17331      WR2:
17332         NOT EXISTS(SELF\derived_unit.name);
17333END_ENTITY;
17334
17335-- IN AP203e2/AP242
17336ENTITY si_frequency_unit
17337   SUBTYPE OF (frequency_unit, si_unit);
17338   WHERE
17339      WR1:
17340         SELF\si_unit.name = si_unit_name.hertz;
17341      WR2:
17342         NOT EXISTS(SELF\derived_unit.name);
17343END_ENTITY;
17344
17345-- IN AP203e2/AP242
17346ENTITY si_illuminance_unit
17347   SUBTYPE OF (illuminance_unit, si_unit);
17348   WHERE
17349      WR1:
17350         SELF\si_unit.name = si_unit_name.lux;
17351      WR2:
17352         NOT EXISTS(SELF\derived_unit.name);
17353END_ENTITY;
17354
17355-- IN AP203e2/AP242
17356ENTITY si_inductance_unit
17357   SUBTYPE OF (inductance_unit, si_unit);
17358   WHERE
17359      WR1:
17360         SELF\si_unit.name = si_unit_name.henry;
17361      WR2:
17362         NOT EXISTS(SELF\derived_unit.name);
17363END_ENTITY;
17364
17365-- IN AP203e2/AP242
17366ENTITY si_magnetic_flux_density_unit
17367   SUBTYPE OF (magnetic_flux_density_unit, si_unit);
17368   WHERE
17369      WR1:
17370         SELF\si_unit.name = si_unit_name.tesla;
17371      WR2:
17372         NOT EXISTS(SELF\derived_unit.name);
17373END_ENTITY;
17374
17375-- IN AP203e2/AP242
17376ENTITY si_magnetic_flux_unit
17377   SUBTYPE OF (magnetic_flux_unit, si_unit);
17378   WHERE
17379      WR1:
17380         SELF\si_unit.name = si_unit_name.weber;
17381      WR2:
17382         NOT EXISTS(SELF\derived_unit.name);
17383END_ENTITY;
17384
17385-- IN AP203e2/AP242
17386ENTITY si_power_unit
17387   SUBTYPE OF (power_unit, si_unit);
17388   WHERE
17389      WR1:
17390         SELF\si_unit.name = si_unit_name.watt;
17391      WR2:
17392         NOT EXISTS(SELF\derived_unit.name);
17393END_ENTITY;
17394
17395-- IN AP203e2/AP242
17396ENTITY si_pressure_unit
17397   SUBTYPE OF (pressure_unit, si_unit);
17398   WHERE
17399      WR1:
17400         SELF\si_unit.name = si_unit_name.pascal;
17401      WR2:
17402         NOT EXISTS(SELF\derived_unit.name);
17403END_ENTITY;
17404
17405-- IN AP203e2/AP242
17406ENTITY si_radioactivity_unit
17407   SUBTYPE OF (radioactivity_unit, si_unit);
17408   WHERE
17409      WR1:
17410         SELF\si_unit.name = si_unit_name.becquerel;
17411      WR2:
17412         NOT EXISTS(SELF\derived_unit.name);
17413END_ENTITY;
17414
17415-- IN AP203e2/AP242
17416ENTITY si_resistance_unit
17417   SUBTYPE OF (resistance_unit, si_unit);
17418   WHERE
17419      WR1:
17420         SELF\si_unit.name = si_unit_name.ohm;
17421      WR2:
17422         NOT EXISTS(SELF\derived_unit.name);
17423END_ENTITY;
17424
17425ENTITY si_unit
17426   SUBTYPE OF (named_unit);
17427      prefix : OPTIONAL si_prefix;
17428      name : si_unit_name;
17429   DERIVE
17430      SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name);
17431   WHERE
17432      WR1:
17433         NOT (('STEP_MERGED_CAD_SCHEMA.MASS_UNIT' IN TYPEOF(SELF)) AND (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR (prefix = si_prefix.kilo);
17434END_ENTITY;
17435
17436-- DIFF IN AP203e2
17437ENTITY simple_boolean_expression
17438   ABSTRACT SUPERTYPE OF (ONEOF(boolean_literal, boolean_variable))
17439   SUBTYPE OF (boolean_expression, simple_generic_expression);
17440END_ENTITY;
17441
17442-- IN AP203e2/AP242
17443ENTITY simple_clause
17444   SUBTYPE OF (compound_representation_item);
17445END_ENTITY;
17446
17447ENTITY simple_generic_expression
17448   ABSTRACT SUPERTYPE OF (ONEOF(generic_literal, generic_variable))
17449   SUBTYPE OF (generic_expression);
17450END_ENTITY;
17451
17452-- DIFF IN AP203e2
17453ENTITY simple_numeric_expression
17454   ABSTRACT SUPERTYPE OF (ONEOF(literal_number, numeric_variable))
17455   SUBTYPE OF (numeric_expression, simple_generic_expression);
17456END_ENTITY;
17457
17458-- IN AP214
17459ENTITY simple_pair_range;
17460      applies_to_pair : kinematic_pair;
17461END_ENTITY;
17462
17463-- IN AP214/AP242
17464ENTITY simple_string_expression
17465   ABSTRACT SUPERTYPE OF (ONEOF(string_literal, string_variable))
17466   SUBTYPE OF (string_expression, simple_generic_expression);
17467END_ENTITY;
17468
17469-- IN AP242
17470ENTITY simultaneous_constraint_group
17471   SUBTYPE OF (variational_representation_item);
17472      constraint_group : SET [2:?] OF constraint_group_member;
17473   WHERE
17474      WR1:
17475         SIZEOF(QUERY (q <* using_representations(SELF)| (SIZEOF(QUERY (r <* q.items| ('STEP_MERGED_CAD_SCHEMA.SIMULTANEOUS_CONSTRAINT_GROUP' IN TYPEOF(r)) AND (SIZEOF(QUERY (s <* constraint_group| (s IN r\simultaneous_constraint_group.constraint_group) AND NOT (r :=: SELF))) > 0))) > 0))) = 0;
17476      WR2:
17477         SIZEOF(QUERY (q <* using_representations(constraint_group[1])| (SIZEOF(QUERY (r <* constraint_group| item_in_context(r, q.context_of_items))) = SIZEOF(constraint_group)))) > 0;
17478      WR3:
17479         SIZEOF(QUERY (q <* constraint_group| ('STEP_MERGED_CAD_SCHEMA.EXPLICIT_CONSTRAINT' IN TYPEOF(q)) AND (SIZEOF(QUERY (r <* q.constrained_elements| (SIZEOF(QUERY (s <* constraint_group| (r IN s.reference_elements))) > 0))) > 0))) = 0;
17480END_ENTITY;
17481
17482-- IN AP214/AP242
17483ENTITY sin_function
17484   SUBTYPE OF (unary_function_call);
17485END_ENTITY;
17486
17487-- IN AP242
17488ENTITY single_area_csg_2d_shape_representation
17489   SUBTYPE OF (csg_2d_shape_representation);
17490      SELF\representation.items : SET [1:?] OF csg_2d_area_select;
17491   WHERE
17492      WR1:
17493         SIZEOF(QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))) = 0;
17494      WR2:
17495         SIZEOF(QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CSG_SOLID_2D' IN TYPEOF(it)))) = 1;
17496END_ENTITY;
17497
17498-- IN AP242
17499ENTITY single_boundary_csg_2d_shape_representation
17500   SUBTYPE OF (single_area_csg_2d_shape_representation);
17501   WHERE
17502      WR1:
17503         SIZEOF(QUERY (it <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.CSG_PRIMITIVE_SOLID_2D' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN TYPEOF(it\csg_primitive_solid_2d.tree_root_expression)))) = 0;
17504END_ENTITY;
17505
17506-- IN AP242
17507ENTITY single_property_is_definition
17508   SUBTYPE OF (property_definition);
17509      SELF\property_definition.definition : product_definition;
17510   UNIQUE
17511      UR1 : definition;
17512END_ENTITY;
17513
17514-- IN AP242
17515ENTITY skew_line_distance_geometric_constraint
17516   SUBTYPE OF (explicit_geometric_constraint);
17517      distance_value : non_negative_length_measure;
17518      SELF\explicit_constraint.constrained_elements : SET [1:2] OF line;
17519      SELF\explicit_constraint.reference_elements : SET [0:1] OF line;
17520   WHERE
17521      WR1:
17522         SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) = 2;
17523END_ENTITY;
17524
17525ENTITY slash_expression
17526   SUBTYPE OF (binary_numeric_expression);
17527END_ENTITY;
17528
17529-- IN AP214/AP242
17530ENTITY sliding_curve_pair
17531   SUBTYPE OF (planar_curve_pair);
17532END_ENTITY;
17533
17534-- DIFF IN AP214
17535-- IN AP214/AP242
17536ENTITY sliding_curve_pair_value
17537   SUBTYPE OF (pair_value);
17538      actual_point_on_curve_1 : point_on_curve;
17539      actual_point_on_curve_2 : point_on_curve;
17540      SELF\pair_value.applies_to_pair : sliding_curve_pair;
17541   WHERE
17542      WR1:
17543         SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve;
17544      WR2:
17545         SELF\pair_value.applies_to_pair\planar_curve_pair.curve_2 :=: actual_point_on_curve_2.basis_curve;
17546END_ENTITY;
17547
17548-- IN AP214/AP242
17549ENTITY sliding_surface_pair
17550   SUBTYPE OF (surface_pair);
17551END_ENTITY;
17552
17553-- DIFF IN AP214
17554-- IN AP214/AP242
17555ENTITY sliding_surface_pair_value
17556   SUBTYPE OF (pair_value);
17557      actual_point_on_surface_1 : point_on_surface;
17558      actual_point_on_surface_2 : point_on_surface;
17559      actual_rotation : plane_angle_measure;
17560      SELF\pair_value.applies_to_pair : sliding_surface_pair;
17561   WHERE
17562      WR1:
17563         SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface_1.basis_surface;
17564      WR2:
17565         SELF\pair_value.applies_to_pair\surface_pair.surface_2 :=: actual_point_on_surface_2.basis_surface;
17566END_ENTITY;
17567
17568-- IN AP214/AP242
17569ENTITY slot
17570   SUBTYPE OF (feature_definition);
17571   WHERE
17572      WR1:
17573         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
17574      WR2:
17575         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'swept shape occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SQUARE_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_U_PROFILE', 'STEP_MERGED_CAD_SCHEMA.VEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.TEE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.relating_shape_aspect)) = 1))) = 1))) = 1))) = 0;
17576      WR3:
17577         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ((sar.name = 'course of travel') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))))| ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
17578      WR4:
17579         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT ((SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((sar.description = 'slot end usage') AND (sar.name IN [ 'course of travel start', 'course of travel end' ])) AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN [ 'open', 'radiused', 'flat', 'woodruff' ])) AND ('STEP_MERGED_CAD_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 2) OR (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((sar.description = 'slot end usage') AND (sar.name IN [ 'course of travel start', 'course of travel end' ])) AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN [ 'loop' ])) AND ('STEP_MERGED_CAD_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 1)))) = 0;
17580      WR5:
17581         NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| ((sar.description = 'slot end usage') AND (sar.name IN [ 'course of travel start', 'course of travel end' ])) AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (('STEP_MERGED_CAD_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN [ 'loop' ])) AND ('STEP_MERGED_CAD_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) = 1))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ((sar.name = 'course of travel') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))))| ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description IN [ 'complex', 'complete circular' ]))) = 1))) = 1))) = 0);
17582      WR6:
17583         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
17584END_ENTITY;
17585
17586-- IN AP214/AP242
17587ENTITY slot_end
17588   SUBTYPE OF (shape_aspect);
17589   WHERE
17590      WR1:
17591         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
17592      WR2:
17593         SELF.description IN [ 'open', 'radiused', 'flat', 'woodruff', 'loop' ];
17594      WR3:
17595         NOT (SELF.description IN [ 'open', 'radiused', 'loop' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
17596      WR4:
17597         NOT (SELF.description IN [ 'flat', 'woodruff' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
17598      WR5:
17599         NOT (SELF.description IN [ 'flat' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 2))) = 0))) = 0);
17600      WR6:
17601         NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first radius'))) = 1))) = 0))) = 0);
17602      WR7:
17603         NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second radius'))) = 1))) = 0))) = 0);
17604      WR8:
17605         NOT (SELF.description = 'woodruff') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
17606      WR9:
17607         NOT (SELF.description IN [ 'woodruff' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0);
17608      WR10:
17609         SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT')| ((sar.description = 'slot end usage') AND (sar.name IN [ 'course of travel start', 'course of travel end' ])) AND ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description = 'end condition occurrence') AND ('STEP_MERGED_CAD_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('STEP_MERGED_CAD_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)))) >= 1;
17610END_ENTITY;
17611
17612-- IN AP242
17613ENTITY small_area_face
17614   SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
17615      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17616   WHERE
17617      WR1:
17618         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17619      WR2:
17620         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
17621      WR3:
17622         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
17623      WR4:
17624         validate_locations_of_extreme_value_type(SELF, []);
17625      WR5:
17626         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
17627END_ENTITY;
17628
17629-- IN AP242
17630ENTITY small_area_surface
17631   SUBTYPE OF (nearly_degenerate_geometry);
17632      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17633   WHERE
17634      WR1:
17635         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17636      WR2:
17637         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
17638      WR3:
17639         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
17640      WR4:
17641         validate_locations_of_extreme_value_type(SELF, []);
17642      WR5:
17643         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
17644END_ENTITY;
17645
17646-- IN AP242
17647ENTITY small_area_surface_patch
17648   SUBTYPE OF (geometry_with_local_near_degeneracy);
17649      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17650   WHERE
17651      WR1:
17652         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17653      WR2:
17654         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE');
17655      WR3:
17656         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' ]);
17657      WR4:
17658         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_PATCH' ]);
17659      WR5:
17660         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' ]);
17661END_ENTITY;
17662
17663-- IN AP242
17664ENTITY small_volume_solid
17665   SUBTYPE OF (inapt_manifold_solid_brep);
17666      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17667   WHERE
17668      WR1:
17669         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.VOLUME_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17670      WR2:
17671         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.VOLUME_MEASURE');
17672      WR3:
17673         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' ]);
17674      WR4:
17675         validate_locations_of_extreme_value_type(SELF, []);
17676      WR5:
17677         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.VOLUME_MEASURE' ]);
17678END_ENTITY;
17679
17680-- IN AP203e2/AP242
17681ENTITY smeared_material_definition
17682   SUBTYPE OF (zone_structural_makeup);
17683END_ENTITY;
17684
17685-- IN AP242
17686ENTITY software_for_data_quality_check;
17687      description : text;
17688      software_name : text;
17689      software_version : text;
17690      data_quality : data_quality_definition_representation_relationship;
17691END_ENTITY;
17692
17693ENTITY solid_angle_measure_with_unit
17694   SUBTYPE OF (measure_with_unit);
17695   WHERE
17696      WR1:
17697         'STEP_MERGED_CAD_SCHEMA.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
17698END_ENTITY;
17699
17700ENTITY solid_angle_unit
17701   SUBTYPE OF (named_unit);
17702   WHERE
17703      WR1:
17704         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
17705END_ENTITY;
17706
17707-- IN AP203e2/AP242
17708ENTITY solid_curve_font
17709   SUBTYPE OF (pre_defined_curve_font);
17710END_ENTITY;
17711
17712ENTITY solid_model
17713   SUPERTYPE OF (ONEOF(csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica))
17714   SUBTYPE OF (geometric_representation_item);
17715END_ENTITY;
17716
17717ENTITY solid_replica
17718   SUBTYPE OF (solid_model);
17719      parent_solid : solid_model;
17720      transformation : cartesian_transformation_operator_3d;
17721   WHERE
17722      WR1:
17723         acyclic_solid_replica(SELF, parent_solid);
17724      WR2:
17725         parent_solid\geometric_representation_item.dim = 3;
17726END_ENTITY;
17727
17728-- IN AP203e2/AP242
17729ENTITY solid_with_angle_based_chamfer
17730   SUBTYPE OF (solid_with_chamfered_edges);
17731      offset_distance : positive_length_measure;
17732      left_offset : BOOLEAN;
17733      offset_angle : positive_plane_angle_measure;
17734END_ENTITY;
17735
17736-- IN AP203e2/AP242
17737ENTITY solid_with_chamfered_edges
17738   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer))
17739   SUBTYPE OF (edge_blended_solid);
17740END_ENTITY;
17741
17742-- IN AP203e2/AP242
17743ENTITY solid_with_circular_pattern
17744   SUPERTYPE OF (solid_with_incomplete_circular_pattern)
17745   SUBTYPE OF (solid_with_shape_element_pattern);
17746      replicate_count : positive_integer;
17747      angular_spacing : plane_angle_measure;
17748      radial_alignment : BOOLEAN;
17749      reference_point : point;
17750END_ENTITY;
17751
17752-- IN AP203e2/AP242
17753ENTITY solid_with_circular_pocket
17754   SUBTYPE OF (solid_with_pocket);
17755      pocket_radius : positive_length_measure;
17756   WHERE
17757      WR1:
17758         SELF\solid_with_pocket.floor_blend_radius <= pocket_radius;
17759END_ENTITY;
17760
17761-- IN AP203e2/AP242
17762ENTITY solid_with_circular_protrusion
17763   SUBTYPE OF (solid_with_protrusion);
17764      protrusion_radius : positive_length_measure;
17765END_ENTITY;
17766
17767-- IN AP203e2/AP242
17768ENTITY solid_with_conical_bottom_round_hole
17769   SUBTYPE OF (solid_with_stepped_round_hole);
17770      semi_apex_angle : positive_plane_angle_measure;
17771      tip_radius : non_negative_length_measure;
17772   WHERE
17773      WR1:
17774         tip_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments];
17775END_ENTITY;
17776
17777-- IN AP203e2/AP242
17778ENTITY solid_with_constant_radius_edge_blend
17779   SUBTYPE OF (edge_blended_solid);
17780      radius : positive_length_measure;
17781END_ENTITY;
17782
17783-- IN AP203e2/AP242
17784ENTITY solid_with_curved_slot
17785   SUBTYPE OF (solid_with_slot);
17786      slot_centreline : bounded_curve;
17787END_ENTITY;
17788
17789-- IN AP203e2/AP242
17790ENTITY solid_with_depression
17791   ABSTRACT SUPERTYPE OF (solid_with_through_depression ANDOR ONEOF(solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove))
17792   SUBTYPE OF (modified_solid_with_placed_configuration);
17793      depth : positive_length_measure;
17794END_ENTITY;
17795
17796-- IN AP203e2/AP242
17797ENTITY solid_with_double_offset_chamfer
17798   SUBTYPE OF (solid_with_chamfered_edges);
17799      left_offset_distance : positive_length_measure;
17800      right_offset_distance : positive_length_measure;
17801END_ENTITY;
17802
17803-- IN AP242
17804ENTITY solid_with_excessive_number_of_voids
17805   SUBTYPE OF (inapt_manifold_solid_brep);
17806      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17807   WHERE
17808      WR1:
17809         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
17810      WR2:
17811         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
17812      WR3:
17813         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SOLID_BREP' ]);
17814      WR4:
17815         validate_locations_of_extreme_value_type(SELF, []);
17816      WR5:
17817         validate_accuracy_types(SELF, []);
17818END_ENTITY;
17819
17820-- IN AP203e2/AP242
17821ENTITY solid_with_flat_bottom_round_hole
17822   SUBTYPE OF (solid_with_stepped_round_hole);
17823      fillet_radius : non_negative_length_measure;
17824   WHERE
17825      WR1:
17826         fillet_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments];
17827END_ENTITY;
17828
17829-- IN AP203e2/AP242
17830ENTITY solid_with_general_pocket
17831   SUBTYPE OF (solid_with_pocket);
17832      profile : positioned_sketch;
17833      reference_point : point;
17834   WHERE
17835      WR1:
17836         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE', 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ] * TYPEOF(profile.sketch_basis)) = 1;
17837      WR2:
17838         profile IN using_items(reference_point, []);
17839END_ENTITY;
17840
17841-- IN AP203e2/AP242
17842ENTITY solid_with_general_protrusion
17843   SUBTYPE OF (solid_with_protrusion);
17844      profile : positioned_sketch;
17845      reference_point : point;
17846   WHERE
17847      WR1:
17848         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE', 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ] * TYPEOF(profile.sketch_basis)) = 1;
17849      WR2:
17850         profile IN using_items(reference_point, []);
17851END_ENTITY;
17852
17853-- IN AP203e2/AP242
17854ENTITY solid_with_groove
17855   SUBTYPE OF (solid_with_depression);
17856      groove_radius : positive_length_measure;
17857      groove_width : positive_length_measure;
17858      draft_angle : plane_angle_measure;
17859      floor_fillet_radius : non_negative_length_measure;
17860      external_groove : BOOLEAN;
17861   WHERE
17862      WR1:
17863         NOT ('STEP_MERGED_CAD_SCHEMA.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF));
17864END_ENTITY;
17865
17866-- IN AP203e2/AP242
17867ENTITY solid_with_hole
17868   ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole)
17869   SUBTYPE OF (solid_with_depression);
17870END_ENTITY;
17871
17872-- IN AP203e2/AP242
17873ENTITY solid_with_incomplete_circular_pattern
17874   SUBTYPE OF (solid_with_circular_pattern);
17875      omitted_instances : SET [1:?] OF positive_integer;
17876   WHERE
17877      WR1:
17878         SIZEOF(omitted_instances) < SELF\solid_with_circular_pattern.replicate_count;
17879      WR2:
17880         SIZEOF(QUERY (q <* omitted_instances| (q > SELF\solid_with_circular_pattern.replicate_count))) = 0;
17881END_ENTITY;
17882
17883-- IN AP203e2/AP242
17884ENTITY solid_with_incomplete_rectangular_pattern
17885   SUBTYPE OF (solid_with_rectangular_pattern);
17886      omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer;
17887   WHERE
17888      WR1:
17889         NOT ([ 1, 1 ] IN omitted_instances);
17890      WR2:
17891         SIZEOF(omitted_instances) < SELF\solid_with_rectangular_pattern.row_count * SELF\solid_with_rectangular_pattern.column_count - 1;
17892      WR3:
17893         SIZEOF(QUERY (q <* omitted_instances| (q[1] > SELF\solid_with_rectangular_pattern.row_count) OR (q[2] > SELF\solid_with_rectangular_pattern.column_count))) = 0;
17894END_ENTITY;
17895
17896-- IN AP203e2/AP242
17897ENTITY solid_with_pocket
17898   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket))
17899   SUBTYPE OF (solid_with_depression);
17900      floor_blend_radius : non_negative_length_measure;
17901      draft_angle : plane_angle_measure;
17902END_ENTITY;
17903
17904-- IN AP203e2/AP242
17905ENTITY solid_with_protrusion
17906   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion))
17907   SUBTYPE OF (modified_solid_with_placed_configuration);
17908      protrusion_height : positive_length_measure;
17909      protrusion_draft_angle : plane_angle_measure;
17910END_ENTITY;
17911
17912-- IN AP203e2/AP242
17913ENTITY solid_with_rectangular_pattern
17914   SUPERTYPE OF (solid_with_incomplete_rectangular_pattern)
17915   SUBTYPE OF (solid_with_shape_element_pattern);
17916      row_count : positive_integer;
17917      column_count : positive_integer;
17918      row_spacing : length_measure;
17919      column_spacing : length_measure;
17920   WHERE
17921      WR1:
17922         row_count * column_count > 1;
17923END_ENTITY;
17924
17925-- IN AP203e2/AP242
17926ENTITY solid_with_rectangular_pocket
17927   SUBTYPE OF (solid_with_pocket);
17928      pocket_length : positive_length_measure;
17929      pocket_width : positive_length_measure;
17930      corner_radius : non_negative_length_measure;
17931   WHERE
17932      WR1:
17933         (corner_radius < pocket_width / 2) AND (corner_radius < pocket_length / 2);
17934END_ENTITY;
17935
17936-- IN AP203e2/AP242
17937ENTITY solid_with_rectangular_protrusion
17938   SUBTYPE OF (solid_with_protrusion);
17939      protrusion_length : positive_length_measure;
17940      protrusion_width : positive_length_measure;
17941      protrusion_corner_radius : non_negative_length_measure;
17942   WHERE
17943      WR1:
17944         (protrusion_corner_radius <= protrusion_width / 2) AND (protrusion_corner_radius <= protrusion_length / 2);
17945END_ENTITY;
17946
17947-- IN AP203e2/AP242
17948ENTITY solid_with_shape_element_pattern
17949   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_pattern, solid_with_rectangular_pattern))
17950   SUBTYPE OF (modified_solid_with_placed_configuration);
17951      replicated_element : modified_solid_with_placed_configuration;
17952END_ENTITY;
17953
17954-- IN AP203e2/AP242
17955ENTITY solid_with_single_offset_chamfer
17956   SUBTYPE OF (solid_with_chamfered_edges);
17957      offset_distance : positive_length_measure;
17958END_ENTITY;
17959
17960-- IN AP203e2/AP242
17961ENTITY solid_with_slot
17962   ABSTRACT SUPERTYPE OF (ONEOF(solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF(solid_with_straight_slot, solid_with_curved_slot))
17963   SUBTYPE OF (solid_with_depression);
17964      slot_width : positive_length_measure;
17965      closed_ends : LIST [2:2] OF LOGICAL;
17966      end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface;
17967   WHERE
17968      WR1:
17969         NOT (('STEP_MERGED_CAD_SCHEMA.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) AND (closed_ends = [ FALSE, FALSE ]));
17970      WR2:
17971         NOT ((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0) OR (closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0));
17972END_ENTITY;
17973
17974-- IN AP203e2/AP242
17975ENTITY solid_with_spherical_bottom_round_hole
17976   SUBTYPE OF (solid_with_stepped_round_hole);
17977      sphere_radius : positive_length_measure;
17978   WHERE
17979      WR1:
17980         sphere_radius >= SELF\solid_with_stepped_round_hole.segment_radii[segments];
17981END_ENTITY;
17982
17983-- IN AP203e2/AP242
17984ENTITY solid_with_stepped_round_hole
17985   SUPERTYPE OF (solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF(solid_with_flat_bottom_round_hole, solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole))
17986   SUBTYPE OF (solid_with_hole);
17987      segments : positive_integer;
17988      segment_radii : LIST [1:segments] OF positive_length_measure;
17989      segment_depths : LIST [1:segments] OF positive_length_measure;
17990   DERIVE
17991      SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF);
17992   WHERE
17993      WR1:
17994         NOT (('STEP_MERGED_CAD_SCHEMA.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) * [ 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE' ]) <> 0));
17995END_ENTITY;
17996
17997-- IN AP203e2/AP242
17998ENTITY solid_with_stepped_round_hole_and_conical_transitions
17999   SUBTYPE OF (solid_with_stepped_round_hole);
18000      conical_transitions : SET [1:?] OF conical_stepped_hole_transition;
18001   WHERE
18002      WR1:
18003         SIZEOF(conical_transitions) <= SELF\solid_with_stepped_round_hole.segments + 1;
18004      WR2:
18005         ('STEP_MERGED_CAD_SCHEMA.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <= SELF\solid_with_stepped_round_hole.segments);
18006      WR3:
18007         validate_countersink_radii(SELF);
18008END_ENTITY;
18009
18010-- IN AP203e2/AP242
18011ENTITY solid_with_straight_slot
18012   SUBTYPE OF (solid_with_slot);
18013      slot_length : positive_length_measure;
18014END_ENTITY;
18015
18016-- IN AP203e2/AP242
18017ENTITY solid_with_tee_section_slot
18018   SUBTYPE OF (solid_with_slot);
18019      tee_section_width : positive_length_measure;
18020      collar_depth : positive_length_measure;
18021   WHERE
18022      WR1:
18023         collar_depth < SELF\solid_with_depression.depth;
18024      WR2:
18025         tee_section_width > SELF\solid_with_slot.slot_width;
18026END_ENTITY;
18027
18028-- IN AP203e2/AP242
18029ENTITY solid_with_through_depression
18030   SUBTYPE OF (solid_with_depression);
18031      exit_faces : SET [1:?] OF face_surface;
18032   WHERE
18033      WR1:
18034         SIZEOF(TYPEOF(SELF) * [ 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_HOLE', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_POCKET', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_SLOT' ]) = 1;
18035END_ENTITY;
18036
18037-- IN AP203e2/AP242
18038ENTITY solid_with_trapezoidal_section_slot
18039   SUBTYPE OF (solid_with_slot);
18040      draft_angle : plane_angle_measure;
18041      floor_fillet_radius : non_negative_length_measure;
18042END_ENTITY;
18043
18044-- DIFF IN AP203e2
18045-- IN AP203e2/AP242
18046ENTITY solid_with_variable_radius_edge_blend
18047   SUBTYPE OF (track_blended_solid);
18048      point_list : LIST [2:?] OF point;
18049      radius_list : LIST [2:?] OF positive_length_measure;
18050      edge_function_list : LIST [1:?] OF blend_radius_variation_type;
18051   WHERE
18052      WR1:
18053         SIZEOF(point_list) = SIZEOF(radius_list);
18054      WR2:
18055         SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1;
18056      WR3:
18057         NOT ((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT (radius_list[1] = radius_list[HIINDEX(radius_list)]));
18058END_ENTITY;
18059
18060-- IN AP242
18061ENTITY solid_with_wrong_number_of_voids
18062   SUBTYPE OF (erroneous_manifold_solid_brep);
18063      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
18064   WHERE
18065      WR1:
18066         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
18067      WR2:
18068         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' ]);
18069      WR3:
18070         validate_locations_of_extreme_value_type(SELF, []);
18071      WR4:
18072         validate_accuracy_types(SELF, []);
18073END_ENTITY;
18074
18075-- IN AP203e2/AP242
18076ENTITY source_for_requirement
18077   SUBTYPE OF (group_assignment);
18078      items : SET [1:1] OF requirement_source_item;
18079      SELF\group_assignment.assigned_group : requirement_source;
18080END_ENTITY;
18081
18082-- IN AP203e2/AP242
18083ENTITY sourced_requirement
18084   SUBTYPE OF (group_assignment);
18085      items : SET [1:1] OF product_definition;
18086      SELF\group_assignment.assigned_group : requirement_source;
18087END_ENTITY;
18088
18089-- IN AP203e2/AP242
18090ENTITY specification_definition
18091   SUBTYPE OF (product_definition);
18092END_ENTITY;
18093
18094-- CASE DIFF IN AP214
18095ENTITY specified_higher_usage_occurrence
18096   SUBTYPE OF (assembly_component_usage);
18097      upper_usage : assembly_component_usage;
18098      next_usage : next_assembly_usage_occurrence;
18099   UNIQUE
18100      UR1 : upper_usage, next_usage;
18101   WHERE
18102      WR1:
18103         SELF :<>: upper_usage;
18104      WR2:
18105         SELF\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition;
18106      WR3:
18107         SELF\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition;
18108      WR4:
18109         (upper_usage.related_product_definition :=: next_usage.relating_product_definition) OR (SIZEOF(QUERY (pdr <* USEDIN(upper_usage.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')| (pdr.relating_product_definition :=: next_usage.relating_product_definition))) = 1);
18110      WR5:
18111         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.NEXT_ASSEMBLY_USAGE_OCCURRENCE', 'STEP_MERGED_CAD_SCHEMA.SPECIFIED_HIGHER_USAGE_OCCURRENCE' ] * TYPEOF(upper_usage)) = 1;
18112END_ENTITY;
18113
18114ENTITY sphere
18115   SUBTYPE OF (geometric_representation_item);
18116      radius : positive_length_measure;
18117      centre : point;
18118END_ENTITY;
18119
18120-- IN AP242
18121ENTITY spherical_cap
18122   SUBTYPE OF (feature_definition);
18123   WHERE
18124      WR1:
18125         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 3))) = 0))) = 0;
18126      WR2:
18127         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
18128      WR3:
18129         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'internal angle'))) = 1))) = 0))) = 0;
18130END_ENTITY;
18131
18132-- DIFF IN AP214
18133-- IN AP214/AP242
18134ENTITY spherical_pair
18135   SUBTYPE OF (low_order_kinematic_pair);
18136   DERIVE
18137      SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
18138      SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
18139      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
18140      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
18141      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
18142      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
18143END_ENTITY;
18144
18145-- IN AP214
18146ENTITY spherical_pair_range
18147   SUBTYPE OF (simple_pair_range);
18148      SELF\simple_pair_range.applies_to_pair : spherical_pair;
18149      lower_limit_yaw : rotational_range_measure;
18150      upper_limit_yaw : rotational_range_measure;
18151      lower_limit_pitch : rotational_range_measure;
18152      upper_limit_pitch : rotational_range_measure;
18153      lower_limit_roll : rotational_range_measure;
18154      upper_limit_roll : rotational_range_measure;
18155   WHERE
18156      wr1:
18157         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw))) XOR (lower_limit_yaw < upper_limit_yaw);
18158      wr2:
18159         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch))) XOR (lower_limit_pitch < upper_limit_pitch);
18160      wr3:
18161         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll))) XOR (lower_limit_roll < upper_limit_roll);
18162END_ENTITY;
18163
18164-- DIFF IN AP214
18165-- IN AP214/AP242
18166ENTITY spherical_pair_value
18167   SUBTYPE OF (pair_value);
18168      input_orientation : spatial_rotation;
18169      SELF\pair_value.applies_to_pair : spherical_pair_select;
18170   DERIVE
18171      actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair, input_orientation);
18172END_ENTITY;
18173
18174-- IN AP242
18175ENTITY spherical_pair_with_pin
18176   SUBTYPE OF (low_order_kinematic_pair);
18177   DERIVE
18178      SELF\low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
18179      SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
18180      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
18181      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
18182      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
18183      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
18184END_ENTITY;
18185
18186-- IN AP242
18187ENTITY spherical_pair_with_pin_and_range
18188   SUBTYPE OF (spherical_pair_with_pin);
18189      lower_limit_yaw : OPTIONAL plane_angle_measure;
18190      upper_limit_yaw : OPTIONAL plane_angle_measure;
18191      lower_limit_roll : OPTIONAL plane_angle_measure;
18192      upper_limit_roll : OPTIONAL plane_angle_measure;
18193   WHERE
18194      WR1:
18195         (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
18196      WR2:
18197         (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
18198END_ENTITY;
18199
18200-- IN AP242
18201ENTITY spherical_pair_with_range
18202   SUBTYPE OF (spherical_pair);
18203      lower_limit_yaw : OPTIONAL plane_angle_measure;
18204      upper_limit_yaw : OPTIONAL plane_angle_measure;
18205      lower_limit_pitch : OPTIONAL plane_angle_measure;
18206      upper_limit_pitch : OPTIONAL plane_angle_measure;
18207      lower_limit_roll : OPTIONAL plane_angle_measure;
18208      upper_limit_roll : OPTIONAL plane_angle_measure;
18209   WHERE
18210      WR1:
18211         (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
18212      WR2:
18213         (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
18214      WR3:
18215         (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
18216END_ENTITY;
18217
18218ENTITY spherical_surface
18219   SUBTYPE OF (elementary_surface);
18220      radius : positive_length_measure;
18221END_ENTITY;
18222
18223-- CASE DIFF IN AP214
18224-- IN AP214/AP242
18225ENTITY SQL_mappable_defined_function
18226   ABSTRACT SUPERTYPE
18227   SUBTYPE OF (defined_function);
18228END_ENTITY;
18229
18230-- IN AP214/AP242
18231ENTITY square_root_function
18232   SUBTYPE OF (unary_function_call);
18233END_ENTITY;
18234
18235-- IN AP214/AP242
18236ENTITY square_u_profile
18237   SUBTYPE OF (shape_aspect);
18238   WHERE
18239      WR1:
18240         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
18241      WR2:
18242         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
18243      WR3:
18244         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 4) AND (SIZEOF(impl_rep.used_representation.items) <= 7))) = 0))) = 0;
18245      WR4:
18246         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (((((((srwp_i.name = 'orientation') OR (srwp_i.name = 'width')) OR (srwp_i.name = 'first angle')) OR (srwp_i.name = 'second angle')) OR (srwp_i.name = 'first radius')) OR (srwp_i.name = 'second radius')) OR (srwp_i.name = 'profile limit')) OR (srwp_i.name = 'depth'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
18247      WR5:
18248         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
18249      WR6:
18250         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
18251      WR7:
18252         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first radius'))) <= 1))) = 0))) = 0;
18253      WR8:
18254         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second radius'))) <= 1))) = 0))) = 0;
18255      WR9:
18256         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))) = 0;
18257      WR10:
18258         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0))) = 0;
18259      WR11:
18260         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
18261      WR12:
18262         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
18263END_ENTITY;
18264
18265-- DIFF IN AP214
18266ENTITY standard_uncertainty
18267   SUPERTYPE OF (expanded_uncertainty)
18268   SUBTYPE OF (uncertainty_qualifier);
18269      uncertainty_value : REAL;
18270END_ENTITY;
18271
18272-- IN AP203e2/AP242
18273ENTITY start_request
18274   SUBTYPE OF (action_request_assignment);
18275      items : SET [1:?] OF start_request_item;
18276END_ENTITY;
18277
18278-- IN AP203e2/AP242
18279ENTITY start_work
18280   SUBTYPE OF (action_assignment);
18281      items : SET [1:?] OF work_item;
18282END_ENTITY;
18283
18284-- IN AP242
18285ENTITY steep_angle_between_adjacent_edges
18286   SUBTYPE OF (steep_geometry_transition_across_edge);
18287      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18288   WHERE
18289      WR1:
18290         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
18291      WR2:
18292         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
18293      WR3:
18294         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.EDGE_LOOP' ]);
18295      WR4:
18296         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' ]);
18297      WR5:
18298         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' ]);
18299END_ENTITY;
18300
18301-- IN AP242
18302ENTITY steep_angle_between_adjacent_faces
18303   SUBTYPE OF (steep_geometry_transition_across_edge);
18304      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18305   WHERE
18306      WR1:
18307         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
18308      WR2:
18309         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
18310      WR3:
18311         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.CONNECTED_FACE_SET' ]);
18312      WR4:
18313         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'POINT_ON_EDGE_CURVE' ]);
18314      WR5:
18315         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' ]);
18316END_ENTITY;
18317
18318-- IN AP242
18319ENTITY steep_geometry_transition_across_edge
18320   ABSTRACT SUPERTYPE OF (ONEOF(steep_angle_between_adjacent_edges, steep_angle_between_adjacent_faces))
18321   SUBTYPE OF (inapt_topology_and_geometry_relationship);
18322END_ENTITY;
18323
18324-- IN AP242
18325ENTITY step
18326   SUBTYPE OF (feature_definition);
18327   WHERE
18328      WR1:
18329         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
18330      WR2:
18331         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'path feature component usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear'))) = 1))) = 1))) = 0;
18332      WR3:
18333         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'removal boundary occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.VEE_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
18334      WR4:
18335         SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0;
18336      WR5:
18337         SIZEOF(QUERY (pds <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (('STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name = 'uncut volume')) AND (SIZEOF(QUERY (sar <* csa.component_relationships| ('STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOSS', 'STEP_MERGED_CAD_SCHEMA.PROTRUSION' ] * TYPEOF(sar.related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
18338END_ENTITY;
18339
18340ENTITY straightness_tolerance
18341   SUBTYPE OF (geometric_tolerance);
18342   WHERE
18343      WR1:
18344         NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
18345END_ENTITY;
18346
18347-- IN AP214/AP242
18348ENTITY string_defined_function
18349   ABSTRACT SUPERTYPE
18350   SUBTYPE OF (defined_function, string_expression);
18351END_ENTITY;
18352
18353-- IN AP214/AP242
18354ENTITY string_expression
18355   ABSTRACT SUPERTYPE OF (ONEOF(simple_string_expression, index_expression, substring_expression, concat_expression, format_function, string_defined_function))
18356   SUBTYPE OF (expression);
18357END_ENTITY;
18358
18359-- IN AP214/AP242
18360ENTITY string_literal
18361   SUBTYPE OF (simple_string_expression, generic_literal);
18362      the_value : STRING;
18363END_ENTITY;
18364
18365-- IN AP214/AP242
18366ENTITY string_variable
18367   SUBTYPE OF (simple_string_expression, variable);
18368END_ENTITY;
18369
18370ENTITY structured_dimension_callout
18371   SUBTYPE OF (draughting_callout);
18372   WHERE
18373      WR1:
18374         SIZEOF(TYPEOF(SELF) * [ 'STEP_MERGED_CAD_SCHEMA.DATUM_FEATURE_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.DATUM_TARGET_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.GEOMETRICAL_TOLERANCE_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.LEADER_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.PROJECTION_DIRECTED_CALLOUT', 'STEP_MERGED_CAD_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT' ]) = 0;
18375      WR2:
18376         SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| NOT (ato.name IN [ 'dimension value', 'tolerance value', 'unit text', 'prefix text', 'suffix text' ]))) = 0;
18377      WR3:
18378         SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| (ato.name = 'dimension value'))) >= 1;
18379      WR4:
18380         SIZEOF(QUERY (dcr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) <= 1;
18381      WR5:
18382         SIZEOF(QUERY (dcr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) <= 1;
18383      WR6:
18384         NOT (SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| (ato.name = 'prefix text'))) > 0) OR (SIZEOF(QUERY (dcr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) = 1);
18385      WR7:
18386         NOT (SIZEOF(QUERY (ato <* QUERY (con <* SELF.contents| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)))| (ato.name = 'suffix text'))) > 0) OR (SIZEOF(QUERY (dcr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT')| ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) = 1);
18387END_ENTITY;
18388
18389-- IN AP203e2/AP242
18390ENTITY structured_text_composition
18391   SUBTYPE OF (compound_representation_item);
18392END_ENTITY;
18393
18394-- IN AP203e2/AP242
18395ENTITY structured_text_representation
18396   SUBTYPE OF (representation);
18397      SELF\representation.items : SET [1:?] OF string_representation_item_select;
18398END_ENTITY;
18399
18400-- DIFF IN AP214
18401-- DIFF IN AP203e2
18402ENTITY styled_item
18403   SUBTYPE OF (representation_item);
18404      styles : SET [1:?] OF presentation_style_assignment;
18405      item : styled_item_target;
18406   WHERE
18407      WR1:
18408         (SIZEOF(SELF.styles) = 1) XOR (SIZEOF(QUERY (pres_style <* SELF.styles| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(pres_style)))) = 0);
18409      WR2:
18410         NOT ('STEP_MERGED_CAD_SCHEMA.STYLED_ITEM' IN TYPEOF(item));
18411      WR3:
18412         (('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(item)) OR ('STEP_MERGED_CAD_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item))) OR ('STEP_MERGED_CAD_SCHEMA.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM' IN TYPEOF(SELF));
18413END_ENTITY;
18414
18415-- IN AP242
18416ENTITY su_parameters
18417   SUBTYPE OF (geometric_representation_item);
18418      a : length_measure;
18419      alpha : plane_angle_measure;
18420      b : length_measure;
18421      beta : plane_angle_measure;
18422      c : length_measure;
18423      gamma : plane_angle_measure;
18424   WHERE
18425      WR1:
18426         SELF\geometric_representation_item.dim = 3;
18427END_ENTITY;
18428
18429ENTITY subedge
18430   SUBTYPE OF (edge);
18431      parent_edge : edge;
18432END_ENTITY;
18433
18434ENTITY subface
18435   SUBTYPE OF (face);
18436      parent_face : face;
18437   WHERE
18438      WR1:
18439         NOT mixed_loop_type_set((list_to_set(list_face_loops(SELF)) + list_to_set(list_face_loops(parent_face))));
18440END_ENTITY;
18441
18442-- IN AP242
18443ENTITY subsketch
18444   SUBTYPE OF (geometric_representation_item);
18445      subsketch_elements : SET [1:?] OF sketch_element_select;
18446      owning_sketch : sketch_type_select;
18447   WHERE
18448      WR1:
18449         ('STEP_MERGED_CAD_SCHEMA.NEUTRAL_SKETCH_REPRESENTATION' IN TYPEOF(owning_sketch)) AND (SIZEOF(QUERY (q <* subsketch_elements| NOT (owning_sketch IN using_representations(q)))) = 0) XOR (SIZEOF(TYPEOF(owning_sketch) * [ 'STEP_MERGED_CAD_SCHEMA.POSITIONED_SKETCH', 'STEP_MERGED_CAD_SCHEMA.SUBSKETCH' ]) = 1) AND (SIZEOF(QUERY (q <* subsketch_elements| NOT (owning_sketch IN using_items(q, [])))) = 0);
18450END_ENTITY;
18451
18452-- DIFF IN AP214
18453-- IN AP214/AP242
18454ENTITY substring_expression
18455   SUBTYPE OF (string_expression, multiple_arity_generic_expression);
18456   DERIVE
18457      index1 : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
18458      index2 : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
18459      operand : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
18460   WHERE
18461      WR1:
18462         (('STEP_MERGED_CAD_SCHEMA.STRING_EXPRESSION' IN TYPEOF(operand)) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(index1))) AND ('STEP_MERGED_CAD_SCHEMA.NUMERIC_EXPRESSION' IN TYPEOF(index2));
18463      WR2:
18464         SIZEOF(SELF\multiple_arity_generic_expression.operands) = 3;
18465      WR3:
18466         is_int_expr(index1);
18467      WR4:
18468         is_int_expr(index2);
18469END_ENTITY;
18470
18471-- IN AP242
18472ENTITY summary_report_request
18473   SUBTYPE OF (data_quality_report_request);
18474      summary_report_request_type : summary_report_type;
18475END_ENTITY;
18476
18477-- IN AP203e2/AP242
18478ENTITY supplied_part_relationship
18479   SUBTYPE OF (product_definition_relationship);
18480END_ENTITY;
18481
18482ENTITY surface
18483   SUPERTYPE OF (ONEOF(elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica))
18484   SUBTYPE OF (geometric_representation_item);
18485END_ENTITY;
18486
18487ENTITY surface_condition_callout
18488   SUBTYPE OF (draughting_callout);
18489   WHERE
18490      WR1:
18491         SIZEOF(QUERY (c <* SELF.contents| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_CURVE_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_SYMBOL_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT_OCCURRENCE') ] * TYPEOF(c)) <> 1))) = 0;
18492END_ENTITY;
18493
18494ENTITY surface_curve
18495   SUPERTYPE OF (ONEOF(intersection_curve, seam_curve) ANDOR bounded_surface_curve)
18496   SUBTYPE OF (curve);
18497      curve_3d : curve;
18498      associated_geometry : LIST [1:2] OF pcurve_or_surface;
18499      master_representation : preferred_surface_curve_representation;
18500   DERIVE
18501      basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
18502   WHERE
18503      WR1:
18504         curve_3d.dim = 3;
18505      WR2:
18506         ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(associated_geometry[1])) OR (master_representation <> pcurve_s1);
18507      WR3:
18508         ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(associated_geometry[2])) OR (master_representation <> pcurve_s2);
18509      WR4:
18510         NOT ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(curve_3d));
18511END_ENTITY;
18512
18513ENTITY surface_curve_swept_area_solid
18514   SUBTYPE OF (swept_area_solid);
18515      directrix : curve;
18516      start_param : REAL;
18517      end_param : REAL;
18518      reference_surface : surface;
18519   WHERE
18520      WR1:
18521         NOT ('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(directrix)) OR (reference_surface IN directrix\surface_curve.basis_surface);
18522END_ENTITY;
18523
18524-- IN AP242
18525ENTITY surface_distance_assembly_constraint_with_dimension
18526   SUBTYPE OF (binary_assembly_constraint, sdgc_with_dimension);
18527END_ENTITY;
18528
18529-- IN AP242
18530ENTITY surface_distance_geometric_constraint
18531   SUBTYPE OF (explicit_geometric_constraint);
18532      near_points : SET [0:4] OF near_point_relationship;
18533      SELF\explicit_constraint.constrained_elements : SET [1:2] OF surface;
18534      SELF\explicit_constraint.reference_elements : SET [0:4] OF point_curve_or_surface_constraint_element;
18535   WHERE
18536      WR1:
18537         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR ('STEP_MERGED_CAD_SCHEMA.SDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
18538      WR2:
18539         SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
18540      WR3:
18541         SIZEOF(QUERY (q <* near_points| NOT (q\representation_item_relationship.relating_representation_item IN SELF\explicit_constraint.reference_elements))) = 0;
18542END_ENTITY;
18543
18544ENTITY surface_of_linear_extrusion
18545   SUBTYPE OF (swept_surface);
18546      extrusion_axis : vector;
18547END_ENTITY;
18548
18549ENTITY surface_of_revolution
18550   SUBTYPE OF (swept_surface);
18551      axis_position : axis1_placement;
18552   DERIVE
18553      axis_line : line := representation_item('') || geometric_representation_item() || curve() || line(axis_position.location, representation_item('') || geometric_representation_item() || vector(axis_position.z, 1.0));
18554END_ENTITY;
18555
18556-- DIFF IN AP214
18557-- IN AP214/AP242
18558ENTITY surface_pair
18559   ABSTRACT SUPERTYPE OF (ONEOF(sliding_surface_pair, rolling_surface_pair) ANDOR surface_pair_with_range)
18560   SUBTYPE OF (high_order_kinematic_pair);
18561      surface_1 : surface;
18562      surface_2 : surface;
18563      orientation : BOOLEAN;
18564   WHERE
18565      WR1:
18566         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (surface_1 IN r.items))) = 0;
18567      WR2:
18568         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_2| NOT (surface_2 IN r.items))) = 0;
18569      WR3:
18570         SIZEOF(QUERY (lr <* SELF\kinematic_pair.associated_link_representations_1| NOT ('STEP_MERGED_CAD_SCHEMA.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
18571END_ENTITY;
18572
18573-- IN AP214
18574ENTITY surface_pair_range
18575   SUBTYPE OF (simple_pair_range);
18576      SELF\simple_pair_range.applies_to_pair : surface_pair;
18577      range_on_surface_1 : rectangular_trimmed_surface;
18578      range_on_surface_2 : rectangular_trimmed_surface;
18579      lower_limit_actual_rotation : rotational_range_measure;
18580      upper_limit_actual_rotation : rotational_range_measure;
18581   WHERE
18582      wr1:
18583         SELF\simple_pair_range.applies_to_pair\surface_pair.surface_1 :=: range_on_surface_1.basis_surface;
18584      wr2:
18585         SELF\simple_pair_range.applies_to_pair\surface_pair.surface_2 :=: range_on_surface_2.basis_surface;
18586      wr3:
18587         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_actual_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_actual_rotation))) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
18588END_ENTITY;
18589
18590-- IN AP242
18591ENTITY surface_pair_with_range
18592   SUBTYPE OF (surface_pair);
18593      range_on_surface_1 : rectangular_trimmed_surface;
18594      range_on_surface_2 : rectangular_trimmed_surface;
18595      lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
18596      upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
18597   WHERE
18598      WR1:
18599         SELF\surface_pair.surface_1 :=: range_on_surface_1.basis_surface;
18600      WR2:
18601         SELF\surface_pair.surface_2 :=: range_on_surface_2.basis_surface;
18602      WR3:
18603         (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
18604      WR4:
18605         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_1| NOT (range_on_surface_1 IN r.items))) = 0;
18606      WR5:
18607         SIZEOF(QUERY (r <* SELF\kinematic_pair.associated_link_representations_2| NOT (range_on_surface_2 IN r.items))) = 0;
18608END_ENTITY;
18609
18610ENTITY surface_patch
18611   SUBTYPE OF (founded_item);
18612      parent_surface : bounded_surface;
18613      u_transition : transition_code;
18614      v_transition : transition_code;
18615      u_sense : BOOLEAN;
18616      v_sense : BOOLEAN;
18617   INVERSE
18618      using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR segments;
18619   WHERE
18620      WR1:
18621         NOT ('STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(parent_surface));
18622END_ENTITY;
18623
18624-- IN AP242
18625ENTITY surface_patch_set
18626   SUBTYPE OF (geometric_representation_item);
18627      patches : SET [1:?] OF surface_patch;
18628END_ENTITY;
18629
18630ENTITY surface_profile_tolerance
18631   SUBTYPE OF (geometric_tolerance);
18632END_ENTITY;
18633
18634ENTITY surface_rendering_properties;
18635      rendered_colour : colour;
18636END_ENTITY;
18637
18638ENTITY surface_replica
18639   SUBTYPE OF (surface);
18640      parent_surface : surface;
18641      transformation : cartesian_transformation_operator_3d;
18642   WHERE
18643      WR1:
18644         acyclic_surface_replica(SELF, parent_surface);
18645END_ENTITY;
18646
18647ENTITY surface_side_style
18648   SUBTYPE OF (founded_item);
18649      name : label;
18650      styles : SET [1:7] OF surface_style_element_select;
18651   WHERE
18652      WR1:
18653         SIZEOF(QUERY (style1 <* SELF.styles| (SIZEOF(QUERY (style2 <* SELF.styles - style1| (TYPEOF(style1) = TYPEOF(style2)))) > 0))) = 0;
18654END_ENTITY;
18655
18656-- IN AP242
18657ENTITY surface_smoothness_geometric_constraint
18658   SUBTYPE OF (explicit_geometric_constraint);
18659      u_smoothness : transition_code;
18660      v_smoothness : transition_code;
18661      SELF\explicit_constraint.constrained_elements : SET [1:1] OF surface_patch_set;
18662   WHERE
18663      WR1:
18664         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
18665END_ENTITY;
18666
18667ENTITY surface_style_boundary
18668   SUBTYPE OF (founded_item);
18669      style_of_boundary : curve_or_render;
18670END_ENTITY;
18671
18672ENTITY surface_style_control_grid
18673   SUBTYPE OF (founded_item);
18674      style_of_control_grid : curve_or_render;
18675END_ENTITY;
18676
18677ENTITY surface_style_fill_area
18678   SUBTYPE OF (founded_item);
18679      fill_area : fill_area_style;
18680END_ENTITY;
18681
18682ENTITY surface_style_parameter_line
18683   SUBTYPE OF (founded_item);
18684      style_of_parameter_lines : curve_or_render;
18685      direction_counts : SET [1:2] OF direction_count_select;
18686   WHERE
18687      WR1:
18688         (HIINDEX(SELF.direction_counts) = 1) XOR (TYPEOF(SELF.direction_counts[1]) <> TYPEOF(SELF.direction_counts[2]));
18689END_ENTITY;
18690
18691ENTITY surface_style_reflectance_ambient;
18692      ambient_reflectance : REAL;
18693END_ENTITY;
18694
18695ENTITY surface_style_reflectance_ambient_diffuse
18696   SUBTYPE OF (surface_style_reflectance_ambient);
18697      diffuse_reflectance : REAL;
18698END_ENTITY;
18699
18700ENTITY surface_style_reflectance_ambient_diffuse_specular
18701   SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
18702      specular_reflectance : REAL;
18703      specular_exponent : REAL;
18704      specular_colour : colour;
18705END_ENTITY;
18706
18707ENTITY surface_style_rendering;
18708      rendering_method : shading_surface_method;
18709      surface_colour : colour;
18710END_ENTITY;
18711
18712ENTITY surface_style_rendering_with_properties
18713   SUBTYPE OF (surface_style_rendering);
18714      properties : SET [1:2] OF rendering_properties_select;
18715   WHERE
18716      WR1:
18717         (HIINDEX(SELF.properties) = 1) XOR (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2]));
18718END_ENTITY;
18719
18720ENTITY surface_style_segmentation_curve
18721   SUBTYPE OF (founded_item);
18722      style_of_segmentation_curve : curve_or_render;
18723END_ENTITY;
18724
18725ENTITY surface_style_silhouette
18726   SUBTYPE OF (founded_item);
18727      style_of_silhouette : curve_or_render;
18728END_ENTITY;
18729
18730ENTITY surface_style_transparent;
18731      transparency : REAL;
18732   WHERE
18733      WR1:
18734         (0.0 <= transparency) AND (transparency <= 1.0);
18735END_ENTITY;
18736
18737ENTITY surface_style_usage
18738   SUBTYPE OF (founded_item);
18739      side : surface_side;
18740      style : surface_side_style_select;
18741END_ENTITY;
18742
18743ENTITY surface_texture_representation
18744   SUBTYPE OF (representation);
18745   WHERE
18746      WR1:
18747         SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM') ] * TYPEOF(i)) <> 1))) = 0;
18748      WR2:
18749         (SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1) AND (SIZEOF(QUERY (i <* SELF.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'measuring method'))) = 1);
18750      WR3:
18751         SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) = 1))) > 0;
18752      WR4:
18753         ((SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_1')) <= 1) AND (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) = 0)) AND (SIZEOF(QUERY (rr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_1')| (rr.rep_2.name = 'measuring direction'))) = SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_1')));
18754      WR5:
18755         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)) AND (gpa\general_property_association.base_definition\general_property.name = 'surface_condition'))) = 1))) = 1);
18756END_ENTITY;
18757
18758-- IN AP242
18759ENTITY surface_with_excessive_patches_in_one_direction
18760   SUBTYPE OF (overcomplex_geometry);
18761      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18762   WHERE
18763      WR1:
18764         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
18765      WR2:
18766         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
18767      WR3:
18768         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' ]);
18769      WR4:
18770         validate_locations_of_extreme_value_type(SELF, []);
18771      WR5:
18772         validate_accuracy_types(SELF, []);
18773END_ENTITY;
18774
18775-- IN AP242
18776ENTITY surface_with_small_curvature_radius
18777   SUBTYPE OF (geometry_with_local_near_degeneracy);
18778      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18779   WHERE
18780      WR1:
18781         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
18782      WR2:
18783         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE');
18784      WR3:
18785         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
18786      WR4:
18787         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ]);
18788      WR5:
18789         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
18790END_ENTITY;
18791
18792-- IN AP203e2/AP242
18793ENTITY surfaced_open_shell
18794   SUBTYPE OF (open_shell);
18795   WHERE
18796      WR1:
18797         SIZEOF(QUERY (q <* SELF\connected_face_set.cfs_faces| NOT ('STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(q)))) = 0;
18798END_ENTITY;
18799
18800ENTITY swept_area_solid
18801   SUPERTYPE OF (ONEOF(revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid))
18802   SUBTYPE OF (solid_model);
18803      swept_area : curve_bounded_surface;
18804   WHERE
18805      WR1:
18806         'STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(swept_area.basis_surface);
18807END_ENTITY;
18808
18809-- IN AP242
18810ENTITY swept_curve_surface_geometric_constraint
18811   SUBTYPE OF (explicit_geometric_constraint);
18812      SELF\explicit_constraint.constrained_elements : SET [1:?] OF surface;
18813      SELF\explicit_constraint.reference_elements : SET [1:1] OF swept_surface_or_solid;
18814END_ENTITY;
18815
18816ENTITY swept_disk_solid
18817   SUBTYPE OF (solid_model);
18818      directrix : curve;
18819      radius : positive_length_measure;
18820      inner_radius : OPTIONAL positive_length_measure;
18821      start_param : REAL;
18822      end_param : REAL;
18823   WHERE
18824      WR1:
18825         directrix.dim = 3;
18826      WR2:
18827         NOT EXISTS(inner_radius) OR (radius > inner_radius);
18828END_ENTITY;
18829
18830ENTITY swept_face_solid
18831   SUPERTYPE OF (ONEOF(extruded_face_solid, revolved_face_solid))
18832   SUBTYPE OF (solid_model);
18833      swept_face : face_surface;
18834   WHERE
18835      WR1:
18836         'STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(swept_face.face_geometry);
18837END_ENTITY;
18838
18839-- IN AP242
18840ENTITY swept_point_curve_geometric_constraint
18841   SUBTYPE OF (explicit_geometric_constraint);
18842      SELF\explicit_constraint.constrained_elements : SET [1:?] OF curve;
18843      SELF\explicit_constraint.reference_elements : SET [1:1] OF swept_face_solid;
18844END_ENTITY;
18845
18846ENTITY swept_surface
18847   SUPERTYPE OF (ONEOF(surface_of_linear_extrusion, surface_of_revolution))
18848   SUBTYPE OF (surface);
18849      swept_curve : curve;
18850END_ENTITY;
18851
18852-- IN AP203e2/AP242
18853ENTITY symbol
18854   SUBTYPE OF (representation_item);
18855END_ENTITY;
18856
18857ENTITY symbol_colour;
18858      colour_of_symbol : colour;
18859END_ENTITY;
18860
18861ENTITY symbol_representation
18862   SUBTYPE OF (representation);
18863END_ENTITY;
18864
18865ENTITY symbol_representation_map
18866   SUBTYPE OF (representation_map);
18867      SELF\representation_map.mapped_representation : symbol_representation;
18868      SELF\representation_map.mapping_origin : axis2_placement;
18869   WHERE
18870      WR1:
18871         SIZEOF(QUERY (mi <* SELF\representation_map.map_usage| NOT ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_SYMBOL' IN TYPEOF(mi)))) = 0;
18872END_ENTITY;
18873
18874ENTITY symbol_style
18875   SUBTYPE OF (founded_item);
18876      name : label;
18877      style_of_symbol : symbol_style_select;
18878END_ENTITY;
18879
18880ENTITY symbol_target
18881   SUBTYPE OF (geometric_representation_item);
18882      placement : axis2_placement;
18883      x_scale : positive_ratio_measure;
18884      y_scale : positive_ratio_measure;
18885END_ENTITY;
18886
18887-- DIFF IN AP214
18888-- DIFF IN AP203e2
18889ENTITY symmetric_shape_aspect
18890   SUBTYPE OF (shape_aspect);
18891   INVERSE
18892      basis_relationships : SET [1:?] OF shape_aspect_deriving_relationship FOR related_shape_aspect;
18893END_ENTITY;
18894
18895-- IN AP242
18896ENTITY symmetry_geometric_constraint
18897   SUBTYPE OF (explicit_geometric_constraint);
18898      mirror_element : linear_geometry_constraint_element;
18899      SELF\explicit_constraint.constrained_elements : SET [2:2] OF geometric_representation_item;
18900   WHERE
18901      WR1:
18902         SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
18903      WR2:
18904         SIZEOF(TYPEOF(mirror_element) * [ 'STEP_MERGED_CAD_SCHEMA.DIRECTION', 'STEP_MERGED_CAD_SCHEMA.VECTOR' ]) = 0;
18905      WR3:
18906         NOT ((SELF\geometric_representation_item.dim = 2) AND ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(mirror_element)));
18907END_ENTITY;
18908
18909ENTITY symmetry_tolerance
18910   SUBTYPE OF (geometric_tolerance_with_datum_reference);
18911END_ENTITY;
18912
18913-- IN AP203e2/AP242
18914ENTITY table_representation_item
18915   SUBTYPE OF (compound_representation_item);
18916   WHERE
18917      WR1:
18918         SIZEOF(QUERY (itet <* SELF\compound_representation_item.item_element| NOT ('STEP_MERGED_CAD_SCHEMA.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet)))) = 0;
18919END_ENTITY;
18920
18921ENTITY tactile_appearance_representation
18922   SUBTYPE OF (representation);
18923   WHERE
18924      WR1:
18925         SIZEOF(QUERY (i <* SELF.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) <> 1))) = 0;
18926      WR2:
18927         SIZEOF(QUERY (i <* SELF.items| (name = 'depth'))) <= 1;
18928      WR3:
18929         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)) AND (gpa\general_property_association.base_definition\general_property.name = 'surface_condition'))) = 1))) = 1);
18930END_ENTITY;
18931
18932-- IN AP203e2/AP242
18933ENTITY tagged_text_format
18934   SUBTYPE OF (representation_context);
18935END_ENTITY;
18936
18937-- IN AP203e2/AP242
18938ENTITY tagged_text_item
18939   SUBTYPE OF (descriptive_representation_item);
18940END_ENTITY;
18941
18942-- IN AP214/AP242
18943ENTITY tan_function
18944   SUBTYPE OF (unary_function_call);
18945END_ENTITY;
18946
18947ENTITY tangent
18948   SUBTYPE OF (derived_shape_aspect);
18949   WHERE
18950      WR1:
18951         SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
18952END_ENTITY;
18953
18954-- IN AP242
18955ENTITY tangent_assembly_constraint
18956   SUBTYPE OF (binary_assembly_constraint, tangent_geometric_constraint);
18957END_ENTITY;
18958
18959-- IN AP242
18960ENTITY tangent_geometric_constraint
18961   SUBTYPE OF (explicit_geometric_constraint);
18962      near_points : SET [0:?] OF near_point_relationship;
18963      tangent_contact : tangent_contact_type;
18964      SELF\explicit_constraint.constrained_elements : SET [1:?] OF curve_or_surface_constraint_element;
18965      SELF\explicit_constraint.reference_elements : SET [0:?] OF curve_or_surface_constraint_element;
18966   WHERE
18967      WR1:
18968         (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
18969      WR2:
18970         NOT ((SELF\geometric_representation_item.dim = 2) AND (tangent_contact = surface_contact));
18971      WR3:
18972         SIZEOF(QUERY (q <* near_points| NOT (q\representation_item_relationship.relating_representation_item IN SELF\explicit_constraint.reference_elements))) = 0;
18973END_ENTITY;
18974
18975-- IN AP214/AP242
18976ENTITY taper
18977   SUBTYPE OF (shape_aspect);
18978   WHERE
18979      WR1:
18980         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
18981      WR2:
18982         SELF.description IN [ 'angle taper', 'diameter taper', 'directed taper' ];
18983      WR3:
18984         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
18985      WR4:
18986         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 1))) = 0))) = 0;
18987      WR5:
18988         NOT (SELF.description = 'angle taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'taper angle'))) = 1))) = 0))) = 0);
18989      WR6:
18990         NOT (SELF.description = 'diameter taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'final diameter'))) = 1))) = 0))) = 0);
18991      WR7:
18992         NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'angle'))) = 1))) = 0))) = 0);
18993      WR8:
18994         NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'direction'))) = 1))) = 0);
18995END_ENTITY;
18996
18997-- IN AP214/AP242
18998ENTITY tee_profile
18999   SUBTYPE OF (shape_aspect);
19000   WHERE
19001      WR1:
19002         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
19003      WR2:
19004         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
19005      WR3:
19006         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 9) AND (SIZEOF(impl_rep.used_representation.items) <= 10))) = 0))) = 0;
19007      WR4:
19008         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (((((((((srwp_i.name = 'orientation') OR (srwp_i.name = 'width')) OR (srwp_i.name = 'depth')) OR (srwp_i.name = 'cross bar width')) OR (srwp_i.name = 'cross bar depth')) OR (srwp_i.name = 'first offset')) OR (srwp_i.name = 'second offset')) OR (srwp_i.name = 'first angle')) OR (srwp_i.name = 'second angle')) OR (srwp_i.name = 'radius'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
19009      WR5:
19010         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
19011      WR6:
19012         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
19013      WR7:
19014         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'depth'))) = 1))) = 0))) = 0;
19015      WR8:
19016         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'cross bar width'))) = 1))) = 0))) = 0;
19017      WR9:
19018         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'cross bar depth'))) = 1))) = 0))) = 0;
19019      WR10:
19020         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first offset'))) = 1))) = 0))) = 0;
19021      WR11:
19022         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second offset'))) = 1))) = 0))) = 0;
19023      WR12:
19024         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))) = 0;
19025      WR13:
19026         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0))) = 0;
19027      WR14:
19028         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0;
19029      WR15:
19030         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
19031END_ENTITY;
19032
19033ENTITY terminator_symbol
19034   SUBTYPE OF (annotation_symbol_occurrence);
19035      annotated_curve : annotation_curve_occurrence;
19036END_ENTITY;
19037
19038-- IN AP242
19039ENTITY tessellated_annotation_occurrence
19040   SUBTYPE OF (annotation_occurrence);
19041      SELF\styled_item.item : tessellated_geometric_set;
19042END_ENTITY;
19043
19044-- IN AP242
19045ENTITY tessellated_connecting_edge
19046   SUBTYPE OF (tessellated_edge);
19047      smooth : LOGICAL;
19048      face1 : tessellated_face;
19049      face2 : tessellated_face;
19050      line_strip_face1 : LIST [2:?] OF INTEGER;
19051      line_strip_face2 : LIST [2:?] OF INTEGER;
19052   WHERE
19053      WR1:
19054         SIZEOF(line_strip_face1) = SIZEOF(line_strip_face2);
19055      WR2:
19056         SIZEOF(line_strip_face1) = SIZEOF(SELF\tessellated_edge.line_strip);
19057END_ENTITY;
19058
19059-- IN AP242
19060ENTITY tessellated_curve_set
19061   SUBTYPE OF (tessellated_item);
19062      coordinates : coordinates_list;
19063      line_strips : LIST [1:?] OF LIST [2:?] OF INTEGER;
19064END_ENTITY;
19065
19066-- IN AP242
19067ENTITY tessellated_edge
19068   SUBTYPE OF (tessellated_structured_item);
19069      coordinates : coordinates_list;
19070      geometric_link : OPTIONAL edge_or_curve;
19071      line_strip : LIST [2:?] OF INTEGER;
19072END_ENTITY;
19073
19074-- IN AP242
19075ENTITY tessellated_face
19076   ABSTRACT SUPERTYPE OF (ONEOF(triangulated_face, complex_triangulated_face))
19077   SUBTYPE OF (tessellated_structured_item);
19078      coordinates : coordinates_list;
19079      pnmax : INTEGER;
19080      normals : LIST [0:?] OF LIST [3:3] OF REAL;
19081      geometric_link : OPTIONAL face_or_surface;
19082   WHERE
19083      WR1:
19084         ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1)) OR (SIZEOF(normals) = pnmax);
19085END_ENTITY;
19086
19087-- IN AP242
19088ENTITY tessellated_geometric_set
19089   SUBTYPE OF (tessellated_item);
19090      children : SET [1:?] OF tessellated_item;
19091END_ENTITY;
19092
19093-- IN AP242
19094ENTITY tessellated_item
19095   ABSTRACT SUPERTYPE OF (ONEOF(coordinates_list, tessellated_solid, tessellated_shell, tessellated_wire, tessellated_geometric_set, tessellated_curve_set, tessellated_point_set, tessellated_surface_set, tessellated_structured_item))
19096   SUBTYPE OF (geometric_representation_item);
19097   WHERE
19098      WR1:
19099         SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.TESSELLATED_SHAPE_REPRESENTATION' IN TYPEOF(using_rep)))) = 0;
19100END_ENTITY;
19101
19102-- IN AP242
19103ENTITY tessellated_point_set
19104   SUBTYPE OF (tessellated_item);
19105      coordinates : coordinates_list;
19106      point_list : LIST [1:?] OF INTEGER;
19107END_ENTITY;
19108
19109-- IN AP242
19110ENTITY tessellated_shape_representation
19111   SUBTYPE OF (shape_representation);
19112      SELF\representation.items : SET [1:?] OF tessellated_item;
19113   WHERE
19114      WR1:
19115         'STEP_MERGED_CAD_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
19116END_ENTITY;
19117
19118-- IN AP242
19119ENTITY tessellated_shell
19120   SUBTYPE OF (tessellated_item);
19121      items : SET [1:?] OF tessellated_structured_item;
19122      topological_link : OPTIONAL connected_face_set;
19123END_ENTITY;
19124
19125-- IN AP242
19126ENTITY tessellated_solid
19127   SUBTYPE OF (tessellated_item);
19128      items : SET [1:?] OF tessellated_structured_item;
19129      geometric_link : OPTIONAL manifold_solid_brep;
19130END_ENTITY;
19131
19132-- IN AP242
19133ENTITY tessellated_structured_item
19134   SUPERTYPE OF (ONEOF(tessellated_face, tessellated_edge, tessellated_vertex))
19135   SUBTYPE OF (tessellated_item);
19136END_ENTITY;
19137
19138-- IN AP242
19139ENTITY tessellated_surface_set
19140   ABSTRACT SUPERTYPE OF (ONEOF(triangulated_surface_set, complex_triangulated_surface_set))
19141   SUBTYPE OF (tessellated_item);
19142      coordinates : coordinates_list;
19143      pnmax : INTEGER;
19144      normals : LIST [0:?] OF LIST [3:3] OF REAL;
19145   WHERE
19146      WR1:
19147         ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1)) OR (SIZEOF(normals) = pnmax);
19148END_ENTITY;
19149
19150-- IN AP242
19151ENTITY tessellated_vertex
19152   SUBTYPE OF (tessellated_structured_item);
19153      coordinates : coordinates_list;
19154      topological_link : OPTIONAL vertex_point;
19155      point_index : INTEGER;
19156END_ENTITY;
19157
19158-- IN AP242
19159ENTITY tessellated_wire
19160   SUBTYPE OF (tessellated_item);
19161      items : SET [1:?] OF tessellated_edge_or_vertex;
19162      geometric_model_link : OPTIONAL path_or_composite_curve;
19163END_ENTITY;
19164
19165-- IN AP203e2/AP242
19166ENTITY text_font;
19167      id : identifier;
19168      name : label;
19169      description : text;
19170   INVERSE
19171      glyphs : SET [1:?] OF character_glyph_font_usage FOR font;
19172END_ENTITY;
19173
19174-- IN AP203e2/AP242
19175ENTITY text_font_family;
19176      id : identifier;
19177      name : label;
19178      description : text;
19179   INVERSE
19180      fonts : SET [1:?] OF text_font_in_family FOR family;
19181END_ENTITY;
19182
19183-- IN AP203e2/AP242
19184ENTITY text_font_in_family;
19185      font : text_font;
19186      family : text_font_family;
19187END_ENTITY;
19188
19189ENTITY text_literal
19190   SUBTYPE OF (geometric_representation_item);
19191      literal : presentable_text;
19192      placement : axis2_placement;
19193      alignment : text_alignment;
19194      path : text_path;
19195      font : font_select;
19196END_ENTITY;
19197
19198ENTITY text_literal_with_associated_curves
19199   SUBTYPE OF (text_literal);
19200      associated_curves : SET [1:?] OF curve;
19201END_ENTITY;
19202
19203ENTITY text_literal_with_blanking_box
19204   SUBTYPE OF (text_literal);
19205      blanking : planar_box;
19206END_ENTITY;
19207
19208ENTITY text_literal_with_delineation
19209   SUBTYPE OF (text_literal);
19210      delineation : text_delineation;
19211END_ENTITY;
19212
19213ENTITY text_literal_with_extent
19214   SUBTYPE OF (text_literal);
19215      extent : planar_extent;
19216END_ENTITY;
19217
19218ENTITY text_string_representation
19219   SUBTYPE OF (representation);
19220      SELF\representation.items : SET [1:?] OF text_string_representation_item;
19221   WHERE
19222      WR1:
19223         SIZEOF(QUERY (item <* SELF\representation.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL', 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT', 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT_CHARACTER', 'STEP_MERGED_CAD_SCHEMA.DEFINED_CHARACTER_GLYPH', 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' ] * TYPEOF(item)) = 0))) >= 1;
19224      WR2:
19225         SIZEOF(QUERY (a2p <* QUERY (item <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT' IN TYPEOF(item)))| NOT ((SIZEOF(QUERY (at <* QUERY (item <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT' IN TYPEOF(item)))| (at\mapped_item.mapping_target :=: a2p))) >= 1) OR (SIZEOF(QUERY (atc <* QUERY (item <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF(item)))| (atc\mapped_item.mapping_target :=: a2p))) >= 1)))) = 0;
19226END_ENTITY;
19227
19228ENTITY text_style
19229   SUBTYPE OF (founded_item);
19230      name : label;
19231      character_appearance : character_style_select;
19232END_ENTITY;
19233
19234ENTITY text_style_for_defined_font;
19235      text_colour : colour;
19236END_ENTITY;
19237
19238ENTITY text_style_with_box_characteristics
19239   SUBTYPE OF (text_style);
19240      characteristics : SET [1:4] OF box_characteristic_select;
19241   WHERE
19242      WR1:
19243         SIZEOF(QUERY (c1 <* SELF.characteristics| (SIZEOF(QUERY (c2 <* SELF.characteristics - c1| (TYPEOF(c1) = TYPEOF(c2)))) > 0))) = 0;
19244END_ENTITY;
19245
19246ENTITY text_style_with_mirror
19247   SUBTYPE OF (text_style);
19248      mirror_placement : axis2_placement;
19249END_ENTITY;
19250
19251ENTITY text_style_with_spacing
19252   SUBTYPE OF (text_style);
19253      character_spacing : character_spacing_select;
19254END_ENTITY;
19255
19256-- IN AP242
19257ENTITY thermal_component
19258   SUBTYPE OF (assembly_component);
19259END_ENTITY;
19260
19261-- IN AP203e2/AP242
19262ENTITY thermal_resistance_measure_with_unit
19263   SUBTYPE OF (measure_with_unit);
19264   WHERE
19265      WR1:
19266         'STEP_MERGED_CAD_SCHEMA.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
19267END_ENTITY;
19268
19269-- IN AP203e2/AP242
19270ENTITY thermal_resistance_unit
19271   SUBTYPE OF (derived_unit);
19272   WHERE
19273      WR1:
19274         derive_dimensional_exponents(SELF) = dimensional_exponents(-1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0);
19275END_ENTITY;
19276
19277ENTITY thermodynamic_temperature_measure_with_unit
19278   SUBTYPE OF (measure_with_unit);
19279   WHERE
19280      WR1:
19281         'STEP_MERGED_CAD_SCHEMA.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
19282END_ENTITY;
19283
19284ENTITY thermodynamic_temperature_unit
19285   SUBTYPE OF (named_unit);
19286   WHERE
19287      WR1:
19288         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 0.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
19289END_ENTITY;
19290
19291-- IN AP203e2/AP242
19292ENTITY thickened_face_solid
19293   SUBTYPE OF (solid_model);
19294      base_element : generalized_surface_select;
19295      offset1 : length_measure;
19296      offset2 : length_measure;
19297   WHERE
19298      WR1:
19299         NOT (('STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(base_element)) AND NOT ('STEP_MERGED_CAD_SCHEMA.BOUNDED_SURFACE' IN TYPEOF(base_element)));
19300      WR2:
19301         offset1 <> offset2;
19302END_ENTITY;
19303
19304-- IN AP203e2
19305ENTITY thickness_laminate_definition
19306   SUBTYPE OF (product_definition);
19307   WHERE
19308      WR1:
19309         SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr)))) = 1;
19310END_ENTITY;
19311
19312-- IN AP203e2/AP242
19313ENTITY thickness_laminate_table
19314   SUBTYPE OF (zone_structural_makeup);
19315END_ENTITY;
19316
19317-- IN AP214/AP242
19318ENTITY thread
19319   SUBTYPE OF (feature_definition);
19320   WHERE
19321      WR1:
19322         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (8 <= SIZEOF(pdr.used_representation.items))) AND (SIZEOF(pdr.used_representation.items) <= 11))) = 1))) = 1;
19323      WR2:
19324         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) = 1))) = 0))) = 0;
19325      WR3:
19326         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'minor diameter'))) <= 1))) = 0))) = 0;
19327      WR4:
19328         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'pitch diameter'))) <= 1))) = 0))) = 0;
19329      WR5:
19330         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'number of threads'))) = 1))) = 0))) = 0;
19331      WR6:
19332         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) = 0;
19333      WR7:
19334         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0;
19335      WR8:
19336         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'hand')) AND (it.description IN [ 'left', 'right' ]))) = 1))) = 0))) = 0;
19337      WR9:
19338         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0))) = 0;
19339      WR10:
19340         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'thread side')) AND ((it.description = 'internal') OR (it.description = 'external')))) = 1))) = 0))) = 0;
19341      WR11:
19342         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'crest'))) <= 1))) = 0))) = 0;
19343      WR12:
19344         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'applied area usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
19345      WR13:
19346         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
19347      WR14:
19348         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))) = 0;
19349      WR15:
19350         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'nominal size'))) <= 1))) = 0))) = 0;
19351      WR16:
19352         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'thread runout') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'thread runout usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.THREAD_RUNOUT' IN TYPEOF(sdr.relating_shape_aspect)))) <= 1))) = 1))) = 0;
19353END_ENTITY;
19354
19355-- IN AP242
19356ENTITY thread_runout
19357   SUBTYPE OF (shape_aspect);
19358   WHERE
19359      WR1:
19360         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape);
19361      WR2:
19362         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
19363      WR3:
19364         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) = 3))) = 0))) = 0;
19365      WR4:
19366         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| NOT (srwp_i.name IN [ 'length of runout', 'pitch or dimension', 'included or extra' ]))) > 0))) = 0))) = 0;
19367      WR5:
19368         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'length of runout'))) = 1))) = 0))) <= 1;
19369      WR6:
19370         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'pitch or dimension')) AND (it.description IN [ 'pitch', 'pitch or dimension' ]))) = 1))) = 0))) = 0;
19371      WR7:
19372         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'included or extra')) AND (it.description IN [ 'included', 'extra' ]))) = 1))) = 0))) = 0;
19373END_ENTITY;
19374
19375ENTITY time_interval;
19376      id : identifier;
19377      name : label;
19378      description : OPTIONAL text;
19379END_ENTITY;
19380
19381ENTITY time_interval_assignment
19382   ABSTRACT SUPERTYPE;
19383      assigned_time_interval : time_interval;
19384      role : time_interval_role;
19385END_ENTITY;
19386
19387ENTITY time_interval_based_effectivity
19388   SUBTYPE OF (effectivity);
19389      effectivity_period : time_interval;
19390END_ENTITY;
19391
19392-- IN AP203e2/AP242
19393ENTITY time_interval_relationship;
19394      name : label;
19395      description : OPTIONAL text;
19396      relating_time_interval : time_interval;
19397      related_time_interval : time_interval;
19398END_ENTITY;
19399
19400ENTITY time_interval_role;
19401      name : label;
19402      description : OPTIONAL text;
19403END_ENTITY;
19404
19405ENTITY time_interval_with_bounds
19406   SUBTYPE OF (time_interval);
19407      primary_bound : OPTIONAL date_time_or_event_occurrence;
19408      secondary_bound : OPTIONAL date_time_or_event_occurrence;
19409      duration : OPTIONAL time_measure_with_unit;
19410   WHERE
19411      WR1:
19412         NOT (EXISTS(secondary_bound) AND EXISTS(duration));
19413      WR2:
19414         EXISTS(primary_bound) OR EXISTS(secondary_bound);
19415END_ENTITY;
19416
19417ENTITY time_measure_with_unit
19418   SUBTYPE OF (measure_with_unit);
19419   WHERE
19420      WR1:
19421         'STEP_MERGED_CAD_SCHEMA.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
19422END_ENTITY;
19423
19424ENTITY time_unit
19425   SUBTYPE OF (named_unit);
19426   WHERE
19427      WR1:
19428         ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\named_unit.dimensions.time_exponent = 1.0)) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0)) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0)) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
19429END_ENTITY;
19430
19431-- DIFF IN AP214
19432ENTITY tolerance_value;
19433      lower_bound : measure_with_unit;
19434      upper_bound : measure_with_unit;
19435   DERIVE
19436      lbvc : REAL := lower_bound\measure_with_unit.value_component;
19437      ubvc : REAL := upper_bound\measure_with_unit.value_component;
19438   WHERE
19439      WR1:
19440         ubvc > lbvc;
19441      WR2:
19442         upper_bound\measure_with_unit.unit_component = lower_bound\measure_with_unit.unit_component;
19443END_ENTITY;
19444
19445-- DIFF IN AP214
19446-- DIFF IN AP203e2
19447ENTITY tolerance_zone
19448   SUBTYPE OF (shape_aspect);
19449      defining_tolerance : SET [1:?] OF tolerance_zone_target;
19450      form : tolerance_zone_form;
19451END_ENTITY;
19452
19453-- DIFF IN AP214
19454-- DIFF IN AP203e2
19455ENTITY tolerance_zone_definition
19456   SUPERTYPE OF (ONEOF(projected_zone_definition, non_uniform_zone_definition, runout_zone_definition));
19457      zone : tolerance_zone;
19458      boundaries : SET [0:?] OF shape_aspect;
19459END_ENTITY;
19460
19461ENTITY tolerance_zone_form;
19462      name : label;
19463END_ENTITY;
19464
19465-- DIFF IN AP214
19466ENTITY topological_representation_item
19467   SUPERTYPE OF (ONEOF(vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, loop ANDOR path))
19468   SUBTYPE OF (representation_item);
19469END_ENTITY;
19470
19471-- IN AP242
19472ENTITY topology_related_to_multiply_defined_geometry
19473   ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_faces, multiply_defined_vertices, multiply_defined_edges))
19474   SUBTYPE OF (inapt_topology_and_geometry_relationship);
19475END_ENTITY;
19476
19477-- IN AP242
19478ENTITY topology_related_to_nearly_degenerate_geometry
19479   ABSTRACT SUPERTYPE OF (ONEOF(short_length_edge, small_area_face, entirely_narrow_face))
19480   SUBTYPE OF (inapt_topology_and_geometry_relationship);
19481END_ENTITY;
19482
19483-- IN AP242
19484ENTITY topology_related_to_overlapping_geometry
19485   ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_faces, partly_overlapping_edges))
19486   SUBTYPE OF (inapt_topology_and_geometry_relationship);
19487END_ENTITY;
19488
19489-- IN AP242
19490ENTITY topology_related_to_self_intersecting_geometry
19491   ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_loop, self_intersecting_shell, intersecting_connected_face_sets))
19492   SUBTYPE OF (inapt_topology_and_geometry_relationship);
19493END_ENTITY;
19494
19495ENTITY toroidal_surface
19496   SUBTYPE OF (elementary_surface);
19497      major_radius : positive_length_measure;
19498      minor_radius : positive_length_measure;
19499END_ENTITY;
19500
19501ENTITY torus
19502   SUBTYPE OF (geometric_representation_item);
19503      position : axis1_placement;
19504      major_radius : positive_length_measure;
19505      minor_radius : positive_length_measure;
19506   WHERE
19507      WR1:
19508         major_radius > minor_radius;
19509END_ENTITY;
19510
19511ENTITY total_runout_tolerance
19512   SUBTYPE OF (geometric_tolerance_with_datum_reference);
19513END_ENTITY;
19514
19515-- IN AP203e2/AP242
19516ENTITY track_blended_solid
19517   ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions)
19518   SUBTYPE OF (edge_blended_solid);
19519   WHERE
19520      WR1:
19521         check_continuous_edges(SELF\edge_blended_solid.blended_edges);
19522END_ENTITY;
19523
19524-- IN AP203e2/AP242
19525ENTITY track_blended_solid_with_end_conditions
19526   SUBTYPE OF (track_blended_solid);
19527      end_conditions : LIST [2:2] OF blend_end_condition_select;
19528   WHERE
19529      WR1:
19530         SIZEOF(TYPEOF(SELF) * [ 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND', 'STEP_MERGED_CAD_SCHEMA.SOLID_WITH_CHAMFERED_EDGES' ]) = 1;
19531      WR2:
19532         NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX' IN TYPEOF(end_conditions[1])) AND ('STEP_MERGED_CAD_SCHEMA.VERTEX' IN TYPEOF(end_conditions[2])));
19533      WR3:
19534         NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX' IN TYPEOF(end_conditions[1])) AND NOT ((end_conditions[1] :=: SELF\edge_blended_solid.blended_edges[1].edge_start) XOR (end_conditions[1] :=: SELF\edge_blended_solid.blended_edges[1].edge_end)));
19535      WR4:
19536         NOT (('STEP_MERGED_CAD_SCHEMA.VERTEX' IN TYPEOF(end_conditions[2])) AND NOT ((end_conditions[2] :=: SELF\edge_blended_solid.blended_edges[HIINDEX(SELF\edge_blended_solid.blended_edges)].edge_start) XOR (end_conditions[2] :=: SELF\edge_blended_solid.blended_edges[HIINDEX(SELF\edge_blended_solid.blended_edges)].edge_end)));
19537END_ENTITY;
19538
19539-- IN AP203e2/AP242
19540ENTITY transformation_with_derived_angle
19541   SUPERTYPE OF (ONEOF(draped_defined_transformation, laid_defined_transformation))
19542   SUBTYPE OF (item_defined_transformation);
19543      SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select;
19544      SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
19545   DERIVE
19546      orientation_angle : plane_angle_measure := derive_angle(SELF\item_defined_transformation.transform_item_1, SELF\item_defined_transformation.transform_item_2);
19547   WHERE
19548      WR1:
19549         ((SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[1] = SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[1]) AND (SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[2] = SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[2])) AND (SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[3] = SELF\item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[3]);
19550END_ENTITY;
19551
19552-- DIFF IN AP214
19553-- IN AP214/AP242
19554ENTITY transition_feature
19555   SUPERTYPE OF (ONEOF(chamfer, edge_round, fillet))
19556   SUBTYPE OF (shape_aspect);
19557   WHERE
19558      WR1:
19559         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION', 'STEP_MERGED_CAD_SCHEMA.COMPOUND_FEATURE' ] * TYPEOF(SELF.of_shape.definition)) = 1;
19560      WR2:
19561         SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CHAMFER', 'STEP_MERGED_CAD_SCHEMA.EDGE_ROUND', 'STEP_MERGED_CAD_SCHEMA.FILLET' ] * TYPEOF(SELF)) = 1;
19562END_ENTITY;
19563
19564-- IN AP242
19565ENTITY triangulated_face
19566   SUBTYPE OF (tessellated_face);
19567      pnindex : LIST [0:?] OF INTEGER;
19568      triangles : LIST [1:?] OF LIST [3:3] OF INTEGER;
19569   WHERE
19570      WR1:
19571         (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.pnmax);
19572      WR2:
19573         NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <> coordinates.npoints));
19574END_ENTITY;
19575
19576-- IN AP242
19577ENTITY triangulated_surface_set
19578   SUBTYPE OF (tessellated_surface_set);
19579      pnindex : LIST [0:?] OF INTEGER;
19580      triangles : LIST [1:?] OF LIST [3:3] OF INTEGER;
19581   WHERE
19582      WR1:
19583         (SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_surface_set.pnmax);
19584      WR2:
19585         NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax <> coordinates.npoints));
19586END_ENTITY;
19587
19588ENTITY trimmed_curve
19589   SUBTYPE OF (bounded_curve);
19590      basis_curve : curve;
19591      trim_1 : SET [1:2] OF trimming_select;
19592      trim_2 : SET [1:2] OF trimming_select;
19593      sense_agreement : BOOLEAN;
19594      master_representation : trimming_preference;
19595   WHERE
19596      WR1:
19597         (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
19598      WR2:
19599         (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
19600END_ENTITY;
19601
19602-- IN AP242
19603ENTITY turned_knurl
19604   SUBTYPE OF (feature_definition);
19605   WHERE
19606      WR1:
19607         SELF\characterized_object.description IN [ 'diamond', 'diagonal', 'straight' ];
19608      WR2:
19609         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ((6 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 9)))) = 1))) = 1;
19610      WR3:
19611         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'number of teeth'))) <= 1))) = 0))) = 0;
19612      WR4:
19613         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))) = 1))) = 0))) = 0;
19614      WR5:
19615         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'nominal diameter'))) = 1))) = 0))) = 0;
19616      WR6:
19617         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tooth depth'))) <= 1))) = 0))) = 0;
19618      WR7:
19619         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'root fillet'))) <= 1))) = 0))) = 0;
19620      WR8:
19621         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'diametral pitch'))) = 1))) = 0))) = 0;
19622      WR9:
19623         NOT (SELF\characterized_object.description IN [ 'diamond', 'diagonal' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'helix angle'))) = 1))) = 0))) = 0);
19624      WR10:
19625         NOT (SELF\characterized_object.description = 'diagonal') OR (SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'helix hand'))) = 1))) = 0))) = 0);
19626      WR11:
19627         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'applied area usage') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
19628      WR12:
19629         SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
19630END_ENTITY;
19631
19632ENTITY two_direction_repeat_factor
19633   SUBTYPE OF (one_direction_repeat_factor);
19634      second_repeat_factor : vector;
19635END_ENTITY;
19636
19637ENTITY type_qualifier;
19638      name : label;
19639END_ENTITY;
19640
19641-- IN AP214/AP242
19642ENTITY unary_boolean_expression
19643   ABSTRACT SUPERTYPE OF (ONEOF(not_expression, odd_function))
19644   SUBTYPE OF (boolean_expression, unary_generic_expression);
19645END_ENTITY;
19646
19647-- IN AP214/AP242
19648ENTITY unary_function_call
19649   ABSTRACT SUPERTYPE OF (ONEOF(abs_function, minus_function, sin_function, cos_function, tan_function, asin_function, acos_function, exp_function, log_function, log2_function, log10_function, square_root_function))
19650   SUBTYPE OF (unary_numeric_expression);
19651END_ENTITY;
19652
19653ENTITY unary_generic_expression
19654   ABSTRACT SUPERTYPE
19655   SUBTYPE OF (generic_expression);
19656      operand : generic_expression;
19657END_ENTITY;
19658
19659-- DIFF IN AP214
19660ENTITY unary_numeric_expression
19661   ABSTRACT SUPERTYPE
19662   SUBTYPE OF (numeric_expression, unary_generic_expression);
19663      SELF\unary_generic_expression.operand : numeric_expression;
19664END_ENTITY;
19665
19666-- IN AP242
19667ENTITY unbound_parameter_environment
19668   SUBTYPE OF (environment);
19669   WHERE
19670      WR1:
19671         ('STEP_MERGED_CAD_SCHEMA.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF(SELF\environment.syntactic_representation)) AND ('STEP_MERGED_CAD_SCHEMA.UNBOUND_VARIATIONAL_PARAMETER_SEMANTICS' IN TYPEOF(SELF\environment.semantics));
19672END_ENTITY;
19673
19674-- IN AP242
19675ENTITY unbound_variational_parameter
19676   SUBTYPE OF (variational_parameter);
19677   WHERE
19678      WR1:
19679         'STEP_MERGED_CAD_SCHEMA.UNBOUND_PARAMETER_ENVIRONMENT' IN TYPEOF(SELF\generic_variable.interpretation);
19680END_ENTITY;
19681
19682-- IN AP242
19683ENTITY unbound_variational_parameter_semantics
19684   SUBTYPE OF (variable_semantics);
19685END_ENTITY;
19686
19687ENTITY uncertainty_assigned_representation
19688   SUBTYPE OF (representation);
19689      uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
19690END_ENTITY;
19691
19692ENTITY uncertainty_measure_with_unit
19693   SUBTYPE OF (measure_with_unit);
19694      name : label;
19695      description : OPTIONAL text;
19696   WHERE
19697      WR1:
19698         valid_measure_value(SELF\measure_with_unit.value_component);
19699END_ENTITY;
19700
19701ENTITY uncertainty_qualifier
19702   SUPERTYPE OF (ONEOF(standard_uncertainty, qualitative_uncertainty));
19703      measure_name : label;
19704      description : text;
19705END_ENTITY;
19706
19707-- DIFF IN AP214
19708-- IN AP214/AP242
19709ENTITY unconstrained_pair
19710   SUBTYPE OF (low_order_kinematic_pair);
19711   DERIVE
19712      SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
19713      SELF\low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
19714      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
19715      SELF\low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
19716      SELF\low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
19717      SELF\low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
19718END_ENTITY;
19719
19720-- DIFF IN AP214
19721-- IN AP214/AP242
19722ENTITY unconstrained_pair_value
19723   SUBTYPE OF (pair_value);
19724      actual_placement : axis2_placement_3d;
19725      SELF\pair_value.applies_to_pair : unconstrained_pair;
19726END_ENTITY;
19727
19728-- IN AP242
19729ENTITY unequally_disposed_geometric_tolerance
19730   SUBTYPE OF (geometric_tolerance);
19731      displacement : length_measure_with_unit;
19732   WHERE
19733      WR1:
19734         ('NUMBER' IN TYPEOF(SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component)) AND (SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component > 0.0);
19735END_ENTITY;
19736
19737ENTITY uniform_curve
19738   SUBTYPE OF (b_spline_curve);
19739END_ENTITY;
19740
19741-- IN AP242
19742ENTITY uniform_product_space
19743   SUBTYPE OF (maths_space, generic_literal);
19744      base : maths_space;
19745      exponent : positive_integer;
19746   WHERE
19747      WR1:
19748         expression_is_constant(base);
19749      WR2:
19750         no_cyclic_space_reference(SELF, []);
19751      WR3:
19752         base <> the_empty_space;
19753END_ENTITY;
19754
19755-- IN AP203e2/AP242
19756ENTITY uniform_resource_identifier
19757   SUBTYPE OF (descriptive_representation_item);
19758END_ENTITY;
19759
19760ENTITY uniform_surface
19761   SUBTYPE OF (b_spline_surface);
19762END_ENTITY;
19763
19764-- DIFF IN AP214
19765-- IN AP214/AP242
19766ENTITY universal_pair
19767   SUBTYPE OF (low_order_kinematic_pair);
19768      input_skew_angle : OPTIONAL plane_angle_measure;
19769   DERIVE
19770      SELF\low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
19771      SELF\low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
19772      SELF\low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
19773      skew_angle : plane_angle_measure := NVL(input_skew_angle, 0.0);
19774      SELF\low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
19775      SELF\low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
19776      SELF\low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
19777   WHERE
19778      WR1:
19779         cos(plane_angle_for_pair_in_radian(SELF, skew_angle)) > 0.0;
19780END_ENTITY;
19781
19782-- IN AP214
19783ENTITY universal_pair_range
19784   SUBTYPE OF (simple_pair_range);
19785      SELF\simple_pair_range.applies_to_pair : universal_pair;
19786      lower_limit_first_rotation : rotational_range_measure;
19787      upper_limit_first_rotation : rotational_range_measure;
19788      lower_limit_second_rotation : rotational_range_measure;
19789      upper_limit_second_rotation : rotational_range_measure;
19790   WHERE
19791      wr1:
19792         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_first_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_first_rotation))) XOR (lower_limit_first_rotation < upper_limit_first_rotation);
19793      wr2:
19794         (('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(lower_limit_second_rotation)) OR ('STEP_MERGED_CAD_SCHEMA.UNLIMITED_RANGE' IN TYPEOF(upper_limit_second_rotation))) XOR (lower_limit_second_rotation < upper_limit_second_rotation);
19795END_ENTITY;
19796
19797-- DIFF IN AP214
19798-- IN AP214/AP242
19799ENTITY universal_pair_value
19800   SUBTYPE OF (pair_value);
19801      first_rotation_angle : plane_angle_measure;
19802      second_rotation_angle : plane_angle_measure;
19803      SELF\pair_value.applies_to_pair : universal_pair;
19804END_ENTITY;
19805
19806-- IN AP242
19807ENTITY universal_pair_with_range
19808   SUBTYPE OF (universal_pair);
19809      lower_limit_first_rotation : OPTIONAL plane_angle_measure;
19810      upper_limit_first_rotation : OPTIONAL plane_angle_measure;
19811      lower_limit_second_rotation : OPTIONAL plane_angle_measure;
19812      upper_limit_second_rotation : OPTIONAL plane_angle_measure;
19813   WHERE
19814      WR1:
19815         (NOT EXISTS(lower_limit_first_rotation) OR NOT EXISTS(upper_limit_first_rotation)) XOR (lower_limit_first_rotation < upper_limit_first_rotation);
19816      WR2:
19817         (NOT EXISTS(lower_limit_second_rotation) OR NOT EXISTS(upper_limit_second_rotation)) XOR (lower_limit_second_rotation < upper_limit_second_rotation);
19818END_ENTITY;
19819
19820-- IN AP242
19821ENTITY unused_patches
19822   SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
19823      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
19824   WHERE
19825      WR1:
19826         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
19827      WR2:
19828         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.COUNT_MEASURE');
19829      WR3:
19830         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' ]);
19831      WR4:
19832         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.' + 'B_SPLINE_SURFACE_STRIP' ]);
19833      WR5:
19834         validate_accuracy_types(SELF, []);
19835END_ENTITY;
19836
19837-- IN AP242
19838ENTITY unused_shape_element
19839   SUBTYPE OF (externally_conditioned_data_quality_criterion);
19840   WHERE
19841      WR1:
19842         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' ]);
19843END_ENTITY;
19844
19845-- IN AP203e2/AP242
19846ENTITY usage_association
19847   SUBTYPE OF (action_method_relationship);
19848      SELF\action_method_relationship.related_method : information_usage_right;
19849      SELF\action_method_relationship.relating_method : information_usage_right;
19850   DERIVE
19851      related : information_usage_right := SELF\action_method_relationship.related_method;
19852      relating : information_usage_right := SELF\action_method_relationship.relating_method;
19853END_ENTITY;
19854
19855-- IN AP203e2/AP242
19856ENTITY user_defined_curve_font
19857   SUBTYPE OF (curve_style_font, mapped_item);
19858END_ENTITY;
19859
19860-- IN AP203e2/AP242
19861ENTITY user_defined_marker
19862   SUBTYPE OF (mapped_item, pre_defined_marker);
19863END_ENTITY;
19864
19865-- IN AP203e2/AP242
19866ENTITY user_defined_terminator_symbol
19867   SUBTYPE OF (mapped_item, pre_defined_symbol);
19868END_ENTITY;
19869
19870-- IN AP203e2/AP242
19871ENTITY user_selected_elements
19872   SUBTYPE OF (representation_item);
19873      picked_items : SET [1:?] OF representation_item;
19874END_ENTITY;
19875
19876-- DIFF IN AP203e2
19877-- IN AP203e2/AP242
19878ENTITY user_selected_shape_elements
19879   SUBTYPE OF (user_selected_elements);
19880      SELF\user_selected_elements.picked_items : SET [1:?] OF shape_representation_item;
19881END_ENTITY;
19882
19883-- IN AP242
19884ENTITY value_format_type_qualifier;
19885      format_type : value_format_type;
19886END_ENTITY;
19887
19888-- IN AP214/AP242
19889ENTITY value_function
19890   SUPERTYPE OF (int_value_function)
19891   SUBTYPE OF (numeric_expression, unary_generic_expression);
19892      SELF\unary_generic_expression.operand : string_expression;
19893END_ENTITY;
19894
19895ENTITY value_range
19896   SUBTYPE OF (compound_representation_item);
19897   WHERE
19898      WR1:
19899         ('STEP_MERGED_CAD_SCHEMA.' + 'SET_REPRESENTATION_ITEM' IN TYPEOF(item_element)) AND value_range_wr1(item_element);
19900      WR2:
19901         value_range_wr2(item_element);
19902      WR3:
19903         value_range_wr3(item_element);
19904END_ENTITY;
19905
19906ENTITY value_representation_item
19907   SUBTYPE OF (representation_item);
19908      value_component : measure_value;
19909   WHERE
19910      WR1:
19911         SIZEOF(QUERY (rep <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(rep.context_of_items)))) = 0;
19912END_ENTITY;
19913
19914-- IN AP214/AP242
19915ENTITY variable
19916   ABSTRACT SUPERTYPE OF (ONEOF(numeric_variable, boolean_variable, string_variable))
19917   SUBTYPE OF (generic_variable);
19918END_ENTITY;
19919
19920-- IN AP242
19921ENTITY variable_expression
19922   SUBTYPE OF (variable_semantics);
19923      property_associated : property_variable_rep_select;
19924END_ENTITY;
19925
19926ENTITY variable_semantics
19927   ABSTRACT SUPERTYPE;
19928END_ENTITY;
19929
19930-- IN AP242
19931ENTITY variational_current_representation_relationship
19932   SUBTYPE OF (representation_relationship);
19933      current_result : representation;
19934      SELF\representation_relationship.rep_1 : variational_representation;
19935   UNIQUE
19936      UR1 : current_result;
19937   WHERE
19938      WR1:
19939         QUERY (q <* SELF\representation_relationship.rep_1.items| NOT ('STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION_ITEM' IN TYPEOF(q))) = SELF\representation_relationship.rep_2.items;
19940      WR2:
19941         SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items;
19942      WR3:
19943         SIZEOF(QUERY (q <* SELF\representation_relationship.rep_2.items| ('STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION_ITEM' IN TYPEOF(q)))) = 0;
19944      WR4:
19945         TYPEOF(SELF\representation_relationship.rep_1) - TYPEOF(SELF\representation_relationship.rep_2) = [ 'STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION' ];
19946      WR5:
19947         current_result :=: SELF\representation_relationship.rep_2;
19948END_ENTITY;
19949
19950-- IN AP242
19951ENTITY variational_parameter
19952   ABSTRACT SUPERTYPE OF (ONEOF(bound_variational_parameter, unbound_variational_parameter))
19953   SUBTYPE OF (variational_representation_item, maths_variable);
19954      parameter_description : OPTIONAL text;
19955      parameter_current_value : maths_value;
19956   WHERE
19957      WR1:
19958         member_of(parameter_current_value, SELF\maths_variable.values_space);
19959      WR2:
19960         SELF\maths_variable.name = SELF\representation_item.name;
19961END_ENTITY;
19962
19963-- IN AP242
19964ENTITY variational_representation
19965   SUBTYPE OF (representation);
19966   INVERSE
19967      cm_link : variational_current_representation_relationship FOR rep_1;
19968   WHERE
19969      WR1:
19970         SIZEOF(QUERY (q <* SELF\representation.items| ('STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION_ITEM' IN TYPEOF(q)))) > 0;
19971      WR2:
19972         SIZEOF(QUERY (q <* SELF\representation.items - cm_link.rep_2.items| invalidate_vrep_item(q))) = 0;
19973END_ENTITY;
19974
19975-- IN AP203e2/AP242
19976ENTITY variational_representation_item
19977   ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item)
19978   SUBTYPE OF (representation_item);
19979   WHERE
19980      WR1:
19981         SIZEOF(QUERY (q <* using_representations(SELF)| NOT ('STEP_MERGED_CAD_SCHEMA.VARIATIONAL_REPRESENTATION' IN TYPEOF(q)))) = 0;
19982      WR2:
19983         SIZEOF(QUERY (q <* using_representations(SELF)| NOT (SELF IN q.items))) = 0;
19984END_ENTITY;
19985
19986ENTITY vector
19987   SUBTYPE OF (geometric_representation_item);
19988      orientation : direction;
19989      magnitude : length_measure;
19990   WHERE
19991      WR1:
19992         magnitude >= 0.0;
19993END_ENTITY;
19994
19995-- DIFF IN AP214
19996ENTITY vector_style
19997   SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
19998END_ENTITY;
19999
20000-- IN AP214/AP242
20001ENTITY vee_profile
20002   SUBTYPE OF (shape_aspect);
20003   WHERE
20004      WR1:
20005         'STEP_MERGED_CAD_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
20006      WR2:
20007         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) = 1))) = 0;
20008      WR3:
20009         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 6))) = 0))) = 0;
20010      WR4:
20011         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.used_representation.items| (((((srwp_i.name = 'orientation') OR (srwp_i.name = 'profile angle')) OR (srwp_i.name = 'tilt angle')) OR (srwp_i.name = 'profile radius')) OR (srwp_i.name = 'first length')) OR (srwp_i.name = 'second length'))) = SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
20012      WR5:
20013         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
20014      WR6:
20015         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'profile radius'))) <= 1))) = 0))) = 0;
20016      WR7:
20017         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'profile angle'))) = 1))) = 0))) = 0;
20018      WR8:
20019         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF(it)) = 2) AND (it.name = 'tilt angle'))) = 1))) = 0))) = 0;
20020      WR9:
20021         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
20022      WR10:
20023         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'first length'))) <= 1))) = 0))) = 0;
20024      WR11:
20025         SIZEOF(QUERY (pd <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it\measure_with_unit.value_component))) AND (it.name = 'second length'))) <= 1))) = 0))) = 0;
20026END_ENTITY;
20027
20028-- IN AP203e2/AP242
20029ENTITY velocity_measure_with_unit
20030   SUBTYPE OF (measure_with_unit);
20031   WHERE
20032      WR1:
20033         'STEP_MERGED_CAD_SCHEMA.VELOCITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
20034END_ENTITY;
20035
20036-- IN AP203e2/AP242
20037ENTITY velocity_unit
20038   SUBTYPE OF (derived_unit);
20039   WHERE
20040      WR1:
20041         derive_dimensional_exponents(SELF) = dimensional_exponents(1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0);
20042END_ENTITY;
20043
20044-- DIFF IN AP214
20045-- DIFF IN AP203e2
20046ENTITY versioned_action_request;
20047      id : identifier;
20048      version : OPTIONAL label;
20049      purpose : text;
20050      description : OPTIONAL text;
20051END_ENTITY;
20052
20053-- IN AP214/AP242
20054ENTITY versioned_action_request_relationship;
20055      id : identifier;
20056      name : label;
20057      description : OPTIONAL text;
20058      relating_versioned_action_request : versioned_action_request;
20059      related_versioned_action_request : versioned_action_request;
20060END_ENTITY;
20061
20062ENTITY vertex
20063   SUBTYPE OF (topological_representation_item);
20064END_ENTITY;
20065
20066ENTITY vertex_loop
20067   SUBTYPE OF (loop);
20068      loop_vertex : vertex;
20069END_ENTITY;
20070
20071ENTITY vertex_point
20072   SUBTYPE OF (vertex, geometric_representation_item);
20073      vertex_geometry : point;
20074END_ENTITY;
20075
20076-- IN AP203e2/AP242
20077ENTITY vertex_shell
20078   SUBTYPE OF (topological_representation_item);
20079      vertex_shell_extent : vertex_loop;
20080END_ENTITY;
20081
20082-- DIFF IN AP214
20083-- DIFF IN AP203e2
20084ENTITY view_volume
20085   SUBTYPE OF (founded_item);
20086      projection_type : central_or_parallel;
20087      projection_point : cartesian_point;
20088      view_plane_distance : length_measure;
20089      front_plane_distance : length_measure;
20090      front_plane_clipping : BOOLEAN;
20091      back_plane_distance : length_measure;
20092      back_plane_clipping : BOOLEAN;
20093      view_volume_sides_clipping : BOOLEAN;
20094      view_window : planar_box;
20095   INVERSE
20096      camera_usages : SET [1:?] OF camera_model_d3 FOR perspective_of_volume;
20097   WHERE
20098      WR1:
20099         ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_2D' IN TYPEOF(SELF\view_volume.view_window.placement)) OR (dot_product(representation_item(' ') || geometric_representation_item() || direction([ 0.0, 0.0, 1.0 ]), SELF.view_window\planar_box.placement\axis2_placement_3d.p[3]) = 1.0);
20100      WR2:
20101         view_plane_distance = view_window.placement\placement.location.coordinates[3];
20102END_ENTITY;
20103
20104ENTITY visual_appearance_representation
20105   SUBTYPE OF (representation);
20106   WHERE
20107      WR1:
20108         ((3 <= SIZEOF(SELF.items)) AND (SIZEOF(SELF.items) <= 9)) AND (SIZEOF(QUERY (i <* items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name IN [ 'colour id', 'colour name', 'lustre', 'pattern', 'transparency', 'orientation' ]))) + SIZEOF(QUERY (i <* items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ] * TYPEOF(i)) = 1) AND (i.name IN [ 'refraction index', 'opacity' ]))) + SIZEOF(QUERY (i <* items| ('STEP_MERGED_CAD_SCHEMA.' + 'DOCUMENT_FILE' IN TYPEOF(i)) AND (i.name IN [ 'texture map' ]))) = SIZEOF(SELF.items));
20109      WR2:
20110         SIZEOF(QUERY (i <* SELF.items| (i.name = 'colour id'))) = 1;
20111      WR3:
20112         SIZEOF(QUERY (i <* SELF.items| (i.name = 'lustre'))) = 1;
20113      WR4:
20114         SIZEOF(QUERY (i <* SELF.items| (i.name = 'colour name'))) <= 1;
20115      WR5:
20116         SIZEOF(QUERY (i <* SELF.items| (i.name = 'pattern'))) <= 1;
20117      WR6:
20118         SIZEOF(QUERY (i <* SELF.items| (i.name = 'transparency'))) <= 1;
20119      WR7:
20120         SIZEOF(QUERY (i <* SELF.items| (i.name = 'texture map'))) <= 1;
20121      WR8:
20122         SIZEOF(QUERY (i <* SELF.items| (i.name = 'refraction index'))) <= 1;
20123      WR9:
20124         SIZEOF(QUERY (i <* SELF.items| (i.name = 'opacity'))) <= 1;
20125      WR10:
20126         SIZEOF(QUERY (i <* SELF.items| (i.name = 'orientation'))) <= 1;
20127      WR11:
20128         (SIZEOF(USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(SELF, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| (SIZEOF(QUERY (gpa <* USEDIN(pdr.definition, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)) AND (gpa\general_property_association.base_definition\general_property.name = 'surface_condition'))) = 1))) = 1);
20129END_ENTITY;
20130
20131-- IN AP242
20132ENTITY volume
20133   SUBTYPE OF (geometric_representation_item);
20134   WHERE
20135      WR1:
20136         SELF\geometric_representation_item.dim = 3;
20137END_ENTITY;
20138
20139ENTITY volume_measure_with_unit
20140   SUBTYPE OF (measure_with_unit);
20141   WHERE
20142      WR1:
20143         'STEP_MERGED_CAD_SCHEMA.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
20144END_ENTITY;
20145
20146ENTITY volume_unit
20147   SUBTYPE OF (derived_unit);
20148   WHERE
20149      WR1:
20150         derive_dimensional_exponents(SELF) = dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
20151END_ENTITY;
20152
20153-- IN AP203e2/AP242
20154ENTITY week_of_year_and_day_date
20155   SUBTYPE OF (date);
20156      week_component : week_in_year_number;
20157      day_component : OPTIONAL day_in_week_number;
20158END_ENTITY;
20159
20160-- IN AP203e2/AP242
20161ENTITY wire_shell
20162   SUBTYPE OF (topological_representation_item);
20163      wire_shell_extent : SET [1:?] OF loop;
20164   WHERE
20165      WR1:
20166         NOT mixed_loop_type_set(wire_shell_extent);
20167END_ENTITY;
20168
20169-- IN AP242
20170ENTITY wrong_element_name
20171   SUBTYPE OF (externally_conditioned_data_quality_criterion);
20172   WHERE
20173      WR1:
20174         validate_ecdq_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' ]);
20175END_ENTITY;
20176
20177-- IN AP242
20178ENTITY wrongly_oriented_void
20179   SUBTYPE OF (erroneous_manifold_solid_brep);
20180      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
20181   WHERE
20182      WR1:
20183         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
20184      WR2:
20185         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' ]);
20186      WR3:
20187         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' ]);
20188      WR4:
20189         validate_accuracy_types(SELF, []);
20190END_ENTITY;
20191
20192-- IN AP242
20193ENTITY wrongly_placed_loop
20194   SUBTYPE OF (erroneous_topology_and_geometry_relationship);
20195      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
20196   WHERE
20197      WR1:
20198         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
20199      WR2:
20200         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE' ]);
20201      WR3:
20202         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.FACE_BOUND' ]);
20203      WR4:
20204         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' ]);
20205END_ENTITY;
20206
20207-- IN AP242
20208ENTITY wrongly_placed_void
20209   SUBTYPE OF (erroneous_manifold_solid_brep);
20210      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
20211   WHERE
20212      WR1:
20213         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_VALUE');
20214      WR2:
20215         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.BREP_WITH_VOIDS' ]);
20216      WR3:
20217         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' ]);
20218      WR4:
20219         validate_accuracy_types(SELF, []);
20220END_ENTITY;
20221
20222-- IN AP214/AP242
20223ENTITY xor_expression
20224   SUBTYPE OF (binary_boolean_expression);
20225      SELF\binary_generic_expression.operands : LIST [2:2] OF boolean_expression;
20226END_ENTITY;
20227
20228-- IN AP203e2/AP242
20229ENTITY year_month
20230   SUBTYPE OF (date);
20231      month_component : month_in_year_number;
20232END_ENTITY;
20233
20234-- IN AP242
20235ENTITY zero_surface_normal
20236   SUBTYPE OF (geometry_with_local_irregularity);
20237      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
20238   WHERE
20239      WR1:
20240         ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
20241      WR2:
20242         validate_measured_data_type(SELF, 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE');
20243      WR3:
20244         validate_inspected_elements_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.SURFACE' ]);
20245      WR4:
20246         validate_locations_of_extreme_value_type(SELF, [ 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' ]);
20247      WR5:
20248         validate_accuracy_types(SELF, [ 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' ]);
20249END_ENTITY;
20250
20251-- IN AP203e2/AP242
20252ENTITY zone_structural_makeup
20253   SUPERTYPE OF (ONEOF(smeared_material_definition AND thickness_laminate_table, smeared_material_definition AND percentage_laminate_table, thickness_laminate_table, percentage_laminate_table, smeared_material_definition))
20254   SUBTYPE OF (laminate_table);
20255END_ENTITY;
20256
20257-- DIFF IN AP203e2
20258-- IN AP203e2/AP242
20259RULE alternative_solution_requires_solution_definition FOR (product_definition_formation );
20260   LOCAL
20261      solution_versions : SET OF product_definition_formation := [];
20262   END_LOCAL;
20263      solution_versions := QUERY (pdf <* product_definition_formation| SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'alternative solution'))) = 1);
20264   WHERE
20265      WR1:
20266         SIZEOF(QUERY (pdf <* solution_versions| (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'alternative definition'))) <> 1))) = 0;
20267END_RULE;
20268
20269RULE application_protocol_definition_required FOR (application_context );
20270   WHERE
20271      WR1:
20272         SIZEOF(QUERY (ac <* application_context| (SIZEOF(QUERY (apd <* USEDIN(ac, 'STEP_MERGED_CAD_SCHEMA.APPLICATION_PROTOCOL_DEFINITION.APPLICATION')| (apd.application_interpreted_model_schema_name = 'ap242_managed_model_based_3d_engineering'))) > 0))) > 0;
20273END_RULE;
20274
20275-- IN AP214
20276RULE approval_person_organization_requires_date_time FOR (approval_person_organization );
20277   WHERE
20278      wr1:
20279         SIZEOF(QUERY (apo <* approval_person_organization| (SIZEOF(QUERY (u <* USEDIN(apo, 'STEP_MERGED_CAD_SCHEMA.APPLIED_DATE_ASSIGNMENT.ITEMS')| (u.role.name = 'sign off'))) + SIZEOF(QUERY (u <* USEDIN(apo, 'STEP_MERGED_CAD_SCHEMA.APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS')| (u.role.name = 'sign off'))) <> 1))) = 0;
20280END_RULE;
20281
20282-- IN AP214
20283RULE approval_requires_approval_assignment FOR (approval );
20284   WHERE
20285      wr1:
20286         SIZEOF(QUERY (a <* approval| (SIZEOF(USEDIN(a, 'STEP_MERGED_CAD_SCHEMA.APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL')) = 0))) = 0;
20287END_RULE;
20288
20289-- IN AP203e2/AP242
20290RULE breakdown_element_requires_product_definition FOR (product_definition_formation );
20291   WHERE
20292      WR1:
20293         SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'functionality'))) = 1) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'functional definition'))) < 1))) = 0;
20294      WR2:
20295         SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'conceptual design'))) = 1) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'conceptual definition'))) < 1))) = 0;
20296END_RULE;
20297
20298-- IN AP242
20299RULE chamfer_offset_requires_faces FOR (chamfer_offset, property_definition_representation );
20300   WHERE
20301      WR1:
20302         SIZEOF(QUERY (co <* chamfer_offset| NOT (1 = SIZEOF(QUERY (pdr <* property_definition_representation| ((pdr\property_definition_representation.definition\property_definition.definition = co) AND ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) AND ((pdr\property_definition_representation.definition\property_definition.definition.description = 'first offset') AND (pdr.used_representation.name = 'first face shape') OR (pdr\property_definition_representation.definition\property_definition.definition.description = 'second offset') AND (pdr.used_representation.name = 'second face shape'))))))) = 0;
20303END_RULE;
20304
20305-- IN AP242
20306RULE chamfer_requires_faces FOR (chamfer, property_definition_representation );
20307   WHERE
20308      WR1:
20309         SIZEOF(QUERY (cf <* chamfer| NOT (1 = SIZEOF(QUERY (pdr <* property_definition_representation| ((pdr\property_definition_representation.definition\property_definition.definition = cf) AND ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) AND (pdr.used_representation.name = 'chamfer face')))))) = 0;
20310END_RULE;
20311
20312RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context );
20313   WHERE
20314      WR1:
20315         SIZEOF(QUERY (x <* cartesian_point| (SIZEOF(QUERY (y <* geometric_representation_context| item_in_context(x, y) AND (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0))) = 0;
20316      WR2:
20317         SIZEOF(QUERY (x <* direction| (SIZEOF(QUERY (y <* geometric_representation_context| item_in_context(x, y) AND (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))) > 0))) = 0;
20318END_RULE;
20319
20320-- IN AP214
20321RULE complex_product_requires_product_definition FOR (product_definition, product_definition_formation, product_related_product_category );
20322   WHERE
20323      wr1:
20324         SIZEOF(QUERY (pdf <* product_definition_formation| ((SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'functionality'))) = 1) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'functional definition'))) <> 1) OR (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'conceptual design'))) = 1) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'conceptual definition'))) <> 1)) OR (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'alternative solution'))) = 1) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'alternative definition'))) <> 1))) = 0;
20325END_RULE;
20326
20327-- IN AP203e2/AP242
20328RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category );
20329   LOCAL
20330      i : INTEGER := 0;
20331      j : INTEGER := 0;
20332      k : INTEGER := 0;
20333      dkuhr : LOGICAL := TRUE;
20334      nnauo : INTEGER := 0;
20335      nprpc : INTEGER := 0;
20336      rp : product;
20337   END_LOCAL;
20338      REPEAT i := LOINDEX(composite_assembly_sequence_definition) TO HIINDEX(composite_assembly_sequence_definition);
20339         nnauo := 0;
20340         REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
20341            IF composite_assembly_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition THEN
20342               rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
20343               nprpc := 0;
20344               REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
20345                  IF (rp IN product_related_product_category[k].products) AND (product_related_product_category[k].name IN [ 'ply', 'ply laminate', 'filament laminate', 'processed core', 'composite assembly' ]) THEN
20346                     nprpc := nprpc + 1;
20347                  END_IF;
20348               END_REPEAT;
20349               IF nprpc = 1 THEN
20350                  nnauo := nnauo + 1;
20351               ELSE
20352                  dkuhr := FALSE;
20353                  ESCAPE;
20354               END_IF;
20355            END_IF;
20356         END_REPEAT;
20357         IF dkuhr = FALSE THEN
20358            ESCAPE;
20359         END_IF;
20360         IF nnauo = 0 THEN
20361            dkuhr := FALSE;
20362            ESCAPE;
20363         END_IF;
20364      END_REPEAT;
20365   WHERE
20366      WR1:
20367         dkuhr;
20368END_RULE;
20369
20370-- IN AP214
20371RULE compound_features_of_equal_type FOR (compound_feature, shape_aspect_relationship );
20372   WHERE
20373      wr1:
20374         SIZEOF(QUERY (sar <* shape_aspect_relationship| ((sar.name = 'compound feature ordering') AND (SIZEOF(QUERY (fcr <* USEDIN(sar.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.relating_shape_aspect.name IN [ 'compound feature in solid', 'compound feature in panel' ]))) = 0)) AND (SIZEOF(QUERY (fcr <* USEDIN(sar.related_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')| (('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.relating_shape_aspect.name IN [ 'compound feature in solid', 'compound feature in panel' ]))) = 0))) = 0;
20375END_RULE;
20376
20377RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation );
20378   WHERE
20379      WR1:
20380         SIZEOF(QUERY (guac <* global_uncertainty_assigned_context| (SIZEOF(QUERY (u1 <* guac.uncertainty| (SIZEOF(QUERY (u2 <* guac.uncertainty| (u2.name = u1.name))) > 1))) > 0))) = 0;
20381      WR2:
20382         SIZEOF(QUERY (uar <* uncertainty_assigned_representation| (SIZEOF(QUERY (u1 <* uar.uncertainty| (SIZEOF(QUERY (u2 <* uar.uncertainty| (u2.name = u1.name))) > 1))) > 0))) = 0;
20383      WR3:
20384         SIZEOF(QUERY (qri <* qualified_representation_item| (SIZEOF(QUERY (u1 <* qri.qualifiers| ('STEP_MERGED_CAD_SCHEMA.' + 'UNCERTAINTY_QUALIFIER' IN TYPEOF(u1)) AND (SIZEOF(QUERY (u2 <* qri.qualifiers| ('STEP_MERGED_CAD_SCHEMA.' + 'UNCERTAINTY_QUALIFIER' IN TYPEOF(u2)) AND (u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name))) > 1))) > 0))) = 0;
20385END_RULE;
20386
20387-- IN AP203e2/AP242
20388RULE constraint_definition_requires_constraint_category FOR (product_definition );
20389   LOCAL
20390      constraint_definitions : SET OF product_definition := [];
20391   END_LOCAL;
20392      constraint_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'design constraint definition');
20393   WHERE
20394      WR1:
20395         SIZEOF(QUERY (pd <* constraint_definitions| (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'requirement'))) = 0))) = 0;
20396END_RULE;
20397
20398-- IN AP214
20399RULE coordinated_assembly_and_shape FOR (next_assembly_usage_occurrence );
20400   WHERE
20401      wr1:
20402         SIZEOF(QUERY (nauo <* next_assembly_usage_occurrence| NOT assembly_shape_is_defined(nauo))) = 0;
20403END_RULE;
20404
20405-- IN AP214
20406RULE curve_font_usage FOR (curve_style_font, externally_defined_curve_font, pre_defined_curve_font );
20407   WHERE
20408      wr1:
20409         SIZEOF(QUERY (csf <* curve_style_font| (SIZEOF(USEDIN(csf, 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE.CURVE_FONT')) = 0))) = 0;
20410      wr2:
20411         SIZEOF(QUERY (pdcf <* pre_defined_curve_font| (SIZEOF(USEDIN(pdcf, 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE.CURVE_FONT')) = 0))) = 0;
20412      wr3:
20413         SIZEOF(QUERY (edcf <* externally_defined_curve_font| NOT (SIZEOF(USEDIN(edcf, 'STEP_MERGED_CAD_SCHEMA.CURVE_STYLE.CURVE_FONT')) >= 1))) = 0;
20414END_RULE;
20415
20416-- IN AP214
20417RULE dependent_instantiable_action_directive FOR (action_directive );
20418   WHERE
20419      wr1:
20420         SIZEOF(QUERY (a <* action_directive| NOT (SIZEOF(USEDIN(a, '')) > 0))) = 0;
20421END_RULE;
20422
20423-- IN AP214
20424RULE dependent_instantiable_action_resource_type FOR (action_resource_type );
20425   WHERE
20426      wr1:
20427         SIZEOF(QUERY (a <* action_resource_type| NOT (SIZEOF(USEDIN(a, '')) > 0))) = 0;
20428END_RULE;
20429
20430-- IN AP214
20431RULE dependent_instantiable_approval_role FOR (approval_role );
20432   WHERE
20433      wr1:
20434         SIZEOF(QUERY (a <* approval_role| NOT (SIZEOF(USEDIN(a, '')) > 0))) = 0;
20435END_RULE;
20436
20437-- IN AP214
20438RULE dependent_instantiable_attribute_value_role FOR (attribute_value_role );
20439   WHERE
20440      wr1:
20441         SIZEOF(QUERY (a <* attribute_value_role| NOT (SIZEOF(USEDIN(a, '')) > 0))) = 0;
20442END_RULE;
20443
20444-- IN AP214
20445RULE dependent_instantiable_classification_role FOR (classification_role );
20446   WHERE
20447      wr1:
20448         SIZEOF(QUERY (c <* classification_role| NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
20449END_RULE;
20450
20451-- IN AP214
20452RULE dependent_instantiable_colour_rgb FOR (colour_rgb );
20453   WHERE
20454      wr1:
20455         SIZEOF(QUERY (c <* colour_rgb| NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
20456END_RULE;
20457
20458-- IN AP214
20459RULE dependent_instantiable_contract_type FOR (contract_type );
20460   WHERE
20461      wr1:
20462         SIZEOF(QUERY (c <* contract_type| NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
20463END_RULE;
20464
20465-- IN AP214
20466RULE dependent_instantiable_curve_style FOR (curve_style );
20467   WHERE
20468      wr1:
20469         SIZEOF(QUERY (c <* curve_style| NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
20470END_RULE;
20471
20472-- IN AP214
20473RULE dependent_instantiable_date FOR (date );
20474   WHERE
20475      wr1:
20476         SIZEOF(QUERY (d <* date| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20477END_RULE;
20478
20479-- IN AP214
20480RULE dependent_instantiable_date_and_time FOR (date_and_time );
20481   WHERE
20482      wr1:
20483         SIZEOF(QUERY (d <* date_and_time| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20484END_RULE;
20485
20486-- IN AP214
20487RULE dependent_instantiable_date_role FOR (date_role );
20488   WHERE
20489      wr1:
20490         SIZEOF(QUERY (d <* date_role| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20491END_RULE;
20492
20493-- IN AP214
20494RULE dependent_instantiable_date_time_role FOR (date_time_role );
20495   WHERE
20496      wr1:
20497         SIZEOF(QUERY (d <* date_time_role| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20498END_RULE;
20499
20500-- IN AP214
20501RULE dependent_instantiable_derived_unit FOR (derived_unit );
20502   WHERE
20503      wr1:
20504         SIZEOF(QUERY (d <* derived_unit| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20505END_RULE;
20506
20507-- IN AP214
20508RULE dependent_instantiable_dimensional_size FOR (dimensional_size );
20509   WHERE
20510      wr1:
20511         SIZEOF(QUERY (d <* dimensional_size| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20512END_RULE;
20513
20514-- IN AP214
20515RULE dependent_instantiable_document_usage_role FOR (document_usage_role );
20516   WHERE
20517      wr1:
20518         SIZEOF(QUERY (d <* document_usage_role| NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
20519END_RULE;
20520
20521-- IN AP214
20522RULE dependent_instantiable_effectivity_context_role FOR (effectivity_context_role );
20523   WHERE
20524      wr1:
20525         SIZEOF(QUERY (e <* effectivity_context_role| NOT (SIZEOF(USEDIN(e, '')) > 0))) = 0;
20526END_RULE;
20527
20528-- IN AP214
20529RULE dependent_instantiable_event_occurrence_role FOR (event_occurrence_role );
20530   WHERE
20531      wr1:
20532         SIZEOF(QUERY (e <* event_occurrence_role| NOT (SIZEOF(USEDIN(e, '')) > 0))) = 0;
20533END_RULE;
20534
20535-- IN AP214
20536RULE dependent_instantiable_externally_defined_symbol FOR (externally_defined_symbol );
20537   WHERE
20538      wr1:
20539         SIZEOF(QUERY (e <* externally_defined_symbol| NOT (SIZEOF(USEDIN(e, '')) > 0))) = 0;
20540END_RULE;
20541
20542-- IN AP214
20543RULE dependent_instantiable_fill_area_style FOR (fill_area_style );
20544   WHERE
20545      wr1:
20546         SIZEOF(QUERY (f <* fill_area_style| NOT (SIZEOF(USEDIN(f, '')) > 0))) = 0;
20547END_RULE;
20548
20549-- IN AP214
20550RULE dependent_instantiable_fill_area_style_colour FOR (fill_area_style_colour );
20551   WHERE
20552      wr1:
20553         SIZEOF(QUERY (f <* fill_area_style_colour| NOT (SIZEOF(USEDIN(f, '')) > 0))) = 0;
20554END_RULE;
20555
20556-- IN AP214
20557RULE dependent_instantiable_identification_role FOR (identification_role );
20558   WHERE
20559      wr1:
20560         SIZEOF(QUERY (i <* identification_role| NOT (SIZEOF(USEDIN(i, '')) > 0))) = 0;
20561END_RULE;
20562
20563-- IN AP214
20564RULE dependent_instantiable_measure_with_unit FOR (measure_with_unit );
20565   WHERE
20566      wr1:
20567         SIZEOF(QUERY (m <* measure_with_unit| NOT (SIZEOF(USEDIN(m, '')) > 0))) = 0;
20568END_RULE;
20569
20570-- IN AP214
20571RULE dependent_instantiable_named_unit FOR (named_unit );
20572   WHERE
20573      wr1:
20574         SIZEOF(QUERY (n <* named_unit| NOT (SIZEOF(USEDIN(n, '')) > 0))) = 0;
20575END_RULE;
20576
20577-- IN AP214
20578RULE dependent_instantiable_object_role FOR (object_role );
20579   WHERE
20580      wr1:
20581         SIZEOF(QUERY (o <* object_role| NOT (SIZEOF(USEDIN(o, '')) > 0))) = 0;
20582END_RULE;
20583
20584-- IN AP214
20585RULE dependent_instantiable_organization_role FOR (organization_role );
20586   WHERE
20587      wr1:
20588         SIZEOF(QUERY (o <* organization_role| NOT (SIZEOF(USEDIN(o, '')) > 0))) = 0;
20589END_RULE;
20590
20591-- IN AP214
20592RULE dependent_instantiable_organizational_project_role FOR (organizational_project_role );
20593   WHERE
20594      wr1:
20595         SIZEOF(QUERY (o <* organizational_project_role| NOT (SIZEOF(USEDIN(o, '')) > 0))) = 0;
20596END_RULE;
20597
20598-- IN AP214
20599RULE dependent_instantiable_person_and_organization_role FOR (person_and_organization_role );
20600   WHERE
20601      wr1:
20602         SIZEOF(QUERY (p <* person_and_organization_role| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20603END_RULE;
20604
20605-- IN AP214
20606RULE dependent_instantiable_pre_defined_colour FOR (pre_defined_colour );
20607   WHERE
20608      wr1:
20609         SIZEOF(QUERY (p <* pre_defined_colour| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20610END_RULE;
20611
20612-- IN AP214
20613RULE dependent_instantiable_pre_defined_symbol FOR (pre_defined_symbol );
20614   WHERE
20615      wr1:
20616         SIZEOF(QUERY (p <* pre_defined_symbol| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20617END_RULE;
20618
20619-- IN AP214
20620RULE dependent_instantiable_precision_qualifier FOR (precision_qualifier );
20621   WHERE
20622      wr1:
20623         SIZEOF(QUERY (p <* precision_qualifier| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20624END_RULE;
20625
20626-- IN AP214
20627RULE dependent_instantiable_presentation_style_by_context FOR (presentation_style_by_context );
20628   WHERE
20629      wr1:
20630         SIZEOF(QUERY (p <* presentation_style_by_context| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20631END_RULE;
20632
20633-- IN AP214
20634RULE dependent_instantiable_product_definition_context_role FOR (product_definition_context_role );
20635   WHERE
20636      wr1:
20637         SIZEOF(QUERY (p <* product_definition_context_role| NOT (SIZEOF(USEDIN(p, '')) > 0))) = 0;
20638END_RULE;
20639
20640-- IN AP214
20641RULE dependent_instantiable_resource_requirement_type FOR (resource_requirement_type );
20642   WHERE
20643      wr1:
20644         SIZEOF(QUERY (r <* resource_requirement_type| NOT (SIZEOF(USEDIN(r, '')) > 0))) = 0;
20645END_RULE;
20646
20647-- IN AP214
20648RULE dependent_instantiable_retention FOR (retention );
20649   WHERE
20650      wr1:
20651         SIZEOF(QUERY (r <* retention| NOT (SIZEOF(USEDIN(r, '')) > 0))) = 0;
20652END_RULE;
20653
20654-- IN AP214
20655RULE dependent_instantiable_standard_uncertainty FOR (standard_uncertainty );
20656   WHERE
20657      wr1:
20658         SIZEOF(QUERY (s <* standard_uncertainty| NOT (SIZEOF(USEDIN(s, '')) > 0))) = 0;
20659END_RULE;
20660
20661-- IN AP214
20662RULE dependent_instantiable_symbol_colour FOR (symbol_colour );
20663   WHERE
20664      wr1:
20665         SIZEOF(QUERY (s <* symbol_colour| NOT (SIZEOF(USEDIN(s, '')) > 0))) = 0;
20666END_RULE;
20667
20668-- IN AP214
20669RULE dependent_instantiable_text_style FOR (text_style );
20670   WHERE
20671      wr1:
20672         SIZEOF(QUERY (t <* text_style| NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
20673END_RULE;
20674
20675-- IN AP214
20676RULE dependent_instantiable_text_style_for_defined_font FOR (text_style_for_defined_font );
20677   WHERE
20678      wr1:
20679         SIZEOF(QUERY (t <* text_style_for_defined_font| NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
20680END_RULE;
20681
20682-- IN AP214
20683RULE dependent_instantiable_time_interval_role FOR (time_interval_role );
20684   WHERE
20685      wr1:
20686         SIZEOF(QUERY (t <* time_interval_role| NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
20687END_RULE;
20688
20689-- IN AP214
20690RULE dependent_instantiable_tolerance_value FOR (tolerance_value );
20691   WHERE
20692      wr1:
20693         SIZEOF(QUERY (t <* tolerance_value| NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
20694END_RULE;
20695
20696-- IN AP214
20697RULE dependent_instantiable_type_qualifier FOR (type_qualifier );
20698   WHERE
20699      wr1:
20700         SIZEOF(QUERY (t <* type_qualifier| NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
20701END_RULE;
20702
20703-- IN AP214
20704RULE dependent_instantiable_uncertainty_qualifier FOR (uncertainty_qualifier );
20705   WHERE
20706      wr1:
20707         SIZEOF(QUERY (u <* uncertainty_qualifier| NOT (SIZEOF(USEDIN(u, '')) > 0))) = 0;
20708END_RULE;
20709
20710-- DIFF IN AP214
20711RULE design_constraint_requires_product_definition FOR (product_definition_formation );
20712   WHERE
20713      WR1:
20714         SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'requirement'))) > 0) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'design constraint definition'))) < 1))) = 0;
20715END_RULE;
20716
20717-- IN AP214
20718RULE dimensionality_is_two_or_three FOR (geometric_representation_context );
20719   WHERE
20720      wr1:
20721         SIZEOF(QUERY (g <* geometric_representation_context| NOT ((g.coordinate_space_dimension = 2) OR (g.coordinate_space_dimension = 3)))) = 0;
20722END_RULE;
20723
20724-- IN AP242
20725RULE dimensioning_data_requires_document FOR (applied_document_reference, product_definition_context_association, role_association );
20726   LOCAL
20727      adr : SET OF applied_document_reference := QUERY (adr <* applied_document_reference| (adr\document_reference.assigned_document\document.kind\document_type.product_data_type = 'Standards Document') AND (((adr\document_reference.assigned_document\document.id = 'ASME Y14.41-2003') OR (adr\document_reference.assigned_document\document.id = 'ASME Y14.5M-1994')) OR (adr\document_reference.assigned_document\document.id = 'ISO 1101: 2004')));
20728      pdca : SET OF product_definition_context_association := QUERY (pdca <* product_definition_context_association| (pdca\product_definition_context_association.role\product_definition_context_role.name = 'additional context') AND (pdca\product_definition_context_association.frame_of_reference\application_context_element.name = 'Geometric Dimensioning and Tolerancing Product Specification'));
20729      ra : SET OF role_association := QUERY (ra <* role_association| ra\role_association.role\object_role.name = 'dimensioning standard');
20730      ra1 : SET OF role_association := [];
20731      pdpdca : SET OF product_definition := [];
20732      pdadr : SET OF product_definition := [];
20733      pass : BOOLEAN := TRUE;
20734   END_LOCAL;
20735      REPEAT i := 1 TO HIINDEX(pdca);
20736         pdpdca := pdpdca + pdca[i]\product_definition_context_association.definition;
20737      END_REPEAT;
20738      REPEAT i := 1 TO HIINDEX(adr);
20739         ra1 := bag_to_set(USEDIN(adr[i], 'STEP_MERGED_CAD_SCHEMA.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
20740         IF ra1 * ra <> ra1 THEN
20741            pass := FALSE;
20742         END_IF;
20743         REPEAT j := 1 TO HIINDEX(adr[i]\applied_document_reference.items);
20744            IF 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(adr[i]\applied_document_reference.items[j]) THEN
20745               pdadr := pdadr + adr[i]\applied_document_reference.items[j];
20746            END_IF;
20747         END_REPEAT;
20748      END_REPEAT;
20749   WHERE
20750      WR1:
20751         pass;
20752      WR2:
20753         pdpdca = pdadr;
20754END_RULE;
20755
20756-- IN AP203e2/AP242
20757RULE draughting_model_items_constraint FOR (draughting_model );
20758   WHERE
20759      WR1:
20760         SIZEOF(QUERY (dm <* draughting_model| NOT (SIZEOF(QUERY (it1 <* dm\representation.items| ('STEP_MERGED_CAD_SCHEMA.ANNOTATION_OCCURRENCE' IN TYPEOF(it1)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1)))) = 0))) = 0;
20761      WR2:
20762         SIZEOF(QUERY (dm <* draughting_model| NOT (SIZEOF(QUERY (it1 <* dm\representation.items| ('STEP_MERGED_CAD_SCHEMA.DRAUGHTING_CALLOUT' IN TYPEOF(it1)) AND NOT ('STEP_MERGED_CAD_SCHEMA.DRAUGHTING_ELEMENTS' IN TYPEOF(it1)))) = 0))) = 0;
20763END_RULE;
20764
20765-- IN AP214
20766RULE draughting_subfigure_representation_layers FOR (draughting_subfigure_representation );
20767   WHERE
20768      wr1:
20769         SIZEOF(QUERY (dsr <* draughting_subfigure_representation| NOT (SIZEOF(QUERY (item <* dsr\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_OCCURRENCE' IN TYPEOF(item)) AND (SIZEOF(USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) = 0))) = 0))) = 0;
20770END_RULE;
20771
20772-- IN AP214
20773RULE drawing_sheet_annotation_layers FOR (drawing_sheet_revision );
20774   WHERE
20775      wr1:
20776         SIZEOF(QUERY (dsr <* drawing_sheet_revision| NOT (SIZEOF(QUERY (ao <* QUERY (it <* dsr\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_OCCURRENCE' IN TYPEOF(it)))| NOT (SIZEOF(USEDIN(ao, 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1))) = 0))) = 0;
20777END_RULE;
20778
20779-- IN AP214
20780RULE drawing_sheet_layout_usage FOR (mapped_item );
20781   WHERE
20782      wr1:
20783         SIZEOF(QUERY (dsl <* QUERY (mi <* mapped_item| ('STEP_MERGED_CAD_SCHEMA.' + 'DRAWING_SHEET_LAYOUT' IN TYPEOF(mi.mapping_source.mapped_representation)))| NOT (SIZEOF(USEDIN(dsl, '')) = SIZEOF(QUERY (dsr <* USEDIN(dsl, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'DRAWING_SHEET_REVISION' IN TYPEOF(dsr))))))) = 0;
20784END_RULE;
20785
20786-- IN AP214
20787RULE drawing_view_annotation_layers FOR (presentation_view );
20788   WHERE
20789      wr1:
20790         SIZEOF(QUERY (pv <* presentation_view| NOT (SIZEOF(QUERY (ao <* QUERY (it <* pv\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_OCCURRENCE' IN TYPEOF(it)))| NOT (SIZEOF(USEDIN(ao, 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1))) = 0))) = 0;
20791END_RULE;
20792
20793-- IN AP242
20794RULE edge_round_requires_faces FOR (edge_round, property_definition_representation );
20795   WHERE
20796      WR1:
20797         0 = SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <* property_definition_representation| ((pdr\property_definition_representation.definition\property_definition.definition = er) AND ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) AND (pdr.used_representation.name = 'edge round face'))))));
20798      WR2:
20799         SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <* property_definition_representation| ((pdr\property_definition_representation.definition\property_definition.definition = er) AND ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) AND (pdr.used_representation.name = 'first face shape')))))) = 0;
20800      WR3:
20801         SIZEOF(QUERY (er <* edge_round| NOT (1 = SIZEOF(QUERY (pdr <* property_definition_representation| ((pdr\property_definition_representation.definition\property_definition.definition = er) AND ('STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) AND (pdr.used_representation.name = 'second face shape')))))) = 0;
20802END_RULE;
20803
20804-- IN AP214
20805RULE event_occurrence_requires_event_occurrence_assignment FOR (event_occurrence, event_occurrence_assignment, relative_event_occurrence );
20806   WHERE
20807      wr1:
20808         SIZEOF(QUERY (eo <* event_occurrence| (((SIZEOF(USEDIN(eo, 'STEP_MERGED_CAD_SCHEMA.RELATIVE_EVENT_OCCURRENCE.BASE_EVENT')) = 0) AND (SIZEOF(USEDIN(eo, 'STEP_MERGED_CAD_SCHEMA.EVENT_OCCURRENCE_ASSIGNMENT.ASSIGNED_EVENT_OCCURRENCE')) = 0)) AND (SIZEOF(USEDIN(eo, 'STEP_MERGED_CAD_SCHEMA.DATED_EFFECTIVITY.EFFECTIVITY_START_DATE')) = 0)) AND (SIZEOF(USEDIN(eo, 'STEP_MERGED_CAD_SCHEMA.DATED_EFFECTIVITY.EFFECTIVITY_END_DATE')) = 0))) = 0;
20809END_RULE;
20810
20811-- IN AP214
20812RULE executed_action_requires_action_status FOR (executed_action );
20813   WHERE
20814      wr1:
20815         SIZEOF(QUERY (ea <* executed_action| (SIZEOF(USEDIN(ea, 'STEP_MERGED_CAD_SCHEMA.ACTION_STATUS.ASSIGNED_ACTION')) > 1))) = 0;
20816END_RULE;
20817
20818-- IN AP203e2/AP242
20819RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment );
20820   WHERE
20821      WR1:
20822         SIZEOF(QUERY (aia <* applied_external_identification_assignment| NOT external_version_assignment_is_valid(aia))) = 0;
20823END_RULE;
20824
20825-- IN AP214
20826RULE externally_defined_class_with_known_source_requirement FOR (externally_defined_class );
20827   WHERE
20828      wr1:
20829         SIZEOF(QUERY (edc <* externally_defined_class| ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY (aoa <* USEDIN(edc, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (aoa.role.name = 'class supplier'))) = 0))) = 0;
20830END_RULE;
20831
20832-- IN AP214
20833RULE fill_area_style_tile_symbol_constraint FOR (fill_area_style_tile_symbol_with_style );
20834   WHERE
20835      wr1:
20836         SIZEOF(QUERY (fast <* fill_area_style_tile_symbol_with_style| ('STEP_MERGED_CAD_SCHEMA.' + 'DEFINED_SYMBOL' IN TYPEOF(fast.symbol\styled_item.item)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_SYMBOL' IN TYPEOF(fast.symbol\styled_item.item\defined_symbol.definition)))) = 0;
20837END_RULE;
20838
20839-- IN AP214
20840RULE full_model_change_completeness_for_action_property FOR (action_property );
20841   WHERE
20842      wr1:
20843         SIZEOF(QUERY (ap <* action_property| (ap.name = 'full model change') AND (SIZEOF(QUERY (apr <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr.name = 'original representation'))) = 0))) = 0;
20844      wr2:
20845         SIZEOF(QUERY (ap <* action_property| (ap.name = 'full model change') AND (SIZEOF(QUERY (apr <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr.name = 'replacement representation'))) = 0))) = 0;
20846      wr3:
20847         SIZEOF(QUERY (ap <* action_property| (SIZEOF(QUERY (apr1 <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr1.name = 'added elements') AND (SIZEOF(QUERY (apr2 <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr2.name = 'replacement representation') AND (SIZEOF(QUERY (i1 <* apr1.representation.items| (SIZEOF(QUERY (i2 <* apr2.representation.items| (i1 :=: i2))) > 0))) <> SIZEOF(apr1.representation.items)))) > 0))) > 0))) = 0;
20848      wr4:
20849         SIZEOF(QUERY (ap <* action_property| (SIZEOF(QUERY (apr1 <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr1.name = 'deleted elements') AND (SIZEOF(QUERY (apr2 <* USEDIN(ap, 'STEP_MERGED_CAD_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY')| (apr2.name = 'original representation') AND (SIZEOF(QUERY (i1 <* apr1.representation.items| (SIZEOF(QUERY (i2 <* apr2.representation.items| (i1 :=: i2))) > 0))) <> SIZEOF(apr1.representation.items)))) > 0))) > 0))) = 0;
20850END_RULE;
20851
20852-- IN AP214
20853RULE full_model_change_completeness_for_property_definition FOR (property_definition );
20854   WHERE
20855      wr1:
20856         SIZEOF(QUERY (pd <* property_definition| (pd.name = 'full model change') AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr.name = 'original representation'))) = 0))) = 0;
20857      wr2:
20858         SIZEOF(QUERY (pd <* property_definition| (pd.name = 'full model change') AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr.name = 'replacement representation'))) = 0))) = 0;
20859      wr3:
20860         SIZEOF(QUERY (pd <* property_definition| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr.name = 'added elements') AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (SIZEOF(QUERY (pdr1 <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr1.name = 'replacement representation') AND NOT (i IN pdr1.used_representation.items))) > 0))) > 0))) > 0))) = 0;
20861      wr4:
20862         SIZEOF(QUERY (pd <* property_definition| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr.name = 'deleted elements') AND (SIZEOF(QUERY (i <* pdr.used_representation.items| (SIZEOF(QUERY (pdr1 <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (pdr1.name = 'original representation') AND NOT (i IN pdr1.used_representation.items))) > 0))) > 0))) > 0))) = 0;
20863END_RULE;
20864
20865-- IN AP214
20866RULE global_length_and_angle_units_2d_or_3d FOR (global_unit_assigned_context );
20867   WHERE
20868      wr1:
20869         SIZEOF(QUERY (guac <* global_unit_assigned_context| (SIZEOF(guac.units) < 2))) = 0;
20870      wr2:
20871         SIZEOF(QUERY (guac <* global_unit_assigned_context| (SIZEOF(QUERY (x <* guac.units| ('STEP_MERGED_CAD_SCHEMA.' + 'LENGTH_UNIT' IN TYPEOF(x)))) <> 1) OR (SIZEOF(QUERY (x <* guac.units| ('STEP_MERGED_CAD_SCHEMA.' + 'PLANE_ANGLE_UNIT' IN TYPEOF(x)))) <> 1))) = 0;
20872END_RULE;
20873
20874-- IN AP242
20875RULE machining_feature_definition_constraints FOR (feature_definition );
20876   LOCAL
20877      mfds : SET OF feature_definition := [];
20878   END_LOCAL;
20879      mfds := QUERY (temp <* feature_definition| 'STEP_MERGED_CAD_SCHEMA.MACHINING_FEATURE_DEFINITION' IN TYPEOF(temp));
20880   WHERE
20881      WR1:
20882         SIZEOF(QUERY (mfd <* mfds| NOT (SIZEOF(QUERY (pdr <* get_property_definition_representations(mfd)| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))) <= 1))) = 0;
20883      WR2:
20884         SIZEOF(QUERY (mfd <* mfds| NOT (SIZEOF(QUERY (pd <* USEDIN(mfd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0))) = 0;
20885      WR3:
20886         SIZEOF(QUERY (mfd <* mfds| NOT (NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.ROUND_HOLE', 'STEP_MERGED_CAD_SCHEMA.BOSS', 'STEP_MERGED_CAD_SCHEMA.OUTSIDE_PROFILE', 'STEP_MERGED_CAD_SCHEMA.REMOVAL_VOLUME', 'STEP_MERGED_CAD_SCHEMA.FLAT_FACE', 'STEP_MERGED_CAD_SCHEMA.POCKET', 'STEP_MERGED_CAD_SCHEMA.PROTRUSION', 'STEP_MERGED_CAD_SCHEMA.RIB_TOP', 'STEP_MERGED_CAD_SCHEMA.ROUNDED_END', 'STEP_MERGED_CAD_SCHEMA.SLOT', 'STEP_MERGED_CAD_SCHEMA.STEP' ] * TYPEOF(mfds)) = 1) OR (SIZEOF(QUERY (pdr <* get_property_definition_representations(mfd)| ('STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'maximum feature limit'))) >= 0)))) = 0;
20887END_RULE;
20888
20889-- IN AP242
20890RULE machining_feature_life_cycle FOR (instanced_feature );
20891   WHERE
20892      WR1:
20893         SIZEOF(QUERY (mf <* instanced_feature| NOT (mf.of_shape.definition.frame_of_reference.life_cycle_stage = 'manufacturing planning'))) = 0;
20894END_RULE;
20895
20896-- IN AP203e2/AP242
20897RULE material_for_coating_layer FOR (shape_aspect );
20898   LOCAL
20899      coating_layers : SET OF shape_aspect := [];
20900   END_LOCAL;
20901      coating_layers := QUERY (r <* shape_aspect| r.name = 'coating layer');
20902   WHERE
20903      WR1:
20904         SIZEOF(QUERY (r <* coating_layers| (SIZEOF(USEDIN(r, 'STEP_MERGED_CAD_SCHEMA.MATERIAL_DESIGNATION.DEFINITIONS')) <> 1))) = 0;
20905END_RULE;
20906
20907-- IN AP214
20908RULE person_requires_person_and_organization FOR (person );
20909   WHERE
20910      wr1:
20911         SIZEOF(QUERY (p <* person| (SIZEOF(USEDIN(p, 'STEP_MERGED_CAD_SCHEMA.PERSON_AND_ORGANIZATION.THE_PERSON')) = 0))) = 0;
20912END_RULE;
20913
20914-- IN AP214
20915RULE physical_instance_requires_product_definition FOR (product_definition, product_definition_formation, product_related_product_category );
20916   WHERE
20917      wr1:
20918         SIZEOF(QUERY (pdf <* product_definition_formation| (SIZEOF(QUERY (prpc <* USEDIN(pdf.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'physically realized product'))) > 0) AND (SIZEOF(QUERY (pd <* USEDIN(pdf, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FORMATION')| (pd.frame_of_reference.name = 'physical occurrence'))) <> 1))) = 0;
20919END_RULE;
20920
20921-- IN AP214
20922RULE plib_class_reference_requires_version FOR (externally_defined_class );
20923   WHERE
20924      wr1:
20925         SIZEOF(QUERY (edc <* externally_defined_class| ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY (aei <* USEDIN(edc, 'STEP_MERGED_CAD_SCHEMA.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS')| (aei.role.name = 'version'))) <> 1))) = 0;
20926      wr2:
20927         SIZEOF(QUERY (edc <* externally_defined_class| ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY (aei <* USEDIN(edc, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (aei.role.name = 'version'))) > 0))) = 0;
20928END_RULE;
20929
20930-- DIFF IN AP214
20931-- DIFF IN AP203e2
20932RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property );
20933   LOCAL
20934      known_sourced_properties : SET OF externally_defined_general_property;
20935   END_LOCAL;
20936      known_sourced_properties := QUERY (edc <* externally_defined_general_property| 'STEP_MERGED_CAD_SCHEMA.KNOWN_SOURCE' IN TYPEOF(edc.source));
20937   WHERE
20938      WR1:
20939         SIZEOF(QUERY (edgp <* known_sourced_properties| (SIZEOF(QUERY (edir <* USEDIN(edgp, 'STEP_MERGED_CAD_SCHEMA.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM')| ((edir.name = 'name scope') AND ('STEP_MERGED_CAD_SCHEMA.EXTERNALLY_DEFINED_CLASS' IN TYPEOF(edir.related_item))) AND ('STEP_MERGED_CAD_SCHEMA.KNOWN_SOURCE' IN TYPEOF(edir.related_item.source)))) <> 1))) = 0;
20940END_RULE;
20941
20942-- DIFF IN AP214
20943-- DIFF IN AP203e2
20944RULE plib_property_reference_requires_version FOR (externally_defined_general_property );
20945   LOCAL
20946      plib_properties : SET OF externally_defined_general_property := [];
20947   END_LOCAL;
20948      plib_properties := QUERY (edgp <* externally_defined_general_property| ('STEP_MERGED_CAD_SCHEMA.KNOWN_SOURCE' IN TYPEOF(edgp.source)) AND ('STEP_MERGED_CAD_SCHEMA.KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library'));
20949   WHERE
20950      WR1:
20951         SIZEOF(QUERY (edgp <* plib_properties| (SIZEOF(QUERY (edir <* USEDIN(edgp, 'STEP_MERGED_CAD_SCHEMA.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS')| (edir.role.name = 'version'))) <> 1))) = 0;
20952END_RULE;
20953
20954-- IN AP203e2/AP242
20955RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category );
20956   LOCAL
20957      i : INTEGER;
20958      j : INTEGER;
20959      k : INTEGER;
20960      dkuhr : LOGICAL := TRUE;
20961      nnauo : INTEGER;
20962      nprpc : INTEGER := 0;
20963      rp : product;
20964   END_LOCAL;
20965      REPEAT i := LOINDEX(ply_laminate_sequence_definition) TO HIINDEX(ply_laminate_sequence_definition);
20966         nnauo := 0;
20967         REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
20968            IF ply_laminate_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition THEN
20969               rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
20970               nprpc := 0;
20971               REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
20972                  IF (product_related_product_category[k].name = 'ply') AND (rp IN product_related_product_category[k].products) THEN
20973                     nprpc := nprpc + 1;
20974                  END_IF;
20975               END_REPEAT;
20976               IF nprpc = 1 THEN
20977                  nnauo := nnauo + 1;
20978               ELSE
20979                  dkuhr := FALSE;
20980                  ESCAPE;
20981               END_IF;
20982            END_IF;
20983         END_REPEAT;
20984         IF dkuhr = FALSE THEN
20985            ESCAPE;
20986         END_IF;
20987         IF nnauo = 0 THEN
20988            dkuhr := FALSE;
20989            ESCAPE;
20990         END_IF;
20991      END_REPEAT;
20992   WHERE
20993      WR1:
20994         dkuhr;
20995END_RULE;
20996
20997-- IN AP203e2/AP242
20998RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option );
20999   LOCAL
21000      i : INTEGER;
21001      j : INTEGER;
21002      k : INTEGER;
21003      kp : INTEGER;
21004      dkuhr : LOGICAL;
21005      nmfuo : INTEGER;
21006      nprpc : INTEGER := 0;
21007      rp : product;
21008   END_LOCAL;
21009      dkuhr := TRUE;
21010      REPEAT kp := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
21011         IF product_related_product_category[kp].name = 'ply' THEN
21012            REPEAT i := LOINDEX(product_related_product_category[kp].products) TO HIINDEX(product_related_product_category[kp].products);
21013               nmfuo := 0;
21014               REPEAT j := LOINDEX(make_from_usage_option) TO HIINDEX(make_from_usage_option);
21015                  rp := make_from_usage_option[j].related_product_definition.formation.of_product;
21016                  IF product_related_product_category[kp].products[i] = rp THEN
21017                     REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
21018                        IF (rp IN product_related_product_category[k].products) AND (product_related_product_category[k].name IN [ 'isotropic material', 'filament assembly', 'discontinuous fiber assembly' ]) THEN
21019                           nprpc := nprpc + 1;
21020                        END_IF;
21021                     END_REPEAT;
21022                     IF nprpc = 1 THEN
21023                        nmfuo := nmfuo + 1;
21024                     ELSE
21025                        dkuhr := FALSE;
21026                        ESCAPE;
21027                     END_IF;
21028                  END_IF;
21029               END_REPEAT;
21030               IF dkuhr = FALSE THEN
21031                  ESCAPE;
21032               END_IF;
21033               IF nmfuo <> 1 THEN
21034                  dkuhr := FALSE;
21035                  ESCAPE;
21036               END_IF;
21037            END_REPEAT;
21038         END_IF;
21039      END_REPEAT;
21040   WHERE
21041      WR1:
21042         dkuhr;
21043END_RULE;
21044
21045-- IN AP214
21046RULE presentation_layer_assignment_constraint_2d_or_3d FOR (presentation_layer_assignment );
21047   WHERE
21048      wr1:
21049         SIZEOF(QUERY (pla <* presentation_layer_assignment| NOT (SIZEOF(QUERY (pnt <* QUERY (item <* pla.assigned_items| ('STEP_MERGED_CAD_SCHEMA.' + 'POINT' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (rep <* USEDIN(pnt, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep)))) = 0))) = 0))) = 0;
21050      wr2:
21051         SIZEOF(QUERY (pla <* presentation_layer_assignment| NOT (SIZEOF(QUERY (crv <* QUERY (item <* pla.assigned_items| ('STEP_MERGED_CAD_SCHEMA.' + 'CURVE' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (rep <* USEDIN(crv, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep)))) = 0))) = 0))) = 0;
21052      wr3:
21053         SIZEOF(QUERY (pla <* presentation_layer_assignment| NOT (SIZEOF(QUERY (srf <* QUERY (item <* pla.assigned_items| ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (rep <* USEDIN(srf, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION' IN TYPEOF(rep)))) = 0))) = 0))) = 0;
21054      wr4:
21055         SIZEOF(QUERY (pla <* presentation_layer_assignment| NOT (SIZEOF(QUERY (ao <* QUERY (item <* pla.assigned_items| ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_OCCURRENCE' IN TYPEOF(item)))| NOT (SIZEOF(QUERY (ur <* using_representations(ao)| NOT (SIZEOF(TYPEOF(ur) * [ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_AREA'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_VIEW') ]) = 1))) = 0))) = 0))) = 0;
21056END_RULE;
21057
21058-- IN AP214
21059RULE presentation_view_presented_once FOR (presentation_view );
21060   WHERE
21061      wr1:
21062         SIZEOF(QUERY (pv <* presentation_view| (SIZEOF(QUERY (rm <* USEDIN(pv, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION')| (SIZEOF(USEDIN(rm, 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE')) <> 1) OR (SIZEOF(QUERY (mi <* USEDIN(rm, 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE')| (SIZEOF(USEDIN(mi, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')) <> 1) OR (SIZEOF(QUERY (r <* USEDIN(mi, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_AREA' IN TYPEOF(r)))) <> 0))) <> 0))) <> 0))) = 0;
21063END_RULE;
21064
21065-- DIFF IN AP214
21066RULE product_concept_feature_requires_category FOR (product_concept_feature );
21067   WHERE
21068      WR1:
21069         SIZEOF(QUERY (pcf <* product_concept_feature| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CONDITIONAL_CONCEPT_FEATURE') ] * TYPEOF(pcf)) = 0) AND (SIZEOF(QUERY (aga <* USEDIN(pcf, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS')| (aga\group_assignment.role\object_role.name = 'specification category member') AND ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(aga.assigned_group)))) <> 1))) = 0;
21070END_RULE;
21071
21072-- DIFF IN AP214
21073RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship );
21074   WHERE
21075      WR1:
21076         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'definition replacement') AND (SIZEOF(USEDIN(pdr, 'STEP_MERGED_CAD_SCHEMA.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) = 0))) = 0;
21077END_RULE;
21078
21079-- IN AP214
21080RULE product_requires_category FOR (product, product_related_product_category );
21081   WHERE
21082      wr1:
21083         SIZEOF(QUERY (p <* product| (SIZEOF(USEDIN(p, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')) = 0))) = 0;
21084END_RULE;
21085
21086-- IN AP214
21087RULE product_requires_id_owner FOR (product );
21088   WHERE
21089      wr1:
21090         SIZEOF(QUERY (prod <* product| (SIZEOF(QUERY (prpc <* USEDIN(prod, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'tool', 'raw material' ]))) > 0) AND (SIZEOF(QUERY (apoa <* USEDIN(prod, 'STEP_MERGED_CAD_SCHEMA.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS')| (apoa\person_and_organization_assignment.role.name = 'id owner'))) + SIZEOF(QUERY (oa <* USEDIN(prod, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (oa\organization_assignment.role.name = 'id owner'))) <> 1))) = 0;
21091END_RULE;
21092
21093-- IN AP214
21094RULE product_requires_version FOR (product );
21095   WHERE
21096      wr1:
21097         SIZEOF(QUERY (prod <* product| (SIZEOF(USEDIN(prod, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT')) = 0))) = 0;
21098END_RULE;
21099
21100-- IN AP214
21101RULE restrict_action_resource_requirement_for_process_operation FOR (action, action_resource_requirement );
21102   WHERE
21103      wr1:
21104         SIZEOF(QUERY (a <* action| (a.name = 'process operation') AND (SIZEOF(QUERY (arr <* USEDIN(a, 'STEP_MERGED_CAD_SCHEMA.ACTION_RESOURCE_REQUIREMENT.OPERATIONS')| (arr.name = 'reference tool'))) > 1))) = 0;
21105      wr2:
21106         SIZEOF(QUERY (arr <* action_resource_requirement| ((arr.name = 'reference tool') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'REQUIREMENT_FOR_ACTION_RESOURCE' IN TYPEOF(arr))) AND (SIZEOF(QUERY (ar <* arr\requirement_for_action_resource.resources| ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RESOURCE' IN TYPEOF(ar)))) <> 1))) = 0;
21107      wr3:
21108         SIZEOF(QUERY (arr <* action_resource_requirement| (arr.name <> 'reference tool') AND (arr.name <> 'non reference tool'))) = 0;
21109END_RULE;
21110
21111-- DIFF IN AP214
21112RULE restrict_alternative_definition FOR (product_definition );
21113   LOCAL
21114      solution_definitions : SET OF product_definition := [];
21115   END_LOCAL;
21116      solution_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'alternative definition');
21117   WHERE
21118      WR1:
21119         SIZEOF(QUERY (pd <* solution_definitions| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')| (pdr.name = 'solution alternative definition'))) <> 1))) = 0;
21120      WR2:
21121         SIZEOF(QUERY (pd <* solution_definitions| NOT (pd.name IN [ 'technical', 'supplier', 'technical supplier', '' ]))) = 0;
21122      WR3:
21123         SIZEOF(QUERY (pd <* solution_definitions| (pd.name IN [ 'supplier', 'technical supplier' ]) AND (SIZEOF(QUERY (aoa <* USEDIN(pd.formation, 'STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (aoa.role.name = 'supplier'))) <> 1))) = 0;
21124END_RULE;
21125
21126-- IN AP214
21127RULE restrict_applied_action_assignment FOR (applied_action_assignment, object_role );
21128   WHERE
21129      wr1:
21130         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.description = 'activity element') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EXECUTED_ACTION' IN TYPEOF(aaa.assigned_action)))) = 0;
21131      wr2:
21132         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.description = 'activity element') AND NOT item_correlation(aaa.items, [ 'ACTION', 'ACTION_METHOD', 'ACTION_PROPERTY', 'ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE', 'CONFIGURATION_ITEM', 'CONFIGURATION_EFFECTIVITY', 'CONFIGURED_EFFECTIVITY_ASSIGNMENT', 'DOCUMENT_FILE', 'DRAUGHTING_MODEL', 'DRAWING_REVISION', 'GENERAL_PROPERTY', 'MATERIAL_DESIGNATION', 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 'PRESENTATION_AREA', 'PRODUCT', 'PRODUCT_CONCEPT', 'PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_FEATURE_ASSOCIATION', 'PRODUCT_CONCEPT_FEATURE_CATEGORY', 'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE', 'PRODUCT_DEFINITION', 'PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_RELATIONSHIP', 'PRODUCT_DEFINITION_SUBSTITUTE', 'PROPERTY_DEFINITION', 'RESOURCE_PROPERTY', 'SHAPE_ASPECT', 'SHAPE_REPRESENTATION' ]))) = 0;
21133      wr3:
21134         SIZEOF(QUERY (aaa <* applied_action_assignment| (NOT EXISTS(aaa.role) OR (aaa.role.description = 'activity element')) AND (SIZEOF(QUERY (i <* aaa.items| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)))) > 0))) = 0;
21135      wr4:
21136         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.name = 'deliverable element') AND ((NOT ('STEP_MERGED_CAD_SCHEMA.' + 'ELEMENT_DELIVERY' IN TYPEOF(aaa.assigned_action)) OR (SIZEOF(QUERY (i <* aaa.items| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)))) > 1)) OR (SIZEOF(QUERY (i <* aaa.items| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)) AND (i\action_assignment.role.description <> 'activity element'))) > 0)))) = 0;
21137      wr5:
21138         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.name = 'retention') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'RETENTION' IN TYPEOF(aaa.assigned_action)))) = 0;
21139      wr6:
21140         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.name = 'retention') AND NOT item_correlation(aaa.items, [ 'ACTION', 'ACTION_DIRECTIVE', 'ACTION_PROPERTY', 'ACTION_RELATIONSHIP', 'APPLIED_ACTION_ASSIGNMENT', 'APPLIED_CLASSIFICATION_ASSIGNMENT', 'ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE', 'CERTIFICATION', 'CLASS_SYSTEM', 'CONFIGURATION_EFFECTIVITY', 'CONFIGURATION_ITEM', 'CONFIGURED_EFFECTIVITY_ASSIGNMENT', 'DOCUMENT_FILE', 'DRAUGHTING_MODEL', 'DRAWING_REVISION', 'GENERAL_PROPERTY', 'MATERIAL_DESIGNATION', 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 'ORGANIZATIONAL_PROJECT', 'PRESENTATION_AREA', 'PRODUCT', 'PRODUCT_CONCEPT', 'PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_FEATURE_ASSOCIATION', 'PRODUCT_CONCEPT_FEATURE_CATEGORY', 'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE', 'PRODUCT_DEFINITION', 'PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_RELATIONSHIP', 'PRODUCT_DEFINITION_SUBSTITUTE', 'PROPERTY_DEFINITION', 'RESOURCE_PROPERTY', 'SHAPE_REPRESENTATION', 'VERSIONED_ACTION_REQUEST' ]))) = 0;
21141      wr7:
21142         SIZEOF(QUERY (aaa <* applied_action_assignment| (aaa.role.name = 'test activity') AND NOT item_correlation(aaa.items, [ 'PROPERTY_DEFINITION' ]))) = 0;
21143END_RULE;
21144
21145-- IN AP214
21146RULE restrict_applied_action_request_assignment FOR (applied_action_request_assignment, object_role );
21147   WHERE
21148      wr1:
21149         SIZEOF(QUERY (aara <* applied_action_request_assignment| (aara.role.name <> 'scope'))) = 0;
21150END_RULE;
21151
21152-- IN AP214
21153RULE restrict_applied_classification_assignment_role FOR (applied_classification_assignment );
21154   WHERE
21155      wr1:
21156         SIZEOF(QUERY (aca <* applied_classification_assignment| ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS' IN TYPEOF(aca.assigned_class)) AND NOT (aca.role.name IN [ 'definitional', 'non-definitional', '' ]))) = 0;
21157      wr2:
21158         SIZEOF(QUERY (aca <* applied_classification_assignment| (aca.role.name IN [ 'definitional', 'non-definitional', '' ]) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS' IN TYPEOF(aca.assigned_class)))) = 0;
21159      wr3:
21160         SIZEOF(QUERY (aca <* applied_classification_assignment| ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS_SYSTEM' IN TYPEOF(aca.assigned_class)) AND (aca.role.name <> 'class system membership'))) = 0;
21161      wr4:
21162         SIZEOF(QUERY (aca <* applied_classification_assignment| (aca.role.name = 'class system membership') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS_SYSTEM' IN TYPEOF(aca.assigned_class)))) = 0;
21163END_RULE;
21164
21165-- IN AP214
21166RULE restrict_applied_event_occurrence_assignment FOR (applied_event_occurrence_assignment );
21167   WHERE
21168      wr1:
21169         SIZEOF(QUERY (eo <* applied_event_occurrence_assignment| (eo\event_occurrence_assignment.role.name = 'event context') AND (SIZEOF(eo.items) > 1))) = 0;
21170END_RULE;
21171
21172-- IN AP214
21173RULE restrict_applied_organizational_project_assignment FOR (applied_organizational_project_assignment, object_role );
21174   WHERE
21175      wr1:
21176         SIZEOF(QUERY (aopa <* applied_organizational_project_assignment| (aopa.role.name = 'affecting project') AND NOT item_correlation(aopa.items, [ 'PRODUCT_CONCEPT' ]))) = 0;
21177      wr2:
21178         SIZEOF(QUERY (aopa <* applied_organizational_project_assignment| (aopa.role.name = 'work program') AND NOT item_correlation(aopa.items, [ 'EXECUTED_ACTION' ]))) = 0;
21179END_RULE;
21180
21181-- IN AP214
21182RULE restrict_approval FOR (approval, approval_date_time );
21183   WHERE
21184      wr1:
21185         SIZEOF(QUERY (a <* approval| (SIZEOF(USEDIN(a, 'STEP_MERGED_CAD_SCHEMA.APPROVAL_DATE_TIME.DATED_APPROVAL')) > 2))) = 0;
21186      wr2:
21187         SIZEOF(QUERY (adt <* approval_date_time| NOT EXISTS(adt.role) OR NOT (adt.role.name IN [ 'actual', 'planned' ]))) = 0;
21188      wr3:
21189         SIZEOF(QUERY (a <* approval| (SIZEOF(QUERY (adt <* USEDIN(a, 'STEP_MERGED_CAD_SCHEMA.APPROVAL_DATE_TIME.DATED_APPROVAL')| (adt.role.name = 'actual'))) > 1))) = 0;
21190      wr4:
21191         SIZEOF(QUERY (a <* approval| (SIZEOF(QUERY (adt <* USEDIN(a, 'STEP_MERGED_CAD_SCHEMA.APPROVAL_DATE_TIME.DATED_APPROVAL')| (adt.role.name = 'planned'))) > 1))) = 0;
21192END_RULE;
21193
21194-- IN AP203e2/AP242
21195RULE restrict_assembly_category FOR (product_definition );
21196   LOCAL
21197      assembly_definitions : SET OF product_definition := [];
21198   END_LOCAL;
21199      assembly_definitions := QUERY (pd <* product_definition| SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'assembly definition'))) > 0);
21200   WHERE
21201      WR1:
21202         SIZEOF(QUERY (pd <* assembly_definitions| NOT ('assembly' IN categories_of_product(pd.formation.of_product)))) = 0;
21203END_RULE;
21204
21205-- IN AP214
21206RULE restrict_camera_image_in_view FOR (camera_image, presentation_view );
21207   WHERE
21208      wr1:
21209         SIZEOF(QUERY (ci <* camera_image| (SIZEOF(QUERY (r <* USEDIN(ci, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_VIEW' IN TYPEOF(r)))) <> 1))) = 0;
21210      wr2:
21211         SIZEOF(QUERY (pv <* presentation_view| (SIZEOF(QUERY (ri <* pv\representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE' IN TYPEOF(ri)))) > 1))) = 0;
21212END_RULE;
21213
21214RULE restrict_centre_of_mass_representation FOR (representation );
21215   WHERE
21216      WR1:
21217         SIZEOF(QUERY (r <* representation| (r.name = 'centre of mass') AND ((SIZEOF(r.items) <> 1) OR (SIZEOF(QUERY (i <* r.items| ('STEP_MERGED_CAD_SCHEMA.' + 'POINT' IN TYPEOF(i)) AND (i.name = 'centre point'))) <> 1)))) = 0;
21218END_RULE;
21219
21220-- IN AP214
21221RULE restrict_class_system_assignment_for_approval_status FOR (applied_classification_assignment, approval_status );
21222   WHERE
21223      wr1:
21224         SIZEOF(QUERY (ent <* approval_status| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'class system membership'))) > 1))) = 0;
21225END_RULE;
21226
21227-- IN AP214
21228RULE restrict_class_system_assignment_for_class FOR (applied_classification_assignment, class );
21229   WHERE
21230      wr1:
21231         SIZEOF(QUERY (c <* class| (SIZEOF(QUERY (aca <* USEDIN(c, 'STEP_MERGED_CAD_SCHEMA.CLASSIFICATION_ASSIGNMENT.ASSIGNED_CLASS')| (aca.role.name = 'class system membership') AND ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_CLASSIFICATION_ASSIGNMENT' IN TYPEOF(aca)))) > 1))) = 0;
21232END_RULE;
21233
21234-- IN AP214
21235RULE restrict_class_system_assignment_for_descriptive_representation_item FOR (applied_classification_assignment, descriptive_representation_item );
21236   WHERE
21237      wr1:
21238         SIZEOF(QUERY (ent <* descriptive_representation_item| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'class system membership'))) > 1))) = 0;
21239END_RULE;
21240
21241-- IN AP214
21242RULE restrict_class_system_assignment_for_document_type FOR (applied_classification_assignment, document_type );
21243   WHERE
21244      wr1:
21245         SIZEOF(QUERY (ent <* document_type| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'class system membership'))) > 1))) = 0;
21246END_RULE;
21247
21248-- IN AP214
21249RULE restrict_class_system_assignment_for_security_classification_level FOR (applied_classification_assignment, security_classification_level );
21250   WHERE
21251      wr1:
21252         SIZEOF(QUERY (ent <* security_classification_level| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'class system membership'))) > 1))) = 0;
21253END_RULE;
21254
21255-- IN AP203e2/AP242
21256RULE restrict_classification_assignments FOR (applied_classification_assignment );
21257   WHERE
21258      WR1:
21259         SIZEOF(QUERY (aia <* applied_classification_assignment| NOT class_assignment_is_valid(aia))) = 0;
21260END_RULE;
21261
21262-- DIFF IN AP203e2
21263-- IN AP203e2/AP242
21264RULE restrict_collection_category FOR (product_definition );
21265   LOCAL
21266      collection_definitions : SET OF product_definition := [];
21267   END_LOCAL;
21268      collection_definitions := QUERY (pd <* product_definition| SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'collection definition'))) > 0);
21269   WHERE
21270      WR1:
21271         SIZEOF(QUERY (pd <* collection_definitions| NOT ('collection' IN categories_of_product(pd.formation.of_product)))) = 0;
21272END_RULE;
21273
21274RULE restrict_concept_feature_operator FOR (concept_feature_operator );
21275   WHERE
21276      WR1:
21277         SIZEOF(QUERY (cfo <* concept_feature_operator| NOT (cfo.name IN [ 'and', 'or', 'oneof', 'not', 'implication' ]))) = 0;
21278      WR2:
21279         SIZEOF(QUERY (cfo <* concept_feature_operator| (cfo.name = 'implication') AND (SIZEOF(QUERY (cfrwc <* USEDIN(cfo, 'STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' + 'CONDITIONAL_OPERATOR')| (SIZEOF(QUERY (ccf <* USEDIN(cfrwc, 'STEP_MERGED_CAD_SCHEMA.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION')| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(ccf)))) > 0))) > 0))) = 0;
21280      WR3:
21281         SIZEOF(QUERY (cfo <* concept_feature_operator| (cfo.name = 'not') AND (SIZEOF(QUERY (cfrwc <* USEDIN(cfo, 'STEP_MERGED_CAD_SCHEMA.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR')| (cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature))) > 0))) = 0;
21282END_RULE;
21283
21284-- IN AP203e2/AP242
21285RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design );
21286   WHERE
21287      WR1:
21288         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'functionality') AND (NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'functional definition')))) = 0;
21289      WR2:
21290         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'realization') AND (NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'conceptual definition')))) = 0;
21291      WR3:
21292         SIZEOF(QUERY (cd <* configuration_design| (cd.name IN [ 'functionality', 'realization' ]) AND NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CLASS' IN TYPEOF(cd.configuration.item_concept)))) = 0;
21293END_RULE;
21294
21295-- IN AP203e2/AP242
21296RULE restrict_configuration_design_for_design_constraint FOR (configuration_design );
21297   WHERE
21298      WR1:
21299         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'design constraint usage') AND (NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0;
21300END_RULE;
21301
21302-- IN AP214
21303RULE restrict_configuration_design_for_product_class FOR (configuration_design, product_class );
21304   WHERE
21305      wr1:
21306         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'functionality') AND (NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'functional definition')))) = 0;
21307      wr2:
21308         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'realization') AND (NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'conceptual definition')))) = 0;
21309      wr3:
21310         SIZEOF(QUERY (cd <* configuration_design| (cd.name IN [ 'functionality', 'realization' ]) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CLASS' IN TYPEOF(cd.configuration.item_concept)))) = 0;
21311      wr4:
21312         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'design constraint usage') AND (NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0;
21313      wr5:
21314         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'physical instance basis') AND (NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition.frame_of_reference.name <> 'physical occurrence')))) = 0;
21315      wr6:
21316         SIZEOF(QUERY (cd <* configuration_design| (cd.name = 'physical instance basis') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF(cd.configuration)))) = 0;
21317END_RULE;
21318
21319-- IN AP214
21320RULE restrict_default_settings FOR (applied_document_reference, representation );
21321   WHERE
21322      wr1:
21323         (SIZEOF(QUERY (r <* representation| ((r.name = 'default tolerances') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(r.items) <> 1))) = 0) AND (SIZEOF(QUERY (r <* representation| ((r.name = 'default tolerances') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (i <* r.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'tolerance class'))) <> 1))) = 0);
21324      wr2:
21325         SIZEOF(QUERY (r <* representation| ((r.name = 'default tolerances') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (adr <* USEDIN(r, 'STEP_MERGED_CAD_SCHEMA.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.role.name = 'general tolerance definition'))) + SIZEOF(QUERY (rr <* USEDIN(r, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2')| (rr.name = 'general tolerance definition') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(rr.rep_1)))) <> 1))) = 0;
21326END_RULE;
21327
21328-- IN AP214
21329RULE restrict_default_thickness FOR (representation );
21330   WHERE
21331      wr1:
21332         (SIZEOF(QUERY (r <* representation| ((r.name = 'default thickness') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (i <* r.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0) AND (SIZEOF(QUERY (r <* representation| ((r.name = 'default thickness') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (i <* r.items| ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name <> 'parameter name'))) > 0))) = 0);
21333      wr2:
21334         (SIZEOF(QUERY (r <* representation| ((r.name = 'default thickness') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(r.items) > 2))) = 0) AND (SIZEOF(QUERY (r <* representation| ((r.name = 'default thickness') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (i <* r.items| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM') ] * TYPEOF(i)) <> 1))) > 0))) = 0);
21335      wr3:
21336         SIZEOF(QUERY (r <* representation| ((r.name = 'default thickness') AND (r.context_of_items.context_type = 'default setting')) AND (SIZEOF(QUERY (i <* r.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'thickness value'))) <> 1))) = 0;
21337END_RULE;
21338
21339-- IN AP214
21340RULE restrict_drawing FOR (draughting_title, drawing_revision );
21341   WHERE
21342      wr1:
21343         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(dr.areas) = 0) OR (SIZEOF(QUERY (ais <* dr.areas| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'DRAWING_SHEET_REVISION' IN TYPEOF(ais.area)))) > 0))) = 0;
21344      wr2:
21345         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(USEDIN(dr, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_TITLE.ITEMS')) > 1))) = 0;
21346      wr3:
21347         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(USEDIN(ais.area, 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_TITLE.ITEMS')) > 1))) > 0))) = 0;
21348      wr4:
21349         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (item <* ais.area.items| (SIZEOF(TYPEOF(item) * [ ('STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_BOX') ]) <> 1))) > 0))) > 0))) = 0;
21350      wr5:
21351         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (item <* ais.area.items| (SIZEOF(TYPEOF(item) * [ ('STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM') ]) = 0))) > 0))) > 0))) = 0;
21352      wr6:
21353         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (p_b <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_BOX' IN TYPEOF(item)))| (SIZEOF(USEDIN(p_b, 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_SIZE.SIZE')) <> 1))) > 0))) > 0))) = 0;
21354      wr7:
21355         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_VIEW' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0))) > 0))) = 0;
21356      wr8:
21357         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (a2p <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT' IN TYPEOF(item)))| (SIZEOF(USEDIN(a2p, 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM.MAPPING_TARGET')) = 0))) > 0))) > 0))) = 0;
21358      wr9:
21359         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(ais.area.context_of_items.representations_in_context) > 1))) > 0))) = 0;
21360      wr10:
21361         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| (SIZEOF(USEDIN(mi\mapped_item.mapping_source.mapped_representation, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION')) <> 1))) > 0))) > 0))) = 0;
21362      wr11:
21363         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| (SIZEOF(QUERY (pv_item <* mi\mapped_item.mapping_source.mapped_representation.items| (SIZEOF(TYPEOF(pv_item) * [ ('STEP_MERGED_CAD_SCHEMA.' + 'STYLED_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT') ]) <> 1))) > 0))) > 0))) > 0))) = 0;
21364      wr12:
21365         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| (SIZEOF(QUERY (a2p <* QUERY (pv_item <* mi\mapped_item.mapping_source.mapped_representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'AXIS2_PLACEMENT' IN TYPEOF(pv_item)))| (SIZEOF(QUERY (rm <* USEDIN(a2p, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPING_ORIGIN')| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| (mi\mapped_item.mapping_source :=: rm))) > 0))) = 1))) <> 1))) > 0))) > 0))) = 0;
21366      wr13:
21367         SIZEOF(QUERY (dr <* drawing_revision| (SIZEOF(QUERY (ais <* dr.areas| (SIZEOF(QUERY (mi <* QUERY (item <* ais.area.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MAPPED_ITEM' IN TYPEOF(item)))| (SIZEOF(mi\mapped_item.mapping_source.mapped_representation.context_of_items.representations_in_context) <> 1))) > 0))) > 0))) = 0;
21368END_RULE;
21369
21370-- IN AP214
21371RULE restrict_effectivity_assignment_for_class_category_usage FOR (applied_effectivity_assignment, product_concept_feature_category_usage );
21372   WHERE
21373      wr1:
21374         SIZEOF(QUERY (aea <* applied_effectivity_assignment| (SIZEOF(QUERY (i <* aea.items| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)))) > 0) AND ((((SIZEOF(QUERY (i <* aea.items| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)))) <> SIZEOF(aea.items)) OR (SIZEOF(TYPEOF(aea.assigned_effectivity) * [ 'STEP_MERGED_CAD_SCHEMA.TIME_INTERVAL_BASED_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.DATED_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.SERIAL_NUMBERED_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.LOT_EFFECTIVITY', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_EFFECTIVITY' ]) > 0)) OR (aea.assigned_effectivity.id <> 'class usage')) OR (SIZEOF(QUERY (cueca <* USEDIN(aea, 'STEP_MERGED_CAD_SCHEMA.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT')| ('STEP_MERGED_CAD_SCHEMA.CLASS_USAGE_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(cueca)))) = 0)))) = 0;
21375END_RULE;
21376
21377-- IN AP214
21378RULE restrict_effectivity_for_effectivity_relationship FOR (effectivity_relationship );
21379   WHERE
21380      wr1:
21381         SIZEOF(QUERY (er <* effectivity_relationship| (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'LOT_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'SERIAL_NUMBERED_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_EFFECTIVITY') ] * TYPEOF(er.relating_effectivity)) > 0) OR (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'LOT_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'SERIAL_NUMBERED_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_EFFECTIVITY') ] * TYPEOF(er.related_effectivity)) > 0))) = 0;
21382END_RULE;
21383
21384-- IN AP214
21385RULE restrict_effectivity_usage FOR (configured_effectivity_assignment, effectivity );
21386   WHERE
21387      wr1:
21388         SIZEOF(QUERY (e <* effectivity| (((((SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'DATED_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'TIME_INTERVAL_BASED_EFFECTIVITY') ] * TYPEOF(e)) = 0) AND (SIZEOF(QUERY (er <* USEDIN(e, 'STEP_MERGED_CAD_SCHEMA.EFFECTIVITY_RELATIONSHIP.RELATED_EFFECTIVITY')| (er.name = 'inheritance'))) = 0)) AND (e.id = 'configuration validity')) AND (SIZEOF(QUERY (cea <* USEDIN(e, 'STEP_MERGED_CAD_SCHEMA.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')| ('STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(cea)))) = 0)) AND (e.id = 'class usage')) AND (SIZEOF(QUERY (aea <* USEDIN(e, 'STEP_MERGED_CAD_SCHEMA.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(aea)) AND (SIZEOF(QUERY (i <* aea.items| ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)))) > 0))) = 0))) = 0;
21389END_RULE;
21390
21391-- IN AP214
21392RULE restrict_externally_defined_item_relationship FOR (externally_defined_item_relationship );
21393   WHERE
21394      wr1:
21395         SIZEOF(QUERY (edir <* externally_defined_item_relationship| (edir.name = 'name scope') AND (((NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY' IN TYPEOF(edir.relating_item)) OR NOT ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE' IN TYPEOF(edir.relating_item.source))) OR NOT ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CLASS' IN TYPEOF(edir.related_item))) OR NOT ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE' IN TYPEOF(edir.related_item.source))))) = 0;
21396END_RULE;
21397
21398-- IN AP203e2/AP242
21399RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship );
21400   WHERE
21401      WR1:
21402         SIZEOF(QUERY (gr <* group_relationship| (gr\group_relationship.name = 'class hierarchy') AND (NOT ('STEP_MERGED_CAD_SCHEMA.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR NOT ('STEP_MERGED_CAD_SCHEMA.CLASS' IN TYPEOF(gr\group_relationship.relating_group))))) = 0;
21403END_RULE;
21404
21405-- IN AP214
21406RULE restrict_group_relationship_for_general_classification_hierarchy FOR (class, group_relationship );
21407   WHERE
21408      wr1:
21409         SIZEOF(QUERY (gr <* group_relationship| (gr.name = 'class hierarchy') AND (NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS' IN TYPEOF(gr.related_group)) OR NOT ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS' IN TYPEOF(gr.relating_group))))) = 0;
21410END_RULE;
21411
21412-- DIFF IN AP214
21413RULE restrict_group_relationship_for_specification_category FOR (group_relationship );
21414   WHERE
21415      WR1:
21416         SIZEOF(QUERY (gr <* group_relationship| (gr.name = 'specification category hierarchy') AND (NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) OR NOT ('STEP_MERGED_CAD_SCHEMA.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))))) = 0;
21417END_RULE;
21418
21419-- IN AP203e2/AP242
21420RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment );
21421   WHERE
21422      WR1:
21423         SIZEOF(QUERY (ala1 <* attribute_language_assignment| (SIZEOF(QUERY (it <* ala1.items| (SIZEOF(QUERY (ala2 <* USEDIN(it, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name) AND (ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class))) > 1))) > 0))) = 0;
21424END_RULE;
21425
21426-- IN AP214
21427RULE restrict_multi_language_for_action FOR (action );
21428   WHERE
21429      wr1:
21430         SIZEOF(QUERY (ent <* action| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21431      wr2:
21432         SIZEOF(QUERY (ent <* action| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21433      wr3:
21434         SIZEOF(QUERY (ent <* action| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21435END_RULE;
21436
21437-- IN AP214
21438RULE restrict_multi_language_for_action_directive FOR (action_directive );
21439   WHERE
21440      wr1:
21441         SIZEOF(QUERY (ent <* action_directive| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'comment'))) > 0))) = 0;
21442      wr2:
21443         SIZEOF(QUERY (ent <* action_directive| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'comment'))) > 0))) = 0;
21444      wr3:
21445         SIZEOF(QUERY (ent <* action_directive| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21446END_RULE;
21447
21448-- IN AP214
21449RULE restrict_multi_language_for_action_method FOR (action_method );
21450   WHERE
21451      wr1:
21452         SIZEOF(QUERY (ent <* action_method| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21453      wr2:
21454         SIZEOF(QUERY (ent <* action_method| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21455      wr3:
21456         SIZEOF(QUERY (ent <* action_method| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21457END_RULE;
21458
21459-- IN AP214
21460RULE restrict_multi_language_for_action_property FOR (action_property );
21461   WHERE
21462      wr1:
21463         SIZEOF(QUERY (ent <* action_property| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21464      wr2:
21465         SIZEOF(QUERY (ent <* action_property| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21466      wr3:
21467         SIZEOF(QUERY (ent <* action_property| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21468END_RULE;
21469
21470-- IN AP214
21471RULE restrict_multi_language_for_action_relationship FOR (action_relationship );
21472   WHERE
21473      wr1:
21474         SIZEOF(QUERY (ent <* action_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21475      wr2:
21476         SIZEOF(QUERY (ent <* action_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21477      wr3:
21478         SIZEOF(QUERY (ent <* action_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21479END_RULE;
21480
21481-- IN AP214
21482RULE restrict_multi_language_for_alternate_product_relationship FOR (alternate_product_relationship );
21483   WHERE
21484      wr1:
21485         SIZEOF(QUERY (ent <* alternate_product_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'basis'))) > 0))) = 0;
21486      wr2:
21487         SIZEOF(QUERY (ent <* alternate_product_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'basis'))) > 0))) = 0;
21488      wr3:
21489         SIZEOF(QUERY (ent <* alternate_product_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21490END_RULE;
21491
21492-- IN AP214
21493RULE restrict_multi_language_for_application_context FOR (application_context );
21494   WHERE
21495      wr1:
21496         SIZEOF(QUERY (ent <* application_context| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21497      wr2:
21498         SIZEOF(QUERY (ent <* application_context| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21499      wr3:
21500         SIZEOF(QUERY (ent <* application_context| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21501END_RULE;
21502
21503-- IN AP214
21504RULE restrict_multi_language_for_approval_relationship FOR (approval_relationship );
21505   WHERE
21506      wr1:
21507         SIZEOF(QUERY (ent <* approval_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21508      wr2:
21509         SIZEOF(QUERY (ent <* approval_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21510      wr3:
21511         SIZEOF(QUERY (ent <* approval_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21512END_RULE;
21513
21514-- IN AP214
21515RULE restrict_multi_language_for_assembly_component_usage_substitute FOR (assembly_component_usage_substitute );
21516   WHERE
21517      wr1:
21518         SIZEOF(QUERY (ent <* assembly_component_usage_substitute| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'definition'))) > 0))) = 0;
21519      wr2:
21520         SIZEOF(QUERY (ent <* assembly_component_usage_substitute| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'definition'))) > 0))) = 0;
21521      wr3:
21522         SIZEOF(QUERY (ent <* assembly_component_usage_substitute| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21523END_RULE;
21524
21525-- IN AP214
21526RULE restrict_multi_language_for_certification FOR (certification );
21527   WHERE
21528      wr1:
21529         SIZEOF(QUERY (ent <* certification| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name') AND (mlaa.attribute_name <> 'purpose'))) > 0))) = 0;
21530      wr2:
21531         SIZEOF(QUERY (ent <* certification| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name') AND (ala.attribute_name <> 'purpose'))) > 0))) = 0;
21532      wr3:
21533         SIZEOF(QUERY (ent <* certification| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21534END_RULE;
21535
21536-- IN AP214
21537RULE restrict_multi_language_for_configuration_design FOR (configuration_design );
21538   WHERE
21539      wr1:
21540         SIZEOF(QUERY (ent <* configuration_design| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21541      wr2:
21542         SIZEOF(QUERY (ent <* configuration_design| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21543      wr3:
21544         SIZEOF(QUERY (ent <* configuration_design| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21545END_RULE;
21546
21547-- IN AP214
21548RULE restrict_multi_language_for_configuration_item FOR (configuration_item );
21549   WHERE
21550      wr1:
21551         SIZEOF(QUERY (ent <* configuration_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21552      wr2:
21553         SIZEOF(QUERY (ent <* configuration_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21554      wr3:
21555         SIZEOF(QUERY (ent <* configuration_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21556END_RULE;
21557
21558-- IN AP214
21559RULE restrict_multi_language_for_contract FOR (contract );
21560   WHERE
21561      wr1:
21562         SIZEOF(QUERY (ent <* contract| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'purpose'))) > 0))) = 0;
21563      wr2:
21564         SIZEOF(QUERY (ent <* contract| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'purpose'))) > 0))) = 0;
21565      wr3:
21566         SIZEOF(QUERY (ent <* contract| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21567END_RULE;
21568
21569-- IN AP214
21570RULE restrict_multi_language_for_data_environment FOR (data_environment );
21571   WHERE
21572      wr1:
21573         SIZEOF(QUERY (ent <* data_environment| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21574      wr2:
21575         SIZEOF(QUERY (ent <* data_environment| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21576      wr3:
21577         SIZEOF(QUERY (ent <* data_environment| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21578END_RULE;
21579
21580-- IN AP214
21581RULE restrict_multi_language_for_date_role FOR (date_role );
21582   WHERE
21583      wr1:
21584         SIZEOF(QUERY (ent <* date_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21585      wr2:
21586         SIZEOF(QUERY (ent <* date_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21587      wr3:
21588         SIZEOF(QUERY (ent <* date_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21589END_RULE;
21590
21591-- IN AP214
21592RULE restrict_multi_language_for_date_time_role FOR (date_time_role );
21593   WHERE
21594      wr1:
21595         SIZEOF(QUERY (ent <* date_time_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21596      wr2:
21597         SIZEOF(QUERY (ent <* date_time_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21598      wr3:
21599         SIZEOF(QUERY (ent <* date_time_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21600END_RULE;
21601
21602-- IN AP214
21603RULE restrict_multi_language_for_descriptive_representation_item FOR (descriptive_representation_item );
21604   WHERE
21605      wr1:
21606         SIZEOF(QUERY (ent <* descriptive_representation_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21607      wr2:
21608         SIZEOF(QUERY (ent <* descriptive_representation_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21609      wr3:
21610         SIZEOF(QUERY (ent <* descriptive_representation_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21611END_RULE;
21612
21613-- IN AP214
21614RULE restrict_multi_language_for_document_relationship FOR (document_relationship );
21615   WHERE
21616      wr1:
21617         SIZEOF(QUERY (ent <* document_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21618      wr2:
21619         SIZEOF(QUERY (ent <* document_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21620      wr3:
21621         SIZEOF(QUERY (ent <* document_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21622END_RULE;
21623
21624-- IN AP214
21625RULE restrict_multi_language_for_draughting_title FOR (draughting_title );
21626   WHERE
21627      wr1:
21628         SIZEOF(QUERY (ent <* draughting_title| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'contents'))) > 0))) = 0;
21629      wr2:
21630         SIZEOF(QUERY (ent <* draughting_title| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'contents') AND (ala.attribute_name <> 'language'))) > 0))) = 0;
21631      wr3:
21632         SIZEOF(QUERY (ent <* draughting_title| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21633END_RULE;
21634
21635-- IN AP214
21636RULE restrict_multi_language_for_effectivity FOR (effectivity );
21637   WHERE
21638      wr1:
21639         SIZEOF(QUERY (ent <* effectivity| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21640      wr2:
21641         SIZEOF(QUERY (ent <* effectivity| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21642      wr3:
21643         SIZEOF(QUERY (ent <* effectivity| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21644END_RULE;
21645
21646-- IN AP214
21647RULE restrict_multi_language_for_effectivity_relationship FOR (effectivity_relationship );
21648   WHERE
21649      wr1:
21650         SIZEOF(QUERY (ent <* effectivity_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21651      wr2:
21652         SIZEOF(QUERY (ent <* effectivity_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21653      wr3:
21654         SIZEOF(QUERY (ent <* effectivity_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21655END_RULE;
21656
21657-- IN AP214
21658RULE restrict_multi_language_for_event_occurrence FOR (event_occurrence );
21659   WHERE
21660      wr1:
21661         SIZEOF(QUERY (ent <* event_occurrence| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21662      wr2:
21663         SIZEOF(QUERY (ent <* event_occurrence| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21664      wr3:
21665         SIZEOF(QUERY (ent <* event_occurrence| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21666END_RULE;
21667
21668-- IN AP214
21669RULE restrict_multi_language_for_external_source FOR (external_source );
21670   WHERE
21671      wr1:
21672         SIZEOF(QUERY (ent <* external_source| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21673      wr2:
21674         SIZEOF(QUERY (ent <* external_source| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21675      wr3:
21676         SIZEOF(QUERY (ent <* external_source| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21677END_RULE;
21678
21679-- IN AP214
21680RULE restrict_multi_language_for_general_property FOR (general_property );
21681   WHERE
21682      wr1:
21683         SIZEOF(QUERY (ent <* general_property| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21684      wr2:
21685         SIZEOF(QUERY (ent <* general_property| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21686      wr3:
21687         SIZEOF(QUERY (ent <* general_property| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21688END_RULE;
21689
21690-- IN AP214
21691RULE restrict_multi_language_for_general_property_relationship FOR (general_property_relationship );
21692   WHERE
21693      wr1:
21694         SIZEOF(QUERY (ent <* general_property_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21695      wr2:
21696         SIZEOF(QUERY (ent <* general_property_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21697      wr3:
21698         SIZEOF(QUERY (ent <* general_property_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21699END_RULE;
21700
21701-- IN AP214
21702RULE restrict_multi_language_for_geometric_representation_item FOR (geometric_representation_item );
21703   WHERE
21704      wr1:
21705         SIZEOF(QUERY (ent <* geometric_representation_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21706      wr2:
21707         SIZEOF(QUERY (ent <* geometric_representation_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
21708      wr3:
21709         SIZEOF(QUERY (ent <* geometric_representation_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21710END_RULE;
21711
21712-- IN AP214
21713RULE restrict_multi_language_for_geometric_tolerance FOR (geometric_tolerance );
21714   WHERE
21715      wr1:
21716         SIZEOF(QUERY (ent <* geometric_tolerance| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21717      wr2:
21718         SIZEOF(QUERY (ent <* geometric_tolerance| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21719      wr3:
21720         SIZEOF(QUERY (ent <* geometric_tolerance| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21721END_RULE;
21722
21723-- IN AP214
21724RULE restrict_multi_language_for_group FOR (group );
21725   WHERE
21726      wr1:
21727         SIZEOF(QUERY (ent <* group| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21728      wr2:
21729         SIZEOF(QUERY (ent <* group| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21730      wr3:
21731         SIZEOF(QUERY (ent <* group| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21732END_RULE;
21733
21734-- IN AP214
21735RULE restrict_multi_language_for_group_relationship FOR (group_relationship );
21736   WHERE
21737      wr1:
21738         SIZEOF(QUERY (ent <* group_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21739      wr2:
21740         SIZEOF(QUERY (ent <* group_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21741      wr3:
21742         SIZEOF(QUERY (ent <* group_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21743END_RULE;
21744
21745-- IN AP214
21746RULE restrict_multi_language_for_identification_role FOR (identification_role );
21747   WHERE
21748      wr1:
21749         SIZEOF(QUERY (ent <* identification_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21750      wr2:
21751         SIZEOF(QUERY (ent <* identification_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21752      wr3:
21753         SIZEOF(QUERY (ent <* identification_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21754END_RULE;
21755
21756-- IN AP214
21757RULE restrict_multi_language_for_kinematic_pair FOR (kinematic_pair );
21758   WHERE
21759      wr1:
21760         SIZEOF(QUERY (ent <* kinematic_pair| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21761      wr2:
21762         SIZEOF(QUERY (ent <* kinematic_pair| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
21763      wr3:
21764         SIZEOF(QUERY (ent <* kinematic_pair| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21765END_RULE;
21766
21767-- IN AP214
21768RULE restrict_multi_language_for_mapped_item FOR (mapped_item );
21769   WHERE
21770      wr1:
21771         SIZEOF(QUERY (ent <* mapped_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21772      wr2:
21773         SIZEOF(QUERY (ent <* mapped_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
21774      wr3:
21775         SIZEOF(QUERY (ent <* mapped_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21776END_RULE;
21777
21778-- IN AP214
21779RULE restrict_multi_language_for_name_assignment FOR (name_assignment );
21780   WHERE
21781      wr1:
21782         SIZEOF(QUERY (ent <* name_assignment| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'assigned_name'))) > 0))) = 0;
21783      wr2:
21784         SIZEOF(QUERY (ent <* name_assignment| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'assigned_name'))) > 0))) = 0;
21785      wr3:
21786         SIZEOF(QUERY (ent <* name_assignment| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21787END_RULE;
21788
21789-- IN AP214
21790RULE restrict_multi_language_for_organization_relationship FOR (organization_relationship );
21791   WHERE
21792      wr1:
21793         SIZEOF(QUERY (ent <* organization_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21794      wr2:
21795         SIZEOF(QUERY (ent <* organization_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21796      wr3:
21797         SIZEOF(QUERY (ent <* organization_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21798END_RULE;
21799
21800-- IN AP214
21801RULE restrict_multi_language_for_organization_role FOR (organization_role );
21802   WHERE
21803      wr1:
21804         SIZEOF(QUERY (ent <* organization_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21805      wr2:
21806         SIZEOF(QUERY (ent <* organization_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21807      wr3:
21808         SIZEOF(QUERY (ent <* organization_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21809END_RULE;
21810
21811-- IN AP214
21812RULE restrict_multi_language_for_organizational_project FOR (organizational_project );
21813   WHERE
21814      wr1:
21815         SIZEOF(QUERY (ent <* organizational_project| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21816      wr2:
21817         SIZEOF(QUERY (ent <* organizational_project| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21818      wr3:
21819         SIZEOF(QUERY (ent <* organizational_project| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21820END_RULE;
21821
21822-- IN AP214
21823RULE restrict_multi_language_for_organizational_project_relationship FOR (organizational_project_relationship );
21824   WHERE
21825      wr1:
21826         SIZEOF(QUERY (ent <* organizational_project_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21827      wr2:
21828         SIZEOF(QUERY (ent <* organizational_project_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21829      wr3:
21830         SIZEOF(QUERY (ent <* organizational_project_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21831END_RULE;
21832
21833-- IN AP214
21834RULE restrict_multi_language_for_pair_actuator FOR (pair_actuator );
21835   WHERE
21836      wr1:
21837         SIZEOF(QUERY (ent <* pair_actuator| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21838      wr2:
21839         SIZEOF(QUERY (ent <* pair_actuator| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
21840      wr3:
21841         SIZEOF(QUERY (ent <* pair_actuator| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21842END_RULE;
21843
21844-- IN AP214
21845RULE restrict_multi_language_for_person_and_organization_role FOR (person_and_organization_role );
21846   WHERE
21847      wr1:
21848         SIZEOF(QUERY (ent <* person_and_organization_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21849      wr2:
21850         SIZEOF(QUERY (ent <* person_and_organization_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21851      wr3:
21852         SIZEOF(QUERY (ent <* person_and_organization_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21853END_RULE;
21854
21855-- IN AP214
21856RULE restrict_multi_language_for_presentation_layer_assignment FOR (presentation_layer_assignment );
21857   WHERE
21858      wr1:
21859         SIZEOF(QUERY (ent <* presentation_layer_assignment| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21860      wr2:
21861         SIZEOF(QUERY (ent <* presentation_layer_assignment| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21862      wr3:
21863         SIZEOF(QUERY (ent <* presentation_layer_assignment| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21864END_RULE;
21865
21866-- IN AP214
21867RULE restrict_multi_language_for_process_product_association FOR (process_product_association );
21868   WHERE
21869      wr1:
21870         SIZEOF(QUERY (ent <* process_product_association| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21871      wr2:
21872         SIZEOF(QUERY (ent <* process_product_association| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21873      wr3:
21874         SIZEOF(QUERY (ent <* process_product_association| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21875END_RULE;
21876
21877-- IN AP214
21878RULE restrict_multi_language_for_product FOR (product );
21879   WHERE
21880      wr1:
21881         SIZEOF(QUERY (ent <* product| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21882      wr2:
21883         SIZEOF(QUERY (ent <* product| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21884      wr3:
21885         SIZEOF(QUERY (ent <* product| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21886END_RULE;
21887
21888-- IN AP214
21889RULE restrict_multi_language_for_product_concept FOR (product_concept );
21890   WHERE
21891      wr1:
21892         SIZEOF(QUERY (ent <* product_concept| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21893      wr2:
21894         SIZEOF(QUERY (ent <* product_concept| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21895      wr3:
21896         SIZEOF(QUERY (ent <* product_concept| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21897END_RULE;
21898
21899-- IN AP214
21900RULE restrict_multi_language_for_product_concept_feature FOR (product_concept_feature );
21901   WHERE
21902      wr1:
21903         SIZEOF(QUERY (ent <* product_concept_feature| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21904      wr2:
21905         SIZEOF(QUERY (ent <* product_concept_feature| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21906      wr3:
21907         SIZEOF(QUERY (ent <* product_concept_feature| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21908END_RULE;
21909
21910-- IN AP214
21911RULE restrict_multi_language_for_product_concept_feature_association FOR (product_concept_feature_association );
21912   WHERE
21913      wr1:
21914         SIZEOF(QUERY (ent <* product_concept_feature_association| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21915      wr2:
21916         SIZEOF(QUERY (ent <* product_concept_feature_association| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21917      wr3:
21918         SIZEOF(QUERY (ent <* product_concept_feature_association| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21919END_RULE;
21920
21921-- IN AP214
21922RULE restrict_multi_language_for_product_concept_relationship FOR (product_concept_relationship );
21923   WHERE
21924      wr1:
21925         SIZEOF(QUERY (ent <* product_concept_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21926      wr2:
21927         SIZEOF(QUERY (ent <* product_concept_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21928      wr3:
21929         SIZEOF(QUERY (ent <* product_concept_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21930END_RULE;
21931
21932-- IN AP214
21933RULE restrict_multi_language_for_product_definition FOR (product_definition );
21934   WHERE
21935      wr1:
21936         SIZEOF(QUERY (ent <* product_definition| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
21937      wr2:
21938         SIZEOF(QUERY (ent <* product_definition| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
21939      wr3:
21940         SIZEOF(QUERY (ent <* product_definition| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21941END_RULE;
21942
21943-- IN AP214
21944RULE restrict_multi_language_for_product_definition_formation FOR (product_definition_formation );
21945   WHERE
21946      wr1:
21947         SIZEOF(QUERY (ent <* product_definition_formation| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21948      wr2:
21949         SIZEOF(QUERY (ent <* product_definition_formation| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21950      wr3:
21951         SIZEOF(QUERY (ent <* product_definition_formation| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21952END_RULE;
21953
21954-- IN AP214
21955RULE restrict_multi_language_for_product_definition_formation_relationship FOR (product_definition_formation_relationship );
21956   WHERE
21957      wr1:
21958         SIZEOF(QUERY (ent <* product_definition_formation_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21959      wr2:
21960         SIZEOF(QUERY (ent <* product_definition_formation_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21961      wr3:
21962         SIZEOF(QUERY (ent <* product_definition_formation_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21963END_RULE;
21964
21965-- IN AP214
21966RULE restrict_multi_language_for_product_definition_relationship FOR (product_definition_relationship );
21967   WHERE
21968      wr1:
21969         SIZEOF(QUERY (ent <* product_definition_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21970      wr2:
21971         SIZEOF(QUERY (ent <* product_definition_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21972      wr3:
21973         SIZEOF(QUERY (ent <* product_definition_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21974END_RULE;
21975
21976-- IN AP214
21977RULE restrict_multi_language_for_product_definition_substitute FOR (product_definition_substitute );
21978   WHERE
21979      wr1:
21980         SIZEOF(QUERY (ent <* product_definition_substitute| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21981      wr2:
21982         SIZEOF(QUERY (ent <* product_definition_substitute| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21983      wr3:
21984         SIZEOF(QUERY (ent <* product_definition_substitute| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21985END_RULE;
21986
21987-- IN AP214
21988RULE restrict_multi_language_for_product_related_product_category FOR (product_related_product_category );
21989   WHERE
21990      wr1:
21991         SIZEOF(QUERY (ent <* product_related_product_category| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
21992      wr2:
21993         SIZEOF(QUERY (ent <* product_related_product_category| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
21994      wr3:
21995         SIZEOF(QUERY (ent <* product_related_product_category| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
21996END_RULE;
21997
21998-- IN AP214
21999RULE restrict_multi_language_for_property_definition FOR (property_definition );
22000   WHERE
22001      wr1:
22002         SIZEOF(QUERY (ent <* property_definition| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
22003      wr2:
22004         SIZEOF(QUERY (ent <* property_definition| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
22005      wr3:
22006         SIZEOF(QUERY (ent <* property_definition| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22007END_RULE;
22008
22009-- IN AP214
22010RULE restrict_multi_language_for_property_definition_relationship FOR (property_definition_relationship );
22011   WHERE
22012      wr1:
22013         SIZEOF(QUERY (ent <* property_definition_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22014      wr2:
22015         SIZEOF(QUERY (ent <* property_definition_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22016      wr3:
22017         SIZEOF(QUERY (ent <* property_definition_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22018END_RULE;
22019
22020-- IN AP214
22021RULE restrict_multi_language_for_representation FOR (representation );
22022   WHERE
22023      wr1:
22024         SIZEOF(QUERY (ent <* representation| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0))) = 0;
22025      wr2:
22026         SIZEOF(QUERY (ent <* representation| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))) = 0;
22027      wr3:
22028         SIZEOF(QUERY (ent <* representation| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22029END_RULE;
22030
22031-- IN AP214
22032RULE restrict_multi_language_for_representation_relationship FOR (representation_relationship );
22033   WHERE
22034      wr1:
22035         SIZEOF(QUERY (ent <* representation_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22036      wr2:
22037         SIZEOF(QUERY (ent <* representation_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22038      wr3:
22039         SIZEOF(QUERY (ent <* representation_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22040END_RULE;
22041
22042-- IN AP214
22043RULE restrict_multi_language_for_requirement_for_action_resource FOR (requirement_for_action_resource );
22044   WHERE
22045      wr1:
22046         SIZEOF(QUERY (ent <* requirement_for_action_resource| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22047      wr2:
22048         SIZEOF(QUERY (ent <* requirement_for_action_resource| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22049      wr3:
22050         SIZEOF(QUERY (ent <* requirement_for_action_resource| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22051END_RULE;
22052
22053-- IN AP214
22054RULE restrict_multi_language_for_resource_property FOR (resource_property );
22055   WHERE
22056      wr1:
22057         SIZEOF(QUERY (ent <* resource_property| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22058      wr2:
22059         SIZEOF(QUERY (ent <* resource_property| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22060      wr3:
22061         SIZEOF(QUERY (ent <* resource_property| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22062END_RULE;
22063
22064-- IN AP214
22065RULE restrict_multi_language_for_resource_requirement_type FOR (resource_requirement_type );
22066   WHERE
22067      wr1:
22068         SIZEOF(QUERY (ent <* resource_requirement_type| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22069      wr2:
22070         SIZEOF(QUERY (ent <* resource_requirement_type| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22071      wr3:
22072         SIZEOF(QUERY (ent <* resource_requirement_type| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22073END_RULE;
22074
22075-- IN AP214
22076RULE restrict_multi_language_for_security_classification FOR (security_classification );
22077   WHERE
22078      wr1:
22079         SIZEOF(QUERY (ent <* security_classification| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name') AND (mlaa.attribute_name <> 'purpose'))) > 0))) = 0;
22080      wr2:
22081         SIZEOF(QUERY (ent <* security_classification| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name') AND (ala.attribute_name <> 'purpose'))) > 0))) = 0;
22082      wr3:
22083         SIZEOF(QUERY (ent <* security_classification| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22084END_RULE;
22085
22086-- IN AP214
22087RULE restrict_multi_language_for_shape_aspect FOR (shape_aspect );
22088   WHERE
22089      wr1:
22090         SIZEOF(QUERY (ent <* shape_aspect| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22091      wr2:
22092         SIZEOF(QUERY (ent <* shape_aspect| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22093      wr3:
22094         SIZEOF(QUERY (ent <* shape_aspect| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22095END_RULE;
22096
22097-- IN AP214
22098RULE restrict_multi_language_for_shape_aspect_relationship FOR (shape_aspect_relationship );
22099   WHERE
22100      wr1:
22101         SIZEOF(QUERY (ent <* shape_aspect_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22102      wr2:
22103         SIZEOF(QUERY (ent <* shape_aspect_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22104      wr3:
22105         SIZEOF(QUERY (ent <* shape_aspect_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22106END_RULE;
22107
22108-- IN AP214
22109RULE restrict_multi_language_for_styled_item FOR (styled_item );
22110   WHERE
22111      wr1:
22112         SIZEOF(QUERY (ent <* styled_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
22113      wr2:
22114         SIZEOF(QUERY (ent <* styled_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
22115      wr3:
22116         SIZEOF(QUERY (ent <* styled_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22117END_RULE;
22118
22119-- IN AP214
22120RULE restrict_multi_language_for_time_interval_role FOR (time_interval_role );
22121   WHERE
22122      wr1:
22123         SIZEOF(QUERY (ent <* time_interval_role| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22124      wr2:
22125         SIZEOF(QUERY (ent <* time_interval_role| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22126      wr3:
22127         SIZEOF(QUERY (ent <* time_interval_role| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22128END_RULE;
22129
22130-- IN AP214
22131RULE restrict_multi_language_for_topological_representation_item FOR (topological_representation_item );
22132   WHERE
22133      wr1:
22134         SIZEOF(QUERY (ent <* topological_representation_item| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'name'))) > 0))) = 0;
22135      wr2:
22136         SIZEOF(QUERY (ent <* topological_representation_item| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'name'))) > 0))) = 0;
22137      wr3:
22138         SIZEOF(QUERY (ent <* topological_representation_item| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22139END_RULE;
22140
22141-- IN AP214
22142RULE restrict_multi_language_for_uncertainty_measure_with_unit FOR (uncertainty_measure_with_unit );
22143   WHERE
22144      wr1:
22145         SIZEOF(QUERY (ent <* uncertainty_measure_with_unit| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22146      wr2:
22147         SIZEOF(QUERY (ent <* uncertainty_measure_with_unit| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22148      wr3:
22149         SIZEOF(QUERY (ent <* uncertainty_measure_with_unit| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22150END_RULE;
22151
22152-- IN AP214
22153RULE restrict_multi_language_for_uncertainty_qualifier FOR (uncertainty_qualifier );
22154   WHERE
22155      wr1:
22156         SIZEOF(QUERY (ent <* uncertainty_qualifier| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22157      wr2:
22158         SIZEOF(QUERY (ent <* uncertainty_qualifier| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22159      wr3:
22160         SIZEOF(QUERY (ent <* uncertainty_qualifier| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22161END_RULE;
22162
22163-- IN AP214
22164RULE restrict_multi_language_for_versioned_action_request FOR (versioned_action_request );
22165   WHERE
22166      wr1:
22167         SIZEOF(QUERY (ent <* versioned_action_request| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22168      wr2:
22169         SIZEOF(QUERY (ent <* versioned_action_request| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22170      wr3:
22171         SIZEOF(QUERY (ent <* versioned_action_request| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22172END_RULE;
22173
22174-- IN AP214
22175RULE restrict_multi_language_for_versioned_action_request_relationship FOR (versioned_action_request_relationship );
22176   WHERE
22177      wr1:
22178         SIZEOF(QUERY (ent <* versioned_action_request_relationship| (SIZEOF(QUERY (mlaa <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa.attribute_name <> 'description'))) > 0))) = 0;
22179      wr2:
22180         SIZEOF(QUERY (ent <* versioned_action_request_relationship| (SIZEOF(QUERY (ala <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala.attribute_name <> 'description'))) > 0))) = 0;
22181      wr3:
22182         SIZEOF(QUERY (ent <* versioned_action_request_relationship| (SIZEOF(QUERY (mlaa1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (mlaa2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')| (mlaa1.attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language))) > 1))) + SIZEOF(QUERY (ala1 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (SIZEOF(QUERY (ala2 <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')| (ala1.attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language))) > 1))) > 0))) = 0;
22183END_RULE;
22184
22185-- IN AP214
22186RULE restrict_name_assignment_for_kinematic_joint FOR (kinematic_joint );
22187   WHERE
22188      wr1:
22189         SIZEOF(QUERY (ent <* kinematic_joint| (SIZEOF(USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1))) = 0;
22190END_RULE;
22191
22192-- IN AP214
22193RULE restrict_name_assignment_for_kinematic_link FOR (kinematic_link );
22194   WHERE
22195      wr1:
22196         SIZEOF(QUERY (ent <* kinematic_link| (SIZEOF(USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1))) = 0;
22197END_RULE;
22198
22199-- IN AP214
22200RULE restrict_name_assignment_for_kinematic_structure FOR (kinematic_structure );
22201   WHERE
22202      wr1:
22203         SIZEOF(QUERY (ent <* kinematic_structure| (SIZEOF(USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1))) = 0;
22204END_RULE;
22205
22206-- IN AP214
22207RULE restrict_name_for_known_source FOR (known_source );
22208   WHERE
22209      wr1:
22210         SIZEOF(QUERY (ks <* known_source| (ks.name <> 'ISO 13584 library'))) = 0;
22211END_RULE;
22212
22213-- DIFF IN AP214
22214RULE restrict_part_occurrence FOR (product_definition );
22215   LOCAL
22216      part_occurrences : SET OF product_definition := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'part occurrence');
22217   END_LOCAL;
22218   WHERE
22219      WR1:
22220         SIZEOF(QUERY (pd <* part_occurrences| NOT (pd.name IN [ 'single instance', 'selected instance', 'quantified instance', 'specified instance' ]))) = 0;
22221      WR2:
22222         SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')| (pdr.name = 'definition usage'))) <> 1) AND (SIZEOF(QUERY (cd <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURATION_DESIGN.DESIGN')| (cd.name = 'occurrence usage definition') AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF(cd.configuration)))) <> 1))) = 0;
22223      WR3:
22224         SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (cd <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_USAGE' IN TYPEOF(cd)))) = 0) AND (SIZEOF(USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE')) = 0))) = 0;
22225      WR4:
22226         SIZEOF(QUERY (pd <* part_occurrences| (pd.name = 'selected instance') AND NOT valid_selected_instance_representation(pd))) = 0;
22227      WR5:
22228         SIZEOF(QUERY (pd <* part_occurrences| (pd.name = 'quantified instance') AND (SIZEOF(QUERY (ppd <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION.DEFINITION')| (ppd.name = 'occurrence quantity') AND (SIZEOF(QUERY (pdr <* USEDIN(ppd, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ((pdr.used_representation.name = 'quantity') AND (SIZEOF(pdr.used_representation.items) = 1)) AND (SIZEOF(QUERY (i <* pdr.used_representation.items| ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'quantity measure'))) = 1))) = 1))) = 0))) = 0;
22229      WR6:
22230         SIZEOF(QUERY (pd <* part_occurrences| (pd.name = 'specified instance') AND (SIZEOF(QUERY (pdor <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE')| ('STEP_MERGED_CAD_SCHEMA.' + 'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF(pdor.occurrence_usage)))) = 0))) = 0;
22231END_RULE;
22232
22233-- IN AP203e2/AP242
22234RULE restrict_part_occurrence_category FOR (product_definition );
22235   LOCAL
22236      part_occurrences : SET OF product_definition := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'part occurrence');
22237   END_LOCAL;
22238   WHERE
22239      WR1:
22240         SIZEOF(QUERY (pd <* part_occurrences| (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'raw material', 'tool' ]))) = 0))) = 0;
22241END_RULE;
22242
22243-- IN AP214
22244RULE restrict_process_product_association FOR (process_product_association );
22245   WHERE
22246      wr1:
22247         SIZEOF(QUERY (ppa <* process_product_association| NOT (ppa.name IN [ 'input', 'output', 'produced output' ]))) = 0;
22248      wr2:
22249         SIZEOF(QUERY (ppa <* process_product_association| NOT (ppa.name IN [ 'input', 'output' ]) OR (SIZEOF(QUERY (ar <* USEDIN(ppa.process, 'STEP_MERGED_CAD_SCHEMA.ACTION_RELATIONSHIP.RELATED_ACTION')| (ar.name = 'process operation occurrence'))) = 0))) = 0;
22250      wr3:
22251         SIZEOF(QUERY (ppa <* process_product_association| (ppa.name <> 'produced output') OR ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION' IN TYPEOF(ppa.defined_product)) AND (SIZEOF(QUERY (prpc <* USEDIN(ppa.defined_product\product_definition.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'tool', 'raw material' ]))) = 0))) = 0;
22252END_RULE;
22253
22254-- IN AP214
22255RULE restrict_product_categories_for_tool_part_relationship FOR (product_definition_relationship );
22256   WHERE
22257      wr1:
22258         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'tool part relationship') AND ((SIZEOF(QUERY (prpc <* USEDIN(pdr.relating_product_definition.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'tool'))) < 1) OR (SIZEOF(QUERY (prpc <* USEDIN(pdr.related_product_definition.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'part'))) < 1)))) = 0;
22259END_RULE;
22260
22261-- IN AP214
22262RULE restrict_product_category_for_product FOR (product );
22263   WHERE
22264      wr1:
22265         SIZEOF(QUERY (p <* product| (SIZEOF(QUERY (prpc <* USEDIN(p, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'raw material', 'tool', 'document', 'functionality', 'conceptual product', 'alternative solution', 'requirement', 'physically realized product', 'tool', 'raw material' ]))) = 0))) = 0;
22266      wr2:
22267         SIZEOF(QUERY (p <* product| (SIZEOF(QUERY (prpc <* USEDIN(p, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'raw material', 'tool', 'document', 'functionality', 'conceptual product', 'alternative solution', 'requirement', 'physically realized product' ]))) > 1))) = 0;
22268END_RULE;
22269
22270-- IN AP214
22271RULE restrict_product_definition_context_for_external_properties FOR (general_property_association, product_definition );
22272   WHERE
22273      wr1:
22274         SIZEOF(QUERY (pd <* product_definition| (SIZEOF(QUERY (propd <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (gpa <* USEDIN(propd, 'STEP_MERGED_CAD_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)))) > 0))) > 0) AND (SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'external') AND (pdca.role.name = 'external'))) = 0))) = 0;
22275END_RULE;
22276
22277-- IN AP214
22278RULE restrict_product_definition_context_for_product FOR (product_definition, product_related_product_category );
22279   WHERE
22280      wr1:
22281         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name IN [ 'part definition', 'part occurrence' ]) AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name IN [ 'part', 'raw material', 'tool' ]))) = 0))) = 0;
22282      wr2:
22283         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'functional definition') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'functionality'))) = 0))) = 0;
22284      wr3:
22285         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'conceptual definition') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'conceptual product'))) = 0))) = 0;
22286      wr4:
22287         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'alternative definition') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'alternative solution'))) = 0))) = 0;
22288      wr5:
22289         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'design constraint definition') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'requirement'))) = 0))) = 0;
22290      wr6:
22291         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'physical occurrence') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'physically realized product'))) = 0))) = 0;
22292      wr7:
22293         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name = 'physical document definition') AND (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'document'))) = 0))) = 0;
22294END_RULE;
22295
22296-- IN AP214
22297RULE restrict_product_definition_for_mating_tree FOR (product_definition );
22298   WHERE
22299      wr1:
22300         SIZEOF(QUERY (pd <* product_definition| (SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'mating definition'))) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| (pdr.name = 'mating membership'))) <> 2))) = 0;
22301      wr2:
22302         SIZEOF(QUERY (pd <* product_definition| (SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'mating definition'))) = 1) AND NOT ((1 <= SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| (pdr.name = 'mating membership') AND (pdr.related_product_definition.frame_of_reference.name = 'part occurrence')))) AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| (pdr.name = 'mating membership') AND (pdr.related_product_definition.frame_of_reference.name = 'part occurrence'))) <= 2)))) = 0;
22303      wr3:
22304         SIZEOF(QUERY (pd <* product_definition| (SIZEOF(QUERY (pdca <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'mating definition'))) = 1) AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| (pdr.name = 'mating membership') AND (SIZEOF(QUERY (pdca <* USEDIN(pdr.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.frame_of_reference.name = 'mating definition'))) = 1))) > 1))) = 0;
22305END_RULE;
22306
22307-- IN AP214
22308RULE restrict_product_definition_substitute FOR (product_definition_substitute );
22309   WHERE
22310      wr1:
22311         SIZEOF(QUERY (pds <* product_definition_substitute| (SIZEOF(USEDIN(pds, 'STEP_MERGED_CAD_SCHEMA.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) = 0))) = 0;
22312      wr2:
22313         SIZEOF(QUERY (pds <* product_definition_substitute| (pds.substitute_definition.frame_of_reference.name <> 'part occurrence'))) = 0;
22314      wr3:
22315         SIZEOF(QUERY (pds <* product_definition_substitute| ((('STEP_MERGED_CAD_SCHEMA.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pds.context_relationship)) AND (SIZEOF(USEDIN(pds.context_relationship, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE_USAGE')) = 0)) AND ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(pds.context_relationship))) AND (pds.context_relationship.related_product_definition.frame_of_reference.name <> 'part occurrence'))) = 0;
22316END_RULE;
22317
22318-- IN AP203e2/AP242
22319RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship );
22320   WHERE
22321      WR1:
22322         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'solution alternative definition') AND (NOT (pdr.relating_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition', 'conceptual definition' ]) OR (pdr.related_product_definition.frame_of_reference.name <> 'alternative definition')))) = 0;
22323END_RULE;
22324
22325-- IN AP203e2/AP242
22326RULE restrict_product_definitions_for_collection FOR (product_definition_relationship );
22327   WHERE
22328      WR1:
22329         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'collection membership') AND (((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part occurrence')) OR (SIZEOF(QUERY (pdca <* USEDIN(pdr.relating_product_definition, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.role.name = 'part definition type') AND (pdca.frame_of_reference.name = 'collection definition'))) = 0)))) = 0;
22330END_RULE;
22331
22332-- IN AP203e2/AP242
22333RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship );
22334   WHERE
22335      WR1:
22336         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'definition usage') AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part occurrence')))) = 0;
22337END_RULE;
22338
22339-- IN AP203e2/AP242
22340RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship );
22341   WHERE
22342      WR1:
22343         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'design constraint association') AND ((pdr.relating_product_definition.frame_of_reference.name <> 'design constraint definition') OR NOT (pdr.related_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition', 'conceptual definition' ])))) = 0;
22344END_RULE;
22345
22346-- IN AP203e2/AP242
22347RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship );
22348   WHERE
22349      WR1:
22350         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name IN [ 'geometrical relationship', 'definition replacement' ]) AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part definition')))) = 0;
22351END_RULE;
22352
22353-- IN AP214
22354RULE restrict_product_definitions_for_product_definition_relationship FOR (assembly_component_usage, product_definition_relationship );
22355   WHERE
22356      wr1:
22357         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'definition usage') AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part occurrence')))) = 0;
22358      wr2:
22359         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name IN [ 'geometrical relationship', 'definition replacement' ]) AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part definition')))) = 0;
22360      wr3:
22361         SIZEOF(QUERY (pdr <* product_definition_relationship| (('STEP_MERGED_CAD_SCHEMA.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part definition'))) AND ((pdr.relating_product_definition.frame_of_reference.name <> 'physical occurrence') OR (pdr.related_product_definition.frame_of_reference.name <> 'physical occurrence')))) = 0;
22362      wr4:
22363         SIZEOF(QUERY (pdr <* product_definition_relationship| (('STEP_MERGED_CAD_SCHEMA.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) AND (pdr.name = 'selected instance usage')) AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part definition')))) = 0;
22364      wr5:
22365         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'physical realization') AND ((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'physical occurrence')))) = 0;
22366      wr6:
22367         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'physical occurrence usage') AND ((NOT ('STEP_MERGED_CAD_SCHEMA.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) OR (pdr.relating_product_definition.frame_of_reference.name <> 'physical occurrence')) OR (pdr.related_product_definition.frame_of_reference.name <> 'physical occurrence')))) = 0;
22368      wr7:
22369         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'solution alternative definition') AND (NOT (pdr.relating_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition', 'conceptual definition' ]) OR (pdr.related_product_definition.frame_of_reference.name <> 'alternative definition')))) = 0;
22370      wr8:
22371         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'collection membership') AND (((pdr.relating_product_definition.frame_of_reference.name <> 'part definition') OR (pdr.related_product_definition.frame_of_reference.name <> 'part occurrence')) OR (SIZEOF(QUERY (pdca <* USEDIN(pdr.relating_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')| (pdca.role.name = 'part definition type') AND (pdca.frame_of_reference.name = 'collection definition'))) = 0)))) = 0;
22372      wr9:
22373         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'design constraint association') AND ((pdr.relating_product_definition.frame_of_reference.name <> 'design constraint definition') OR NOT (pdr.related_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition', 'conceptual definition' ])))) = 0;
22374      wr10:
22375         SIZEOF(QUERY (pdr <* product_definition_relationship| (pdr.name = 'final specification') AND ((NOT (pdr.relating_product_definition.name IN [ 'final', 'technical final', 'supplier final', 'technical supplier final' ]) OR (pdr.relating_product_definition.frame_of_reference.name <> 'alternative definition')) OR NOT (pdr.related_product_definition.frame_of_reference.name IN [ 'part definition', 'physical occurrence' ])))) = 0;
22376END_RULE;
22377
22378-- IN AP214
22379RULE restrict_properties_of_document_file FOR (document_file );
22380   WHERE
22381      wr1:
22382         SIZEOF(QUERY (df <* document_file| (SIZEOF(QUERY (pd <* USEDIN(df, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (pd.name = 'document property'))) > 1))) = 0;
22383      wr2:
22384         SIZEOF(QUERY (df <* document_file| (SIZEOF(QUERY (rt <* df.representation_types| ('STEP_MERGED_CAD_SCHEMA.' + 'DOCUMENT_REPRESENTATION_TYPE' IN TYPEOF(rt)) AND (rt.name IN [ 'digital', 'physical' ]))) = 0))) = 0;
22385END_RULE;
22386
22387-- IN AP214
22388RULE restrict_properties_of_document_representation FOR (product_definition );
22389   WHERE
22390      wr1:
22391         SIZEOF(QUERY (pd <* product_definition| (pd.frame_of_reference.name IN [ 'physical document definition', 'digital document definition', 'physical model occurrence' ]) AND (SIZEOF(QUERY (pd1 <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (pd1.name = 'document property'))) > 1))) = 0;
22392END_RULE;
22393
22394-- IN AP214
22395RULE restrict_representation_for_document_content_property FOR (representation, representation_item );
22396   WHERE
22397      wr1:
22398         SIZEOF(QUERY (r <* representation| (r.name = 'document content') AND ((SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
22399      wr2:
22400         SIZEOF(QUERY (ri <* representation_item| (SIZEOF(QUERY (r <* USEDIN(ri, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| (r.name = 'document content'))) > 0) AND NOT (ri.name IN [ 'detail level', 'geometry type', 'real world scale' ]))) = 0;
22401      wr3:
22402         SIZEOF(QUERY (r <* representation| (r.name = 'document content') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'detail level') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22403      wr4:
22404         SIZEOF(QUERY (r <* representation| (r.name = 'document content') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'geometry type') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22405      wr5:
22406         SIZEOF(QUERY (r <* representation| (r.name = 'document content') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'real world scale') AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_REPRESENTATION_ITEM') ] * TYPEOF(i)) = 1))) > 1))) = 0;
22407END_RULE;
22408
22409-- IN AP214
22410RULE restrict_representation_for_document_creation_property FOR (representation, representation_item );
22411   WHERE
22412      wr1:
22413         SIZEOF(QUERY (r <* representation| (r.name = 'document creation') AND ((SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
22414      wr2:
22415         SIZEOF(QUERY (ri <* representation_item| (SIZEOF(QUERY (r <* USEDIN(ri, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| (r.name = 'document creation'))) > 0) AND NOT (ri.name IN [ 'creating interface', 'creating system', 'operating system' ]))) = 0;
22416      wr3:
22417         SIZEOF(QUERY (r <* representation| (r.name = 'document creation') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'creating interface') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22418      wr4:
22419         SIZEOF(QUERY (r <* representation| (r.name = 'document creation') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'creating system') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) <> 1))) = 0;
22420      wr5:
22421         SIZEOF(QUERY (r <* representation| (r.name = 'document creation') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'operating system') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22422END_RULE;
22423
22424-- IN AP214
22425RULE restrict_representation_for_document_format_property FOR (representation, representation_item );
22426   WHERE
22427      wr1:
22428         SIZEOF(QUERY (r <* representation| (r.name = 'document format') AND ((SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
22429      wr2:
22430         SIZEOF(QUERY (ri <* representation_item| (SIZEOF(QUERY (r <* USEDIN(ri, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| (r.name = 'document format'))) > 0) AND NOT (ri.name IN [ 'character code', 'data format', 'size format' ]))) = 0;
22431      wr3:
22432         SIZEOF(QUERY (r <* representation| (r.name = 'document format') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'character code') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22433      wr4:
22434         SIZEOF(QUERY (r <* representation| (r.name = 'document format') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'data format') AND ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 1))) = 0;
22435      wr5:
22436         SIZEOF(QUERY (r <* representation| (r.name = 'document format') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'size format') AND ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_EXTENT' IN TYPEOF(i)))) > 1))) = 0;
22437END_RULE;
22438
22439-- IN AP214
22440RULE restrict_representation_for_document_properties FOR (property_definition, representation, representation_context );
22441   WHERE
22442      wr1:
22443         SIZEOF(QUERY (pd <* property_definition| (pd.name = 'document property') AND (SIZEOF(QUERY (pdr <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (pdr.used_representation.name IN [ 'document content', 'document creation', 'document format', 'document size' ]))) > 0))) = 0;
22444      wr2:
22445         SIZEOF(QUERY (r <* representation| (r.name IN [ 'document content', 'document creation', 'document format', 'document size' ]) AND (SIZEOF(QUERY (pdr <* USEDIN(r, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')| ('STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION' IN TYPEOF(pdr.definition)) AND (pdr.definition.name = 'document property'))) = 0))) = 0;
22446      wr3:
22447         SIZEOF(QUERY (r <* representation| (r.name IN [ 'document content', 'document creation', 'document format', 'document size' ]) AND (r.context_of_items.context_type <> 'document parameters'))) = 0;
22448      wr4:
22449         SIZEOF(QUERY (rc <* representation_context| (rc.context_type = 'document parameters') AND (SIZEOF(QUERY (r <* USEDIN(rc, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.CONTEXT_OF_ITEMS')| NOT (r.name IN [ 'document content', 'document creation', 'document format', 'document size' ]))) > 0))) = 0;
22450END_RULE;
22451
22452-- IN AP214
22453RULE restrict_representation_for_document_size_property FOR (representation, representation_item );
22454   WHERE
22455      wr1:
22456         SIZEOF(QUERY (r <* representation| (r.name = 'document size') AND ((SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 2)))) = 0;
22457      wr2:
22458         SIZEOF(QUERY (ri <* representation_item| (SIZEOF(QUERY (r <* USEDIN(ri, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| (r.name = 'document size'))) > 0) AND NOT (ri.name IN [ 'file size', 'page count' ]))) = 0;
22459      wr3:
22460         SIZEOF(QUERY (r <* representation| (r.name = 'document size') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'file size') AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_REPRESENTATION_ITEM') ] * TYPEOF(i)) = 1))) > 1))) = 0;
22461      wr4:
22462         SIZEOF(QUERY (r <* representation| (r.name = 'document size') AND (SIZEOF(QUERY (i <* r.items| (i.name = 'page count') AND (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_REPRESENTATION_ITEM') ] * TYPEOF(i)) = 1))) > 1))) = 0;
22463END_RULE;
22464
22465RULE restrict_representation_for_surface_condition FOR (property_definition_representation );
22466   WHERE
22467      WR1:
22468         SIZEOF(QUERY (pdr <* property_definition_representation| NOT surface_condition_correlation(pdr.definition, pdr.used_representation))) = 0;
22469END_RULE;
22470
22471-- IN AP214
22472RULE restrict_representation_item_for_hybrid_geometric_model_3d FOR (shape_representation );
22473   WHERE
22474      wr1:
22475         SIZEOF(QUERY (sr <* shape_representation| (sr.name = 'hybrid 3d shape representation') AND (SIZEOF(QUERY (i <* sr.items| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 0))) = 0;
22476END_RULE;
22477
22478-- DIFF IN AP214
22479RULE restrict_treatment_result FOR (representation );
22480   LOCAL
22481      treatment_results : SET OF representation := [];
22482   END_LOCAL;
22483      treatment_results := QUERY (r <* representation| r.name = 'treatment result');
22484   WHERE
22485      WR1:
22486         (SIZEOF(QUERY (r <* treatment_results| (SIZEOF(r.items) > 2))) = 0) AND (SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i <* r.items| NOT ('STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) > 0))) = 0);
22487      WR2:
22488         SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i <* r.items| (i.name = 'result'))) = 0))) = 0;
22489      WR3:
22490         SIZEOF(QUERY (r <* treatment_results| (SIZEOF(QUERY (i <* r.items| (i.name = 'purpose'))) > 1))) = 0;
22491END_RULE;
22492
22493-- IN AP214
22494RULE restrict_version_assignment_for_action FOR (action );
22495   WHERE
22496      wr1:
22497         SIZEOF(QUERY (ent <* action| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22498END_RULE;
22499
22500-- IN AP214
22501RULE restrict_version_assignment_for_action_directive FOR (action_directive );
22502   WHERE
22503      wr1:
22504         SIZEOF(QUERY (ent <* action_directive| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22505END_RULE;
22506
22507-- IN AP214
22508RULE restrict_version_assignment_for_action_method FOR (action_method );
22509   WHERE
22510      wr1:
22511         SIZEOF(QUERY (ent <* action_method| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22512END_RULE;
22513
22514-- IN AP214
22515RULE restrict_version_assignment_for_applied_identification_assignment FOR (applied_identification_assignment );
22516   WHERE
22517      wr1:
22518         SIZEOF(QUERY (ent <* applied_identification_assignment| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22519END_RULE;
22520
22521-- IN AP214
22522RULE restrict_version_assignment_for_class FOR (class );
22523   WHERE
22524      wr1:
22525         SIZEOF(QUERY (ent <* class| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22526END_RULE;
22527
22528-- IN AP214
22529RULE restrict_version_assignment_for_configuration_item FOR (configuration_item );
22530   WHERE
22531      wr1:
22532         SIZEOF(QUERY (ent <* configuration_item| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22533END_RULE;
22534
22535-- IN AP214
22536RULE restrict_version_assignment_for_document_file FOR (document_file );
22537   WHERE
22538      wr1:
22539         SIZEOF(QUERY (ent <* document_file| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22540END_RULE;
22541
22542-- IN AP214
22543RULE restrict_version_assignment_for_draughting_model FOR (draughting_model );
22544   WHERE
22545      wr1:
22546         SIZEOF(QUERY (ent <* draughting_model| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22547END_RULE;
22548
22549-- IN AP214
22550RULE restrict_version_assignment_for_effectivity FOR (effectivity );
22551   WHERE
22552      wr1:
22553         SIZEOF(QUERY (ent <* effectivity| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22554END_RULE;
22555
22556-- IN AP214
22557RULE restrict_version_assignment_for_general_property FOR (general_property );
22558   WHERE
22559      wr1:
22560         SIZEOF(QUERY (ent <* general_property| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22561END_RULE;
22562
22563-- IN AP214
22564RULE restrict_version_assignment_for_mechanical_design_geometric_presentation_representation FOR (mechanical_design_geometric_presentation_representation );
22565   WHERE
22566      wr1:
22567         SIZEOF(QUERY (ent <* mechanical_design_geometric_presentation_representation| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22568END_RULE;
22569
22570-- IN AP214
22571RULE restrict_version_assignment_for_presentation_area FOR (presentation_area );
22572   WHERE
22573      wr1:
22574         SIZEOF(QUERY (ent <* presentation_area| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22575END_RULE;
22576
22577-- IN AP214
22578RULE restrict_version_assignment_for_product_concept FOR (product_concept );
22579   WHERE
22580      wr1:
22581         SIZEOF(QUERY (ent <* product_concept| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22582END_RULE;
22583
22584-- IN AP214
22585RULE restrict_version_assignment_for_product_concept_feature FOR (product_concept_feature );
22586   WHERE
22587      wr1:
22588         SIZEOF(QUERY (ent <* product_concept_feature| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22589END_RULE;
22590
22591-- IN AP214
22592RULE restrict_version_assignment_for_shape_representation FOR (shape_representation );
22593   WHERE
22594      wr1:
22595         SIZEOF(QUERY (ent <* shape_representation| (SIZEOF(QUERY (ia <* USEDIN(ent, 'STEP_MERGED_CAD_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS')| (ia.role.name = 'version'))) > 1))) = 0;
22596END_RULE;
22597
22598-- IN AP214
22599RULE restrict_viewing_plane_usage FOR (geometric_tolerance );
22600   WHERE
22601      wr1:
22602         SIZEOF(QUERY (gt <* geometric_tolerance| (SIZEOF(QUERY (sar <* USEDIN(gt.toleranced_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name = 'affected plane association'))) > 1))) = 0;
22603      wr2:
22604         SIZEOF(QUERY (gt <* geometric_tolerance| (SIZEOF(QUERY (sar <* USEDIN(gt.toleranced_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name = 'affected plane association') AND NOT (SIZEOF([ ('STEP_MERGED_CAD_SCHEMA.' + 'LINE_PROFILE_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PARALLELISM_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PERPENDICULARITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'POSITION_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'STRAIGHTNESS_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SYMMETRY_TOLERANCE') ] * TYPEOF(gt)) <> 1))) > 0))) = 0;
22605END_RULE;
22606
22607-- IN AP214
22608RULE restrict_zone_boundary FOR (tolerance_zone_definition );
22609   WHERE
22610      wr1:
22611         SIZEOF(QUERY (tzd <* tolerance_zone_definition| (SIZEOF(tzd.boundaries) > 2))) = 0;
22612END_RULE;
22613
22614-- IN AP214
22615RULE retention_requires_retention_assignment FOR (retention );
22616   WHERE
22617      wr1:
22618         SIZEOF(QUERY (r <* retention| (SIZEOF(QUERY (aa <* USEDIN(r, 'STEP_MERGED_CAD_SCHEMA.ACTION_ASSIGNMENT.ASSIGNED_ACTION')| ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND (aa.role.name = 'retention'))) = 0))) = 0;
22619END_RULE;
22620
22621-- IN AP214
22622RULE security_classification_requires_security_classification_assignment FOR (security_classification );
22623   WHERE
22624      wr1:
22625         SIZEOF(QUERY (sc <* security_classification| (SIZEOF(USEDIN(sc, 'STEP_MERGED_CAD_SCHEMA.SECURITY_CLASSIFICATION_ASSIGNMENT.ASSIGNED_SECURITY_CLASSIFICATION')) = 0))) = 0;
22626END_RULE;
22627
22628-- DIFF IN AP214
22629RULE selected_instance_usage_requires_representation FOR (assembly_component_usage );
22630   LOCAL
22631      selected_instance_usages : SET OF assembly_component_usage := QUERY (acr <* assembly_component_usage| acr.name = 'selected instance usage');
22632   END_LOCAL;
22633   WHERE
22634      WR1:
22635         SIZEOF(QUERY (acr <* selected_instance_usages| NOT valid_selected_instance_representation(acr))) = 0;
22636END_RULE;
22637
22638-- IN AP214
22639RULE sheets_belong_to_one_drawing FOR (drawing_sheet_revision );
22640   WHERE
22641      wr1:
22642         SIZEOF(QUERY (dsr <* drawing_sheet_revision| (SIZEOF(QUERY (dsru <* USEDIN(dsr, 'STEP_MERGED_CAD_SCHEMA.AREA_IN_SET.AREA')| ('STEP_MERGED_CAD_SCHEMA.' + 'DRAWING_SHEET_REVISION_USAGE' IN TYPEOF(dsru)))) <> 1))) = 0;
22643END_RULE;
22644
22645-- IN AP203e2/AP242
22646RULE solution_definition_requires_solution_category FOR (product_definition );
22647   LOCAL
22648      solution_definitions : SET OF product_definition := [];
22649   END_LOCAL;
22650      solution_definitions := QUERY (pd <* product_definition| pd.frame_of_reference.name = 'alternative definition');
22651   WHERE
22652      WR1:
22653         SIZEOF(QUERY (pd <* solution_definitions| (SIZEOF(QUERY (prpc <* USEDIN(pd.formation.of_product, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')| (prpc.name = 'alternative solution'))) = 0))) = 0;
22654END_RULE;
22655
22656-- IN AP203e2
22657RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category );
22658   LOCAL
22659      i : INTEGER;
22660      j : INTEGER;
22661      k : INTEGER;
22662      dkuhr : LOGICAL;
22663      nmfuo : INTEGER;
22664      nprpc : INTEGER;
22665      rp : product;
22666   END_LOCAL;
22667      dkuhr := TRUE;
22668      REPEAT i := LOINDEX(percentage_ply_definition) TO HIINDEX(percentage_ply_definition);
22669         nmfuo := 0;
22670         REPEAT j := LOINDEX(make_from_usage_option) TO HIINDEX(make_from_usage_option);
22671            IF percentage_ply_definition[i] = make_from_usage_option[j].relating_product_definition THEN
22672               rp := make_from_usage_option[j].related_product_definition.formation.of_product;
22673               nprpc := 0;
22674               REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
22675                  IF (rp IN product_related_product_category[k].products) AND (product_related_product_category[k].name IN [ 'anisotropic material', 'isotropic material', 'stock core', 'filament assembly', 'discontinuous fiber assembly' ]) THEN
22676                     nprpc := nprpc + 1;
22677                  END_IF;
22678               END_REPEAT;
22679               IF nprpc = 1 THEN
22680                  nmfuo := nmfuo + 1;
22681               ELSE
22682                  dkuhr := FALSE;
22683                  ESCAPE;
22684               END_IF;
22685            END_IF;
22686         END_REPEAT;
22687         IF dkuhr = FALSE THEN
22688            ESCAPE;
22689         END_IF;
22690         IF nmfuo = 0 THEN
22691            dkuhr := FALSE;
22692            ESCAPE;
22693         END_IF;
22694      END_REPEAT;
22695   WHERE
22696      WR1:
22697         dkuhr;
22698END_RULE;
22699
22700RULE styled_curve FOR (styled_item );
22701   WHERE
22702      WR1:
22703         SIZEOF(QUERY (si <* styled_item| ('STEP_MERGED_CAD_SCHEMA.CURVE' IN TYPEOF(si.item)) AND (SIZEOF(QUERY (psa <* si.styles| (SIZEOF(QUERY (cs <* psa.styles| ('STEP_MERGED_CAD_SCHEMA.CURVE_STYLE' IN TYPEOF(cs)))) > 0))) <> 1))) = 0;
22704END_RULE;
22705
22706-- IN AP214
22707RULE subtype_exclusiveness_action FOR (action );
22708   WHERE
22709      wr1:
22710         SIZEOF(QUERY (a <* action| NOT type_check_function(a, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ELEMENT_DELIVERY'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXECUTED_ACTION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PROCESS_PLAN'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_PROCESS'), ('STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_PROCESS'), ('STEP_MERGED_CAD_SCHEMA.' + 'RETENTION') ], 3))) = 0;
22711END_RULE;
22712
22713-- IN AP214
22714RULE subtype_exclusiveness_characterized_object FOR (characterized_object );
22715   WHERE
22716      wr1:
22717         SIZEOF(QUERY (co <* characterized_object| NOT type_check_function(co, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CHARACTERIZED_CLASS'), ('STEP_MERGED_CAD_SCHEMA.' + 'DOCUMENT_FILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_COMPONENT_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CLASS'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_IDENTIFICATION') ], 3))) = 0;
22718END_RULE;
22719
22720-- IN AP214
22721RULE subtype_exclusiveness_classification_assignment FOR (classification_assignment );
22722   WHERE
22723      wr1:
22724         SIZEOF(QUERY (ca <* classification_assignment| NOT type_check_function(ca, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_CLASSIFICATION_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'LANGUAGE_ASSIGNMENT') ], 3))) = 0;
22725END_RULE;
22726
22727-- IN AP214
22728RULE subtype_exclusiveness_colour FOR (colour );
22729   WHERE
22730      wr1:
22731         SIZEOF(QUERY (c <* colour| NOT type_check_function(c, [ ('STEP_MERGED_CAD_SCHEMA.' + 'COLOUR_SPECIFICATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_COLOUR') ], 3))) = 0;
22732END_RULE;
22733
22734-- IN AP214
22735RULE subtype_exclusiveness_compound_representation_item FOR (compound_representation_item );
22736   WHERE
22737      wr1:
22738         SIZEOF(QUERY (cri <* compound_representation_item| NOT type_check_function(cri, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DEFAULT_TOLERANCE_TABLE_CELL'), ('STEP_MERGED_CAD_SCHEMA.' + 'VALUE_RANGE') ], 3))) = 0;
22739END_RULE;
22740
22741-- IN AP214
22742RULE subtype_exclusiveness_document_reference FOR (document_reference );
22743   WHERE
22744      wr1:
22745         SIZEOF(QUERY (dr <* document_reference| NOT type_check_function(dr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_DOCUMENT_REFERENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SPECIFICATION_REFERENCE') ], 3))) = 0;
22746END_RULE;
22747
22748-- IN AP214
22749RULE subtype_exclusiveness_effectivity FOR (effectivity );
22750   WHERE
22751      wr1:
22752         SIZEOF(QUERY (e <* effectivity| NOT type_check_function(e, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_EFFECTIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'TIME_INTERVAL_BASED_EFFECTIVITY') ], 3))) = 0;
22753END_RULE;
22754
22755-- IN AP214
22756RULE subtype_exclusiveness_effectivity_assignment FOR (effectivity_assignment );
22757   WHERE
22758      wr1:
22759         SIZEOF(QUERY (ea <* effectivity_assignment| NOT type_check_function(ea, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_EFFECTIVITY_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_INEFFECTIVITY_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURED_EFFECTIVITY_ASSIGNMENT') ], 3))) = 0;
22760END_RULE;
22761
22762-- IN AP214
22763RULE subtype_exclusiveness_effectivity_context_assignment FOR (effectivity_context_assignment );
22764   WHERE
22765      wr1:
22766         SIZEOF(QUERY (eca <* effectivity_context_assignment| NOT type_check_function(eca, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS_USAGE_EFFECTIVITY_CONTEXT_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT') ], 3))) = 0;
22767END_RULE;
22768
22769-- IN AP214
22770RULE subtype_exclusiveness_externally_defined_item FOR (externally_defined_item );
22771   WHERE
22772      wr1:
22773         SIZEOF(QUERY (edi <* externally_defined_item| NOT type_check_function(edi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CHARACTER_GLYPH'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CLASS'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CURVE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_HATCH_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_TEXT_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_TILE_STYLE') ], 3))) = 0;
22774END_RULE;
22775
22776-- IN AP214
22777RULE subtype_exclusiveness_feature_component_relationship FOR (feature_component_relationship );
22778   WHERE
22779      wr1:
22780         SIZEOF(QUERY (fcr <* feature_component_relationship| NOT type_check_function(fcr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PATTERN_OFFSET_MEMBERSHIP'), ('STEP_MERGED_CAD_SCHEMA.' + 'PATTERN_OMIT_MEMBERSHIP') ], 3))) = 0;
22781END_RULE;
22782
22783-- IN AP214
22784RULE subtype_exclusiveness_feature_definition FOR (feature_definition );
22785   WHERE
22786      wr1:
22787         SIZEOF(QUERY (fd <* feature_definition| NOT type_check_function(fd, [ ('STEP_MERGED_CAD_SCHEMA.' + 'BARRING_HOLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'BEAD'), ('STEP_MERGED_CAD_SCHEMA.' + 'BOSS'), ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOUND_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_IN_PANEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'HOLE_IN_PANEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'JOGGLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'LOCATOR'), ('STEP_MERGED_CAD_SCHEMA.' + 'POCKET'), ('STEP_MERGED_CAD_SCHEMA.' + 'REPLICATE_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'RIB'), ('STEP_MERGED_CAD_SCHEMA.' + 'ROUND_HOLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SLOT'), ('STEP_MERGED_CAD_SCHEMA.' + 'THREAD') ], 3))) = 0;
22788END_RULE;
22789
22790-- IN AP214
22791RULE subtype_exclusiveness_founded_item FOR (founded_item );
22792   WHERE
22793      wr1:
22794         SIZEOF(QUERY (fi <* founded_item| NOT type_check_function(fi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOSITE_CURVE_SEGMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_PATCH'), ('STEP_MERGED_CAD_SCHEMA.' + 'VIEW_VOLUME') ], 3))) = 0;
22795END_RULE;
22796
22797RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance );
22798   WHERE
22799      WR1:
22800         SIZEOF(QUERY (gt <* geometric_tolerance| NOT type_check_function(gt, [ 'STEP_MERGED_CAD_SCHEMA.ANGULARITY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_RUNOUT_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.COAXIALITY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.CONCENTRICITY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.CYLINDRICITY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.FLATNESS_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.LINE_PROFILE_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.PARALLELISM_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.PERPENDICULARITY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.POSITION_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.ROUNDNESS_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.STRAIGHTNESS_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.SURFACE_PROFILE_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.SYMMETRY_TOLERANCE', 'STEP_MERGED_CAD_SCHEMA.TOTAL_RUNOUT_TOLERANCE' ], 2))) = 0;
22801END_RULE;
22802
22803-- IN AP214
22804RULE subtype_exclusiveness_group FOR (group );
22805   WHERE
22806      wr1:
22807         SIZEOF(QUERY (g <* group| NOT type_check_function(g, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS'), ('STEP_MERGED_CAD_SCHEMA.' + 'CLASS_SYSTEM'), ('STEP_MERGED_CAD_SCHEMA.' + 'LANGUAGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY'), ('STEP_MERGED_CAD_SCHEMA.' + 'REP_ITEM_GROUP') ], 3))) = 0;
22808END_RULE;
22809
22810-- IN AP214
22811RULE subtype_exclusiveness_group_assignment FOR (group_assignment );
22812   WHERE
22813      wr1:
22814         SIZEOF(QUERY (ga <* group_assignment| NOT type_check_function(ga, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_GROUP_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE') ], 3))) = 0;
22815END_RULE;
22816
22817-- IN AP214
22818RULE subtype_exclusiveness_identification_assignment FOR (identification_assignment );
22819   WHERE
22820      wr1:
22821         SIZEOF(QUERY (ia <* identification_assignment| NOT type_check_function(ia, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_IDENTIFICATION_ASSIGNMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNAL_IDENTIFICATION_ASSIGNMENT') ], 3))) = 0;
22822END_RULE;
22823
22824-- IN AP214
22825RULE subtype_exclusiveness_mapped_item FOR (mapped_item );
22826   WHERE
22827      wr1:
22828         SIZEOF(QUERY (mi <* mapped_item| NOT type_check_function(mi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT_CHARACTER'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_TEXT_ASSOCIATIVITY') ], 3))) = 0;
22829END_RULE;
22830
22831-- IN AP214
22832RULE subtype_exclusiveness_pre_defined_item FOR (pre_defined_item );
22833   WHERE
22834      wr1:
22835         SIZEOF(QUERY (pdi <* pre_defined_item| NOT type_check_function(pdi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_COLOUR'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_CURVE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_MARKER'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_PRESENTATION_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_TEXT_FONT') ], 3))) = 0;
22836END_RULE;
22837
22838-- IN AP214
22839RULE subtype_exclusiveness_pre_defined_symbol FOR (pre_defined_symbol );
22840   WHERE
22841      wr1:
22842         SIZEOF(QUERY (pds <* pre_defined_symbol| NOT type_check_function(pds, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_DIMENSION_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_GEOMETRICAL_TOLERANCE_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_POINT_MARKER_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_SURFACE_CONDITION_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_TERMINATOR_SYMBOL') ], 3))) = 0;
22843END_RULE;
22844
22845-- IN AP214
22846RULE subtype_exclusiveness_presentation_area FOR (presentation_area );
22847   WHERE
22848      wr1:
22849         SIZEOF(QUERY (pa <* presentation_area| NOT type_check_function(pa, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAWING_SHEET_REVISION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_AREA') ], 3))) = 0;
22850END_RULE;
22851
22852-- IN AP214
22853RULE subtype_exclusiveness_presentation_representation FOR (presentation_representation );
22854   WHERE
22855      wr1:
22856         SIZEOF(QUERY (pr <* presentation_representation| NOT type_check_function(pr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_AREA'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_VIEW') ], 3))) = 0;
22857END_RULE;
22858
22859-- IN AP214
22860RULE subtype_exclusiveness_property_definition FOR (property_definition );
22861   WHERE
22862      wr1:
22863         SIZEOF(QUERY (pd <* property_definition| NOT type_check_function(pd, [ ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_PROPERTY_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MATERIAL_PROPERTY'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_SHAPE') ], 3))) = 0;
22864END_RULE;
22865
22866-- IN AP214
22867RULE subtype_exclusiveness_property_definition_representation FOR (property_definition_representation );
22868   WHERE
22869      wr1:
22870         SIZEOF(QUERY (pdr <* property_definition_representation| NOT type_check_function(pdr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_PROPERTY_REPRESENTATION_RELATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MATERIAL_PROPERTY_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DEFINITION_REPRESENTATION') ], 3))) = 0;
22871END_RULE;
22872
22873-- IN AP214
22874RULE subtype_exclusiveness_replicate_feature FOR (replicate_feature );
22875   WHERE
22876      wr1:
22877         SIZEOF(QUERY (rf <* replicate_feature| NOT type_check_function(rf, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CIRCULAR_PATTERN'), ('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_PATTERN'), ('STEP_MERGED_CAD_SCHEMA.' + 'MODIFIED_PATTERN'), ('STEP_MERGED_CAD_SCHEMA.' + 'RECTANGULAR_PATTERN') ], 3))) = 0;
22878END_RULE;
22879
22880-- IN AP214
22881RULE subtype_exclusiveness_representation FOR (representation );
22882   WHERE
22883      wr1:
22884         SIZEOF(QUERY (r <* representation| NOT type_check_function(r, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CONSTRUCTIVE_GEOMETRY_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'CONTACT_RATIO_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'DEFAULT_TOLERANCE_TABLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DEFINITIONAL_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_MODEL'), ('STEP_MERGED_CAD_SCHEMA.' + 'FOUNDED_KINEMATIC_PATH'), ('STEP_MERGED_CAD_SCHEMA.' + 'HARDNESS_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_GROUND_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_LINK_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MOMENTS_OF_INERTIA_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRESENTATION_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_TEXTURE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'SYMBOL_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'TACTILE_APPEARANCE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'TEXT_STRING_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'VISUAL_APPEARANCE_REPRESENTATION') ], 3))) = 0;
22885END_RULE;
22886
22887RULE subtype_exclusiveness_representation_item FOR (representation_item );
22888   WHERE
22889      WR1:
22890         SIZEOF(QUERY (cri <* representation_item| NOT type_check_function(cri, [ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.VALUE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.COMPOUND_REPRESENTATION_ITEM' ], 3))) = 0;
22891END_RULE;
22892
22893-- IN AP214
22894RULE subtype_exclusiveness_representation_map FOR (representation_map );
22895   WHERE
22896      wr1:
22897         SIZEOF(QUERY (rm <* representation_map| NOT type_check_function(rm, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_USAGE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SYMBOL_REPRESENTATION_MAP') ], 3))) = 0;
22898END_RULE;
22899
22900-- IN AP214
22901RULE subtype_exclusiveness_representation_relationship FOR (representation_relationship );
22902   WHERE
22903      wr1:
22904         SIZEOF(QUERY (rr <* representation_relationship| NOT type_check_function(rr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP'), ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_LINK_REPRESENTATION_ASSOCIATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MOTION_LINK_RELATIONSHIP') ], 3))) = 0;
22905END_RULE;
22906
22907-- IN AP214
22908RULE subtype_exclusiveness_representation_relationship_with_transformation FOR (representation_relationship_with_transformation );
22909   WHERE
22910      wr1:
22911         SIZEOF(QUERY (rrwt <* representation_relationship_with_transformation| NOT type_check_function(rrwt, [ ('STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION_ASSOCIATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MECHANISM_BASE_PLACEMENT') ], 3))) = 0;
22912END_RULE;
22913
22914-- IN AP214
22915RULE subtype_exclusiveness_shape_aspect FOR (shape_aspect );
22916   WHERE
22917      wr1:
22918         SIZEOF(QUERY (sa <* shape_aspect| NOT type_check_function(sa, [ ('STEP_MERGED_CAD_SCHEMA.' + 'APPLIED_AREA'), ('STEP_MERGED_CAD_SCHEMA.' + 'BEAD_END'), ('STEP_MERGED_CAD_SCHEMA.' + 'BOSS_TOP'), ('STEP_MERGED_CAD_SCHEMA.' + 'CHAMFER_OFFSET'), ('STEP_MERGED_CAD_SCHEMA.' + 'CIRCULAR_CLOSED_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CLOSED_PATH_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DIRECTED_ANGLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'HOLE_BOTTOM'), ('STEP_MERGED_CAD_SCHEMA.' + 'INSTANCED_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'JOGGLE_TERMINATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'NGON_CLOSED_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'OPEN_PATH_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PARTIAL_CIRCULAR_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PATH_FEATURE_COMPONENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PLACED_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'POCKET_BOTTOM'), ('STEP_MERGED_CAD_SCHEMA.' + 'RECTANGULAR_CLOSED_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ROUNDED_U_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SLOT_END'), ('STEP_MERGED_CAD_SCHEMA.' + 'SQUARE_U_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'TAPER'), ('STEP_MERGED_CAD_SCHEMA.' + 'TEE_PROFILE'), ('STEP_MERGED_CAD_SCHEMA.' + 'TOLERANCE_ZONE'), ('STEP_MERGED_CAD_SCHEMA.' + 'TRANSITION_FEATURE'), ('STEP_MERGED_CAD_SCHEMA.' + 'VEE_PROFILE') ], 3))) = 0;
22919END_RULE;
22920
22921-- IN AP214
22922RULE subtype_exclusiveness_shape_aspect_relationship FOR (shape_aspect_relationship );
22923   WHERE
22924      wr1:
22925         SIZEOF(QUERY (sar <* shape_aspect_relationship| NOT type_check_function(sar, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSIONAL_LOCATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'FEATURE_COMPONENT_RELATIONSHIP'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_ASSOCIATIVITY'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_TRANSITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DEFINING_RELATIONSHIP') ], 3))) = 0;
22926END_RULE;
22927
22928-- IN AP214
22929RULE subtype_exclusiveness_shape_representation_feature_geometry FOR (shape_representation );
22930   WHERE
22931      wr1:
22932         SIZEOF(QUERY (sr <* shape_representation| NOT type_check_function(sr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DIRECTION_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'FACE_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'LOCATION_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PATH_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'PLANAR_SHAPE_REPRESENTATION') ], 3))) = 0;
22933END_RULE;
22934
22935-- IN AP214
22936RULE subtype_exclusiveness_shape_representation_geometry FOR (shape_representation );
22937   WHERE
22938      wr1:
22939         SIZEOF(QUERY (sr <* shape_representation| NOT type_check_function(sr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ADVANCED_BREP_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOUND_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'CSG_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'FACETED_BREP_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'POINT_PLACEMENT_SHAPE_REPRESENTATION') ], 3))) = 0;
22940END_RULE;
22941
22942-- IN AP214
22943RULE subtype_exclusiveness_symbol_representation FOR (symbol_representation );
22944   WHERE
22945      wr1:
22946         SIZEOF(QUERY (sr <* symbol_representation| NOT type_check_function(sr, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CHARACTER_GLYPH_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_SYMBOL_REPRESENTATION') ], 3))) = 0;
22947END_RULE;
22948
22949-- IN AP214
22950RULE subtype_exclusiveness_transition_feature FOR (transition_feature );
22951   WHERE
22952      wr1:
22953         SIZEOF(QUERY (tf <* transition_feature| NOT type_check_function(tf, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CHAMFER'), ('STEP_MERGED_CAD_SCHEMA.' + 'EDGE_ROUND'), ('STEP_MERGED_CAD_SCHEMA.' + 'FILLET') ], 3))) = 0;
22954END_RULE;
22955
22956-- IN AP214
22957RULE subtype_mandatory_address FOR (address );
22958   WHERE
22959      wr1:
22960         SIZEOF(QUERY (a <* address| NOT type_check_function(a, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ORGANIZATIONAL_ADDRESS'), ('STEP_MERGED_CAD_SCHEMA.' + 'PERSONAL_ADDRESS') ], 0))) = 0;
22961END_RULE;
22962
22963-- IN AP214
22964RULE subtype_mandatory_annotation_occurrence FOR (annotation_occurrence );
22965   WHERE
22966      wr1:
22967         SIZEOF(QUERY (ao <* annotation_occurrence| NOT type_check_function(ao, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_CURVE_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_FILL_AREA_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_SYMBOL_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ANNOTATION_TEXT_OCCURRENCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE') ], 0))) = 0;
22968END_RULE;
22969
22970-- IN AP214
22971RULE subtype_mandatory_camera_image FOR (camera_image );
22972   WHERE
22973      wr1:
22974         SIZEOF(QUERY (ci <* camera_image| NOT type_check_function(ci, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_2D_WITH_SCALE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_IMAGE_3D_WITH_SCALE') ], 0))) = 0;
22975END_RULE;
22976
22977-- IN AP214
22978RULE subtype_mandatory_camera_model FOR (camera_model );
22979   WHERE
22980      wr1:
22981         SIZEOF(QUERY (cm <* camera_model| NOT type_check_function(cm, [ ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_MODEL_D2'), ('STEP_MERGED_CAD_SCHEMA.' + 'CAMERA_MODEL_D3') ], 0))) = 0;
22982END_RULE;
22983
22984-- IN AP214
22985RULE subtype_mandatory_colour_specification FOR (colour_specification );
22986   WHERE
22987      wr1:
22988         SIZEOF(QUERY (cs <* colour_specification| NOT type_check_function(cs, [ ('STEP_MERGED_CAD_SCHEMA.' + 'COLOUR_RGB') ], 0))) = 0;
22989END_RULE;
22990
22991-- IN AP214
22992RULE subtype_mandatory_configurable_item FOR (configurable_item );
22993   WHERE
22994      wr1:
22995         SIZEOF(QUERY (ci <* configurable_item| NOT type_check_function(ci, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_SPECIFICATION') ], 0))) = 0;
22996END_RULE;
22997
22998-- IN AP214
22999RULE subtype_mandatory_document_product_association FOR (document_product_association );
23000   WHERE
23001      wr1:
23002         SIZEOF(QUERY (dpa <* document_product_association| NOT type_check_function(dpa, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DOCUMENT_PRODUCT_EQUIVALENCE') ], 0))) = 0;
23003END_RULE;
23004
23005-- IN AP214
23006RULE subtype_mandatory_draughting_callout FOR (draughting_callout );
23007   WHERE
23008      wr1:
23009         SIZEOF(QUERY (dc <* draughting_callout| NOT type_check_function(dc, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DATUM_FEATURE_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DATUM_TARGET_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DIMENSION_CURVE_DIRECTED_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_ELEMENTS'), ('STEP_MERGED_CAD_SCHEMA.' + 'GEOMETRICAL_TOLERANCE_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'LEADER_DIRECTED_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PROJECTION_DIRECTED_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'STRUCTURED_DIMENSION_CALLOUT'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_CONDITION_CALLOUT') ], 0))) = 0;
23010END_RULE;
23011
23012-- IN AP214
23013RULE subtype_mandatory_externally_defined_item FOR (externally_defined_item );
23014   WHERE
23015      wr1:
23016         SIZEOF(QUERY (edi <* externally_defined_item| NOT type_check_function(edi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CHARACTER_GLYPH'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CLASS'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_CURVE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_HATCH_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_TEXT_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_DEFINED_TILE_STYLE') ], 0))) = 0;
23017END_RULE;
23018
23019-- IN AP214
23020RULE subtype_mandatory_founded_item FOR (founded_item );
23021   WHERE
23022      wr1:
23023         SIZEOF(QUERY (fi <* founded_item| NOT type_check_function(fi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'COMPOSITE_CURVE_SEGMENT'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_PATCH'), ('STEP_MERGED_CAD_SCHEMA.' + 'VIEW_VOLUME') ], 0))) = 0;
23024END_RULE;
23025
23026-- IN AP203e2/AP214
23027RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance );
23028   WHERE
23029      wr1:
23030         SIZEOF(QUERY (gt <* geometric_tolerance| NOT type_check_function(gt, [ ('STEP_MERGED_CAD_SCHEMA.' + 'ANGULARITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CIRCULAR_RUNOUT_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'COAXIALITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CONCENTRICITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'CYLINDRICITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'FLATNESS_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'LINE_PROFILE_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PARALLELISM_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PERPENDICULARITY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'POSITION_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'ROUNDNESS_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'STRAIGHTNESS_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SURFACE_PROFILE_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'SYMMETRY_TOLERANCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'TOTAL_RUNOUT_TOLERANCE') ], 0))) = 0;
23031END_RULE;
23032
23033-- IN AP214
23034RULE subtype_mandatory_pre_defined_colour FOR (pre_defined_colour );
23035   WHERE
23036      wr1:
23037         SIZEOF(QUERY (pdc <* pre_defined_colour| NOT type_check_function(pdc, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_COLOUR') ], 0))) = 0;
23038END_RULE;
23039
23040-- IN AP214
23041RULE subtype_mandatory_pre_defined_curve_font FOR (pre_defined_curve_font );
23042   WHERE
23043      wr1:
23044         SIZEOF(QUERY (pdcf <* pre_defined_curve_font| NOT type_check_function(pdcf, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT') ], 0))) = 0;
23045END_RULE;
23046
23047-- IN AP214
23048RULE subtype_mandatory_pre_defined_item FOR (pre_defined_item );
23049   WHERE
23050      wr1:
23051         SIZEOF(QUERY (pdi <* pre_defined_item| NOT type_check_function(pdi, [ ('STEP_MERGED_CAD_SCHEMA.' + 'KNOWN_SOURCE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_COLOUR'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_CURVE_FONT'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_MARKER'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_PRESENTATION_STYLE'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_TEXT_FONT') ], 0))) = 0;
23052END_RULE;
23053
23054-- IN AP214
23055RULE subtype_mandatory_pre_defined_symbol FOR (pre_defined_symbol );
23056   WHERE
23057      wr1:
23058         SIZEOF(QUERY (pds <* pre_defined_symbol| NOT type_check_function(pds, [ ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_GEOMETRICAL_TOLERANCE_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_SURFACE_CONDITION_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_DIMENSION_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_POINT_MARKER_SYMBOL'), ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_TERMINATOR_SYMBOL') ], 0))) = 0;
23059END_RULE;
23060
23061-- IN AP214
23062RULE subtype_mandatory_pre_defined_text_font FOR (pre_defined_text_font );
23063   WHERE
23064      wr1:
23065         SIZEOF(QUERY (pdtf <* pre_defined_text_font| NOT type_check_function(pdtf, [ ('STEP_MERGED_CAD_SCHEMA.' + 'DRAUGHTING_PRE_DEFINED_TEXT_FONT') ], 0))) = 0;
23066END_RULE;
23067
23068-- IN AP242
23069RULE subtype_mandatory_shape_representation FOR (shape_representation );
23070   WHERE
23071      WR1:
23072         SIZEOF(QUERY (sr <* shape_representation| NOT (((SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.ADVANCED_BREP_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.FACETED_BREP_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SURFACE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.BEVELED_SHEET_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_SHEET_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.COMPOUND_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.CSG_2D_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.CSG_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.DIRECTION_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.ELEMENTARY_BREP_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.FACE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.LOCATION_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.NEUTRAL_SKETCH_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.PATH_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.PLANAR_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.PROCEDURAL_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.SHAPE_DIMENSION_REPRESENTATION', 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS', 'STEP_MERGED_CAD_SCHEMA.TESSELLATED_SHAPE_REPRESENTATION' ] * TYPEOF(sr)) = 1) OR (SIZEOF(QUERY (it <* sr\representation.items| NOT ('STEP_MERGED_CAD_SCHEMA.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) = 0)) OR (SIZEOF(QUERY (sdr <* QUERY (pdr <* USEDIN(sr, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)))| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT', 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP' ] * TYPEOF(sdr.definition)) = 1))) = 0)))) = 0;
23073END_RULE;
23074
23075-- IN AP214
23076RULE terminator_symbol_constraint FOR (terminator_symbol );
23077   WHERE
23078      wr1:
23079         SIZEOF(QUERY (ts <* terminator_symbol| ('STEP_MERGED_CAD_SCHEMA.' + 'DEFINED_SYMBOL' IN TYPEOF(ts.item)) AND NOT ('STEP_MERGED_CAD_SCHEMA.' + 'PRE_DEFINED_TERMINATOR_SYMBOL' IN TYPEOF(ts.item\defined_symbol.definition)))) = 0;
23080END_RULE;
23081
23082RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font );
23083   WHERE
23084      WR1:
23085         SIZEOF(QUERY (pdtf <* pre_defined_text_font| (SIZEOF(USEDIN(pdtf, 'STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL.FONT')) = 0))) = 0;
23086      WR2:
23087         SIZEOF(QUERY (edtf <* externally_defined_text_font| (SIZEOF(USEDIN(edtf, 'STEP_MERGED_CAD_SCHEMA.TEXT_LITERAL.FONT')) = 0))) = 0;
23088END_RULE;
23089
23090-- IN AP203e2
23091RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category );
23092   LOCAL
23093      i : INTEGER;
23094      j : INTEGER;
23095      k : INTEGER;
23096      dkuhr : LOGICAL;
23097      nnauo : INTEGER;
23098      nprpc : INTEGER;
23099      rp : product;
23100   END_LOCAL;
23101      dkuhr := TRUE;
23102      REPEAT i := LOINDEX(thickness_laminate_definition) TO HIINDEX(thickness_laminate_definition);
23103         nnauo := 0;
23104         REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
23105            IF thickness_laminate_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition THEN
23106               rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
23107               nprpc := 0;
23108               REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
23109                  IF (rp IN product_related_product_category[k].products) AND (product_related_product_category[k].name IN [ 'ply', 'filament laminate', 'processed core' ]) THEN
23110                     nprpc := nprpc + 1;
23111                  END_IF;
23112               END_REPEAT;
23113               IF nprpc = 1 THEN
23114                  nnauo := nnauo + 1;
23115               ELSE
23116                  dkuhr := FALSE;
23117                  ESCAPE;
23118               END_IF;
23119            END_IF;
23120         END_REPEAT;
23121         IF dkuhr = FALSE THEN
23122            ESCAPE;
23123         END_IF;
23124         IF nnauo <> 1 THEN
23125            dkuhr := FALSE;
23126            ESCAPE;
23127         END_IF;
23128      END_REPEAT;
23129   WHERE
23130      WR1:
23131         dkuhr;
23132END_RULE;
23133
23134-- IN AP242
23135RULE tolerance_zone_form_name_constraint FOR (tolerance_zone_form );
23136   LOCAL
23137      names : SET OF STRING := [ 'within a circle', 'between two concentric circles', 'between two equidistant curves', 'within a cylinder', 'between two coaxial cylinders', 'between two equidistant surfaces', 'non uniform', 'cylindrical or circular', 'spherical', 'unknown' ];
23138      pass : BOOLEAN := TRUE;
23139   END_LOCAL;
23140      REPEAT i := 1 TO SIZEOF(tolerance_zone_form) WHILE pass;
23141         pass := tolerance_zone_form[i].name IN names;
23142      END_REPEAT;
23143   WHERE
23144      WR1:
23145         pass;
23146END_RULE;
23147
23148-- IN AP242
23149RULE transition_feature_life_cycle FOR (transition_feature );
23150   WHERE
23151      WR1:
23152         SIZEOF(QUERY (tf <* transition_feature| NOT (tf.of_shape.definition.frame_of_reference.life_cycle_stage = 'manufacturing planning'))) = 0;
23153END_RULE;
23154
23155-- IN AP242
23156RULE transition_feature_on_part_boundary FOR (transition_feature );
23157   WHERE
23158      WR1:
23159         SIZEOF(QUERY (tf <* transition_feature| NOT tf.product_definitional)) = 0;
23160END_RULE;
23161
23162-- IN AP242
23163RULE unique_datum_system FOR (datum_system );
23164   LOCAL
23165      pass : BOOLEAN := TRUE;
23166   END_LOCAL;
23167      REPEAT i := 1 TO SIZEOF(datum_system);
23168         REPEAT j := 1 TO SIZEOF(datum_system);
23169            IF i <> j THEN
23170               IF datum_system[i]\datum_system.constituents = datum_system[j]\datum_system.constituents THEN
23171                  pass := FALSE;
23172               END_IF;
23173            END_IF;
23174         END_REPEAT;
23175      END_REPEAT;
23176   WHERE
23177      WR1:
23178         pass;
23179END_RULE;
23180
23181-- IN AP242
23182RULE unique_gdt_element_id_constraint FOR (product_definition_shape, dimensional_location, dimensional_size, shape_aspect, shape_aspect_relationship );
23183   LOCAL
23184      bss : BAG OF STRING := [];
23185      ds : SET OF dimensional_size := QUERY (ds <* dimensional_size| EXISTS(ds\dimensional_size.id));
23186      sa : SET OF shape_aspect := QUERY (sa <* shape_aspect| EXISTS(sa\shape_aspect.id));
23187      sar : SET OF shape_aspect_relationship := QUERY (sar <* shape_aspect_relationship| EXISTS(sar\shape_aspect_relationship.id));
23188      ssa : SET OF shape_aspect := [];
23189      pass : BOOLEAN := TRUE;
23190   END_LOCAL;
23191      REPEAT ii := 1 TO SIZEOF(product_definition_shape) WHILE pass;
23192         bss := [];
23193         ssa := bag_to_set(USEDIN(product_definition_shape[ii], 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT.' + 'OF_SHAPE'));
23194         REPEAT i := 1 TO SIZEOF(ds);
23195            IF ds[i]\dimensional_size.applies_to IN ssa THEN
23196               bss := bss + ds[i]\dimensional_size.id;
23197            END_IF;
23198         END_REPEAT;
23199         REPEAT i := 1 TO SIZEOF(sa);
23200            IF sa[i] IN ssa THEN
23201               bss := bss + sa[i]\shape_aspect.id;
23202            END_IF;
23203         END_REPEAT;
23204         REPEAT i := 1 TO SIZEOF(sar);
23205            IF sar[i]\shape_aspect_relationship.relating_shape_aspect IN ssa THEN
23206               bss := bss + sar[i]\shape_aspect_relationship.id;
23207            END_IF;
23208         END_REPEAT;
23209         IF SIZEOF(bag_to_set(bss)) <> SIZEOF(bss) THEN
23210            pass := FALSE;
23211         END_IF;
23212      END_REPEAT;
23213   WHERE
23214      WR1:
23215         pass;
23216END_RULE;
23217
23218-- IN AP242
23219RULE valid_product_and_manufacturing_information_view_contexts FOR (product_definition_context );
23220   LOCAL
23221      design_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.life_cycle_stage = 'design');
23222      gdt_representation_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'geometrical dimensioning and tolerancing representation');
23223      machining_feature_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'machining feature');
23224      material_specification_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'material specification');
23225      model_based_3d_annotation_presentation_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'model based 3D annotation presentation');
23226      model_based_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'model based product geometry');
23227      process_state_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'process state');
23228      surface_finish_view_contexts : SET OF product_definition_context := QUERY (pdc <* product_definition_context| pdc.frame_of_reference.application = 'surface finish');
23229      additional_view_contexts : SET OF product_definition_context := gdt_representation_view_contexts + machining_feature_view_contexts + material_specification_view_contexts + model_based_3d_annotation_presentation_view_contexts + process_state_view_contexts + surface_finish_view_contexts;
23230      need_initial_model_based_view_contexts : SET OF product_definition_context := gdt_representation_view_contexts + model_based_3d_annotation_presentation_view_contexts;
23231   END_LOCAL;
23232   WHERE
23233      WR1:
23234         SIZEOF(gdt_representation_view_contexts * design_view_contexts) = SIZEOF(gdt_representation_view_contexts);
23235      WR2:
23236         SIZEOF(machining_feature_view_contexts * design_view_contexts) = SIZEOF(machining_feature_view_contexts);
23237      WR3:
23238         SIZEOF(material_specification_view_contexts * design_view_contexts) = SIZEOF(material_specification_view_contexts);
23239      WR4:
23240         SIZEOF(model_based_3d_annotation_presentation_view_contexts * design_view_contexts) = SIZEOF(model_based_3d_annotation_presentation_view_contexts);
23241      WR5:
23242         SIZEOF(model_based_view_contexts * design_view_contexts) = SIZEOF(model_based_view_contexts);
23243      WR6:
23244         SIZEOF(process_state_view_contexts * design_view_contexts) = SIZEOF(process_state_view_contexts);
23245      WR7:
23246         SIZEOF(surface_finish_view_contexts * design_view_contexts) = SIZEOF(surface_finish_view_contexts);
23247      WR8:
23248         SIZEOF(QUERY (mbvc <* model_based_view_contexts| (SIZEOF(USEDIN(mbvc, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE')) = 0))) = SIZEOF(model_based_view_contexts);
23249      WR9:
23250         SIZEOF(QUERY (avc <* additional_view_contexts| (SIZEOF(USEDIN(avc, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION.FRAME_OF_REFERENCE')) = 0))) = SIZEOF(additional_view_contexts);
23251      WR10:
23252         SIZEOF(QUERY (nimbvc <* need_initial_model_based_view_contexts| NOT (SIZEOF(QUERY (pdca <* USEDIN(nimbvc, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE')| (pdca\product_definition_context_association.definition\product_definition.frame_of_reference IN model_based_view_contexts))) = SIZEOF(need_initial_model_based_view_contexts)))) = 0;
23253      WR11:
23254         SIZEOF(QUERY (gdt_pdc <* gdt_representation_view_contexts| (SIZEOF([ 'ISO 1101', 'ASME Y14.5' ] * get_associated_mandatory_document_ids(gdt_pdc)) = 0))) = 0;
23255      WR12:
23256         SIZEOF(QUERY (mb3d_pdc <* model_based_3d_annotation_presentation_view_contexts| (SIZEOF([ 'ISO 1101', 'ISO 16792', 'ASME Y14.41', 'ASME Y14.5' ] * get_associated_mandatory_document_ids(mb3d_pdc)) = 0))) = 0;
23257END_RULE;
23258
23259-- DIFF IN AP203e2
23260-- IN AP203e2/AP242
23261RULE validate_dependently_instantiable_entity_data_types FOR (abstracted_expression_function, action_method_role, action_resource_type, application_defined_function, atom_based_literal, attribute_value_role, b_spline_basis, b_spline_function, basic_sparse_matrix, binary_literal, camera_model_d2, cartesian_complex_number_region, cartesian_transformation_operator, complex_number_literal, concept_feature_relationship, concept_feature_relationship_with_condition, constant_function, definite_integral_expression, definite_integral_function, document_usage_constraint, edge_blended_solid, effectivity_context_role, elementary_function, event_occurrence_role, explicit_procedural_representation_item_relationship, explicit_table_function, expression_denoted_function, extended_tuple_space, externally_listed_data, finite_function, founded_item, function_application, function_space, general_linear_function, homogeneous_linear_function, imported_curve_function, imported_point_function, imported_surface_function, imported_volume_function, indirectly_selected_elements, integer_tuple_literal, linearized_table_function, listed_data, maths_enum_literal, maths_function, maths_tuple_literal, modified_solid_with_placed_configuration, one_direction_repeat_factor, oriented_open_shell, oriented_path, parallel_composed_function, partial_derivative_expression, partial_derivative_function, polar_complex_number_region, procedural_representation, procedural_representation_sequence, product_definition_effectivity, quantifier_expression, rationalize_function, real_tuple_literal, reindexed_array_function, repackaging_function, restriction_function, runout_zone_orientation, selector_function, series_composed_function, solid_with_depression, solid_with_hole, solid_with_pocket, solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target, two_direction_repeat_factor, user_selected_elements, volume );
23262   LOCAL
23263      number_of_input_instances : INTEGER;
23264      previous_in_chain : LIST OF GENERIC := [];
23265      set_of_input_types : SET OF STRING := [];
23266      all_instances : SET OF GENERIC := [];
23267   END_LOCAL;
23268      all_instances := all_instances + abstracted_expression_function;
23269      all_instances := all_instances + action_method_role;
23270      all_instances := all_instances + action_resource_type;
23271      all_instances := all_instances + application_defined_function;
23272      all_instances := all_instances + atom_based_literal;
23273      all_instances := all_instances + attribute_value_role;
23274      all_instances := all_instances + b_spline_basis;
23275      all_instances := all_instances + b_spline_function;
23276      all_instances := all_instances + basic_sparse_matrix;
23277      all_instances := all_instances + binary_literal;
23278      all_instances := all_instances + camera_model_d2;
23279      all_instances := all_instances + cartesian_complex_number_region;
23280      all_instances := all_instances + cartesian_transformation_operator;
23281      all_instances := all_instances + complex_number_literal;
23282      all_instances := all_instances + concept_feature_relationship;
23283      all_instances := all_instances + concept_feature_relationship_with_condition;
23284      all_instances := all_instances + constant_function;
23285      all_instances := all_instances + definite_integral_expression;
23286      all_instances := all_instances + definite_integral_function;
23287      all_instances := all_instances + document_usage_constraint;
23288      all_instances := all_instances + edge_blended_solid;
23289      all_instances := all_instances + effectivity_context_role;
23290      all_instances := all_instances + elementary_function;
23291      all_instances := all_instances + event_occurrence_role;
23292      all_instances := all_instances + explicit_procedural_representation_item_relationship;
23293      all_instances := all_instances + explicit_table_function;
23294      all_instances := all_instances + expression_denoted_function;
23295      all_instances := all_instances + extended_tuple_space;
23296      all_instances := all_instances + externally_listed_data;
23297      all_instances := all_instances + finite_function;
23298      all_instances := all_instances + founded_item;
23299      all_instances := all_instances + function_application;
23300      all_instances := all_instances + function_space;
23301      all_instances := all_instances + general_linear_function;
23302      all_instances := all_instances + homogeneous_linear_function;
23303      all_instances := all_instances + imported_curve_function;
23304      all_instances := all_instances + imported_point_function;
23305      all_instances := all_instances + imported_surface_function;
23306      all_instances := all_instances + imported_volume_function;
23307      all_instances := all_instances + indirectly_selected_elements;
23308      all_instances := all_instances + integer_tuple_literal;
23309      all_instances := all_instances + linearized_table_function;
23310      all_instances := all_instances + listed_data;
23311      all_instances := all_instances + maths_enum_literal;
23312      all_instances := all_instances + maths_function;
23313      all_instances := all_instances + maths_tuple_literal;
23314      all_instances := all_instances + modified_solid_with_placed_configuration;
23315      all_instances := all_instances + one_direction_repeat_factor;
23316      all_instances := all_instances + oriented_open_shell;
23317      all_instances := all_instances + oriented_path;
23318      all_instances := all_instances + parallel_composed_function;
23319      all_instances := all_instances + partial_derivative_expression;
23320      all_instances := all_instances + partial_derivative_function;
23321      all_instances := all_instances + polar_complex_number_region;
23322      all_instances := all_instances + procedural_representation;
23323      all_instances := all_instances + procedural_representation_sequence;
23324      all_instances := all_instances + product_definition_effectivity;
23325      all_instances := all_instances + quantifier_expression;
23326      all_instances := all_instances + rationalize_function;
23327      all_instances := all_instances + real_tuple_literal;
23328      all_instances := all_instances + reindexed_array_function;
23329      all_instances := all_instances + repackaging_function;
23330      all_instances := all_instances + restriction_function;
23331      all_instances := all_instances + runout_zone_orientation;
23332      all_instances := all_instances + selector_function;
23333      all_instances := all_instances + series_composed_function;
23334      all_instances := all_instances + solid_with_depression;
23335      all_instances := all_instances + solid_with_hole;
23336      all_instances := all_instances + solid_with_pocket;
23337      all_instances := all_instances + solid_with_protrusion;
23338      all_instances := all_instances + solid_with_shape_element_pattern;
23339      all_instances := all_instances + solid_with_slot;
23340      all_instances := all_instances + swept_area_solid;
23341      all_instances := all_instances + symbol_target;
23342      all_instances := all_instances + two_direction_repeat_factor;
23343      all_instances := all_instances + user_selected_elements;
23344      all_instances := all_instances + volume;
23345      number_of_input_instances := SIZEOF(all_instances);
23346      REPEAT i := 1 TO number_of_input_instances;
23347         set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
23348      END_REPEAT;
23349   WHERE
23350      WR1:
23351         dependently_instantiated(all_instances, set_of_input_types, previous_in_chain);
23352END_RULE;
23353
23354-- IN AP214
23355RULE versioned_action_request_requires_date_and_person_or_organization FOR (versioned_action_request );
23356   WHERE
23357      wr1:
23358         SIZEOF(QUERY (va <* versioned_action_request| (SIZEOF(QUERY (adapaoa <* USEDIN(va, 'STEP_MERGED_CAD_SCHEMA.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS')| (adapaoa.role.name = 'requestor'))) + SIZEOF(QUERY (adaoa <* USEDIN(va, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (adaoa.role.name = 'requestor'))) = 0))) = 0;
23359      wr2:
23360         SIZEOF(QUERY (va <* versioned_action_request| (SIZEOF(QUERY (adapaoa <* USEDIN(va, 'STEP_MERGED_CAD_SCHEMA.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS')| (adapaoa.role.name = 'notified person or organization'))) + SIZEOF(QUERY (adaoa <* USEDIN(va, 'STEP_MERGED_CAD_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')| (adaoa.role.name = 'notified person or organization'))) = 0))) = 0;
23361END_RULE;
23362
23363-- IN AP214
23364RULE versioned_action_request_requires_status FOR (action_request_status, versioned_action_request );
23365   WHERE
23366      wr1:
23367         SIZEOF(QUERY (ar <* versioned_action_request| NOT (SIZEOF(QUERY (ars <* action_request_status| (ar :=: ars.assigned_request))) = 1))) = 0;
23368END_RULE;
23369
23370-- DIFF IN AP214
23371FUNCTION acyclic
23372      (arg1 : generic_expression;
23373       arg2 : SET [0:?] OF generic_expression ) : BOOLEAN;
23374   LOCAL
23375      result : BOOLEAN := TRUE;
23376   END_LOCAL;
23377      IF 'STEP_MERGED_CAD_SCHEMA.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
23378         RETURN (TRUE);
23379      END_IF;
23380      IF arg1 IN arg2 THEN
23381         RETURN (FALSE);
23382      END_IF;
23383      IF 'STEP_MERGED_CAD_SCHEMA.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
23384         RETURN (acyclic(arg1\unary_generic_expression.operand, arg2 + [ arg1 ]));
23385      END_IF;
23386      IF 'STEP_MERGED_CAD_SCHEMA.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
23387         RETURN (acyclic(arg1\binary_generic_expression.operands[1], (arg2 + [ arg1 ])) AND acyclic(arg1\binary_generic_expression.operands[2], (arg2 + [ arg1 ])));
23388      END_IF;
23389      IF 'STEP_MERGED_CAD_SCHEMA.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
23390         result := TRUE;
23391         REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.operands);
23392            result := result AND acyclic(arg1\multiple_arity_generic_expression.operands[i], (arg2 + [ arg1 ]));
23393         END_REPEAT;
23394         RETURN (result);
23395      END_IF;
23396      RETURN (result);
23397END_FUNCTION;
23398
23399-- DIFF IN AP214
23400FUNCTION acyclic_composite_text
23401      (start_composite : composite_text;
23402       child_text : SET [1:?] OF text_or_character ) : LOGICAL;
23403   LOCAL
23404      i : INTEGER;
23405      local_composite_text : SET [0:?] OF composite_text;
23406      local_annotation_text : SET [0:?] OF annotation_text;
23407      local_children : SET [0:?] OF text_or_character;
23408   END_LOCAL;
23409      local_composite_text := QUERY (child <* child_text| 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' IN TYPEOF(child));
23410      IF SIZEOF(local_composite_text) > 0 THEN
23411         REPEAT i := 1 TO HIINDEX(local_composite_text);
23412            IF start_composite :=: local_composite_text[i] THEN
23413               RETURN (FALSE);
23414            END_IF;
23415         END_REPEAT;
23416      END_IF;
23417      local_children := child_text;
23418      IF SIZEOF(local_composite_text) > 0 THEN
23419         REPEAT i := 1 TO HIINDEX(local_composite_text);
23420            local_children := local_children + local_composite_text[i].collected_text;
23421         END_REPEAT;
23422      END_IF;
23423      local_annotation_text := QUERY (child <* child_text| 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT' IN TYPEOF(child));
23424      IF SIZEOF(local_annotation_text) > 0 THEN
23425         REPEAT i := 1 TO HIINDEX(local_annotation_text);
23426            local_children := local_children + QUERY (item <* local_annotation_text[i]\mapped_item.mapping_source.mapped_representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.ANNOTATION_TEXT', 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_TEXT' ] * TYPEOF(item)) > 0));
23427         END_REPEAT;
23428      END_IF;
23429      IF local_children :<>: child_text THEN
23430         RETURN (acyclic_composite_text(start_composite, local_children));
23431      ELSE
23432         RETURN (TRUE);
23433      END_IF;
23434END_FUNCTION;
23435
23436FUNCTION acyclic_curve_replica
23437      (rep : curve_replica;
23438       parent : curve ) : BOOLEAN;
23439      IF NOT ('STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(parent)) THEN
23440         RETURN (TRUE);
23441      END_IF;
23442      IF parent :=: rep THEN
23443         RETURN (FALSE);
23444      ELSE
23445         RETURN (acyclic_curve_replica(rep, parent\curve_replica.parent_curve));
23446      END_IF;
23447END_FUNCTION;
23448
23449-- IN AP203e2/AP214
23450FUNCTION acyclic_mapped_item_usage
23451      (rep : representation ) : BOOLEAN;
23452   LOCAL
23453      items : SET OF representation_item;
23454   END_LOCAL;
23455      items := QUERY (item <* rep.items| 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(item));
23456      IF SIZEOF(items) = 0 THEN
23457         RETURN (FALSE);
23458      ELSE
23459         REPEAT i := 1 TO HIINDEX(items);
23460            IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep THEN
23461               RETURN (TRUE);
23462            ELSE
23463               RETURN (acyclic_mapped_item_usage(items[i]\mapped_item.mapping_source.mapped_representation));
23464            END_IF;
23465         END_REPEAT;
23466         RETURN (FALSE);
23467      END_IF;
23468END_FUNCTION;
23469
23470-- DIFF IN AP214
23471FUNCTION acyclic_mapped_representation
23472      (mi : mapped_item ) : BOOLEAN;
23473   LOCAL
23474      rms : SET OF representation_map;
23475      mis : SET OF mapped_item;
23476      rs1 : SET OF representation;
23477      rs2 : SET OF representation;
23478   END_LOCAL;
23479      rs1 := using_representations(mi);
23480      rs2 := [];
23481      REPEAT WHILE SIZEOF(rs1) > 0;
23482         REPEAT i := 1 TO HIINDEX(rs1);
23483            rms := bag_to_set(USEDIN(rs1[i], 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
23484            IF SIZEOF(rms) > 0 THEN
23485               REPEAT j := 1 TO HIINDEX(rms);
23486                  mis := bag_to_set(USEDIN(rms[i], 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'));
23487                  IF SIZEOF(mis) > 0 THEN
23488                     REPEAT j := 1 TO HIINDEX(mis);
23489                        IF mis[i] :=: mi THEN
23490                           RETURN (FALSE);
23491                        END_IF;
23492                        rs2 := rs2 + using_representations(mis[i]);
23493                     END_REPEAT;
23494                  END_IF;
23495               END_REPEAT;
23496            END_IF;
23497         END_REPEAT;
23498         rs1 := rs2;
23499         rs2 := [];
23500      END_REPEAT;
23501      RETURN (TRUE);
23502END_FUNCTION;
23503
23504FUNCTION acyclic_point_replica
23505      (rep : point_replica;
23506       parent : point ) : BOOLEAN;
23507      IF NOT ('STEP_MERGED_CAD_SCHEMA.POINT_REPLICA' IN TYPEOF(parent)) THEN
23508         RETURN (TRUE);
23509      END_IF;
23510      IF parent :=: rep THEN
23511         RETURN (FALSE);
23512      ELSE
23513         RETURN (acyclic_point_replica(rep, parent\point_replica.parent_pt));
23514      END_IF;
23515END_FUNCTION;
23516
23517-- DIFF IN AP214
23518-- IN AP214/AP242
23519FUNCTION acyclic_product_category_relationship
23520      (relation : product_category_relationship;
23521       children : SET [0:?] OF product_category ) : BOOLEAN;
23522   LOCAL
23523      x : SET OF product_category_relationship;
23524      local_children : SET OF product_category;
23525   END_LOCAL;
23526      REPEAT i := 1 TO HIINDEX(children);
23527         IF relation.category :=: children[i] THEN
23528            RETURN (FALSE);
23529         END_IF;
23530      END_REPEAT;
23531      x := bag_to_set(USEDIN(relation.category, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
23532      local_children := children + relation.category;
23533      IF SIZEOF(x) > 0 THEN
23534         REPEAT i := 1 TO HIINDEX(x);
23535            IF NOT acyclic_product_category_relationship(x[i], local_children) THEN
23536               RETURN (FALSE);
23537            END_IF;
23538         END_REPEAT;
23539      END_IF;
23540      RETURN (TRUE);
23541END_FUNCTION;
23542
23543-- DIFF IN AP214
23544-- DIFF IN AP203e2
23545FUNCTION acyclic_product_definition_relationship
23546      (relation : product_definition_relationship;
23547       relatives : SET [1:?] OF product_definition_or_reference;
23548       specific_relation : STRING ) : BOOLEAN;
23549   LOCAL
23550      x : SET OF product_definition_relationship;
23551   END_LOCAL;
23552      IF relation.relating_product_definition IN relatives THEN
23553         RETURN (FALSE);
23554      END_IF;
23555      x := QUERY (pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION'))| specific_relation IN TYPEOF(pd));
23556      REPEAT i := 1 TO HIINDEX(x);
23557         IF NOT acyclic_product_definition_relationship(x[i], (relatives + relation.relating_product_definition), specific_relation) THEN
23558            RETURN (FALSE);
23559         END_IF;
23560      END_REPEAT;
23561      RETURN (TRUE);
23562END_FUNCTION;
23563
23564-- IN AP203e2/AP242
23565FUNCTION acyclic_representation_relationship
23566      (relation : representation_relationship;
23567       relatives : SET [1:?] OF representation;
23568       specific_relation : STRING ) : BOOLEAN;
23569   LOCAL
23570      x : SET OF representation_relationship;
23571   END_LOCAL;
23572      IF relation.rep_1 IN relatives THEN
23573         RETURN (FALSE);
23574      END_IF;
23575      x := QUERY (r <* bag_to_set(USEDIN(relation.rep_1, 'STEP_MERGED_CAD_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2'))| specific_relation IN TYPEOF(r));
23576      REPEAT i := 1 TO HIINDEX(x);
23577         IF NOT acyclic_representation_relationship(x[i], (relatives + relation.rep_1), specific_relation) THEN
23578            RETURN (FALSE);
23579         END_IF;
23580      END_REPEAT;
23581      RETURN (TRUE);
23582END_FUNCTION;
23583
23584-- IN AP242
23585FUNCTION acyclic_shape_aspect_relationship
23586      (relation : shape_aspect_relationship;
23587       relatives : SET [1:?] OF shape_aspect;
23588       specific_relation : STRING ) : BOOLEAN;
23589   LOCAL
23590      x : SET OF shape_aspect_relationship;
23591   END_LOCAL;
23592      IF relation.relating_shape_aspect IN relatives THEN
23593         RETURN (FALSE);
23594      END_IF;
23595      x := QUERY (sa <* bag_to_set(USEDIN(relation.relating_shape_aspect, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT'))| specific_relation IN TYPEOF(sa));
23596      REPEAT i := 1 TO HIINDEX(x);
23597         IF NOT acyclic_shape_aspect_relationship(x[i], (relatives + relation.relating_shape_aspect), specific_relation) THEN
23598            RETURN (FALSE);
23599         END_IF;
23600      END_REPEAT;
23601      RETURN (TRUE);
23602END_FUNCTION;
23603
23604FUNCTION acyclic_solid_replica
23605      (rep : solid_replica;
23606       parent : solid_model ) : BOOLEAN;
23607      IF NOT ('STEP_MERGED_CAD_SCHEMA.SOLID_REPLICA' IN TYPEOF(parent)) THEN
23608         RETURN (TRUE);
23609      END_IF;
23610      IF parent :=: rep THEN
23611         RETURN (FALSE);
23612      ELSE
23613         RETURN (acyclic_solid_replica(rep, parent\solid_replica.parent_solid));
23614      END_IF;
23615END_FUNCTION;
23616
23617FUNCTION acyclic_surface_replica
23618      (rep : surface_replica;
23619       parent : surface ) : BOOLEAN;
23620      IF NOT ('STEP_MERGED_CAD_SCHEMA.SURFACE_REPLICA' IN TYPEOF(parent)) THEN
23621         RETURN (TRUE);
23622      END_IF;
23623      IF parent :=: rep THEN
23624         RETURN (FALSE);
23625      ELSE
23626         RETURN (acyclic_surface_replica(rep, parent\surface_replica.parent_surface));
23627      END_IF;
23628END_FUNCTION;
23629
23630-- DIFF IN AP214
23631FUNCTION advanced_face_properties
23632      (testface : face ) : BOOLEAN;
23633      IF 'STEP_MERGED_CAD_SCHEMA.ADVANCED_FACE' IN TYPEOF(testface) THEN
23634         RETURN (TRUE);
23635      END_IF;
23636      IF 'STEP_MERGED_CAD_SCHEMA.SUBFACE' IN TYPEOF(testface) THEN
23637         RETURN (advanced_face_properties(testface\subface.parent_face));
23638      ELSE
23639         RETURN (FALSE);
23640      END_IF;
23641END_FUNCTION;
23642
23643-- IN AP242
23644FUNCTION all_members_of_es
23645      (sv : SET [0:?] OF maths_value;
23646       es : elementary_space_enumerators ) : LOGICAL;
23647   CONSTANT
23648      base_types : SET OF STRING := [ 'NUMBER', 'COMPLEX_NUMBER_LITERAL', 'REAL', 'INTEGER', 'LOGICAL', 'BOOLEAN', 'STRING', 'BINARY', 'MATHS_SPACE', 'MATHS_FUNCTION', 'LIST', 'ELEMENTARY_SPACE_ENUMERATORS', 'ORDERING_TYPE', 'LOWER_UPPER', 'SYMMETRY_TYPE', 'ELEMENTARY_FUNCTION_ENUMERATORS', 'OPEN_CLOSED', 'SPACE_CONSTRAINT_TYPE', 'REPACKAGE_OPTIONS', 'EXTENSION_OPTIONS' ];
23649   END_CONSTANT;
23650   LOCAL
23651      v : maths_value;
23652      key_type : STRING := '';
23653      types : SET OF STRING;
23654      ge : generic_expression;
23655      cum : LOGICAL := TRUE;
23656      vspc : maths_space;
23657   END_LOCAL;
23658      IF NOT EXISTS(sv) OR NOT EXISTS(es) THEN
23659         RETURN (FALSE);
23660      END_IF;
23661      CASE es OF
23662         es_numbers :
23663               key_type := 'NUMBER';
23664         es_complex_numbers :
23665               key_type := 'COMPLEX_NUMBER_LITERAL';
23666         es_reals :
23667               key_type := 'REAL';
23668         es_integers :
23669               key_type := 'INTEGER';
23670         es_logicals :
23671               key_type := 'LOGICAL';
23672         es_booleans :
23673               key_type := 'BOOLEAN';
23674         es_strings :
23675               key_type := 'STRING';
23676         es_binarys :
23677               key_type := 'BINARY';
23678         es_maths_spaces :
23679               key_type := 'MATHS_SPACE';
23680         es_maths_functions :
23681               key_type := 'MATHS_FUNCTION';
23682         es_generics :
23683               RETURN (TRUE);
23684      END_CASE;
23685      REPEAT i := 1 TO SIZEOF(sv);
23686         IF NOT EXISTS(sv[i]) THEN
23687            RETURN (FALSE);
23688         END_IF;
23689         v := simplify_maths_value(sv[i]);
23690         types := stripped_typeof(v);
23691         IF key_type IN types THEN
23692            SKIP;
23693         END_IF;
23694         IF (es = es_numbers) AND ('COMPLEX_NUMBER_LITERAL' IN types) THEN
23695            SKIP;
23696         END_IF;
23697         IF SIZEOF(base_types * types) > 0 THEN
23698            RETURN (FALSE);
23699         END_IF;
23700         ge := v;
23701         IF has_values_space(ge) THEN
23702            vspc := values_space_of(ge);
23703            IF NOT subspace_of_es(vspc, es) THEN
23704               IF NOT compatible_spaces(vspc, make_elementary_space(es)) THEN
23705                  RETURN (FALSE);
23706               END_IF;
23707               cum := UNKNOWN;
23708            END_IF;
23709         ELSE
23710            cum := UNKNOWN;
23711         END_IF;
23712         IF cum = FALSE THEN
23713            RETURN (FALSE);
23714         END_IF;
23715      END_REPEAT;
23716      RETURN (cum);
23717END_FUNCTION;
23718
23719-- IN AP242
23720FUNCTION any_space_satisfies
23721      (sc : space_constraint_type;
23722       spc : maths_space ) : BOOLEAN;
23723   LOCAL
23724      spc_id : elementary_space_enumerators;
23725   END_LOCAL;
23726      IF (sc = sc_equal) OR NOT ('ELEMENTARY_SPACE' IN stripped_typeof(spc)) THEN
23727         RETURN (FALSE);
23728      END_IF;
23729      spc_id := spc\elementary_space.space_id;
23730      IF sc = sc_subspace THEN
23731         RETURN (bool(spc_id = es_generics));
23732      END_IF;
23733      IF sc = sc_member THEN
23734         RETURN (bool((spc_id = es_generics) OR (spc_id = es_maths_spaces)));
23735      END_IF;
23736      RETURN (?);
23737END_FUNCTION;
23738
23739FUNCTION aspect_ratio
23740      (p : planar_box ) : positive_ratio_measure;
23741      IF (p.size_in_x > 0.0) AND (p.size_in_y > 0.0) THEN
23742         RETURN (p.size_in_x / p.size_in_y);
23743      ELSE
23744         RETURN (?);
23745      END_IF;
23746END_FUNCTION;
23747
23748-- IN AP242
23749FUNCTION assembly_leaf
23750      (item : product_definition ) : BOOLEAN;
23751   LOCAL
23752      local_relation : SET OF assembly_component_usage := [];
23753      local_relation2 : BAG OF assembly_component_usage := [];
23754   END_LOCAL;
23755      local_relation2 := local_relation2 + QUERY (pdr <* USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)));
23756      local_relation := bag_to_set(local_relation2);
23757      IF SIZEOF(local_relation) = 0 THEN
23758         RETURN (TRUE);
23759      ELSE
23760         RETURN (FALSE);
23761      END_IF;
23762END_FUNCTION;
23763
23764-- IN AP242
23765FUNCTION assembly_root
23766      (item : product_definition ) : BOOLEAN;
23767      IF SIZEOF(QUERY (pdr <* USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)))) = 0 THEN
23768         RETURN (TRUE);
23769      ELSE
23770         RETURN (FALSE);
23771      END_IF;
23772END_FUNCTION;
23773
23774-- IN AP214
23775FUNCTION assembly_shape_is_defined
23776      (assy : next_assembly_usage_occurrence ) : BOOLEAN;
23777   LOCAL
23778      sdr_set : SET OF shape_definition_representation := [];
23779      srr_set : SET OF shape_representation_relationship := [];
23780      sdr1_set : SET OF shape_definition_representation := [];
23781      pd_set : SET OF property_definition := [];
23782      pdr_set : SET OF product_definition_relationship := [];
23783      pds_set : SET OF product_definition_shape := [];
23784      prop_set : SET OF property_definition := [];
23785   END_LOCAL;
23786      pd_set := bag_to_set(USEDIN(assy.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
23787      pdr_set := QUERY (pdr <* bag_to_set(USEDIN(assy.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'))| SIZEOF(USEDIN(pdr, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')) > 0);
23788      IF SIZEOF(pd_set) > 0 THEN
23789         REPEAT i := 1 TO HIINDEX(pd_set);
23790            sdr_set := sdr_set + QUERY (pdr <* USEDIN(pd_set[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
23791         END_REPEAT;
23792      END_IF;
23793      IF SIZEOF(pdr_set) > 0 THEN
23794         REPEAT i := 1 TO HIINDEX(pdr_set);
23795            prop_set := prop_set + bag_to_set(USEDIN(pdr_set[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
23796         END_REPEAT;
23797         IF SIZEOF(prop_set) > 0 THEN
23798            REPEAT i := 1 TO HIINDEX(prop_set);
23799               sdr_set := sdr_set + QUERY (pdr <* USEDIN(prop_set[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
23800            END_REPEAT;
23801         END_IF;
23802      END_IF;
23803      IF SIZEOF(sdr_set) > 0 THEN
23804         REPEAT i := 1 TO HIINDEX(sdr_set);
23805            srr_set := QUERY (rr <* bag_to_set(USEDIN(sdr_set[i]\property_definition_representation.used_representation, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2'))| 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(rr));
23806            pd_set := bag_to_set(USEDIN(assy.relating_product_definition, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
23807            IF SIZEOF(pd_set) > 0 THEN
23808               REPEAT i := 1 TO HIINDEX(pd_set);
23809                  sdr1_set := sdr1_set + QUERY (pdr <* USEDIN(pd_set[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
23810               END_REPEAT;
23811            END_IF;
23812            IF (SIZEOF(sdr_set) > 0) AND (SIZEOF(sdr1_set) > 0) THEN
23813               IF SIZEOF(srr_set) > 0 THEN
23814                  REPEAT j := 1 TO HIINDEX(srr_set);
23815                     IF SIZEOF(QUERY (pdr <* bag_to_set(USEDIN(srr_set[j]\representation_relationship.rep_1, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr))) * sdr1_set) >= 1 THEN
23816                        pds_set := QUERY (x <* bag_to_set(USEDIN(assy, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'))| 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(x));
23817                        IF SIZEOF(pds_set) = 0 THEN
23818                           RETURN (FALSE);
23819                        END_IF;
23820                        REPEAT k := 1 TO HIINDEX(pds_set);
23821                           IF SIZEOF(QUERY (cdsr <* USEDIN(pds_set[k], 'STEP_MERGED_CAD_SCHEMA.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.REPRESENTED_PRODUCT_RELATION')| (cdsr.representation_relation :=: srr_set[j]))) > 0 THEN
23822                              RETURN (FALSE);
23823                           END_IF;
23824                        END_REPEAT;
23825                     END_IF;
23826                  END_REPEAT;
23827               END_IF;
23828            END_IF;
23829         END_REPEAT;
23830      END_IF;
23831      RETURN (TRUE);
23832END_FUNCTION;
23833
23834-- IN AP242
23835FUNCTION assoc_product_space
23836      (ts1 : tuple_space;
23837       ts2 : tuple_space ) : tuple_space;
23838   LOCAL
23839      types1 : SET OF STRING := stripped_typeof(ts1);
23840      types2 : SET OF STRING := stripped_typeof(ts2);
23841      up1 : uniform_product_space := make_uniform_product_space(the_reals, 1);
23842      up2 : uniform_product_space := make_uniform_product_space(the_reals, 1);
23843      lp1 : listed_product_space := the_zero_tuple_space;
23844      lp2 : listed_product_space := the_zero_tuple_space;
23845      lps : listed_product_space := the_zero_tuple_space;
23846      et1 : extended_tuple_space := the_tuples;
23847      et2 : extended_tuple_space := the_tuples;
23848      ets : extended_tuple_space := the_tuples;
23849      use_up1 : BOOLEAN;
23850      use_up2 : BOOLEAN;
23851      use_lp1 : BOOLEAN;
23852      use_lp2 : BOOLEAN;
23853      factors : LIST OF maths_space := [];
23854      tspace : tuple_space;
23855   END_LOCAL;
23856      IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
23857         up1 := ts1;
23858         use_up1 := FALSE;
23859         use_lp1 := FALSE;
23860      ELSE
23861         IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
23862            lp1 := ts1;
23863            use_up1 := FALSE;
23864            use_lp1 := FALSE;
23865         ELSE
23866            IF NOT ('EXTENDED_TUPLE_SPACE' IN types1) THEN
23867               RETURN (?);
23868            END_IF;
23869            et1 := ts1;
23870            use_up1 := FALSE;
23871            use_lp1 := FALSE;
23872         END_IF;
23873      END_IF;
23874      IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
23875         up2 := ts2;
23876         use_up2 := FALSE;
23877         use_lp2 := FALSE;
23878      ELSE
23879         IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
23880            lp2 := ts2;
23881            use_up2 := FALSE;
23882            use_lp2 := FALSE;
23883         ELSE
23884            IF NOT ('EXTENDED_TUPLE_SPACE' IN types2) THEN
23885               RETURN (?);
23886            END_IF;
23887            et2 := ts2;
23888            use_up2 := FALSE;
23889            use_lp2 := FALSE;
23890         END_IF;
23891      END_IF;
23892      IF use_up1 THEN
23893         IF use_up2 THEN
23894            IF up1.base = up2.base THEN
23895               tspace := make_uniform_product_space(up1.base, up1.exponent + up2.exponent);
23896            ELSE
23897               factors := [ up1.base, up2.base ];
23898               tspace := make_listed_product_space(factors);
23899            END_IF;
23900         ELSE
23901            IF use_lp2 THEN
23902               factors := [ up1.base ];
23903               factors := factors + lp2.factors;
23904               tspace := make_listed_product_space(factors);
23905            ELSE
23906               tspace := assoc_product_space(up1, et2.base);
23907               tspace := make_extended_tuple_space(tspace, et2.extender);
23908            END_IF;
23909         END_IF;
23910      ELSE
23911         IF use_lp1 THEN
23912            IF use_up2 THEN
23913               factors := [ up2.base ];
23914               factors := lp1.factors + factors;
23915               tspace := make_listed_product_space(factors);
23916            ELSE
23917               IF use_lp2 THEN
23918                  tspace := make_listed_product_space(lp1.factors + lp2.factors);
23919               ELSE
23920                  tspace := assoc_product_space(lp1, et2.base);
23921                  tspace := make_extended_tuple_space(tspace, et2.extender);
23922               END_IF;
23923            END_IF;
23924         ELSE
23925            IF use_up2 THEN
23926               IF et1.extender = up2.base THEN
23927                  tspace := assoc_product_space(et1.base, up2);
23928                  tspace := make_extended_tuple_space(tspace, et1.extender);
23929               ELSE
23930                  RETURN (?);
23931               END_IF;
23932            ELSE
23933               IF use_lp2 THEN
23934                  factors := lp2.factors;
23935                  REPEAT i := 1 TO SIZEOF(factors);
23936                     IF et1.extender <> factors[i] THEN
23937                        RETURN (?);
23938                     END_IF;
23939                  END_REPEAT;
23940                  tspace := assoc_product_space(et1.base, lp2);
23941                  tspace := make_extended_tuple_space(tspace, et1.extender);
23942               ELSE
23943                  IF et1.extender = et2.extender THEN
23944                     tspace := assoc_product_space(et1, et2.base);
23945                  ELSE
23946                     RETURN (?);
23947                  END_IF;
23948               END_IF;
23949            END_IF;
23950         END_IF;
23951      END_IF;
23952      RETURN (tspace);
23953END_FUNCTION;
23954
23955FUNCTION associated_surface
23956      (arg : pcurve_or_surface ) : surface;
23957   LOCAL
23958      surf : surface;
23959   END_LOCAL;
23960      IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(arg) THEN
23961         surf := arg\pcurve.basis_surface;
23962      ELSE
23963         surf := arg;
23964      END_IF;
23965      RETURN (surf);
23966END_FUNCTION;
23967
23968-- IN AP242
23969FUNCTION atan2
23970      (y : REAL;
23971       x : REAL ) : REAL;
23972   LOCAL
23973      r : REAL;
23974   END_LOCAL;
23975      IF (y = 0.0) AND (x = 0.0) THEN
23976         RETURN (?);
23977      END_IF;
23978      r := atan(y, x);
23979      IF x < 0.0 THEN
23980         IF y < 0.0 THEN
23981            r := r - 3.14159;
23982         ELSE
23983            r := r + 3.14159;
23984         END_IF;
23985      END_IF;
23986      RETURN (r);
23987END_FUNCTION;
23988
23989-- DIFF IN AP214
23990FUNCTION bag_to_set
23991      (the_bag : BAG [0:?] OF GENERIC : intype ) : SET [0:?] OF GENERIC : intype;
23992   LOCAL
23993      the_set : SET OF GENERIC : intype := [];
23994   END_LOCAL;
23995      IF SIZEOF(the_bag) > 0 THEN
23996         REPEAT i := 1 TO HIINDEX(the_bag);
23997            the_set := the_set + the_bag[i];
23998         END_REPEAT;
23999      END_IF;
24000      RETURN (the_set);
24001END_FUNCTION;
24002
24003FUNCTION base_axis
24004      (dim : INTEGER;
24005       axis1 : direction;
24006       axis2 : direction;
24007       axis3 : direction ) : LIST [2:3] OF direction;
24008   LOCAL
24009      u : LIST [2:3] OF direction;
24010      factor : REAL;
24011      d1 : direction;
24012      d2 : direction;
24013   END_LOCAL;
24014      IF dim = 3 THEN
24015         d1 := NVL(normalise(axis3), dummy_gri || direction([ 0.0, 0.0, 1.0 ]));
24016         d2 := first_proj_axis(d1, axis1);
24017         u := [ d2, second_proj_axis(d1, d2, axis2), d1 ];
24018      ELSE
24019         IF EXISTS(axis1) THEN
24020            d1 := normalise(axis1);
24021            u := [ d1, orthogonal_complement(d1) ];
24022            IF EXISTS(axis2) THEN
24023               factor := dot_product(axis2, u[2]);
24024               IF factor < 0.0 THEN
24025                  u[2].direction_ratios[1] := -u[2].direction_ratios[1];
24026                  u[2].direction_ratios[2] := -u[2].direction_ratios[2];
24027               END_IF;
24028            END_IF;
24029         ELSE
24030            IF EXISTS(axis2) THEN
24031               d1 := normalise(axis2);
24032               u := [ orthogonal_complement(d1), d1 ];
24033               u[1].direction_ratios[1] := -u[1].direction_ratios[1];
24034               u[1].direction_ratios[2] := -u[1].direction_ratios[2];
24035            ELSE
24036               u := [ dummy_gri || direction([ 1.0, 0.0 ]), dummy_gri || direction([ 0.0, 1.0 ]) ];
24037            END_IF;
24038         END_IF;
24039      END_IF;
24040      RETURN (u);
24041END_FUNCTION;
24042
24043-- IN AP242
24044FUNCTION bool
24045      (lgcl : LOGICAL ) : BOOLEAN;
24046      IF NOT EXISTS(lgcl) THEN
24047         RETURN (FALSE);
24048      END_IF;
24049      IF lgcl <> TRUE THEN
24050         RETURN (FALSE);
24051      END_IF;
24052      RETURN (TRUE);
24053END_FUNCTION;
24054
24055FUNCTION boolean_choose
24056      (b : BOOLEAN;
24057       choice1 : GENERIC : item;
24058       choice2 : GENERIC : item ) : GENERIC : item;
24059      IF b THEN
24060         RETURN (choice1);
24061      ELSE
24062         RETURN (choice2);
24063      END_IF;
24064END_FUNCTION;
24065
24066FUNCTION build_2axes
24067      (ref_direction : direction ) : LIST [2:2] OF direction;
24068   LOCAL
24069      d : direction := NVL(normalise(ref_direction), dummy_gri || direction([ 1.0, 0.0 ]));
24070   END_LOCAL;
24071      RETURN ([ d, orthogonal_complement(d) ]);
24072END_FUNCTION;
24073
24074FUNCTION build_axes
24075      (axis : direction;
24076       ref_direction : direction ) : LIST [3:3] OF direction;
24077   LOCAL
24078      d1 : direction;
24079      d2 : direction;
24080   END_LOCAL;
24081      d1 := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0, 1.0 ]));
24082      d2 := first_proj_axis(d1, ref_direction);
24083      RETURN ([ d2, normalise(cross_product(d1, d2))\vector.orientation, d1 ]);
24084END_FUNCTION;
24085
24086-- IN AP203e2/AP242
24087FUNCTION categories_of_product
24088      (obj : product ) : SET [0:?] OF STRING;
24089   LOCAL
24090      category_assignments : BAG OF product_category;
24091      categories : SET OF STRING := [];
24092   END_LOCAL;
24093      category_assignments := USEDIN(obj, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS');
24094      REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1;
24095         categories := categories + category_assignments[i].name;
24096      END_REPEAT;
24097      RETURN (categories);
24098END_FUNCTION;
24099
24100-- IN AP214
24101FUNCTION check_associative_shape_aspects
24102      (sdr : shape_definition_representation ) : BOOLEAN;
24103   LOCAL
24104      sr1 : SET OF representation;
24105      sr2 : SET OF representation;
24106      dm : SET OF representation;
24107      pv : SET OF representation;
24108   END_LOCAL;
24109      IF SIZEOF(sdr.used_representation.items) <> 2 THEN
24110         RETURN (FALSE);
24111      END_IF;
24112      sr1 := using_representations(sdr.used_representation.items[1]);
24113      sr2 := using_representations(sdr.used_representation.items[2]);
24114      REPEAT i := 1 TO HIINDEX(sr1);
24115         dm := representations_mapped_into(sr1[i]);
24116         REPEAT j := 1 TO HIINDEX(dm);
24117            IF 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_MODEL' IN TYPEOF(dm[j]) THEN
24118               IF dm[j] IN sr2 THEN
24119                  RETURN (TRUE);
24120               END_IF;
24121               pv := representations_mapped_into(dm[j]);
24122               REPEAT k := 1 TO HIINDEX(pv);
24123                  IF 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(pv[k]) THEN
24124                     IF pv[k] IN sr2 THEN
24125                        RETURN (TRUE);
24126                     END_IF;
24127                  END_IF;
24128               END_REPEAT;
24129            END_IF;
24130         END_REPEAT;
24131      END_REPEAT;
24132      REPEAT i := 1 TO HIINDEX(sr2);
24133         dm := representations_mapped_into(sr2[i]);
24134         REPEAT j := 1 TO HIINDEX(dm);
24135            IF 'STEP_MERGED_CAD_SCHEMA.DRAUGHTING_MODEL' IN TYPEOF(dm[j]) THEN
24136               IF dm[j] IN sr1 THEN
24137                  RETURN (TRUE);
24138               END_IF;
24139               pv := representations_mapped_into(dm[j]);
24140               REPEAT k := 1 TO HIINDEX(pv);
24141                  IF 'STEP_MERGED_CAD_SCHEMA.PRESENTATION_VIEW' IN TYPEOF(pv[k]) THEN
24142                     IF pv[k] IN sr1 THEN
24143                        RETURN (TRUE);
24144                     END_IF;
24145                  END_IF;
24146               END_REPEAT;
24147            END_IF;
24148         END_REPEAT;
24149      END_REPEAT;
24150      RETURN (FALSE);
24151END_FUNCTION;
24152
24153-- IN AP203e2/AP242
24154FUNCTION check_continuous_edges
24155      (edges : LIST [0:?] OF UNIQUE edge_curve ) : BOOLEAN;
24156   LOCAL
24157      i : INTEGER;
24158      next_vertex : vertex;
24159   END_LOCAL;
24160      IF SIZEOF(edges) = 1 THEN
24161         RETURN (TRUE);
24162      END_IF;
24163      IF (edges[2].edge_start :=: edges[1].edge_end) XOR (edges[2].edge_start :=: edges[1].edge_start) THEN
24164         next_vertex := edges[2].edge_end;
24165      ELSE
24166         IF (edges[2].edge_end :=: edges[1].edge_end) XOR (edges[2].edge_end :=: edges[1].edge_start) THEN
24167            next_vertex := edges[2].edge_start;
24168         ELSE
24169            RETURN (FALSE);
24170         END_IF;
24171      END_IF;
24172      IF SIZEOF(edges) = 2 THEN
24173         RETURN (TRUE);
24174      END_IF;
24175      REPEAT i := 3 TO HIINDEX(edges);
24176         IF edges[i].edge_start :=: next_vertex THEN
24177            next_vertex := edges[i].edge_end;
24178         ELSE
24179            IF edges[i].edge_end :=: next_vertex THEN
24180               next_vertex := edges[i].edge_start;
24181            ELSE
24182               RETURN (FALSE);
24183            END_IF;
24184         END_IF;
24185      END_REPEAT;
24186      RETURN (TRUE);
24187END_FUNCTION;
24188
24189-- IN AP242
24190FUNCTION check_curve_planarity
24191      (checked_curve : curve ) : BOOLEAN;
24192   LOCAL
24193      crv : curve := checked_curve;
24194      i : INTEGER;
24195      j : INTEGER;
24196      result : BOOLEAN := FALSE;
24197   END_LOCAL;
24198      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.LINE' ] * TYPEOF(crv)) > 0 THEN
24199         result := TRUE;
24200      ELSE
24201         IF ('STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' IN TYPEOF(crv)) AND check_curve_planarity(crv\trimmed_curve.basis_curve) THEN
24202            result := TRUE;
24203         ELSE
24204            IF ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(crv)) AND ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(crv\pcurve.basis_surface)) THEN
24205               result := TRUE;
24206            ELSE
24207               IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(crv) THEN
24208                  BEGIN
24209                     REPEAT j := 1 TO HIINDEX(crv\surface_curve.basis_surface);
24210                        IF 'STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(crv\surface_curve.basis_surface[j]) THEN
24211                           result := TRUE;
24212                        END_IF;
24213                     END_REPEAT;
24214                  END;
24215               END_IF;
24216            END_IF;
24217         END_IF;
24218      END_IF;
24219      RETURN (result);
24220END_FUNCTION;
24221
24222-- IN AP242
24223FUNCTION check_sparse_index_domain
24224      (idxdom : tuple_space;
24225       base : zero_or_one;
24226       shape : LIST [1:?] OF positive_integer;
24227       order : ordering_type ) : BOOLEAN;
24228   LOCAL
24229      mthspc : maths_space;
24230      interval : finite_integer_interval;
24231      i : INTEGER;
24232   END_LOCAL;
24233      mthspc := factor1(idxdom);
24234      interval := mthspc;
24235      IF order = by_rows THEN
24236         i := 1;
24237      ELSE
24238         i := 2;
24239      END_IF;
24240      RETURN (bool((interval.min <= base) AND (interval.max >= base + shape[i])));
24241END_FUNCTION;
24242
24243-- IN AP242
24244FUNCTION check_sparse_index_to_loc
24245      (index_range : tuple_space;
24246       loc_domain : tuple_space ) : BOOLEAN;
24247   LOCAL
24248      temp : maths_space;
24249      idx_rng_itvl : finite_integer_interval;
24250      loc_dmn_itvl : finite_integer_interval;
24251   END_LOCAL;
24252      temp := factor1(index_range);
24253      IF schema_prefix + 'TUPLE_SPACE' IN TYPEOF(temp) THEN
24254         temp := factor1(temp);
24255      END_IF;
24256      IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
24257         RETURN (FALSE);
24258      END_IF;
24259      idx_rng_itvl := temp;
24260      temp := factor1(loc_domain);
24261      IF schema_prefix + 'TUPLE_SPACE' IN TYPEOF(temp) THEN
24262         temp := factor1(temp);
24263      END_IF;
24264      IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
24265         RETURN (FALSE);
24266      END_IF;
24267      loc_dmn_itvl := temp;
24268      RETURN (bool((loc_dmn_itvl.min <= idx_rng_itvl.min) AND (idx_rng_itvl.max <= loc_dmn_itvl.max + 1)));
24269END_FUNCTION;
24270
24271-- IN AP242
24272FUNCTION check_sparse_loc_range
24273      (locrng : tuple_space;
24274       base : zero_or_one;
24275       shape : LIST [1:?] OF positive_integer;
24276       order : ordering_type ) : BOOLEAN;
24277   LOCAL
24278      mthspc : maths_space;
24279      interval : finite_integer_interval;
24280      i : INTEGER;
24281   END_LOCAL;
24282      IF space_dimension(locrng) <> 1 THEN
24283         RETURN (FALSE);
24284      END_IF;
24285      mthspc := factor1(locrng);
24286      IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(mthspc)) THEN
24287         RETURN (FALSE);
24288      END_IF;
24289      interval := mthspc;
24290      IF order = by_rows THEN
24291         i := 2;
24292      ELSE
24293         i := 1;
24294      END_IF;
24295      RETURN (bool((interval.min >= base) AND (interval.max <= base + shape[i] - 1)));
24296END_FUNCTION;
24297
24298FUNCTION check_text_alignment
24299      (ct : composite_text ) : BOOLEAN;
24300   LOCAL
24301      a : SET OF text_alignment := [];
24302   END_LOCAL;
24303      REPEAT i := 1 TO HIINDEX(ct.collected_text);
24304         a := a + [ ct.collected_text[i]\text_literal.alignment ];
24305      END_REPEAT;
24306      RETURN (SIZEOF(a) = 1);
24307END_FUNCTION;
24308
24309FUNCTION check_text_font
24310      (ct : composite_text ) : BOOLEAN;
24311   LOCAL
24312      f : SET OF font_select := [];
24313   END_LOCAL;
24314      REPEAT i := 1 TO HIINDEX(ct.collected_text);
24315         f := f + [ ct.collected_text[i]\text_literal.font ];
24316      END_REPEAT;
24317      RETURN (SIZEOF(f) <= 1);
24318END_FUNCTION;
24319
24320-- DIFF IN AP203e2
24321-- IN AP203e2/AP242
24322FUNCTION class_assignment_is_valid
24323      (aia : applied_classification_assignment ) : BOOLEAN;
24324   LOCAL
24325      item : classification_item;
24326      role : classification_role;
24327   END_LOCAL;
24328      role := aia\classification_assignment.role;
24329      IF 'STEP_MERGED_CAD_SCHEMA.CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class) THEN
24330         IF role\classification_role.name <> 'class system membership' THEN
24331            RETURN (FALSE);
24332         END_IF;
24333         REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
24334            item := aia\applied_classification_assignment.items[i];
24335            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CHARACTERIZED_CLASS' ] * TYPEOF(item)) = 0 THEN
24336               RETURN (FALSE);
24337            END_IF;
24338         END_REPEAT;
24339      END_IF;
24340      IF 'STEP_MERGED_CAD_SCHEMA.CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class) THEN
24341         IF NOT (role\classification_role.name IN [ 'definitional', 'non-definitional', '' ]) THEN
24342            RETURN (FALSE);
24343         END_IF;
24344         REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
24345            item := aia\applied_classification_assignment.items[i];
24346            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CLASSIFIED_ITEM' ] * TYPEOF(item)) = 0 THEN
24347               RETURN (FALSE);
24348            END_IF;
24349         END_REPEAT;
24350      END_IF;
24351      IF role\classification_role.name = 'definitional' THEN
24352         IF NOT (SIZEOF(QUERY (it <* aia\applied_classification_assignment.items| NOT (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.PRODUCT', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_FORMATION', 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' ] * TYPEOF(it)) = 1))) = 0) THEN
24353            RETURN (FALSE);
24354         END_IF;
24355      END_IF;
24356      RETURN (TRUE);
24357END_FUNCTION;
24358
24359FUNCTION closed_shell_reversed
24360      (a_shell : closed_shell ) : oriented_closed_shell;
24361   LOCAL
24362      the_reverse : oriented_closed_shell;
24363   END_LOCAL;
24364      IF 'STEP_MERGED_CAD_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell) THEN
24365         the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || closed_shell() || oriented_closed_shell(a_shell\oriented_closed_shell.closed_shell_element, NOT a_shell\oriented_closed_shell.orientation);
24366      ELSE
24367         the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || closed_shell() || oriented_closed_shell(a_shell, FALSE);
24368      END_IF;
24369      RETURN (the_reverse);
24370END_FUNCTION;
24371
24372-- IN AP242
24373FUNCTION collect_joints
24374      (items : SET [1:?] OF pair_representation_relationship ) : SET [0:?] OF kinematic_joint;
24375   LOCAL
24376      result : SET OF kinematic_joint := [];
24377   END_LOCAL;
24378      REPEAT i := 1 TO HIINDEX(items);
24379         result := result + items[i].transformation_operator.joint;
24380      END_REPEAT;
24381      RETURN (result);
24382END_FUNCTION;
24383
24384-- IN AP242
24385FUNCTION compare_basis_and_coef
24386      (basis : LIST [1:?] OF b_spline_basis;
24387       coef : maths_function ) : BOOLEAN;
24388   LOCAL
24389      shape : LIST OF positive_integer;
24390   END_LOCAL;
24391      IF NOT EXISTS(basis) OR NOT EXISTS(coef) THEN
24392         RETURN (FALSE);
24393      END_IF;
24394      shape := shape_of_array(coef);
24395      IF NOT EXISTS(shape) THEN
24396         RETURN (FALSE);
24397      END_IF;
24398      IF SIZEOF(shape) < SIZEOF(basis) THEN
24399         RETURN (FALSE);
24400      END_IF;
24401      REPEAT i := 1 TO SIZEOF(basis);
24402         IF (basis[i].num_basis = shape[i]) <> TRUE THEN
24403            RETURN (FALSE);
24404         END_IF;
24405      END_REPEAT;
24406      RETURN (TRUE);
24407END_FUNCTION;
24408
24409-- IN AP242
24410FUNCTION compatible_complex_number_regions
24411      (sp1 : maths_space;
24412       sp2 : maths_space ) : BOOLEAN;
24413   LOCAL
24414      typenames : SET OF STRING := stripped_typeof(sp1);
24415      crgn1 : cartesian_complex_number_region;
24416      crgn2 : cartesian_complex_number_region;
24417      prgn1 : polar_complex_number_region;
24418      prgn2 : polar_complex_number_region;
24419      prgn1c2 : polar_complex_number_region;
24420      prgn2c1 : polar_complex_number_region;
24421      sp1_is_crgn : BOOLEAN;
24422      sp2_is_crgn : BOOLEAN;
24423   END_LOCAL;
24424      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
24425         sp1_is_crgn := TRUE;
24426         crgn1 := sp1;
24427      ELSE
24428         IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
24429            sp1_is_crgn := FALSE;
24430            prgn1 := sp1;
24431         ELSE
24432            RETURN (TRUE);
24433         END_IF;
24434      END_IF;
24435      typenames := stripped_typeof(sp2);
24436      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
24437         sp2_is_crgn := TRUE;
24438         crgn2 := sp2;
24439      ELSE
24440         IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
24441            sp2_is_crgn := FALSE;
24442            prgn2 := sp2;
24443         ELSE
24444            RETURN (TRUE);
24445         END_IF;
24446      END_IF;
24447      IF sp1_is_crgn AND sp2_is_crgn THEN
24448         RETURN (compatible_intervals(crgn1.real_constraint, crgn2.real_constraint) AND compatible_intervals(crgn1.imag_constraint, crgn2.imag_constraint));
24449      END_IF;
24450      IF ((NOT sp1_is_crgn AND NOT sp2_is_crgn) AND (prgn1.centre.real_part = prgn2.centre.real_part)) AND (prgn1.centre.imag_part = prgn2.centre.imag_part) THEN
24451         IF NOT compatible_intervals(prgn1.distance_constraint, prgn2.distance_constraint) THEN
24452            RETURN (FALSE);
24453         END_IF;
24454         IF compatible_intervals(prgn1.direction_constraint, prgn2.direction_constraint) THEN
24455            RETURN (TRUE);
24456         END_IF;
24457         IF (prgn1.direction_constraint.max > 3.14159) AND (prgn2.direction_constraint.max < 3.14159) THEN
24458            RETURN (compatible_intervals(prgn2.direction_constraint, make_finite_real_interval(-3.14159, open, prgn1.direction_constraint.max - 2.0 * 3.14159, prgn1.direction_constraint.max_closure)));
24459         END_IF;
24460         IF (prgn2.direction_constraint.max > 3.14159) AND (prgn1.direction_constraint.max < 3.14159) THEN
24461            RETURN (compatible_intervals(prgn1.direction_constraint, make_finite_real_interval(-3.14159, open, prgn2.direction_constraint.max - 2.0 * 3.14159, prgn2.direction_constraint.max_closure)));
24462         END_IF;
24463         RETURN (FALSE);
24464      END_IF;
24465      IF sp1_is_crgn AND NOT sp2_is_crgn THEN
24466         crgn2 := enclose_pregion_in_cregion(prgn2);
24467         prgn1 := enclose_cregion_in_pregion(crgn1, prgn2.centre);
24468         RETURN (compatible_complex_number_regions(crgn1, crgn2) AND compatible_complex_number_regions(prgn1, prgn2));
24469      END_IF;
24470      IF NOT sp1_is_crgn AND sp2_is_crgn THEN
24471         crgn1 := enclose_pregion_in_cregion(prgn1);
24472         prgn2 := enclose_cregion_in_pregion(crgn2, prgn1.centre);
24473         RETURN (compatible_complex_number_regions(crgn1, crgn2) AND compatible_complex_number_regions(prgn1, prgn2));
24474      END_IF;
24475      prgn1c2 := enclose_pregion_in_pregion(prgn1, prgn2.centre);
24476      prgn2c1 := enclose_pregion_in_pregion(prgn2, prgn1.centre);
24477      RETURN (compatible_complex_number_regions(prgn1, prgn2c1) AND compatible_complex_number_regions(prgn1c2, prgn2));
24478END_FUNCTION;
24479
24480-- IN AP242
24481FUNCTION compatible_es_values
24482      (esval1 : elementary_space_enumerators;
24483       esval2 : elementary_space_enumerators ) : BOOLEAN;
24484   LOCAL
24485      esval1_is_numeric : LOGICAL;
24486      esval2_is_numeric : LOGICAL;
24487   END_LOCAL;
24488      IF ((esval1 = esval2) OR (esval1 = es_generics)) OR (esval2 = es_generics) THEN
24489         RETURN (TRUE);
24490      END_IF;
24491      esval1_is_numeric := (esval1 >= es_numbers) AND (esval1 <= es_integers);
24492      esval2_is_numeric := (esval2 >= es_numbers) AND (esval2 <= es_integers);
24493      IF esval1_is_numeric AND (esval2 = es_numbers) OR esval2_is_numeric AND (esval1 = es_numbers) THEN
24494         RETURN (TRUE);
24495      END_IF;
24496      IF esval1_is_numeric XOR esval2_is_numeric THEN
24497         RETURN (FALSE);
24498      END_IF;
24499      IF (esval1 = es_logicals) AND (esval2 = es_booleans) OR (esval1 = es_booleans) AND (esval2 = es_logicals) THEN
24500         RETURN (TRUE);
24501      END_IF;
24502      RETURN (FALSE);
24503END_FUNCTION;
24504
24505-- IN AP242
24506FUNCTION compatible_intervals
24507      (sp1 : maths_space;
24508       sp2 : maths_space ) : BOOLEAN;
24509   LOCAL
24510      amin : REAL;
24511      amax : REAL;
24512   END_LOCAL;
24513      IF min_exists(sp1) AND max_exists(sp2) THEN
24514         amin := real_min(sp1);
24515         amax := real_max(sp2);
24516         IF amin > amax THEN
24517            RETURN (FALSE);
24518         END_IF;
24519         IF amin = amax THEN
24520            RETURN (min_included(sp1) AND max_included(sp2));
24521         END_IF;
24522      END_IF;
24523      IF min_exists(sp2) AND max_exists(sp1) THEN
24524         amin := real_min(sp2);
24525         amax := real_max(sp1);
24526         IF amin > amax THEN
24527            RETURN (FALSE);
24528         END_IF;
24529         IF amin = amax THEN
24530            RETURN (min_included(sp2) AND max_included(sp1));
24531         END_IF;
24532      END_IF;
24533      RETURN (TRUE);
24534END_FUNCTION;
24535
24536-- IN AP242
24537FUNCTION compatible_spaces
24538      (sp1 : maths_space;
24539       sp2 : maths_space ) : BOOLEAN;
24540   LOCAL
24541      types1 : SET OF STRING := stripped_typeof(sp1);
24542      types2 : SET OF STRING := stripped_typeof(sp2);
24543      lgcl : LOGICAL := UNKNOWN;
24544      m : INTEGER;
24545      n : INTEGER;
24546      s1 : maths_space;
24547      s2 : maths_space;
24548   END_LOCAL;
24549      IF 'FINITE_SPACE' IN types1 THEN
24550         REPEAT i := 1 TO SIZEOF(sp1\finite_space.members);
24551            lgcl := member_of(sp1\finite_space.members[i], sp2);
24552            IF lgcl <> FALSE THEN
24553               RETURN (TRUE);
24554            END_IF;
24555         END_REPEAT;
24556         RETURN (FALSE);
24557      END_IF;
24558      IF 'FINITE_SPACE' IN types2 THEN
24559         REPEAT i := 1 TO SIZEOF(sp2\finite_space.members);
24560            lgcl := member_of(sp2\finite_space.members[i], sp1);
24561            IF lgcl <> FALSE THEN
24562               RETURN (TRUE);
24563            END_IF;
24564         END_REPEAT;
24565         RETURN (FALSE);
24566      END_IF;
24567      IF 'ELEMENTARY_SPACE' IN types1 THEN
24568         IF sp1\elementary_space.space_id = es_generics THEN
24569            RETURN (TRUE);
24570         END_IF;
24571         IF 'ELEMENTARY_SPACE' IN types2 THEN
24572            RETURN (compatible_es_values(sp1\elementary_space.space_id, sp2\elementary_space.space_id));
24573         END_IF;
24574         IF (('FINITE_INTEGER_INTERVAL' IN types2) OR ('INTEGER_INTERVAL_FROM_MIN' IN types2)) OR ('INTEGER_INTERVAL_TO_MAX' IN types2) THEN
24575            RETURN (compatible_es_values(sp1\elementary_space.space_id, es_integers));
24576         END_IF;
24577         IF (('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN' IN types2)) OR ('REAL_INTERVAL_TO_MAX' IN types2) THEN
24578            RETURN (compatible_es_values(sp1\elementary_space.space_id, es_reals));
24579         END_IF;
24580         IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types2) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types2) THEN
24581            RETURN (compatible_es_values(sp1\elementary_space.space_id, es_complex_numbers));
24582         END_IF;
24583         IF 'TUPLE_SPACE' IN types2 THEN
24584            RETURN (FALSE);
24585         END_IF;
24586         IF 'FUNCTION_SPACE' IN types2 THEN
24587            RETURN (bool(sp1\elementary_space.space_id = es_maths_functions));
24588         END_IF;
24589         RETURN (TRUE);
24590      END_IF;
24591      IF 'ELEMENTARY_SPACE' IN types2 THEN
24592         IF sp2\elementary_space.space_id = es_generics THEN
24593            RETURN (TRUE);
24594         END_IF;
24595         IF (('FINITE_INTEGER_INTERVAL' IN types1) OR ('INTEGER_INTERVAL_FROM_MIN' IN types1)) OR ('INTEGER_INTERVAL_TO_MAX' IN types1) THEN
24596            RETURN (compatible_es_values(sp2\elementary_space.space_id, es_integers));
24597         END_IF;
24598         IF (('FINITE_REAL_INTERVAL' IN types1) OR ('REAL_INTERVAL_FROM_MIN' IN types1)) OR ('REAL_INTERVAL_TO_MAX' IN types1) THEN
24599            RETURN (compatible_es_values(sp2\elementary_space.space_id, es_reals));
24600         END_IF;
24601         IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types1) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types1) THEN
24602            RETURN (compatible_es_values(sp2\elementary_space.space_id, es_complex_numbers));
24603         END_IF;
24604         IF 'TUPLE_SPACE' IN types1 THEN
24605            RETURN (FALSE);
24606         END_IF;
24607         IF 'FUNCTION_SPACE' IN types1 THEN
24608            RETURN (bool(sp2\elementary_space.space_id = es_maths_functions));
24609         END_IF;
24610         RETURN (TRUE);
24611      END_IF;
24612      IF subspace_of_es(sp1, es_integers) THEN
24613         IF subspace_of_es(sp2, es_integers) THEN
24614            RETURN (compatible_intervals(sp1, sp2));
24615         END_IF;
24616         RETURN (FALSE);
24617      END_IF;
24618      IF subspace_of_es(sp2, es_integers) THEN
24619         RETURN (FALSE);
24620      END_IF;
24621      IF subspace_of_es(sp1, es_reals) THEN
24622         IF subspace_of_es(sp2, es_reals) THEN
24623            RETURN (compatible_intervals(sp1, sp2));
24624         END_IF;
24625         RETURN (FALSE);
24626      END_IF;
24627      IF subspace_of_es(sp2, es_reals) THEN
24628         RETURN (FALSE);
24629      END_IF;
24630      IF subspace_of_es(sp1, es_complex_numbers) THEN
24631         IF subspace_of_es(sp2, es_complex_numbers) THEN
24632            RETURN (compatible_complex_number_regions(sp1, sp2));
24633         END_IF;
24634         RETURN (FALSE);
24635      END_IF;
24636      IF subspace_of_es(sp2, es_complex_numbers) THEN
24637         RETURN (FALSE);
24638      END_IF;
24639      IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
24640         IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
24641            IF sp1\uniform_product_space.exponent <> sp2\uniform_product_space.exponent THEN
24642               RETURN (FALSE);
24643            END_IF;
24644            RETURN (compatible_spaces(sp1\uniform_product_space.base, sp2\uniform_product_space.base));
24645         END_IF;
24646         IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
24647            n := SIZEOF(sp2\listed_product_space.factors);
24648            IF sp1\uniform_product_space.exponent <> n THEN
24649               RETURN (FALSE);
24650            END_IF;
24651            REPEAT i := 1 TO n;
24652               IF NOT compatible_spaces(sp1\uniform_product_space.base, sp2\listed_product_space.factors[i]) THEN
24653                  RETURN (FALSE);
24654               END_IF;
24655            END_REPEAT;
24656            RETURN (TRUE);
24657         END_IF;
24658         IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
24659            m := sp1\uniform_product_space.exponent;
24660            n := space_dimension(sp2\extended_tuple_space.base);
24661            IF m < n THEN
24662               RETURN (FALSE);
24663            END_IF;
24664            IF m = n THEN
24665               RETURN (compatible_spaces(sp1, sp2\extended_tuple_space.base));
24666            END_IF;
24667            RETURN (compatible_spaces(sp1, assoc_product_space(sp2\extended_tuple_space.base, make_uniform_product_space(sp2\extended_tuple_space.extender, m - n))));
24668         END_IF;
24669         IF 'FUNCTION_SPACE' IN types2 THEN
24670            RETURN (FALSE);
24671         END_IF;
24672         RETURN (TRUE);
24673      END_IF;
24674      IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
24675         n := SIZEOF(sp1\listed_product_space.factors);
24676         IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
24677            IF n <> sp2\uniform_product_space.exponent THEN
24678               RETURN (FALSE);
24679            END_IF;
24680            REPEAT i := 1 TO n;
24681               IF NOT compatible_spaces(sp2\uniform_product_space.base, sp1\listed_product_space.factors[i]) THEN
24682                  RETURN (FALSE);
24683               END_IF;
24684            END_REPEAT;
24685            RETURN (TRUE);
24686         END_IF;
24687         IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
24688            IF n <> SIZEOF(sp2\listed_product_space.factors) THEN
24689               RETURN (FALSE);
24690            END_IF;
24691            REPEAT i := 1 TO n;
24692               IF NOT compatible_spaces(sp1\listed_product_space.factors[i], sp2\listed_product_space.factors[i]) THEN
24693                  RETURN (FALSE);
24694               END_IF;
24695            END_REPEAT;
24696            RETURN (TRUE);
24697         END_IF;
24698         IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
24699            m := space_dimension(sp2\extended_tuple_space.base);
24700            IF n < m THEN
24701               RETURN (FALSE);
24702            END_IF;
24703            IF n = m THEN
24704               RETURN (compatible_spaces(sp1, sp2\extended_tuple_space.base));
24705            END_IF;
24706            RETURN (compatible_spaces(sp1, assoc_product_space(sp2\extended_tuple_space.base, make_uniform_product_space(sp2\extended_tuple_space.extender, n - m))));
24707         END_IF;
24708         IF schema_prefix + 'FUNCTION_SPACE' IN types2 THEN
24709            RETURN (FALSE);
24710         END_IF;
24711         RETURN (TRUE);
24712      END_IF;
24713      IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
24714         IF ('UNIFORM_PRODUCT_SPACE' IN types2) OR ('LISTED_PRODUCT_SPACE' IN types2) THEN
24715            RETURN (compatible_spaces(sp2, sp1));
24716         END_IF;
24717         IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
24718            IF NOT compatible_spaces(sp1\extended_tuple_space.extender, sp2\extended_tuple_space.extender) THEN
24719               RETURN (FALSE);
24720            END_IF;
24721            n := space_dimension(sp1\extended_tuple_space.base);
24722            m := space_dimension(sp2\extended_tuple_space.base);
24723            IF n < m THEN
24724               RETURN (compatible_spaces(assoc_product_space(sp1\extended_tuple_space.base, make_uniform_product_space(sp1\extended_tuple_space.extender, m - n)), sp2\extended_tuple_space.base));
24725            END_IF;
24726            IF n = m THEN
24727               RETURN (compatible_spaces(sp1\extended_tuple_space.base, sp2\extended_tuple_space.base));
24728            END_IF;
24729            IF n > m THEN
24730               RETURN (compatible_spaces(sp1\extended_tuple_space.base, assoc_product_space(sp2\extended_tuple_space.base, make_uniform_product_space(sp2\extended_tuple_space.extender, n - m))));
24731            END_IF;
24732         END_IF;
24733         IF 'FUNCTION_SPACE' IN types2 THEN
24734            RETURN (FALSE);
24735         END_IF;
24736         RETURN (TRUE);
24737      END_IF;
24738      IF 'FUNCTION_SPACE' IN types1 THEN
24739         IF 'FUNCTION_SPACE' IN types2 THEN
24740            s1 := sp1\function_space.domain_argument;
24741            s2 := sp2\function_space.domain_argument;
24742            CASE sp1\function_space.domain_constraint OF
24743               sc_equal :
24744                     BEGIN
24745                        CASE sp2\function_space.domain_constraint OF
24746                           sc_equal :
24747                                 lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
24748                           sc_subspace :
24749                                 lgcl := subspace_of(s1, s2);
24750                           sc_member :
24751                                 lgcl := member_of(s1, s2);
24752                        END_CASE;
24753                     END;
24754               sc_subspace :
24755                     BEGIN
24756                        CASE sp2\function_space.domain_constraint OF
24757                           sc_equal :
24758                                 lgcl := subspace_of(s2, s1);
24759                           sc_subspace :
24760                                 lgcl := compatible_spaces(s1, s2);
24761                           sc_member :
24762                                 lgcl := UNKNOWN;
24763                        END_CASE;
24764                     END;
24765               sc_member :
24766                     BEGIN
24767                        CASE sp2\function_space.domain_constraint OF
24768                           sc_equal :
24769                                 lgcl := member_of(s2, s1);
24770                           sc_subspace :
24771                                 lgcl := UNKNOWN;
24772                           sc_member :
24773                                 lgcl := compatible_spaces(s1, s2);
24774                        END_CASE;
24775                     END;
24776            END_CASE;
24777            IF lgcl = FALSE THEN
24778               RETURN (FALSE);
24779            END_IF;
24780            s1 := sp1\function_space.range_argument;
24781            s2 := sp2\function_space.range_argument;
24782            CASE sp1\function_space.range_constraint OF
24783               sc_equal :
24784                     BEGIN
24785                        CASE sp2\function_space.range_constraint OF
24786                           sc_equal :
24787                                 lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
24788                           sc_subspace :
24789                                 lgcl := subspace_of(s1, s2);
24790                           sc_member :
24791                                 lgcl := member_of(s1, s2);
24792                        END_CASE;
24793                     END;
24794               sc_subspace :
24795                     BEGIN
24796                        CASE sp2\function_space.range_constraint OF
24797                           sc_equal :
24798                                 lgcl := subspace_of(s2, s1);
24799                           sc_subspace :
24800                                 lgcl := compatible_spaces(s1, s2);
24801                           sc_member :
24802                                 lgcl := UNKNOWN;
24803                        END_CASE;
24804                     END;
24805               sc_member :
24806                     BEGIN
24807                        CASE sp2\function_space.range_constraint OF
24808                           sc_equal :
24809                                 lgcl := member_of(s2, s1);
24810                           sc_subspace :
24811                                 lgcl := UNKNOWN;
24812                           sc_member :
24813                                 lgcl := compatible_spaces(s1, s2);
24814                        END_CASE;
24815                     END;
24816            END_CASE;
24817            IF lgcl = FALSE THEN
24818               RETURN (FALSE);
24819            END_IF;
24820            RETURN (TRUE);
24821         END_IF;
24822         RETURN (TRUE);
24823      END_IF;
24824      RETURN (TRUE);
24825END_FUNCTION;
24826
24827-- IN AP242
24828FUNCTION composable_sequence
24829      (operands : LIST [2:?] OF maths_function ) : BOOLEAN;
24830      REPEAT i := 1 TO SIZEOF(operands) - 1;
24831         IF NOT compatible_spaces(operands[i].range, operands[(i + 1)].domain) THEN
24832            RETURN (FALSE);
24833         END_IF;
24834      END_REPEAT;
24835      RETURN (TRUE);
24836END_FUNCTION;
24837
24838-- IN AP203e2/AP242
24839FUNCTION compute_total_depth
24840      (swsrh : solid_with_stepped_round_hole ) : positive_length_measure;
24841   LOCAL
24842      i : positive_integer;
24843      n : positive_integer := swsrh.segments;
24844      td : positive_length_measure := swsrh.segment_depths[1];
24845   END_LOCAL;
24846      IF n = 1 THEN
24847         RETURN (td);
24848      ELSE
24849         REPEAT i := 2 TO n;
24850            td := td + swsrh.segment_depths[i];
24851         END_REPEAT;
24852      END_IF;
24853      RETURN (td);
24854END_FUNCTION;
24855
24856FUNCTION conditional_reverse
24857      (p : BOOLEAN;
24858       an_item : reversible_topology ) : reversible_topology;
24859      IF p THEN
24860         RETURN (an_item);
24861      ELSE
24862         RETURN (topology_reversed(an_item));
24863      END_IF;
24864END_FUNCTION;
24865
24866FUNCTION constraints_composite_curve_on_surface
24867      (c : composite_curve_on_surface ) : BOOLEAN;
24868   LOCAL
24869      n_segments : INTEGER := SIZEOF(c.segments);
24870   END_LOCAL;
24871      REPEAT k := 1 TO n_segments;
24872         IF (NOT ('STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(c\composite_curve.segments[k].parent_curve)) AND NOT ('STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(c\composite_curve.segments[k].parent_curve))) AND NOT ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\composite_curve.segments[k].parent_curve)) THEN
24873            RETURN (FALSE);
24874         END_IF;
24875      END_REPEAT;
24876      RETURN (TRUE);
24877END_FUNCTION;
24878
24879FUNCTION constraints_geometry_shell_based_surface_model
24880      (m : shell_based_surface_model ) : BOOLEAN;
24881   LOCAL
24882      result : BOOLEAN := TRUE;
24883   END_LOCAL;
24884      REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
24885         IF NOT ('STEP_MERGED_CAD_SCHEMA.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[j])) AND NOT ('STEP_MERGED_CAD_SCHEMA.CLOSED_SHELL' IN TYPEOF(m.sbsm_boundary[j])) THEN
24886            result := FALSE;
24887            RETURN (result);
24888         END_IF;
24889      END_REPEAT;
24890      RETURN (result);
24891END_FUNCTION;
24892
24893-- IN AP203e2/AP242
24894FUNCTION constraints_geometry_shell_based_wireframe_model
24895      (m : shell_based_wireframe_model ) : BOOLEAN;
24896   LOCAL
24897      result : BOOLEAN := TRUE;
24898   END_LOCAL;
24899      REPEAT j := 1 TO SIZEOF(m.sbwm_boundary);
24900         IF NOT ('STEP_MERGED_CAD_SCHEMA.WIRE_SHELL' IN TYPEOF(m.sbwm_boundary[j])) AND NOT ('STEP_MERGED_CAD_SCHEMA.VERTEX_SHELL' IN TYPEOF(m.sbwm_boundary[j])) THEN
24901            result := FALSE;
24902            RETURN (result);
24903         END_IF;
24904      END_REPEAT;
24905      RETURN (result);
24906END_FUNCTION;
24907
24908-- DIFF IN AP214
24909FUNCTION constraints_param_b_spline
24910      (degree : INTEGER;
24911       up_knots : INTEGER;
24912       up_cp : INTEGER;
24913       knot_mult : LIST [0:?] OF INTEGER;
24914       knots : LIST [0:?] OF parameter_value ) : BOOLEAN;
24915   LOCAL
24916      result : BOOLEAN := TRUE;
24917      k : INTEGER;
24918      sum : INTEGER;
24919   END_LOCAL;
24920      sum := knot_mult[1];
24921      REPEAT i := 2 TO up_knots;
24922         sum := sum + knot_mult[i];
24923      END_REPEAT;
24924      IF (((degree < 1) OR (up_knots < 2)) OR (up_cp < degree)) OR (sum <> degree + up_cp + 2) THEN
24925         result := FALSE;
24926         RETURN (result);
24927      END_IF;
24928      k := knot_mult[1];
24929      IF (k < 1) OR (k > degree + 1) THEN
24930         result := FALSE;
24931         RETURN (result);
24932      END_IF;
24933      REPEAT i := 2 TO up_knots;
24934         IF (knot_mult[i] < 1) OR (knots[i] <= knots[(i - 1)]) THEN
24935            result := FALSE;
24936            RETURN (result);
24937         END_IF;
24938         k := knot_mult[i];
24939         IF (i < up_knots) AND (k > degree) THEN
24940            result := FALSE;
24941            RETURN (result);
24942         END_IF;
24943         IF (i = up_knots) AND (k > degree + 1) THEN
24944            result := FALSE;
24945            RETURN (result);
24946         END_IF;
24947      END_REPEAT;
24948      RETURN (result);
24949END_FUNCTION;
24950
24951FUNCTION constraints_rectangular_composite_surface
24952      (s : rectangular_composite_surface ) : BOOLEAN;
24953      REPEAT i := 1 TO s.n_u;
24954         REPEAT j := 1 TO s.n_v;
24955            IF NOT (('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(s.segments[i][j].parent_surface)) OR ('STEP_MERGED_CAD_SCHEMA.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s.segments[i][j].parent_surface))) THEN
24956               RETURN (FALSE);
24957            END_IF;
24958         END_REPEAT;
24959      END_REPEAT;
24960      REPEAT i := 1 TO s.n_u - 1;
24961         REPEAT j := 1 TO s.n_v;
24962            IF s.segments[i][j].u_transition = discontinuous THEN
24963               RETURN (FALSE);
24964            END_IF;
24965         END_REPEAT;
24966      END_REPEAT;
24967      REPEAT i := 1 TO s.n_u;
24968         REPEAT j := 1 TO s.n_v - 1;
24969            IF s.segments[i][j].v_transition = discontinuous THEN
24970               RETURN (FALSE);
24971            END_IF;
24972         END_REPEAT;
24973      END_REPEAT;
24974      RETURN (TRUE);
24975END_FUNCTION;
24976
24977FUNCTION control_characters_free
24978      (s : STRING ) : BOOLEAN;
24979   LOCAL
24980      ch : STRING;
24981   END_LOCAL;
24982      REPEAT i := 1 TO LENGTH(s);
24983         ch := s[i];
24984         IF ((ch = '\x9') OR (ch = '\xA')) OR (ch = '\xD') THEN
24985            RETURN (FALSE);
24986         END_IF;
24987      END_REPEAT;
24988      RETURN (TRUE);
24989END_FUNCTION;
24990
24991-- IN AP214
24992FUNCTION convert_plane_angle_for_pair_from_radian
24993      (pair : kinematic_pair;
24994       angle_expr : REAL ) : plane_angle_measure;
24995   LOCAL
24996      link_rep : kinematic_link_representation (*:= representation_of_link(pair.joint.first_link)*);
24997      link_cntxt : representation_context;
24998      pa_units : SET OF unit := [];
24999      pau : unit;
25000      conv_factor : REAL := 1.0;
25001      result : plane_angle_measure;
25002   END_LOCAL;
25003      link_cntxt := link_rep\representation.context_of_items;
25004      IF NOT ('STEP_MERGED_CAD_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(link_cntxt)) THEN
25005         RETURN (?);
25006      END_IF;
25007      pa_units := QUERY (unit <* link_cntxt\global_unit_assigned_context.units| 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
25008      IF SIZEOF(pa_units) <> 1 THEN
25009         RETURN (?);
25010      END_IF;
25011      pau := pa_units[1];
25012      IF NOT ('STEP_MERGED_CAD_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) THEN
25013         RETURN (?);
25014      END_IF;
25015      REPEAT WHILE 'STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau);
25016         conv_factor := conv_factor * pau\conversion_based_unit.conversion_factor.value_component;
25017         pau := pau\conversion_based_unit.conversion_factor.unit_component;
25018         IF NOT ('STEP_MERGED_CAD_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) OR NOT ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(pau)) THEN
25019            RETURN (?);
25020         END_IF;
25021      END_REPEAT;
25022      IF pau\si_unit.name <> si_unit_name.radian THEN
25023         RETURN (?);
25024      END_IF;
25025      CASE pau\si_unit.prefix OF
25026         si_prefix.exa :
25027               conv_factor := 1.0E+018 * conv_factor;
25028         si_prefix.peta :
25029               conv_factor := 1.0E+015 * conv_factor;
25030         si_prefix.tera :
25031               conv_factor := 1.0E+012 * conv_factor;
25032         si_prefix.giga :
25033               conv_factor := 1.0E+009 * conv_factor;
25034         si_prefix.mega :
25035               conv_factor := 1.0E+006 * conv_factor;
25036         si_prefix.kilo :
25037               conv_factor := 1000.00 * conv_factor;
25038         si_prefix.hecto :
25039               conv_factor := 100.000 * conv_factor;
25040         si_prefix.deca :
25041               conv_factor := 10.0 * conv_factor;
25042         si_prefix.deci :
25043               conv_factor := 0.100000 * conv_factor;
25044         si_prefix.centi :
25045               conv_factor := 0.0100000 * conv_factor;
25046         si_prefix.milli :
25047               conv_factor := 0.00100000 * conv_factor;
25048         si_prefix.micro :
25049               conv_factor := 1.0E-006 * conv_factor;
25050         si_prefix.nano :
25051               conv_factor := 1.0E-009 * conv_factor;
25052         si_prefix.pico :
25053               conv_factor := 1.0E-012 * conv_factor;
25054         si_prefix.femto :
25055               conv_factor := 1.0E-015 * conv_factor;
25056         si_prefix.atto :
25057               conv_factor := 1.0E-018 * conv_factor;
25058      END_CASE;
25059      result := angle_expr / conv_factor;
25060      RETURN (result);
25061END_FUNCTION;
25062
25063-- DIFF IN AP214
25064-- IN AP214/AP242
25065FUNCTION convert_spatial_to_ypr_rotation
25066      (pair : kinematic_pair;
25067       rotation : spatial_rotation ) : ypr_rotation;
25068   LOCAL
25069      axis : direction;
25070      angle : plane_angle_measure;
25071      conv_angle : plane_angle_measure;
25072      ya : plane_angle_measure;
25073      pa : plane_angle_measure;
25074      ra : plane_angle_measure;
25075      ucf : REAL;
25076      dx : REAL;
25077      dy : REAL;
25078      dz : REAL;
25079      s_a : REAL;
25080      c_a : REAL;
25081      rotmat : ARRAY [1:3] OF ARRAY [1:3] OF REAL;
25082      cm1 : REAL;
25083      s_y : REAL;
25084      c_y : REAL;
25085      s_r : REAL;
25086      c_r : REAL;
25087   END_LOCAL;
25088      IF 'STEP_MERGED_CAD_SCHEMA.YPR_ROTATION' IN TYPEOF(rotation) THEN
25089         RETURN (rotation);
25090      END_IF;
25091      axis := normalise(rotation\rotation_about_direction.direction_of_axis);
25092      angle := rotation\rotation_about_direction.rotation_angle;
25093      IF angle = 0.0 THEN
25094         RETURN ([ 0.0, 0.0, 0.0 ]);
25095      END_IF;
25096      dx := axis.direction_ratios[1];
25097      dy := axis.direction_ratios[2];
25098      dz := axis.direction_ratios[3];
25099      conv_angle := plane_angle_for_pair_in_radian(pair, angle);
25100      IF NOT ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(conv_angle)) THEN
25101         RETURN (?);
25102      END_IF;
25103      ucf := angle / conv_angle;
25104      s_a := sin(conv_angle);
25105      c_a := cos(conv_angle);
25106      IF (dy = 0.0) AND (dx * dz = 0.0) THEN
25107         REPEAT WHILE conv_angle <= -3.14159;
25108            conv_angle := conv_angle + 2.0 * 3.14159;
25109         END_REPEAT;
25110         REPEAT WHILE conv_angle > 3.14159;
25111            conv_angle := conv_angle - 2.0 * 3.14159;
25112         END_REPEAT;
25113         ya := ucf * conv_angle;
25114         IF conv_angle <> 3.14159 THEN
25115            ra := -ya;
25116         ELSE
25117            ra := ya;
25118         END_IF;
25119         IF dx <> 0.0 THEN
25120            IF dx > 0.0 THEN
25121               RETURN ([ 0.0, 0.0, ya ]);
25122            ELSE
25123               RETURN ([ 0.0, 0.0, ra ]);
25124            END_IF;
25125         ELSE
25126            IF dz > 0.0 THEN
25127               RETURN ([ ya, 0.0, 0.0 ]);
25128            ELSE
25129               RETURN ([ ra, 0.0, 0.0 ]);
25130            END_IF;
25131         END_IF;
25132      END_IF;
25133      IF ((dy <> 0.0) AND (dx = 0.0)) AND (dz = 0.0) THEN
25134         IF c_a >= 0.0 THEN
25135            ya := 0.0;
25136            ra := 0.0;
25137         ELSE
25138            ya := ucf * 3.14159;
25139            ra := ya;
25140         END_IF;
25141         pa := ucf * atan(s_a, ABS(c_a));
25142         IF dy < 0.0 THEN
25143            pa := -pa;
25144         END_IF;
25145         RETURN ([ ya, pa, ra ]);
25146      END_IF;
25147      cm1 := 1.0 - c_a;
25148      rotmat := [ [ dx * dx * cm1 + c_a, dx * dy * cm1 - dz * s_a, dx * dz * cm1 + dy * s_a ], [ dx * dy * cm1 + dz * s_a, dy * dy * cm1 + c_a, dy * dz * cm1 - dx * s_a ], [ dx * dz * cm1 - dy * s_a, dy * dz * cm1 + dx * s_a, dz * dz * cm1 + c_a ] ];
25149      IF ABS(rotmat[1][3]) = 1.0 THEN
25150         BEGIN
25151            IF rotmat[1][3] = 1.0 THEN
25152               pa := 0.500000 * 3.14159;
25153            ELSE
25154               pa := -0.500000 * 3.14159;
25155            END_IF;
25156            ra := 0.0;
25157            ya := atan(rotmat[2][1], rotmat[2][2]);
25158            IF rotmat[2][2] < 0.0 THEN
25159               IF ya <= 0.0 THEN
25160                  ya := ya + 3.14159;
25161               ELSE
25162                  ya := ya - 3.14159;
25163               END_IF;
25164            END_IF;
25165         END;
25166      ELSE
25167         BEGIN
25168            ya := atan(-rotmat[1][2], rotmat[1][1]);
25169            IF rotmat[1][1] < 0.0 THEN
25170               IF ya <= 0.0 THEN
25171                  ya := ya + 3.14159;
25172               ELSE
25173                  ya := ya - 3.14159;
25174               END_IF;
25175            END_IF;
25176            ra := atan(-rotmat[2][3], rotmat[3][3]);
25177            IF rotmat[3][3] < 0.0 THEN
25178               IF ra <= 0.0 THEN
25179                  ra := ra + 3.14159;
25180               ELSE
25181                  ra := ra - 3.14159;
25182               END_IF;
25183            END_IF;
25184            s_y := sin(ya);
25185            c_y := cos(ya);
25186            s_r := sin(ra);
25187            c_r := cos(ra);
25188            IF ((ABS(s_y) > ABS(c_y)) AND (ABS(s_y) > ABS(s_r))) AND (ABS(s_y) > ABS(c_r)) THEN
25189               cm1 := -rotmat[1][2] / s_y;
25190            ELSE
25191               IF (ABS(c_y) > ABS(s_r)) AND (ABS(c_y) > ABS(c_r)) THEN
25192                  cm1 := rotmat[1][1] / c_y;
25193               ELSE
25194                  IF ABS(s_r) > ABS(c_r) THEN
25195                     cm1 := -rotmat[2][3] / s_r;
25196                  ELSE
25197                     cm1 := rotmat[3][3] / c_r;
25198                  END_IF;
25199               END_IF;
25200            END_IF;
25201            pa := atan(rotmat[1][3], cm1);
25202         END;
25203      END_IF;
25204      ya := ya * ucf;
25205      pa := pa * ucf;
25206      ra := ra * ucf;
25207      RETURN ([ ya, pa, ra ]);
25208END_FUNCTION;
25209
25210-- IN AP242
25211FUNCTION convert_to_literal
25212      (val : maths_atom ) : generic_literal;
25213   LOCAL
25214      types : SET OF STRING := TYPEOF(val);
25215   END_LOCAL;
25216      IF 'INTEGER' IN types THEN
25217         RETURN (make_int_literal(val));
25218      END_IF;
25219      IF 'REAL' IN types THEN
25220         RETURN (make_real_literal(val));
25221      END_IF;
25222      IF 'BOOLEAN' IN types THEN
25223         RETURN (make_boolean_literal(val));
25224      END_IF;
25225      IF 'STRING' IN types THEN
25226         RETURN (make_string_literal(val));
25227      END_IF;
25228      IF 'LOGICAL' IN types THEN
25229         RETURN (make_logical_literal(val));
25230      END_IF;
25231      IF 'BINARY' IN types THEN
25232         RETURN (make_binary_literal(val));
25233      END_IF;
25234      IF schema_prefix + 'MATHS_ENUM_ATOM' IN types THEN
25235         RETURN (make_maths_enum_literal(val));
25236      END_IF;
25237      RETURN (?);
25238END_FUNCTION;
25239
25240-- IN AP242
25241FUNCTION convert_to_maths_function
25242      (func : maths_function_select ) : maths_function;
25243   LOCAL
25244      efenum : elementary_function_enumerators;
25245      mthfun : maths_function;
25246   END_LOCAL;
25247      IF schema_prefix + 'MATHS_FUNCTION' IN TYPEOF(func) THEN
25248         mthfun := func;
25249      ELSE
25250         efenum := func;
25251         mthfun := make_elementary_function(efenum);
25252      END_IF;
25253      RETURN (mthfun);
25254END_FUNCTION;
25255
25256-- IN AP242
25257FUNCTION convert_to_maths_value
25258      (val : GENERIC : G ) : maths_value;
25259   LOCAL
25260      types : SET OF STRING := TYPEOF(val);
25261      ival : maths_integer;
25262      rval : maths_real;
25263      nval : maths_number;
25264      tfval : maths_boolean;
25265      lval : maths_logical;
25266      sval : maths_string;
25267      bval : maths_binary;
25268      tval : maths_tuple := the_empty_maths_tuple;
25269      mval : maths_value;
25270   END_LOCAL;
25271      IF schema_prefix + 'MATHS_VALUE' IN types THEN
25272         RETURN (val);
25273      END_IF;
25274      IF 'INTEGER' IN types THEN
25275         ival := val;
25276         RETURN (ival);
25277      END_IF;
25278      IF 'REAL' IN types THEN
25279         rval := val;
25280         RETURN (rval);
25281      END_IF;
25282      IF 'NUMBER' IN types THEN
25283         nval := val;
25284         RETURN (nval);
25285      END_IF;
25286      IF 'BOOLEAN' IN types THEN
25287         tfval := val;
25288         RETURN (tfval);
25289      END_IF;
25290      IF 'LOGICAL' IN types THEN
25291         lval := val;
25292         RETURN (lval);
25293      END_IF;
25294      IF 'STRING' IN types THEN
25295         sval := val;
25296         RETURN (sval);
25297      END_IF;
25298      IF 'BINARY' IN types THEN
25299         bval := val;
25300         RETURN (bval);
25301      END_IF;
25302      IF 'LIST' IN types THEN
25303         REPEAT i := 1 TO SIZEOF(val);
25304            mval := convert_to_maths_value(val[i]);
25305            IF NOT EXISTS(mval) THEN
25306               RETURN (?);
25307            END_IF;
25308            INSERT( tval, mval, i - 1 );
25309         END_REPEAT;
25310         RETURN (tval);
25311      END_IF;
25312      RETURN (?);
25313END_FUNCTION;
25314
25315-- IN AP242
25316FUNCTION convert_to_operand
25317      (val : maths_value ) : generic_expression;
25318   LOCAL
25319      types : SET OF STRING := stripped_typeof(val);
25320   END_LOCAL;
25321      IF 'GENERIC_EXPRESSION' IN types THEN
25322         RETURN (val);
25323      END_IF;
25324      IF 'MATHS_ATOM' IN types THEN
25325         RETURN (convert_to_literal(val));
25326      END_IF;
25327      IF 'ATOM_BASED_VALUE' IN types THEN
25328         RETURN (make_atom_based_literal(val));
25329      END_IF;
25330      IF 'MATHS_TUPLE' IN types THEN
25331         RETURN (make_maths_tuple_literal(val));
25332      END_IF;
25333      RETURN (?);
25334END_FUNCTION;
25335
25336-- IN AP242
25337FUNCTION convert_to_operands
25338      (values : AGGREGATE OF maths_value ) : LIST [0:?] OF generic_expression;
25339   LOCAL
25340      operands : LIST OF generic_expression := [];
25341      loc : INTEGER := 0;
25342   END_LOCAL;
25343      IF NOT EXISTS(values) THEN
25344         RETURN (?);
25345      END_IF;
25346      REPEAT i := LOINDEX(values) TO HIINDEX(values);
25347         INSERT( operands, convert_to_operand(values[i]), loc );
25348         loc := loc + 1;
25349      END_REPEAT;
25350      RETURN (operands);
25351END_FUNCTION;
25352
25353-- IN AP242
25354FUNCTION convert_to_operands_prcmfn
25355      (srcdom : maths_space_or_function;
25356       prepfun : LIST [0:?] OF maths_function;
25357       finfun : maths_function_select ) : LIST [2:?] OF generic_expression;
25358   LOCAL
25359      operands : LIST OF generic_expression := [];
25360   END_LOCAL;
25361      INSERT( operands, srcdom, 0 );
25362      REPEAT i := 1 TO SIZEOF(prepfun);
25363         INSERT( operands, prepfun[i], i );
25364      END_REPEAT;
25365      INSERT( operands, convert_to_maths_function(finfun), SIZEOF(prepfun) + 1 );
25366      RETURN (operands);
25367END_FUNCTION;
25368
25369-- IN AP214
25370FUNCTION coordinated_pair_link_representation
25371      (link : kinematic_link;
25372       pair_placement : rigid_placement ) : BOOLEAN;
25373   LOCAL
25374      link_rep : kinematic_link_representation;
25375   END_LOCAL;
25376      link_rep := representation_of_link(link);
25377      IF link_rep = ? THEN
25378         RETURN (FALSE);
25379      ELSE
25380         IF NOT (pair_placement IN link_rep\representation.items) THEN
25381            RETURN (FALSE);
25382         ELSE
25383            RETURN (TRUE);
25384         END_IF;
25385      END_IF;
25386END_FUNCTION;
25387
25388-- DIFF IN AP214
25389FUNCTION cross_product
25390      (arg1 : direction;
25391       arg2 : direction ) : vector;
25392   LOCAL
25393      mag : REAL;
25394      res : direction;
25395      v1 : LIST [3:3] OF REAL;
25396      v2 : LIST [3:3] OF REAL;
25397      result : vector;
25398   END_LOCAL;
25399      IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.dim = 2)) THEN
25400         RETURN (?);
25401      ELSE
25402         BEGIN
25403            v1 := normalise(arg1).direction_ratios;
25404            v2 := normalise(arg2).direction_ratios;
25405            res := dummy_gri || direction([ (v1[2] * v2[3] - v1[3] * v2[2]), (v1[3] * v2[1] - v1[1] * v2[3]), (v1[1] * v2[2] - v1[2] * v2[1]) ]);
25406            mag := 0.0;
25407            REPEAT i := 1 TO 3;
25408               mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
25409            END_REPEAT;
25410            IF mag > 0.0 THEN
25411               result := dummy_gri || vector(res, SQRT(mag));
25412            ELSE
25413               result := dummy_gri || vector(arg1, 0.0);
25414            END_IF;
25415            RETURN (result);
25416         END;
25417      END_IF;
25418END_FUNCTION;
25419
25420FUNCTION curve_weights_positive
25421      (b : rational_b_spline_curve ) : BOOLEAN;
25422   LOCAL
25423      result : BOOLEAN := TRUE;
25424   END_LOCAL;
25425      REPEAT i := 0 TO b.upper_index_on_control_points;
25426         IF b.weights[i] <= 0.0 THEN
25427            result := FALSE;
25428            RETURN (result);
25429         END_IF;
25430      END_REPEAT;
25431      RETURN (result);
25432END_FUNCTION;
25433
25434-- DIFF IN AP214
25435FUNCTION default_tolerance_table_cell_wr2
25436      (agg : compound_item_definition ) : BOOLEAN;
25437      BEGIN
25438         IF SIZEOF(agg) <= 5 THEN
25439            RETURN (TRUE);
25440         ELSE
25441            RETURN (FALSE);
25442         END_IF;
25443      END;
25444END_FUNCTION;
25445
25446-- DIFF IN AP214
25447FUNCTION default_tolerance_table_cell_wr3
25448      (agg : compound_item_definition ) : BOOLEAN;
25449      BEGIN
25450         IF (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'significant number of digits'))) = 1) OR (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'lower limit'))) = 1) AND (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'upper limit'))) = 1) THEN
25451            RETURN (TRUE);
25452         ELSE
25453            RETURN (FALSE);
25454         END_IF;
25455      END;
25456END_FUNCTION;
25457
25458-- DIFF IN AP214
25459FUNCTION default_tolerance_table_cell_wr4
25460      (agg : compound_item_definition ) : BOOLEAN;
25461      BEGIN
25462         IF (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'plus minus tolerance value'))) = 1) OR (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'lower tolerance value'))) = 1) AND (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'upper tolerance value'))) = 1) THEN
25463            RETURN (TRUE);
25464         ELSE
25465            RETURN (FALSE);
25466         END_IF;
25467      END;
25468END_FUNCTION;
25469
25470-- DIFF IN AP214
25471FUNCTION default_tolerance_table_cell_wr5
25472      (agg : compound_item_definition ) : BOOLEAN;
25473      BEGIN
25474         IF (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) <= 1) AND (SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = SIZEOF(QUERY (i <* agg| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\representation_item.name = 'cell description')))) THEN
25475            RETURN (TRUE);
25476         ELSE
25477            RETURN (FALSE);
25478         END_IF;
25479      END;
25480END_FUNCTION;
25481
25482-- IN AP242
25483FUNCTION definite_integral_check
25484      (domain : tuple_space;
25485       vrblint : input_selector;
25486       lowerinf : BOOLEAN;
25487       upperinf : BOOLEAN ) : BOOLEAN;
25488   LOCAL
25489      domn : tuple_space := domain;
25490      fspc : maths_space;
25491      dim : nonnegative_integer;
25492      k : positive_integer;
25493   END_LOCAL;
25494      IF (space_dimension(domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(domain))) THEN
25495         domn := factor1(domain);
25496      END_IF;
25497      dim := space_dimension(domn);
25498      k := vrblint;
25499      IF k > dim THEN
25500         RETURN (FALSE);
25501      END_IF;
25502      fspc := factor_space(domn, k);
25503      IF NOT (schema_prefix + 'REAL_INTERVAL' IN TYPEOF(fspc)) THEN
25504         RETURN (FALSE);
25505      END_IF;
25506      IF lowerinf AND min_exists(fspc) THEN
25507         RETURN (FALSE);
25508      END_IF;
25509      IF upperinf AND max_exists(fspc) THEN
25510         RETURN (FALSE);
25511      END_IF;
25512      RETURN (TRUE);
25513END_FUNCTION;
25514
25515-- IN AP242
25516FUNCTION definite_integral_expr_check
25517      (operands : LIST [2:?] OF generic_expression;
25518       lowerinf : BOOLEAN;
25519       upperinf : BOOLEAN ) : BOOLEAN;
25520   LOCAL
25521      nops : INTEGER := 2;
25522      vspc : maths_space;
25523      dim : nonnegative_integer;
25524      k : positive_integer;
25525      bspc : maths_space;
25526   END_LOCAL;
25527      IF NOT lowerinf THEN
25528         nops := nops + 1;
25529      END_IF;
25530      IF NOT upperinf THEN
25531         nops := nops + 1;
25532      END_IF;
25533      IF SIZEOF(operands) <> nops THEN
25534         RETURN (FALSE);
25535      END_IF;
25536      IF NOT ('GENERIC_VARIABLE' IN stripped_typeof(operands[2])) THEN
25537         RETURN (FALSE);
25538      END_IF;
25539      IF NOT has_values_space(operands[2]) THEN
25540         RETURN (FALSE);
25541      END_IF;
25542      vspc := values_space_of(operands[2]);
25543      IF NOT ('REAL_INTERVAL' IN stripped_typeof(vspc)) THEN
25544         RETURN (FALSE);
25545      END_IF;
25546      IF lowerinf THEN
25547         IF min_exists(vspc) THEN
25548            RETURN (FALSE);
25549         END_IF;
25550         k := 3;
25551      ELSE
25552         IF NOT has_values_space(operands[3]) THEN
25553            RETURN (FALSE);
25554         END_IF;
25555         bspc := values_space_of(operands[3]);
25556         IF NOT compatible_spaces(bspc, vspc) THEN
25557            RETURN (FALSE);
25558         END_IF;
25559         k := 4;
25560      END_IF;
25561      IF upperinf THEN
25562         IF max_exists(vspc) THEN
25563            RETURN (FALSE);
25564         END_IF;
25565      ELSE
25566         IF NOT has_values_space(operands[k]) THEN
25567            RETURN (FALSE);
25568         END_IF;
25569         bspc := values_space_of(operands[k]);
25570         IF NOT compatible_spaces(bspc, vspc) THEN
25571            RETURN (FALSE);
25572         END_IF;
25573      END_IF;
25574      RETURN (TRUE);
25575END_FUNCTION;
25576
25577-- IN AP203e2/AP242
25578FUNCTION dependently_instantiated
25579      (set_of_input_instances : SET [0:?] OF GENERIC : igen;
25580       set_of_input_types : SET [0:?] OF STRING;
25581       previous_in_chain : LIST [0:?] OF GENERIC : cgen ) : BOOLEAN;
25582   LOCAL
25583      number_of_input_instances : INTEGER;
25584      number_of_referring_instances : INTEGER;
25585      bag_of_referring_instances : BAG OF GENERIC : igen := [];
25586      dependently_instantiated_flag : BOOLEAN;
25587      previous_in_chain_plus : LIST OF GENERIC : cgen := [];
25588      result : BOOLEAN := FALSE;
25589      set_of_types : SET OF STRING := [];
25590   END_LOCAL;
25591      IF EXISTS(set_of_input_instances) THEN
25592         number_of_input_instances := SIZEOF(set_of_input_instances);
25593         set_of_input_types := set_of_input_types + 'GENERIC';
25594         REPEAT i := 1 TO number_of_input_instances;
25595            bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
25596            IF EXISTS(bag_of_referring_instances) THEN
25597               number_of_referring_instances := SIZEOF(bag_of_referring_instances);
25598               dependently_instantiated_flag := FALSE;
25599               REPEAT j := 1 TO number_of_referring_instances;
25600                  set_of_types := TYPEOF(bag_of_referring_instances[j]);
25601                  IF set_of_types <= set_of_input_types THEN
25602                     IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN
25603                        previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
25604                        IF dependently_instantiated([ bag_of_referring_instances[j] ], set_of_input_types, previous_in_chain_plus) THEN
25605                           dependently_instantiated_flag := FALSE;
25606                           ESCAPE;
25607                        ELSE
25608                           SKIP;
25609                        END_IF;
25610                     END_IF;
25611                  ELSE
25612                     dependently_instantiated_flag := FALSE;
25613                     ESCAPE;
25614                  END_IF;
25615               END_REPEAT;
25616               IF NOT dependently_instantiated_flag THEN
25617                  RETURN (FALSE);
25618               END_IF;
25619            ELSE
25620               RETURN (FALSE);
25621            END_IF;
25622         END_REPEAT;
25623      ELSE
25624         RETURN (FALSE);
25625      END_IF;
25626      RETURN (FALSE);
25627END_FUNCTION;
25628
25629-- IN AP203e2/AP242
25630FUNCTION derive_angle
25631      (placement_1 : axis2_placement_3d;
25632       placement_2 : axis2_placement_3d ) : plane_angle_measure;
25633   LOCAL
25634      v1 : direction;
25635      v2 : direction;
25636      mag_v1 : REAL;
25637      mag_v2 : REAL;
25638      theta : plane_angle_measure;
25639   END_LOCAL;
25640      v1 := placement_1.p[1];
25641      v2 := placement_2.p[1];
25642      mag_v1 := SQRT(v1.direction_ratios[1] * v1.direction_ratios[1] + v1.direction_ratios[2] * v1.direction_ratios[2]);
25643      mag_v2 := SQRT(v2.direction_ratios[1] * v2.direction_ratios[1] + v2.direction_ratios[2] * v2.direction_ratios[2]);
25644      IF (mag_v1 = 0.0) OR (mag_v2 = 0.0) THEN
25645         theta := 0.0;
25646         RETURN (theta);
25647      END_IF;
25648      theta := ACOS((v1.direction_ratios[1] * v2.direction_ratios[1] + v1.direction_ratios[2] * v2.direction_ratios[2]) / mag_v1 * mag_v2);
25649      RETURN (theta);
25650END_FUNCTION;
25651
25652-- IN AP242
25653FUNCTION derive_definite_integral_domain
25654      (igrl : definite_integral_function ) : tuple_space;
25655      FUNCTION process_product_space
25656         (spc : product_space;
25657          idx : INTEGER;
25658          prefix : INTEGER;
25659          vdomn : maths_space ) : product_space;
25660      LOCAL
25661         uspc : uniform_product_space;
25662         expnt : INTEGER;
25663         factors : LIST OF maths_space;
25664      END_LOCAL;
25665         IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN TYPEOF(spc) THEN
25666            uspc := spc;
25667            expnt := uspc.exponent + prefix;
25668            IF idx <= uspc.exponent THEN
25669               expnt := expnt - 1;
25670            END_IF;
25671            IF expnt = 0 THEN
25672               RETURN (make_listed_product_space([]));
25673            ELSE
25674               RETURN (make_uniform_product_space(uspc.base, expnt));
25675            END_IF;
25676         ELSE
25677            factors := spc\listed_product_space.factors;
25678            IF idx <= SIZEOF(factors) THEN
25679               REMOVE( factors, idx );
25680            END_IF;
25681            IF prefix > 0 THEN
25682               INSERT( factors, vdomn, 0 );
25683               IF prefix > 1 THEN
25684                  INSERT( factors, vdomn, 0 );
25685               END_IF;
25686            END_IF;
25687            RETURN (make_listed_product_space(factors));
25688         END_IF;
25689      END_FUNCTION;
25690   LOCAL
25691      idomn : tuple_space := igrl.integrand.domain;
25692      types : SET OF STRING := TYPEOF(idomn);
25693      idx : INTEGER := igrl.variable_of_integration;
25694      tupled : BOOLEAN := bool((space_dimension(idomn) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN types));
25695      prefix : INTEGER := 0;
25696      espc : extended_tuple_space;
25697      vdomn : maths_space;
25698   END_LOCAL;
25699      IF tupled THEN
25700         idomn := factor1(idomn);
25701         types := TYPEOF(idomn);
25702      END_IF;
25703      IF igrl.lower_limit_neg_infinity THEN
25704         prefix := prefix + 1;
25705      END_IF;
25706      IF igrl.upper_limit_pos_infinity THEN
25707         prefix := prefix + 1;
25708      END_IF;
25709      vdomn := factor_space(idomn, idx);
25710      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
25711         espc := idomn;
25712         idomn := make_extended_tuple_space(process_product_space(espc.base, idx, prefix, vdomn), espc.extender);
25713      ELSE
25714         idomn := process_product_space(idomn, idx, prefix, vdomn);
25715      END_IF;
25716      IF tupled THEN
25717         RETURN (one_tuples_of(idomn));
25718      ELSE
25719         RETURN (idomn);
25720      END_IF;
25721END_FUNCTION;
25722
25723FUNCTION derive_dimensional_exponents
25724      (x : unit ) : dimensional_exponents;
25725   LOCAL
25726      result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
25727   END_LOCAL;
25728      IF 'STEP_MERGED_CAD_SCHEMA.DERIVED_UNIT' IN TYPEOF(x) THEN
25729         REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements);
25730            result.length_exponent := result.length_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent;
25731            result.mass_exponent := result.mass_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent;
25732            result.time_exponent := result.time_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent;
25733            result.electric_current_exponent := result.electric_current_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent;
25734            result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent;
25735            result.amount_of_substance_exponent := result.amount_of_substance_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent;
25736            result.luminous_intensity_exponent := result.luminous_intensity_exponent + x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent;
25737         END_REPEAT;
25738      ELSE
25739         result := x\named_unit.dimensions;
25740      END_IF;
25741      RETURN (result);
25742END_FUNCTION;
25743
25744-- IN AP242
25745FUNCTION derive_elementary_function_domain
25746      (ef_val : elementary_function_enumerators ) : tuple_space;
25747      IF NOT EXISTS(ef_val) THEN
25748         RETURN (?);
25749      END_IF;
25750      CASE ef_val OF
25751         ef_and :
25752               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_logicals));
25753         ef_or :
25754               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_logicals));
25755         ef_not :
25756               RETURN (make_uniform_product_space(the_logicals, 1));
25757         ef_xor :
25758               RETURN (make_uniform_product_space(the_logicals, 2));
25759         ef_negate_i :
25760               RETURN (make_uniform_product_space(the_integers, 1));
25761         ef_add_i :
25762               RETURN (the_integer_tuples);
25763         ef_subtract_i :
25764               RETURN (make_uniform_product_space(the_integers, 2));
25765         ef_multiply_i :
25766               RETURN (the_integer_tuples);
25767         ef_divide_i :
25768               RETURN (make_uniform_product_space(the_integers, 2));
25769         ef_mod_i :
25770               RETURN (make_uniform_product_space(the_integers, 2));
25771         ef_exponentiate_i :
25772               RETURN (make_uniform_product_space(the_integers, 2));
25773         ef_eq_i :
25774               RETURN (make_uniform_product_space(the_integers, 2));
25775         ef_ne_i :
25776               RETURN (make_uniform_product_space(the_integers, 2));
25777         ef_gt_i :
25778               RETURN (make_uniform_product_space(the_integers, 2));
25779         ef_lt_i :
25780               RETURN (make_uniform_product_space(the_integers, 2));
25781         ef_ge_i :
25782               RETURN (make_uniform_product_space(the_integers, 2));
25783         ef_le_i :
25784               RETURN (make_uniform_product_space(the_integers, 2));
25785         ef_abs_i :
25786               RETURN (make_uniform_product_space(the_integers, 1));
25787         ef_if_i :
25788               RETURN (make_listed_product_space([ the_logicals, the_integers, the_integers ]));
25789         ef_negate_r :
25790               RETURN (make_uniform_product_space(the_reals, 1));
25791         ef_reciprocal_r :
25792               RETURN (make_uniform_product_space(the_reals, 1));
25793         ef_add_r :
25794               RETURN (the_real_tuples);
25795         ef_subtract_r :
25796               RETURN (make_uniform_product_space(the_reals, 2));
25797         ef_multiply_r :
25798               RETURN (the_real_tuples);
25799         ef_divide_r :
25800               RETURN (make_uniform_product_space(the_reals, 2));
25801         ef_mod_r :
25802               RETURN (make_uniform_product_space(the_reals, 2));
25803         ef_exponentiate_r :
25804               RETURN (make_listed_product_space([ the_nonnegative_reals, the_reals ]));
25805         ef_exponentiate_ri :
25806               RETURN (make_listed_product_space([ the_reals, the_integers ]));
25807         ef_eq_r :
25808               RETURN (make_uniform_product_space(the_reals, 2));
25809         ef_ne_r :
25810               RETURN (make_uniform_product_space(the_reals, 2));
25811         ef_gt_r :
25812               RETURN (make_uniform_product_space(the_reals, 2));
25813         ef_lt_r :
25814               RETURN (make_uniform_product_space(the_reals, 2));
25815         ef_ge_r :
25816               RETURN (make_uniform_product_space(the_reals, 2));
25817         ef_le_r :
25818               RETURN (make_uniform_product_space(the_reals, 2));
25819         ef_abs_r :
25820               RETURN (make_uniform_product_space(the_reals, 1));
25821         ef_acos_r :
25822               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
25823         ef_asin_r :
25824               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
25825         ef_atan2_r :
25826               RETURN (make_uniform_product_space(the_reals, 2));
25827         ef_cos_r :
25828               RETURN (make_uniform_product_space(the_reals, 1));
25829         ef_exp_r :
25830               RETURN (make_uniform_product_space(the_reals, 1));
25831         ef_ln_r :
25832               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
25833         ef_log2_r :
25834               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
25835         ef_log10_r :
25836               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
25837         ef_sin_r :
25838               RETURN (make_uniform_product_space(the_reals, 1));
25839         ef_sqrt_r :
25840               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
25841         ef_tan_r :
25842               RETURN (make_uniform_product_space(the_reals, 1));
25843         ef_if_r :
25844               RETURN (make_listed_product_space([ the_logicals, the_reals, the_reals ]));
25845         ef_negate_c :
25846               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25847         ef_reciprocal_c :
25848               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25849         ef_add_c :
25850               RETURN (the_complex_tuples);
25851         ef_subtract_c :
25852               RETURN (make_uniform_product_space(the_complex_numbers, 2));
25853         ef_multiply_c :
25854               RETURN (the_complex_tuples);
25855         ef_divide_c :
25856               RETURN (make_uniform_product_space(the_complex_numbers, 2));
25857         ef_exponentiate_c :
25858               RETURN (make_uniform_product_space(the_complex_numbers, 2));
25859         ef_exponentiate_ci :
25860               RETURN (make_listed_product_space([ the_complex_numbers, the_integers ]));
25861         ef_eq_c :
25862               RETURN (make_uniform_product_space(the_complex_numbers, 2));
25863         ef_ne_c :
25864               RETURN (make_uniform_product_space(the_complex_numbers, 2));
25865         ef_conjugate_c :
25866               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25867         ef_abs_c :
25868               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25869         ef_arg_c :
25870               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25871         ef_cos_c :
25872               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25873         ef_exp_c :
25874               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25875         ef_ln_c :
25876               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25877         ef_sin_c :
25878               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25879         ef_sqrt_c :
25880               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25881         ef_tan_c :
25882               RETURN (make_uniform_product_space(the_complex_numbers, 1));
25883         ef_if_c :
25884               RETURN (make_listed_product_space([ the_logicals, the_complex_numbers, the_complex_numbers ]));
25885         ef_subscript_s :
25886               RETURN (make_listed_product_space([ the_strings, the_integers ]));
25887         ef_eq_s :
25888               RETURN (make_uniform_product_space(the_strings, 2));
25889         ef_ne_s :
25890               RETURN (make_uniform_product_space(the_strings, 2));
25891         ef_gt_s :
25892               RETURN (make_uniform_product_space(the_strings, 2));
25893         ef_lt_s :
25894               RETURN (make_uniform_product_space(the_strings, 2));
25895         ef_ge_s :
25896               RETURN (make_uniform_product_space(the_strings, 2));
25897         ef_le_s :
25898               RETURN (make_uniform_product_space(the_strings, 2));
25899         ef_subsequence_s :
25900               RETURN (make_listed_product_space([ the_strings, the_integers, the_integers ]));
25901         ef_concat_s :
25902               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_strings));
25903         ef_size_s :
25904               RETURN (make_uniform_product_space(the_strings, 1));
25905         ef_format :
25906               RETURN (make_listed_product_space([ the_numbers, the_strings ]));
25907         ef_value :
25908               RETURN (make_uniform_product_space(the_strings, 1));
25909         ef_like :
25910               RETURN (make_uniform_product_space(the_strings, 2));
25911         ef_if_s :
25912               RETURN (make_listed_product_space([ the_logicals, the_strings, the_strings ]));
25913         ef_subscript_b :
25914               RETURN (make_listed_product_space([ the_binarys, the_integers ]));
25915         ef_eq_b :
25916               RETURN (make_uniform_product_space(the_binarys, 2));
25917         ef_ne_b :
25918               RETURN (make_uniform_product_space(the_binarys, 2));
25919         ef_gt_b :
25920               RETURN (make_uniform_product_space(the_binarys, 2));
25921         ef_lt_b :
25922               RETURN (make_uniform_product_space(the_binarys, 2));
25923         ef_ge_b :
25924               RETURN (make_uniform_product_space(the_binarys, 2));
25925         ef_le_b :
25926               RETURN (make_uniform_product_space(the_binarys, 2));
25927         ef_subsequence_b :
25928               RETURN (make_listed_product_space([ the_binarys, the_integers, the_integers ]));
25929         ef_concat_b :
25930               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_binarys));
25931         ef_size_b :
25932               RETURN (make_uniform_product_space(the_binarys, 1));
25933         ef_if_b :
25934               RETURN (make_listed_product_space([ the_logicals, the_binarys, the_binarys ]));
25935         ef_subscript_t :
25936               RETURN (make_listed_product_space([ the_tuples, the_integers ]));
25937         ef_eq_t :
25938               RETURN (make_uniform_product_space(the_tuples, 2));
25939         ef_ne_t :
25940               RETURN (make_uniform_product_space(the_tuples, 2));
25941         ef_concat_t :
25942               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_tuples));
25943         ef_size_t :
25944               RETURN (make_uniform_product_space(the_tuples, 1));
25945         ef_entuple :
25946               RETURN (the_tuples);
25947         ef_detuple :
25948               RETURN (make_uniform_product_space(the_generics, 1));
25949         ef_insert :
25950               RETURN (make_listed_product_space([ the_tuples, the_generics, the_integers ]));
25951         ef_remove :
25952               RETURN (make_listed_product_space([ the_tuples, the_integers ]));
25953         ef_if_t :
25954               RETURN (make_listed_product_space([ the_logicals, the_tuples, the_tuples ]));
25955         ef_sum_it :
25956               RETURN (make_uniform_product_space(the_integer_tuples, 1));
25957         ef_product_it :
25958               RETURN (make_uniform_product_space(the_integer_tuples, 1));
25959         ef_add_it :
25960               RETURN (make_extended_tuple_space(the_integer_tuples, the_integer_tuples));
25961         ef_subtract_it :
25962               RETURN (make_uniform_product_space(the_integer_tuples, 2));
25963         ef_scalar_mult_it :
25964               RETURN (make_listed_product_space([ the_integers, the_integer_tuples ]));
25965         ef_dot_prod_it :
25966               RETURN (make_uniform_product_space(the_integer_tuples, 2));
25967         ef_sum_rt :
25968               RETURN (make_uniform_product_space(the_real_tuples, 1));
25969         ef_product_rt :
25970               RETURN (make_uniform_product_space(the_real_tuples, 1));
25971         ef_add_rt :
25972               RETURN (make_extended_tuple_space(the_real_tuples, the_real_tuples));
25973         ef_subtract_rt :
25974               RETURN (make_uniform_product_space(the_real_tuples, 2));
25975         ef_scalar_mult_rt :
25976               RETURN (make_listed_product_space([ the_reals, the_real_tuples ]));
25977         ef_dot_prod_rt :
25978               RETURN (make_uniform_product_space(the_real_tuples, 2));
25979         ef_norm_rt :
25980               RETURN (make_uniform_product_space(the_real_tuples, 1));
25981         ef_sum_ct :
25982               RETURN (make_uniform_product_space(the_complex_tuples, 1));
25983         ef_product_ct :
25984               RETURN (make_uniform_product_space(the_complex_tuples, 1));
25985         ef_add_ct :
25986               RETURN (make_extended_tuple_space(the_complex_tuples, the_complex_tuples));
25987         ef_subtract_ct :
25988               RETURN (make_uniform_product_space(the_complex_tuples, 2));
25989         ef_scalar_mult_ct :
25990               RETURN (make_listed_product_space([ the_complex_numbers, the_complex_tuples ]));
25991         ef_dot_prod_ct :
25992               RETURN (make_uniform_product_space(the_complex_tuples, 2));
25993         ef_norm_ct :
25994               RETURN (make_uniform_product_space(the_complex_tuples, 1));
25995         ef_if :
25996               RETURN (make_listed_product_space([ the_logicals, the_generics, the_generics ]));
25997         ef_ensemble :
25998               RETURN (the_tuples);
25999         ef_member_of :
26000               RETURN (make_listed_product_space([ the_generics, the_maths_spaces ]));
26001      OTHERWISE :
26002            RETURN (?);
26003      END_CASE;
26004END_FUNCTION;
26005
26006-- IN AP242
26007FUNCTION derive_elementary_function_range
26008      (ef_val : elementary_function_enumerators ) : tuple_space;
26009      IF NOT EXISTS(ef_val) THEN
26010         RETURN (?);
26011      END_IF;
26012      CASE ef_val OF
26013         ef_and :
26014               RETURN (make_uniform_product_space(the_logicals, 1));
26015         ef_or :
26016               RETURN (make_uniform_product_space(the_logicals, 1));
26017         ef_not :
26018               RETURN (make_uniform_product_space(the_logicals, 1));
26019         ef_xor :
26020               RETURN (make_uniform_product_space(the_logicals, 2));
26021         ef_negate_i :
26022               RETURN (make_uniform_product_space(the_integers, 1));
26023         ef_add_i :
26024               RETURN (make_uniform_product_space(the_integers, 1));
26025         ef_subtract_i :
26026               RETURN (make_uniform_product_space(the_integers, 1));
26027         ef_multiply_i :
26028               RETURN (make_uniform_product_space(the_integers, 1));
26029         ef_divide_i :
26030               RETURN (make_uniform_product_space(the_integers, 1));
26031         ef_mod_i :
26032               RETURN (make_uniform_product_space(the_integers, 1));
26033         ef_exponentiate_i :
26034               RETURN (make_uniform_product_space(the_integers, 1));
26035         ef_eq_i :
26036               RETURN (make_uniform_product_space(the_logicals, 1));
26037         ef_ne_i :
26038               RETURN (make_uniform_product_space(the_logicals, 1));
26039         ef_gt_i :
26040               RETURN (make_uniform_product_space(the_logicals, 1));
26041         ef_lt_i :
26042               RETURN (make_uniform_product_space(the_logicals, 1));
26043         ef_ge_i :
26044               RETURN (make_uniform_product_space(the_logicals, 1));
26045         ef_le_i :
26046               RETURN (make_uniform_product_space(the_logicals, 1));
26047         ef_abs_i :
26048               RETURN (make_uniform_product_space(the_integers, 1));
26049         ef_if_i :
26050               RETURN (make_uniform_product_space(the_integers, 1));
26051         ef_negate_r :
26052               RETURN (make_uniform_product_space(the_reals, 1));
26053         ef_reciprocal_r :
26054               RETURN (make_uniform_product_space(the_reals, 1));
26055         ef_add_r :
26056               RETURN (make_uniform_product_space(the_reals, 1));
26057         ef_subtract_r :
26058               RETURN (make_uniform_product_space(the_reals, 1));
26059         ef_multiply_r :
26060               RETURN (make_uniform_product_space(the_reals, 1));
26061         ef_divide_r :
26062               RETURN (make_uniform_product_space(the_reals, 1));
26063         ef_mod_r :
26064               RETURN (make_uniform_product_space(the_reals, 1));
26065         ef_exponentiate_r :
26066               RETURN (make_uniform_product_space(the_reals, 1));
26067         ef_exponentiate_ri :
26068               RETURN (make_uniform_product_space(the_reals, 1));
26069         ef_eq_r :
26070               RETURN (make_uniform_product_space(the_logicals, 1));
26071         ef_ne_r :
26072               RETURN (make_uniform_product_space(the_logicals, 1));
26073         ef_gt_r :
26074               RETURN (make_uniform_product_space(the_logicals, 1));
26075         ef_lt_r :
26076               RETURN (make_uniform_product_space(the_logicals, 1));
26077         ef_ge_r :
26078               RETURN (make_uniform_product_space(the_logicals, 1));
26079         ef_le_r :
26080               RETURN (make_uniform_product_space(the_logicals, 1));
26081         ef_abs_r :
26082               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
26083         ef_acos_r :
26084               RETURN (make_uniform_product_space(the_zero_pi_interval, 1));
26085         ef_asin_r :
26086               RETURN (make_uniform_product_space(the_neghalfpi_halfpi_interval, 1));
26087         ef_atan2_r :
26088               RETURN (make_uniform_product_space(the_negpi_pi_interval, 1));
26089         ef_cos_r :
26090               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
26091         ef_exp_r :
26092               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
26093         ef_ln_r :
26094               RETURN (make_uniform_product_space(the_reals, 1));
26095         ef_log2_r :
26096               RETURN (make_uniform_product_space(the_reals, 1));
26097         ef_log10_r :
26098               RETURN (make_uniform_product_space(the_reals, 1));
26099         ef_sin_r :
26100               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
26101         ef_sqrt_r :
26102               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
26103         ef_tan_r :
26104               RETURN (make_uniform_product_space(the_reals, 1));
26105         ef_if_r :
26106               RETURN (make_uniform_product_space(the_reals, 1));
26107         ef_negate_c :
26108               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26109         ef_reciprocal_c :
26110               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26111         ef_add_c :
26112               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26113         ef_subtract_c :
26114               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26115         ef_multiply_c :
26116               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26117         ef_divide_c :
26118               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26119         ef_exponentiate_c :
26120               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26121         ef_exponentiate_ci :
26122               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26123         ef_eq_c :
26124               RETURN (make_uniform_product_space(the_logicals, 1));
26125         ef_ne_c :
26126               RETURN (make_uniform_product_space(the_logicals, 1));
26127         ef_conjugate_c :
26128               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26129         ef_abs_c :
26130               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
26131         ef_arg_c :
26132               RETURN (make_uniform_product_space(the_negpi_pi_interval, 1));
26133         ef_cos_c :
26134               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26135         ef_exp_c :
26136               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26137         ef_ln_c :
26138               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26139         ef_sin_c :
26140               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26141         ef_sqrt_c :
26142               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26143         ef_tan_c :
26144               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26145         ef_if_c :
26146               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26147         ef_subscript_s :
26148               RETURN (make_uniform_product_space(the_strings, 1));
26149         ef_eq_s :
26150               RETURN (make_uniform_product_space(the_logicals, 1));
26151         ef_ne_s :
26152               RETURN (make_uniform_product_space(the_logicals, 1));
26153         ef_gt_s :
26154               RETURN (make_uniform_product_space(the_logicals, 1));
26155         ef_lt_s :
26156               RETURN (make_uniform_product_space(the_logicals, 1));
26157         ef_ge_s :
26158               RETURN (make_uniform_product_space(the_logicals, 1));
26159         ef_le_s :
26160               RETURN (make_uniform_product_space(the_logicals, 1));
26161         ef_subsequence_s :
26162               RETURN (make_uniform_product_space(the_strings, 1));
26163         ef_concat_s :
26164               RETURN (make_uniform_product_space(the_strings, 1));
26165         ef_size_s :
26166               RETURN (make_uniform_product_space(the_integers, 1));
26167         ef_format :
26168               RETURN (make_uniform_product_space(the_strings, 1));
26169         ef_value :
26170               RETURN (make_uniform_product_space(the_reals, 1));
26171         ef_like :
26172               RETURN (make_uniform_product_space(the_booleans, 1));
26173         ef_if_s :
26174               RETURN (make_uniform_product_space(the_strings, 1));
26175         ef_subscript_b :
26176               RETURN (make_uniform_product_space(the_binarys, 1));
26177         ef_eq_b :
26178               RETURN (make_uniform_product_space(the_logicals, 1));
26179         ef_ne_b :
26180               RETURN (make_uniform_product_space(the_logicals, 1));
26181         ef_gt_b :
26182               RETURN (make_uniform_product_space(the_logicals, 1));
26183         ef_lt_b :
26184               RETURN (make_uniform_product_space(the_logicals, 1));
26185         ef_ge_b :
26186               RETURN (make_uniform_product_space(the_logicals, 1));
26187         ef_le_b :
26188               RETURN (make_uniform_product_space(the_logicals, 1));
26189         ef_subsequence_b :
26190               RETURN (make_uniform_product_space(the_binarys, 1));
26191         ef_concat_b :
26192               RETURN (make_uniform_product_space(the_binarys, 1));
26193         ef_size_b :
26194               RETURN (make_uniform_product_space(the_integers, 1));
26195         ef_if_b :
26196               RETURN (make_uniform_product_space(the_binarys, 1));
26197         ef_subscript_t :
26198               RETURN (make_uniform_product_space(the_generics, 1));
26199         ef_eq_t :
26200               RETURN (make_uniform_product_space(the_logicals, 1));
26201         ef_ne_t :
26202               RETURN (make_uniform_product_space(the_logicals, 1));
26203         ef_concat_t :
26204               RETURN (make_uniform_product_space(the_tuples, 1));
26205         ef_size_t :
26206               RETURN (make_uniform_product_space(the_integers, 1));
26207         ef_entuple :
26208               RETURN (make_uniform_product_space(the_tuples, 1));
26209         ef_detuple :
26210               RETURN (the_tuples);
26211         ef_insert :
26212               RETURN (make_uniform_product_space(the_tuples, 1));
26213         ef_remove :
26214               RETURN (make_uniform_product_space(the_tuples, 1));
26215         ef_if_t :
26216               RETURN (make_uniform_product_space(the_tuples, 1));
26217         ef_sum_it :
26218               RETURN (make_uniform_product_space(the_integers, 1));
26219         ef_product_it :
26220               RETURN (make_uniform_product_space(the_integers, 1));
26221         ef_add_it :
26222               RETURN (make_uniform_product_space(the_integer_tuples, 1));
26223         ef_subtract_it :
26224               RETURN (make_uniform_product_space(the_integer_tuples, 1));
26225         ef_scalar_mult_it :
26226               RETURN (make_uniform_product_space(the_integer_tuples, 1));
26227         ef_dot_prod_it :
26228               RETURN (make_uniform_product_space(the_integers, 1));
26229         ef_sum_rt :
26230               RETURN (make_uniform_product_space(the_reals, 1));
26231         ef_product_rt :
26232               RETURN (make_uniform_product_space(the_reals, 1));
26233         ef_add_rt :
26234               RETURN (make_uniform_product_space(the_real_tuples, 1));
26235         ef_subtract_rt :
26236               RETURN (make_uniform_product_space(the_real_tuples, 1));
26237         ef_scalar_mult_rt :
26238               RETURN (make_uniform_product_space(the_real_tuples, 1));
26239         ef_dot_prod_rt :
26240               RETURN (make_uniform_product_space(the_reals, 1));
26241         ef_norm_rt :
26242               RETURN (make_uniform_product_space(the_reals, 1));
26243         ef_sum_ct :
26244               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26245         ef_product_ct :
26246               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26247         ef_add_ct :
26248               RETURN (make_uniform_product_space(the_complex_tuples, 1));
26249         ef_subtract_ct :
26250               RETURN (make_uniform_product_space(the_complex_tuples, 1));
26251         ef_scalar_mult_ct :
26252               RETURN (make_uniform_product_space(the_complex_tuples, 1));
26253         ef_dot_prod_ct :
26254               RETURN (make_uniform_product_space(the_complex_numbers, 1));
26255         ef_norm_ct :
26256               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
26257         ef_if :
26258               RETURN (make_uniform_product_space(the_generics, 1));
26259         ef_ensemble :
26260               RETURN (make_uniform_product_space(the_maths_spaces, 1));
26261         ef_member_of :
26262               RETURN (make_uniform_product_space(the_logicals, 1));
26263      OTHERWISE :
26264            RETURN (?);
26265      END_CASE;
26266END_FUNCTION;
26267
26268-- IN AP242
26269FUNCTION derive_finite_function_domain
26270      (pairs : SET [1:?] OF LIST [2:2] OF maths_value ) : tuple_space;
26271   LOCAL
26272      result : SET OF maths_value := [];
26273   END_LOCAL;
26274      result := result + list_selected_components(pairs, 1);
26275      RETURN (one_tuples_of(make_finite_space(result)));
26276END_FUNCTION;
26277
26278-- IN AP242
26279FUNCTION derive_finite_function_range
26280      (pairs : SET [1:?] OF LIST [2:2] OF maths_value ) : tuple_space;
26281   LOCAL
26282      result : SET OF maths_value := [];
26283   END_LOCAL;
26284      result := result + list_selected_components(pairs, 2);
26285      RETURN (one_tuples_of(make_finite_space(result)));
26286END_FUNCTION;
26287
26288-- IN AP242
26289FUNCTION derive_function_domain
26290      (func : maths_function ) : tuple_space;
26291   LOCAL
26292      typenames : SET OF STRING := stripped_typeof(func);
26293      tspace : tuple_space := make_listed_product_space([]);
26294      shape : LIST OF positive_integer;
26295      sidxs : LIST OF INTEGER := [ 0 ];
26296      itvl : finite_integer_interval;
26297      factors : LIST OF finite_integer_interval := [];
26298      is_uniform : BOOLEAN := TRUE;
26299   END_LOCAL;
26300      IF 'FINITE_FUNCTION' IN typenames THEN
26301         RETURN (derive_finite_function_domain(func\finite_function.pairs));
26302      END_IF;
26303      IF 'CONSTANT_FUNCTION' IN typenames THEN
26304         RETURN (domain_from(func\constant_function.source_of_domain));
26305      END_IF;
26306      IF 'SELECTOR_FUNCTION' IN typenames THEN
26307         RETURN (domain_from(func\selector_function.source_of_domain));
26308      END_IF;
26309      IF 'ELEMENTARY_FUNCTION' IN typenames THEN
26310         RETURN (derive_elementary_function_domain(func\elementary_function.func_id));
26311      END_IF;
26312      IF 'RESTRICTION_FUNCTION' IN typenames THEN
26313         RETURN (one_tuples_of(func\restriction_function.operand));
26314      END_IF;
26315      IF 'REPACKAGING_FUNCTION' IN typenames THEN
26316         IF func\repackaging_function.input_repack = ro_nochange THEN
26317            RETURN (func\repackaging_function.operand.domain);
26318         END_IF;
26319         IF func\repackaging_function.input_repack = ro_wrap_as_tuple THEN
26320            RETURN (factor1(func\repackaging_function.operand.domain));
26321         END_IF;
26322         IF func\repackaging_function.input_repack = ro_unwrap_tuple THEN
26323            RETURN (one_tuples_of(func\repackaging_function.operand.domain));
26324         END_IF;
26325         RETURN (?);
26326      END_IF;
26327      IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
26328         shape := shape_of_array(func\unary_generic_expression.operand);
26329         sidxs := func\reindexed_array_function.starting_indices;
26330         REPEAT i := 1 TO SIZEOF(shape);
26331            itvl := make_finite_integer_interval(sidxs[i], sidxs[i] + shape[i] - 1);
26332            INSERT( factors, itvl, i - 1 );
26333            IF shape[i] <> shape[1] THEN
26334               is_uniform := FALSE;
26335            END_IF;
26336         END_REPEAT;
26337         IF is_uniform THEN
26338            RETURN (make_uniform_product_space(factors[1], SIZEOF(shape)));
26339         END_IF;
26340         RETURN (make_listed_product_space(factors));
26341      END_IF;
26342      IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
26343         RETURN (func\series_composed_function.operands[1].domain);
26344      END_IF;
26345      IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
26346         RETURN (domain_from(func\parallel_composed_function.source_of_domain));
26347      END_IF;
26348      IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
26349         shape := func\explicit_table_function.shape;
26350         sidxs[1] := func\explicit_table_function.index_base;
26351         REPEAT i := 1 TO SIZEOF(shape);
26352            itvl := make_finite_integer_interval(sidxs[1], sidxs[1] + shape[i] - 1);
26353            INSERT( factors, itvl, i - 1 );
26354            IF shape[i] <> shape[1] THEN
26355               is_uniform := FALSE;
26356            END_IF;
26357         END_REPEAT;
26358         IF is_uniform THEN
26359            RETURN (make_uniform_product_space(factors[1], SIZEOF(shape)));
26360         END_IF;
26361         RETURN (make_listed_product_space(factors));
26362      END_IF;
26363      IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
26364         RETURN (one_tuples_of(make_uniform_product_space(factor1(func\homogeneous_linear_function.mat.range), func\homogeneous_linear_function.mat\explicit_table_function.shape[func\homogeneous_linear_function.sum_index])));
26365      END_IF;
26366      IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
26367         RETURN (one_tuples_of(make_uniform_product_space(factor1(func\general_linear_function.mat.range), func\general_linear_function.mat\explicit_table_function.shape[func\general_linear_function.sum_index] - 1)));
26368      END_IF;
26369      IF 'B_SPLINE_BASIS' IN typenames THEN
26370         RETURN (one_tuples_of(make_finite_real_interval(func\b_spline_basis.repeated_knots[func\b_spline_basis.order], closed, func\b_spline_basis.repeated_knots[(func\b_spline_basis.num_basis + 1)], closed)));
26371      END_IF;
26372      IF 'B_SPLINE_FUNCTION' IN typenames THEN
26373         REPEAT i := 1 TO SIZEOF(func\b_spline_function.basis);
26374            tspace := assoc_product_space(tspace, func\b_spline_function.basis[i].domain);
26375         END_REPEAT;
26376         RETURN (one_tuples_of(tspace));
26377      END_IF;
26378      IF 'RATIONALIZE_FUNCTION' IN typenames THEN
26379         RETURN (func\rationalize_function.fun.domain);
26380      END_IF;
26381      IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
26382         RETURN (func\partial_derivative_function.derivand.domain);
26383      END_IF;
26384      IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
26385         RETURN (derive_definite_integral_domain(func));
26386      END_IF;
26387      IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
26388         REPEAT i := 1 TO SIZEOF(func\abstracted_expression_function.variables);
26389            tspace := assoc_product_space(tspace, one_tuples_of(values_space_of(func\abstracted_expression_function.variables[i])));
26390         END_REPEAT;
26391         RETURN (tspace);
26392      END_IF;
26393      IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
26394         RETURN (values_space_of(func\expression_denoted_function.expr)\function_space.domain_argument);
26395      END_IF;
26396      IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
26397         RETURN (one_tuples_of(make_listed_product_space([])));
26398      END_IF;
26399      IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
26400         RETURN (func\imported_curve_function.parametric_domain);
26401      END_IF;
26402      IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
26403         RETURN (func\imported_surface_function.parametric_domain);
26404      END_IF;
26405      IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
26406         RETURN (func\imported_volume_function.parametric_domain);
26407      END_IF;
26408      IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
26409         RETURN (func\application_defined_function.explicit_domain);
26410      END_IF;
26411      RETURN (?);
26412END_FUNCTION;
26413
26414-- IN AP242
26415FUNCTION derive_function_range
26416      (func : maths_function ) : tuple_space;
26417   LOCAL
26418      typenames : SET OF STRING := stripped_typeof(func);
26419      tspace : tuple_space := make_listed_product_space([]);
26420      m : nonnegative_integer := 0;
26421      n : nonnegative_integer := 0;
26422      temp : INTEGER := 0;
26423   END_LOCAL;
26424      IF 'FINITE_FUNCTION' IN typenames THEN
26425         RETURN (derive_finite_function_range(func\finite_function.pairs));
26426      END_IF;
26427      IF 'CONSTANT_FUNCTION' IN typenames THEN
26428         RETURN (one_tuples_of(make_finite_space([ func\constant_function.sole_output ])));
26429      END_IF;
26430      IF 'SELECTOR_FUNCTION' IN typenames THEN
26431         tspace := func.domain;
26432         IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(tspace)) THEN
26433            tspace := factor1(tspace);
26434         END_IF;
26435         RETURN (one_tuples_of(factor_space(tspace, func\selector_function.selector)));
26436      END_IF;
26437      IF 'ELEMENTARY_FUNCTION' IN typenames THEN
26438         RETURN (derive_elementary_function_range(func\elementary_function.func_id));
26439      END_IF;
26440      IF 'RESTRICTION_FUNCTION' IN typenames THEN
26441         RETURN (one_tuples_of(func\restriction_function.operand));
26442      END_IF;
26443      IF 'REPACKAGING_FUNCTION' IN typenames THEN
26444         tspace := func\repackaging_function.operand.range;
26445         IF func\repackaging_function.output_repack = ro_wrap_as_tuple THEN
26446            tspace := one_tuples_of(tspace);
26447         END_IF;
26448         IF func\repackaging_function.output_repack = ro_unwrap_tuple THEN
26449            tspace := factor1(tspace);
26450         END_IF;
26451         IF func\repackaging_function.selected_output > 0 THEN
26452            tspace := one_tuples_of(factor_space(tspace, func\repackaging_function.selected_output));
26453         END_IF;
26454         RETURN (tspace);
26455      END_IF;
26456      IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
26457         RETURN (func\unary_generic_expression.operand\maths_function.range);
26458      END_IF;
26459      IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
26460         RETURN (func\series_composed_function.operands[SIZEOF(func\series_composed_function.operands)].range);
26461      END_IF;
26462      IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
26463         RETURN (func\parallel_composed_function.final_function.range);
26464      END_IF;
26465      IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
26466         IF 'LISTED_REAL_DATA' IN typenames THEN
26467            RETURN (one_tuples_of(the_reals));
26468         END_IF;
26469         IF 'LISTED_INTEGER_DATA' IN typenames THEN
26470            RETURN (one_tuples_of(the_integers));
26471         END_IF;
26472         IF 'LISTED_LOGICAL_DATA' IN typenames THEN
26473            RETURN (one_tuples_of(the_logicals));
26474         END_IF;
26475         IF 'LISTED_STRING_DATA' IN typenames THEN
26476            RETURN (one_tuples_of(the_strings));
26477         END_IF;
26478         IF 'LISTED_COMPLEX_NUMBER_DATA' IN typenames THEN
26479            RETURN (one_tuples_of(the_complex_numbers));
26480         END_IF;
26481         IF 'LISTED_DATA' IN typenames THEN
26482            RETURN (one_tuples_of(func\listed_data.value_range));
26483         END_IF;
26484         IF 'EXTERNALLY_LISTED_DATA' IN typenames THEN
26485            RETURN (one_tuples_of(func\externally_listed_data.value_range));
26486         END_IF;
26487         IF 'LINEARIZED_TABLE_FUNCTION' IN typenames THEN
26488            RETURN (func\linearized_table_function.source.range);
26489         END_IF;
26490         IF 'BASIC_SPARSE_MATRIX' IN typenames THEN
26491            RETURN (func\basic_sparse_matrix.val.range);
26492         END_IF;
26493         RETURN (?);
26494      END_IF;
26495      IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
26496         RETURN (one_tuples_of(make_uniform_product_space(factor1(func\homogeneous_linear_function.mat.range), func\homogeneous_linear_function.mat\explicit_table_function.shape[(3 - func\homogeneous_linear_function.sum_index)])));
26497      END_IF;
26498      IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
26499         RETURN (one_tuples_of(make_uniform_product_space(factor1(func\general_linear_function.mat.range), func\general_linear_function.mat\explicit_table_function.shape[(3 - func\general_linear_function.sum_index)])));
26500      END_IF;
26501      IF 'B_SPLINE_BASIS' IN typenames THEN
26502         RETURN (one_tuples_of(make_uniform_product_space(the_reals, func\b_spline_basis.num_basis)));
26503      END_IF;
26504      IF 'B_SPLINE_FUNCTION' IN typenames THEN
26505         tspace := factor1(func\b_spline_function.coef.domain);
26506         m := SIZEOF(func\b_spline_function.basis);
26507         n := space_dimension(tspace);
26508         IF m = n THEN
26509            RETURN (one_tuples_of(the_reals));
26510         END_IF;
26511         IF m = n - 1 THEN
26512            RETURN (one_tuples_of(make_uniform_product_space(the_reals, factor_space(tspace, n)\finite_integer_interval.size)));
26513         END_IF;
26514         tspace := extract_factors(tspace, m + 1, n);
26515         RETURN (one_tuples_of(make_function_space(sc_equal, tspace, sc_subspace, number_superspace_of(func\b_spline_function.coef.range))));
26516      END_IF;
26517      IF 'RATIONALIZE_FUNCTION' IN typenames THEN
26518         tspace := factor1(func\rationalize_function.fun.range);
26519         n := space_dimension(tspace);
26520         RETURN (one_tuples_of(make_uniform_product_space(number_superspace_of(factor1(tspace)), n - 1)));
26521      END_IF;
26522      IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
26523         RETURN (drop_numeric_constraints(func\partial_derivative_function.derivand.range));
26524      END_IF;
26525      IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
26526         RETURN (drop_numeric_constraints(func\definite_integral_function.integrand.range));
26527      END_IF;
26528      IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
26529         RETURN (one_tuples_of(values_space_of(func\abstracted_expression_function.expr)));
26530      END_IF;
26531      IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
26532         RETURN (values_space_of(func\expression_denoted_function.expr)\function_space.range_argument);
26533      END_IF;
26534      IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
26535         temp := dimension_of(func\imported_point_function.geometry);
26536         RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
26537      END_IF;
26538      IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
26539         temp := dimension_of(func\imported_curve_function.geometry);
26540         RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
26541      END_IF;
26542      IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
26543         temp := dimension_of(func\imported_surface_function.geometry);
26544         RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
26545      END_IF;
26546      IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
26547         temp := dimension_of(func\imported_volume_function.geometry);
26548         RETURN (one_tuples_of(make_uniform_product_space(the_reals, temp)));
26549      END_IF;
26550      IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
26551         RETURN (func\application_defined_function.explicit_range);
26552      END_IF;
26553      RETURN (?);
26554END_FUNCTION;
26555
26556-- DIFF IN AP214
26557-- DIFF IN AP203e2
26558FUNCTION dimension_of
26559      (item : geometric_representation_item ) : dimension_count;
26560   LOCAL
26561      x : SET OF representation;
26562      y : representation_context;
26563      dim : dimension_count;
26564   END_LOCAL;
26565      IF 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(item) THEN
26566         dim := SIZEOF(item\cartesian_point.coordinates);
26567         RETURN (dim);
26568      END_IF;
26569      IF 'STEP_MERGED_CAD_SCHEMA.DIRECTION' IN TYPEOF(item) THEN
26570         dim := SIZEOF(item\direction.direction_ratios);
26571         RETURN (dim);
26572      END_IF;
26573      IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(item) THEN
26574         dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
26575         RETURN (dim);
26576      END_IF;
26577      x := using_representations(item);
26578      IF SIZEOF(x) > 0 THEN
26579         y := x[1].context_of_items;
26580         dim := y\geometric_representation_context.coordinate_space_dimension;
26581         RETURN (dim);
26582      ELSE
26583         RETURN (?);
26584      END_IF;
26585END_FUNCTION;
26586
26587-- DIFF IN AP214
26588-- DIFF IN AP203e2
26589FUNCTION dimensions_for_si_unit
26590      (n : si_unit_name ) : dimensional_exponents;
26591      CASE n OF
26592         metre :
26593               RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
26594         gram :
26595               RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0));
26596         second :
26597               RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0));
26598         ampere :
26599               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0));
26600         kelvin :
26601               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
26602         mole :
26603               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0));
26604         candela :
26605               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
26606         radian :
26607               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
26608         steradian :
26609               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
26610         hertz :
26611               RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
26612         newton :
26613               RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
26614         pascal :
26615               RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
26616         joule :
26617               RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
26618         watt :
26619               RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0));
26620         coulomb :
26621               RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0));
26622         volt :
26623               RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0));
26624         farad :
26625               RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0));
26626         ohm :
26627               RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0));
26628         siemens :
26629               RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0));
26630         weber :
26631               RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
26632         tesla :
26633               RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
26634         henry :
26635               RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0));
26636         degree_Celsius :
26637               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
26638         lumen :
26639               RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
26640         lux :
26641               RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
26642         becquerel :
26643               RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
26644         gray :
26645               RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
26646         sievert :
26647               RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
26648      OTHERWISE :
26649            RETURN (?);
26650      END_CASE;
26651END_FUNCTION;
26652
26653-- IN AP242
26654FUNCTION domain_from
26655      (ref : maths_space_or_function ) : tuple_space;
26656   LOCAL
26657      typenames : SET OF STRING := stripped_typeof(ref);
26658      func : maths_function;
26659   END_LOCAL;
26660      IF NOT EXISTS(ref) THEN
26661         RETURN (?);
26662      END_IF;
26663      IF 'TUPLE_SPACE' IN typenames THEN
26664         RETURN (ref);
26665      END_IF;
26666      IF 'MATHS_SPACE' IN typenames THEN
26667         RETURN (one_tuples_of(ref));
26668      END_IF;
26669      func := ref;
26670      IF 'CONSTANT_FUNCTION' IN typenames THEN
26671         RETURN (domain_from(func\constant_function.source_of_domain));
26672      END_IF;
26673      IF 'SELECTOR_FUNCTION' IN typenames THEN
26674         RETURN (domain_from(func\selector_function.source_of_domain));
26675      END_IF;
26676      IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
26677         RETURN (domain_from(func\parallel_composed_function.source_of_domain));
26678      END_IF;
26679      RETURN (func.domain);
26680END_FUNCTION;
26681
26682-- DIFF IN AP214
26683FUNCTION dot_product
26684      (arg1 : direction;
26685       arg2 : direction ) : REAL;
26686   LOCAL
26687      scalar : REAL;
26688      vec1 : direction;
26689      vec2 : direction;
26690      ndim : INTEGER;
26691   END_LOCAL;
26692      IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) THEN
26693         scalar := ?;
26694      ELSE
26695         IF arg1.dim <> arg2.dim THEN
26696            scalar := ?;
26697         ELSE
26698            BEGIN
26699               vec1 := normalise(arg1);
26700               vec2 := normalise(arg2);
26701               ndim := arg1.dim;
26702               scalar := 0.0;
26703               REPEAT i := 1 TO ndim;
26704                  scalar := scalar + vec1.direction_ratios[i] * vec2.direction_ratios[i];
26705               END_REPEAT;
26706            END;
26707         END_IF;
26708      END_IF;
26709      RETURN (scalar);
26710END_FUNCTION;
26711
26712-- IN AP242
26713FUNCTION drop_numeric_constraints
26714      (spc : maths_space ) : maths_space;
26715   LOCAL
26716      typenames : SET OF STRING := stripped_typeof(spc);
26717      tspc : listed_product_space;
26718      factors : LIST OF maths_space := [];
26719      xspc : extended_tuple_space;
26720   END_LOCAL;
26721      IF 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
26722         RETURN (make_uniform_product_space(drop_numeric_constraints(spc\uniform_product_space.base), spc\uniform_product_space.exponent));
26723      END_IF;
26724      IF 'LISTED_PRODUCT_SPACE' IN typenames THEN
26725         tspc := spc;
26726         REPEAT i := 1 TO SIZEOF(tspc.factors);
26727            INSERT( factors, drop_numeric_constraints(tspc.factors[i]), i - 1 );
26728         END_REPEAT;
26729         RETURN (make_listed_product_space(factors));
26730      END_IF;
26731      IF 'EXTENDED_TUPLE_SPACE' IN typenames THEN
26732         xspc := spc;
26733         RETURN (make_extended_tuple_space(drop_numeric_constraints(xspc.base), drop_numeric_constraints(xspc.extender)));
26734      END_IF;
26735      IF subspace_of_es(spc, es_numbers) THEN
26736         RETURN (number_superspace_of(spc));
26737      END_IF;
26738      RETURN (spc);
26739END_FUNCTION;
26740
26741FUNCTION edge_reversed
26742      (an_edge : edge ) : oriented_edge;
26743   LOCAL
26744      the_reverse : oriented_edge;
26745   END_LOCAL;
26746      IF 'STEP_MERGED_CAD_SCHEMA.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN
26747         the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start) || oriented_edge(an_edge\oriented_edge.edge_element, NOT an_edge\oriented_edge.orientation);
26748      ELSE
26749         the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start) || oriented_edge(an_edge, FALSE);
26750      END_IF;
26751      RETURN (the_reverse);
26752END_FUNCTION;
26753
26754-- IN AP242
26755FUNCTION enclose_cregion_in_pregion
26756      (crgn : cartesian_complex_number_region;
26757       centre : complex_number_literal ) : polar_complex_number_region;
26758      FUNCTION angle
26759         (a : REAL ) : REAL;
26760         REPEAT WHILE a > 3.14159;
26761            a := a - 2.0 * 3.14159;
26762         END_REPEAT;
26763         REPEAT WHILE a <= -3.14159;
26764            a := a + 2.0 * 3.14159;
26765         END_REPEAT;
26766         RETURN (a);
26767      END_FUNCTION;
26768      FUNCTION strictly_in
26769         (z : REAL;
26770          zitv : real_interval ) : LOGICAL;
26771         RETURN ((NOT min_exists(zitv) OR (z > real_min(zitv))) AND (NOT max_exists(zitv) OR (z < real_max(zitv))));
26772      END_FUNCTION;
26773      PROCEDURE angle_minmax
26774         (ab : REAL;
26775          a : REAL;
26776          a_in : BOOLEAN;
26777          VAR amin : REAL;
26778          VAR amax : REAL;
26779          VAR amin_in : BOOLEAN;
26780          VAR amax_in : BOOLEAN );
26781         a := angle(a - ab);
26782         IF amin = a THEN
26783            amin_in := amin_in OR a_in;
26784         END_IF;
26785         IF amin > a THEN
26786            amin := a;
26787            amin_in := a_in;
26788         END_IF;
26789         IF amax = a THEN
26790            amax_in := amax_in OR a_in;
26791         END_IF;
26792         IF amax < a THEN
26793            amax := a;
26794            amax_in := a_in;
26795         END_IF;
26796      END_PROCEDURE;
26797      PROCEDURE range_max
26798         (r : REAL;
26799          incl : BOOLEAN;
26800          VAR rmax : REAL;
26801          VAR rmax_in : BOOLEAN );
26802         IF rmax = r THEN
26803            rmax_in := rmax_in OR incl;
26804         END_IF;
26805         IF rmax < r THEN
26806            rmax := r;
26807            rmax_in := incl;
26808         END_IF;
26809      END_PROCEDURE;
26810      PROCEDURE range_min
26811         (r : REAL;
26812          incl : BOOLEAN;
26813          VAR rmin : REAL;
26814          VAR rmin_in : BOOLEAN );
26815         IF rmin = r THEN
26816            rmin_in := rmin_in OR incl;
26817         END_IF;
26818         IF (rmin < 0.0) OR (rmin > r) THEN
26819            rmin := r;
26820            rmin_in := incl;
26821         END_IF;
26822      END_PROCEDURE;
26823   LOCAL
26824      xitv : real_interval;
26825      yitv : real_interval;
26826      is_xmin : BOOLEAN;
26827      is_xmax : BOOLEAN;
26828      is_ymin : BOOLEAN;
26829      is_ymax : BOOLEAN;
26830      xmin : REAL := 0.0;
26831      xmax : REAL := 0.0;
26832      ymin : REAL := 0.0;
26833      ymax : REAL := 0.0;
26834      xc : REAL := 0.0;
26835      yc : REAL := 0.0;
26836      xmin_in : BOOLEAN := FALSE;
26837      xmax_in : BOOLEAN := FALSE;
26838      ymin_in : BOOLEAN := FALSE;
26839      ymax_in : BOOLEAN := FALSE;
26840      rmin : REAL := -1.0;
26841      rmax : REAL := -1.0;
26842      amin : REAL := 4.0;
26843      amax : REAL := -4.0;
26844      rmax_exists : BOOLEAN := TRUE;
26845      outside : BOOLEAN := TRUE;
26846      rmin_in : BOOLEAN := FALSE;
26847      rmax_in : BOOLEAN := FALSE;
26848      amin_in : BOOLEAN := FALSE;
26849      amax_in : BOOLEAN := FALSE;
26850      ab : REAL := 0.0;
26851      a : REAL := 0.0;
26852      r : REAL := 0.0;
26853      incl : BOOLEAN;
26854      ritv : real_interval;
26855      aitv : finite_real_interval;
26856      minclo : open_closed := open;
26857      maxclo : open_closed := open;
26858   END_LOCAL;
26859      IF NOT EXISTS(crgn) OR NOT EXISTS(centre) THEN
26860         RETURN (?);
26861      END_IF;
26862      xitv := crgn.real_constraint;
26863      yitv := crgn.imag_constraint;
26864      xc := centre.real_part;
26865      yc := centre.imag_part;
26866      is_xmin := min_exists(xitv);
26867      is_xmax := max_exists(xitv);
26868      is_ymin := min_exists(yitv);
26869      is_ymax := max_exists(yitv);
26870      IF is_xmin THEN
26871         xmin := real_min(xitv);
26872         xmin_in := min_included(xitv);
26873      END_IF;
26874      IF is_xmax THEN
26875         xmax := real_max(xitv);
26876         xmax_in := max_included(xitv);
26877      END_IF;
26878      IF is_ymin THEN
26879         ymin := real_min(yitv);
26880         ymin_in := min_included(yitv);
26881      END_IF;
26882      IF is_ymax THEN
26883         ymax := real_max(yitv);
26884         ymax_in := max_included(yitv);
26885      END_IF;
26886      rmax_exists := ((is_xmin AND is_xmax) AND is_ymin) AND is_ymax;
26887      IF is_xmin AND (xc <= xmin) THEN
26888         ab := 0.0;
26889      ELSE
26890         IF is_ymin AND (yc <= ymin) THEN
26891            ab := 0.500000 * 3.14159;
26892         ELSE
26893            IF is_ymax AND (yc >= ymax) THEN
26894               ab := -0.500000 * 3.14159;
26895            ELSE
26896               IF is_xmax AND (xc >= xmax) THEN
26897                  ab := 3.14159;
26898               ELSE
26899                  outside := FALSE;
26900               END_IF;
26901            END_IF;
26902         END_IF;
26903      END_IF;
26904      IF NOT outside AND NOT rmax_exists THEN
26905         RETURN (?);
26906      END_IF;
26907      IF (is_xmin AND (xc <= xmin)) AND strictly_in(yc, yitv) THEN
26908         rmin := xmin - xc;
26909         rmin_in := xmin_in;
26910      ELSE
26911         IF (is_ymin AND (yc <= ymin)) AND strictly_in(xc, xitv) THEN
26912            rmin := ymin - yc;
26913            rmin_in := ymin_in;
26914         ELSE
26915            IF (is_ymax AND (yc >= ymax)) AND strictly_in(xc, xitv) THEN
26916               rmin := yc - ymax;
26917               rmin_in := ymax_in;
26918            ELSE
26919               IF (is_xmax AND (xc >= xmax)) AND strictly_in(yc, yitv) THEN
26920                  rmin := xc - xmax;
26921                  rmin_in := xmax_in;
26922               END_IF;
26923            END_IF;
26924         END_IF;
26925      END_IF;
26926      IF is_xmin THEN
26927         IF is_ymin THEN
26928            r := SQRT((xmin - xc) ** 2 + (ymin - yc) ** 2);
26929            incl := xmin_in AND ymin_in;
26930            IF rmax_exists THEN
26931               range_max( r, incl, rmax, rmax_in );
26932            END_IF;
26933            IF outside THEN
26934               IF r > 0.0 THEN
26935                  range_min( r, incl, rmin, rmin_in );
26936                  a := angle(atan2(ymin - yc, xmin - xc) - ab);
26937                  IF xc = xmin THEN
26938                     incl := xmin_in;
26939                  END_IF;
26940                  IF yc = ymin THEN
26941                     incl := ymin_in;
26942                  END_IF;
26943                  angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
26944               ELSE
26945                  rmin := 0.0;
26946                  rmin_in := xmin_in AND ymin_in;
26947                  amin := angle(0.0 - ab);
26948                  amin_in := ymin_in;
26949                  amax := angle(0.500000 * 3.14159 - ab);
26950                  amax_in := xmin_in;
26951               END_IF;
26952            END_IF;
26953         ELSE
26954            IF xc <= xmin THEN
26955               angle_minmax( ab, -0.500000 * 3.14159, (xc = xmin) AND xmin_in, amin, amax, amin_in, amax_in );
26956            END_IF;
26957         END_IF;
26958         IF NOT is_ymax AND (xc <= xmin) THEN
26959            angle_minmax( ab, 0.500000 * 3.14159, (xc = xmin) AND xmin_in, amin, amax, amin_in, amax_in );
26960         END_IF;
26961      END_IF;
26962      IF is_ymin THEN
26963         IF is_xmax THEN
26964            r := SQRT((xmax - xc) ** 2 + (ymin - yc) ** 2);
26965            incl := xmax_in AND ymin_in;
26966            IF rmax_exists THEN
26967               range_max( r, incl, rmax, rmax_in );
26968            END_IF;
26969            IF outside THEN
26970               IF r > 0.0 THEN
26971                  range_min( r, incl, rmin, rmin_in );
26972                  a := angle(atan2(ymin - yc, xmax - xc) - ab);
26973                  IF xc = xmax THEN
26974                     incl := xmax_in;
26975                  END_IF;
26976                  IF yc = ymin THEN
26977                     incl := ymin_in;
26978                  END_IF;
26979                  angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
26980               ELSE
26981                  rmin := 0.0;
26982                  rmin_in := xmax_in AND ymin_in;
26983                  amin := angle(0.500000 * 3.14159 - ab);
26984                  amin_in := ymin_in;
26985                  amax := angle(3.14159 - ab);
26986                  amax_in := xmax_in;
26987               END_IF;
26988            END_IF;
26989         ELSE
26990            IF yc <= ymin THEN
26991               angle_minmax( ab, 0.0, (yc = ymin) AND ymin_in, amin, amax, amin_in, amax_in );
26992            END_IF;
26993         END_IF;
26994         IF NOT is_xmin AND (yc <= ymin) THEN
26995            angle_minmax( ab, 3.14159, (yc = ymin) AND ymin_in, amin, amax, amin_in, amax_in );
26996         END_IF;
26997      END_IF;
26998      IF is_xmax THEN
26999         IF is_ymax THEN
27000            r := SQRT((xmax - xc) ** 2 + (ymax - yc) ** 2);
27001            incl := xmax_in AND ymax_in;
27002            IF rmax_exists THEN
27003               range_max( r, incl, rmax, rmax_in );
27004            END_IF;
27005            IF outside THEN
27006               IF r > 0.0 THEN
27007                  range_min( r, incl, rmin, rmin_in );
27008                  a := angle(atan2(ymax - yc, xmax - xc) - ab);
27009                  IF xc = xmax THEN
27010                     incl := xmax_in;
27011                  END_IF;
27012                  IF yc = ymax THEN
27013                     incl := ymax_in;
27014                  END_IF;
27015                  angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
27016               ELSE
27017                  rmin := 0.0;
27018                  rmin_in := xmax_in AND ymax_in;
27019                  amin := angle(-3.14159 - ab);
27020                  amin_in := ymax_in;
27021                  amax := angle(-0.500000 * 3.14159 - ab);
27022                  amax_in := xmax_in;
27023               END_IF;
27024            END_IF;
27025         ELSE
27026            IF xc >= xmax THEN
27027               angle_minmax( ab, 0.500000 * 3.14159, (xc = xmax) AND xmax_in, amin, amax, amin_in, amax_in );
27028            END_IF;
27029         END_IF;
27030         IF NOT is_ymin AND (xc >= xmax) THEN
27031            angle_minmax( ab, -0.500000 * 3.14159, (xc = xmax) AND xmax_in, amin, amax, amin_in, amax_in );
27032         END_IF;
27033      END_IF;
27034      IF is_ymax THEN
27035         IF is_xmin THEN
27036            r := SQRT((xmin - xc) ** 2 + (ymax - yc) ** 2);
27037            incl := xmin_in AND ymax_in;
27038            IF rmax_exists THEN
27039               range_max( r, incl, rmax, rmax_in );
27040            END_IF;
27041            IF outside THEN
27042               IF r > 0.0 THEN
27043                  range_min( r, incl, rmin, rmin_in );
27044                  a := angle(atan2(ymax - yc, xmin - xc) - ab);
27045                  IF xc = xmin THEN
27046                     incl := xmin_in;
27047                  END_IF;
27048                  IF yc = ymax THEN
27049                     incl := ymax_in;
27050                  END_IF;
27051                  angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
27052               ELSE
27053                  rmin := 0.0;
27054                  rmin_in := xmin_in AND ymax_in;
27055                  amin := angle(0.500000 * 3.14159 - ab);
27056                  amin_in := ymax_in;
27057                  amax := angle(3.14159 - ab);
27058                  amax_in := xmin_in;
27059               END_IF;
27060            END_IF;
27061         ELSE
27062            IF yc >= ymax THEN
27063               angle_minmax( ab, 3.14159, (yc = ymax) AND ymax_in, amin, amax, amin_in, amax_in );
27064            END_IF;
27065         END_IF;
27066         IF NOT is_xmax AND (yc >= ymax) THEN
27067            angle_minmax( ab, 0.0, (yc = ymax) AND ymax_in, amin, amax, amin_in, amax_in );
27068         END_IF;
27069      END_IF;
27070      IF outside THEN
27071         amin := angle(amin + ab);
27072         IF amin = 3.14159 THEN
27073            amin := -3.14159;
27074         END_IF;
27075         amax := angle(amax + ab);
27076         IF amax <= amin THEN
27077            amax := amax + 2.0 * 3.14159;
27078         END_IF;
27079      ELSE
27080         amin := -3.14159;
27081         amin_in := FALSE;
27082         amax := 3.14159;
27083         amax_in := FALSE;
27084      END_IF;
27085      IF amin_in THEN
27086         minclo := closed;
27087      END_IF;
27088      IF amax_in THEN
27089         maxclo := closed;
27090      END_IF;
27091      aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
27092      minclo := open;
27093      IF rmin_in THEN
27094         minclo := closed;
27095      END_IF;
27096      IF rmax_exists THEN
27097         maxclo := open;
27098         IF rmax_in THEN
27099            maxclo := closed;
27100         END_IF;
27101         ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
27102      ELSE
27103         ritv := make_real_interval_from_min(rmin, minclo);
27104      END_IF;
27105      RETURN (make_polar_complex_number_region(centre, ritv, aitv));
27106END_FUNCTION;
27107
27108-- IN AP242
27109FUNCTION enclose_pregion_in_cregion
27110      (prgn : polar_complex_number_region ) : cartesian_complex_number_region;
27111      PROCEDURE nearest_good_direction
27112         (acart : REAL;
27113          aitv : finite_real_interval;
27114          VAR a : REAL;
27115          VAR a_in : BOOLEAN );
27116         a := acart;
27117         a_in := TRUE;
27118         IF a < aitv.min THEN
27119            IF a + 2.0 * 3.14159 < aitv.max THEN
27120               RETURN;
27121            END_IF;
27122            IF a + 2.0 * 3.14159 = aitv.max THEN
27123               a_in := max_included(aitv);
27124               RETURN;
27125            END_IF;
27126         ELSE
27127            IF a = aitv.min THEN
27128               a_in := min_included(aitv);
27129               RETURN;
27130            ELSE
27131               IF a < aitv.max THEN
27132                  RETURN;
27133               ELSE
27134                  IF a = aitv.max THEN
27135                     a_in := max_included(aitv);
27136                     RETURN;
27137                  END_IF;
27138               END_IF;
27139            END_IF;
27140         END_IF;
27141         IF cos(acart - aitv.max) >= cos(acart - aitv.min) THEN
27142            a := aitv.max;
27143            a_in := max_included(aitv);
27144         ELSE
27145            a := aitv.min;
27146            a_in := min_included(aitv);
27147         END_IF;
27148      END_PROCEDURE;
27149   LOCAL
27150      xc : REAL := 0.0;
27151      yc : REAL := 0.0;
27152      xmin : REAL := 0.0;
27153      xmax : REAL := 0.0;
27154      ymin : REAL := 0.0;
27155      ymax : REAL := 0.0;
27156      ritv : real_interval;
27157      xitv : real_interval;
27158      yitv : real_interval;
27159      aitv : finite_real_interval;
27160      xmin_exists : BOOLEAN;
27161      xmax_exists : BOOLEAN;
27162      ymin_exists : BOOLEAN;
27163      ymax_exists : BOOLEAN;
27164      xmin_in : BOOLEAN := FALSE;
27165      xmax_in : BOOLEAN := FALSE;
27166      ymin_in : BOOLEAN := FALSE;
27167      ymax_in : BOOLEAN := FALSE;
27168      a : REAL := 0.0;
27169      r : REAL := 0.0;
27170      a_in : BOOLEAN := FALSE;
27171      min_clo : open_closed := open;
27172      max_clo : open_closed := open;
27173   END_LOCAL;
27174      IF NOT EXISTS(prgn) THEN
27175         RETURN (?);
27176      END_IF;
27177      xc := prgn.centre.real_part;
27178      yc := prgn.centre.imag_part;
27179      ritv := prgn.distance_constraint;
27180      aitv := prgn.direction_constraint;
27181      nearest_good_direction( 3.14159, aitv, a, a_in );
27182      IF cos(a) >= 0.0 THEN
27183         xmin_exists := TRUE;
27184         xmin := xc + real_min(ritv) * cos(a);
27185         xmin_in := a_in AND (min_included(ritv) OR (cos(a) = 0.0));
27186      ELSE
27187         IF max_exists(ritv) THEN
27188            xmin_exists := TRUE;
27189            xmin := xc + real_max(ritv) * cos(a);
27190            xmin_in := a_in AND max_included(ritv);
27191         ELSE
27192            xmin_exists := FALSE;
27193         END_IF;
27194      END_IF;
27195      nearest_good_direction( 0.0, aitv, a, a_in );
27196      IF cos(a) <= 0.0 THEN
27197         xmax_exists := TRUE;
27198         xmax := xc + real_min(ritv) * cos(a);
27199         xmax_in := a_in AND (min_included(ritv) OR (cos(a) = 0.0));
27200      ELSE
27201         IF max_exists(ritv) THEN
27202            xmax_exists := TRUE;
27203            xmax := xc + real_max(ritv) * cos(a);
27204            xmax_in := a_in AND max_included(ritv);
27205         ELSE
27206            xmax_exists := FALSE;
27207         END_IF;
27208      END_IF;
27209      nearest_good_direction( -0.500000 * 3.14159, aitv, a, a_in );
27210      IF sin(a) >= 0.0 THEN
27211         ymin_exists := TRUE;
27212         ymin := yc + real_min(ritv) * sin(a);
27213         ymin_in := a_in AND (min_included(ritv) OR (sin(a) = 0.0));
27214      ELSE
27215         IF max_exists(ritv) THEN
27216            ymin_exists := TRUE;
27217            ymin := yc + real_max(ritv) * sin(a);
27218            ymin_in := a_in AND max_included(ritv);
27219         ELSE
27220            ymin_exists := FALSE;
27221         END_IF;
27222      END_IF;
27223      nearest_good_direction( 0.500000 * 3.14159, aitv, a, a_in );
27224      IF sin(a) <= 0.0 THEN
27225         ymax_exists := TRUE;
27226         ymax := yc + real_min(ritv) * sin(a);
27227         ymax_in := a_in AND (min_included(ritv) OR (sin(a) = 0.0));
27228      ELSE
27229         IF max_exists(ritv) THEN
27230            ymax_exists := TRUE;
27231            ymax := yc + real_max(ritv) * sin(a);
27232            ymax_in := a_in AND max_included(ritv);
27233         ELSE
27234            ymax_exists := FALSE;
27235         END_IF;
27236      END_IF;
27237      IF NOT (((xmin_exists OR xmax_exists) OR ymin_exists) OR ymax_exists) THEN
27238         RETURN (?);
27239      END_IF;
27240      IF xmin_exists THEN
27241         IF xmin_in THEN
27242            min_clo := closed;
27243         ELSE
27244            min_clo := open;
27245         END_IF;
27246         IF xmax_exists THEN
27247            IF xmax_in THEN
27248               max_clo := closed;
27249            ELSE
27250               max_clo := open;
27251            END_IF;
27252            xitv := make_finite_real_interval(xmin, min_clo, xmax, max_clo);
27253         ELSE
27254            xitv := make_real_interval_from_min(xmin, min_clo);
27255         END_IF;
27256      ELSE
27257         IF xmax_exists THEN
27258            IF xmax_in THEN
27259               max_clo := closed;
27260            ELSE
27261               max_clo := open;
27262            END_IF;
27263            xitv := make_real_interval_to_max(xmax, max_clo);
27264         ELSE
27265            xitv := the_reals;
27266         END_IF;
27267      END_IF;
27268      IF ymin_exists THEN
27269         IF ymin_in THEN
27270            min_clo := closed;
27271         ELSE
27272            min_clo := open;
27273         END_IF;
27274         IF ymax_exists THEN
27275            IF ymax_in THEN
27276               max_clo := closed;
27277            ELSE
27278               max_clo := open;
27279            END_IF;
27280            yitv := make_finite_real_interval(ymin, min_clo, ymax, max_clo);
27281         ELSE
27282            yitv := make_real_interval_from_min(ymin, min_clo);
27283         END_IF;
27284      ELSE
27285         IF ymax_exists THEN
27286            IF ymax_in THEN
27287               max_clo := closed;
27288            ELSE
27289               max_clo := open;
27290            END_IF;
27291            yitv := make_real_interval_to_max(ymax, max_clo);
27292         ELSE
27293            yitv := the_reals;
27294         END_IF;
27295      END_IF;
27296      RETURN (make_cartesian_complex_number_region(xitv, yitv));
27297END_FUNCTION;
27298
27299-- IN AP242
27300FUNCTION enclose_pregion_in_pregion
27301      (prgn : polar_complex_number_region;
27302       centre : complex_number_literal ) : polar_complex_number_region;
27303      FUNCTION angle
27304         (a : REAL ) : REAL;
27305         REPEAT WHILE a > 3.14159;
27306            a := a - 2.0 * 3.14159;
27307         END_REPEAT;
27308         REPEAT WHILE a <= -3.14159;
27309            a := a + 2.0 * 3.14159;
27310         END_REPEAT;
27311         RETURN (a);
27312      END_FUNCTION;
27313      PROCEDURE angle_range
27314         (VAR amin : REAL;
27315          VAR amax : REAL );
27316         amin := angle(amin);
27317         IF amin = 3.14159 THEN
27318            amin := -3.14159;
27319         END_IF;
27320         amax := angle(amax);
27321         IF amax <= amin THEN
27322            amax := amax + 2.0 * 3.14159;
27323         END_IF;
27324      END_PROCEDURE;
27325      FUNCTION strictly_in
27326         (a : REAL;
27327          aitv : finite_real_interval ) : LOGICAL;
27328         a := angle(a);
27329         RETURN ((aitv.min < a) AND (a < aitv.max) OR (aitv.min < a + 2.0 * 3.14159) AND (a + 2.0 * 3.14159 < aitv.max));
27330      END_FUNCTION;
27331      PROCEDURE find_aminmax
27332         (ab : REAL;
27333          a0 : REAL;
27334          a1 : REAL;
27335          a2 : REAL;
27336          a3 : REAL;
27337          in0 : BOOLEAN;
27338          in1 : BOOLEAN;
27339          in2 : BOOLEAN;
27340          in3 : BOOLEAN;
27341          VAR amin : REAL;
27342          VAR amax : REAL;
27343          VAR amin_in : BOOLEAN;
27344          VAR amax_in : BOOLEAN );
27345      LOCAL
27346         a : REAL;
27347      END_LOCAL;
27348         amin := angle(a0 - ab);
27349         amin_in := in0;
27350         amax := amin;
27351         amax_in := in0;
27352         a := angle(a1 - ab);
27353         IF a = amin THEN
27354            amin_in := amin_in OR in1;
27355         END_IF;
27356         IF a < amin THEN
27357            amin := a;
27358            amin_in := in1;
27359         END_IF;
27360         IF a = amax THEN
27361            amax_in := amax_in OR in1;
27362         END_IF;
27363         IF a > amax THEN
27364            amax := a;
27365            amax_in := in1;
27366         END_IF;
27367         a := angle(a2 - ab);
27368         IF a = amin THEN
27369            amin_in := amin_in OR in2;
27370         END_IF;
27371         IF a < amin THEN
27372            amin := a;
27373            amin_in := in2;
27374         END_IF;
27375         IF a = amax THEN
27376            amax_in := amax_in OR in2;
27377         END_IF;
27378         IF a > amax THEN
27379            amax := a;
27380            amax_in := in2;
27381         END_IF;
27382         a := angle(a3 - ab);
27383         IF a = amin THEN
27384            amin_in := amin_in OR in3;
27385         END_IF;
27386         IF a < amin THEN
27387            amin := a;
27388            amin_in := in3;
27389         END_IF;
27390         IF a = amax THEN
27391            amax_in := amax_in OR in3;
27392         END_IF;
27393         IF a > amax THEN
27394            amax := a;
27395            amax_in := in3;
27396         END_IF;
27397         amin := amin + ab;
27398         amax := amax + ab;
27399         angle_range( amin, amax );
27400      END_PROCEDURE;
27401   LOCAL
27402      ritp : real_interval;
27403      ritv : real_interval;
27404      aitp : finite_real_interval;
27405      aitv : finite_real_interval;
27406      xp : REAL := 0.0;
27407      yp : REAL := 0.0;
27408      xc : REAL := 0.0;
27409      yc : REAL := 0.0;
27410      rmax : REAL := 0.0;
27411      rmin : REAL := 0.0;
27412      amin : REAL := 0.0;
27413      amax : REAL := 0.0;
27414      rc : REAL := 0.0;
27415      acp : REAL := 0.0;
27416      apc : REAL := 0.0;
27417      rmax_in : BOOLEAN := FALSE;
27418      rmin_in : BOOLEAN := FALSE;
27419      amin_in : BOOLEAN := FALSE;
27420      amax_in : BOOLEAN := FALSE;
27421      rmxp : REAL := 0.0;
27422      rmnp : REAL := 0.0;
27423      x : REAL := 0.0;
27424      y : REAL := 0.0;
27425      r : REAL := 0.0;
27426      a : REAL := 0.0;
27427      ab : REAL := 0.0;
27428      r0 : REAL := 0.0;
27429      a0 : REAL := 0.0;
27430      r1 : REAL := 0.0;
27431      a1 : REAL := 0.0;
27432      r2 : REAL := 0.0;
27433      a2 : REAL := 0.0;
27434      r3 : REAL := 0.0;
27435      a3 : REAL := 0.0;
27436      in0 : BOOLEAN := FALSE;
27437      in1 : BOOLEAN := FALSE;
27438      in2 : BOOLEAN := FALSE;
27439      in3 : BOOLEAN := FALSE;
27440      inn : BOOLEAN := FALSE;
27441      minclo : open_closed := open;
27442      maxclo : open_closed := open;
27443   END_LOCAL;
27444      IF NOT EXISTS(prgn) OR NOT EXISTS(centre) THEN
27445         RETURN (?);
27446      END_IF;
27447      xp := prgn.centre.real_part;
27448      yp := prgn.centre.imag_part;
27449      ritp := prgn.distance_constraint;
27450      aitp := prgn.direction_constraint;
27451      xc := centre.real_part;
27452      yc := centre.imag_part;
27453      IF (xc = xp) AND (yc = yp) THEN
27454         RETURN (prgn);
27455      END_IF;
27456      rc := SQRT((xp - xc) ** 2 + (yp - yc) ** 2);
27457      acp := atan2(yp - yc, xp - xc);
27458      apc := atan2(yc - yp, xc - xp);
27459      rmnp := real_min(ritp);
27460      IF max_exists(ritp) THEN
27461         rmxp := real_max(ritp);
27462         IF aitp.max - aitp.min = 2.0 * 3.14159 THEN
27463            inn := NOT max_included(aitp);
27464            a := angle(aitp.min);
27465            rmax := rc + rmxp;
27466            rmax_in := max_included(ritp);
27467            IF inn AND (acp = a) THEN
27468               rmax_in := FALSE;
27469            END_IF;
27470            IF rc > rmxp THEN
27471               a0 := ASIN(rmxp / rc);
27472               amin := angle(acp - a0);
27473               amin_in := max_included(ritp);
27474               IF amin = 3.14159 THEN
27475                  amin := -3.14159;
27476               END_IF;
27477               amax := angle(acp + a0);
27478               amax_in := amin_in;
27479               IF amax < amin THEN
27480                  amax := amax + 2.0 * 3.14159;
27481               END_IF;
27482               rmin := rc - rmxp;
27483               rmin_in := amin_in;
27484               IF inn THEN
27485                  IF apc = a THEN
27486                     rmin_in := FALSE;
27487                  END_IF;
27488                  IF angle(amin + 0.500000 * 3.14159) = a THEN
27489                     amin_in := FALSE;
27490                  END_IF;
27491                  IF angle(amax - 0.500000 * 3.14159) = a THEN
27492                     amax_in := FALSE;
27493                  END_IF;
27494               END_IF;
27495            ELSE
27496               IF rc = rmxp THEN
27497                  amin := angle(acp - 0.500000 * 3.14159);
27498                  amin_in := FALSE;
27499                  IF amin = 3.14159 THEN
27500                     amin := -3.14159;
27501                  END_IF;
27502                  amax := angle(acp + 0.500000 * 3.14159);
27503                  amax_in := FALSE;
27504                  IF amax < amin THEN
27505                     amax := amax + 2.0 * 3.14159;
27506                  END_IF;
27507                  rmin := 0.0;
27508                  rmin_in := max_included(ritp);
27509                  IF inn AND (apc = a) THEN
27510                     rmin_in := FALSE;
27511                  END_IF;
27512               ELSE
27513                  IF rc > rmnp THEN
27514                     IF inn AND (apc = a) THEN
27515                        rmin := 0.0;
27516                        rmin_in := FALSE;
27517                        amin := aitp.min;
27518                        amin_in := FALSE;
27519                        amax := aitp.max;
27520                        amax_in := FALSE;
27521                     ELSE
27522                        rmin := 0.0;
27523                        rmin_in := TRUE;
27524                        amin := -3.14159;
27525                        amin_in := FALSE;
27526                        amax := 3.14159;
27527                        amax_in := TRUE;
27528                     END_IF;
27529                  ELSE
27530                     rmin := rmnp - rc;
27531                     rmin_in := min_included(ritp);
27532                     amin := -3.14159;
27533                     amin_in := FALSE;
27534                     amax := 3.14159;
27535                     amax_in := TRUE;
27536                     IF inn THEN
27537                        IF apc = a THEN
27538                           rmin_in := FALSE;
27539                           amin := aitp.min;
27540                           amin_in := FALSE;
27541                           amax := aitp.max;
27542                           amax_in := FALSE;
27543                        ELSE
27544                           IF acp = a THEN
27545                              amin := aitp.min;
27546                              amin_in := FALSE;
27547                              amax := aitp.max;
27548                              amax_in := FALSE;
27549                           END_IF;
27550                        END_IF;
27551                     END_IF;
27552                  END_IF;
27553               END_IF;
27554            END_IF;
27555         ELSE
27556            x := xp + rmxp * cos(aitp.min) - xc;
27557            y := yp + rmxp * sin(aitp.min) - yc;
27558            r0 := SQRT(x ** 2 + y ** 2);
27559            in0 := max_included(ritp) AND min_included(aitp);
27560            IF r0 <> 0.0 THEN
27561               a0 := atan2(y, x);
27562            END_IF;
27563            x := xp + rmxp * cos(aitp.max) - xc;
27564            y := yp + rmxp * sin(aitp.max) - yc;
27565            r1 := SQRT(x ** 2 + y ** 2);
27566            in1 := max_included(ritp) AND max_included(aitp);
27567            IF r1 <> 0.0 THEN
27568               a1 := atan2(y, x);
27569            END_IF;
27570            x := xp + rmnp * cos(aitp.max) - xc;
27571            y := yp + rmnp * sin(aitp.max) - yc;
27572            r2 := SQRT(x ** 2 + y ** 2);
27573            in2 := min_included(ritp) AND max_included(aitp);
27574            IF r2 <> 0.0 THEN
27575               a2 := atan2(y, x);
27576            ELSE
27577               a2 := a1;
27578               in2 := in1;
27579            END_IF;
27580            IF r1 = 0.0 THEN
27581               a1 := a2;
27582               in1 := in2;
27583            END_IF;
27584            x := xp + rmnp * cos(aitp.min) - xc;
27585            y := yp + rmnp * sin(aitp.min) - yc;
27586            r3 := SQRT(x ** 2 + y ** 2);
27587            in3 := min_included(ritp) AND min_included(aitp);
27588            IF r3 <> 0.0 THEN
27589               a3 := atan2(y, x);
27590            ELSE
27591               a3 := a0;
27592               in3 := in0;
27593            END_IF;
27594            IF r0 = 0.0 THEN
27595               a0 := a3;
27596               in0 := in3;
27597            END_IF;
27598            IF rmnp = 0.0 THEN
27599               in2 := min_included(ritp);
27600               in3 := in2;
27601            END_IF;
27602            IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min)) THEN
27603               in0 := min_included(aitp);
27604               in3 := in0;
27605            ELSE
27606               IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max)) THEN
27607                  in1 := max_included(aitp);
27608                  in2 := in1;
27609               END_IF;
27610            END_IF;
27611            IF strictly_in(acp, aitp) THEN
27612               rmax := rc + rmxp;
27613               rmax_in := max_included(ritp);
27614            ELSE
27615               rmax := r0;
27616               rmax_in := in0;
27617               IF rmax = r1 THEN
27618                  rmax_in := rmax_in OR in1;
27619               END_IF;
27620               IF rmax < r1 THEN
27621                  rmax := r1;
27622                  rmax_in := in1;
27623               END_IF;
27624               IF rmax = r2 THEN
27625                  rmax_in := rmax_in OR in2;
27626               END_IF;
27627               IF rmax < r2 THEN
27628                  rmax := r2;
27629                  rmax_in := in2;
27630               END_IF;
27631               IF rmax = r3 THEN
27632                  rmax_in := rmax_in OR in3;
27633               END_IF;
27634               IF rmax < r3 THEN
27635                  rmax := r3;
27636                  rmax_in := in3;
27637               END_IF;
27638            END_IF;
27639            IF strictly_in(apc, aitp) THEN
27640               IF rc >= rmxp THEN
27641                  rmin := rc - rmxp;
27642                  rmin_in := max_included(ritp);
27643               ELSE
27644                  IF rc <= rmnp THEN
27645                     rmin := rmnp - rc;
27646                     rmin_in := min_included(ritp);
27647                  ELSE
27648                     rmin := 0.0;
27649                     rmin_in := TRUE;
27650                  END_IF;
27651               END_IF;
27652            ELSE
27653               rmin := r0;
27654               rmin_in := in0;
27655               a := apc - aitp.min;
27656               r := rc * cos(a);
27657               IF (rmnp < r) AND (r < rmxp) THEN
27658                  rmin := rc * sin(ABS(a));
27659                  rmin_in := min_included(aitp);
27660               END_IF;
27661               a := apc - aitp.max;
27662               r := rc * cos(a);
27663               IF (rmnp < r) AND (r < rmxp) THEN
27664                  r := rc * sin(ABS(a));
27665                  inn := max_included(aitp);
27666                  IF r = rmin THEN
27667                     rmin_in := rmin_in OR inn;
27668                  END_IF;
27669                  IF r < rmin THEN
27670                     rmin := r;
27671                     rmin_in := inn;
27672                  END_IF;
27673               END_IF;
27674               IF r1 = rmin THEN
27675                  rmin_in := rmin_in OR in1;
27676               END_IF;
27677               IF r1 < rmin THEN
27678                  rmin := r1;
27679                  rmin_in := in1;
27680               END_IF;
27681               IF r2 = rmin THEN
27682                  rmin_in := rmin_in OR in2;
27683               END_IF;
27684               IF r2 < rmin THEN
27685                  rmin := r2;
27686                  rmin_in := in2;
27687               END_IF;
27688               IF r3 = rmin THEN
27689                  rmin_in := rmin_in OR in3;
27690               END_IF;
27691               IF r3 < rmin THEN
27692                  rmin := r3;
27693                  rmin_in := in3;
27694               END_IF;
27695            END_IF;
27696            IF rc >= rmxp THEN
27697               ab := acp;
27698               find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
27699               a := ACOS(rmxp / rc);
27700               IF strictly_in(apc - a, aitp) THEN
27701                  amin := ab - ASIN(rmxp / rc);
27702                  amin_in := max_included(ritp);
27703               END_IF;
27704               IF strictly_in(apc + a, aitp) THEN
27705                  amax := ab + ASIN(rmxp / rc);
27706                  amax_in := max_included(ritp);
27707               END_IF;
27708               angle_range( amin, amax );
27709            ELSE
27710               IF rc > rmnp THEN
27711                  ab := angle(0.500000 * (aitp.min + aitp.max));
27712                  find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
27713               ELSE
27714                  ab := angle(0.500000 * (aitp.min + aitp.max));
27715                  a0 := angle(a0 - ab);
27716                  a1 := angle(a1 - ab);
27717                  a2 := angle(a2 - ab);
27718                  a3 := angle(a3 - ab);
27719                  IF a3 > a2 THEN
27720                     a2 := a2 + 2.0 * 3.14159;
27721                  END_IF;
27722                  IF a0 > a1 THEN
27723                     a0 := a0 + 2.0 * 3.14159;
27724                  END_IF;
27725                  IF a3 < a0 THEN
27726                     amin := a3;
27727                     amin_in := in3;
27728                  ELSE
27729                     amin := a0;
27730                     amin_in := in0;
27731                  END_IF;
27732                  IF a2 > a1 THEN
27733                     amax := a2;
27734                     amax_in := in2;
27735                  ELSE
27736                     amax := a1;
27737                     amax_in := in1;
27738                  END_IF;
27739                  IF (amax - amin > 2.0 * 3.14159) OR (amax - amin = 2.0 * 3.14159) AND (amin_in OR amax_in) THEN
27740                     amin := -3.14159;
27741                     amin_in := FALSE;
27742                     amax := 3.14159;
27743                     amax_in := TRUE;
27744                  ELSE
27745                     amin := amin + ab;
27746                     amax := amax + ab;
27747                     angle_range( amin, amax );
27748                  END_IF;
27749               END_IF;
27750            END_IF;
27751         END_IF;
27752         IF rmin_in THEN
27753            minclo := closed;
27754         END_IF;
27755         IF rmax_in THEN
27756            maxclo := closed;
27757         END_IF;
27758         ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
27759      ELSE
27760         IF (rc > rmnp) AND strictly_in(apc, aitp) THEN
27761            RETURN (?);
27762         END_IF;
27763         IF aitp.max - aitp.min = 2.0 * 3.14159 THEN
27764            a := angle(aitp.min);
27765            IF rc > rmnp THEN
27766               IF max_included(aitp) THEN
27767                  RETURN (?);
27768               END_IF;
27769               rmin := 0.0;
27770               rmin_in := FALSE;
27771               amin := aitp.min;
27772               amin_in := FALSE;
27773               amax := aitp.max;
27774               amax_in := FALSE;
27775            ELSE
27776               rmin := rmnp - rc;
27777               rmin_in := min_included(ritp);
27778               amin := -3.14159;
27779               amin_in := FALSE;
27780               amax := 3.14159;
27781               amax_in := TRUE;
27782               IF NOT max_included(aitp) THEN
27783                  IF apc = a THEN
27784                     rmin_in := FALSE;
27785                     amin := aitp.min;
27786                     amin_in := FALSE;
27787                     amax := aitp.max;
27788                     amax_in := FALSE;
27789                  ELSE
27790                     IF acp = a THEN
27791                        amin := aitp.min;
27792                        amin_in := FALSE;
27793                        amax := aitp.max;
27794                        amax_in := FALSE;
27795                     END_IF;
27796                  END_IF;
27797               END_IF;
27798            END_IF;
27799         ELSE
27800            a0 := angle(aitp.min);
27801            in0 := FALSE;
27802            a1 := angle(aitp.max);
27803            in1 := FALSE;
27804            x := xp + rmnp * cos(aitp.max) - xc;
27805            y := yp + rmnp * sin(aitp.max) - yc;
27806            r2 := SQRT(x ** 2 + y ** 2);
27807            in2 := min_included(ritp) AND max_included(aitp);
27808            IF r2 <> 0.0 THEN
27809               a2 := atan2(y, x);
27810            ELSE
27811               a2 := a1;
27812               in2 := in1;
27813            END_IF;
27814            x := xp + rmnp * cos(aitp.min) - xc;
27815            y := yp + rmnp * sin(aitp.min) - yc;
27816            r3 := SQRT(x ** 2 + y ** 2);
27817            in3 := min_included(ritp) AND min_included(aitp);
27818            IF r3 <> 0.0 THEN
27819               a3 := atan2(y, x);
27820            ELSE
27821               a3 := a0;
27822               in3 := in0;
27823            END_IF;
27824            IF rmnp = 0.0 THEN
27825               in2 := min_included(ritp);
27826               in3 := in2;
27827            END_IF;
27828            IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min)) THEN
27829               in0 := min_included(aitp);
27830               in3 := in0;
27831            ELSE
27832               IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max)) THEN
27833                  in1 := max_included(aitp);
27834                  in2 := in1;
27835               END_IF;
27836            END_IF;
27837            IF strictly_in(apc, aitp) THEN
27838               rmin := rmnp - rc;
27839               rmin_in := min_included(ritp);
27840            ELSE
27841               rmin := r2;
27842               rmin_in := in2;
27843               a := apc - aitp.min;
27844               r := rc * cos(a);
27845               IF rmnp < r THEN
27846                  rmin := rc * sin(ABS(a));
27847                  rmin_in := min_included(aitp);
27848               END_IF;
27849               a := apc - aitp.max;
27850               r := rc * cos(a);
27851               IF rmnp < r THEN
27852                  r := rc * sin(ABS(a));
27853                  inn := max_included(aitp);
27854                  IF r = rmin THEN
27855                     rmin_in := rmin_in OR inn;
27856                  END_IF;
27857                  IF r < rmin THEN
27858                     rmin := r;
27859                     rmin_in := inn;
27860                  END_IF;
27861               END_IF;
27862               IF r3 = rmin THEN
27863                  rmin_in := rmin_in OR in3;
27864               END_IF;
27865               IF r3 < rmin THEN
27866                  rmin := r3;
27867                  rmin_in := in3;
27868               END_IF;
27869            END_IF;
27870            ab := angle(0.500000 * (aitp.min + aitp.max));
27871            IF rc > rmnp THEN
27872               find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
27873            ELSE
27874               a0 := angle(a0 - ab);
27875               a1 := angle(a1 - ab);
27876               a2 := angle(a2 - ab);
27877               a3 := angle(a3 - ab);
27878               IF a3 > a2 THEN
27879                  a2 := a2 + 2.0 * 3.14159;
27880               END_IF;
27881               IF a0 > a1 THEN
27882                  a0 := a0 + 2.0 * 3.14159;
27883               END_IF;
27884               IF a3 < a0 THEN
27885                  amin := a3;
27886                  amin_in := in3;
27887               ELSE
27888                  amin := a0;
27889                  amin_in := in0;
27890               END_IF;
27891               IF a2 > a1 THEN
27892                  amax := a2;
27893                  amax_in := in2;
27894               ELSE
27895                  amax := a1;
27896                  amax_in := in1;
27897               END_IF;
27898               IF (amax - amin > 2.0 * 3.14159) OR (amax - amin = 2.0 * 3.14159) AND (amin_in OR amax_in) THEN
27899                  amin := -3.14159;
27900                  amin_in := FALSE;
27901                  amax := 3.14159;
27902                  amax_in := TRUE;
27903                  IF (rmin = 0.0) AND rmin_in THEN
27904                     RETURN (?);
27905                  END_IF;
27906               ELSE
27907                  amin := amin + ab;
27908                  amax := amax + ab;
27909                  angle_range( amin, amax );
27910               END_IF;
27911            END_IF;
27912         END_IF;
27913         IF rmin_in THEN
27914            minclo := closed;
27915         END_IF;
27916         ritv := make_real_interval_from_min(rmin, minclo);
27917      END_IF;
27918      minclo := open;
27919      maxclo := open;
27920      IF amin_in THEN
27921         minclo := closed;
27922      END_IF;
27923      IF amax_in THEN
27924         maxclo := closed;
27925      END_IF;
27926      aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
27927      RETURN (make_polar_complex_number_region(centre, ritv, aitv));
27928END_FUNCTION;
27929
27930-- IN AP242
27931FUNCTION equal_cregion_pregion
27932      (crgn : cartesian_complex_number_region;
27933       prgn : polar_complex_number_region ) : LOGICAL;
27934   LOCAL
27935      arng : REAL;
27936      amin : REAL;
27937      xc : REAL;
27938      yc : REAL;
27939      aitv : real_interval;
27940      xitv : real_interval;
27941      yitv : real_interval;
27942      c_in : BOOLEAN;
27943   END_LOCAL;
27944      IF NOT EXISTS(crgn) OR NOT EXISTS(prgn) THEN
27945         RETURN (FALSE);
27946      END_IF;
27947      IF max_exists(prgn.distance_constraint) THEN
27948         RETURN (FALSE);
27949      END_IF;
27950      IF real_min(prgn.distance_constraint) <> 0.0 THEN
27951         RETURN (FALSE);
27952      END_IF;
27953      c_in := min_included(prgn.distance_constraint);
27954      aitv := prgn.direction_constraint;
27955      amin := aitv.min;
27956      arng := aitv.max - amin;
27957      xc := prgn.centre.real_part;
27958      yc := prgn.centre.imag_part;
27959      xitv := crgn.real_constraint;
27960      yitv := crgn.imag_constraint;
27961      IF arng = 0.500000 * 3.14159 THEN
27962         IF amin = 0.0 THEN
27963            RETURN ((((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND min_exists(xitv)) AND min_exists(yitv)) AND (real_min(xitv) = xc)) AND (real_min(yitv) = yc)) AND ((((((c_in AND min_included(aitv)) AND max_included(aitv)) AND min_included(xitv)) AND min_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND max_included(aitv)) AND min_included(xitv)) AND NOT min_included(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(xitv)) AND min_included(yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(xitv)) AND NOT min_included(yitv)));
27964         END_IF;
27965         IF amin = 0.500000 * 3.14159 THEN
27966            RETURN ((((((max_exists(xitv) AND NOT max_exists(yitv)) AND NOT min_exists(xitv)) AND min_exists(yitv)) AND (real_max(xitv) = xc)) AND (real_min(yitv) = yc)) AND ((((((c_in AND min_included(aitv)) AND max_included(aitv)) AND max_included(xitv)) AND min_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND max_included(aitv)) AND max_included(xitv)) AND NOT min_included(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(xitv)) AND min_included(yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(xitv)) AND NOT min_included(yitv)));
27967         END_IF;
27968         IF amin = -3.14159 THEN
27969            RETURN ((((((max_exists(xitv) AND max_exists(yitv)) AND NOT min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(xitv) = xc)) AND (real_max(yitv) = yc)) AND ((((((c_in AND min_included(aitv)) AND max_included(aitv)) AND max_included(xitv)) AND max_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND max_included(aitv)) AND max_included(xitv)) AND NOT max_included(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(xitv)) AND max_included(yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(xitv)) AND NOT max_included(yitv)));
27970         END_IF;
27971         IF amin = -0.500000 * 3.14159 THEN
27972            RETURN ((((((NOT max_exists(xitv) AND max_exists(yitv)) AND min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_min(xitv) = xc)) AND (real_max(yitv) = yc)) AND ((((((c_in AND min_included(aitv)) AND max_included(aitv)) AND min_included(xitv)) AND max_included(yitv) OR (((NOT c_in AND NOT min_included(aitv)) AND max_included(aitv)) AND min_included(xitv)) AND NOT max_included(yitv)) OR (((NOT c_in AND min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(xitv)) AND max_included(yitv)) OR (((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(xitv)) AND NOT max_included(yitv)));
27973         END_IF;
27974      END_IF;
27975      IF arng = 3.14159 THEN
27976         IF amin = 0.0 THEN
27977            RETURN (((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND NOT min_exists(xitv)) AND min_exists(yitv)) AND (real_min(yitv) = yc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv)) AND min_included(yitv) OR ((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(yitv)));
27978         END_IF;
27979         IF amin = 0.500000 * 3.14159 THEN
27980            RETURN (((((max_exists(xitv) AND NOT max_exists(yitv)) AND NOT min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(xitv) = xc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv)) AND max_included(xitv) OR ((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(xitv)));
27981         END_IF;
27982         IF amin = -3.14159 THEN
27983            RETURN (((((NOT max_exists(xitv) AND max_exists(yitv)) AND NOT min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_max(yitv) = yc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv)) AND max_included(yitv) OR ((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT max_included(yitv)));
27984         END_IF;
27985         IF amin = -0.500000 * 3.14159 THEN
27986            RETURN (((((NOT max_exists(xitv) AND NOT max_exists(yitv)) AND min_exists(xitv)) AND NOT min_exists(yitv)) AND (real_min(xitv) = xc)) AND (((c_in AND min_included(aitv)) AND max_included(aitv)) AND min_included(xitv) OR ((NOT c_in AND NOT min_included(aitv)) AND NOT max_included(aitv)) AND NOT min_included(xitv)));
27987         END_IF;
27988      END_IF;
27989      RETURN (FALSE);
27990END_FUNCTION;
27991
27992-- IN AP242
27993FUNCTION equal_maths_functions
27994      (fun1 : maths_function;
27995       fun2 : maths_function ) : LOGICAL;
27996   LOCAL
27997      cum : LOGICAL;
27998   END_LOCAL;
27999      IF fun1 = fun2 THEN
28000         RETURN (TRUE);
28001      END_IF;
28002      cum := equal_maths_spaces(fun1.domain, fun2.domain);
28003      IF cum = FALSE THEN
28004         RETURN (FALSE);
28005      END_IF;
28006      cum := cum AND equal_maths_spaces(fun1.range, fun2.range);
28007      IF cum = FALSE THEN
28008         RETURN (FALSE);
28009      END_IF;
28010      RETURN (UNKNOWN);
28011END_FUNCTION;
28012
28013-- IN AP242
28014FUNCTION equal_maths_spaces
28015      (spc1 : maths_space;
28016       spc2 : maths_space ) : LOGICAL;
28017   LOCAL
28018      spc1types : SET OF STRING := stripped_typeof(spc1);
28019      spc2types : SET OF STRING := stripped_typeof(spc2);
28020      set1 : SET OF maths_value;
28021      set2 : SET OF maths_value;
28022      cum : LOGICAL := TRUE;
28023      base : maths_space;
28024      expnt : INTEGER;
28025      factors : LIST OF maths_space;
28026      factors2 : LIST OF maths_space;
28027      fs1 : function_space;
28028      fs2 : function_space;
28029      cum2 : LOGICAL;
28030   END_LOCAL;
28031      IF spc1 = spc2 THEN
28032         RETURN (TRUE);
28033      END_IF;
28034      IF 'FINITE_SPACE' IN spc1types THEN
28035         set1 := spc1\finite_space.members;
28036         IF 'FINITE_SPACE' IN spc2types THEN
28037            set2 := spc2\finite_space.members;
28038            REPEAT i := 1 TO SIZEOF(set1);
28039               cum := cum AND member_of(set1[i], spc2);
28040               IF cum = FALSE THEN
28041                  RETURN (FALSE);
28042               END_IF;
28043            END_REPEAT;
28044            IF cum = TRUE THEN
28045               REPEAT i := 1 TO SIZEOF(set2);
28046                  cum := cum AND member_of(set2[i], spc1);
28047                  IF cum = FALSE THEN
28048                     RETURN (FALSE);
28049                  END_IF;
28050               END_REPEAT;
28051            END_IF;
28052            RETURN (cum);
28053         END_IF;
28054         IF 'FINITE_INTEGER_INTERVAL' IN spc2types THEN
28055            set2 := [];
28056            REPEAT i := spc2\finite_integer_interval.min TO spc2\finite_integer_interval.max;
28057               set2 := set2 + [ i ];
28058            END_REPEAT;
28059            RETURN (equal_maths_spaces(spc1, make_finite_space(set2)));
28060         END_IF;
28061      END_IF;
28062      IF ('FINITE_INTEGER_INTERVAL' IN spc1types) AND ('FINITE_SPACE' IN spc2types) THEN
28063         set1 := [];
28064         REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max;
28065            set1 := set1 + [ i ];
28066         END_REPEAT;
28067         RETURN (equal_maths_spaces(make_finite_space(set1), spc2));
28068      END_IF;
28069      IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc1types) AND ('POLAR_COMPLEX_NUMBER_REGION' IN spc2types) THEN
28070         RETURN (equal_cregion_pregion(spc1, spc2));
28071      END_IF;
28072      IF ('POLAR_COMPLEX_NUMBER_REGION' IN spc1types) AND ('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc2types) THEN
28073         RETURN (equal_cregion_pregion(spc2, spc1));
28074      END_IF;
28075      IF 'UNIFORM_PRODUCT_SPACE' IN spc1types THEN
28076         base := spc1\uniform_product_space.base;
28077         expnt := spc1\uniform_product_space.exponent;
28078         IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
28079            IF expnt <> spc2\uniform_product_space.exponent THEN
28080               RETURN (FALSE);
28081            END_IF;
28082            RETURN (equal_maths_spaces(base, spc2\uniform_product_space.base));
28083         END_IF;
28084         IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
28085            factors := spc2\listed_product_space.factors;
28086            IF expnt <> SIZEOF(factors) THEN
28087               RETURN (FALSE);
28088            END_IF;
28089            REPEAT i := 1 TO SIZEOF(factors);
28090               cum := cum AND equal_maths_spaces(base, factors[i]);
28091               IF cum = FALSE THEN
28092                  RETURN (FALSE);
28093               END_IF;
28094            END_REPEAT;
28095            RETURN (cum);
28096         END_IF;
28097      END_IF;
28098      IF 'LISTED_PRODUCT_SPACE' IN spc1types THEN
28099         factors := spc1\listed_product_space.factors;
28100         IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
28101            IF spc2\uniform_product_space.exponent <> SIZEOF(factors) THEN
28102               RETURN (FALSE);
28103            END_IF;
28104            base := spc2\uniform_product_space.base;
28105            REPEAT i := 1 TO SIZEOF(factors);
28106               cum := cum AND equal_maths_spaces(base, factors[i]);
28107               IF cum = FALSE THEN
28108                  RETURN (FALSE);
28109               END_IF;
28110            END_REPEAT;
28111            RETURN (cum);
28112         END_IF;
28113         IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
28114            factors2 := spc2\listed_product_space.factors;
28115            IF SIZEOF(factors) <> SIZEOF(factors2) THEN
28116               RETURN (FALSE);
28117            END_IF;
28118            REPEAT i := 1 TO SIZEOF(factors);
28119               cum := cum AND equal_maths_spaces(factors[i], factors2[i]);
28120               IF cum = FALSE THEN
28121                  RETURN (FALSE);
28122               END_IF;
28123            END_REPEAT;
28124            RETURN (cum);
28125         END_IF;
28126      END_IF;
28127      IF ('EXTENDED_TUPLE_SPACE' IN spc1types) AND ('EXTENDED_TUPLE_SPACE' IN spc2types) THEN
28128         RETURN (equal_maths_spaces(spc1\extended_tuple_space.extender, spc2\extended_tuple_space.extender) AND equal_maths_spaces(spc1\extended_tuple_space.base, spc2\extended_tuple_space.base));
28129      END_IF;
28130      IF ('FUNCTION_SPACE' IN spc1types) AND ('FUNCTION_SPACE' IN spc2types) THEN
28131         fs1 := spc1;
28132         fs2 := spc2;
28133         IF fs1.domain_constraint <> fs2.domain_constraint THEN
28134            IF (fs1.domain_constraint = sc_equal) OR (fs2.domain_constraint = sc_equal) THEN
28135               RETURN (FALSE);
28136            END_IF;
28137            IF fs1.domain_constraint <> sc_subspace THEN
28138               fs1 := spc2;
28139               fs2 := spc1;
28140            END_IF;
28141            IF (fs1.domain_constraint <> sc_subspace) OR (fs2.domain_constraint <> sc_member) THEN
28142               RETURN (UNKNOWN);
28143            END_IF;
28144            IF any_space_satisfies(fs1.domain_constraint, fs1.domain_argument) <> any_space_satisfies(fs2.domain_constraint, fs2.domain_argument) THEN
28145               RETURN (FALSE);
28146            END_IF;
28147            IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.domain_argument)) THEN
28148               RETURN (FALSE);
28149            END_IF;
28150            IF SIZEOF([ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL' ] * stripped_typeof(fs1.domain_argument)) = 0 THEN
28151               RETURN (FALSE);
28152            END_IF;
28153            RETURN (UNKNOWN);
28154         END_IF;
28155         cum := equal_maths_spaces(fs1.domain_argument, fs2.domain_argument);
28156         IF cum = FALSE THEN
28157            RETURN (FALSE);
28158         END_IF;
28159         IF fs1.range_constraint <> fs2.range_constraint THEN
28160            IF (fs1.range_constraint = sc_equal) OR (fs2.range_constraint = sc_equal) THEN
28161               RETURN (FALSE);
28162            END_IF;
28163            IF fs1.range_constraint <> sc_subspace THEN
28164               fs1 := spc2;
28165               fs2 := spc1;
28166            END_IF;
28167            IF (fs1.range_constraint <> sc_subspace) OR (fs2.range_constraint <> sc_member) THEN
28168               RETURN (UNKNOWN);
28169            END_IF;
28170            IF any_space_satisfies(fs1.range_constraint, fs1.range_argument) <> any_space_satisfies(fs2.range_constraint, fs2.range_argument) THEN
28171               RETURN (FALSE);
28172            END_IF;
28173            IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.range_argument)) THEN
28174               RETURN (FALSE);
28175            END_IF;
28176            IF SIZEOF([ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL' ] * stripped_typeof(fs1.range_argument)) = 0 THEN
28177               RETURN (FALSE);
28178            END_IF;
28179            RETURN (UNKNOWN);
28180         END_IF;
28181         cum := cum AND equal_maths_spaces(fs1.range_argument, fs2.range_argument);
28182         RETURN (cum);
28183      END_IF;
28184      RETURN (FALSE);
28185END_FUNCTION;
28186
28187-- IN AP242
28188FUNCTION equal_maths_values
28189      (val1 : maths_value;
28190       val2 : maths_value ) : LOGICAL;
28191      FUNCTION mem_of_vs
28192         (val1 : maths_value;
28193          val2 : maths_value ) : LOGICAL;
28194         IF NOT has_values_space(val2) THEN
28195            RETURN (UNKNOWN);
28196         END_IF;
28197         IF NOT member_of(val1, values_space_of(val2)) THEN
28198            RETURN (FALSE);
28199         END_IF;
28200         RETURN (UNKNOWN);
28201      END_FUNCTION;
28202   LOCAL
28203      types1 : SET OF STRING;
28204      types2 : SET OF STRING;
28205      list1 : LIST OF maths_value;
28206      list2 : LIST OF maths_value;
28207      cum : LOGICAL := TRUE;
28208   END_LOCAL;
28209      IF NOT EXISTS(val1) OR NOT EXISTS(val2) THEN
28210         RETURN (FALSE);
28211      END_IF;
28212      IF val1 = val2 THEN
28213         RETURN (TRUE);
28214      END_IF;
28215      types1 := stripped_typeof(val1);
28216      types2 := stripped_typeof(val2);
28217      IF ('MATHS_ATOM' IN types1) OR ('COMPLEX_NUMBER_LITERAL' IN types1) THEN
28218         IF 'MATHS_ATOM' IN types2 THEN
28219            RETURN (FALSE);
28220         END_IF;
28221         IF 'COMPLEX_NUMBER_LITERAL' IN types2 THEN
28222            RETURN (FALSE);
28223         END_IF;
28224         IF 'LIST' IN types2 THEN
28225            RETURN (FALSE);
28226         END_IF;
28227         IF 'MATHS_SPACE' IN types2 THEN
28228            RETURN (FALSE);
28229         END_IF;
28230         IF 'MATHS_FUNCTION' IN types2 THEN
28231            RETURN (FALSE);
28232         END_IF;
28233         IF 'GENERIC_EXPRESSION' IN types2 THEN
28234            RETURN (mem_of_vs(val1, val2));
28235         END_IF;
28236         RETURN (UNKNOWN);
28237      END_IF;
28238      IF ('MATHS_ATOM' IN types2) OR ('COMPLEX_NUMBER_LITERAL' IN types2) THEN
28239         RETURN (equal_maths_values(val2, val1));
28240      END_IF;
28241      IF 'LIST' IN types1 THEN
28242         IF 'LIST' IN types2 THEN
28243            list1 := val1;
28244            list2 := val2;
28245            IF SIZEOF(list1) <> SIZEOF(list2) THEN
28246               RETURN (FALSE);
28247            END_IF;
28248            REPEAT i := 1 TO SIZEOF(list1);
28249               cum := cum AND equal_maths_values(list1[i], list2[i]);
28250               IF cum = FALSE THEN
28251                  RETURN (FALSE);
28252               END_IF;
28253            END_REPEAT;
28254            RETURN (cum);
28255         END_IF;
28256         IF 'MATHS_SPACE' IN types2 THEN
28257            RETURN (FALSE);
28258         END_IF;
28259         IF 'MATHS_FUNCTION' IN types2 THEN
28260            RETURN (FALSE);
28261         END_IF;
28262         IF 'GENERIC_EXPRESSION' IN types2 THEN
28263            RETURN (mem_of_vs(val1, val2));
28264         END_IF;
28265         RETURN (UNKNOWN);
28266      END_IF;
28267      IF 'LIST' IN types2 THEN
28268         RETURN (equal_maths_values(val2, val1));
28269      END_IF;
28270      IF 'MATHS_SPACE' IN types1 THEN
28271         IF 'MATHS_SPACE' IN types2 THEN
28272            RETURN (equal_maths_spaces(val1, val2));
28273         END_IF;
28274         IF 'MATHS_FUNCTION' IN types2 THEN
28275            RETURN (FALSE);
28276         END_IF;
28277         IF 'GENERIC_EXPRESSION' IN types2 THEN
28278            RETURN (mem_of_vs(val1, val2));
28279         END_IF;
28280         RETURN (UNKNOWN);
28281      END_IF;
28282      IF 'MATHS_SPACE' IN types2 THEN
28283         RETURN (equal_maths_values(val2, val1));
28284      END_IF;
28285      IF 'MATHS_FUNCTION' IN types1 THEN
28286         IF 'MATHS_FUNCTION' IN types2 THEN
28287            RETURN (equal_maths_functions(val1, val2));
28288         END_IF;
28289         IF 'GENERIC_EXPRESSION' IN types2 THEN
28290            RETURN (mem_of_vs(val1, val2));
28291         END_IF;
28292         RETURN (UNKNOWN);
28293      END_IF;
28294      IF 'MATHS_FUNCTION' IN types2 THEN
28295         RETURN (equal_maths_values(val2, val1));
28296      END_IF;
28297      IF ('GENERIC_EXPRESSION' IN types1) AND ('GENERIC_EXPRESSION' IN types2) THEN
28298         IF NOT has_values_space(val1) OR NOT has_values_space(val2) THEN
28299            RETURN (UNKNOWN);
28300         END_IF;
28301         IF NOT compatible_spaces(values_space_of(val1), values_space_of(val2)) THEN
28302            RETURN (FALSE);
28303         END_IF;
28304      END_IF;
28305      RETURN (UNKNOWN);
28306END_FUNCTION;
28307
28308-- IN AP242
28309FUNCTION es_subspace_of_es
28310      (es1 : elementary_space_enumerators;
28311       es2 : elementary_space_enumerators ) : BOOLEAN;
28312      IF NOT EXISTS(es1) OR NOT EXISTS(es2) THEN
28313         RETURN (FALSE);
28314      END_IF;
28315      IF es1 = es2 THEN
28316         RETURN (TRUE);
28317      END_IF;
28318      IF es2 = es_generics THEN
28319         RETURN (TRUE);
28320      END_IF;
28321      IF (es1 = es_booleans) AND (es2 = es_logicals) THEN
28322         RETURN (TRUE);
28323      END_IF;
28324      IF (es2 = es_numbers) AND (((es1 = es_complex_numbers) OR (es1 = es_reals)) OR (es1 = es_integers)) THEN
28325         RETURN (TRUE);
28326      END_IF;
28327      RETURN (FALSE);
28328END_FUNCTION;
28329
28330-- IN AP242
28331FUNCTION expression_is_constant
28332      (expr : generic_expression ) : BOOLEAN;
28333      RETURN (bool(SIZEOF(free_variables_of(expr)) = 0));
28334END_FUNCTION;
28335
28336-- DIFF IN AP203e2
28337-- IN AP203e2/AP242
28338FUNCTION external_version_assignment_is_valid
28339      (aia : applied_external_identification_assignment ) : BOOLEAN;
28340   LOCAL
28341      item : external_identification_item;
28342      role : identification_role;
28343   END_LOCAL;
28344      role := aia.role;
28345      IF role.name = 'version' THEN
28346         REPEAT i := LOINDEX(aia\applied_external_identification_assignment.items) TO HIINDEX(aia\applied_external_identification_assignment.items);
28347            item := aia\applied_external_identification_assignment.items[i];
28348            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.EXTERNALLY_DEFINED_GENERAL_PROPERTY' ] * TYPEOF(item)) = 0 THEN
28349               RETURN (FALSE);
28350            END_IF;
28351         END_REPEAT;
28352         RETURN (TRUE);
28353      ELSE
28354         RETURN (TRUE);
28355      END_IF;
28356END_FUNCTION;
28357
28358-- IN AP242
28359FUNCTION extract_factors
28360      (tspace : tuple_space;
28361       m : INTEGER;
28362       n : INTEGER ) : tuple_space;
28363   LOCAL
28364      tsp : tuple_space := the_zero_tuple_space;
28365   END_LOCAL;
28366      REPEAT i := m TO n;
28367         tsp := assoc_product_space(tsp, factor_space(tspace, i));
28368      END_REPEAT;
28369      RETURN (tsp);
28370END_FUNCTION;
28371
28372FUNCTION face_bound_reversed
28373      (a_face_bound : face_bound ) : face_bound;
28374   LOCAL
28375      the_reverse : face_bound;
28376   END_LOCAL;
28377      IF 'STEP_MERGED_CAD_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound) THEN
28378         the_reverse := dummy_tri || face_bound(a_face_bound\face_bound.bound, NOT a_face_bound\face_bound.orientation) || face_outer_bound();
28379      ELSE
28380         the_reverse := dummy_tri || face_bound(a_face_bound.bound, NOT a_face_bound.orientation);
28381      END_IF;
28382      RETURN (the_reverse);
28383END_FUNCTION;
28384
28385FUNCTION face_reversed
28386      (a_face : face ) : oriented_face;
28387   LOCAL
28388      the_reverse : oriented_face;
28389   END_LOCAL;
28390      IF 'STEP_MERGED_CAD_SCHEMA.ORIENTED_FACE' IN TYPEOF(a_face) THEN
28391         the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.bounds)) || oriented_face(a_face\oriented_face.face_element, NOT a_face\oriented_face.orientation);
28392      ELSE
28393         the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.bounds)) || oriented_face(a_face, FALSE);
28394      END_IF;
28395      RETURN (the_reverse);
28396END_FUNCTION;
28397
28398-- IN AP242
28399FUNCTION factor1
28400      (tspace : tuple_space ) : maths_space;
28401   LOCAL
28402      typenames : SET OF STRING := TYPEOF(tspace);
28403   END_LOCAL;
28404      IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
28405         RETURN (tspace\uniform_product_space.base);
28406      END_IF;
28407      IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
28408         RETURN (tspace\listed_product_space.factors[1]);
28409      END_IF;
28410      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN typenames THEN
28411         RETURN (factor1(tspace\extended_tuple_space.base));
28412      END_IF;
28413      RETURN (?);
28414END_FUNCTION;
28415
28416-- IN AP242
28417FUNCTION factor_space
28418      (tspace : tuple_space;
28419       idx : positive_integer ) : maths_space;
28420   LOCAL
28421      typenames : SET OF STRING := TYPEOF(tspace);
28422   END_LOCAL;
28423      IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
28424         IF idx <= tspace\uniform_product_space.exponent THEN
28425            RETURN (tspace\uniform_product_space.base);
28426         END_IF;
28427         RETURN (?);
28428      END_IF;
28429      IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
28430         IF idx <= SIZEOF(tspace\listed_product_space.factors) THEN
28431            RETURN (tspace\listed_product_space.factors[idx]);
28432         END_IF;
28433         RETURN (?);
28434      END_IF;
28435      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN typenames THEN
28436         IF idx <= space_dimension(tspace\extended_tuple_space.base) THEN
28437            RETURN (factor_space(tspace\extended_tuple_space.base, idx));
28438         END_IF;
28439         RETURN (tspace\extended_tuple_space.extender);
28440      END_IF;
28441      RETURN (?);
28442END_FUNCTION;
28443
28444-- IN AP242
28445FUNCTION find_assembly_root
28446      (constituent : SET [0:?] OF product_definition ) : SET [0:?] OF product_definition;
28447   LOCAL
28448      local_relation : SET OF assembly_component_usage := [];
28449      local_relation2 : BAG OF assembly_component_usage := [];
28450      local_parent : SET OF product_definition := [];
28451      root : SET OF product_definition;
28452      i : INTEGER := 0;
28453      j : INTEGER := 0;
28454   END_LOCAL;
28455      IF (SIZEOF(constituent) = 1) AND assembly_root(constituent[1]) THEN
28456         RETURN ([ constituent[1] ]);
28457      ELSE
28458         IF SIZEOF(constituent) = 0 THEN
28459            RETURN ([]);
28460         ELSE
28461            REPEAT j := 1 TO HIINDEX(constituent);
28462               local_relation2 := local_relation2 + QUERY (pdr <* USEDIN(constituent[j], 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)));
28463            END_REPEAT;
28464            local_relation := bag_to_set(local_relation2);
28465            IF SIZEOF(local_relation) = 0 THEN
28466               IF SIZEOF(constituent) = 1 THEN
28467                  RETURN ([ constituent[1] ]);
28468               ELSE
28469                  RETURN ([]);
28470               END_IF;
28471            ELSE
28472               REPEAT i := 1 TO HIINDEX(local_relation);
28473                  REPEAT j := 1 TO HIINDEX(constituent);
28474                     IF local_relation[i].relating_product_definition <> constituent[j] THEN
28475                        local_parent := local_parent + local_relation[i].relating_product_definition;
28476                     END_IF;
28477                  END_REPEAT;
28478               END_REPEAT;
28479               IF (SIZEOF(local_parent) = 1) AND assembly_root(local_parent[1]) THEN
28480                  RETURN ([ local_parent[1] ]);
28481               ELSE
28482                  IF SIZEOF(local_parent) = 0 THEN
28483                     RETURN ([]);
28484                  ELSE
28485                     root := find_assembly_root(local_parent);
28486                     IF SIZEOF(root) = 1 THEN
28487                        RETURN (root);
28488                     ELSE
28489                        IF SIZEOF(root) = 0 THEN
28490                           RETURN ([]);
28491                        END_IF;
28492                     END_IF;
28493                  END_IF;
28494               END_IF;
28495            END_IF;
28496         END_IF;
28497      END_IF;
28498      RETURN ([]);
28499END_FUNCTION;
28500
28501-- IN AP242
28502FUNCTION find_representative_shape_representation_of_product_definition
28503      (item : product_definition ) : shape_representation;
28504   LOCAL
28505      local_s_r : SET OF shape_representation := [];
28506   END_LOCAL;
28507      local_s_r := QUERY (z <* find_shape_representation_of_product_definition(item)| 'STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(z));
28508      IF SIZEOF(local_s_r) = 1 THEN
28509         RETURN (local_s_r[1]);
28510      ELSE
28511         RETURN (?);
28512      END_IF;
28513END_FUNCTION;
28514
28515-- IN AP242
28516FUNCTION find_representative_shape_representation_of_shape_aspect
28517      (item : shape_aspect ) : shape_representation;
28518   LOCAL
28519      local_s_r : SET OF shape_representation := [];
28520   END_LOCAL;
28521      local_s_r := QUERY (z <* find_shape_representation_of_shape_aspect(item)| 'STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(z));
28522      IF SIZEOF(local_s_r) = 1 THEN
28523         RETURN (local_s_r[1]);
28524      ELSE
28525         RETURN (?);
28526      END_IF;
28527END_FUNCTION;
28528
28529-- IN AP242
28530FUNCTION find_shape_representation_of_product_definition
28531      (item : product_definition ) : SET [0:?] OF shape_representation;
28532   LOCAL
28533      local_p_d_s : SET OF product_definition_shape := [];
28534      local_p_d_s2 : BAG OF product_definition_shape := [];
28535      local_s_d_r : SET OF shape_definition_representation := [];
28536      local_s_d_r2 : BAG OF shape_definition_representation := [];
28537      local_s_r : SET OF shape_representation := [];
28538      i : INTEGER;
28539   END_LOCAL;
28540      local_p_d_s2 := local_p_d_s2 + QUERY (pd <* USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)));
28541      local_p_d_s := bag_to_set(local_p_d_s2);
28542      REPEAT i := 1 TO HIINDEX(local_p_d_s);
28543         local_s_d_r2 := local_s_d_r2 + QUERY (pdr <* USEDIN(local_p_d_s[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
28544      END_REPEAT;
28545      local_s_d_r := bag_to_set(local_s_d_r2);
28546      REPEAT i := 1 TO HIINDEX(local_s_d_r);
28547         IF 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(local_s_d_r[i].used_representation) THEN
28548            local_s_r := local_s_r + local_s_d_r[i].used_representation;
28549         END_IF;
28550      END_REPEAT;
28551      RETURN (local_s_r);
28552END_FUNCTION;
28553
28554-- IN AP242
28555FUNCTION find_shape_representation_of_shape_aspect
28556      (item : shape_aspect ) : SET [0:?] OF shape_representation;
28557   LOCAL
28558      local_p_d : SET OF property_definition := [];
28559      local_s_d_r : SET OF shape_definition_representation := [];
28560      local_s_d_r2 : BAG OF shape_definition_representation := [];
28561      local_s_r : SET OF shape_representation := [];
28562      i : INTEGER;
28563   END_LOCAL;
28564      local_p_d := bag_to_set(USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
28565      REPEAT i := 1 TO HIINDEX(local_p_d);
28566         local_s_d_r2 := local_s_d_r2 + QUERY (pdr <* USEDIN(local_p_d[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
28567      END_REPEAT;
28568      local_s_d_r := bag_to_set(local_s_d_r2);
28569      REPEAT i := 1 TO HIINDEX(local_s_d_r);
28570         IF 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(local_s_d_r[i].used_representation) THEN
28571            local_s_r := local_s_r + local_s_d_r[i].used_representation;
28572         END_IF;
28573      END_REPEAT;
28574      RETURN (local_s_r);
28575END_FUNCTION;
28576
28577FUNCTION first_proj_axis
28578      (z_axis : direction;
28579       arg : direction ) : direction;
28580   LOCAL
28581      x_axis : direction;
28582      v : direction;
28583      z : direction;
28584      x_vec : vector;
28585   END_LOCAL;
28586      IF NOT EXISTS(z_axis) THEN
28587         RETURN (?);
28588      ELSE
28589         z := normalise(z_axis);
28590         IF NOT EXISTS(arg) THEN
28591            IF (z.direction_ratios <> [ 1.0, 0.0, 0.0 ]) AND (z.direction_ratios <> [ -1.0, 0.0, 0.0 ]) THEN
28592               v := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
28593            ELSE
28594               v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
28595            END_IF;
28596         ELSE
28597            IF arg.dim <> 3 THEN
28598               RETURN (?);
28599            END_IF;
28600            IF cross_product(arg, z).magnitude = 0.0 THEN
28601               RETURN (?);
28602            ELSE
28603               v := normalise(arg);
28604            END_IF;
28605         END_IF;
28606         x_vec := scalar_times_vector(dot_product(v, z), z);
28607         x_axis := vector_difference(v, x_vec).orientation;
28608         x_axis := normalise(x_axis);
28609      END_IF;
28610      RETURN (x_axis);
28611END_FUNCTION;
28612
28613-- IN AP214
28614FUNCTION frame_associated_to_background
28615      (frame : rigid_placement;
28616       background : kinematic_frame_background ) : BOOLEAN;
28617   LOCAL
28618      rep_bag : BAG OF kinematic_frame_background_representation;
28619      trf_bag : BAG OF kinematic_frame_based_transformation;
28620      trm_bag : BAG OF kinematic_frame_based_transformation;
28621      ass_bag : BAG OF kinematic_frame_background_representation_association;
28622      rep : kinematic_frame_background_representation;
28623      ass : kinematic_frame_background_representation_association;
28624   END_LOCAL;
28625      rep_bag := QUERY (bg <* USEDIN(background, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS')| 'STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION' IN TYPEOF(bg));
28626      IF SIZEOF(rep_bag) = 0 THEN
28627         RETURN (FALSE);
28628      END_IF;
28629      trf_bag := USEDIN(frame, 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_FRAME_BASED_TRANSFORMATION.TRANSFORMATOR');
28630      IF SIZEOF(trf_bag) = 0 THEN
28631         RETURN (FALSE);
28632      END_IF;
28633      REPEAT i := 1 TO HIINDEX(rep_bag);
28634         rep := rep_bag[i];
28635         ass_bag := QUERY (kfbra <* USEDIN(rep, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2')| 'STEP_MERGED_CAD_SCHEMA.' + 'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION_ASSOCIATION' IN TYPEOF(kfbra));
28636         IF SIZEOF(ass_bag) > 0 THEN
28637            REPEAT j := 1 TO HIINDEX(ass_bag);
28638               ass := ass_bag[j];
28639               trm_bag := QUERY (trm <* trf_bag| trm :=: ass\representation_relationship_with_transformation.transformation_operator);
28640               IF SIZEOF(trm_bag) > 0 THEN
28641                  RETURN (TRUE);
28642               END_IF;
28643            END_REPEAT;
28644         END_IF;
28645      END_REPEAT;
28646      RETURN (FALSE);
28647END_FUNCTION;
28648
28649-- IN AP242
28650FUNCTION free_variables_of
28651      (expr : generic_expression ) : SET [0:?] OF generic_variable;
28652   LOCAL
28653      typenames : SET OF STRING := stripped_typeof(expr);
28654      result : SET OF generic_variable := [];
28655      exprs : LIST OF generic_expression := [];
28656   END_LOCAL;
28657      IF 'GENERIC_LITERAL' IN typenames THEN
28658         RETURN (result);
28659      END_IF;
28660      IF 'GENERIC_VARIABLE' IN typenames THEN
28661         result := result + expr;
28662         RETURN (result);
28663      END_IF;
28664      IF 'QUANTIFIER_EXPRESSION' IN typenames THEN
28665         exprs := QUERY (ge <* expr\multiple_arity_generic_expression.operands| NOT (ge IN expr\quantifier_expression.variables));
28666         REPEAT i := 1 TO SIZEOF(exprs);
28667            result := result + free_variables_of(exprs[i]);
28668         END_REPEAT;
28669         REPEAT i := 1 TO SIZEOF(expr\quantifier_expression.variables);
28670            result := result - expr\quantifier_expression.variables[i];
28671         END_REPEAT;
28672         RETURN (result);
28673      END_IF;
28674      IF 'UNARY_GENERIC_EXPRESSION' IN typenames THEN
28675         RETURN (free_variables_of(expr\unary_generic_expression.operand));
28676      END_IF;
28677      IF 'BINARY_GENERIC_EXPRESSION' IN typenames THEN
28678         result := free_variables_of(expr\binary_generic_expression.operands[1]);
28679         RETURN (result + free_variables_of(expr\binary_generic_expression.operands[2]));
28680      END_IF;
28681      IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN typenames THEN
28682         REPEAT i := 1 TO SIZEOF(expr\multiple_arity_generic_expression.operands);
28683            result := result + free_variables_of(expr\multiple_arity_generic_expression.operands[i]);
28684         END_REPEAT;
28685         RETURN (result);
28686      END_IF;
28687      RETURN (result);
28688END_FUNCTION;
28689
28690-- IN AP242
28691FUNCTION function_applicability
28692      (func : maths_function_select;
28693       arguments : LIST [1:?] OF maths_value ) : BOOLEAN;
28694   LOCAL
28695      domain : tuple_space := convert_to_maths_function(func).domain;
28696      domain_types : SET OF STRING := TYPEOF(domain);
28697      narg : positive_integer := SIZEOF(arguments);
28698      arg : generic_expression;
28699   END_LOCAL;
28700      IF schema_prefix + 'PRODUCT_SPACE' IN domain_types THEN
28701         IF space_dimension(domain) <> narg THEN
28702            RETURN (FALSE);
28703         END_IF;
28704      ELSE
28705         IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN domain_types THEN
28706            IF space_dimension(domain) > narg THEN
28707               RETURN (FALSE);
28708            END_IF;
28709         ELSE
28710            RETURN (FALSE);
28711         END_IF;
28712      END_IF;
28713      REPEAT i := 1 TO narg;
28714         arg := convert_to_operand(arguments[i]);
28715         IF NOT has_values_space(arg) THEN
28716            RETURN (FALSE);
28717         END_IF;
28718         IF NOT compatible_spaces(factor_space(domain, i), values_space_of(arg)) THEN
28719            RETURN (FALSE);
28720         END_IF;
28721      END_REPEAT;
28722      RETURN (TRUE);
28723END_FUNCTION;
28724
28725-- IN AP242
28726FUNCTION function_is_1d_array
28727      (func : maths_function ) : BOOLEAN;
28728   LOCAL
28729      temp : maths_space;
28730   END_LOCAL;
28731      IF NOT EXISTS(func) THEN
28732         RETURN (FALSE);
28733      END_IF;
28734      IF space_dimension(func.domain) <> 1 THEN
28735         RETURN (FALSE);
28736      END_IF;
28737      temp := factor1(func.domain);
28738      IF schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(temp) THEN
28739         IF space_dimension(temp) <> 1 THEN
28740            RETURN (FALSE);
28741         END_IF;
28742         temp := factor1(temp);
28743      END_IF;
28744      IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp) THEN
28745         RETURN (TRUE);
28746      END_IF;
28747      RETURN (FALSE);
28748END_FUNCTION;
28749
28750-- IN AP242
28751FUNCTION function_is_1d_table
28752      (func : maths_function ) : BOOLEAN;
28753   LOCAL
28754      temp : maths_space;
28755      itvl : finite_integer_interval;
28756   END_LOCAL;
28757      IF NOT EXISTS(func) THEN
28758         RETURN (FALSE);
28759      END_IF;
28760      IF space_dimension(func.domain) <> 1 THEN
28761         RETURN (FALSE);
28762      END_IF;
28763      temp := factor1(func.domain);
28764      IF schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(temp) THEN
28765         IF space_dimension(temp) <> 1 THEN
28766            RETURN (FALSE);
28767         END_IF;
28768         temp := factor1(temp);
28769      END_IF;
28770      IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp) THEN
28771         itvl := temp;
28772         RETURN (bool((itvl.min = 0) OR (itvl.min = 1)));
28773      END_IF;
28774      RETURN (FALSE);
28775END_FUNCTION;
28776
28777-- IN AP242
28778FUNCTION function_is_2d_table
28779      (func : maths_function ) : BOOLEAN;
28780   LOCAL
28781      temp : maths_space;
28782      pspace : product_space;
28783      itvl1 : finite_integer_interval;
28784      itvl2 : finite_integer_interval;
28785   END_LOCAL;
28786      IF NOT EXISTS(func) THEN
28787         RETURN (FALSE);
28788      END_IF;
28789      IF space_dimension(func.domain) <> 1 THEN
28790         RETURN (FALSE);
28791      END_IF;
28792      temp := factor1(func.domain);
28793      IF NOT ('PRODUCT_SPACE' IN stripped_typeof(temp)) THEN
28794         RETURN (FALSE);
28795      END_IF;
28796      pspace := temp;
28797      IF space_dimension(pspace) <> 2 THEN
28798         RETURN (FALSE);
28799      END_IF;
28800      temp := factor1(pspace);
28801      IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN
28802         RETURN (FALSE);
28803      END_IF;
28804      itvl1 := temp;
28805      temp := factor_space(pspace, 2);
28806      IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN
28807         RETURN (FALSE);
28808      END_IF;
28809      itvl2 := temp;
28810      RETURN (bool((itvl1.min = itvl2.min) AND ((itvl1.min = 0) OR (itvl1.min = 1))));
28811END_FUNCTION;
28812
28813-- IN AP242
28814FUNCTION function_is_array
28815      (func : maths_function ) : BOOLEAN;
28816   LOCAL
28817      tspace : tuple_space;
28818      temp : maths_space;
28819   END_LOCAL;
28820      IF NOT EXISTS(func) THEN
28821         RETURN (FALSE);
28822      END_IF;
28823      tspace := func.domain;
28824      IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(tspace))) THEN
28825         tspace := factor1(tspace);
28826      END_IF;
28827      IF NOT (schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(tspace)) THEN
28828         RETURN (FALSE);
28829      END_IF;
28830      REPEAT i := 1 TO space_dimension(tspace);
28831         temp := factor_space(tspace, i);
28832         IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
28833            RETURN (FALSE);
28834         END_IF;
28835      END_REPEAT;
28836      RETURN (TRUE);
28837END_FUNCTION;
28838
28839-- IN AP242
28840FUNCTION function_is_table
28841      (func : maths_function ) : BOOLEAN;
28842   LOCAL
28843      tspace : tuple_space;
28844      temp : maths_space;
28845      base : INTEGER;
28846   END_LOCAL;
28847      IF NOT EXISTS(func) THEN
28848         RETURN (FALSE);
28849      END_IF;
28850      tspace := func.domain;
28851      IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(tspace))) THEN
28852         tspace := factor1(tspace);
28853      END_IF;
28854      IF NOT (schema_prefix + 'PRODUCT_SPACE' IN TYPEOF(tspace)) THEN
28855         RETURN (FALSE);
28856      END_IF;
28857      temp := factor1(tspace);
28858      IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
28859         RETURN (FALSE);
28860      END_IF;
28861      base := temp\finite_integer_interval.min;
28862      IF (base <> 0) AND (base <> 1) THEN
28863         RETURN (FALSE);
28864      END_IF;
28865      REPEAT i := 2 TO space_dimension(tspace);
28866         temp := factor_space(tspace, i);
28867         IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
28868            RETURN (FALSE);
28869         END_IF;
28870         IF temp\finite_integer_interval.min <> base THEN
28871            RETURN (FALSE);
28872         END_IF;
28873      END_REPEAT;
28874      RETURN (TRUE);
28875END_FUNCTION;
28876
28877FUNCTION gbsf_check_curve
28878      (cv : representation_item ) : BOOLEAN;
28879      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA', 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
28880         RETURN (FALSE);
28881      END_IF;
28882      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCLE', 'STEP_MERGED_CAD_SCHEMA.ELLIPSE', 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' ] * TYPEOF(cv)) = 1 THEN
28883         RETURN (TRUE);
28884      ELSE
28885         IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect = UNKNOWN) THEN
28886            RETURN (TRUE);
28887         ELSE
28888            IF ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN) THEN
28889               RETURN (SIZEOF(QUERY (seg <* cv\composite_curve.segments| NOT gbsf_check_curve(seg.parent_curve))) = 0);
28890            ELSE
28891               IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
28892                  RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
28893               ELSE
28894                  IF (('STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND NOT ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
28895                     RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
28896                  ELSE
28897                     IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
28898                        RETURN (gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1]) AND gbsf_check_surface(cv\pcurve.basis_surface));
28899                     ELSE
28900                        IF 'STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
28901                           IF SIZEOF(cv\polyline.points) >= 3 THEN
28902                              RETURN (TRUE);
28903                           END_IF;
28904                        ELSE
28905                           IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv) THEN
28906                              IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
28907                                 REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
28908                                    IF 'STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
28909                                       IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN
28910                                          RETURN (FALSE);
28911                                       END_IF;
28912                                    ELSE
28913                                       IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
28914                                          IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN
28915                                             RETURN (FALSE);
28916                                          END_IF;
28917                                       END_IF;
28918                                    END_IF;
28919                                 END_REPEAT;
28920                                 RETURN (TRUE);
28921                              END_IF;
28922                           END_IF;
28923                        END_IF;
28924                     END_IF;
28925                  END_IF;
28926               END_IF;
28927            END_IF;
28928         END_IF;
28929      END_IF;
28930      RETURN (FALSE);
28931END_FUNCTION;
28932
28933FUNCTION gbsf_check_point
28934      (pnt : point ) : BOOLEAN;
28935      IF 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
28936         RETURN (TRUE);
28937      ELSE
28938         IF 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
28939            RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve));
28940         ELSE
28941            IF 'STEP_MERGED_CAD_SCHEMA.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN
28942               RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface));
28943            ELSE
28944               IF 'STEP_MERGED_CAD_SCHEMA.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN
28945                  RETURN (gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1]) AND gbsf_check_surface(pnt\degenerate_pcurve.basis_surface));
28946               END_IF;
28947            END_IF;
28948         END_IF;
28949      END_IF;
28950      RETURN (FALSE);
28951END_FUNCTION;
28952
28953FUNCTION gbsf_check_surface
28954      (sf : surface ) : BOOLEAN;
28955      IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.self_intersect = UNKNOWN) THEN
28956         RETURN (TRUE);
28957      ELSE
28958         IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.SPHERICAL_SURFACE', 'STEP_MERGED_CAD_SCHEMA.TOROIDAL_SURFACE', 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_TRIMMED_SURFACE' ] * TYPEOF(sf)) = 1 THEN
28959            RETURN (TRUE);
28960         ELSE
28961            IF ('STEP_MERGED_CAD_SCHEMA.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN) THEN
28962               RETURN (gbsf_check_surface(sf\offset_surface.basis_surface));
28963            ELSE
28964               IF 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN
28965                  REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments);
28966                     REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]);
28967                        IF NOT gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface) THEN
28968                           RETURN (FALSE);
28969                        END_IF;
28970                     END_REPEAT;
28971                  END_REPEAT;
28972                  RETURN (TRUE);
28973               ELSE
28974                  IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_REPLICA' IN TYPEOF(sf) THEN
28975                     RETURN (gbsf_check_surface(sf\surface_replica.parent_surface));
28976                  ELSE
28977                     IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN
28978                        RETURN (gbsf_check_curve(sf\swept_surface.swept_curve));
28979                     END_IF;
28980                  END_IF;
28981               END_IF;
28982            END_IF;
28983         END_IF;
28984      END_IF;
28985      RETURN (FALSE);
28986END_FUNCTION;
28987
28988-- IN AP242
28989FUNCTION get_associated_mandatory_document_ids
28990      (pdc : product_definition_context ) : SET [0:?] OF STRING;
28991   LOCAL
28992      result : SET OF STRING := [];
28993      adrs_raw : SET OF applied_document_reference := bag_to_set(USEDIN(pdc, 'STEP_MERGED_CAD_SCHEMA.APPLIED_DOCUMENT_REFERENCE.ITEMS'));
28994      adrs_filtered : SET OF applied_document_reference := [];
28995      ras : SET OF role_association;
28996      dpas : SET OF document_product_association;
28997   END_LOCAL;
28998      REPEAT i := 1 TO HIINDEX(adrs_raw);
28999         IF adrs_raw[i]\document_reference.role\object_role.name = 'mandatory' THEN
29000            adrs_filtered := adrs_filtered + adrs_raw[i];
29001         END_IF;
29002      END_REPEAT;
29003      REPEAT i := 1 TO HIINDEX(adrs_filtered);
29004         dpas := bag_to_set(USEDIN(adrs_filtered[i]\document_reference.assigned_document, 'STEP_MERGED_CAD_SCHEMA.DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT'));
29005         REPEAT j := 1 TO HIINDEX(dpas);
29006            IF 'STEP_MERGED_CAD_SCHEMA.DOCUMENT_PRODUCT_EQUIVALENCE' IN TYPEOF(dpas[j]) THEN
29007               IF 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(dpas[j]\document_product_association.related_product) THEN
29008                  result := result + dpas[j]\document_product_association.related_product\product_definition_formation.of_product\product.id;
29009               END_IF;
29010               IF 'STEP_MERGED_CAD_SCHEMA.PRODUCT' IN TYPEOF(dpas[j].related_product) THEN
29011                  result := result + dpas[j]\document_product_association.related_product\product.id;
29012               END_IF;
29013            END_IF;
29014         END_REPEAT;
29015      END_REPEAT;
29016      RETURN (result);
29017END_FUNCTION;
29018
29019FUNCTION get_basis_surface
29020      (c : curve_on_surface ) : SET [0:2] OF surface;
29021   LOCAL
29022      surfs : SET [0:2] OF surface;
29023      n : INTEGER;
29024   END_LOCAL;
29025      surfs := [];
29026      IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(c) THEN
29027         surfs := [ c\pcurve.basis_surface ];
29028      ELSE
29029         IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(c) THEN
29030            n := SIZEOF(c\surface_curve.associated_geometry);
29031            REPEAT i := 1 TO n;
29032               surfs := surfs + associated_surface(c\surface_curve.associated_geometry[i]);
29033            END_REPEAT;
29034         END_IF;
29035      END_IF;
29036      IF 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN
29037         n := SIZEOF(c\composite_curve.segments);
29038         surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve);
29039         IF n > 1 THEN
29040            REPEAT i := 2 TO n;
29041               surfs := surfs * get_basis_surface(c\composite_curve.segments[i].parent_curve);
29042            END_REPEAT;
29043         END_IF;
29044      END_IF;
29045      RETURN (surfs);
29046END_FUNCTION;
29047
29048-- DIFF IN AP214
29049FUNCTION get_description_value
29050      (obj : description_attribute_select ) : text;
29051   LOCAL
29052      description_bag : BAG OF description_attribute := USEDIN(obj, 'STEP_MERGED_CAD_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM');
29053   END_LOCAL;
29054      IF SIZEOF(description_bag) = 1 THEN
29055         RETURN (description_bag[1].attribute_value);
29056      ELSE
29057         RETURN (?);
29058      END_IF;
29059END_FUNCTION;
29060
29061-- IN AP214
29062FUNCTION get_diameter_for_round_hole
29063      (rh : round_hole ) : REAL;
29064   LOCAL
29065      sa_set : SET OF shape_aspect;
29066      sar_set : SET OF shape_aspect_relationship;
29067      pdr_set : SET OF property_definition_representation;
29068      ri_set : SET OF representation_item;
29069   END_LOCAL;
29070      sa_set := get_shape_aspects(rh);
29071      REPEAT i := 1 TO HIINDEX(sa_set);
29072         IF sa_set[i].description = 'diameter occurrence' THEN
29073            sar_set := bag_to_set(USEDIN(sa_set[i], 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'));
29074            REPEAT j := 1 TO HIINDEX(sar_set);
29075               IF (((sar_set[j].name = 'diameter') AND (sar_set[j].description = 'profile usage')) AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar_set[j]))) AND ('STEP_MERGED_CAD_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sar_set[j].relating_shape_aspect)) THEN
29076                  pdr_set := get_shape_aspect_property_definition_representations(sar_set[j].relating_shape_aspect);
29077                  REPEAT k := 1 TO HIINDEX(pdr_set);
29078                     IF 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr_set[k].used_representation) THEN
29079                        ri_set := pdr_set[k].used_representation.items;
29080                        REPEAT l := 1 TO HIINDEX(ri_set);
29081                           IF ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(ri_set[l])) AND ('STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(ri_set[l])) THEN
29082                              RETURN (ri_set[l]\measure_with_unit.value_component);
29083                           END_IF;
29084                        END_REPEAT;
29085                     END_IF;
29086                  END_REPEAT;
29087               END_IF;
29088            END_REPEAT;
29089         END_IF;
29090      END_REPEAT;
29091      RETURN (?);
29092END_FUNCTION;
29093
29094-- IN AP242
29095FUNCTION get_directed_link
29096      (nodes : LIST [0:?] OF representation;
29097       undirected_link : LIST [0:?] OF chained_representation_link ) : LIST [0:?] OF representation_relationship;
29098   LOCAL
29099      directed_link : LIST OF representation_relationship := [];
29100   END_LOCAL;
29101      IF (SIZEOF(nodes) <> SIZEOF(undirected_link) + 1) OR (VALUE_UNIQUE(nodes) = FALSE) THEN
29102         RETURN (?);
29103      END_IF;
29104      REPEAT i := 1 TO SIZEOF(undirected_link);
29105         CASE TRUE OF
29106            'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_CONTEXT' IN TYPEOF(undirected_link[i]) :
29107                  BEGIN
29108                     IF (nodes[i]\representation.context_of_items :=: undirected_link[i]) AND (nodes[(i + 1)]\representation.context_of_items :=: undirected_link[i]) THEN
29109                        INSERT( directed_link, representation_relationship('', '', nodes[(i + 1)], nodes[i]), i - 1 );
29110                     ELSE
29111                        RETURN (?);
29112                     END_IF;
29113                  END;
29114            'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(undirected_link[i]) :
29115                  BEGIN
29116                     IF (nodes[i] :=: undirected_link[i]\representation_relationship.rep_1) AND (nodes[(i + 1)] :=: undirected_link[i]\representation_relationship.rep_2) OR (nodes[i] :=: undirected_link[i]\representation_relationship.rep_2) AND (nodes[(i + 1)] :=: undirected_link[i]\representation_relationship.rep_1) THEN
29117                        INSERT( directed_link, representation_relationship('', '', nodes[(i + 1)], nodes[i]), i - 1 );
29118                     ELSE
29119                        RETURN (?);
29120                     END_IF;
29121                  END;
29122            'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(undirected_link[i]) :
29123                  BEGIN
29124                     IF (nodes[i] IN using_representations(undirected_link[i])) AND (nodes[(i + 1)] :=: undirected_link[i]\mapped_item.mapping_source\representation_map.mapped_representation) THEN
29125                        INSERT( directed_link, representation_relationship('', '', nodes[(i + 1)], nodes[i]), i - 1 );
29126                     ELSE
29127                        RETURN (?);
29128                     END_IF;
29129                  END;
29130         OTHERWISE :
29131               RETURN (?);
29132         END_CASE;
29133      END_REPEAT;
29134      IF VALUE_UNIQUE(directed_link) = FALSE THEN
29135         RETURN (?);
29136      END_IF;
29137      RETURN (directed_link);
29138END_FUNCTION;
29139
29140-- DIFF IN AP214
29141FUNCTION get_id_value
29142      (obj : id_attribute_select ) : identifier;
29143   LOCAL
29144      id_bag : BAG OF id_attribute := USEDIN(obj, 'STEP_MERGED_CAD_SCHEMA.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM');
29145   END_LOCAL;
29146      IF SIZEOF(id_bag) = 1 THEN
29147         RETURN (id_bag[1].attribute_value);
29148      ELSE
29149         RETURN (?);
29150      END_IF;
29151END_FUNCTION;
29152
29153-- IN AP242
29154FUNCTION get_kinematic_joints_from_kinematic_loops
29155      (kls : SET [0:?] OF kinematic_loop ) : SET [0:?] OF kinematic_joint;
29156   LOCAL
29157      result : SET OF oriented_joint := [];
29158   END_LOCAL;
29159      IF SIZEOF(kls) > 0 THEN
29160         REPEAT i := 1 TO HIINDEX(kls);
29161            result := result + kls[i].edge_list;
29162         END_REPEAT;
29163      END_IF;
29164      RETURN (get_kinematic_joints_from_oriented_joints(result));
29165END_FUNCTION;
29166
29167-- IN AP242
29168FUNCTION get_kinematic_joints_from_oriented_joints
29169      (ors : SET [0:?] OF oriented_joint ) : SET [0:?] OF kinematic_joint;
29170   LOCAL
29171      result : SET OF kinematic_joint := [];
29172   END_LOCAL;
29173      IF SIZEOF(ors) > 0 THEN
29174         REPEAT i := 1 TO HIINDEX(ors);
29175            result := result + ors[i].edge_element;
29176         END_REPEAT;
29177      END_IF;
29178      RETURN (result);
29179END_FUNCTION;
29180
29181-- IN AP214
29182FUNCTION get_multi_language
29183      (x : multi_language_attribute_assignment ) : label;
29184--    LOCAL
29185--       alas : BAG OF attribute_language_assignment := USEDIN(x, 'STEP_MERGED_CAD_SCHEMA.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS');
29186--    END_LOCAL;
29187--       IF SIZEOF(alas) > 0 THEN
29188--          RETURN (alas[1].language);
29189--       END_IF;
29190      RETURN (?);
29191END_FUNCTION;
29192
29193-- DIFF IN AP214
29194FUNCTION get_name_value
29195      (obj : name_attribute_select ) : label;
29196   LOCAL
29197      name_bag : BAG OF name_attribute := USEDIN(obj, 'STEP_MERGED_CAD_SCHEMA.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM');
29198   END_LOCAL;
29199      IF SIZEOF(name_bag) = 1 THEN
29200         RETURN (name_bag[1].attribute_value);
29201      ELSE
29202         RETURN (?);
29203      END_IF;
29204END_FUNCTION;
29205
29206-- IN AP242
29207FUNCTION get_plane_of_implicit_geometry
29208      (ps : positioned_sketch ) : plane;
29209   LOCAL
29210      sb : sketch_basis_select := ps.sketch_basis;
29211      result : plane := ?;
29212   END_LOCAL;
29213      IF 'STEP_MERGED_CAD_SCHEMA.FACE_SURFACE' IN TYPEOF(sb) THEN
29214         result := sb\face_surface.face_geometry;
29215      ELSE
29216         IF 'STEP_MERGED_CAD_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(sb) THEN
29217            result := sb\curve_bounded_surface.basis_surface;
29218         ELSE
29219            IF 'STEP_MERGED_CAD_SCHEMA.PLANAR_CURVE_SELECT' IN TYPEOF(sb) THEN
29220               BEGIN
29221                  IF 'STEP_MERGED_CAD_SCHEMA.CONIC' IN TYPEOF(sb) THEN
29222                     result := dummy_gri || surface() || elementary_surface(sb\conic.position) || plane();
29223                  END_IF;
29224                  IF 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' IN TYPEOF(sb) THEN
29225                     BEGIN
29226                        result := get_plane_of_implicit_geometry(dummy_gri || positioned_sketch(sb\trimmed_curve.basis_curve, []));
29227                     END;
29228                  END_IF;
29229                  IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(sb) THEN
29230                     result := sb\pcurve.basis_surface;
29231                  END_IF;
29232                  IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(sb) THEN
29233                     BEGIN
29234                        IF (SIZEOF(sb\surface_curve.basis_surface) = 1) AND ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sb\surface_curve.basis_surface[1])) THEN
29235                           result := sb\surface_curve.basis_surface[1];
29236                        ELSE
29237                           IF ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sb\surface_curve.basis_surface[1])) AND ('STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sb\surface_curve.basis_surface[2])) THEN
29238                              result := ?;
29239                           ELSE
29240                              IF 'STEP_MERGED_CAD_SCHEMA.PLANE' IN TYPEOF(sb\surface_curve.basis_surface[1]) THEN
29241                                 result := sb\surface_curve.basis_surface[1];
29242                              ELSE
29243                                 result := sb\surface_curve.basis_surface[2];
29244                              END_IF;
29245                           END_IF;
29246                        END_IF;
29247                     END;
29248                  END_IF;
29249               END;
29250            END_IF;
29251         END_IF;
29252      END_IF;
29253      RETURN (result);
29254END_FUNCTION;
29255
29256-- DIFF IN AP214
29257-- IN AP214/AP242
29258FUNCTION get_property_definition_representations
29259      (c_def_instance : characterized_definition ) : SET [0:?] OF property_definition_representation;
29260   LOCAL
29261      pd_set : SET OF property_definition := [];
29262      pdr_set : SET OF property_definition_representation := [];
29263   END_LOCAL;
29264      pd_set := bag_to_set(USEDIN(c_def_instance, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
29265      IF SIZEOF(pd_set) < 1 THEN
29266         RETURN (pdr_set);
29267      END_IF;
29268      REPEAT i := 1 TO HIINDEX(pd_set);
29269         pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
29270      END_REPEAT;
29271      RETURN (pdr_set);
29272END_FUNCTION;
29273
29274-- IN AP242
29275FUNCTION get_relative_direction_2points
29276      (cp1 : cartesian_point;
29277       cp2 : cartesian_point ) : direction;
29278   LOCAL
29279      d1 : REAL;
29280      d2 : REAL;
29281      d3 : REAL;
29282      magnitude : REAL;
29283      result : direction := ?;
29284   END_LOCAL;
29285      IF (cp1.dim <> 3) OR (cp2.dim <> 3) THEN
29286         RETURN (result);
29287      ELSE
29288         BEGIN
29289            d1 := cp2.coordinates[1] - cp1.coordinates[1];
29290            d2 := cp2.coordinates[2] - cp1.coordinates[2];
29291            d3 := cp2.coordinates[3] - cp1.coordinates[3];
29292            magnitude := SQRT(d1 * d1 + d2 * d2 + d3 * d3);
29293            IF magnitude = 0 THEN
29294               RETURN (result);
29295            END_IF;
29296            result := dummy_gri || direction([ d1, d2, d3 ]);
29297         END;
29298      END_IF;
29299      RETURN (result);
29300END_FUNCTION;
29301
29302-- DIFF IN AP214
29303FUNCTION get_role
29304      (obj : role_select ) : object_role;
29305   LOCAL
29306      role_bag : BAG OF role_association := USEDIN(obj, 'STEP_MERGED_CAD_SCHEMA.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE');
29307   END_LOCAL;
29308      IF SIZEOF(role_bag) = 1 THEN
29309         RETURN (role_bag[1].role);
29310      ELSE
29311         RETURN (?);
29312      END_IF;
29313END_FUNCTION;
29314
29315-- IN AP214
29316FUNCTION get_round_holes_for_composite_hole
29317      (sar_instance_set : SET OF shape_aspect_relationship ) : SET OF round_hole;
29318   LOCAL
29319      rh_set : SET OF round_hole := [];
29320      pdr_set : SET OF property_definition_representation;
29321      pdr_set1 : SET OF property_definition_representation;
29322      ri_set : SET OF representation_item;
29323   END_LOCAL;
29324      REPEAT i := 1 TO HIINDEX(sar_instance_set);
29325         IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.INSTANCED_FEATURE', 'STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' ] * TYPEOF(sar_instance_set[i].related_shape_aspect)) >= 2 THEN
29326            rh_set := rh_set + sar_instance_set[i].related_shape_aspect\round_hole;
29327         END_IF;
29328         IF 'STEP_MERGED_CAD_SCHEMA.PLACED_FEATURE' IN TYPEOF(sar_instance_set[i]) THEN
29329            pdr_set := get_shape_aspect_property_definition_representations(sar_instance_set[i].related_shape_aspect);
29330            REPEAT j := 1 TO HIINDEX(pdr_set);
29331               IF (pdr_set[j].used_representation.name = 'feature definition placement') AND ('STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(pdr_set[j].used_representation)) THEN
29332                  ri_set := pdr_set[j].used_representation.items;
29333                  REPEAT k := 1 TO HIINDEX(ri_set);
29334                     IF ('STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM' IN TYPEOF(ri_set[k])) AND ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(ri_set[k]\mapped_item.mapping_source.mapped_representation)) THEN
29335                        pdr_set1 := bag_to_set(USEDIN(ri_set[k]\mapped_item.mapping_source.mapped_representation, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'));
29336                        REPEAT l := 1 TO HIINDEX(pdr_set1);
29337                           IF 'STEP_MERGED_CAD_SCHEMA.ROUND_HOLE' IN TYPEOF(pdr_set1[l].definition.definition) THEN
29338                              rh_set := rh_set + pdr_set1[l].definition.definition;
29339                           END_IF;
29340                        END_REPEAT;
29341                     END_IF;
29342                  END_REPEAT;
29343               END_IF;
29344            END_REPEAT;
29345         END_IF;
29346      END_REPEAT;
29347      RETURN (rh_set);
29348END_FUNCTION;
29349
29350-- DIFF IN AP214
29351FUNCTION get_shape_aspect_property_definition_representations
29352      (s_a_instance : shape_aspect ) : SET [0:?] OF property_definition_representation;
29353   LOCAL
29354      pd_set : SET OF property_definition := [];
29355      pdr_set : SET OF property_definition_representation := [];
29356   END_LOCAL;
29357      pd_set := bag_to_set(USEDIN(s_a_instance, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
29358      IF SIZEOF(pd_set) < 1 THEN
29359         RETURN (pdr_set);
29360      END_IF;
29361      REPEAT i := 1 TO HIINDEX(pd_set);
29362         pdr_set := pdr_set + QUERY (pdr <* USEDIN(pd_set[i], 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
29363      END_REPEAT;
29364      RETURN (pdr_set);
29365END_FUNCTION;
29366
29367-- DIFF IN AP214
29368-- IN AP214/AP242
29369FUNCTION get_shape_aspects
29370      (c_def_instance : characterized_definition ) : SET [0:?] OF shape_aspect;
29371   LOCAL
29372      pd_set : SET OF product_definition_shape := [];
29373      pdr_set : SET OF shape_aspect := [];
29374   END_LOCAL;
29375      pd_set := bag_to_set(QUERY (pd <* USEDIN(c_def_instance, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)));
29376      IF SIZEOF(pd_set) < 1 THEN
29377         RETURN (pdr_set);
29378      END_IF;
29379      REPEAT i := 1 TO HIINDEX(pd_set);
29380         pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i], 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT.OF_SHAPE'));
29381      END_REPEAT;
29382      RETURN (pdr_set);
29383END_FUNCTION;
29384
29385-- IN AP242
29386FUNCTION has_values_space
29387      (expr : generic_expression ) : BOOLEAN;
29388   LOCAL
29389      typenames : SET OF STRING := stripped_typeof(expr);
29390   END_LOCAL;
29391      IF 'EXPRESSION' IN typenames THEN
29392         RETURN (bool((('NUMERIC_EXPRESSION' IN typenames) OR ('STRING_EXPRESSION' IN typenames)) OR ('BOOLEAN_EXPRESSION' IN typenames)));
29393      END_IF;
29394      IF 'MATHS_FUNCTION' IN typenames THEN
29395         RETURN (TRUE);
29396      END_IF;
29397      IF 'FUNCTION_APPLICATION' IN typenames THEN
29398         RETURN (TRUE);
29399      END_IF;
29400      IF 'MATHS_SPACE' IN typenames THEN
29401         RETURN (TRUE);
29402      END_IF;
29403      IF 'MATHS_VARIABLE' IN typenames THEN
29404         RETURN (TRUE);
29405      END_IF;
29406      IF 'DEPENDENT_VARIABLE_DEFINITION' IN typenames THEN
29407         RETURN (has_values_space(expr\unary_generic_expression.operand));
29408      END_IF;
29409      IF 'COMPLEX_NUMBER_LITERAL' IN typenames THEN
29410         RETURN (TRUE);
29411      END_IF;
29412      IF 'LOGICAL_LITERAL' IN typenames THEN
29413         RETURN (TRUE);
29414      END_IF;
29415      IF 'BINARY_LITERAL' IN typenames THEN
29416         RETURN (TRUE);
29417      END_IF;
29418      IF 'MATHS_ENUM_LITERAL' IN typenames THEN
29419         RETURN (TRUE);
29420      END_IF;
29421      IF 'REAL_TUPLE_LITERAL' IN typenames THEN
29422         RETURN (TRUE);
29423      END_IF;
29424      IF 'INTEGER_TUPLE_LITERAL' IN typenames THEN
29425         RETURN (TRUE);
29426      END_IF;
29427      IF 'ATOM_BASED_LITERAL' IN typenames THEN
29428         RETURN (TRUE);
29429      END_IF;
29430      IF 'MATHS_TUPLE_LITERAL' IN typenames THEN
29431         RETURN (TRUE);
29432      END_IF;
29433      IF 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames THEN
29434         RETURN (TRUE);
29435      END_IF;
29436      IF 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames THEN
29437         RETURN (TRUE);
29438      END_IF;
29439      RETURN (FALSE);
29440END_FUNCTION;
29441
29442-- IN AP242
29443FUNCTION inspected_product_definition
29444      (dqir : data_quality_inspection_result_representation ) : BAG [0:?] OF product_definition;
29445   LOCAL
29446      dqdr : BAG OF data_quality_definition_representation_relationship := [];
29447      pdqdr : BAG OF product_data_and_data_quality_relationship := [];
29448      pd : BAG OF product_definition := [];
29449   END_LOCAL;
29450      dqdr := USEDIN(dqir, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_DEFINITION_REPRESENTATION_RELATIONSHIP.' + 'USED_REPRESENTATION');
29451      REPEAT i := 1 TO SIZEOF(dqdr);
29452         pdqdr := USEDIN(dqdr[i].definition, 'STEP_MERGED_CAD_SCHEMA.' + 'PRODUCT_DATA_AND_DATA_QUALITY_RELATIONSHIP.' + 'DATA_QUALITY');
29453         REPEAT j := 1 TO SIZEOF(pdqdr);
29454            pd := pd + pdqdr[j].product_data;
29455         END_REPEAT;
29456      END_REPEAT;
29457      RETURN (pd);
29458END_FUNCTION;
29459
29460-- IN AP242
29461FUNCTION invalidate_vrep_item
29462      (item : representation_item ) : BOOLEAN;
29463   LOCAL
29464      reps : SET [1:?] OF representation := using_representations(item);
29465      ri : SET [1:?] OF variational_representation_item;
29466      iar : instance_attribute_reference;
29467      i : INTEGER;
29468      n : INTEGER := HIINDEX(reps);
29469   END_LOCAL;
29470      IF 'STEP_MERGED_CAD_SCHEMA.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item) THEN
29471         IF 'STEP_MERGED_CAD_SCHEMA.INSTANCE_ATTRIBUTE_REFERENCE' IN TYPEOF(item\generic_variable.interpretation\environment.semantics) THEN
29472            BEGIN
29473               iar := item\generic_variable.interpretation\environment.semantics;
29474               IF reps <> using_representations(iar\instance_attribute_reference.owning_instance) THEN
29475                  RETURN (TRUE);
29476               END_IF;
29477            END;
29478         ELSE
29479            RETURN (TRUE);
29480         END_IF;
29481      END_IF;
29482      IF 'STEP_MERGED_CAD_SCHEMA.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item) THEN
29483         BEGIN
29484            REPEAT i := 1 TO n;
29485               ri := QUERY (q <* reps[i]\representation.items| 'STEP_MERGED_CAD_SCHEMA.FREE_FORM_CONSTRAINT' IN TYPEOF(q));
29486               IF SIZEOF(QUERY (r <* ri| (item IN r\free_form_constraint.reference_elements + r\free_form_constraint.constrained_elements))) = 0 THEN
29487                  RETURN (TRUE);
29488               END_IF;
29489            END_REPEAT;
29490         END;
29491      END_IF;
29492      IF 'STEP_MERGED_CAD_SCHEMA.FIXED_INSTANCE_ATTRIBUTE_SET' IN TYPEOF(item) THEN
29493         REPEAT i := 1 TO SIZEOF(item\fixed_instance_attribute_set.fixed_attributes);
29494            IF reps <> using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]\instance_attribute_reference.owning_instance) THEN
29495               RETURN (TRUE);
29496            END_IF;
29497         END_REPEAT;
29498      END_IF;
29499      IF 'STEP_MERGED_CAD_SCHEMA.EXPLICIT_CONSTRAINT' IN TYPEOF(item) THEN
29500         IF SIZEOF(QUERY (q <* item\explicit_constraint.reference_elements + item\explicit_constraint.constrained_elements| (reps <> using_representations(q)))) > 0 THEN
29501            RETURN (TRUE);
29502         END_IF;
29503      END_IF;
29504      IF 'STEP_MERGED_CAD_SCHEMA.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item) THEN
29505         BEGIN
29506            REPEAT i := 1 TO n;
29507               ri := QUERY (q <* reps[i]\representation.items| 'STEP_MERGED_CAD_SCHEMA.EXPLICIT_GEOMETRIC_CONSTRAINT' IN TYPEOF(q));
29508               IF SIZEOF(QUERY (r <* ri| (item IN r\explicit_geometric_constraint.reference_elements))) = 0 THEN
29509                  RETURN (TRUE);
29510               END_IF;
29511            END_REPEAT;
29512         END;
29513      END_IF;
29514      RETURN (FALSE);
29515END_FUNCTION;
29516
29517FUNCTION is_acyclic
29518      (arg : generic_expression ) : BOOLEAN;
29519      RETURN (acyclic(arg, []));
29520END_FUNCTION;
29521
29522-- DIFF IN AP214
29523-- DIFF IN AP203e2
29524FUNCTION is_int_expr
29525      (arg : numeric_expression ) : BOOLEAN;
29526      IF 'STEP_MERGED_CAD_SCHEMA.INT_LITERAL' IN TYPEOF(arg) THEN
29527         RETURN (TRUE);
29528      END_IF;
29529      IF 'STEP_MERGED_CAD_SCHEMA.REAL_LITERAL' IN TYPEOF(arg) THEN
29530         RETURN (FALSE);
29531      END_IF;
29532      IF 'STEP_MERGED_CAD_SCHEMA.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
29533         RETURN (TRUE);
29534      END_IF;
29535      IF 'STEP_MERGED_CAD_SCHEMA.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
29536         RETURN (FALSE);
29537      END_IF;
29538      IF 'STEP_MERGED_CAD_SCHEMA.ABS_FUNCTION' IN TYPEOF(arg) THEN
29539         RETURN (is_int_expr(arg\unary_numeric_expression.operand));
29540      END_IF;
29541      IF 'STEP_MERGED_CAD_SCHEMA.MINUS_FUNCTION' IN TYPEOF(arg) THEN
29542         RETURN (is_int_expr(arg\unary_numeric_expression.operand));
29543      END_IF;
29544      IF (((((((((('STEP_MERGED_CAD_SCHEMA.SIN_FUNCTION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.COS_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.TAN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ASIN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ACOS_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ATAN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.EXP_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG2_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG10_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) THEN
29545         RETURN (FALSE);
29546      END_IF;
29547      IF ((('STEP_MERGED_CAD_SCHEMA.PLUS_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.MULT_EXPRESSION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.MAXIMUM_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
29548         REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
29549            IF NOT is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) THEN
29550               RETURN (FALSE);
29551            END_IF;
29552         END_REPEAT;
29553         RETURN (TRUE);
29554      END_IF;
29555      IF ('STEP_MERGED_CAD_SCHEMA.MINUS_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
29556         RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) AND is_int_expr(arg\binary_numeric_expression.operands[2]));
29557      END_IF;
29558      IF ('STEP_MERGED_CAD_SCHEMA.DIV_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.MOD_EXPRESSION' IN TYPEOF(arg)) THEN
29559         RETURN (TRUE);
29560      END_IF;
29561      IF 'STEP_MERGED_CAD_SCHEMA.SLASH_EXPRESSION' IN TYPEOF(arg) THEN
29562         RETURN (FALSE);
29563      END_IF;
29564      IF 'STEP_MERGED_CAD_SCHEMA.LENGTH_FUNCTION' IN TYPEOF(arg) THEN
29565         RETURN (TRUE);
29566      END_IF;
29567      IF 'STEP_MERGED_CAD_SCHEMA.VALUE_FUNCTION' IN TYPEOF(arg) THEN
29568         IF 'STEP_MERGED_CAD_SCHEMA.INT_VALUE_FUNCTION' IN TYPEOF(arg) THEN
29569            RETURN (TRUE);
29570         ELSE
29571            RETURN (FALSE);
29572         END_IF;
29573      END_IF;
29574      IF 'STEP_MERGED_CAD_SCHEMA.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
29575         RETURN (TRUE);
29576      END_IF;
29577      IF 'STEP_MERGED_CAD_SCHEMA.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
29578         RETURN (FALSE);
29579      END_IF;
29580      IF 'STEP_MERGED_CAD_SCHEMA.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
29581         RETURN (FALSE);
29582      END_IF;
29583      IF 'STEP_MERGED_CAD_SCHEMA.STRING_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
29584         RETURN (FALSE);
29585      END_IF;
29586      RETURN (FALSE);
29587END_FUNCTION;
29588
29589-- DIFF IN AP214
29590-- DIFF IN AP203e2
29591FUNCTION is_SQL_mappable
29592      (arg : expression ) : BOOLEAN;
29593      IF 'STEP_MERGED_CAD_SCHEMA.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg) THEN
29594         RETURN (TRUE);
29595      END_IF;
29596      IF 'STEP_MERGED_CAD_SCHEMA.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
29597         RETURN (TRUE);
29598      END_IF;
29599      IF 'STEP_MERGED_CAD_SCHEMA.MINUS_FUNCTION' IN TYPEOF(arg) THEN
29600         RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand));
29601      END_IF;
29602      IF ((((((((((((('STEP_MERGED_CAD_SCHEMA.ABS_FUNCTION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.SIN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.COS_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.TAN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ASIN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ACOS_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.ATAN_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.EXP_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG2_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LOG10_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.VALUE_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LENGTH_FUNCTION' IN TYPEOF(arg)) THEN
29603         RETURN (FALSE);
29604      END_IF;
29605      IF ((('STEP_MERGED_CAD_SCHEMA.PLUS_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.MULT_EXPRESSION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.MAXIMUM_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
29606         REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
29607            IF NOT is_SQL_mappable(arg\multiple_arity_numeric_expression.operands[i]) THEN
29608               RETURN (FALSE);
29609            END_IF;
29610         END_REPEAT;
29611         RETURN (TRUE);
29612      END_IF;
29613      IF ('STEP_MERGED_CAD_SCHEMA.MINUS_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.SLASH_EXPRESSION' IN TYPEOF(arg)) THEN
29614         RETURN (is_SQL_mappable(arg\binary_numeric_expression.operands[1]) AND is_SQL_mappable(arg\binary_numeric_expression.operands[2]));
29615      END_IF;
29616      IF (('STEP_MERGED_CAD_SCHEMA.DIV_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.MOD_EXPRESSION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
29617         RETURN (FALSE);
29618      END_IF;
29619      IF 'STEP_MERGED_CAD_SCHEMA.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg) THEN
29620         RETURN (TRUE);
29621      END_IF;
29622      IF 'STEP_MERGED_CAD_SCHEMA.NOT_EXPRESSION' IN TYPEOF(arg) THEN
29623         RETURN (is_SQL_mappable(arg\unary_generic_expression.operand));
29624      END_IF;
29625      IF ('STEP_MERGED_CAD_SCHEMA.ODD_FUNCTION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.XOR_EXPRESSION' IN TYPEOF(arg)) THEN
29626         RETURN (FALSE);
29627      END_IF;
29628      IF ('STEP_MERGED_CAD_SCHEMA.AND_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.OR_EXPRESSION' IN TYPEOF(arg)) THEN
29629         REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.operands);
29630            IF NOT is_SQL_mappable(arg\multiple_arity_boolean_expression.operands[i]) THEN
29631               RETURN (FALSE);
29632            END_IF;
29633         END_REPEAT;
29634         RETURN (TRUE);
29635      END_IF;
29636      IF 'STEP_MERGED_CAD_SCHEMA.EQUALS_EXPRESSION' IN TYPEOF(arg) THEN
29637         RETURN (is_SQL_mappable(arg\binary_generic_expression.operands[1]) AND is_SQL_mappable(arg\binary_generic_expression.operands[2]));
29638      END_IF;
29639      IF (((((('STEP_MERGED_CAD_SCHEMA.COMPARISON_EQUAL' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.COMPARISON_GREATER' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.COMPARISON_LESS' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.COMPARISON_LESS_EQUAL' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.COMPARISON_NOT_EQUAL' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.LIKE_EXPRESSION' IN TYPEOF(arg)) THEN
29640         RETURN (is_SQL_mappable(arg\comparison_expression.operands[1]) AND is_SQL_mappable(arg\comparison_expression.operands[2]));
29641      END_IF;
29642      IF 'STEP_MERGED_CAD_SCHEMA.INTERVAL_EXPRESSION' IN TYPEOF(arg) THEN
29643         RETURN ((is_SQL_mappable(arg\interval_expression.interval_low) AND is_SQL_mappable(arg\interval_expression.interval_high)) AND is_SQL_mappable(arg\interval_expression.interval_item));
29644      END_IF;
29645      IF (('STEP_MERGED_CAD_SCHEMA.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)) THEN
29646         RETURN (FALSE);
29647      END_IF;
29648      IF 'STEP_MERGED_CAD_SCHEMA.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg) THEN
29649         RETURN (TRUE);
29650      END_IF;
29651      IF ((('STEP_MERGED_CAD_SCHEMA.INDEX_EXPRESSION' IN TYPEOF(arg)) OR ('STEP_MERGED_CAD_SCHEMA.SUBSTRING_EXPRESSION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.CONCAT_EXPRESSION' IN TYPEOF(arg))) OR ('STEP_MERGED_CAD_SCHEMA.FORMAT_FUNCTION' IN TYPEOF(arg)) THEN
29652         RETURN (FALSE);
29653      END_IF;
29654      RETURN (FALSE);
29655END_FUNCTION;
29656
29657-- IN AP214
29658FUNCTION item_correlation
29659      (items : SET OF GENERIC;
29660       c_items : SET OF STRING ) : LOGICAL;
29661   LOCAL
29662      c_types : SET OF STRING := [];
29663      c_hit : INTEGER := 0;
29664   END_LOCAL;
29665      REPEAT i := 1 TO HIINDEX(c_items);
29666         c_types := c_types + [ 'STEP_MERGED_CAD_SCHEMA.' + c_items[i] ];
29667      END_REPEAT;
29668      REPEAT i := 1 TO HIINDEX(items);
29669         IF SIZEOF(c_types * TYPEOF(items[i])) = 1 THEN
29670            c_hit := c_hit + 1;
29671         END_IF;
29672      END_REPEAT;
29673      IF SIZEOF(items) = c_hit THEN
29674         RETURN (TRUE);
29675      ELSE
29676         RETURN (FALSE);
29677      END_IF;
29678END_FUNCTION;
29679
29680FUNCTION item_in_context
29681      (item : representation_item;
29682       cntxt : representation_context ) : BOOLEAN;
29683   LOCAL
29684      y : BAG OF representation_item;
29685   END_LOCAL;
29686      IF SIZEOF(USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS') * cntxt.representations_in_context) > 0 THEN
29687         RETURN (TRUE);
29688      ELSE
29689         y := QUERY (z <* USEDIN(item, '')| 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z));
29690         IF SIZEOF(y) > 0 THEN
29691            REPEAT i := 1 TO HIINDEX(y);
29692               IF item_in_context(y[i], cntxt) THEN
29693                  RETURN (TRUE);
29694               END_IF;
29695            END_REPEAT;
29696         END_IF;
29697      END_IF;
29698      RETURN (FALSE);
29699END_FUNCTION;
29700
29701FUNCTION leap_year
29702      (year : year_number ) : BOOLEAN;
29703      IF (year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0) THEN
29704         RETURN (TRUE);
29705      ELSE
29706         RETURN (FALSE);
29707      END_IF;
29708END_FUNCTION;
29709
29710-- DIFF IN AP214
29711FUNCTION list_face_loops
29712      (f : face ) : LIST [0:?] OF loop;
29713   LOCAL
29714      loops : LIST [0:?] OF loop := [];
29715   END_LOCAL;
29716      REPEAT i := 1 TO SIZEOF(f.bounds);
29717         loops := loops + f.bounds[i].bound;
29718      END_REPEAT;
29719      RETURN (loops);
29720END_FUNCTION;
29721
29722FUNCTION list_of_topology_reversed
29723      (a_list : list_of_reversible_topology_item ) : list_of_reversible_topology_item;
29724   LOCAL
29725      the_reverse : list_of_reversible_topology_item;
29726   END_LOCAL;
29727      the_reverse := [];
29728      REPEAT i := 1 TO SIZEOF(a_list);
29729         the_reverse := topology_reversed(a_list[i]) + the_reverse;
29730      END_REPEAT;
29731      RETURN (the_reverse);
29732END_FUNCTION;
29733
29734-- IN AP242
29735FUNCTION list_selected_components
29736      (aggr : AGGREGATE OF LIST [0:?] OF maths_value;
29737       k : positive_integer ) : LIST [0:?] OF maths_value;
29738   LOCAL
29739      result : LIST OF maths_value := [];
29740      j : INTEGER := 0;
29741   END_LOCAL;
29742      REPEAT i := LOINDEX(aggr) TO HIINDEX(aggr);
29743         IF k <= SIZEOF(aggr[i]) THEN
29744            INSERT( result, aggr[i][k], j );
29745            j := j + 1;
29746         END_IF;
29747      END_REPEAT;
29748      RETURN (result);
29749END_FUNCTION;
29750
29751-- DIFF IN AP214
29752FUNCTION list_to_array
29753      (lis : LIST [0:?] OF GENERIC : T;
29754       low : INTEGER;
29755       u : INTEGER ) : ARRAY [low:u] OF GENERIC : T;
29756   LOCAL
29757      n : INTEGER;
29758      res : ARRAY [low:u] OF GENERIC : T;
29759   END_LOCAL;
29760      n := SIZEOF(lis);
29761      IF n <> u - low + 1 THEN
29762         RETURN (?);
29763      ELSE
29764         res := [ lis[1] ];
29765         REPEAT i := 2 TO n;
29766            res[(low + i - 1)] := lis[i];
29767         END_REPEAT;
29768         RETURN (res);
29769      END_IF;
29770END_FUNCTION;
29771
29772-- DIFF IN AP214
29773FUNCTION list_to_set
29774      (l : LIST [0:?] OF GENERIC : T ) : SET [0:?] OF GENERIC : T;
29775   LOCAL
29776      s : SET OF GENERIC : T := [];
29777   END_LOCAL;
29778      REPEAT i := 1 TO SIZEOF(l);
29779         s := s + l[i];
29780      END_REPEAT;
29781      RETURN (s);
29782END_FUNCTION;
29783
29784-- CASE DIFF IN AP214
29785FUNCTION make_array_of_array
29786      (lis : LIST [1:?] OF LIST [1:?] OF GENERIC : T;
29787       low1 : INTEGER;
29788       u1 : INTEGER;
29789       low2 : INTEGER;
29790       u2 : INTEGER ) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
29791   LOCAL
29792      res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
29793   END_LOCAL;
29794      IF u1 - low1 + 1 <> SIZEOF(lis) THEN
29795         RETURN (?);
29796      END_IF;
29797      IF u2 - low2 + 1 <> SIZEOF(lis[1]) THEN
29798         RETURN (?);
29799      END_IF;
29800      res := [ list_to_array(lis[1], low2, u2) ];
29801      REPEAT i := 2 TO HIINDEX(lis);
29802         IF u2 - low2 + 1 <> SIZEOF(lis[i]) THEN
29803            RETURN (?);
29804         END_IF;
29805         res[(low1 + i - 1)] := list_to_array(lis[i], low2, u2);
29806      END_REPEAT;
29807      RETURN (res);
29808END_FUNCTION;
29809
29810-- IN AP242
29811FUNCTION make_atom_based_literal
29812      (lit_value : atom_based_value ) : atom_based_literal;
29813      RETURN (atom_based_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
29814END_FUNCTION;
29815
29816-- IN AP242
29817FUNCTION make_binary_literal
29818      (lit_value : BINARY ) : binary_literal;
29819      RETURN (binary_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
29820END_FUNCTION;
29821
29822-- IN AP242
29823FUNCTION make_boolean_literal
29824      (lit_value : BOOLEAN ) : boolean_literal;
29825      RETURN (boolean_literal(lit_value) || simple_boolean_expression() || boolean_expression() || expression() || generic_expression() || simple_generic_expression() || generic_literal());
29826END_FUNCTION;
29827
29828-- IN AP242
29829FUNCTION make_cartesian_complex_number_region
29830      (real_constraint : real_interval;
29831       imag_constraint : real_interval ) : cartesian_complex_number_region;
29832      RETURN (cartesian_complex_number_region(real_constraint, imag_constraint) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29833END_FUNCTION;
29834
29835-- IN AP242
29836FUNCTION make_complex_number_literal
29837      (rpart : REAL;
29838       ipart : REAL ) : complex_number_literal;
29839      RETURN (complex_number_literal(rpart, ipart) || generic_literal() || simple_generic_expression() || generic_expression());
29840END_FUNCTION;
29841
29842-- IN AP242
29843FUNCTION make_elementary_function
29844      (func_id : elementary_function_enumerators ) : elementary_function;
29845      RETURN (elementary_function(func_id) || maths_function() || generic_expression() || generic_literal() || simple_generic_expression());
29846END_FUNCTION;
29847
29848-- IN AP242
29849FUNCTION make_elementary_space
29850      (space_id : elementary_space_enumerators ) : elementary_space;
29851      RETURN (elementary_space(space_id) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29852END_FUNCTION;
29853
29854-- IN AP242
29855FUNCTION make_extended_tuple_space
29856      (base : product_space;
29857       extender : maths_space ) : extended_tuple_space;
29858      RETURN (extended_tuple_space(base, extender) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29859END_FUNCTION;
29860
29861-- IN AP242
29862FUNCTION make_finite_integer_interval
29863      (min : INTEGER;
29864       max : INTEGER ) : finite_integer_interval;
29865      RETURN (finite_integer_interval(min, max) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29866END_FUNCTION;
29867
29868-- IN AP242
29869FUNCTION make_finite_real_interval
29870      (min : REAL;
29871       minclo : open_closed;
29872       max : REAL;
29873       maxclo : open_closed ) : finite_real_interval;
29874      RETURN (finite_real_interval(min, minclo, max, maxclo) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29875END_FUNCTION;
29876
29877-- IN AP242
29878FUNCTION make_finite_space
29879      (members : SET [0:?] OF maths_value ) : finite_space;
29880      RETURN (finite_space(members) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29881END_FUNCTION;
29882
29883-- IN AP242
29884FUNCTION make_function_application
29885      (afunction : maths_function_select;
29886       arguments : LIST [1:?] OF maths_value ) : function_application;
29887      RETURN (function_application(afunction, arguments) || multiple_arity_generic_expression((convert_to_maths_function(afunction) + convert_to_operands(arguments))) || generic_expression());
29888END_FUNCTION;
29889
29890-- IN AP242
29891FUNCTION make_function_space
29892      (domain_constraint : space_constraint_type;
29893       domain_argument : maths_space;
29894       range_constraint : space_constraint_type;
29895       range_argument : maths_space ) : function_space;
29896      RETURN (function_space(domain_constraint, domain_argument, range_constraint, range_argument) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29897END_FUNCTION;
29898
29899-- IN AP242
29900FUNCTION make_int_literal
29901      (lit_value : INTEGER ) : int_literal;
29902      RETURN (int_literal() || literal_number(lit_value) || simple_numeric_expression() || numeric_expression() || expression() || generic_expression() || simple_generic_expression() || generic_literal());
29903END_FUNCTION;
29904
29905-- IN AP242
29906FUNCTION make_listed_product_space
29907      (factors : LIST [0:?] OF maths_space ) : listed_product_space;
29908      RETURN (listed_product_space(factors) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29909END_FUNCTION;
29910
29911-- IN AP242
29912FUNCTION make_logical_literal
29913      (lit_value : LOGICAL ) : logical_literal;
29914      RETURN (logical_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
29915END_FUNCTION;
29916
29917-- IN AP242
29918FUNCTION make_maths_enum_literal
29919      (lit_value : maths_enum_atom ) : maths_enum_literal;
29920      RETURN (maths_enum_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
29921END_FUNCTION;
29922
29923-- IN AP242
29924FUNCTION make_maths_tuple_literal
29925      (lit_value : LIST [0:?] OF maths_value ) : maths_tuple_literal;
29926      RETURN (maths_tuple_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
29927END_FUNCTION;
29928
29929-- IN AP242
29930FUNCTION make_numeric_set
29931      (start : maths_number;
29932       delta : maths_number;
29933       incs : positive_integer ) : SET [2:?] OF maths_number;
29934   LOCAL
29935      i : INTEGER;
29936      numeric_set : SET [2:?] OF maths_number := [ start, start + delta ];
29937   END_LOCAL;
29938      IF incs > 1 THEN
29939         REPEAT i := 2 TO incs;
29940            numeric_set := numeric_set + start + i * delta;
29941         END_REPEAT;
29942      END_IF;
29943      RETURN (numeric_set);
29944END_FUNCTION;
29945
29946-- IN AP242
29947FUNCTION make_parallel_composed_function
29948      (srcdom : maths_space_or_function;
29949       prepfuncs : LIST [2:?] OF maths_function;
29950       finfunc : maths_function_select ) : parallel_composed_function;
29951      RETURN (parallel_composed_function(srcdom, prepfuncs, finfunc) || maths_function() || generic_expression() || multiple_arity_generic_expression(convert_to_operands_prcmfn(srcdom, prepfuncs, finfunc)));
29952END_FUNCTION;
29953
29954-- IN AP242
29955FUNCTION make_polar_complex_number_region
29956      (centre : complex_number_literal;
29957       dis_constraint : real_interval;
29958       dir_constraint : finite_real_interval ) : polar_complex_number_region;
29959      RETURN (polar_complex_number_region(centre, dis_constraint, dir_constraint) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29960END_FUNCTION;
29961
29962-- IN AP242
29963FUNCTION make_real_interval_from_min
29964      (min : REAL;
29965       minclo : open_closed ) : real_interval_from_min;
29966      RETURN (real_interval_from_min(min, minclo) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29967END_FUNCTION;
29968
29969-- IN AP242
29970FUNCTION make_real_interval_to_max
29971      (max : REAL;
29972       maxclo : open_closed ) : real_interval_to_max;
29973      RETURN (real_interval_to_max(max, maxclo) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29974END_FUNCTION;
29975
29976-- IN AP242
29977FUNCTION make_real_literal
29978      (lit_value : REAL ) : real_literal;
29979      RETURN (real_literal() || literal_number(lit_value) || simple_numeric_expression() || numeric_expression() || expression() || generic_expression() || simple_generic_expression() || generic_literal());
29980END_FUNCTION;
29981
29982-- IN AP242
29983FUNCTION make_string_literal
29984      (lit_value : STRING ) : string_literal;
29985      RETURN (string_literal(lit_value) || simple_string_expression() || string_expression() || expression() || generic_expression() || simple_generic_expression() || generic_literal());
29986END_FUNCTION;
29987
29988-- IN AP242
29989FUNCTION make_uniform_product_space
29990      (base : maths_space;
29991       exponent : positive_integer ) : uniform_product_space;
29992      RETURN (uniform_product_space(base, exponent) || maths_space() || generic_expression() || generic_literal() || simple_generic_expression());
29993END_FUNCTION;
29994
29995-- IN AP242
29996FUNCTION max_exists
29997      (spc : maths_space ) : BOOLEAN;
29998   LOCAL
29999      types : SET OF STRING := TYPEOF(spc);
30000   END_LOCAL;
30001      RETURN (bool((((schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types)) OR (schema_prefix + 'FINITE_REAL_INTERVAL' IN types)) OR (schema_prefix + 'REAL_INTERVAL_TO_MAX' IN types)));
30002END_FUNCTION;
30003
30004-- IN AP242
30005FUNCTION max_included
30006      (spc : maths_space ) : BOOLEAN;
30007   LOCAL
30008      types : SET OF STRING := TYPEOF(spc);
30009   END_LOCAL;
30010      IF (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types) THEN
30011         RETURN (TRUE);
30012      END_IF;
30013      IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
30014         RETURN (bool(spc\finite_real_interval.max_closure = closed));
30015      END_IF;
30016      IF schema_prefix + 'REAL_INTERVAL_TO_MAX' IN types THEN
30017         RETURN (bool(spc\real_interval_to_max.max_closure = closed));
30018      END_IF;
30019      RETURN (FALSE);
30020END_FUNCTION;
30021
30022-- IN AP242
30023FUNCTION member_of
30024      (val : GENERIC : G;
30025       spc : maths_space ) : LOGICAL;
30026      FUNCTION fedex
30027         (val : AGGREGATE OF GENERIC : x;
30028          i : INTEGER ) : GENERIC : x;
30029         RETURN (val[i]);
30030      END_FUNCTION;
30031   LOCAL
30032      v : maths_value := simplify_maths_value(convert_to_maths_value(val));
30033      vtypes : SET OF STRING := stripped_typeof(v);
30034      s : maths_space := simplify_maths_space(spc);
30035      stypes : SET OF STRING := stripped_typeof(s);
30036      tmp_int : INTEGER;
30037      tmp_real : REAL;
30038      tmp_cmplx : complex_number_literal;
30039      lgcl : LOGICAL;
30040      cum : LOGICAL;
30041      vspc : maths_space;
30042      sspc : maths_space;
30043      smem : SET OF maths_value;
30044      factors : LIST OF maths_space;
30045   END_LOCAL;
30046      IF NOT EXISTS(s) THEN
30047         RETURN (FALSE);
30048      END_IF;
30049      IF NOT EXISTS(v) THEN
30050         RETURN (s = the_generics);
30051      END_IF;
30052      IF ((('GENERIC_EXPRESSION' IN vtypes) AND NOT ('MATHS_SPACE' IN vtypes)) AND NOT ('MATHS_FUNCTION' IN vtypes)) AND NOT ('COMPLEX_NUMBER_LITERAL' IN vtypes) THEN
30053         IF has_values_space(v) THEN
30054            vspc := values_space_of(v);
30055            IF subspace_of(vspc, s) THEN
30056               RETURN (TRUE);
30057            END_IF;
30058            IF NOT compatible_spaces(vspc, s) THEN
30059               RETURN (FALSE);
30060            END_IF;
30061            RETURN (UNKNOWN);
30062         END_IF;
30063         RETURN (UNKNOWN);
30064      END_IF;
30065      IF 'ELEMENTARY_SPACE' IN stypes THEN
30066         CASE s\elementary_space.space_id OF
30067            es_numbers :
30068                  RETURN (('NUMBER' IN vtypes) OR ('COMPLEX_NUMBER_LITERAL' IN vtypes));
30069            es_complex_numbers :
30070                  RETURN ('COMPLEX_NUMBER_LITERAL' IN vtypes);
30071            es_reals :
30072                  RETURN (('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes));
30073            es_integers :
30074                  RETURN ('INTEGER' IN vtypes);
30075            es_logicals :
30076                  RETURN ('LOGICAL' IN vtypes);
30077            es_booleans :
30078                  RETURN ('BOOLEAN' IN vtypes);
30079            es_strings :
30080                  RETURN ('STRING' IN vtypes);
30081            es_binarys :
30082                  RETURN ('BINARY' IN vtypes);
30083            es_maths_spaces :
30084                  RETURN ('MATHS_SPACE' IN vtypes);
30085            es_maths_functions :
30086                  RETURN ('MATHS_FUNCTION' IN vtypes);
30087            es_generics :
30088                  RETURN (TRUE);
30089         END_CASE;
30090      END_IF;
30091      IF 'FINITE_INTEGER_INTERVAL' IN stypes THEN
30092         IF 'INTEGER' IN vtypes THEN
30093            tmp_int := v;
30094            RETURN ((s\finite_integer_interval.min <= tmp_int) AND (tmp_int <= s\finite_integer_interval.max));
30095         END_IF;
30096         RETURN (FALSE);
30097      END_IF;
30098      IF 'INTEGER_INTERVAL_FROM_MIN' IN stypes THEN
30099         IF 'INTEGER' IN vtypes THEN
30100            tmp_int := v;
30101            RETURN (s\integer_interval_from_min.min <= tmp_int);
30102         END_IF;
30103         RETURN (FALSE);
30104      END_IF;
30105      IF 'INTEGER_INTERVAL_TO_MAX' IN stypes THEN
30106         IF 'INTEGER' IN vtypes THEN
30107            tmp_int := v;
30108            RETURN (tmp_int <= s\integer_interval_to_max.max);
30109         END_IF;
30110         RETURN (FALSE);
30111      END_IF;
30112      IF 'FINITE_REAL_INTERVAL' IN stypes THEN
30113         IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
30114            tmp_real := v;
30115            IF s\finite_real_interval.min_closure = closed THEN
30116               IF s\finite_real_interval.max_closure = closed THEN
30117                  RETURN ((s\finite_real_interval.min <= tmp_real) AND (tmp_real <= s\finite_real_interval.max));
30118               ELSE
30119                  RETURN ((s\finite_real_interval.min <= tmp_real) AND (tmp_real < s\finite_real_interval.max));
30120               END_IF;
30121            ELSE
30122               IF s\finite_real_interval.max_closure = closed THEN
30123                  RETURN ((s\finite_real_interval.min < tmp_real) AND (tmp_real <= s\finite_real_interval.max));
30124               ELSE
30125                  RETURN ((s\finite_real_interval.min < tmp_real) AND (tmp_real < s\finite_real_interval.max));
30126               END_IF;
30127            END_IF;
30128         END_IF;
30129         RETURN (FALSE);
30130      END_IF;
30131      IF 'REAL_INTERVAL_FROM_MIN' IN stypes THEN
30132         IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
30133            tmp_real := v;
30134            IF s\real_interval_from_min.min_closure = closed THEN
30135               RETURN (s\real_interval_from_min.min <= tmp_real);
30136            ELSE
30137               RETURN (s\real_interval_from_min.min < tmp_real);
30138            END_IF;
30139         END_IF;
30140         RETURN (FALSE);
30141      END_IF;
30142      IF 'REAL_INTERVAL_TO_MAX' IN stypes THEN
30143         IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes) THEN
30144            tmp_real := v;
30145            IF s\real_interval_to_max.max_closure = closed THEN
30146               RETURN (tmp_real <= s\real_interval_to_max.max);
30147            ELSE
30148               RETURN (tmp_real < s\real_interval_to_max.max);
30149            END_IF;
30150         END_IF;
30151         RETURN (FALSE);
30152      END_IF;
30153      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN stypes THEN
30154         IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
30155            RETURN (member_of(v\complex_number_literal.real_part, s\cartesian_complex_number_region.real_constraint) AND member_of(v\complex_number_literal.imag_part, s\cartesian_complex_number_region.imag_constraint));
30156         END_IF;
30157         RETURN (FALSE);
30158      END_IF;
30159      IF 'POLAR_COMPLEX_NUMBER_REGION' IN stypes THEN
30160         IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
30161            tmp_cmplx := v;
30162            tmp_cmplx.real_part := tmp_cmplx.real_part - s\polar_complex_number_region.centre.real_part;
30163            tmp_cmplx.imag_part := tmp_cmplx.imag_part - s\polar_complex_number_region.centre.imag_part;
30164            tmp_real := SQRT(tmp_cmplx.real_part ** 2 + tmp_cmplx.imag_part ** 2);
30165            IF NOT member_of(tmp_real, s\polar_complex_number_region.distance_constraint) THEN
30166               RETURN (FALSE);
30167            END_IF;
30168            IF tmp_real = 0.0 THEN
30169               RETURN (TRUE);
30170            END_IF;
30171            tmp_real := atan2(tmp_cmplx.imag_part, tmp_cmplx.real_part);
30172            RETURN (member_of(tmp_real, s\polar_complex_number_region.direction_constraint) OR member_of(tmp_real + 2.0 * 3.14159, s\polar_complex_number_region.direction_constraint));
30173         END_IF;
30174         RETURN (FALSE);
30175      END_IF;
30176      IF 'FINITE_SPACE' IN stypes THEN
30177         smem := s\finite_space.members;
30178         cum := FALSE;
30179         REPEAT i := 1 TO SIZEOF(smem);
30180            cum := cum OR equal_maths_values(v, smem[i]);
30181            IF cum = TRUE THEN
30182               RETURN (TRUE);
30183            END_IF;
30184         END_REPEAT;
30185         RETURN (cum);
30186      END_IF;
30187      IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
30188         IF 'LIST' IN vtypes THEN
30189            IF SIZEOF(v) = s\uniform_product_space.exponent THEN
30190               sspc := s\uniform_product_space.base;
30191               cum := TRUE;
30192               REPEAT i := 1 TO SIZEOF(v);
30193                  cum := cum AND member_of(v[i], sspc);
30194                  IF cum = FALSE THEN
30195                     RETURN (FALSE);
30196                  END_IF;
30197               END_REPEAT;
30198               RETURN (cum);
30199            END_IF;
30200         END_IF;
30201         RETURN (FALSE);
30202      END_IF;
30203      IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
30204         IF 'LIST' IN vtypes THEN
30205            factors := s\listed_product_space.factors;
30206            IF SIZEOF(v) = SIZEOF(factors) THEN
30207               cum := TRUE;
30208               REPEAT i := 1 TO SIZEOF(v);
30209                  cum := cum AND member_of(v[i], factors[i]);
30210                  IF cum = FALSE THEN
30211                     RETURN (FALSE);
30212                  END_IF;
30213               END_REPEAT;
30214               RETURN (cum);
30215            END_IF;
30216         END_IF;
30217         RETURN (FALSE);
30218      END_IF;
30219      IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
30220         IF 'LIST' IN vtypes THEN
30221            sspc := s\extended_tuple_space.base;
30222            tmp_int := space_dimension(sspc);
30223            IF SIZEOF(v) >= tmp_int THEN
30224               cum := TRUE;
30225               REPEAT i := 1 TO tmp_int;
30226                  cum := cum AND member_of(v[i], factor_space(sspc, i));
30227                  IF cum = FALSE THEN
30228                     RETURN (FALSE);
30229                  END_IF;
30230               END_REPEAT;
30231               sspc := s\extended_tuple_space.extender;
30232               REPEAT i := tmp_int + 1 TO SIZEOF(v);
30233                  cum := cum AND member_of(v[i], sspc);
30234                  IF cum = FALSE THEN
30235                     RETURN (FALSE);
30236                  END_IF;
30237               END_REPEAT;
30238               RETURN (cum);
30239            END_IF;
30240         END_IF;
30241         RETURN (FALSE);
30242      END_IF;
30243      IF 'FUNCTION_SPACE' IN stypes THEN
30244         IF 'MATHS_FUNCTION' IN vtypes THEN
30245            vspc := v\maths_function.domain;
30246            sspc := s\function_space.domain_argument;
30247            CASE s\function_space.domain_constraint OF
30248               sc_equal :
30249                     cum := equal_maths_spaces(vspc, sspc);
30250               sc_subspace :
30251                     cum := subspace_of(vspc, sspc);
30252               sc_member :
30253                     cum := member_of(vspc, sspc);
30254            END_CASE;
30255            IF cum = FALSE THEN
30256               RETURN (FALSE);
30257            END_IF;
30258            vspc := v\maths_function.range;
30259            sspc := s\function_space.range_argument;
30260            CASE s\function_space.range_constraint OF
30261               sc_equal :
30262                     cum := cum AND equal_maths_spaces(vspc, sspc);
30263               sc_subspace :
30264                     cum := cum AND subspace_of(vspc, sspc);
30265               sc_member :
30266                     cum := cum AND member_of(vspc, sspc);
30267            END_CASE;
30268            RETURN (cum);
30269         END_IF;
30270         RETURN (FALSE);
30271      END_IF;
30272      RETURN (UNKNOWN);
30273END_FUNCTION;
30274
30275-- IN AP242
30276FUNCTION min_exists
30277      (spc : maths_space ) : BOOLEAN;
30278   LOCAL
30279      types : SET OF STRING := TYPEOF(spc);
30280   END_LOCAL;
30281      RETURN (bool((((schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types)) OR (schema_prefix + 'FINITE_REAL_INTERVAL' IN types)) OR (schema_prefix + 'REAL_INTERVAL_FROM_MIN' IN types)));
30282END_FUNCTION;
30283
30284-- IN AP242
30285FUNCTION min_included
30286      (spc : maths_space ) : BOOLEAN;
30287   LOCAL
30288      types : SET OF STRING := TYPEOF(spc);
30289   END_LOCAL;
30290      IF (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types) OR (schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types) THEN
30291         RETURN (TRUE);
30292      END_IF;
30293      IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
30294         RETURN (bool(spc\finite_real_interval.min_closure = closed));
30295      END_IF;
30296      IF schema_prefix + 'REAL_INTERVAL_FROM_MIN' IN types THEN
30297         RETURN (bool(spc\real_interval_from_min.min_closure = closed));
30298      END_IF;
30299      RETURN (FALSE);
30300END_FUNCTION;
30301
30302-- DIFF IN AP214
30303FUNCTION mixed_loop_type_set
30304      (l : SET [0:?] OF loop ) : LOGICAL;
30305   LOCAL
30306      poly_loop_type : LOGICAL;
30307   END_LOCAL;
30308      IF SIZEOF(l) <= 1 THEN
30309         RETURN (FALSE);
30310      END_IF;
30311      poly_loop_type := 'STEP_MERGED_CAD_SCHEMA.POLY_LOOP' IN TYPEOF(l[1]);
30312      REPEAT i := 2 TO SIZEOF(l);
30313         IF ('STEP_MERGED_CAD_SCHEMA.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type THEN
30314            RETURN (TRUE);
30315         END_IF;
30316      END_REPEAT;
30317      RETURN (FALSE);
30318END_FUNCTION;
30319
30320FUNCTION msb_shells
30321      (brep : manifold_solid_brep ) : SET [1:?] OF closed_shell;
30322   LOCAL
30323      return_set : SET [1:?] OF closed_shell := [ brep.outer ];
30324   END_LOCAL;
30325      IF SIZEOF(QUERY (msbtype <* TYPEOF(brep)| msbtype LIKE '*BREP_WITH_VOIDS')) >= 1 THEN
30326         return_set := return_set + brep\brep_with_voids.voids;
30327      END_IF;
30328      RETURN (return_set);
30329END_FUNCTION;
30330
30331FUNCTION msf_curve_check
30332      (cv : representation_item ) : BOOLEAN;
30333      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA', 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
30334         RETURN (FALSE);
30335      END_IF;
30336      IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect = UNKNOWN) THEN
30337         RETURN (TRUE);
30338      ELSE
30339         IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.LINE' ] * TYPEOF(cv)) = 1 THEN
30340            RETURN (TRUE);
30341         ELSE
30342            IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
30343               RETURN (msf_curve_check(cv\curve_replica.parent_curve));
30344            ELSE
30345               IF (('STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND NOT ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
30346                  RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve));
30347               ELSE
30348                  IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
30349                     RETURN (msf_curve_check(cv\pcurve.reference_to_curve\representation.items[1]) AND msf_surface_check(cv\pcurve.basis_surface));
30350                  ELSE
30351                     IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv) THEN
30352                        IF msf_curve_check(cv\surface_curve.curve_3d) THEN
30353                           REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
30354                              IF 'STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
30355                                 IF NOT msf_surface_check(cv\surface_curve.associated_geometry[i]) THEN
30356                                    RETURN (FALSE);
30357                                 END_IF;
30358                              ELSE
30359                                 IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
30360                                    IF NOT msf_curve_check(cv\surface_curve.associated_geometry[i]) THEN
30361                                       RETURN (FALSE);
30362                                    END_IF;
30363                                 END_IF;
30364                              END_IF;
30365                           END_REPEAT;
30366                           RETURN (TRUE);
30367                        END_IF;
30368                     ELSE
30369                        IF 'STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
30370                           IF SIZEOF(cv\polyline.points) >= 3 THEN
30371                              RETURN (TRUE);
30372                           END_IF;
30373                        END_IF;
30374                     END_IF;
30375                  END_IF;
30376               END_IF;
30377            END_IF;
30378         END_IF;
30379      END_IF;
30380      RETURN (FALSE);
30381END_FUNCTION;
30382
30383FUNCTION msf_surface_check
30384      (surf : surface ) : BOOLEAN;
30385      IF 'STEP_MERGED_CAD_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
30386         RETURN (TRUE);
30387      ELSE
30388         IF 'STEP_MERGED_CAD_SCHEMA.SWEPT_SURFACE' IN TYPEOF(surf) THEN
30389            RETURN (msf_curve_check(surf\swept_surface.swept_curve));
30390         ELSE
30391            IF ('STEP_MERGED_CAD_SCHEMA.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE) OR (surf\offset_surface.self_intersect = UNKNOWN) THEN
30392               RETURN (msf_surface_check(surf\offset_surface.basis_surface));
30393            ELSE
30394               IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_REPLICA' IN TYPEOF(surf) THEN
30395                  RETURN (msf_surface_check(surf\surface_replica.parent_surface));
30396               ELSE
30397                  IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect = FALSE) OR (surf\b_spline_surface.self_intersect = UNKNOWN) THEN
30398                     RETURN (TRUE);
30399                  END_IF;
30400               END_IF;
30401            END_IF;
30402         END_IF;
30403      END_IF;
30404      RETURN (FALSE);
30405END_FUNCTION;
30406
30407FUNCTION nmsf_curve_check
30408      (cv : representation_item ) : BOOLEAN;
30409      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.BOUNDED_CURVE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA', 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
30410         RETURN (FALSE);
30411      ELSE
30412         IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect = UNKNOWN) THEN
30413            RETURN (TRUE);
30414         ELSE
30415            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.LINE' ] * TYPEOF(cv)) = 1 THEN
30416               RETURN (TRUE);
30417            ELSE
30418               IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
30419                  RETURN (nmsf_curve_check(cv\curve_replica.parent_curve));
30420               ELSE
30421                  IF (('STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN))) AND NOT ('STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
30422                     RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve));
30423                  ELSE
30424                     IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
30425                        RETURN (nmsf_curve_check(cv\pcurve.reference_to_curve\representation.items[1]) AND nmsf_surface_check(cv\pcurve.basis_surface));
30426                     ELSE
30427                        IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv) THEN
30428                           IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN
30429                              REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
30430                                 IF 'STEP_MERGED_CAD_SCHEMA.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
30431                                    IF NOT nmsf_surface_check(cv\surface_curve.associated_geometry[i]) THEN
30432                                       RETURN (FALSE);
30433                                    END_IF;
30434                                 ELSE
30435                                    IF 'STEP_MERGED_CAD_SCHEMA.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
30436                                       IF NOT nmsf_curve_check(cv\surface_curve.associated_geometry[i]) THEN
30437                                          RETURN (FALSE);
30438                                       END_IF;
30439                                    END_IF;
30440                                 END_IF;
30441                              END_REPEAT;
30442                              RETURN (TRUE);
30443                           END_IF;
30444                        ELSE
30445                           IF 'STEP_MERGED_CAD_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
30446                              IF SIZEOF(cv\polyline.points) >= 3 THEN
30447                                 RETURN (TRUE);
30448                              END_IF;
30449                           END_IF;
30450                        END_IF;
30451                     END_IF;
30452                  END_IF;
30453               END_IF;
30454            END_IF;
30455         END_IF;
30456      END_IF;
30457      RETURN (FALSE);
30458END_FUNCTION;
30459
30460FUNCTION nmsf_surface_check
30461      (surf : surface ) : BOOLEAN;
30462      IF 'STEP_MERGED_CAD_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
30463         RETURN (TRUE);
30464      ELSE
30465         IF 'STEP_MERGED_CAD_SCHEMA.SWEPT_SURFACE' IN TYPEOF(surf) THEN
30466            RETURN (nmsf_curve_check(surf\swept_surface.swept_curve));
30467         ELSE
30468            IF ('STEP_MERGED_CAD_SCHEMA.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\offset_surface.self_intersect = FALSE) OR (surf\offset_surface.self_intersect = UNKNOWN) THEN
30469               RETURN (nmsf_surface_check(surf\offset_surface.basis_surface));
30470            ELSE
30471               IF 'STEP_MERGED_CAD_SCHEMA.SURFACE_REPLICA' IN TYPEOF(surf) THEN
30472                  RETURN (nmsf_surface_check(surf\surface_replica.parent_surface));
30473               ELSE
30474                  IF ('STEP_MERGED_CAD_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect = FALSE) OR (surf\b_spline_surface.self_intersect = UNKNOWN) THEN
30475                     RETURN (TRUE);
30476                  END_IF;
30477               END_IF;
30478            END_IF;
30479         END_IF;
30480      END_IF;
30481      RETURN (FALSE);
30482END_FUNCTION;
30483
30484-- IN AP242
30485FUNCTION no_cyclic_domain_reference
30486      (ref : maths_space_or_function;
30487       used : SET [0:?] OF maths_function ) : BOOLEAN;
30488   LOCAL
30489      typenames : SET OF STRING := TYPEOF(ref);
30490      func : maths_function;
30491   END_LOCAL;
30492      IF NOT EXISTS(ref) OR NOT EXISTS(used) THEN
30493         RETURN (FALSE);
30494      END_IF;
30495      IF schema_prefix + 'MATHS_SPACE' IN typenames THEN
30496         RETURN (TRUE);
30497      END_IF;
30498      func := ref;
30499      IF func IN used THEN
30500         RETURN (FALSE);
30501      END_IF;
30502      IF schema_prefix + 'CONSTANT_FUNCTION' IN typenames THEN
30503         RETURN (no_cyclic_domain_reference(func\constant_function.source_of_domain, used + [ func ]));
30504      END_IF;
30505      IF schema_prefix + 'SELECTOR_FUNCTION' IN typenames THEN
30506         RETURN (no_cyclic_domain_reference(func\selector_function.source_of_domain, used + [ func ]));
30507      END_IF;
30508      IF schema_prefix + 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
30509         RETURN (no_cyclic_domain_reference(func\parallel_composed_function.source_of_domain, used + [ func ]));
30510      END_IF;
30511      RETURN (TRUE);
30512END_FUNCTION;
30513
30514-- IN AP242
30515FUNCTION no_cyclic_space_reference
30516      (spc : maths_space;
30517       refs : SET [0:?] OF maths_space ) : BOOLEAN;
30518   LOCAL
30519      types : SET OF STRING;
30520      refs_plus : SET OF maths_space;
30521   END_LOCAL;
30522      IF spc IN refs THEN
30523         RETURN (FALSE);
30524      END_IF;
30525      types := TYPEOF(spc);
30526      refs_plus := refs + spc;
30527      IF schema_prefix + 'FINITE_SPACE' IN types THEN
30528         RETURN (bool(SIZEOF(QUERY (sp <* QUERY (mem <* spc\finite_space.members| (schema_prefix + 'MATHS_SPACE' IN TYPEOF(mem)))| NOT no_cyclic_space_reference(sp, refs_plus))) = 0));
30529      END_IF;
30530      IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN types THEN
30531         RETURN (no_cyclic_space_reference(spc\uniform_product_space.base, refs_plus));
30532      END_IF;
30533      IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN types THEN
30534         RETURN (bool(SIZEOF(QUERY (fac <* spc\listed_product_space.factors| NOT no_cyclic_space_reference(fac, refs_plus))) = 0));
30535      END_IF;
30536      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
30537         RETURN (no_cyclic_space_reference(spc\extended_tuple_space.base, refs_plus) AND no_cyclic_space_reference(spc\extended_tuple_space.extender, refs_plus));
30538      END_IF;
30539      RETURN (TRUE);
30540END_FUNCTION;
30541
30542-- IN AP242
30543FUNCTION nondecreasing
30544      (lr : LIST [0:?] OF REAL ) : BOOLEAN;
30545      IF NOT EXISTS(lr) THEN
30546         RETURN (FALSE);
30547      END_IF;
30548      REPEAT j := 2 TO SIZEOF(lr);
30549         IF lr[j] < lr[(j - 1)] THEN
30550            RETURN (FALSE);
30551         END_IF;
30552      END_REPEAT;
30553      RETURN (TRUE);
30554END_FUNCTION;
30555
30556-- DIFF IN AP214
30557-- DIFF IN AP203e2
30558FUNCTION normalise
30559      (arg : vector_or_direction ) : vector_or_direction;
30560   LOCAL
30561      ndim : INTEGER;
30562      v : direction := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
30563      result : vector_or_direction;
30564      vec : vector := dummy_gri || vector(v, 1.0);
30565      mag : REAL;
30566   END_LOCAL;
30567      IF NOT EXISTS(arg) THEN
30568         result := ?;
30569      ELSE
30570         ndim := arg.dim;
30571         IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
30572            BEGIN
30573               v := dummy_gri || direction(arg\vector.orientation.direction_ratios);
30574               IF arg\vector.magnitude = 0.0 THEN
30575                  RETURN (?);
30576               ELSE
30577                  vec := dummy_gri || vector(v, 1.0);
30578               END_IF;
30579            END;
30580         ELSE
30581            v := dummy_gri || direction(arg.direction_ratios);
30582         END_IF;
30583         mag := 0.0;
30584         REPEAT i := 1 TO ndim;
30585            mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
30586         END_REPEAT;
30587         IF mag > 0.0 THEN
30588            mag := SQRT(mag);
30589            REPEAT i := 1 TO ndim;
30590               v.direction_ratios[i] := v.direction_ratios[i] / mag;
30591            END_REPEAT;
30592            IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
30593               vec.orientation := v;
30594               result := vec;
30595            ELSE
30596               result := v;
30597            END_IF;
30598         ELSE
30599            RETURN (?);
30600         END_IF;
30601      END_IF;
30602      RETURN (result);
30603END_FUNCTION;
30604
30605-- IN AP242
30606FUNCTION number_superspace_of
30607      (spc : maths_space ) : elementary_space;
30608      IF subspace_of_es(spc, es_integers) THEN
30609         RETURN (the_integers);
30610      END_IF;
30611      IF subspace_of_es(spc, es_reals) THEN
30612         RETURN (the_reals);
30613      END_IF;
30614      IF subspace_of_es(spc, es_complex_numbers) THEN
30615         RETURN (the_complex_numbers);
30616      END_IF;
30617      IF subspace_of_es(spc, es_numbers) THEN
30618         RETURN (the_numbers);
30619      END_IF;
30620      RETURN (?);
30621END_FUNCTION;
30622
30623-- IN AP242
30624FUNCTION number_tuple_subspace_check
30625      (spc : maths_space ) : LOGICAL;
30626   LOCAL
30627      types : SET OF STRING := stripped_typeof(spc);
30628      factors : LIST OF maths_space;
30629      cum : LOGICAL := TRUE;
30630   END_LOCAL;
30631      IF 'UNIFORM_PRODUCT_SPACE' IN types THEN
30632         RETURN (subspace_of_es(spc\uniform_product_space.base, es_numbers));
30633      END_IF;
30634      IF 'LISTED_PRODUCT_SPACE' IN types THEN
30635         factors := spc\listed_product_space.factors;
30636         REPEAT i := 1 TO SIZEOF(factors);
30637            cum := cum AND subspace_of_es(factors[i], es_numbers);
30638         END_REPEAT;
30639         RETURN (cum);
30640      END_IF;
30641      IF 'EXTENDED_TUPLE_SPACE' IN types THEN
30642         cum := subspace_of_es(spc\extended_tuple_space.extender, es_numbers);
30643         cum := cum AND number_tuple_subspace_check(spc\extended_tuple_space.base);
30644         RETURN (cum);
30645      END_IF;
30646      RETURN (FALSE);
30647END_FUNCTION;
30648
30649-- IN AP242
30650FUNCTION one_tuples_of
30651      (spc : maths_space ) : tuple_space;
30652      RETURN (make_uniform_product_space(spc, 1));
30653END_FUNCTION;
30654
30655-- IN AP242
30656FUNCTION open_path_based_inner_boundary
30657      (input : SET [0:?] OF primitive_2d ) : BOOLEAN;
30658   LOCAL
30659      pass : BOOLEAN := TRUE;
30660   END_LOCAL;
30661      REPEAT i := 1 TO SIZEOF(input);
30662         IF ('STEP_MERGED_CAD_SCHEMA.PATH_AREA_WITH_PARAMETERS' IN TYPEOF(input[i])) AND (('STEP_MERGED_CAD_SCHEMA.CIRCLE' IN TYPEOF(input[i]\mapped_item.mapping_source\representation_map.mapping_origin)) OR ('STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(input[i]\mapped_item.mapping_source\representation_map.mapping_origin)) AND (input[i]\mapped_item.mapping_source\representation_map.mapping_origin\composite_curve.closed_curve = TRUE)) THEN
30663            pass := FALSE;
30664         END_IF;
30665      END_REPEAT;
30666      RETURN (pass);
30667END_FUNCTION;
30668
30669FUNCTION open_shell_reversed
30670      (a_shell : open_shell ) : oriented_open_shell;
30671   LOCAL
30672      the_reverse : oriented_open_shell;
30673   END_LOCAL;
30674      IF 'STEP_MERGED_CAD_SCHEMA.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell) THEN
30675         the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || open_shell() || oriented_open_shell(a_shell\oriented_open_shell.open_shell_element, NOT a_shell\oriented_open_shell.orientation);
30676      ELSE
30677         the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || open_shell() || oriented_open_shell(a_shell, FALSE);
30678      END_IF;
30679      RETURN (the_reverse);
30680END_FUNCTION;
30681
30682FUNCTION orthogonal_complement
30683      (vec : direction ) : direction;
30684   LOCAL
30685      result : direction;
30686   END_LOCAL;
30687      IF (vec.dim <> 2) OR NOT EXISTS(vec) THEN
30688         RETURN (?);
30689      ELSE
30690         result := dummy_gri || direction([ -vec.direction_ratios[2], vec.direction_ratios[1] ]);
30691         RETURN (result);
30692      END_IF;
30693END_FUNCTION;
30694
30695-- IN AP242
30696FUNCTION parallel_composed_function_composability_check
30697      (funcs : LIST [0:?] OF maths_function;
30698       final : maths_function_select ) : BOOLEAN;
30699   LOCAL
30700      tplsp : tuple_space := the_zero_tuple_space;
30701      finfun : maths_function := convert_to_maths_function(final);
30702   END_LOCAL;
30703      REPEAT i := 1 TO SIZEOF(funcs);
30704         tplsp := assoc_product_space(tplsp, funcs[i].range);
30705      END_REPEAT;
30706      RETURN (compatible_spaces(tplsp, finfun.domain));
30707END_FUNCTION;
30708
30709-- IN AP242
30710FUNCTION parallel_composed_function_domain_check
30711      (comdom : tuple_space;
30712       funcs : LIST [0:?] OF maths_function ) : BOOLEAN;
30713      REPEAT i := 1 TO SIZEOF(funcs);
30714         IF NOT compatible_spaces(comdom, funcs[i].domain) THEN
30715            RETURN (FALSE);
30716         END_IF;
30717      END_REPEAT;
30718      RETURN (TRUE);
30719END_FUNCTION;
30720
30721-- IN AP242
30722FUNCTION partial_derivative_check
30723      (domain : tuple_space;
30724       d_vars : LIST [1:?] OF input_selector ) : BOOLEAN;
30725   LOCAL
30726      domn : tuple_space := domain;
30727      fspc : maths_space;
30728      dim : INTEGER;
30729      k : INTEGER;
30730   END_LOCAL;
30731      IF (space_dimension(domain) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(domain))) THEN
30732         domn := factor1(domain);
30733      END_IF;
30734      dim := space_dimension(domn);
30735      REPEAT i := 1 TO SIZEOF(d_vars);
30736         k := d_vars[i];
30737         IF k > dim THEN
30738            RETURN (FALSE);
30739         END_IF;
30740         fspc := factor_space(domn, k);
30741         IF NOT subspace_of_es(fspc, es_reals) AND NOT subspace_of_es(fspc, es_complex_numbers) THEN
30742            RETURN (FALSE);
30743         END_IF;
30744      END_REPEAT;
30745      RETURN (TRUE);
30746END_FUNCTION;
30747
30748FUNCTION path_head_to_tail
30749      (a_path : path ) : LOGICAL;
30750   LOCAL
30751      n : INTEGER;
30752      p : LOGICAL := TRUE;
30753   END_LOCAL;
30754      n := SIZEOF(a_path.edge_list);
30755      REPEAT i := 2 TO n;
30756         p := p AND (a_path.edge_list[(i - 1)].edge_end :=: a_path.edge_list[i].edge_start);
30757      END_REPEAT;
30758      RETURN (p);
30759END_FUNCTION;
30760
30761FUNCTION path_reversed
30762      (a_path : path ) : oriented_path;
30763   LOCAL
30764      the_reverse : oriented_path;
30765   END_LOCAL;
30766      IF 'STEP_MERGED_CAD_SCHEMA.ORIENTED_PATH' IN TYPEOF(a_path) THEN
30767         the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.edge_list)) || oriented_path(a_path\oriented_path.path_element, NOT a_path\oriented_path.orientation);
30768      ELSE
30769         the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.edge_list)) || oriented_path(a_path, FALSE);
30770      END_IF;
30771      RETURN (the_reverse);
30772END_FUNCTION;
30773
30774-- DIFF IN AP214
30775-- IN AP214/AP242
30776FUNCTION plane_angle_for_pair_in_radian
30777      (pair : kinematic_pair;
30778       angle : plane_angle_measure ) : plane_angle_measure;
30779   LOCAL
30780      converted_angle : plane_angle_measure := angle;
30781      link_rep : kinematic_link_representation := representation_of_link(pair.joint.edge_start);
30782      link_cntxt : representation_context;
30783      pa_units : SET OF unit := [];
30784      pau : unit;
30785   END_LOCAL;
30786      link_cntxt := link_rep\representation.context_of_items;
30787      IF NOT ('STEP_MERGED_CAD_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(link_cntxt)) THEN
30788         RETURN (?);
30789      END_IF;
30790      pa_units := QUERY (unit <* link_cntxt\global_unit_assigned_context.units| 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
30791      IF SIZEOF(pa_units) <> 1 THEN
30792         RETURN (?);
30793      END_IF;
30794      pau := pa_units[1];
30795      IF NOT ('STEP_MERGED_CAD_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) THEN
30796         RETURN (?);
30797      END_IF;
30798      REPEAT WHILE 'STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau);
30799         converted_angle := converted_angle * pau\conversion_based_unit.conversion_factor.value_component;
30800         pau := pau\conversion_based_unit.conversion_factor.unit_component;
30801         IF NOT ('STEP_MERGED_CAD_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_CAD_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) OR NOT ('STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(pau)) THEN
30802            RETURN (?);
30803         END_IF;
30804      END_REPEAT;
30805      IF pau\si_unit.name <> si_unit_name.radian THEN
30806         RETURN (?);
30807      END_IF;
30808      CASE pau\si_unit.prefix OF
30809         si_prefix.exa :
30810               RETURN (1.0E+018 * converted_angle);
30811         si_prefix.peta :
30812               RETURN (1.0E+015 * converted_angle);
30813         si_prefix.tera :
30814               RETURN (1.0E+012 * converted_angle);
30815         si_prefix.giga :
30816               RETURN (1.0E+009 * converted_angle);
30817         si_prefix.mega :
30818               RETURN (1.0E+006 * converted_angle);
30819         si_prefix.kilo :
30820               RETURN (1000.00 * converted_angle);
30821         si_prefix.hecto :
30822               RETURN (100.000 * converted_angle);
30823         si_prefix.deca :
30824               RETURN (10.0 * converted_angle);
30825         si_prefix.deci :
30826               RETURN (0.100000 * converted_angle);
30827         si_prefix.centi :
30828               RETURN (0.0100000 * converted_angle);
30829         si_prefix.milli :
30830               RETURN (0.00100000 * converted_angle);
30831         si_prefix.micro :
30832               RETURN (1.0E-006 * converted_angle);
30833         si_prefix.nano :
30834               RETURN (1.0E-009 * converted_angle);
30835         si_prefix.pico :
30836               RETURN (1.0E-012 * converted_angle);
30837         si_prefix.femto :
30838               RETURN (1.0E-015 * converted_angle);
30839         si_prefix.atto :
30840               RETURN (1.0E-018 * converted_angle);
30841      OTHERWISE :
30842            RETURN (converted_angle);
30843      END_CASE;
30844END_FUNCTION;
30845
30846-- IN AP242
30847FUNCTION real_max
30848      (spc : maths_space ) : REAL;
30849   LOCAL
30850      types : SET OF STRING := TYPEOF(spc);
30851   END_LOCAL;
30852      IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types THEN
30853         RETURN (spc\finite_integer_interval.max);
30854      END_IF;
30855      IF schema_prefix + 'INTEGER_INTERVAL_TO_MAX' IN types THEN
30856         RETURN (spc\integer_interval_to_max.max);
30857      END_IF;
30858      IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
30859         RETURN (spc\finite_real_interval.max);
30860      END_IF;
30861      IF schema_prefix + 'REAL_INTERVAL_TO_MAX' IN types THEN
30862         RETURN (spc\real_interval_to_max.max);
30863      END_IF;
30864      RETURN (?);
30865END_FUNCTION;
30866
30867-- IN AP242
30868FUNCTION real_min
30869      (spc : maths_space ) : REAL;
30870   LOCAL
30871      types : SET OF STRING := TYPEOF(spc);
30872   END_LOCAL;
30873      IF schema_prefix + 'FINITE_INTEGER_INTERVAL' IN types THEN
30874         RETURN (spc\finite_integer_interval.min);
30875      END_IF;
30876      IF schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' IN types THEN
30877         RETURN (spc\integer_interval_from_min.min);
30878      END_IF;
30879      IF schema_prefix + 'FINITE_REAL_INTERVAL' IN types THEN
30880         RETURN (spc\finite_real_interval.min);
30881      END_IF;
30882      IF schema_prefix + 'REAL_INTERVAL_FROM_MIN' IN types THEN
30883         RETURN (spc\real_interval_from_min.min);
30884      END_IF;
30885      RETURN (?);
30886END_FUNCTION;
30887
30888-- IN AP242
30889FUNCTION relating_shape_representations_of_extreme_values
30890      (item : location_of_extreme_value_select ) : SET [0:?] OF shape_representation;
30891   LOCAL
30892      results : SET OF shape_representation := [];
30893      exti : SET OF extreme_instance := [];
30894      ii_ei : SET OF instance_report_item_with_extreme_instances := [];
30895      sdiir : SET OF shape_data_quality_inspection_instance_report := [];
30896      sdqr : SET OF shape_data_quality_inspection_result_representation := [];
30897      sdisr : SET OF shape_data_quality_inspected_shape_and_result_relationship := [];
30898   END_LOCAL;
30899      exti := exti + bag_to_set(USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.' + 'EXTREME_INSTANCE.' + 'LOCATIONS_OF_EXTREME_VALUE'));
30900      REPEAT i := 1 TO HIINDEX(exti);
30901         ii_ei := ii_ei + bag_to_set(USEDIN(exti[i], 'STEP_MERGED_CAD_SCHEMA.' + 'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES.' + 'EXTREME_INSTANCES'));
30902      END_REPEAT;
30903      REPEAT i := 1 TO HIINDEX(ii_ei);
30904         sdiir := sdiir + bag_to_set(USEDIN(ii_ei[i], 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT.' + 'INSPECTED_INSTANCES'));
30905      END_REPEAT;
30906      REPEAT i := 1 TO HIINDEX(sdiir);
30907         sdqr := sdqr + QUERY (i1 <* bag_to_set(USEDIN(sdiir[i].inspection_result, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN TYPEOF(i1)));
30908      END_REPEAT;
30909      REPEAT i := 1 TO HIINDEX(sdqr);
30910         sdisr := sdisr + bag_to_set(USEDIN(sdqr[i], 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.' + 'REP_2'));
30911      END_REPEAT;
30912      REPEAT i := 1 TO HIINDEX(sdisr);
30913         results := results + sdisr[i].rep_1;
30914      END_REPEAT;
30915      RETURN (results);
30916END_FUNCTION;
30917
30918-- IN AP242
30919FUNCTION remove_first
30920      (alist : LIST [0:?] OF GENERIC : GEN ) : LIST [0:?] OF GENERIC : GEN;
30921   LOCAL
30922      blist : LIST OF GENERIC : GEN := alist;
30923   END_LOCAL;
30924      IF SIZEOF(blist) > 0 THEN
30925         REMOVE( blist, 1 );
30926      END_IF;
30927      RETURN (blist);
30928END_FUNCTION;
30929
30930-- IN AP242
30931FUNCTION repackage
30932      (tspace : tuple_space;
30933       repckg : repackage_options ) : tuple_space;
30934      CASE repckg OF
30935         ro_nochange :
30936               RETURN (tspace);
30937         ro_wrap_as_tuple :
30938               RETURN (one_tuples_of(tspace));
30939         ro_unwrap_tuple :
30940               RETURN (factor1(tspace));
30941      OTHERWISE :
30942            RETURN (?);
30943      END_CASE;
30944END_FUNCTION;
30945
30946-- DIFF IN AP214
30947-- IN AP214/AP242
30948FUNCTION representation_of_link
30949      (link : kinematic_link ) : kinematic_link_representation;
30950      RETURN (?);
30951END_FUNCTION;
30952
30953-- IN AP214
30954FUNCTION representations_mapped_into
30955      (rep : representation ) : SET OF representation;
30956   LOCAL
30957      results : SET OF representation := [];
30958      rm : SET OF representation_map;
30959      mi : SET OF mapped_item := [];
30960   END_LOCAL;
30961      rm := bag_to_set(USEDIN(rep, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
30962      REPEAT i := 1 TO HIINDEX(rm);
30963         mi := mi + rm[i].map_usage;
30964      END_REPEAT;
30965      REPEAT j := 1 TO HIINDEX(mi);
30966         results := results + USEDIN(mi[j], 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS');
30967      END_REPEAT;
30968      RETURN (results);
30969END_FUNCTION;
30970
30971-- DIFF IN AP214
30972-- DIFF IN AP203e2
30973FUNCTION scalar_times_vector
30974      (scalar : REAL;
30975       vec : vector_or_direction ) : vector;
30976   LOCAL
30977      v : direction;
30978      mag : REAL;
30979      result : vector;
30980   END_LOCAL;
30981      IF NOT EXISTS(scalar) OR NOT EXISTS(vec) THEN
30982         RETURN (?);
30983      ELSE
30984         IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(vec) THEN
30985            v := dummy_gri || direction(vec\vector.orientation.direction_ratios);
30986            mag := scalar * vec\vector.magnitude;
30987         ELSE
30988            v := dummy_gri || direction(vec.direction_ratios);
30989            mag := scalar;
30990         END_IF;
30991         IF mag < 0.0 THEN
30992            REPEAT i := 1 TO SIZEOF(v.direction_ratios);
30993               v.direction_ratios[i] := -v.direction_ratios[i];
30994            END_REPEAT;
30995            mag := -mag;
30996         END_IF;
30997         result := dummy_gri || vector(normalise(v), mag);
30998      END_IF;
30999      RETURN (result);
31000END_FUNCTION;
31001
31002FUNCTION second_proj_axis
31003      (z_axis : direction;
31004       x_axis : direction;
31005       arg : direction ) : direction;
31006   LOCAL
31007      y_axis : vector;
31008      v : direction;
31009      temp : vector;
31010   END_LOCAL;
31011      IF NOT EXISTS(arg) THEN
31012         v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
31013      ELSE
31014         v := arg;
31015      END_IF;
31016      temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
31017      y_axis := vector_difference(v, temp);
31018      temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
31019      y_axis := vector_difference(y_axis, temp);
31020      y_axis := normalise(y_axis);
31021      RETURN (y_axis.orientation);
31022END_FUNCTION;
31023
31024FUNCTION set_of_topology_reversed
31025      (a_set : set_of_reversible_topology_item ) : set_of_reversible_topology_item;
31026   LOCAL
31027      the_reverse : set_of_reversible_topology_item;
31028   END_LOCAL;
31029      the_reverse := [];
31030      REPEAT i := 1 TO SIZEOF(a_set);
31031         the_reverse := the_reverse + topology_reversed(a_set[i]);
31032      END_REPEAT;
31033      RETURN (the_reverse);
31034END_FUNCTION;
31035
31036-- IN AP242
31037FUNCTION shape_of_array
31038      (func : maths_function ) : LIST [0:?] OF positive_integer;
31039   LOCAL
31040      tspace : tuple_space;
31041      temp : maths_space;
31042      result : LIST OF positive_integer := [];
31043   END_LOCAL;
31044      IF schema_prefix + 'EXPLICIT_TABLE_FUNCTION' IN TYPEOF(func) THEN
31045         RETURN (func\explicit_table_function.shape);
31046      END_IF;
31047      tspace := func.domain;
31048      IF (space_dimension(tspace) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN TYPEOF(factor1(tspace))) THEN
31049         tspace := factor1(tspace);
31050      END_IF;
31051      REPEAT i := 1 TO space_dimension(tspace);
31052         temp := factor_space(tspace, i);
31053         IF NOT (schema_prefix + 'FINITE_INTEGER_INTERVAL' IN TYPEOF(temp)) THEN
31054            RETURN (?);
31055         END_IF;
31056         INSERT( result, temp\finite_integer_interval.size, i - 1 );
31057      END_REPEAT;
31058      RETURN (result);
31059END_FUNCTION;
31060
31061FUNCTION shell_reversed
31062      (a_shell : shell ) : shell;
31063      IF 'STEP_MERGED_CAD_SCHEMA.OPEN_SHELL' IN TYPEOF(a_shell) THEN
31064         RETURN (open_shell_reversed(a_shell));
31065      ELSE
31066         IF 'STEP_MERGED_CAD_SCHEMA.CLOSED_SHELL' IN TYPEOF(a_shell) THEN
31067            RETURN (closed_shell_reversed(a_shell));
31068         ELSE
31069            RETURN (?);
31070         END_IF;
31071      END_IF;
31072END_FUNCTION;
31073
31074-- IN AP242
31075FUNCTION simplify_function_application
31076      (expr : function_application ) : maths_value;
31077      FUNCTION ctmv
31078         (x : GENERIC : G ) : maths_value;
31079         RETURN (convert_to_maths_value(x));
31080      END_FUNCTION;
31081      PROCEDURE parts
31082         (c : complex_number_literal;
31083          VAR x : REAL;
31084          VAR y : REAL );
31085         x := c.real_part;
31086         y := c.imag_part;
31087      END_PROCEDURE;
31088      FUNCTION makec
31089         (x : REAL;
31090          y : REAL ) : complex_number_literal;
31091         RETURN (make_complex_number_literal(x, y));
31092      END_FUNCTION;
31093      FUNCTION good_t
31094         (v : maths_value;
31095          tn : STRING ) : BOOLEAN;
31096      LOCAL
31097         tpl : LIST OF maths_value;
31098      END_LOCAL;
31099         IF 'LIST' IN TYPEOF(v) THEN
31100            tpl := v;
31101            REPEAT i := 1 TO SIZEOF(tpl);
31102               IF NOT (tn IN TYPEOF(tpl[i])) THEN
31103                  RETURN (FALSE);
31104               END_IF;
31105            END_REPEAT;
31106            RETURN (TRUE);
31107         END_IF;
31108         RETURN (FALSE);
31109      END_FUNCTION;
31110   CONSTANT
31111      cnlit : STRING := schema_prefix + 'COMPLEX_NUMBER_LITERAL';
31112   END_CONSTANT;
31113   LOCAL
31114      types : SET OF STRING := stripped_typeof(expr.func);
31115      ef_val : elementary_function_enumerators;
31116      is_elementary : BOOLEAN := FALSE;
31117      v : maths_value;
31118      v1 : maths_value;
31119      v2 : maths_value;
31120      v3 : maths_value;
31121      vlist : LIST OF maths_value := [];
31122      gexpr : generic_expression;
31123      pairs : SET [1:?] OF LIST [2:2] OF maths_value;
31124      boo : BOOLEAN;
31125      lgc : LOGICAL;
31126      cum : LOGICAL;
31127      j : INTEGER;
31128      k : INTEGER;
31129      n : INTEGER;
31130      p : REAL;
31131      q : REAL;
31132      r : REAL;
31133      s : REAL;
31134      T : REAL;
31135      u : REAL;
31136      str : STRING;
31137      st2 : STRING;
31138      bin : BINARY;
31139      bi2 : BINARY;
31140      tpl : LIST OF maths_value;
31141      tp2 : LIST OF maths_value;
31142      mem : SET OF maths_value := [];
31143   END_LOCAL;
31144      REPEAT i := 1 TO SIZEOF(expr.arguments);
31145         v := simplify_maths_value(expr.arguments[i]);
31146         INSERT( vlist, v, i - 1 );
31147      END_REPEAT;
31148      IF SIZEOF(vlist) >= 1 THEN
31149         v1 := vlist[1];
31150      END_IF;
31151      IF SIZEOF(vlist) >= 2 THEN
31152         v2 := vlist[2];
31153      END_IF;
31154      IF SIZEOF(vlist) >= 3 THEN
31155         v3 := vlist[3];
31156      END_IF;
31157      IF 'ELEMENTARY_FUNCTION_ENUMERATORS' IN types THEN
31158         ef_val := expr.func;
31159         is_elementary := TRUE;
31160      END_IF;
31161      IF 'ELEMENTARY_FUNCTION' IN types THEN
31162         ef_val := expr.func\elementary_function.func_id;
31163         is_elementary := TRUE;
31164      END_IF;
31165      IF is_elementary THEN
31166         CASE ef_val OF
31167            ef_and :
31168                  BEGIN
31169                     cum := TRUE;
31170                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31171                        IF 'LOGICAL' IN TYPEOF(vlist[i]) THEN
31172                           lgc := vlist[i];
31173                           cum := cum AND lgc;
31174                           IF lgc = FALSE THEN
31175                              RETURN (ctmv(FALSE));
31176                           END_IF;
31177                           REMOVE( vlist, i );
31178                        END_IF;
31179                     END_REPEAT;
31180                     IF SIZEOF(vlist) = 0 THEN
31181                        RETURN (ctmv(cum));
31182                     END_IF;
31183                     IF cum <> TRUE THEN
31184                        INSERT( vlist, ctmv(cum), 0 );
31185                     END_IF;
31186                     IF SIZEOF(vlist) = 1 THEN
31187                        RETURN (vlist[1]);
31188                     END_IF;
31189                  END;
31190            ef_or :
31191                  BEGIN
31192                     cum := FALSE;
31193                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31194                        IF 'LOGICAL' IN TYPEOF(vlist[i]) THEN
31195                           lgc := vlist[i];
31196                           cum := cum OR lgc;
31197                           IF lgc = TRUE THEN
31198                              RETURN (ctmv(TRUE));
31199                           END_IF;
31200                           REMOVE( vlist, i );
31201                        END_IF;
31202                     END_REPEAT;
31203                     IF SIZEOF(vlist) = 0 THEN
31204                        RETURN (ctmv(cum));
31205                     END_IF;
31206                     IF cum <> FALSE THEN
31207                        INSERT( vlist, ctmv(cum), 0 );
31208                     END_IF;
31209                     IF SIZEOF(vlist) = 1 THEN
31210                        RETURN (vlist[1]);
31211                     END_IF;
31212                  END;
31213            ef_not :
31214                  IF 'LOGICAL' IN TYPEOF(v1) THEN
31215                     lgc := v1;
31216                     RETURN (ctmv(NOT lgc));
31217                  END_IF;
31218            ef_xor :
31219                  BEGIN
31220                     IF 'LOGICAL' IN TYPEOF(v1) THEN
31221                        lgc := v1;
31222                        IF 'LOGICAL' IN TYPEOF(v2) THEN
31223                           cum := v2;
31224                           RETURN (ctmv(lgc XOR cum));
31225                        ELSE
31226                           IF lgc = FALSE THEN
31227                              RETURN (ctmv(v2));
31228                           ELSE
31229                              IF lgc = UNKNOWN THEN
31230                                 RETURN (ctmv(UNKNOWN));
31231                              ELSE
31232                                 RETURN (make_function_application(ef_not, [ v2 ]));
31233                              END_IF;
31234                           END_IF;
31235                        END_IF;
31236                     ELSE
31237                        IF 'LOGICAL' IN TYPEOF(v2) THEN
31238                           lgc := v2;
31239                           IF lgc = FALSE THEN
31240                              RETURN (ctmv(v1));
31241                           ELSE
31242                              IF lgc = UNKNOWN THEN
31243                                 RETURN (ctmv(UNKNOWN));
31244                              ELSE
31245                                 RETURN (make_function_application(ef_not, [ v1 ]));
31246                              END_IF;
31247                           END_IF;
31248                        END_IF;
31249                     END_IF;
31250                  END;
31251            ef_negate_i :
31252                  IF 'INTEGER' IN TYPEOF(v1) THEN
31253                     j := v1;
31254                     RETURN (ctmv(-j));
31255                  END_IF;
31256            ef_add_i :
31257                  BEGIN
31258                     j := 0;
31259                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31260                        IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
31261                           k := vlist[i];
31262                           j := j + k;
31263                           REMOVE( vlist, i );
31264                        END_IF;
31265                     END_REPEAT;
31266                     IF SIZEOF(vlist) = 0 THEN
31267                        RETURN (ctmv(j));
31268                     END_IF;
31269                     IF j <> 0 THEN
31270                        INSERT( vlist, ctmv(j), 0 );
31271                     END_IF;
31272                     IF SIZEOF(vlist) = 1 THEN
31273                        RETURN (vlist[1]);
31274                     END_IF;
31275                  END;
31276            ef_subtract_i :
31277                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31278                     j := v1;
31279                     k := v2;
31280                     RETURN (ctmv(j - k));
31281                  END_IF;
31282            ef_multiply_i :
31283                  BEGIN
31284                     j := 1;
31285                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31286                        IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
31287                           k := vlist[i];
31288                           j := j * k;
31289                           REMOVE( vlist, i );
31290                        END_IF;
31291                     END_REPEAT;
31292                     IF SIZEOF(vlist) = 0 THEN
31293                        RETURN (ctmv(j));
31294                     END_IF;
31295                     IF j <> 1 THEN
31296                        INSERT( vlist, ctmv(j), 0 );
31297                     END_IF;
31298                     IF SIZEOF(vlist) = 1 THEN
31299                        RETURN (vlist[1]);
31300                     END_IF;
31301                  END;
31302            ef_divide_i :
31303                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31304                     j := v1;
31305                     k := v2;
31306                     RETURN (ctmv(j DIV k));
31307                  END_IF;
31308            ef_mod_i :
31309                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31310                     j := v1;
31311                     k := v2;
31312                     RETURN (ctmv(j MOD k));
31313                  END_IF;
31314            ef_exponentiate_i :
31315                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31316                     j := v1;
31317                     k := v2;
31318                     n := 1;
31319                     REPEAT i := 1 TO ABS(k);
31320                        n := n * j;
31321                     END_REPEAT;
31322                     IF k < 0 THEN
31323                        n := 1 DIV n;
31324                     END_IF;
31325                     RETURN (ctmv(n));
31326                  END_IF;
31327            ef_eq_i :
31328                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31329                     j := v1;
31330                     k := v2;
31331                     RETURN (ctmv(j = k));
31332                  END_IF;
31333            ef_ne_i :
31334                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31335                     j := v1;
31336                     k := v2;
31337                     RETURN (ctmv(j <> k));
31338                  END_IF;
31339            ef_gt_i :
31340                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31341                     j := v1;
31342                     k := v2;
31343                     RETURN (ctmv(j > k));
31344                  END_IF;
31345            ef_lt_i :
31346                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31347                     j := v1;
31348                     k := v2;
31349                     RETURN (ctmv(j < k));
31350                  END_IF;
31351            ef_ge_i :
31352                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31353                     j := v1;
31354                     k := v2;
31355                     RETURN (ctmv(j >= k));
31356                  END_IF;
31357            ef_le_i :
31358                  IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31359                     j := v1;
31360                     k := v2;
31361                     RETURN (ctmv(j <= k));
31362                  END_IF;
31363            ef_abs_i :
31364                  IF 'INTEGER' IN TYPEOF(v1) THEN
31365                     j := v1;
31366                     RETURN (ctmv(ABS(j)));
31367                  END_IF;
31368            ef_max_i :
31369                  BEGIN
31370                     boo := FALSE;
31371                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31372                        IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
31373                           IF boo THEN
31374                              k := vlist[i];
31375                              IF k > j THEN
31376                                 j := k;
31377                              END_IF;
31378                           ELSE
31379                              j := vlist[i];
31380                              boo := TRUE;
31381                           END_IF;
31382                           REMOVE( vlist, i );
31383                        END_IF;
31384                     END_REPEAT;
31385                     IF SIZEOF(vlist) = 0 THEN
31386                        RETURN (ctmv(j));
31387                     END_IF;
31388                     IF boo THEN
31389                        INSERT( vlist, ctmv(j), 0 );
31390                     END_IF;
31391                     IF SIZEOF(vlist) = 1 THEN
31392                        RETURN (vlist[1]);
31393                     END_IF;
31394                  END;
31395            ef_min_i :
31396                  BEGIN
31397                     boo := FALSE;
31398                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31399                        IF 'INTEGER' IN TYPEOF(vlist[i]) THEN
31400                           IF boo THEN
31401                              k := vlist[i];
31402                              IF k < j THEN
31403                                 j := k;
31404                              END_IF;
31405                           ELSE
31406                              j := vlist[i];
31407                              boo := TRUE;
31408                           END_IF;
31409                           REMOVE( vlist, i );
31410                        END_IF;
31411                     END_REPEAT;
31412                     IF SIZEOF(vlist) = 0 THEN
31413                        RETURN (ctmv(j));
31414                     END_IF;
31415                     IF boo THEN
31416                        INSERT( vlist, ctmv(j), 0 );
31417                     END_IF;
31418                     IF SIZEOF(vlist) = 1 THEN
31419                        RETURN (vlist[1]);
31420                     END_IF;
31421                  END;
31422            ef_negate_r :
31423                  IF 'REAL' IN TYPEOF(v1) THEN
31424                     r := v1;
31425                     RETURN (ctmv(-r));
31426                  END_IF;
31427            ef_reciprocal_r :
31428                  IF 'REAL' IN TYPEOF(v1) THEN
31429                     r := v1;
31430                     RETURN (ctmv(1.0 / r));
31431                  END_IF;
31432            ef_add_r :
31433                  BEGIN
31434                     r := 0.0;
31435                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31436                        IF 'REAL' IN TYPEOF(vlist[i]) THEN
31437                           s := vlist[i];
31438                           r := r + s;
31439                           REMOVE( vlist, i );
31440                        END_IF;
31441                     END_REPEAT;
31442                     IF SIZEOF(vlist) = 0 THEN
31443                        RETURN (ctmv(r));
31444                     END_IF;
31445                     IF r <> 0.0 THEN
31446                        INSERT( vlist, ctmv(r), 0 );
31447                     END_IF;
31448                     IF SIZEOF(vlist) = 1 THEN
31449                        RETURN (vlist[1]);
31450                     END_IF;
31451                  END;
31452            ef_subtract_r :
31453                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31454                     r := v1;
31455                     s := v2;
31456                     RETURN (ctmv(r - s));
31457                  END_IF;
31458            ef_multiply_r :
31459                  BEGIN
31460                     r := 1.0;
31461                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31462                        IF 'REAL' IN TYPEOF(vlist[i]) THEN
31463                           s := vlist[i];
31464                           r := r * s;
31465                           REMOVE( vlist, i );
31466                        END_IF;
31467                     END_REPEAT;
31468                     IF SIZEOF(vlist) = 0 THEN
31469                        RETURN (ctmv(r));
31470                     END_IF;
31471                     IF r <> 1.0 THEN
31472                        INSERT( vlist, ctmv(r), 0 );
31473                     END_IF;
31474                     IF SIZEOF(vlist) = 1 THEN
31475                        RETURN (vlist[1]);
31476                     END_IF;
31477                  END;
31478            ef_divide_r :
31479                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31480                     r := v1;
31481                     s := v2;
31482                     RETURN (ctmv(r / s));
31483                  END_IF;
31484            ef_mod_r :
31485                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31486                     r := v1;
31487                     s := v2;
31488                     T := r / s;
31489                     j := T DIV 1;
31490                     IF (T < 0.0) AND (j <> T) THEN
31491                        j := j - 1;
31492                     END_IF;
31493                     RETURN (ctmv(r - j * s));
31494                  END_IF;
31495            ef_exponentiate_r :
31496                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31497                     r := v1;
31498                     s := v2;
31499                     RETURN (ctmv(r ** s));
31500                  END_IF;
31501            ef_exponentiate_ri :
31502                  IF ('REAL' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31503                     r := v1;
31504                     k := v2;
31505                     T := 1.0;
31506                     REPEAT i := 1 TO ABS(k);
31507                        T := T * r;
31508                     END_REPEAT;
31509                     IF k < 0 THEN
31510                        T := 1.0 / T;
31511                     END_IF;
31512                     RETURN (ctmv(T));
31513                  END_IF;
31514            ef_eq_r :
31515                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31516                     r := v1;
31517                     s := v2;
31518                     RETURN (ctmv(r = s));
31519                  END_IF;
31520            ef_ne_r :
31521                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31522                     r := v1;
31523                     s := v2;
31524                     RETURN (ctmv(r <> s));
31525                  END_IF;
31526            ef_gt_r :
31527                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31528                     r := v1;
31529                     s := v2;
31530                     RETURN (ctmv(r > s));
31531                  END_IF;
31532            ef_lt_r :
31533                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31534                     r := v1;
31535                     s := v2;
31536                     RETURN (ctmv(r < s));
31537                  END_IF;
31538            ef_ge_r :
31539                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31540                     r := v1;
31541                     s := v2;
31542                     RETURN (ctmv(r >= s));
31543                  END_IF;
31544            ef_le_r :
31545                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31546                     r := v1;
31547                     s := v2;
31548                     RETURN (ctmv(r <= s));
31549                  END_IF;
31550            ef_abs_r :
31551                  IF 'REAL' IN TYPEOF(v1) THEN
31552                     r := v1;
31553                     RETURN (ctmv(ABS(r)));
31554                  END_IF;
31555            ef_max_r :
31556                  BEGIN
31557                     boo := FALSE;
31558                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31559                        IF 'REAL' IN TYPEOF(vlist[i]) THEN
31560                           IF boo THEN
31561                              s := vlist[i];
31562                              IF s > r THEN
31563                                 r := s;
31564                              END_IF;
31565                           ELSE
31566                              r := vlist[i];
31567                              boo := TRUE;
31568                           END_IF;
31569                           REMOVE( vlist, i );
31570                        END_IF;
31571                     END_REPEAT;
31572                     IF SIZEOF(vlist) = 0 THEN
31573                        RETURN (ctmv(r));
31574                     END_IF;
31575                     IF boo THEN
31576                        INSERT( vlist, ctmv(r), 0 );
31577                     END_IF;
31578                     IF SIZEOF(vlist) = 1 THEN
31579                        RETURN (vlist[1]);
31580                     END_IF;
31581                  END;
31582            ef_min_r :
31583                  BEGIN
31584                     boo := FALSE;
31585                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31586                        IF 'REAL' IN TYPEOF(vlist[i]) THEN
31587                           IF boo THEN
31588                              s := vlist[i];
31589                              IF s < r THEN
31590                                 r := s;
31591                              END_IF;
31592                           ELSE
31593                              r := vlist[i];
31594                              boo := TRUE;
31595                           END_IF;
31596                           REMOVE( vlist, i );
31597                        END_IF;
31598                     END_REPEAT;
31599                     IF SIZEOF(vlist) = 0 THEN
31600                        RETURN (ctmv(r));
31601                     END_IF;
31602                     IF boo THEN
31603                        INSERT( vlist, ctmv(r), 0 );
31604                     END_IF;
31605                     IF SIZEOF(vlist) = 1 THEN
31606                        RETURN (vlist[1]);
31607                     END_IF;
31608                  END;
31609            ef_acos_r :
31610                  IF 'REAL' IN TYPEOF(v1) THEN
31611                     r := v1;
31612                     RETURN (ctmv(ACOS(r)));
31613                  END_IF;
31614            ef_asin_r :
31615                  IF 'REAL' IN TYPEOF(v1) THEN
31616                     r := v1;
31617                     RETURN (ctmv(ASIN(r)));
31618                  END_IF;
31619            ef_atan2_r :
31620                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31621                     r := v1;
31622                     s := v2;
31623                     RETURN (ctmv(atan2(r, s)));
31624                  END_IF;
31625            ef_cos_r :
31626                  IF 'REAL' IN TYPEOF(v1) THEN
31627                     r := v1;
31628                     RETURN (ctmv(cos(r)));
31629                  END_IF;
31630            ef_exp_r :
31631                  IF 'REAL' IN TYPEOF(v1) THEN
31632                     r := v1;
31633                     RETURN (ctmv(EXP(r)));
31634                  END_IF;
31635            ef_ln_r :
31636                  IF 'REAL' IN TYPEOF(v1) THEN
31637                     r := v1;
31638                     RETURN (ctmv(LOG(r)));
31639                  END_IF;
31640            ef_log2_r :
31641                  IF 'REAL' IN TYPEOF(v1) THEN
31642                     r := v1;
31643                     RETURN (ctmv(LOG2(r)));
31644                  END_IF;
31645            ef_log10_r :
31646                  IF 'REAL' IN TYPEOF(v1) THEN
31647                     r := v1;
31648                     RETURN (ctmv(LOG10(r)));
31649                  END_IF;
31650            ef_sin_r :
31651                  IF 'REAL' IN TYPEOF(v1) THEN
31652                     r := v1;
31653                     RETURN (ctmv(sin(r)));
31654                  END_IF;
31655            ef_sqrt_r :
31656                  IF 'REAL' IN TYPEOF(v1) THEN
31657                     r := v1;
31658                     RETURN (ctmv(SQRT(r)));
31659                  END_IF;
31660            ef_tan_r :
31661                  IF 'REAL' IN TYPEOF(v1) THEN
31662                     r := v1;
31663                     RETURN (ctmv(TAN(r)));
31664                  END_IF;
31665            ef_form_c :
31666                  IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2)) THEN
31667                     r := v1;
31668                     s := v2;
31669                     RETURN (makec(r, s));
31670                  END_IF;
31671            ef_rpart_c :
31672                  IF cnlit IN TYPEOF(v1) THEN
31673                     RETURN (ctmv(v1\complex_number_literal.real_part));
31674                  END_IF;
31675            ef_ipart_c :
31676                  IF cnlit IN TYPEOF(v1) THEN
31677                     RETURN (ctmv(v1\complex_number_literal.imag_part));
31678                  END_IF;
31679            ef_negate_c :
31680                  IF cnlit IN TYPEOF(v1) THEN
31681                     parts( v1, p, q );
31682                     RETURN (makec(-p, -q));
31683                  END_IF;
31684            ef_reciprocal_c :
31685                  IF cnlit IN TYPEOF(v1) THEN
31686                     parts( v1, p, q );
31687                     T := p * p + q * q;
31688                     RETURN (makec(p / T, -q / T));
31689                  END_IF;
31690            ef_add_c :
31691                  BEGIN
31692                     p := 0.0;
31693                     q := 0.0;
31694                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31695                        IF cnlit IN TYPEOF(vlist[i]) THEN
31696                           parts( vlist[i], r, s );
31697                           p := p + r;
31698                           q := q + s;
31699                           REMOVE( vlist, i );
31700                        END_IF;
31701                     END_REPEAT;
31702                     IF SIZEOF(vlist) = 0 THEN
31703                        RETURN (makec(p, q));
31704                     END_IF;
31705                     IF p * p + q * q <> 0.0 THEN
31706                        INSERT( vlist, makec(p, q), 0 );
31707                     END_IF;
31708                     IF SIZEOF(vlist) = 1 THEN
31709                        RETURN (vlist[1]);
31710                     END_IF;
31711                  END;
31712            ef_subtract_c :
31713                  IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
31714                     parts( v1, p, q );
31715                     parts( v2, r, s );
31716                     RETURN (makec(p - r, q - s));
31717                  END_IF;
31718            ef_multiply_c :
31719                  BEGIN
31720                     p := 1.0;
31721                     q := 0.0;
31722                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31723                        IF cnlit IN TYPEOF(vlist[i]) THEN
31724                           parts( vlist[i], r, s );
31725                           p := p * r - q * s;
31726                           q := p * s + q * r;
31727                           REMOVE( vlist, i );
31728                        END_IF;
31729                     END_REPEAT;
31730                     IF SIZEOF(vlist) = 0 THEN
31731                        RETURN (makec(p, q));
31732                     END_IF;
31733                     IF (p <> 1.0) OR (q <> 0.0) THEN
31734                        INSERT( vlist, makec(p, q), 0 );
31735                     END_IF;
31736                     IF SIZEOF(vlist) = 1 THEN
31737                        RETURN (vlist[1]);
31738                     END_IF;
31739                  END;
31740            ef_divide_c :
31741                  IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
31742                     parts( v1, p, q );
31743                     parts( v2, r, s );
31744                     T := r * r + s * s;
31745                     RETURN (makec((p * r + q * s) / T, (q * r - p * s) / T));
31746                  END_IF;
31747            ef_exponentiate_c :
31748                  IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
31749                     parts( v1, p, q );
31750                     parts( v2, r, s );
31751                     T := 0.500000 * LOG((p * p + q * q));
31752                     u := atan2(q, p);
31753                     p := r * T - s * u;
31754                     q := r * u + s * T;
31755                     r := EXP(p);
31756                     RETURN (makec(r * cos(q), r * sin(q)));
31757                  END_IF;
31758            ef_exponentiate_ci :
31759                  IF (cnlit IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31760                     parts( v1, p, q );
31761                     k := v2;
31762                     r := 1.0;
31763                     s := 0.0;
31764                     REPEAT i := 1 TO ABS(k);
31765                        r := p * r - q * s;
31766                        s := p * s + q * r;
31767                     END_REPEAT;
31768                     IF k < 0 THEN
31769                        T := r * r + s * s;
31770                        r := r / T;
31771                        s := -s / T;
31772                     END_IF;
31773                     RETURN (makec(r, s));
31774                  END_IF;
31775            ef_eq_c :
31776                  IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
31777                     parts( v1, p, q );
31778                     parts( v2, r, s );
31779                     RETURN (ctmv((p = r) AND (q = s)));
31780                  END_IF;
31781            ef_ne_c :
31782                  IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2)) THEN
31783                     parts( v1, p, q );
31784                     parts( v2, r, s );
31785                     RETURN (ctmv((p <> r) OR (q <> s)));
31786                  END_IF;
31787            ef_conjugate_c :
31788                  IF cnlit IN TYPEOF(v1) THEN
31789                     parts( v1, p, q );
31790                     RETURN (makec(p, -q));
31791                  END_IF;
31792            ef_abs_c :
31793                  IF cnlit IN TYPEOF(v1) THEN
31794                     parts( v1, p, q );
31795                     RETURN (ctmv(SQRT(p * p + q * q)));
31796                  END_IF;
31797            ef_arg_c :
31798                  IF cnlit IN TYPEOF(v1) THEN
31799                     parts( v1, p, q );
31800                     RETURN (ctmv(atan2(q, p)));
31801                  END_IF;
31802            ef_cos_c :
31803                  IF cnlit IN TYPEOF(v1) THEN
31804                     parts( v1, p, q );
31805                     T := 0.500000 * EXP(-q);
31806                     u := 0.500000 * EXP(q);
31807                     RETURN (makec((T + u) * cos(p), (T - u) * sin(p)));
31808                  END_IF;
31809            ef_exp_c :
31810                  IF cnlit IN TYPEOF(v1) THEN
31811                     parts( v1, p, q );
31812                     RETURN (makec(EXP(p) * cos(q), EXP(p) * sin(q)));
31813                  END_IF;
31814            ef_ln_c :
31815                  IF cnlit IN TYPEOF(v1) THEN
31816                     parts( v1, p, q );
31817                     RETURN (makec(0.500000 * LOG((p * p + q * q)), atan2(q, p)));
31818                  END_IF;
31819            ef_sin_c :
31820                  IF cnlit IN TYPEOF(v1) THEN
31821                     parts( v1, p, q );
31822                     T := 0.500000 * EXP(-q);
31823                     u := 0.500000 * EXP(q);
31824                     RETURN (makec((T + u) * sin(p), (u - T) * cos(p)));
31825                  END_IF;
31826            ef_sqrt_c :
31827                  IF cnlit IN TYPEOF(v1) THEN
31828                     parts( v1, p, q );
31829                     T := SQRT(SQRT(p * p + q * q));
31830                     u := 0.500000 * atan2(q, p);
31831                     RETURN (makec(T * cos(u), T * sin(u)));
31832                  END_IF;
31833            ef_tan_c :
31834                  IF cnlit IN TYPEOF(v1) THEN
31835                     parts( v1, p, q );
31836                     T := EXP(2.0 * q) + EXP(-2.0 * q) + 2.0 * cos(2.0 * p);
31837                     RETURN (makec(2.0 * sin(2.0 * p) / T, (EXP(-2.0 * q) - EXP(2.0 * q)) / T));
31838                  END_IF;
31839            ef_subscript_s :
31840                  IF ('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31841                     str := v1;
31842                     k := v2;
31843                     RETURN (ctmv(str[k]));
31844                  END_IF;
31845            ef_eq_s :
31846                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31847                     str := v1;
31848                     st2 := v2;
31849                     RETURN (ctmv(str = st2));
31850                  END_IF;
31851            ef_ne_s :
31852                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31853                     str := v1;
31854                     st2 := v2;
31855                     RETURN (ctmv(str <> st2));
31856                  END_IF;
31857            ef_gt_s :
31858                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31859                     str := v1;
31860                     st2 := v2;
31861                     RETURN (ctmv(str > st2));
31862                  END_IF;
31863            ef_lt_s :
31864                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31865                     str := v1;
31866                     st2 := v2;
31867                     RETURN (ctmv(str < st2));
31868                  END_IF;
31869            ef_ge_s :
31870                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31871                     str := v1;
31872                     st2 := v2;
31873                     RETURN (ctmv(str >= st2));
31874                  END_IF;
31875            ef_le_s :
31876                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31877                     str := v1;
31878                     st2 := v2;
31879                     RETURN (ctmv(str <= st2));
31880                  END_IF;
31881            ef_subsequence_s :
31882                  IF (('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))) AND ('INTEGER' IN TYPEOF(v3)) THEN
31883                     str := v1;
31884                     j := v2;
31885                     k := v3;
31886                     RETURN (ctmv(str[ j : k ]));
31887                  END_IF;
31888            ef_concat_s :
31889                  BEGIN
31890                     str := '';
31891                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31892                        IF 'STRING' IN TYPEOF(vlist[i]) THEN
31893                           st2 := vlist[i];
31894                           str := str + st2;
31895                           REMOVE( vlist, i );
31896                        ELSE
31897                           IF str <> '' THEN
31898                              INSERT( vlist, ctmv(str), i );
31899                              str := '';
31900                           END_IF;
31901                        END_IF;
31902                     END_REPEAT;
31903                     IF SIZEOF(vlist) = 0 THEN
31904                        RETURN (ctmv(str));
31905                     END_IF;
31906                     IF str <> '' THEN
31907                        INSERT( vlist, ctmv(str), 0 );
31908                     END_IF;
31909                     IF SIZEOF(vlist) = 1 THEN
31910                        RETURN (vlist[1]);
31911                     END_IF;
31912                  END;
31913            ef_size_s :
31914                  IF 'STRING' IN TYPEOF(v1) THEN
31915                     str := v1;
31916                     RETURN (ctmv(LENGTH(str)));
31917                  END_IF;
31918            ef_format :
31919                  IF ('NUMBER' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31920                     RETURN (ctmv(FORMAT(v1, v2)));
31921                  END_IF;
31922            ef_value :
31923                  IF 'STRING' IN TYPEOF(v1) THEN
31924                     str := v1;
31925                     RETURN (ctmv(VALUE(str)));
31926                  END_IF;
31927            ef_like :
31928                  IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2)) THEN
31929                     RETURN (ctmv(v1 LIKE v2));
31930                  END_IF;
31931            ef_subscript_b :
31932                  IF ('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
31933                     bin := v1;
31934                     k := v2;
31935                     RETURN (ctmv(bin[k]));
31936                  END_IF;
31937            ef_eq_b :
31938                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31939                     bin := v1;
31940                     bi2 := v2;
31941                     RETURN (ctmv(bin = bi2));
31942                  END_IF;
31943            ef_ne_b :
31944                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31945                     bin := v1;
31946                     bi2 := v2;
31947                     RETURN (ctmv(bin <> bi2));
31948                  END_IF;
31949            ef_gt_b :
31950                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31951                     bin := v1;
31952                     bi2 := v2;
31953                     RETURN (ctmv(bin > bi2));
31954                  END_IF;
31955            ef_lt_b :
31956                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31957                     bin := v1;
31958                     bi2 := v2;
31959                     RETURN (ctmv(bin < bi2));
31960                  END_IF;
31961            ef_ge_b :
31962                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31963                     bin := v1;
31964                     bi2 := v2;
31965                     RETURN (ctmv(bin >= bi2));
31966                  END_IF;
31967            ef_le_b :
31968                  IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2)) THEN
31969                     bin := v1;
31970                     bi2 := v2;
31971                     RETURN (ctmv(bin <= bi2));
31972                  END_IF;
31973            ef_subsequence_b :
31974                  IF (('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))) AND ('INTEGER' IN TYPEOF(v3)) THEN
31975                     bin := v1;
31976                     j := v2;
31977                     k := v3;
31978                     RETURN (ctmv(bin[ j : k ]));
31979                  END_IF;
31980            ef_concat_b :
31981                  BEGIN
31982                     boo := FALSE;
31983                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
31984                        IF 'BINARY' IN TYPEOF(vlist[i]) THEN
31985                           IF boo THEN
31986                              bi2 := vlist[i];
31987                              bin := bin + bi2;
31988                           ELSE
31989                              bin := vlist[i];
31990                              boo := TRUE;
31991                           END_IF;
31992                           REMOVE( vlist, i );
31993                        ELSE
31994                           IF boo THEN
31995                              INSERT( vlist, ctmv(bin), i );
31996                              boo := FALSE;
31997                           END_IF;
31998                        END_IF;
31999                     END_REPEAT;
32000                     IF SIZEOF(vlist) = 0 THEN
32001                        RETURN (ctmv(bin));
32002                     END_IF;
32003                     IF boo THEN
32004                        INSERT( vlist, ctmv(bin), 0 );
32005                     END_IF;
32006                     IF SIZEOF(vlist) = 1 THEN
32007                        RETURN (vlist[1]);
32008                     END_IF;
32009                  END;
32010            ef_size_b :
32011                  IF 'BINARY' IN TYPEOF(v1) THEN
32012                     bin := v1;
32013                     RETURN (ctmv(BLENGTH(bin)));
32014                  END_IF;
32015            ef_subscript_t :
32016                  IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
32017                     tpl := v1;
32018                     k := v2;
32019                     RETURN (ctmv(tpl[k]));
32020                  END_IF;
32021            ef_eq_t :
32022                  IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2)) THEN
32023                     lgc := equal_maths_values(v1, v2);
32024                     IF lgc <> UNKNOWN THEN
32025                        RETURN (ctmv(lgc));
32026                     END_IF;
32027                  END_IF;
32028            ef_ne_t :
32029                  IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2)) THEN
32030                     lgc := equal_maths_values(v1, v2);
32031                     IF lgc <> UNKNOWN THEN
32032                        RETURN (ctmv(NOT lgc));
32033                     END_IF;
32034                  END_IF;
32035            ef_concat_t :
32036                  BEGIN
32037                     tpl := [];
32038                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32039                        IF 'STRING' IN TYPEOF(vlist[i]) THEN
32040                           tp2 := vlist[i];
32041                           tpl := tpl + tp2;
32042                           REMOVE( vlist, i );
32043                        ELSE
32044                           IF SIZEOF(tpl) <> 0 THEN
32045                              INSERT( vlist, ctmv(tpl), i );
32046                              tpl := [];
32047                           END_IF;
32048                        END_IF;
32049                     END_REPEAT;
32050                     IF SIZEOF(vlist) = 0 THEN
32051                        RETURN (ctmv(tpl));
32052                     END_IF;
32053                     IF SIZEOF(tpl) <> 0 THEN
32054                        INSERT( vlist, ctmv(tpl), 0 );
32055                     END_IF;
32056                     IF SIZEOF(vlist) = 1 THEN
32057                        RETURN (vlist[1]);
32058                     END_IF;
32059                  END;
32060            ef_size_t :
32061                  IF 'LIST' IN TYPEOF(v1) THEN
32062                     tpl := v1;
32063                     RETURN (ctmv(SIZEOF(tpl)));
32064                  END_IF;
32065            ef_entuple :
32066                  RETURN (ctmv(vlist));
32067            ef_detuple :
32068                  IF 'LIST' IN TYPEOF(v1) THEN
32069                     tpl := v1;
32070                     RETURN (ctmv(tpl[1]));
32071                  END_IF;
32072            ef_insert :
32073                  IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v3)) THEN
32074                     tpl := v1;
32075                     k := v3;
32076                     INSERT( tpl, v2, k );
32077                     RETURN (ctmv(tpl));
32078                  END_IF;
32079            ef_remove :
32080                  IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) THEN
32081                     tpl := v1;
32082                     k := v2;
32083                     REMOVE( tpl, k );
32084                     RETURN (ctmv(tpl));
32085                  END_IF;
32086            ef_sum_it :
32087                  IF good_t(v1, 'INTEGER') THEN
32088                     tpl := v1;
32089                     j := 0;
32090                     REPEAT i := 1 TO SIZEOF(tpl);
32091                        j := j + tpl[i];
32092                     END_REPEAT;
32093                     RETURN (ctmv(j));
32094                  END_IF;
32095            ef_product_it :
32096                  IF good_t(v1, 'INTEGER') THEN
32097                     tpl := v1;
32098                     j := 1;
32099                     REPEAT i := 1 TO SIZEOF(tpl);
32100                        j := j * tpl[i];
32101                     END_REPEAT;
32102                     RETURN (ctmv(j));
32103                  END_IF;
32104            ef_add_it :
32105                  BEGIN
32106                     boo := FALSE;
32107                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32108                        IF good_t(vlist[i], 'INTEGER') THEN
32109                           IF NOT boo THEN
32110                              tpl := vlist[i];
32111                              boo := TRUE;
32112                           ELSE
32113                              tp2 := vlist[i];
32114                              IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32115                                 RETURN (?);
32116                              END_IF;
32117                              REPEAT l := 1 TO SIZEOF(tpl);
32118                                 tpl[j] := tpl[j] + tp2[j];
32119                              END_REPEAT;
32120                           END_IF;
32121                           REMOVE( vlist, i );
32122                        END_IF;
32123                     END_REPEAT;
32124                     IF SIZEOF(vlist) = 0 THEN
32125                        RETURN (ctmv(tpl));
32126                     END_IF;
32127                     IF boo THEN
32128                        INSERT( vlist, ctmv(tpl), 0 );
32129                     END_IF;
32130                     IF SIZEOF(vlist) = 1 THEN
32131                        RETURN (vlist[1]);
32132                     END_IF;
32133                  END;
32134            ef_subtract_it :
32135                  IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER') THEN
32136                     tpl := v1;
32137                     tp2 := v2;
32138                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32139                        RETURN (?);
32140                     END_IF;
32141                     REPEAT i := 1 TO SIZEOF(tpl);
32142                        tpl[i] := tpl[i] - tp2[i];
32143                     END_REPEAT;
32144                     RETURN (ctmv(tpl));
32145                  END_IF;
32146            ef_scalar_mult_it :
32147                  IF ('INTEGER' IN TYPEOF(v1)) AND good_t(v2, 'INTEGER') THEN
32148                     j := v1;
32149                     tpl := v2;
32150                     REPEAT i := 1 TO SIZEOF(tpl);
32151                        tpl[i] := j * tpl[i];
32152                     END_REPEAT;
32153                     RETURN (ctmv(tpl));
32154                  END_IF;
32155            ef_dot_prod_it :
32156                  IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER') THEN
32157                     tpl := v1;
32158                     tp2 := v2;
32159                     j := 0;
32160                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32161                        RETURN (?);
32162                     END_IF;
32163                     REPEAT i := 1 TO SIZEOF(tpl);
32164                        j := j + tpl[i] * tp2[i];
32165                     END_REPEAT;
32166                     RETURN (ctmv(j));
32167                  END_IF;
32168            ef_sum_rt :
32169                  IF good_t(v1, 'REAL') THEN
32170                     tpl := v1;
32171                     r := 0.0;
32172                     REPEAT i := 1 TO SIZEOF(tpl);
32173                        r := r + tpl[i];
32174                     END_REPEAT;
32175                     RETURN (ctmv(r));
32176                  END_IF;
32177            ef_product_rt :
32178                  IF good_t(v1, 'REAL') THEN
32179                     tpl := v1;
32180                     r := 1.0;
32181                     REPEAT i := 1 TO SIZEOF(tpl);
32182                        r := r * tpl[i];
32183                     END_REPEAT;
32184                     RETURN (ctmv(r));
32185                  END_IF;
32186            ef_add_rt :
32187                  BEGIN
32188                     boo := FALSE;
32189                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32190                        IF good_t(vlist[i], 'REAL') THEN
32191                           IF NOT boo THEN
32192                              tpl := vlist[i];
32193                              boo := TRUE;
32194                           ELSE
32195                              tp2 := vlist[i];
32196                              IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32197                                 RETURN (?);
32198                              END_IF;
32199                              REPEAT l := 1 TO SIZEOF(tpl);
32200                                 tpl[j] := tpl[j] + tp2[j];
32201                              END_REPEAT;
32202                           END_IF;
32203                           REMOVE( vlist, i );
32204                        END_IF;
32205                     END_REPEAT;
32206                     IF SIZEOF(vlist) = 0 THEN
32207                        RETURN (ctmv(tpl));
32208                     END_IF;
32209                     IF boo THEN
32210                        INSERT( vlist, ctmv(tpl), 0 );
32211                     END_IF;
32212                     IF SIZEOF(vlist) = 1 THEN
32213                        RETURN (vlist[1]);
32214                     END_IF;
32215                  END;
32216            ef_subtract_rt :
32217                  IF good_t(v1, 'REAL') AND good_t(v2, 'REAL') THEN
32218                     tpl := v1;
32219                     tp2 := v2;
32220                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32221                        RETURN (?);
32222                     END_IF;
32223                     REPEAT i := 1 TO SIZEOF(tpl);
32224                        tpl[i] := tpl[i] - tp2[i];
32225                     END_REPEAT;
32226                     RETURN (ctmv(tpl));
32227                  END_IF;
32228            ef_scalar_mult_rt :
32229                  IF ('REAL' IN TYPEOF(v1)) AND good_t(v2, 'REAL') THEN
32230                     r := v1;
32231                     tpl := v2;
32232                     REPEAT i := 1 TO SIZEOF(tpl);
32233                        tpl[i] := r * tpl[i];
32234                     END_REPEAT;
32235                     RETURN (ctmv(tpl));
32236                  END_IF;
32237            ef_dot_prod_rt :
32238                  IF good_t(v1, 'REAL') AND good_t(v2, 'REAL') THEN
32239                     tpl := v1;
32240                     tp2 := v2;
32241                     r := 0;
32242                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32243                        RETURN (?);
32244                     END_IF;
32245                     REPEAT i := 1 TO SIZEOF(tpl);
32246                        r := r + tpl[i] * tp2[i];
32247                     END_REPEAT;
32248                     RETURN (ctmv(r));
32249                  END_IF;
32250            ef_norm_rt :
32251                  IF good_t(v1, 'REAL') THEN
32252                     tpl := v1;
32253                     r := 0.0;
32254                     REPEAT i := 1 TO SIZEOF(tpl);
32255                        r := r + tpl[i] * tpl[i];
32256                     END_REPEAT;
32257                     RETURN (ctmv(SQRT(r)));
32258                  END_IF;
32259            ef_sum_ct :
32260                  IF good_t(v1, cnlit) THEN
32261                     tpl := v1;
32262                     p := 0.0;
32263                     q := 0.0;
32264                     REPEAT i := 1 TO SIZEOF(tpl);
32265                        parts( tpl[i], r, s );
32266                        p := p + r;
32267                        q := q + s;
32268                     END_REPEAT;
32269                     RETURN (makec(p, q));
32270                  END_IF;
32271            ef_product_ct :
32272                  IF good_t(v1, cnlit) THEN
32273                     tpl := v1;
32274                     p := 1.0;
32275                     q := 0.0;
32276                     REPEAT i := 1 TO SIZEOF(tpl);
32277                        parts( tpl[i], r, s );
32278                        p := p * r - q * s;
32279                        q := p * s + q * r;
32280                     END_REPEAT;
32281                     RETURN (makec(p, q));
32282                  END_IF;
32283            ef_add_ct :
32284                  BEGIN
32285                     boo := FALSE;
32286                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32287                        IF good_t(vlist[i], cnlit) THEN
32288                           IF NOT boo THEN
32289                              tpl := vlist[i];
32290                              boo := TRUE;
32291                           ELSE
32292                              tp2 := vlist[i];
32293                              IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32294                                 RETURN (?);
32295                              END_IF;
32296                              REPEAT l := 1 TO SIZEOF(tpl);
32297                                 parts( tpl[j], p, q );
32298                                 parts( tp2[j], r, s );
32299                                 tpl[j] := makec(p + r, q + s);
32300                              END_REPEAT;
32301                           END_IF;
32302                           REMOVE( vlist, i );
32303                        END_IF;
32304                     END_REPEAT;
32305                     IF SIZEOF(vlist) = 0 THEN
32306                        RETURN (ctmv(tpl));
32307                     END_IF;
32308                     IF boo THEN
32309                        INSERT( vlist, ctmv(tpl), 0 );
32310                     END_IF;
32311                     IF SIZEOF(vlist) = 1 THEN
32312                        RETURN (vlist[1]);
32313                     END_IF;
32314                  END;
32315            ef_subtract_ct :
32316                  IF good_t(v1, cnlit) AND good_t(v2, cnlit) THEN
32317                     tpl := v1;
32318                     tp2 := v2;
32319                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32320                        RETURN (?);
32321                     END_IF;
32322                     REPEAT i := 1 TO SIZEOF(tpl);
32323                        parts( tpl[i], p, q );
32324                        parts( tp2[i], r, s );
32325                        tpl[i] := makec(p - r, q - s);
32326                     END_REPEAT;
32327                     RETURN (ctmv(tpl));
32328                  END_IF;
32329            ef_scalar_mult_ct :
32330                  IF (cnlit IN TYPEOF(v1)) AND good_t(v2, cnlit) THEN
32331                     parts( v1, p, q );
32332                     tpl := v2;
32333                     REPEAT i := 1 TO SIZEOF(tpl);
32334                        parts( tpl[i], r, s );
32335                        tpl[i] := makec(p * r - q * s, p * s + q * r);
32336                     END_REPEAT;
32337                     RETURN (ctmv(tpl));
32338                  END_IF;
32339            ef_dot_prod_ct :
32340                  IF good_t(v1, cnlit) AND good_t(v2, cnlit) THEN
32341                     tpl := v1;
32342                     tp2 := v2;
32343                     T := 0.0;
32344                     u := 0.0;
32345                     IF SIZEOF(tpl) <> SIZEOF(tp2) THEN
32346                        RETURN (?);
32347                     END_IF;
32348                     REPEAT i := 1 TO SIZEOF(tpl);
32349                        parts( tpl[i], p, q );
32350                        parts( tp2[i], r, s );
32351                        T := T + p * r + q * s;
32352                        u := u + q * r - p * s;
32353                     END_REPEAT;
32354                     RETURN (makec(T, u));
32355                  END_IF;
32356            ef_norm_ct :
32357                  IF good_t(v1, cnlit) THEN
32358                     tpl := v1;
32359                     r := 0.0;
32360                     REPEAT i := 1 TO SIZEOF(tpl);
32361                        parts( tpl[i], p, q );
32362                        r := r + p * p + q * q;
32363                     END_REPEAT;
32364                     RETURN (ctmv(SQRT(r)));
32365                  END_IF;
32366            ef_if, ef_if_i, ef_if_r, ef_if_c, ef_if_s, ef_if_b, ef_if_t :
32367                  IF 'LOGICAL' IN TYPEOF(v1) THEN
32368                     lgc := v1;
32369                     IF lgc THEN
32370                        RETURN (v2);
32371                     ELSE
32372                        RETURN (v3);
32373                     END_IF;
32374                  END_IF;
32375            ef_ensemble :
32376                  RETURN (make_finite_space(mem + vlist));
32377            ef_member_of :
32378                  IF schema_prefix + 'MATHS_SPACE' IN TYPEOF(v2) THEN
32379                     lgc := member_of(v1, v2);
32380                     IF lgc <> UNKNOWN THEN
32381                        RETURN (ctmv(lgc));
32382                     END_IF;
32383                  END_IF;
32384         END_CASE;
32385         RETURN (make_function_application(expr.func, vlist));
32386      END_IF;
32387      IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN types THEN
32388         gexpr := substitute(expr.func\abstracted_expression_function.expr, expr.func\quantifier_expression.variables, vlist);
32389         RETURN (simplify_generic_expression(gexpr));
32390      END_IF;
32391      IF 'FINITE_FUNCTION' IN types THEN
32392         pairs := expr.func\finite_function.pairs;
32393         REPEAT i := 1 TO SIZEOF(pairs);
32394            IF equal_maths_values(vlist[1], pairs[i][1]) THEN
32395               RETURN (simplify_maths_value(pairs[i][2]));
32396            END_IF;
32397         END_REPEAT;
32398         RETURN (make_function_application(expr.func, vlist));
32399      END_IF;
32400      RETURN (expr);
32401END_FUNCTION;
32402
32403-- IN AP242
32404FUNCTION simplify_generic_expression
32405      (expr : generic_expression ) : maths_value;
32406      FUNCTION restore_unary
32407         (expr : unary_generic_expression;
32408          opnd : generic_expression ) : generic_expression;
32409         expr.operand := opnd;
32410         RETURN (expr);
32411      END_FUNCTION;
32412      FUNCTION restore_binary
32413         (expr : binary_generic_expression;
32414          opd1 : generic_expression;
32415          opd2 : generic_expression ) : generic_expression;
32416         expr.operands[1] := opd1;
32417         expr.operands[2] := opd2;
32418         RETURN (expr);
32419      END_FUNCTION;
32420      FUNCTION restore_mulary
32421         (expr : multiple_arity_generic_expression;
32422          ops : LIST OF generic_expression ) : generic_expression;
32423         expr.operands := ops;
32424         RETURN (expr);
32425      END_FUNCTION;
32426      FUNCTION make_number_literal
32427         (nmb : NUMBER ) : generic_literal;
32428         IF 'INTEGER' IN TYPEOF(nmb) THEN
32429            RETURN (make_int_literal(nmb));
32430         END_IF;
32431         RETURN (make_real_literal(nmb));
32432      END_FUNCTION;
32433   LOCAL
32434      types : SET OF STRING := stripped_typeof(expr);
32435      v1 : maths_value;
32436      v2 : maths_value;
32437      vlist : LIST OF maths_value := [];
32438      op1 : generic_expression;
32439      op2 : generic_expression;
32440      oplist : LIST OF generic_expression := [];
32441      opnds : LIST [2:?] OF generic_expression;
32442      n : INTEGER;
32443      m : INTEGER;
32444      finfun : maths_function_select;
32445      boo : BOOLEAN;
32446      str : STRING;
32447      nmb : NUMBER;
32448   END_LOCAL;
32449      IF 'INT_LITERAL' IN types THEN
32450         RETURN (convert_to_maths_value(expr\int_literal.the_value));
32451      END_IF;
32452      IF 'REAL_LITERAL' IN types THEN
32453         RETURN (convert_to_maths_value(expr\real_literal.the_value));
32454      END_IF;
32455      IF 'BOOLEAN_LITERAL' IN types THEN
32456         RETURN (convert_to_maths_value(expr\boolean_literal.the_value));
32457      END_IF;
32458      IF 'STRING_LITERAL' IN types THEN
32459         RETURN (convert_to_maths_value(expr\string_literal.the_value));
32460      END_IF;
32461      IF 'COMPLEX_NUMBER_LITERAL' IN types THEN
32462         RETURN (expr);
32463      END_IF;
32464      IF 'LOGICAL_LITERAL' IN types THEN
32465         RETURN (convert_to_maths_value(expr\logical_literal.lit_value));
32466      END_IF;
32467      IF 'BINARY_LITERAL' IN types THEN
32468         RETURN (convert_to_maths_value(expr\binary_literal.lit_value));
32469      END_IF;
32470      IF 'MATHS_ENUM_LITERAL' IN types THEN
32471         RETURN (expr\maths_enum_literal.lit_value);
32472      END_IF;
32473      IF 'REAL_TUPLE_LITERAL' IN types THEN
32474         RETURN (convert_to_maths_value(expr\real_tuple_literal.lit_value));
32475      END_IF;
32476      IF 'INTEGER_TUPLE_LITERAL' IN types THEN
32477         RETURN (convert_to_maths_value(expr\integer_tuple_literal.lit_value));
32478      END_IF;
32479      IF 'ATOM_BASED_LITERAL' IN types THEN
32480         RETURN (expr\atom_based_literal.lit_value);
32481      END_IF;
32482      IF 'MATHS_TUPLE_LITERAL' IN types THEN
32483         RETURN (convert_to_maths_value(expr\maths_tuple_literal.lit_value));
32484      END_IF;
32485      IF 'MATHS_SPACE' IN types THEN
32486         RETURN (simplify_maths_space(expr));
32487      END_IF;
32488      IF 'FUNCTION_APPLICATION' IN types THEN
32489         RETURN (simplify_function_application(expr));
32490      END_IF;
32491      IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
32492         v1 := simplify_generic_expression(expr\unary_generic_expression.operand);
32493         op1 := convert_to_operand(v1);
32494      END_IF;
32495      IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
32496         v1 := simplify_generic_expression(expr\binary_generic_expression.operands[1]);
32497         op1 := convert_to_operand(v1);
32498         v2 := simplify_generic_expression(expr\binary_generic_expression.operands[2]);
32499         op2 := convert_to_operand(v2);
32500      END_IF;
32501      IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
32502         opnds := expr\multiple_arity_generic_expression.operands;
32503         REPEAT i := 1 TO SIZEOF(opnds);
32504            v1 := simplify_generic_expression(opnds[i]);
32505            INSERT( vlist, v1, i - 1 );
32506            INSERT( oplist, convert_to_operand(v1), i - 1 );
32507         END_REPEAT;
32508      END_IF;
32509      IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
32510         v1 := vlist[1];
32511         n := SIZEOF(vlist);
32512         finfun := vlist[n];
32513         REMOVE( vlist, n );
32514         REMOVE( vlist, 1 );
32515         RETURN (make_parallel_composed_function(v1, vlist, finfun));
32516      END_IF;
32517      IF ('ABS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32518         RETURN (convert_to_maths_value(ABS(v1)));
32519      END_IF;
32520      IF ('ACOS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32521         RETURN (convert_to_maths_value(ACOS(v1)));
32522      END_IF;
32523      IF 'AND_EXPRESSION' IN types THEN
32524         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32525            IF 'BOOLEAN' IN TYPEOF(vlist[i]) THEN
32526               boo := vlist[i];
32527               IF NOT boo THEN
32528                  RETURN (convert_to_maths_value(FALSE));
32529               END_IF;
32530               REMOVE( oplist, i );
32531            END_IF;
32532         END_REPEAT;
32533         IF SIZEOF(oplist) = 0 THEN
32534            RETURN (convert_to_maths_value(TRUE));
32535         END_IF;
32536         IF SIZEOF(oplist) = 1 THEN
32537            RETURN (oplist[1]);
32538         END_IF;
32539      END_IF;
32540      IF ('ASIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32541         RETURN (convert_to_maths_value(ASIN(v1)));
32542      END_IF;
32543      IF (('ATAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32544         RETURN (convert_to_maths_value(atan(v1, v2)));
32545      END_IF;
32546      IF ('COMPARISON_EXPRESSION' IN types) AND ((('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2)) OR ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))) OR ('BOOLEAN' IN TYPEOF(v1)) AND ('BOOLEAN' IN TYPEOF(v2))) THEN
32547         IF 'COMPARISON_EQUAL' IN types THEN
32548            boo := bool(v1 = v2);
32549         ELSE
32550            IF 'COMPARISON_GREATER' IN types THEN
32551               boo := bool(v1 > v2);
32552            ELSE
32553               IF 'COMPARISON_GREATER_EQUAL' IN types THEN
32554                  boo := bool(v1 >= v2);
32555               ELSE
32556                  IF 'COMPARISON_LESS' IN types THEN
32557                     boo := bool(v1 < v2);
32558                  ELSE
32559                     IF 'COMPARISON_LESS_EQUAL' IN types THEN
32560                        boo := bool(v1 <= v2);
32561                     ELSE
32562                        IF 'COMPARISON_NOT_EQUAL' IN types THEN
32563                           boo := bool(v1 <> v2);
32564                        ELSE
32565                           IF 'LIKE_EXPRESSION' IN types THEN
32566                              boo := bool(v1 LIKE v2);
32567                           ELSE
32568                              RETURN (?);
32569                           END_IF;
32570                        END_IF;
32571                     END_IF;
32572                  END_IF;
32573               END_IF;
32574            END_IF;
32575         END_IF;
32576         RETURN (convert_to_maths_value(boo));
32577      END_IF;
32578      IF 'CONCAT_EXPRESSION' IN types THEN
32579         str := '';
32580         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32581            IF 'STRING' IN TYPEOF(vlist[i]) THEN
32582               str := vlist[i] + str;
32583               REMOVE( oplist, i );
32584            ELSE
32585               IF LENGTH(str) > 0 THEN
32586                  INSERT( oplist, make_string_literal(str), i );
32587                  str := '';
32588               END_IF;
32589            END_IF;
32590         END_REPEAT;
32591         IF SIZEOF(oplist) = 0 THEN
32592            RETURN (convert_to_maths_value(str));
32593         END_IF;
32594         IF LENGTH(str) > 0 THEN
32595            INSERT( oplist, make_string_literal(str), 0 );
32596         END_IF;
32597         IF SIZEOF(oplist) = 1 THEN
32598            RETURN (oplist[1]);
32599         END_IF;
32600      END_IF;
32601      IF ('COS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32602         RETURN (convert_to_maths_value(cos(v1)));
32603      END_IF;
32604      IF (('DIV_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32605         RETURN (convert_to_maths_value(v1 DIV v2));
32606      END_IF;
32607      IF 'EQUALS_EXPRESSION' IN types THEN
32608         opnds := expr\binary_generic_expression.operands;
32609         RETURN (convert_to_maths_value(opnds[1] :=: opnds[2]));
32610      END_IF;
32611      IF ('EXP_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32612         RETURN (convert_to_maths_value(EXP(v1)));
32613      END_IF;
32614      IF (('FORMAT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('STRING' IN TYPEOF(v2)) THEN
32615         RETURN (convert_to_maths_value(FORMAT(v1, v2)));
32616      END_IF;
32617      IF (('INDEX_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32618         str := v1;
32619         n := v2;
32620         RETURN (convert_to_maths_value(str[n]));
32621      END_IF;
32622      IF ('INT_VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
32623         RETURN (convert_to_maths_value(VALUE(v1)));
32624      END_IF;
32625      IF 'INTERVAL_EXPRESSION' IN types THEN
32626         str := '';
32627         IF 'NUMBER' IN TYPEOF(vlist[1]) THEN
32628            str := 'NUMBER';
32629         END_IF;
32630         IF 'STRING' IN TYPEOF(vlist[1]) THEN
32631            str := 'STRING';
32632         END_IF;
32633         IF 'BOOLEAN' IN TYPEOF(vlist[1]) THEN
32634            str := 'BOOLEAN';
32635         END_IF;
32636         IF ((LENGTH(str) > 0) AND (str IN TYPEOF(vlist[2]))) AND (str IN TYPEOF(vlist[3])) THEN
32637            RETURN (convert_to_maths_value((vlist[1] <= vlist[2]) AND (vlist[2] <= vlist[3])));
32638         END_IF;
32639      END_IF;
32640      IF ('LENGTH_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
32641         RETURN (convert_to_maths_value(LENGTH(v1)));
32642      END_IF;
32643      IF ('LOG_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32644         RETURN (convert_to_maths_value(LOG(v1)));
32645      END_IF;
32646      IF ('LOG10_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32647         RETURN (convert_to_maths_value(LOG10(v1)));
32648      END_IF;
32649      IF ('LOG2_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32650         RETURN (convert_to_maths_value(LOG2(v1)));
32651      END_IF;
32652      IF 'MAXIMUM_EXPRESSION' IN types THEN
32653         boo := FALSE;
32654         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32655            IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
32656               IF boo THEN
32657                  IF nmb < vlist[i] THEN
32658                     nmb := vlist[i];
32659                  END_IF;
32660               ELSE
32661                  nmb := vlist[i];
32662                  boo := TRUE;
32663               END_IF;
32664               REMOVE( oplist, i );
32665            END_IF;
32666         END_REPEAT;
32667         IF SIZEOF(oplist) = 0 THEN
32668            RETURN (convert_to_maths_value(nmb));
32669         END_IF;
32670         IF boo THEN
32671            INSERT( oplist, make_number_literal(nmb), 0 );
32672         END_IF;
32673      END_IF;
32674      IF 'MINIMUM_EXPRESSION' IN types THEN
32675         boo := FALSE;
32676         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32677            IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
32678               IF boo THEN
32679                  IF nmb > vlist[i] THEN
32680                     nmb := vlist[i];
32681                  END_IF;
32682               ELSE
32683                  nmb := vlist[i];
32684                  boo := TRUE;
32685               END_IF;
32686               REMOVE( oplist, i );
32687            END_IF;
32688         END_REPEAT;
32689         IF SIZEOF(oplist) = 0 THEN
32690            RETURN (convert_to_maths_value(nmb));
32691         END_IF;
32692         IF boo THEN
32693            INSERT( oplist, make_number_literal(nmb), 0 );
32694         END_IF;
32695      END_IF;
32696      IF (('MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32697         RETURN (convert_to_maths_value(v1 - v2));
32698      END_IF;
32699      IF (('MOD_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32700         RETURN (convert_to_maths_value(v1 MOD v2));
32701      END_IF;
32702      IF 'MULT_EXPRESSION' IN types THEN
32703         nmb := 1;
32704         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32705            IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
32706               nmb := nmb * vlist[i];
32707               REMOVE( oplist, i );
32708            END_IF;
32709         END_REPEAT;
32710         IF SIZEOF(oplist) = 0 THEN
32711            RETURN (convert_to_maths_value(nmb));
32712         END_IF;
32713         IF nmb <> 1 THEN
32714            INSERT( oplist, make_number_literal(nmb), 0 );
32715         END_IF;
32716         IF SIZEOF(oplist) = 1 THEN
32717            RETURN (oplist[1]);
32718         END_IF;
32719      END_IF;
32720      IF ('NOT_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1)) THEN
32721         boo := v1;
32722         RETURN (convert_to_maths_value(NOT boo));
32723      END_IF;
32724      IF ('ODD_EXPRESSION' IN types) AND ('INTEGER' IN TYPEOF(v1)) THEN
32725         RETURN (convert_to_maths_value(ODD(v1)));
32726      END_IF;
32727      IF 'OR_EXPRESSION' IN types THEN
32728         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32729            IF 'BOOLEAN' IN TYPEOF(vlist[i]) THEN
32730               boo := vlist[i];
32731               IF boo THEN
32732                  RETURN (convert_to_maths_value(TRUE));
32733               END_IF;
32734               REMOVE( oplist, i );
32735            END_IF;
32736         END_REPEAT;
32737         IF SIZEOF(oplist) = 0 THEN
32738            RETURN (convert_to_maths_value(FALSE));
32739         END_IF;
32740         IF SIZEOF(oplist) = 1 THEN
32741            RETURN (oplist[1]);
32742         END_IF;
32743      END_IF;
32744      IF 'PLUS_EXPRESSION' IN types THEN
32745         nmb := 0;
32746         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
32747            IF 'NUMBER' IN TYPEOF(vlist[i]) THEN
32748               nmb := nmb + vlist[i];
32749               REMOVE( oplist, i );
32750            END_IF;
32751         END_REPEAT;
32752         IF SIZEOF(oplist) = 0 THEN
32753            RETURN (convert_to_maths_value(nmb));
32754         END_IF;
32755         IF nmb <> 0 THEN
32756            INSERT( oplist, make_number_literal(nmb), 0 );
32757         END_IF;
32758         IF SIZEOF(oplist) = 1 THEN
32759            RETURN (oplist[1]);
32760         END_IF;
32761      END_IF;
32762      IF (('POWER_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32763         RETURN (convert_to_maths_value(v1 ** v2));
32764      END_IF;
32765      IF ('SIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32766         RETURN (convert_to_maths_value(sin(v1)));
32767      END_IF;
32768      IF (('SLASH_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))) AND ('NUMBER' IN TYPEOF(v2)) THEN
32769         RETURN (convert_to_maths_value(v1 / v2));
32770      END_IF;
32771      IF ('SQUARE_ROOT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32772         RETURN (convert_to_maths_value(SQRT(v1)));
32773      END_IF;
32774      IF ((('SUBSTRING_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(vlist[1]))) AND ('NUMBER' IN TYPEOF(vlist[2]))) AND ('NUMBER' IN TYPEOF(vlist[3])) THEN
32775         str := vlist[1];
32776         n := vlist[2];
32777         m := vlist[3];
32778         RETURN (convert_to_maths_value(str[ n : m ]));
32779      END_IF;
32780      IF ('TAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32781         RETURN (convert_to_maths_value(TAN(v1)));
32782      END_IF;
32783      IF ('UNARY_MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) THEN
32784         nmb := v1;
32785         RETURN (convert_to_maths_value(-nmb));
32786      END_IF;
32787      IF ('VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) THEN
32788         RETURN (convert_to_maths_value(VALUE(v1)));
32789      END_IF;
32790      IF (('XOR_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1))) AND ('BOOLEAN' IN TYPEOF(v2)) THEN
32791         RETURN (convert_to_maths_value(v1 XOR v2));
32792      END_IF;
32793      IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
32794         RETURN (restore_unary(expr, op1));
32795      END_IF;
32796      IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
32797         RETURN (restore_binary(expr, op1, op2));
32798      END_IF;
32799      IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
32800         RETURN (restore_mulary(expr, oplist));
32801      END_IF;
32802      RETURN (expr);
32803END_FUNCTION;
32804
32805-- IN AP242
32806FUNCTION simplify_maths_space
32807      (spc : maths_space ) : maths_space;
32808   LOCAL
32809      stypes : SET OF STRING := stripped_typeof(spc);
32810      sset : SET OF maths_value;
32811      zset : SET OF maths_value := [];
32812      zval : maths_value;
32813      zspc : maths_space;
32814      zallint : BOOLEAN := TRUE;
32815      zint : INTEGER;
32816      zmin : INTEGER;
32817      zmax : INTEGER;
32818      factors : LIST OF maths_space;
32819      zfactors : LIST OF maths_space := [];
32820      rspc : maths_space;
32821   END_LOCAL;
32822      IF 'FINITE_SPACE' IN stypes THEN
32823         sset := spc\finite_space.members;
32824         REPEAT i := 1 TO SIZEOF(sset);
32825            zval := simplify_maths_value(sset[i]);
32826            zset := zset + [ zval ];
32827            IF zallint AND ('INTEGER' IN TYPEOF(zval)) THEN
32828               zint := zval;
32829               IF i = 1 THEN
32830                  zmin := zint;
32831                  zmax := zint;
32832               ELSE
32833                  IF zint < zmin THEN
32834                     zmin := zint;
32835                  END_IF;
32836                  IF zint > zmax THEN
32837                     zmax := zint;
32838                  END_IF;
32839               END_IF;
32840            ELSE
32841               zallint := FALSE;
32842            END_IF;
32843         END_REPEAT;
32844         IF zallint AND (SIZEOF(zset) = zmax - zmin + 1) THEN
32845            RETURN (make_finite_integer_interval(zmin, zmax));
32846         END_IF;
32847         RETURN (make_finite_space(zset));
32848      END_IF;
32849      IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
32850         zspc := simplify_maths_space(spc\uniform_product_space.base);
32851         RETURN (make_uniform_product_space(zspc, spc\uniform_product_space.exponent));
32852      END_IF;
32853      IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
32854         factors := spc\listed_product_space.factors;
32855         REPEAT i := 1 TO SIZEOF(factors);
32856            INSERT( zfactors, simplify_maths_space(factors[i]), i - 1 );
32857         END_REPEAT;
32858         RETURN (make_listed_product_space(zfactors));
32859      END_IF;
32860      IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
32861         zspc := simplify_maths_space(spc\extended_tuple_space.base);
32862         rspc := simplify_maths_space(spc\extended_tuple_space.extender);
32863         RETURN (make_extended_tuple_space(zspc, rspc));
32864      END_IF;
32865      IF 'FUNCTION_SPACE' IN stypes THEN
32866         zspc := simplify_maths_space(spc\function_space.domain_argument);
32867         rspc := simplify_maths_space(spc\function_space.range_argument);
32868         RETURN (make_function_space(spc\function_space.domain_constraint, zspc, spc\function_space.range_constraint, rspc));
32869      END_IF;
32870      RETURN (spc);
32871END_FUNCTION;
32872
32873-- IN AP242
32874FUNCTION simplify_maths_value
32875      (val : maths_value ) : maths_value;
32876   LOCAL
32877      vtypes : SET OF STRING := stripped_typeof(val);
32878      vlist : LIST OF maths_value;
32879      nlist : LIST OF maths_value := [];
32880   END_LOCAL;
32881      IF 'GENERIC_EXPRESSION' IN vtypes THEN
32882         RETURN (simplify_generic_expression(val));
32883      END_IF;
32884      IF 'LIST' IN vtypes THEN
32885         vlist := val;
32886         REPEAT i := 1 TO SIZEOF(vlist);
32887            INSERT( nlist, simplify_maths_value(vlist[i]), i - 1 );
32888         END_REPEAT;
32889         RETURN (convert_to_maths_value(nlist));
32890      END_IF;
32891      RETURN (val);
32892END_FUNCTION;
32893
32894-- IN AP242
32895FUNCTION singleton_member_of
32896      (spc : maths_space ) : maths_value;
32897   LOCAL
32898      types : SET OF STRING := stripped_typeof(spc);
32899   END_LOCAL;
32900      IF 'FINITE_SPACE' IN types THEN
32901         IF SIZEOF(spc\finite_space.members) = 1 THEN
32902            RETURN (spc\finite_space.members[1]);
32903         END_IF;
32904         RETURN (?);
32905      END_IF;
32906      IF 'FINITE_INTEGER_INTERVAL' IN types THEN
32907         IF spc\finite_integer_interval.size = 1 THEN
32908            RETURN (spc\finite_integer_interval.min);
32909         END_IF;
32910         RETURN (?);
32911      END_IF;
32912      RETURN (?);
32913END_FUNCTION;
32914
32915-- IN AP242
32916FUNCTION sort_link_associations
32917      (aprr : SET [1:?] OF pair_representation_relationship;
32918       one_not_two : BOOLEAN ) : SET [0:?] OF kinematic_link_representation;
32919   LOCAL
32920      result : SET OF kinematic_link_representation := [];
32921   END_LOCAL;
32922      IF one_not_two THEN
32923         REPEAT i := 1 TO HIINDEX(aprr);
32924            result := result + aprr[i].rep_1;
32925         END_REPEAT;
32926      ELSE
32927         REPEAT i := 1 TO HIINDEX(aprr);
32928            result := result + aprr[i].rep_2;
32929         END_REPEAT;
32930      END_IF;
32931      RETURN (result);
32932END_FUNCTION;
32933
32934-- IN AP242
32935FUNCTION space_dimension
32936      (tspace : tuple_space ) : nonnegative_integer;
32937   LOCAL
32938      types : SET OF STRING := TYPEOF(tspace);
32939   END_LOCAL;
32940      IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN types THEN
32941         RETURN (tspace\uniform_product_space.exponent);
32942      END_IF;
32943      IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN types THEN
32944         RETURN (SIZEOF(tspace\listed_product_space.factors));
32945      END_IF;
32946      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
32947         RETURN (space_dimension(tspace\extended_tuple_space.base));
32948      END_IF;
32949      RETURN (?);
32950END_FUNCTION;
32951
32952-- IN AP242
32953FUNCTION space_is_continuum
32954      (space : maths_space ) : BOOLEAN;
32955   LOCAL
32956      typenames : SET OF STRING := TYPEOF(space);
32957      factors : LIST OF maths_space;
32958   END_LOCAL;
32959      IF NOT EXISTS(space) THEN
32960         RETURN (FALSE);
32961      END_IF;
32962      IF subspace_of_es(space, es_reals) OR subspace_of_es(space, es_complex_numbers) THEN
32963         RETURN (TRUE);
32964      END_IF;
32965      IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
32966         RETURN (space_is_continuum(space\uniform_product_space.base));
32967      END_IF;
32968      IF schema_prefix + 'LISTED_PRODUCT_SPACE' IN typenames THEN
32969         factors := space\listed_product_space.factors;
32970         IF SIZEOF(factors) = 0 THEN
32971            RETURN (FALSE);
32972         END_IF;
32973         REPEAT i := 1 TO SIZEOF(factors);
32974            IF NOT space_is_continuum(factors[i]) THEN
32975               RETURN (FALSE);
32976            END_IF;
32977         END_REPEAT;
32978         RETURN (TRUE);
32979      END_IF;
32980      RETURN (FALSE);
32981END_FUNCTION;
32982
32983-- IN AP242
32984FUNCTION space_is_singleton
32985      (spc : maths_space ) : BOOLEAN;
32986   LOCAL
32987      types : SET OF STRING := stripped_typeof(spc);
32988   END_LOCAL;
32989      IF 'FINITE_SPACE' IN types THEN
32990         RETURN (bool(SIZEOF(spc\finite_space.members) = 1));
32991      END_IF;
32992      IF 'FINITE_INTEGER_INTERVAL' IN types THEN
32993         RETURN (bool(spc\finite_integer_interval.size = 1));
32994      END_IF;
32995      RETURN (FALSE);
32996END_FUNCTION;
32997
32998-- IN AP242
32999FUNCTION stripped_typeof
33000      (arg : GENERIC : G ) : SET [0:?] OF STRING;
33001   LOCAL
33002      types : SET OF STRING := TYPEOF(arg);
33003      stypes : SET OF STRING := [];
33004      n : INTEGER := LENGTH(schema_prefix);
33005   END_LOCAL;
33006      REPEAT i := 1 TO SIZEOF(types);
33007         IF types[i][ 1 : n ] = schema_prefix THEN
33008            stypes := stypes + types[i][ (n + 1) : LENGTH(types[i]) ];
33009         ELSE
33010            stypes := stypes + types[i];
33011         END_IF;
33012      END_REPEAT;
33013      RETURN (stypes);
33014END_FUNCTION;
33015
33016-- IN AP242
33017FUNCTION sts_get_general_datum_reference
33018      (input : datum_reference_element ) : general_datum_reference;
33019   LOCAL
33020      general_datum_reference_bag : BAG OF general_datum_reference := USEDIN(input, 'STEP_MERGED_CAD_SCHEMA.' + 'GENERAL_DATUM_REFERENCE.' + 'BASE');
33021   END_LOCAL;
33022      IF SIZEOF(general_datum_reference_bag) = 1 THEN
33023         RETURN (general_datum_reference_bag[1]);
33024      ELSE
33025         RETURN (?);
33026      END_IF;
33027END_FUNCTION;
33028
33029-- IN AP242
33030FUNCTION sts_get_product_definition_shape
33031      (input : geometric_tolerance_target ) : product_definition_shape;
33032      CASE TRUE OF
33033         'STEP_MERGED_CAD_SCHEMA.DIMENSIONAL_LOCATION' IN TYPEOF(input) :
33034               RETURN (input\shape_aspect_relationship.relating_shape_aspect\shape_aspect.of_shape);
33035         'STEP_MERGED_CAD_SCHEMA.DIMENSIONAL_SIZE' IN TYPEOF(input) :
33036               RETURN (input\dimensional_size.applies_to\shape_aspect.of_shape);
33037         'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(input) :
33038               RETURN (input);
33039         'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(input) :
33040               RETURN (input\shape_aspect.of_shape);
33041      OTHERWISE :
33042            RETURN (?);
33043      END_CASE;
33044END_FUNCTION;
33045
33046-- IN AP242
33047FUNCTION subspace_of
33048      (space1 : maths_space;
33049       space2 : maths_space ) : LOGICAL;
33050   LOCAL
33051      spc1 : maths_space := simplify_maths_space(space1);
33052      spc2 : maths_space := simplify_maths_space(space2);
33053      types1 : SET OF STRING := stripped_typeof(spc1);
33054      types2 : SET OF STRING := stripped_typeof(spc2);
33055      lgcl : LOGICAL;
33056      cum : LOGICAL;
33057      es_val : elementary_space_enumerators;
33058      bnd1 : REAL;
33059      bnd2 : REAL;
33060      n : INTEGER;
33061      sp1 : maths_space;
33062      sp2 : maths_space;
33063      prgn1 : polar_complex_number_region;
33064      prgn2 : polar_complex_number_region;
33065      aitv : finite_real_interval;
33066   END_LOCAL;
33067      IF NOT EXISTS(spc1) OR NOT EXISTS(spc2) THEN
33068         RETURN (FALSE);
33069      END_IF;
33070      IF spc2 = the_generics THEN
33071         RETURN (TRUE);
33072      END_IF;
33073      IF 'ELEMENTARY_SPACE' IN types1 THEN
33074         IF NOT ('ELEMENTARY_SPACE' IN types2) THEN
33075            RETURN (FALSE);
33076         END_IF;
33077         es_val := spc2\elementary_space.space_id;
33078         IF spc1\elementary_space.space_id = es_val THEN
33079            RETURN (TRUE);
33080         END_IF;
33081         CASE spc1\elementary_space.space_id OF
33082            es_numbers :
33083                  RETURN (FALSE);
33084            es_complex_numbers :
33085                  RETURN (es_val = es_numbers);
33086            es_reals :
33087                  RETURN (es_val = es_numbers);
33088            es_integers :
33089                  RETURN (es_val = es_numbers);
33090            es_logicals :
33091                  RETURN (FALSE);
33092            es_booleans :
33093                  RETURN (es_val = es_logicals);
33094            es_strings :
33095                  RETURN (FALSE);
33096            es_binarys :
33097                  RETURN (FALSE);
33098            es_maths_spaces :
33099                  RETURN (FALSE);
33100            es_maths_functions :
33101                  RETURN (FALSE);
33102            es_generics :
33103                  RETURN (FALSE);
33104         END_CASE;
33105         RETURN (UNKNOWN);
33106      END_IF;
33107      IF 'FINITE_INTEGER_INTERVAL' IN types1 THEN
33108         cum := TRUE;
33109         REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max;
33110            cum := cum AND member_of(i, spc2);
33111            IF cum = FALSE THEN
33112               RETURN (FALSE);
33113            END_IF;
33114         END_REPEAT;
33115         RETURN (cum);
33116      END_IF;
33117      IF 'INTEGER_INTERVAL_FROM_MIN' IN types1 THEN
33118         IF 'ELEMENTARY_SPACE' IN types2 THEN
33119            es_val := spc2\elementary_space.space_id;
33120            RETURN ((es_val = es_numbers) OR (es_val = es_integers));
33121         END_IF;
33122         IF 'INTEGER_INTERVAL_FROM_MIN' IN types2 THEN
33123            RETURN (spc1\integer_interval_from_min.min >= spc2\integer_interval_from_min.min);
33124         END_IF;
33125         RETURN (FALSE);
33126      END_IF;
33127      IF 'INTEGER_INTERVAL_TO_MAX' IN types1 THEN
33128         IF 'ELEMENTARY_SPACE' IN types2 THEN
33129            es_val := spc2\elementary_space.space_id;
33130            RETURN ((es_val = es_numbers) OR (es_val = es_integers));
33131         END_IF;
33132         IF 'INTEGER_INTERVAL_TO_MAX' IN types2 THEN
33133            RETURN (spc1\integer_interval_to_max.max <= spc2\integer_interval_to_max.max);
33134         END_IF;
33135         RETURN (FALSE);
33136      END_IF;
33137      IF 'FINITE_REAL_INTERVAL' IN types1 THEN
33138         IF 'ELEMENTARY_SPACE' IN types2 THEN
33139            es_val := spc2\elementary_space.space_id;
33140            RETURN ((es_val = es_numbers) OR (es_val = es_reals));
33141         END_IF;
33142         IF (('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN' IN types2)) OR ('REAL_INTERVAL_TO_MAX' IN types2) THEN
33143            IF min_exists(spc2) THEN
33144               bnd1 := spc1\finite_real_interval.min;
33145               bnd2 := real_min(spc2);
33146               IF (bnd1 < bnd2) OR ((bnd1 = bnd2) AND min_included(spc1)) AND NOT min_included(spc2) THEN
33147                  RETURN (FALSE);
33148               END_IF;
33149            END_IF;
33150            IF max_exists(spc2) THEN
33151               bnd1 := spc1\finite_real_interval.max;
33152               bnd2 := real_max(spc2);
33153               IF (bnd1 > bnd2) OR ((bnd1 = bnd2) AND max_included(spc1)) AND NOT max_included(spc2) THEN
33154                  RETURN (FALSE);
33155               END_IF;
33156            END_IF;
33157            RETURN (TRUE);
33158         END_IF;
33159         RETURN (FALSE);
33160      END_IF;
33161      IF 'REAL_INTERVAL_FROM_MIN' IN types1 THEN
33162         IF 'ELEMENTARY_SPACE' IN types2 THEN
33163            es_val := spc2\elementary_space.space_id;
33164            RETURN ((es_val = es_numbers) OR (es_val = es_reals));
33165         END_IF;
33166         IF 'REAL_INTERVAL_FROM_MIN' IN types2 THEN
33167            bnd1 := spc1\real_interval_from_min.min;
33168            bnd2 := spc2\real_interval_from_min.min;
33169            RETURN ((bnd2 < bnd1) OR (bnd2 = bnd1) AND (min_included(spc2) OR NOT min_included(spc1)));
33170         END_IF;
33171         RETURN (FALSE);
33172      END_IF;
33173      IF 'REAL_INTERVAL_TO_MAX' IN types1 THEN
33174         IF 'ELEMENTARY_SPACE' IN types2 THEN
33175            es_val := spc2\elementary_space.space_id;
33176            RETURN ((es_val = es_numbers) OR (es_val = es_reals));
33177         END_IF;
33178         IF 'REAL_INTERVAL_TO_MAX' IN types2 THEN
33179            bnd1 := spc1\real_interval_to_max.max;
33180            bnd2 := spc2\real_interval_to_max.max;
33181            RETURN ((bnd2 > bnd1) OR (bnd2 = bnd1) AND (max_included(spc2) OR NOT max_included(spc1)));
33182         END_IF;
33183         RETURN (FALSE);
33184      END_IF;
33185      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types1 THEN
33186         IF 'ELEMENTARY_SPACE' IN types2 THEN
33187            es_val := spc2\elementary_space.space_id;
33188            RETURN ((es_val = es_numbers) OR (es_val = es_complex_numbers));
33189         END_IF;
33190         IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
33191            RETURN (subspace_of(spc1\cartesian_complex_number_region.real_constraint, spc2\cartesian_complex_number_region.real_constraint) AND subspace_of(spc1\cartesian_complex_number_region.imag_constraint, spc2\cartesian_complex_number_region.imag_constraint));
33192         END_IF;
33193         IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
33194            RETURN (subspace_of(enclose_cregion_in_pregion(spc1, spc2\polar_complex_number_region.centre), spc2));
33195         END_IF;
33196         RETURN (FALSE);
33197      END_IF;
33198      IF 'POLAR_COMPLEX_NUMBER_REGION' IN types1 THEN
33199         IF 'ELEMENTARY_SPACE' IN types2 THEN
33200            es_val := spc2\elementary_space.space_id;
33201            RETURN ((es_val = es_numbers) OR (es_val = es_complex_numbers));
33202         END_IF;
33203         IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
33204            RETURN (subspace_of(enclose_pregion_in_cregion(spc1), spc2));
33205         END_IF;
33206         IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
33207            prgn1 := spc1;
33208            prgn2 := spc2;
33209            IF prgn1.centre = prgn2.centre THEN
33210               IF prgn2.direction_constraint.max > 3.14159 THEN
33211                  aitv := make_finite_real_interval(-3.14159, open, prgn2.direction_constraint.max - 2.0 * 3.14159, prgn2.direction_constraint.max_closure);
33212                  RETURN (subspace_of(prgn1.distance_constraint, prgn2.distance_constraint) AND (subspace_of(prgn1.direction_constraint, prgn2.direction_constraint) OR subspace_of(prgn1.direction_constraint, aitv)));
33213               ELSE
33214                  RETURN (subspace_of(prgn1.distance_constraint, prgn2.distance_constraint) AND subspace_of(prgn1.direction_constraint, prgn2.direction_constraint));
33215               END_IF;
33216            END_IF;
33217            RETURN (subspace_of(enclose_pregion_in_pregion(prgn1, prgn2.centre), prgn2));
33218         END_IF;
33219         RETURN (FALSE);
33220      END_IF;
33221      IF 'FINITE_SPACE' IN types1 THEN
33222         cum := TRUE;
33223         REPEAT i := 1 TO SIZEOF(spc1\finite_space.members);
33224            cum := cum AND member_of(spc1\finite_space.members[i], spc2);
33225            IF cum = FALSE THEN
33226               RETURN (FALSE);
33227            END_IF;
33228         END_REPEAT;
33229         RETURN (cum);
33230      END_IF;
33231      IF 'PRODUCT_SPACE' IN types1 THEN
33232         IF 'PRODUCT_SPACE' IN types2 THEN
33233            IF space_dimension(spc1) = space_dimension(spc2) THEN
33234               cum := TRUE;
33235               REPEAT i := 1 TO space_dimension(spc1);
33236                  cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
33237                  IF cum = FALSE THEN
33238                     RETURN (FALSE);
33239                  END_IF;
33240               END_REPEAT;
33241               RETURN (cum);
33242            END_IF;
33243         END_IF;
33244         IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
33245            IF space_dimension(spc1) >= space_dimension(spc2) THEN
33246               cum := TRUE;
33247               REPEAT i := 1 TO space_dimension(spc1);
33248                  cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
33249                  IF cum = FALSE THEN
33250                     RETURN (FALSE);
33251                  END_IF;
33252               END_REPEAT;
33253               RETURN (cum);
33254            END_IF;
33255         END_IF;
33256         RETURN (FALSE);
33257      END_IF;
33258      IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
33259         IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
33260            n := space_dimension(spc1);
33261            IF n < space_dimension(spc2) THEN
33262               n := space_dimension(spc2);
33263            END_IF;
33264            cum := TRUE;
33265            REPEAT i := 1 TO n + 1;
33266               cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
33267               IF cum = FALSE THEN
33268                  RETURN (FALSE);
33269               END_IF;
33270            END_REPEAT;
33271            RETURN (cum);
33272         END_IF;
33273         RETURN (FALSE);
33274      END_IF;
33275      IF 'FUNCTION_SPACE' IN types1 THEN
33276         IF 'ELEMENTARY_SPACE' IN types2 THEN
33277            RETURN (spc2\elementary_space.space_id = es_maths_functions);
33278         END_IF;
33279         IF 'FUNCTION_SPACE' IN types2 THEN
33280            cum := TRUE;
33281            sp1 := spc1\function_space.domain_argument;
33282            sp2 := spc2\function_space.domain_argument;
33283            CASE spc1\function_space.domain_constraint OF
33284               sc_equal :
33285                     BEGIN
33286                        CASE spc2\function_space.domain_constraint OF
33287                           sc_equal :
33288                                 cum := cum AND equal_maths_spaces(sp1, sp2);
33289                           sc_subspace :
33290                                 cum := cum AND subspace_of(sp1, sp2);
33291                           sc_member :
33292                                 cum := cum AND member_of(sp1, sp2);
33293                        END_CASE;
33294                     END;
33295               sc_subspace :
33296                     BEGIN
33297                        CASE spc2\function_space.domain_constraint OF
33298                           sc_equal :
33299                                 RETURN (FALSE);
33300                           sc_subspace :
33301                                 cum := cum AND subspace_of(sp1, sp2);
33302                           sc_member :
33303                                 BEGIN
33304                                    IF NOT member_of(sp1, sp2) THEN
33305                                       RETURN (FALSE);
33306                                    END_IF;
33307                                    cum := UNKNOWN;
33308                                 END;
33309                        END_CASE;
33310                     END;
33311               sc_member :
33312                     BEGIN
33313                        CASE spc2\function_space.domain_constraint OF
33314                           sc_equal :
33315                                 cum := (cum AND space_is_singleton(sp1)) AND equal_maths_spaces(singleton_member_of(sp1), sp2);
33316                           sc_subspace :
33317                                 BEGIN
33318                                    IF NOT member_of(sp2, sp1) THEN
33319                                       RETURN (FALSE);
33320                                    END_IF;
33321                                    cum := UNKNOWN;
33322                                 END;
33323                           sc_member :
33324                                 cum := cum AND subspace_of(sp1, sp2);
33325                        END_CASE;
33326                     END;
33327            END_CASE;
33328            IF cum = FALSE THEN
33329               RETURN (FALSE);
33330            END_IF;
33331            sp1 := spc1\function_space.range_argument;
33332            sp2 := spc2\function_space.range_argument;
33333            CASE spc1\function_space.range_constraint OF
33334               sc_equal :
33335                     BEGIN
33336                        CASE spc2\function_space.range_constraint OF
33337                           sc_equal :
33338                                 cum := cum AND equal_maths_spaces(sp1, sp2);
33339                           sc_subspace :
33340                                 cum := cum AND subspace_of(sp1, sp2);
33341                           sc_member :
33342                                 cum := cum AND member_of(sp1, sp2);
33343                        END_CASE;
33344                     END;
33345               sc_subspace :
33346                     BEGIN
33347                        CASE spc2\function_space.domain_constraint OF
33348                           sc_equal :
33349                                 RETURN (FALSE);
33350                           sc_subspace :
33351                                 cum := cum AND subspace_of(sp1, sp2);
33352                           sc_member :
33353                                 BEGIN
33354                                    IF NOT member_of(sp1, sp2) THEN
33355                                       RETURN (FALSE);
33356                                    END_IF;
33357                                    cum := UNKNOWN;
33358                                 END;
33359                        END_CASE;
33360                     END;
33361               sc_member :
33362                     BEGIN
33363                        CASE spc2\function_space.domain_constraint OF
33364                           sc_equal :
33365                                 cum := (cum AND space_is_singleton(sp1)) AND equal_maths_spaces(singleton_member_of(sp1), sp2);
33366                           sc_subspace :
33367                                 BEGIN
33368                                    IF NOT member_of(sp2, sp1) THEN
33369                                       RETURN (FALSE);
33370                                    END_IF;
33371                                    cum := UNKNOWN;
33372                                 END;
33373                           sc_member :
33374                                 cum := cum AND subspace_of(sp1, sp2);
33375                        END_CASE;
33376                     END;
33377            END_CASE;
33378            RETURN (cum);
33379         END_IF;
33380         RETURN (FALSE);
33381      END_IF;
33382      RETURN (UNKNOWN);
33383END_FUNCTION;
33384
33385-- IN AP242
33386FUNCTION subspace_of_es
33387      (spc : maths_space;
33388       es : elementary_space_enumerators ) : LOGICAL;
33389   LOCAL
33390      types : SET OF STRING := stripped_typeof(spc);
33391   END_LOCAL;
33392      IF NOT EXISTS(spc) OR NOT EXISTS(es) THEN
33393         RETURN (FALSE);
33394      END_IF;
33395      IF 'ELEMENTARY_SPACE' IN types THEN
33396         RETURN (es_subspace_of_es(spc\elementary_space.space_id, es));
33397      END_IF;
33398      IF 'FINITE_SPACE' IN types THEN
33399         RETURN (all_members_of_es(spc\finite_space.members, es));
33400      END_IF;
33401      CASE es OF
33402         es_numbers :
33403               RETURN (((((((('FINITE_INTEGER_INTERVAL' IN types) OR ('INTEGER_INTERVAL_FROM_MIN' IN types)) OR ('INTEGER_INTERVAL_TO_MAX' IN types)) OR ('FINITE_REAL_INTERVAL' IN types)) OR ('REAL_INTERVAL_FROM_MIN' IN types)) OR ('REAL_INTERVAL_TO_MAX' IN types)) OR ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types)) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types));
33404         es_complex_numbers :
33405               RETURN (('CARTESIAN_COMPLEX_NUMBER_REGION' IN types) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types));
33406         es_reals :
33407               RETURN ((('FINITE_REAL_INTERVAL' IN types) OR ('REAL_INTERVAL_FROM_MIN' IN types)) OR ('REAL_INTERVAL_TO_MAX' IN types));
33408         es_integers :
33409               RETURN ((('FINITE_INTEGER_INTERVAL' IN types) OR ('INTEGER_INTERVAL_FROM_MIN' IN types)) OR ('INTEGER_INTERVAL_TO_MAX' IN types));
33410         es_logicals :
33411               RETURN (FALSE);
33412         es_booleans :
33413               RETURN (FALSE);
33414         es_strings :
33415               RETURN (FALSE);
33416         es_binarys :
33417               RETURN (FALSE);
33418         es_maths_spaces :
33419               RETURN (FALSE);
33420         es_maths_functions :
33421               RETURN ('FUNCTION_SPACE' IN types);
33422         es_generics :
33423               RETURN (TRUE);
33424      END_CASE;
33425      RETURN (UNKNOWN);
33426END_FUNCTION;
33427
33428-- IN AP242
33429FUNCTION substitute
33430      (expr : generic_expression;
33431       vars : LIST [1:?] OF generic_variable;
33432       vals : LIST [1:?] OF maths_value ) : generic_expression;
33433   LOCAL
33434      types : SET OF STRING := stripped_typeof(expr);
33435      opnds : LIST OF generic_expression;
33436      op1 : generic_expression;
33437      op2 : generic_expression;
33438      qvars : LIST OF generic_variable;
33439      srcdom : maths_space_or_function;
33440      prpfun : LIST [1:?] OF maths_function;
33441      finfun : maths_function_select;
33442   END_LOCAL;
33443      IF SIZEOF(vars) <> SIZEOF(vals) THEN
33444         RETURN (?);
33445      END_IF;
33446      IF 'GENERIC_LITERAL' IN types THEN
33447         RETURN (expr);
33448      END_IF;
33449      IF 'GENERIC_VARIABLE' IN types THEN
33450         REPEAT i := 1 TO SIZEOF(vars);
33451            IF expr :=: vars[i] THEN
33452               RETURN (vals[i]);
33453            END_IF;
33454         END_REPEAT;
33455         RETURN (expr);
33456      END_IF;
33457      IF 'QUANTIFIER_EXPRESSION' IN types THEN
33458         qvars := expr\quantifier_expression.variables;
33459         REPEAT i := SIZEOF(vars) TO 1 BY -1;
33460            IF vars[i] IN qvars THEN
33461               REMOVE( vars, i );
33462               REMOVE( vals, i );
33463            END_IF;
33464         END_REPEAT;
33465         opnds := expr\multiple_arity_generic_expression.operands;
33466         REPEAT i := 1 TO SIZEOF(opnds);
33467            IF NOT (opnds[i] IN qvars) THEN
33468               expr\multiple_arity_generic_expression.operands[i] := substitute(opnds[i], vars, vals);
33469            END_IF;
33470         END_REPEAT;
33471         RETURN (expr);
33472      END_IF;
33473      IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
33474         op1 := expr\unary_generic_expression.operand;
33475         expr\unary_generic_expression.operand := substitute(op1, vars, vals);
33476      END_IF;
33477      IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
33478         op1 := expr\binary_generic_expression.operands[1];
33479         expr\binary_generic_expression.operands[1] := substitute(op1, vars, vals);
33480         op2 := expr\binary_generic_expression.operands[2];
33481         expr\binary_generic_expression.operands[2] := substitute(op2, vars, vals);
33482      END_IF;
33483      IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
33484         srcdom := expr\parallel_composed_function.source_of_domain;
33485         prpfun := expr\parallel_composed_function.prep_functions;
33486         finfun := expr\parallel_composed_function.final_function;
33487         srcdom := substitute(srcdom, vars, vals);
33488         REPEAT i := 1 TO SIZEOF(prpfun);
33489            prpfun[i] := substitute(prpfun[i], vars, vals);
33490         END_REPEAT;
33491         IF 'MATHS_FUNCTION' IN stripped_typeof(finfun) THEN
33492            finfun := substitute(finfun, vars, vals);
33493         END_IF;
33494         RETURN (make_parallel_composed_function(srcdom, prpfun, finfun));
33495      END_IF;
33496      IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
33497         opnds := expr\multiple_arity_generic_expression.operands;
33498         REPEAT i := 1 TO SIZEOF(opnds);
33499            expr\multiple_arity_generic_expression.operands[i] := substitute(opnds[i], vars, vals);
33500         END_REPEAT;
33501      END_IF;
33502      RETURN (expr);
33503END_FUNCTION;
33504
33505-- IN AP214
33506FUNCTION suitably_based_mechanism
33507      (mbp : mechanism_base_placement;
33508       mech : mechanism ) : BOOLEAN;
33509   LOCAL
33510      kprop : kinematic_property_definition;
33511      kgrep : kinematic_ground_representation;
33512      klrep : kinematic_link_representation;
33513      klnk : kinematic_link;
33514      kjnts : BAG OF kinematic_joint;
33515      nmechs : BAG OF mechanism;
33516      nmbps : BAG OF mechanism_base_placement;
33517   END_LOCAL;
33518      kprop := mech.containing_property;
33519      IF 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(mbp\representation_relationship.rep_1) THEN
33520         kgrep := mbp\representation_relationship.rep_1;
33521         IF kgrep.property\property_definition_representation.definition :=: kprop THEN
33522            RETURN (TRUE);
33523         ELSE
33524            RETURN (FALSE);
33525         END_IF;
33526      ELSE
33527         klrep := mbp\representation_relationship.rep_1;
33528--          klnk := klrep.link_representation_relation.topological_aspects;
33529         kjnts := USEDIN(klnk, 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_JOINT.FIRST_LINK') + USEDIN(klnk, 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_JOINT.SECOND_LINK');
33530--          nmechs := USEDIN(kjnts[1].structure, 'STEP_MERGED_CAD_SCHEMA.MECHANISM.STRUCTURE_DEFINITION');
33531         IF nmechs[1] :=: mech THEN
33532            RETURN (FALSE);
33533         ELSE
33534            IF nmechs[1].containing_property :<>: kprop THEN
33535               RETURN (FALSE);
33536            ELSE
33537               nmbps := USEDIN(nmechs[1], 'STEP_MERGED_CAD_SCHEMA.MECHANISM_BASE_PLACEMENT.BASE_OF_MECHANISM');
33538               IF SIZEOF(nmbps) = 0 THEN
33539                  RETURN (FALSE);
33540               ELSE
33541                  RETURN (suitably_based_mechanism(nmbps[1], mech));
33542               END_IF;
33543            END_IF;
33544         END_IF;
33545      END_IF;
33546END_FUNCTION;
33547
33548FUNCTION surface_condition_correlation
33549      (pd : property_definition;
33550       rep : representation ) : LOGICAL;
33551      CASE pd.name OF
33552         'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' :
33553               RETURN (pd.name = rep.name);
33554      OTHERWISE :
33555            RETURN (UNKNOWN);
33556      END_CASE;
33557END_FUNCTION;
33558
33559FUNCTION surface_weights_positive
33560      (b : rational_b_spline_surface ) : BOOLEAN;
33561   LOCAL
33562      result : BOOLEAN := TRUE;
33563   END_LOCAL;
33564      REPEAT i := 0 TO b.u_upper;
33565         REPEAT j := 0 TO b.v_upper;
33566            IF b.weights[i][j] <= 0.0 THEN
33567               result := FALSE;
33568               RETURN (result);
33569            END_IF;
33570         END_REPEAT;
33571      END_REPEAT;
33572      RETURN (result);
33573END_FUNCTION;
33574
33575FUNCTION topology_reversed
33576      (an_item : reversible_topology ) : reversible_topology;
33577      IF 'STEP_MERGED_CAD_SCHEMA.EDGE' IN TYPEOF(an_item) THEN
33578         RETURN (edge_reversed(an_item));
33579      END_IF;
33580      IF 'STEP_MERGED_CAD_SCHEMA.PATH' IN TYPEOF(an_item) THEN
33581         RETURN (path_reversed(an_item));
33582      END_IF;
33583      IF 'STEP_MERGED_CAD_SCHEMA.FACE_BOUND' IN TYPEOF(an_item) THEN
33584         RETURN (face_bound_reversed(an_item));
33585      END_IF;
33586      IF 'STEP_MERGED_CAD_SCHEMA.FACE' IN TYPEOF(an_item) THEN
33587         RETURN (face_reversed(an_item));
33588      END_IF;
33589      IF 'STEP_MERGED_CAD_SCHEMA.SHELL' IN TYPEOF(an_item) THEN
33590         RETURN (shell_reversed(an_item));
33591      END_IF;
33592      IF 'SET' IN TYPEOF(an_item) THEN
33593         RETURN (set_of_topology_reversed(an_item));
33594      END_IF;
33595      IF 'LIST' IN TYPEOF(an_item) THEN
33596         RETURN (list_of_topology_reversed(an_item));
33597      END_IF;
33598      RETURN (?);
33599END_FUNCTION;
33600
33601-- DIFF IN AP214
33602-- DIFF IN AP203e2
33603FUNCTION type_check_function
33604      (the_type : GENERIC;
33605       sub_names : SET [0:?] OF STRING;
33606       criterion : INTEGER ) : LOGICAL;
33607      IF NOT EXISTS(the_type) OR (SIZEOF(sub_names) = 0) THEN
33608         RETURN (UNKNOWN);
33609      ELSE
33610         CASE criterion OF
33611            0 :
33612                  RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0);
33613            1 :
33614                  RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0);
33615            2 :
33616                  RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1);
33617            3 :
33618                  RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
33619         OTHERWISE :
33620               RETURN (UNKNOWN);
33621         END_CASE;
33622      END_IF;
33623END_FUNCTION;
33624
33625-- IN AP242
33626FUNCTION unambiguously_specified_multi_level_reference_designator
33627      (links : LIST [1:?] OF next_assembly_usage_occurrence ) : BOOLEAN;
33628      REPEAT i := 1 TO SIZEOF(links) - 1;
33629         CASE TRUE OF
33630            (('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(links[i]\product_definition_relationship.related_product_definition))) AND ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(links[(i + 1)]\product_definition_relationship.relating_product_definition)) :
33631                  BEGIN
33632                     IF NOT ((links[i]\product_definition_relationship.related_product_definition :=: links[(i + 1)]\product_definition_relationship.relating_product_definition) OR (SIZEOF(QUERY (pdr <* USEDIN(links[i]\product_definition_relationship.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')| (pdr\product_definition_relationship.relating_product_definition :=: links[(i + 1)]\product_definition_relationship.relating_product_definition))) = 1) AND (links[i]\product_definition_relationship.related_product_definition\product_definition.formation\product_definition_formation.of_product :=: links[(i + 1)]\product_definition_relationship.relating_product_definition\product_definition.formation\product_definition_formation.of_product)) THEN
33633                        RETURN (FALSE);
33634                     END_IF;
33635                  END;
33636            ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_REFERENCE' IN TYPEOF(links[i]\product_definition_relationship.related_product_definition)) AND ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_REFERENCE' IN TYPEOF(links[(i + 1)]\product_definition_relationship.relating_product_definition)) :
33637                  BEGIN
33638                     IF NOT ((links[i]\product_definition_relationship.related_product_definition :=: links[(i + 1)]\product_definition_relationship.relating_product_definition) OR (((SIZEOF(QUERY (pdr <* USEDIN(links[i]\product_definition_relationship.related_product_definition, 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')| (pdr\product_definition_relationship.relating_product_definition :=: links[(i + 1)]\product_definition_relationship.relating_product_definition))) = 1) AND (links[i]\product_definition_relationship.related_product_definition\product_definition_reference.product_id = links[(i + 1)]\product_definition_relationship.relating_product_definition\product_definition_reference.product_id)) AND (links[i]\product_definition_relationship.related_product_definition\product_definition_reference.id_owning_organization_name = links[(i + 1)]\product_definition_relationship.relating_product_definition\product_definition_reference.id_owning_organization_name)) AND (links[i]\product_definition_relationship.related_product_definition\product_definition_reference.product_definition_id <> links[(i + 1)]\product_definition_relationship.relating_product_definition\product_definition_reference.product_definition_id)) THEN
33639                        RETURN (FALSE);
33640                     END_IF;
33641                  END;
33642            ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION_REFERENCE' IN TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND ('STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(links[i]\product_definition_relationship.related_product_definition)) :
33643                  RETURN (FALSE);
33644         OTHERWISE :
33645               RETURN (FALSE);
33646         END_CASE;
33647      END_REPEAT;
33648      RETURN (TRUE);
33649END_FUNCTION;
33650
33651-- IN AP242
33652FUNCTION unique_in_product_definition
33653      (item : representative_shape_representation ) : BOOLEAN;
33654   LOCAL
33655      local_p_d : SET OF product_definition := [];
33656      local_s_r : SET OF shape_representation := [];
33657      i : INTEGER;
33658      j : INTEGER;
33659   END_LOCAL;
33660      local_p_d := using_product_definition_of_shape_representation(item);
33661      IF SIZEOF(local_p_d) <> 1 THEN
33662         RETURN (FALSE);
33663      ELSE
33664         REPEAT i := 1 TO HIINDEX(local_p_d);
33665            local_s_r := find_shape_representation_of_product_definition(local_p_d[i]);
33666            REPEAT j := 1 TO HIINDEX(local_s_r);
33667               IF ('STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(local_s_r[j])) AND (local_s_r[j] :<>: item) THEN
33668                  RETURN (FALSE);
33669               END_IF;
33670            END_REPEAT;
33671         END_REPEAT;
33672      END_IF;
33673      RETURN (TRUE);
33674END_FUNCTION;
33675
33676-- IN AP242
33677FUNCTION unique_in_shape_aspect
33678      (item : representative_shape_representation ) : BOOLEAN;
33679   LOCAL
33680      local_s_a : SET OF shape_aspect := [];
33681      local_s_r : SET OF shape_representation := [];
33682      i : INTEGER;
33683      j : INTEGER;
33684   END_LOCAL;
33685      local_s_a := using_shape_aspect_of_shape_representation(item);
33686      IF SIZEOF(local_s_a) <> 1 THEN
33687         RETURN (FALSE);
33688      ELSE
33689         REPEAT i := 1 TO HIINDEX(local_s_a);
33690            local_s_r := find_shape_representation_of_shape_aspect(local_s_a[i]);
33691            REPEAT j := 1 TO HIINDEX(local_s_r);
33692               IF ('STEP_MERGED_CAD_SCHEMA.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(local_s_r[j])) AND (local_s_r[j] :<>: item) THEN
33693                  RETURN (FALSE);
33694               END_IF;
33695            END_REPEAT;
33696         END_REPEAT;
33697      END_IF;
33698      RETURN (TRUE);
33699END_FUNCTION;
33700
33701-- IN AP214
33702FUNCTION unique_link_usage
33703      (link : kinematic_link ) : BOOLEAN;
33704   LOCAL
33705      mechs : SET OF mechanism;
33706      joints : SET OF kinematic_joint;
33707      struct : kinematic_structure;
33708   END_LOCAL;
33709      joints := bag_to_set(USEDIN(link, 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_JOINT.FIRST_LINK') + USEDIN(link, 'STEP_MERGED_CAD_SCHEMA.KINEMATIC_JOINT.SECOND_LINK'));
33710--       struct := joints[1].structure;
33711      REPEAT i := 2 TO SIZEOF(joints);
33712--          IF joints[i].structure :<>: struct THEN
33713--             RETURN (FALSE);
33714--          END_IF;
33715      END_REPEAT;
33716      mechs := bag_to_set(USEDIN(struct, 'STEP_MERGED_CAD_SCHEMA.MECHANISM.STRUCTURE_DEFINITION'));
33717      IF SIZEOF(mechs) <> 1 THEN
33718         RETURN (FALSE);
33719      END_IF;
33720      RETURN (TRUE);
33721END_FUNCTION;
33722
33723-- IN AP242
33724FUNCTION used_variables
33725      (arg : generic_expression ) : SET [0:?] OF generic_variable;
33726   LOCAL
33727      result : SET OF generic_variable := [];
33728   END_LOCAL;
33729      IF 'STEP_MERGED_CAD_SCHEMA.GENERIC_VARIABLE' IN TYPEOF(arg) THEN
33730         RETURN ([ arg ]);
33731      END_IF;
33732      IF 'STEP_MERGED_CAD_SCHEMA.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg) THEN
33733         RETURN (used_variables(arg\unary_generic_expression.operand));
33734      END_IF;
33735      IF 'STEP_MERGED_CAD_SCHEMA.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg) THEN
33736         RETURN (used_variables(arg\binary_generic_expression.operands[1]) + used_variables(arg\binary_generic_expression.operands[2]));
33737      END_IF;
33738      IF 'STEP_MERGED_CAD_SCHEMA.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg) THEN
33739         REPEAT i := 1 TO SIZEOF(arg\multiple_arity_generic_expression.operands);
33740            result := result + used_variables(arg\multiple_arity_generic_expression.operands[i]);
33741         END_REPEAT;
33742         RETURN (result);
33743      END_IF;
33744      RETURN ([]);
33745END_FUNCTION;
33746
33747-- DIFF IN AP214
33748FUNCTION using_items
33749      (item : founded_item_select;
33750       checked_items : SET [0:?] OF founded_item_select ) : SET [0:?] OF founded_item_select;
33751   LOCAL
33752      new_check_items : SET OF founded_item_select;
33753      result_items : SET OF founded_item_select;
33754      next_items : SET OF founded_item_select;
33755   END_LOCAL;
33756      result_items := [];
33757      new_check_items := checked_items + item;
33758      next_items := QUERY (z <* bag_to_set(USEDIN(item, ''))| ('STEP_MERGED_CAD_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z)) OR ('STEP_MERGED_CAD_SCHEMA.FOUNDED_ITEM' IN TYPEOF(z)));
33759      IF SIZEOF(next_items) > 0 THEN
33760         REPEAT i := 1 TO HIINDEX(next_items);
33761            IF NOT (next_items[i] IN new_check_items) THEN
33762               result_items := result_items + next_items[i] + using_items(next_items[i], new_check_items);
33763            END_IF;
33764         END_REPEAT;
33765      END_IF;
33766      RETURN (result_items);
33767END_FUNCTION;
33768
33769-- IN AP242
33770FUNCTION using_product_definition_of_shape_aspect
33771      (item : shape_aspect ) : product_definition;
33772      IF 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(item.of_shape.definition) THEN
33773         RETURN (item.of_shape.definition);
33774      ELSE
33775         RETURN (?);
33776      END_IF;
33777END_FUNCTION;
33778
33779-- IN AP242
33780FUNCTION using_product_definition_of_shape_representation
33781      (item : shape_representation ) : SET [0:?] OF product_definition;
33782   LOCAL
33783      local_s_d_r : SET OF shape_definition_representation := [];
33784      local_p_d : SET OF product_definition := [];
33785      i : INTEGER;
33786   END_LOCAL;
33787      local_s_d_r := QUERY (i1 <* bag_to_set(USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.' + 'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))| 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(i1));
33788      REPEAT i := 1 TO HIINDEX(local_s_d_r);
33789         IF 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION' IN TYPEOF(local_s_d_r[i]\property_definition_representation.definition) THEN
33790            IF 'STEP_MERGED_CAD_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition) THEN
33791               local_p_d := local_p_d + local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
33792            END_IF;
33793         END_IF;
33794      END_REPEAT;
33795      RETURN (local_p_d);
33796END_FUNCTION;
33797
33798-- IN AP242
33799FUNCTION using_representation_with_mapping
33800      (item : representation_item ) : SET [0:?] OF representation;
33801   LOCAL
33802      results : SET OF representation := [];
33803      local_results : SET OF representation := [];
33804      local_representation_map : SET OF representation_map := [];
33805      intermediate_items : SET OF representation_item := [];
33806      i : INTEGER;
33807      j : INTEGER;
33808   END_LOCAL;
33809      local_results := QUERY (z <* using_representations(item)| SIZEOF(USEDIN(z, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.' + 'MAPPED_REPRESENTATION')) > 0);
33810      IF SIZEOF(local_results) = 0 THEN
33811         RETURN ([]);
33812      ELSE
33813         REPEAT i := 1 TO HIINDEX(local_results);
33814            local_representation_map := local_representation_map + bag_to_set(USEDIN(local_results[i], 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
33815         END_REPEAT;
33816         REPEAT i := 1 TO HIINDEX(local_representation_map);
33817            intermediate_items := intermediate_items + bag_to_set(USEDIN(local_representation_map[i], 'STEP_MERGED_CAD_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'));
33818         END_REPEAT;
33819         REPEAT j := 1 TO HIINDEX(intermediate_items);
33820            results := results + bag_to_set(using_representation_with_mapping(intermediate_items[j]));
33821         END_REPEAT;
33822      END_IF;
33823      RETURN (results);
33824END_FUNCTION;
33825
33826-- DIFF IN AP214
33827FUNCTION using_representations
33828      (item : founded_item_select ) : SET [0:?] OF representation;
33829   LOCAL
33830      results : SET OF representation;
33831      result_bag : BAG OF representation;
33832      intermediate_items : SET OF founded_item_select;
33833   END_LOCAL;
33834      results := [];
33835      result_bag := USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS');
33836      IF SIZEOF(result_bag) > 0 THEN
33837         REPEAT i := 1 TO HIINDEX(result_bag);
33838            results := results + result_bag[i];
33839         END_REPEAT;
33840      END_IF;
33841      intermediate_items := using_items(item, []);
33842      IF SIZEOF(intermediate_items) > 0 THEN
33843         REPEAT i := 1 TO HIINDEX(intermediate_items);
33844            result_bag := USEDIN(intermediate_items[i], 'STEP_MERGED_CAD_SCHEMA.REPRESENTATION.ITEMS');
33845            IF SIZEOF(result_bag) > 0 THEN
33846               REPEAT j := 1 TO HIINDEX(result_bag);
33847                  results := results + result_bag[j];
33848               END_REPEAT;
33849            END_IF;
33850         END_REPEAT;
33851      END_IF;
33852      RETURN (results);
33853END_FUNCTION;
33854
33855-- IN AP242
33856FUNCTION using_shape_aspect_of_shape_representation
33857      (item : shape_representation ) : SET [0:?] OF shape_aspect;
33858   LOCAL
33859      local_s_d_r : SET OF shape_definition_representation := [];
33860      local_s_d_r2 : BAG OF shape_definition_representation := [];
33861      local_s_a : SET OF shape_aspect := [];
33862      i : INTEGER;
33863   END_LOCAL;
33864      local_s_d_r2 := local_s_d_r2 + QUERY (pdr <* USEDIN(item, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')| ('STEP_MERGED_CAD_SCHEMA.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
33865      local_s_d_r := bag_to_set(local_s_d_r2);
33866      REPEAT i := 1 TO HIINDEX(local_s_d_r);
33867         IF 'STEP_MERGED_CAD_SCHEMA.SHAPE_ASPECT' IN TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition) THEN
33868            local_s_a := local_s_a + local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
33869         END_IF;
33870      END_REPEAT;
33871      RETURN (local_s_a);
33872END_FUNCTION;
33873
33874FUNCTION valid_basis_curve_in_2d_wireframe
33875      (crv : curve ) : BOOLEAN;
33876      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.ELLIPSE', 'STEP_MERGED_CAD_SCHEMA.CIRCLE' ] * TYPEOF(crv)) = 1 THEN
33877         RETURN (TRUE);
33878      ELSE
33879         IF 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' IN TYPEOF(crv) THEN
33880            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.PARABOLA', 'STEP_MERGED_CAD_SCHEMA.HYPERBOLA' ] * TYPEOF(crv\trimmed_curve.basis_curve)) = 1 THEN
33881               RETURN (TRUE);
33882            ELSE
33883               RETURN (valid_basis_curve_in_2d_wireframe(crv\trimmed_curve.basis_curve));
33884            END_IF;
33885         ELSE
33886            IF 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_2D' IN TYPEOF(crv) THEN
33887               RETURN (valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d.basis_curve));
33888            ELSE
33889               IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(crv) THEN
33890                  RETURN (valid_basis_curve_in_2d_wireframe(crv\curve_replica.parent_curve));
33891               ELSE
33892                  IF 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(crv) THEN
33893                     RETURN (SIZEOF(QUERY (ccs <* crv\composite_curve.segments| NOT valid_basis_curve_in_2d_wireframe(ccs.parent_curve))) = 0);
33894                  END_IF;
33895               END_IF;
33896            END_IF;
33897         END_IF;
33898      END_IF;
33899      RETURN (FALSE);
33900END_FUNCTION;
33901
33902FUNCTION valid_calendar_date
33903      (date : calendar_date ) : LOGICAL;
33904      CASE date.month_component OF
33905         1 :
33906               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33907         2 :
33908               BEGIN
33909                  IF leap_year(date.year_component) THEN
33910                     RETURN ((1 <= date.day_component) AND (date.day_component <= 29));
33911                  ELSE
33912                     RETURN ((1 <= date.day_component) AND (date.day_component <= 28));
33913                  END_IF;
33914               END;
33915         3 :
33916               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33917         4 :
33918               RETURN ((1 <= date.day_component) AND (date.day_component <= 30));
33919         5 :
33920               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33921         6 :
33922               RETURN ((1 <= date.day_component) AND (date.day_component <= 30));
33923         7 :
33924               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33925         8 :
33926               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33927         9 :
33928               RETURN ((1 <= date.day_component) AND (date.day_component <= 30));
33929         10 :
33930               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33931         11 :
33932               RETURN ((1 <= date.day_component) AND (date.day_component <= 30));
33933         12 :
33934               RETURN ((1 <= date.day_component) AND (date.day_component <= 31));
33935      END_CASE;
33936      RETURN (FALSE);
33937END_FUNCTION;
33938
33939-- IN AP242
33940FUNCTION valid_csg_2d_primitives
33941      (input : csg_solid_2d ) : BOOLEAN;
33942      CASE TRUE OF
33943         'STEP_MERGED_CAD_SCHEMA.PRIMITIVE_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression) :
33944               BEGIN
33945                  IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.CIRCULAR_AREA', 'STEP_MERGED_CAD_SCHEMA.COMPLEX_AREA', 'STEP_MERGED_CAD_SCHEMA.ELLIPTIC_AREA', 'STEP_MERGED_CAD_SCHEMA.POLYGONAL_AREA', 'STEP_MERGED_CAD_SCHEMA.PRIMITIVE_2D_WITH_INNER_BOUNDARY', 'STEP_MERGED_CAD_SCHEMA.RECTANGULAR_AREA' ] * TYPEOF(input\csg_solid_2d.tree_root_expression)) > 0 THEN
33946                     RETURN (TRUE);
33947                  ELSE
33948                     RETURN (FALSE);
33949                  END_IF;
33950               END;
33951         'STEP_MERGED_CAD_SCHEMA.BOOLEAN_RESULT_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression) :
33952               RETURN (valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.first_operand) AND valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.second_operand));
33953         'STEP_MERGED_CAD_SCHEMA.HALF_SPACE_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression) :
33954               RETURN (TRUE);
33955      OTHERWISE :
33956            RETURN (FALSE);
33957      END_CASE;
33958END_FUNCTION;
33959
33960-- DIFF IN AP203e2
33961-- IN AP203e2/AP242
33962FUNCTION valid_datum_target_parameters
33963      (pdf : placed_datum_target_feature ) : BOOLEAN;
33964   LOCAL
33965      rep_set : SET OF representation := [];
33966      parameter_representations : SET OF representation;
33967   END_LOCAL;
33968      REPEAT i := 1 TO HIINDEX(pdf.representation_associations);
33969         rep_set := rep_set + pdf.representation_associations[i].used_representation;
33970      END_REPEAT;
33971      parameter_representations := QUERY (rep <* rep_set| 'STEP_MERGED_CAD_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(rep));
33972      IF SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <* srwp.items| (i.name = 'orientation') AND ('STEP_MERGED_CAD_SCHEMA.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1 THEN
33973         RETURN (FALSE);
33974      END_IF;
33975      CASE pdf\shape_aspect.description OF
33976         'point' :
33977               RETURN (SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(srwp.items) = 1))) = 1);
33978         'circle', 'circular curve' :
33979               RETURN ((SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(srwp.items) = 2))) = 1) AND (SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <* srwp.items| (i.name = 'target diameter') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1));
33980         'line' :
33981               RETURN (SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <* srwp.items| (i.name = 'target length') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1);
33982         'rectangle' :
33983               RETURN (((SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(srwp.items) = 3))) = 1) AND (SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <* srwp.items| (i.name = 'target length') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1)) AND (SIZEOF(QUERY (srwp <* parameter_representations| (SIZEOF(QUERY (i <* srwp.items| (i.name = 'target width') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(i)) = 2))) = 1))) = 1));
33984      OTHERWISE :
33985            RETURN (FALSE);
33986      END_CASE;
33987END_FUNCTION;
33988
33989FUNCTION valid_geometrically_bounded_wf_curve
33990      (crv : curve ) : BOOLEAN;
33991      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.POLYLINE', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.ELLIPSE', 'STEP_MERGED_CAD_SCHEMA.CIRCLE' ] * TYPEOF(crv)) = 1 THEN
33992         RETURN (TRUE);
33993      ELSE
33994         IF 'STEP_MERGED_CAD_SCHEMA.TRIMMED_CURVE' IN TYPEOF(crv) THEN
33995            IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.PARABOLA', 'STEP_MERGED_CAD_SCHEMA.HYPERBOLA' ] * TYPEOF(crv\trimmed_curve.basis_curve)) = 1 THEN
33996               RETURN (TRUE);
33997            ELSE
33998               RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve));
33999            END_IF;
34000         ELSE
34001            IF 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(crv) THEN
34002               RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve));
34003            ELSE
34004               IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(crv) THEN
34005                  RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve));
34006               ELSE
34007                  IF 'STEP_MERGED_CAD_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(crv) THEN
34008                     RETURN (SIZEOF(QUERY (ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve))) = 0);
34009                  END_IF;
34010               END_IF;
34011            END_IF;
34012         END_IF;
34013      END_IF;
34014      RETURN (FALSE);
34015END_FUNCTION;
34016
34017FUNCTION valid_geometrically_bounded_wf_point
34018      (pnt : point ) : BOOLEAN;
34019      IF 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
34020         RETURN (TRUE);
34021      ELSE
34022         IF 'STEP_MERGED_CAD_SCHEMA.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
34023            RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve));
34024         ELSE
34025            IF 'STEP_MERGED_CAD_SCHEMA.POINT_REPLICA' IN TYPEOF(pnt) THEN
34026               RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt));
34027            END_IF;
34028         END_IF;
34029      END_IF;
34030      RETURN (FALSE);
34031END_FUNCTION;
34032
34033FUNCTION valid_measure_value
34034      (m : measure_value ) : BOOLEAN;
34035      IF 'REAL' IN TYPEOF(m) THEN
34036         RETURN (m > 0.0);
34037      ELSE
34038         IF 'INTEGER' IN TYPEOF(m) THEN
34039            RETURN (m > 0);
34040         ELSE
34041            RETURN (TRUE);
34042         END_IF;
34043      END_IF;
34044END_FUNCTION;
34045
34046-- IN AP203e2/AP242
34047FUNCTION valid_selected_instance_representation
34048      (pd : product_definition_or_assembly_relationship ) : LOGICAL;
34049   LOCAL
34050      properties : SET OF property_definition := bag_to_set(QUERY (prd <* USEDIN(pd, 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| prd.name = 'occurrence selection'));
34051      property_definition_representations : SET OF property_definition_representation := bag_to_set(QUERY (pdr <* USEDIN(properties[1], 'STEP_MERGED_CAD_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| pdr.used_representation.name = 'selection criteria'));
34052      selected_representation : representation;
34053   END_LOCAL;
34054      IF SIZEOF(properties) <> 1 THEN
34055         RETURN (FALSE);
34056      END_IF;
34057      IF SIZEOF(property_definition_representations) <> 1 THEN
34058         RETURN (FALSE);
34059      END_IF;
34060      selected_representation := property_definition_representations[1]\property_definition_representation.used_representation;
34061      IF (SIZEOF(selected_representation\representation.items) < 1) OR (SIZEOF(selected_representation\representation.items) > 2) THEN
34062         RETURN (FALSE);
34063      END_IF;
34064      IF SIZEOF(QUERY (i <* selected_representation\representation.items| (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.VALUE_RANGE' ] * TYPEOF(i)) = 1) AND (i.name = 'selection quantity'))) <> 1 THEN
34065         RETURN (FALSE);
34066      END_IF;
34067      IF SIZEOF(QUERY (i <* selected_representation\representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'selection control'))) > 1 THEN
34068         RETURN (FALSE);
34069      END_IF;
34070      IF (SIZEOF(QUERY (i <* selected_representation\representation.items| ('STEP_MERGED_CAD_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 'selection control'))) = 0) AND (SIZEOF(QUERY (i <* selected_representation\representation.items| (i.name = 'selection quantity') AND (SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.QUALIFIED_REPRESENTATION_ITEM', 'STEP_MERGED_CAD_SCHEMA.VALUE_RANGE' ] * TYPEOF(i)) = 0))) > 0) THEN
34071         RETURN (FALSE);
34072      END_IF;
34073      RETURN (TRUE);
34074END_FUNCTION;
34075
34076FUNCTION valid_time
34077      (time : local_time ) : BOOLEAN;
34078      IF EXISTS(time.second_component) THEN
34079         RETURN (EXISTS(time.minute_component));
34080      ELSE
34081         RETURN (TRUE);
34082      END_IF;
34083END_FUNCTION;
34084
34085-- DIFF IN AP214
34086-- DIFF IN AP203e2
34087FUNCTION valid_units
34088      (m : measure_with_unit ) : BOOLEAN;
34089      IF 'STEP_MERGED_CAD_SCHEMA.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
34090         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34091            RETURN (FALSE);
34092         END_IF;
34093      END_IF;
34094      IF 'STEP_MERGED_CAD_SCHEMA.MASS_MEASURE' IN TYPEOF(m.value_component) THEN
34095         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34096            RETURN (FALSE);
34097         END_IF;
34098      END_IF;
34099      IF 'STEP_MERGED_CAD_SCHEMA.TIME_MEASURE' IN TYPEOF(m.value_component) THEN
34100         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN
34101            RETURN (FALSE);
34102         END_IF;
34103      END_IF;
34104      IF 'STEP_MERGED_CAD_SCHEMA.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN
34105         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN
34106            RETURN (FALSE);
34107         END_IF;
34108      END_IF;
34109      IF 'STEP_MERGED_CAD_SCHEMA.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
34110         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
34111            RETURN (FALSE);
34112         END_IF;
34113      END_IF;
34114      IF 'STEP_MERGED_CAD_SCHEMA.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
34115         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
34116            RETURN (FALSE);
34117         END_IF;
34118      END_IF;
34119      IF 'STEP_MERGED_CAD_SCHEMA.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34120         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN
34121            RETURN (FALSE);
34122         END_IF;
34123      END_IF;
34124      IF 'STEP_MERGED_CAD_SCHEMA.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
34125         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
34126            RETURN (FALSE);
34127         END_IF;
34128      END_IF;
34129      IF 'STEP_MERGED_CAD_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
34130         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34131            RETURN (FALSE);
34132         END_IF;
34133      END_IF;
34134      IF 'STEP_MERGED_CAD_SCHEMA.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
34135         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34136            RETURN (FALSE);
34137         END_IF;
34138      END_IF;
34139      IF 'STEP_MERGED_CAD_SCHEMA.AREA_MEASURE' IN TYPEOF(m.value_component) THEN
34140         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34141            RETURN (FALSE);
34142         END_IF;
34143      END_IF;
34144      IF 'STEP_MERGED_CAD_SCHEMA.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN
34145         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34146            RETURN (FALSE);
34147         END_IF;
34148      END_IF;
34149      IF 'STEP_MERGED_CAD_SCHEMA.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN
34150         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34151            RETURN (FALSE);
34152         END_IF;
34153      END_IF;
34154      IF 'STEP_MERGED_CAD_SCHEMA.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
34155         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34156            RETURN (FALSE);
34157         END_IF;
34158      END_IF;
34159      IF 'STEP_MERGED_CAD_SCHEMA.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
34160         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
34161            RETURN (FALSE);
34162         END_IF;
34163      END_IF;
34164      IF 'STEP_MERGED_CAD_SCHEMA.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN
34165         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34166            RETURN (FALSE);
34167         END_IF;
34168      END_IF;
34169      IF 'STEP_MERGED_CAD_SCHEMA.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34170         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0) THEN
34171            RETURN (FALSE);
34172         END_IF;
34173      END_IF;
34174      IF 'STEP_MERGED_CAD_SCHEMA.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN
34175         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0) THEN
34176            RETURN (FALSE);
34177         END_IF;
34178      END_IF;
34179      IF 'STEP_MERGED_CAD_SCHEMA.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34180         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0) THEN
34181            RETURN (FALSE);
34182         END_IF;
34183      END_IF;
34184      IF 'STEP_MERGED_CAD_SCHEMA.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN
34185         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0) THEN
34186            RETURN (FALSE);
34187         END_IF;
34188      END_IF;
34189      IF 'STEP_MERGED_CAD_SCHEMA.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN
34190         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34191            RETURN (FALSE);
34192         END_IF;
34193      END_IF;
34194      IF 'STEP_MERGED_CAD_SCHEMA.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN
34195         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34196            RETURN (FALSE);
34197         END_IF;
34198      END_IF;
34199      IF 'STEP_MERGED_CAD_SCHEMA.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN
34200         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
34201            RETURN (FALSE);
34202         END_IF;
34203      END_IF;
34204      IF 'STEP_MERGED_CAD_SCHEMA.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34205         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
34206            RETURN (FALSE);
34207         END_IF;
34208      END_IF;
34209      IF 'STEP_MERGED_CAD_SCHEMA.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34210         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0) THEN
34211            RETURN (FALSE);
34212         END_IF;
34213      END_IF;
34214      IF 'STEP_MERGED_CAD_SCHEMA.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
34215         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
34216            RETURN (FALSE);
34217         END_IF;
34218      END_IF;
34219      IF 'STEP_MERGED_CAD_SCHEMA.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
34220         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0) THEN
34221            RETURN (FALSE);
34222         END_IF;
34223      END_IF;
34224      IF 'STEP_MERGED_CAD_SCHEMA.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
34225         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0) THEN
34226            RETURN (FALSE);
34227         END_IF;
34228      END_IF;
34229      IF 'STEP_MERGED_CAD_SCHEMA.POWER_MEASURE' IN TYPEOF(m.value_component) THEN
34230         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0) THEN
34231            RETURN (FALSE);
34232         END_IF;
34233      END_IF;
34234      IF 'STEP_MERGED_CAD_SCHEMA.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN
34235         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34236            RETURN (FALSE);
34237         END_IF;
34238      END_IF;
34239      IF 'STEP_MERGED_CAD_SCHEMA.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
34240         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0) THEN
34241            RETURN (FALSE);
34242         END_IF;
34243      END_IF;
34244      IF 'STEP_MERGED_CAD_SCHEMA.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN
34245         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
34246            RETURN (FALSE);
34247         END_IF;
34248      END_IF;
34249      IF 'STEP_MERGED_CAD_SCHEMA.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN
34250         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
34251            RETURN (FALSE);
34252         END_IF;
34253      END_IF;
34254      IF 'STEP_MERGED_CAD_SCHEMA.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN
34255         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34256            RETURN (FALSE);
34257         END_IF;
34258      END_IF;
34259      IF 'STEP_MERGED_CAD_SCHEMA.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN
34260         IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
34261            RETURN (FALSE);
34262         END_IF;
34263      END_IF;
34264      RETURN (TRUE);
34265END_FUNCTION;
34266
34267FUNCTION valid_wireframe_edge_curve
34268      (crv : curve ) : BOOLEAN;
34269      IF SIZEOF([ 'STEP_MERGED_CAD_SCHEMA.LINE', 'STEP_MERGED_CAD_SCHEMA.CONIC', 'STEP_MERGED_CAD_SCHEMA.B_SPLINE_CURVE', 'STEP_MERGED_CAD_SCHEMA.POLYLINE' ] * TYPEOF(crv)) = 1 THEN
34270         RETURN (TRUE);
34271      ELSE
34272         IF 'STEP_MERGED_CAD_SCHEMA.CURVE_REPLICA' IN TYPEOF(crv) THEN
34273            RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
34274         ELSE
34275            IF 'STEP_MERGED_CAD_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(crv) THEN
34276               RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve));
34277            END_IF;
34278         END_IF;
34279      END_IF;
34280      RETURN (FALSE);
34281END_FUNCTION;
34282
34283FUNCTION valid_wireframe_vertex_point
34284      (pnt : point ) : BOOLEAN;
34285      IF 'STEP_MERGED_CAD_SCHEMA.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
34286         RETURN (TRUE);
34287      ELSE
34288         IF 'STEP_MERGED_CAD_SCHEMA.POINT_REPLICA' IN TYPEOF(pnt) THEN
34289            RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
34290         END_IF;
34291      END_IF;
34292      RETURN (FALSE);
34293END_FUNCTION;
34294
34295-- IN AP242
34296FUNCTION validate_accuracy_types
34297      (ei : shape_data_quality_criterion;
34298       type_list : BAG [0:?] OF STRING ) : LOGICAL;
34299   LOCAL
34300      sdqca : BAG OF shape_data_quality_criterion_and_accuracy_association := [];
34301      sma : BAG OF shape_measurement_accuracy := [];
34302      sdqir : SET OF shape_data_quality_inspection_result := [];
34303      scraa : BAG OF shape_inspection_result_accuracy_association := [];
34304      t_logic : BOOLEAN;
34305   END_LOCAL;
34306      sdqca := USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.' + 'SHAPE_DATA_QUALITY_CRITERION');
34307      IF SIZEOF(sdqca) <> 0 THEN
34308         REPEAT i := 1 TO SIZEOF(sdqca);
34309            sma := sma + sdqca[i].required_specific_accuracy;
34310         END_REPEAT;
34311         IF SIZEOF(type_list) < SIZEOF(sma) THEN
34312            RETURN (FALSE);
34313         END_IF;
34314         REPEAT i := 1 TO SIZEOF(sma);
34315            t_logic := FALSE;
34316            REPEAT j := 1 TO SIZEOF(type_list);
34317               IF type_list[j] IN value_limit_type(sma[i].range) THEN
34318                  t_logic := TRUE;
34319                  ESCAPE;
34320               END_IF;
34321            END_REPEAT;
34322            IF NOT t_logic THEN
34323               RETURN (FALSE);
34324            END_IF;
34325         END_REPEAT;
34326      END_IF;
34327      sdqir := QUERY (q <* bag_to_set(USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
34328      IF SIZEOF(sdqir) = 0 THEN
34329         RETURN (TRUE);
34330      END_IF;
34331      REPEAT i := 1 TO SIZEOF(sdqir);
34332         scraa := USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.' + 'SHAPE_DATA_QUALITY_RESULT');
34333         IF SIZEOF(scraa) <> 0 THEN
34334            sma := [];
34335            REPEAT j := 1 TO SIZEOF(scraa);
34336               sma := sma + scraa[j].applied_specific_accuracy;
34337            END_REPEAT;
34338            IF SIZEOF(type_list) < SIZEOF(sma) THEN
34339               RETURN (FALSE);
34340            END_IF;
34341            REPEAT j := 1 TO SIZEOF(sma);
34342               t_logic := FALSE;
34343               REPEAT k := 1 TO SIZEOF(type_list);
34344                  IF type_list[k] IN value_limit_type(sma[j].range) THEN
34345                     t_logic := TRUE;
34346                     ESCAPE;
34347                  END_IF;
34348               END_REPEAT;
34349               IF NOT t_logic THEN
34350                  RETURN (FALSE);
34351               END_IF;
34352            END_REPEAT;
34353         END_IF;
34354      END_REPEAT;
34355      RETURN (TRUE);
34356END_FUNCTION;
34357
34358-- IN AP242
34359FUNCTION validate_attribute_id
34360      (attid : attribute_identifier ) : BOOLEAN;
34361   CONSTANT
34362      letters : SET [52:52] OF STRING := [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ];
34363      numbers_etc : SET [15:15] OF STRING := [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', '[', ']', '.', '\' ];
34364      valid_chars : SET [67:67] OF STRING := letters + numbers_etc;
34365   END_CONSTANT;
34366   LOCAL
34367      id_length : INTEGER := LENGTH(attid);
34368      id_valid : BOOLEAN := TRUE;
34369      i : INTEGER;
34370   END_LOCAL;
34371      IF NOT (attid[1] IN letters) THEN
34372         id_valid := FALSE;
34373      END_IF;
34374      REPEAT i := 2 TO id_length WHILE id_valid = TRUE;
34375         IF NOT (attid[i] IN valid_chars) THEN
34376            id_valid := FALSE;
34377         END_IF;
34378      END_REPEAT;
34379      RETURN (id_valid);
34380END_FUNCTION;
34381
34382-- IN AP203e2/AP242
34383FUNCTION validate_countersink_radii
34384      (cskhole : solid_with_stepped_round_hole_and_conical_transitions ) : BOOLEAN;
34385   LOCAL
34386      i : INTEGER;
34387      j : INTEGER;
34388      n : INTEGER := 1 + cskhole\solid_with_stepped_round_hole.segments;
34389      smaller : positive_length_measure;
34390      larger : positive_length_measure;
34391   END_LOCAL;
34392      REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions);
34393         IF (cskhole.conical_transitions[i].transition_number = 1) AND (cskhole.conical_transitions[i].cone_apex_angle < 0) XOR (cskhole.conical_transitions[i].transition_number = n) AND (cskhole.conical_transitions[i].cone_apex_angle > 0) THEN
34394            RETURN (FALSE);
34395         ELSE
34396            IF (cskhole.conical_transitions[i].transition_number <> 1) AND (cskhole.conical_transitions[i].transition_number <> n) THEN
34397               BEGIN
34398                  j := cskhole.conical_transitions[i].transition_number;
34399                  IF cskhole\solid_with_stepped_round_hole.segment_radii[j] > cskhole\solid_with_stepped_round_hole.segment_radii[(j - 1)] THEN
34400                     BEGIN
34401                        IF cskhole.conical_transitions[i].cone_apex_angle > 0 THEN
34402                           RETURN (FALSE);
34403                        END_IF;
34404                        larger := cskhole\solid_with_stepped_round_hole.segment_radii[j];
34405                        smaller := cskhole\solid_with_stepped_round_hole.segment_radii[(j - 1)];
34406                     END;
34407                  ELSE
34408                     BEGIN
34409                        IF cskhole.conical_transitions[i].cone_apex_angle < 0 THEN
34410                           RETURN (FALSE);
34411                        END_IF;
34412                        larger := cskhole\solid_with_stepped_round_hole.segment_radii[(j - 1)];
34413                        smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j];
34414                     END;
34415                  END_IF;
34416                  IF (cskhole.conical_transitions[i].cone_base_radius > larger) OR (cskhole.conical_transitions[i].cone_base_radius < smaller) THEN
34417                     RETURN (FALSE);
34418                  END_IF;
34419               END;
34420            END_IF;
34421         END_IF;
34422      END_REPEAT;
34423      RETURN (TRUE);
34424END_FUNCTION;
34425
34426-- IN AP242
34427FUNCTION validate_ecdq_inspected_elements_type
34428      (ei : externally_conditioned_data_quality_criterion;
34429       type_list : BAG [0:?] OF STRING ) : LOGICAL;
34430   LOCAL
34431      sdqir : SET OF externally_conditioned_data_quality_inspection_result := [];
34432      dir : SET OF data_quality_inspection_instance_report := [];
34433      sdiri : SET OF externally_conditioned_data_quality_inspection_instance_report_item := [];
34434      t_type_list : BAG OF STRING := [];
34435   END_LOCAL;
34436      sdqir := QUERY (q <* bag_to_set(USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| 'STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
34437      IF SIZEOF(sdqir) = 0 THEN
34438         RETURN (TRUE);
34439      END_IF;
34440      REPEAT i := 1 TO SIZEOF(sdqir);
34441         dir := dir + QUERY (q <* bag_to_set(USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(q)));
34442      END_REPEAT;
34443      IF SIZEOF(dir) = 0 THEN
34444         RETURN (TRUE);
34445      END_IF;
34446      REPEAT i := 1 TO SIZEOF(dir);
34447         sdiri := sdiri + QUERY (q <* dir[i].inspected_instances| ('STEP_MERGED_CAD_SCHEMA.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN TYPEOF(q)));
34448      END_REPEAT;
34449      IF SIZEOF(sdiri) = 0 THEN
34450         RETURN (TRUE);
34451      END_IF;
34452      REPEAT i := 1 TO SIZEOF(sdiri);
34453         IF SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list) THEN
34454            RETURN (FALSE);
34455         END_IF;
34456         t_type_list := type_list;
34457         REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
34458            REPEAT k := 1 TO SIZEOF(t_type_list);
34459               IF t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]) THEN
34460                  t_type_list := t_type_list - t_type_list[k];
34461                  ESCAPE;
34462               END_IF;
34463            END_REPEAT;
34464         END_REPEAT;
34465         IF SIZEOF(t_type_list) > 0 THEN
34466            RETURN (FALSE);
34467         END_IF;
34468      END_REPEAT;
34469      RETURN (TRUE);
34470END_FUNCTION;
34471
34472-- IN AP242
34473FUNCTION validate_inspected_elements_type
34474      (ei : shape_data_quality_criterion;
34475       type_list : BAG [0:?] OF STRING ) : LOGICAL;
34476   LOCAL
34477      sdqir : SET OF shape_data_quality_inspection_result := [];
34478      sdir : SET OF shape_data_quality_inspection_instance_report := [];
34479      sdiri : SET OF shape_data_quality_inspection_instance_report_item := [];
34480      t_type_list : BAG OF STRING := [];
34481   END_LOCAL;
34482      sdqir := QUERY (q <* bag_to_set(USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
34483      IF SIZEOF(sdqir) = 0 THEN
34484         RETURN (TRUE);
34485      END_IF;
34486      REPEAT i := 1 TO SIZEOF(sdqir);
34487         sdir := sdir + QUERY (q <* bag_to_set(USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(q)));
34488      END_REPEAT;
34489      IF SIZEOF(sdir) = 0 THEN
34490         RETURN (TRUE);
34491      END_IF;
34492      REPEAT i := 1 TO SIZEOF(sdir);
34493         sdiri := sdiri + QUERY (q <* sdir[i].inspected_instances| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN TYPEOF(q)));
34494      END_REPEAT;
34495      IF SIZEOF(sdiri) = 0 THEN
34496         RETURN (TRUE);
34497      END_IF;
34498      REPEAT i := 1 TO SIZEOF(sdiri);
34499         IF SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list) THEN
34500            RETURN (FALSE);
34501         END_IF;
34502         t_type_list := type_list;
34503         REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
34504            REPEAT k := 1 TO SIZEOF(t_type_list);
34505               IF t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]) THEN
34506                  t_type_list := t_type_list - t_type_list[k];
34507                  ESCAPE;
34508               END_IF;
34509            END_REPEAT;
34510         END_REPEAT;
34511         IF SIZEOF(t_type_list) > 0 THEN
34512            RETURN (FALSE);
34513         END_IF;
34514      END_REPEAT;
34515      RETURN (TRUE);
34516END_FUNCTION;
34517
34518-- IN AP242
34519FUNCTION validate_locations_of_extreme_value_type
34520      (ei : shape_data_quality_criterion;
34521       type_list : BAG [0:?] OF STRING ) : LOGICAL;
34522   LOCAL
34523      sdqir : SET OF shape_data_quality_inspection_result := [];
34524      sdir : SET OF shape_data_quality_inspection_instance_report := [];
34525      sdei : SET OF instance_report_item_with_extreme_instances := [];
34526      t_type_list : BAG OF STRING := [];
34527   END_LOCAL;
34528      sdqir := QUERY (q <* bag_to_set(USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
34529      IF SIZEOF(sdqir) = 0 THEN
34530         RETURN (TRUE);
34531      END_IF;
34532      REPEAT i := 1 TO SIZEOF(sdqir);
34533         sdir := sdir + QUERY (q <* bag_to_set(USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(q)));
34534      END_REPEAT;
34535      REPEAT i := 1 TO SIZEOF(sdir);
34536         sdei := sdei + QUERY (q <* sdir[i].inspected_instances| ('STEP_MERGED_CAD_SCHEMA.' + 'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN TYPEOF(q)));
34537      END_REPEAT;
34538      IF SIZEOF(sdei) = 0 THEN
34539         RETURN (TRUE);
34540      END_IF;
34541      IF (SIZEOF(type_list) = 0) AND (SIZEOF(sdei) <> 0) THEN
34542         RETURN (FALSE);
34543      END_IF;
34544      REPEAT i := 1 TO SIZEOF(sdei);
34545         REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
34546            IF SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value) <> SIZEOF(type_list) THEN
34547               RETURN (FALSE);
34548            END_IF;
34549            t_type_list := type_list;
34550            REPEAT k := 1 TO SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value);
34551               REPEAT l := 1 TO SIZEOF(t_type_list);
34552                  IF t_type_list[l] IN TYPEOF(sdei[i].extreme_instances[j].locations_of_extreme_value[k]) THEN
34553                     t_type_list := t_type_list - t_type_list[l];
34554                     ESCAPE;
34555                  END_IF;
34556               END_REPEAT;
34557            END_REPEAT;
34558            IF SIZEOF(t_type_list) > 0 THEN
34559               RETURN (FALSE);
34560            END_IF;
34561         END_REPEAT;
34562      END_REPEAT;
34563      RETURN (TRUE);
34564END_FUNCTION;
34565
34566-- IN AP242
34567FUNCTION validate_measured_data_type
34568      (ei : shape_data_quality_criterion;
34569       type_string : STRING ) : LOGICAL;
34570   LOCAL
34571      sdqir : SET OF shape_data_quality_inspection_result := [];
34572      sdcr : SET OF shape_data_quality_inspection_criterion_report := [];
34573      sdir : SET OF shape_data_quality_inspection_instance_report := [];
34574      sdii : SET OF shape_data_quality_inspection_instance_report_item := [];
34575      sdei : BAG OF instance_report_item_with_extreme_instances := [];
34576   END_LOCAL;
34577      sdqir := QUERY (q <* bag_to_set(USEDIN(ei, 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_RESULT.' + 'CRITERION_INSPECTED'))| 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
34578      IF SIZEOF(sdqir) = 0 THEN
34579         RETURN (TRUE);
34580      END_IF;
34581      REPEAT i := 1 TO SIZEOF(sdqir);
34582         sdcr := sdcr + QUERY (q <* bag_to_set(USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_CRITERION_REPORT' IN TYPEOF(q)));
34583      END_REPEAT;
34584      REPEAT i := 1 TO SIZEOF(sdqir);
34585         sdir := sdir + QUERY (q <* bag_to_set(USEDIN(sdqir[i], 'STEP_MERGED_CAD_SCHEMA.' + 'DATA_QUALITY_INSPECTION_REPORT.' + 'INSPECTION_RESULT'))| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN TYPEOF(q)));
34586      END_REPEAT;
34587      IF (SIZEOF(sdcr) = 0) AND (SIZEOF(sdir) = 0) THEN
34588         RETURN (TRUE);
34589      END_IF;
34590      REPEAT i := 1 TO SIZEOF(sdir);
34591         sdii := sdii + QUERY (q <* sdir[i].inspected_instances| ('STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN TYPEOF(q)));
34592      END_REPEAT;
34593      REPEAT i := 1 TO SIZEOF(sdir);
34594         sdei := sdei + QUERY (q <* sdir[i].inspected_instances| ('STEP_MERGED_CAD_SCHEMA.' + 'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN TYPEOF(q)));
34595      END_REPEAT;
34596      REPEAT i := 1 TO SIZEOF(sdcr);
34597         IF NOT (type_string IN TYPEOF(sdcr[i].representative_measured_value)) THEN
34598            RETURN (FALSE);
34599         END_IF;
34600      END_REPEAT;
34601      REPEAT i := 1 TO SIZEOF(sdii);
34602         IF NOT (type_string IN TYPEOF(sdii[i].measured_value)) THEN
34603            RETURN (FALSE);
34604         END_IF;
34605      END_REPEAT;
34606      REPEAT i := 1 TO SIZEOF(sdei);
34607         REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
34608            IF NOT (type_string IN TYPEOF(sdei[i].extreme_instances[j].measured_value)) THEN
34609               RETURN (FALSE);
34610            END_IF;
34611         END_REPEAT;
34612      END_REPEAT;
34613      RETURN (TRUE);
34614END_FUNCTION;
34615
34616-- IN AP242
34617FUNCTION value_limit_type
34618      (iv : shape_data_quality_value_limit_type_select ) : SET [0:?] OF STRING;
34619   LOCAL
34620      retval : SET OF STRING := [];
34621   END_LOCAL;
34622      IF 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' IN TYPEOF(iv) THEN
34623         retval := TYPEOF(iv\compound_representation_item.item_element[1].value_component);
34624      END_IF;
34625      IF 'STEP_MERGED_CAD_SCHEMA.' + 'SHAPE_DATA_QUALITY_VALUE_LIMIT' IN TYPEOF(iv) THEN
34626         IF 'STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_WITH_UNIT' IN TYPEOF(iv) THEN
34627            retval := TYPEOF(iv\measure_with_unit.value_component);
34628         END_IF;
34629      END_IF;
34630      RETURN (retval);
34631END_FUNCTION;
34632
34633-- DIFF IN AP214
34634FUNCTION value_range_aggregate_rep_item
34635      (agg : AGGREGATE OF representation_item ) : BOOLEAN;
34636      BEGIN
34637         IF SIZEOF(QUERY (i1 <* agg| ('STEP_MERGED_CAD_SCHEMA.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)))) = 6 THEN
34638            RETURN (TRUE);
34639         ELSE
34640            RETURN (FALSE);
34641         END_IF;
34642      END;
34643END_FUNCTION;
34644
34645-- DIFF IN AP214
34646FUNCTION value_range_wr1
34647      (agg : compound_item_definition ) : BOOLEAN;
34648      BEGIN
34649         IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)))) = 2) OR (SIZEOF(QUERY (i2 <* agg| ('STEP_MERGED_CAD_SCHEMA.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i2)))) = 2)) THEN
34650            RETURN (TRUE);
34651         ELSE
34652            RETURN (FALSE);
34653         END_IF;
34654      END;
34655END_FUNCTION;
34656
34657-- DIFF IN AP214
34658FUNCTION value_range_wr2
34659      (agg : compound_item_definition ) : BOOLEAN;
34660      BEGIN
34661         IF (SIZEOF(QUERY (i <* agg| (i\representation_item.name = 'upper limit'))) = 1) AND (SIZEOF(QUERY (i <* agg| (i\representation_item.name = 'lower limit'))) = 1) THEN
34662            RETURN (TRUE);
34663         ELSE
34664            RETURN (FALSE);
34665         END_IF;
34666      END;
34667END_FUNCTION;
34668
34669-- DIFF IN AP214
34670FUNCTION value_range_wr3
34671      (agg : compound_item_definition ) : BOOLEAN;
34672      BEGIN
34673         IF SIZEOF(QUERY (i1 <* agg| ('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND (SIZEOF(QUERY (i2 <* agg| (('STEP_MERGED_CAD_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i2)) AND (i1 :<>: i2)) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2 THEN
34674            RETURN (TRUE);
34675         ELSE
34676            RETURN (FALSE);
34677         END_IF;
34678      END;
34679END_FUNCTION;
34680
34681-- IN AP242
34682FUNCTION values_space_of
34683      (expr : generic_expression ) : maths_space;
34684   LOCAL
34685      e_prefix : STRING := 'STEP_MERGED_CAD_SCHEMA.';
34686      typenames : SET OF STRING := TYPEOF(expr);
34687   END_LOCAL;
34688      IF schema_prefix + 'MATHS_VARIABLE' IN typenames THEN
34689         RETURN (expr\maths_variable.values_space);
34690      END_IF;
34691      IF e_prefix + 'EXPRESSION' IN typenames THEN
34692         IF e_prefix + 'NUMERIC_EXPRESSION' IN typenames THEN
34693            IF expr\numeric_expression.is_int THEN
34694               IF e_prefix + 'INT_LITERAL' IN typenames THEN
34695                  RETURN (make_finite_space([ expr\int_literal.the_value ]));
34696               ELSE
34697                  RETURN (the_integers);
34698               END_IF;
34699            ELSE
34700               IF e_prefix + 'REAL_LITERAL' IN typenames THEN
34701                  RETURN (make_finite_space([ expr\real_literal.the_value ]));
34702               ELSE
34703                  RETURN (the_reals);
34704               END_IF;
34705            END_IF;
34706         END_IF;
34707         IF e_prefix + 'BOOLEAN_EXPRESSION' IN typenames THEN
34708            IF e_prefix + 'BOOLEAN_LITERAL' IN typenames THEN
34709               RETURN (make_finite_space([ expr\boolean_literal.the_value ]));
34710            ELSE
34711               RETURN (the_booleans);
34712            END_IF;
34713         END_IF;
34714         IF e_prefix + 'STRING_EXPRESSION' IN typenames THEN
34715            IF e_prefix + 'STRING_LITERAL' IN typenames THEN
34716               RETURN (make_finite_space([ expr\string_literal.the_value ]));
34717            ELSE
34718               RETURN (the_strings);
34719            END_IF;
34720         END_IF;
34721         RETURN (?);
34722      END_IF;
34723      IF schema_prefix + 'MATHS_FUNCTION' IN typenames THEN
34724         IF expression_is_constant(expr) THEN
34725            RETURN (make_finite_space([ expr ]));
34726         ELSE
34727            RETURN (make_function_space(sc_equal, expr\maths_function.domain, sc_equal, expr\maths_function.range));
34728         END_IF;
34729      END_IF;
34730      IF schema_prefix + 'FUNCTION_APPLICATION' IN typenames THEN
34731         RETURN (expr\function_application.func.range);
34732      END_IF;
34733      IF schema_prefix + 'MATHS_SPACE' IN typenames THEN
34734         IF expression_is_constant(expr) THEN
34735            RETURN (make_finite_space([ expr ]));
34736         ELSE
34737            RETURN (make_elementary_space(es_maths_spaces));
34738         END_IF;
34739      END_IF;
34740      IF schema_prefix + 'DEPENDENT_VARIABLE_DEFINITION' IN typenames THEN
34741         RETURN (values_space_of(expr\unary_generic_expression.operand));
34742      END_IF;
34743      IF schema_prefix + 'COMPLEX_NUMBER_LITERAL' IN typenames THEN
34744         RETURN (make_finite_space([ expr ]));
34745      END_IF;
34746      IF schema_prefix + 'LOGICAL_LITERAL' IN typenames THEN
34747         RETURN (make_finite_space([ expr\logical_literal.lit_value ]));
34748      END_IF;
34749      IF schema_prefix + 'BINARY_LITERAL' IN typenames THEN
34750         RETURN (make_finite_space([ expr\binary_literal.lit_value ]));
34751      END_IF;
34752      IF schema_prefix + 'MATHS_ENUM_LITERAL' IN typenames THEN
34753         RETURN (make_finite_space([ expr\maths_enum_literal.lit_value ]));
34754      END_IF;
34755      IF schema_prefix + 'REAL_TUPLE_LITERAL' IN typenames THEN
34756         RETURN (make_finite_space([ expr\real_tuple_literal.lit_value ]));
34757      END_IF;
34758      IF schema_prefix + 'INTEGER_TUPLE_LITERAL' IN typenames THEN
34759         RETURN (make_finite_space([ expr\integer_tuple_literal.lit_value ]));
34760      END_IF;
34761      IF schema_prefix + 'ATOM_BASED_LITERAL' IN typenames THEN
34762         RETURN (make_finite_space([ expr\atom_based_literal.lit_value ]));
34763      END_IF;
34764      IF schema_prefix + 'MATHS_TUPLE_LITERAL' IN typenames THEN
34765         RETURN (make_finite_space([ expr\maths_tuple_literal.lit_value ]));
34766      END_IF;
34767      IF schema_prefix + 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames THEN
34768         RETURN (drop_numeric_constraints(values_space_of(expr\partial_derivative_expression.derivand)));
34769      END_IF;
34770      IF schema_prefix + 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames THEN
34771         RETURN (drop_numeric_constraints(values_space_of(expr\definite_integral_expression.integrand)));
34772      END_IF;
34773      RETURN (?);
34774END_FUNCTION;
34775
34776-- DIFF IN AP214
34777-- DIFF IN AP203e2
34778FUNCTION vector_difference
34779      (arg1 : vector_or_direction;
34780       arg2 : vector_or_direction ) : vector;
34781   LOCAL
34782      result : vector;
34783      res : direction;
34784      vec1 : direction;
34785      vec2 : direction;
34786      mag : REAL;
34787      mag1 : REAL;
34788      mag2 : REAL;
34789      ndim : INTEGER;
34790   END_LOCAL;
34791      IF (NOT EXISTS(arg1) OR NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim) THEN
34792         RETURN (?);
34793      ELSE
34794         BEGIN
34795            IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(arg1) THEN
34796               mag1 := arg1\vector.magnitude;
34797               vec1 := arg1\vector.orientation;
34798            ELSE
34799               mag1 := 1.0;
34800               vec1 := arg1;
34801            END_IF;
34802            IF 'STEP_MERGED_CAD_SCHEMA.VECTOR' IN TYPEOF(arg2) THEN
34803               mag2 := arg2\vector.magnitude;
34804               vec2 := arg2\vector.orientation;
34805            ELSE
34806               mag2 := 1.0;
34807               vec2 := arg2;
34808            END_IF;
34809            vec1 := normalise(vec1);
34810            vec2 := normalise(vec2);
34811            ndim := SIZEOF(vec1.direction_ratios);
34812            mag := 0.0;
34813            res := dummy_gri || direction(vec1.direction_ratios);
34814            REPEAT i := 1 TO ndim;
34815               res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] - mag2 * vec2.direction_ratios[i];
34816               mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
34817            END_REPEAT;
34818            IF mag > 0.0 THEN
34819               result := dummy_gri || vector(res, SQRT(mag));
34820            ELSE
34821               result := dummy_gri || vector(vec1, 0.0);
34822            END_IF;
34823         END;
34824      END_IF;
34825      RETURN (result);
34826END_FUNCTION;
34827
34828-- IN AP214/AP242
34829FUNCTION ypr_index
34830      (ypr : ypr_enumeration ) : INTEGER;
34831      CASE ypr OF
34832         yaw :
34833               RETURN (1);
34834         pitch :
34835               RETURN (2);
34836         roll :
34837               RETURN (3);
34838      END_CASE;
34839      RETURN (?);
34840END_FUNCTION;
34841
34842END_SCHEMA;
34843