]> OCCT Git - occt-copy.git/commitdiff
0031481: Data Exchange - provide parser of STEP EXPRESS schema for generation of... CR31481_1
authorskl <skl@opencascade.com>
Mon, 7 Dec 2020 09:54:59 +0000 (12:54 +0300)
committerskl <skl@opencascade.com>
Thu, 10 Dec 2020 10:02:12 +0000 (13:02 +0300)
Changes for Lex and YACC.

27 files changed:
adm/cmake/occt_toolkit.cmake
src/ExpToCasExe/ExpToCasExe.cxx
src/ExpToCasExe/FILES
src/ExpToCasExe/FlexLexer.h [new file with mode: 0644]
src/ExpToCasExe/ap242.exp [deleted file]
src/ExpToCasExe/expformat.l [deleted file]
src/ExpToCasExe/explist.l [deleted file]
src/ExpToCasExe/expparse.cxx [deleted file]
src/ExpToCasExe/expparse.h [deleted file]
src/ExpToCasExe/expscan.cxx [deleted file]
src/ExpToCasExe/exptocas.h [deleted file]
src/ExpToCasExe/exptocas.l [deleted file]
src/ExpToCasExe/exptocas.lex [new file with mode: 0644]
src/ExpToCasExe/exptocas.tab.cxx [new file with mode: 0644]
src/ExpToCasExe/exptocas.tab.hxx [new file with mode: 0644]
src/ExpToCasExe/exptocas.y [deleted file]
src/ExpToCasExe/exptocas.yacc [new file with mode: 0644]
src/ExpToCasExe/lex.exptocas.cxx [new file with mode: 0644]
src/ExpToCasExe/lex.yy.c [deleted file]
src/ExpToCasExe/mkexpformat [deleted file]
src/ExpToCasExe/mkexplist [deleted file]
src/ExpToCasExe/mkparser [deleted file]
src/ExpToCasExe/mkscanner [deleted file]
src/ExpToCasExe/occt_existed_step_entities.lst [new file with mode: 0644]
src/ExpToCasExe/occt_step_entities.lst [deleted file]
src/ExpToCasExe/readme.txt
src/TKExpress/EXTERNLIB

index 12d6cd6025b5c8e7b577fb4098f026557f5ddd9d..d92d75b63bfb261c409cbf5a01732c073e1298a2 100644 (file)
@@ -124,7 +124,7 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
           BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} "${FLEX_BISON_TARGET_DIR}/${BISON_OUTPUT_FILE}"
                         COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME} -l -M ${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/=")
           FLEX_TARGET  (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} "${FLEX_BISON_TARGET_DIR}/${FLEX_OUTPUT_FILE}"
-                        COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME} -L")
+                        COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME} -L --wincompat")
           ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME})
            
           list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE})
index f1151c1b0ea27c8d903b725342d56da57a4bcf79..ac4c4a259bedb86cc46b2c8e69099193cc88a502 100644 (file)
@@ -29,7 +29,7 @@
 #pragma warning (disable:4706)
 #endif
 
-Handle(Express_Schema) ec_parse ( FILE *fin ); // interface to parser
+Handle(Express_Schema) ec_parse(const char* theFileName); // interface to parser
 
 // Load list of (class name, package name) from the file
 // Package names and optional mark flag are set to items in the schema
@@ -234,7 +234,7 @@ Standard_Integer main(const Standard_Integer argc, const char *argv[])
   
   // parse
   std::cout << "Starting parsing " << argv[1] << std::endl;
-  Handle(Express_Schema) schema = ec_parse(fin);
+  Handle(Express_Schema) schema = ec_parse(argv[1]);
   fclose(fin);
 
   if (schema.IsNull())
index 4d257e455382f1215e50f47133690ee8a7ea625e..61973b5d9991d987be775c93163e1422a37cfb88 100644 (file)
@@ -1,7 +1,7 @@
-exptocas.h
-expparse.h
-mkscanner
-mkparser
+exptocas.lex
+expltocas.yacc
+lex.exptocas.cxx
+exptocas.tab.hxx
+exptocas.tab.cxx
 ExpToCasExe.cxx
-expscan.cxx
-expparse.cxx
+
diff --git a/src/ExpToCasExe/FlexLexer.h b/src/ExpToCasExe/FlexLexer.h
new file mode 100644 (file)
index 0000000..c4dad2b
--- /dev/null
@@ -0,0 +1,220 @@
+// -*-C++-*-
+// FlexLexer.h -- define interfaces for lexical analyzer classes generated
+// by flex
+
+// Copyright (c) 1993 The Regents of the University of California.
+// All rights reserved.
+//
+// This code is derived from software contributed to Berkeley by
+// Kent Williams and Tom Epperly.
+//
+//  Redistribution and use in source and binary forms, with or without
+//  modification, are permitted provided that the following conditions
+//  are met:
+
+//  1. Redistributions of source code must retain the above copyright
+//  notice, this list of conditions and the following disclaimer.
+//  2. Redistributions in binary form must reproduce the above copyright
+//  notice, this list of conditions and the following disclaimer in the
+//  documentation and/or other materials provided with the distribution.
+
+//  Neither the name of the University nor the names of its contributors
+//  may be used to endorse or promote products derived from this software
+//  without specific prior written permission.
+
+//  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+//  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+//  PURPOSE.
+
+// This file defines FlexLexer, an abstract class which specifies the
+// external interface provided to flex C++ lexer objects, and yyFlexLexer,
+// which defines a particular lexer class.
+//
+// If you want to create multiple lexer classes, you use the -P flag
+// to rename each yyFlexLexer to some other xxFlexLexer.  You then
+// include <FlexLexer.h> in your other sources once per lexer class:
+//
+//      #undef yyFlexLexer
+//      #define yyFlexLexer xxFlexLexer
+//      #include <FlexLexer.h>
+//
+//      #undef yyFlexLexer
+//      #define yyFlexLexer zzFlexLexer
+//      #include <FlexLexer.h>
+//      ...
+
+#ifndef __FLEX_LEXER_H
+// Never included before - need to define base class.
+#define __FLEX_LEXER_H
+
+#include <iostream>
+
+extern "C++" {
+
+struct yy_buffer_state;
+typedef int yy_state_type;
+
+class FlexLexer
+{
+public:
+  virtual ~FlexLexer()        { }
+
+  const char* YYText() const  { return yytext; }
+  int YYLeng()        const   { return yyleng; }
+
+  virtual void
+  yy_switch_to_buffer( yy_buffer_state* new_buffer ) = 0;
+  virtual yy_buffer_state* yy_create_buffer( std::istream* s, int size ) = 0;
+  virtual yy_buffer_state* yy_create_buffer( std::istream& s, int size ) = 0;
+  virtual void yy_delete_buffer( yy_buffer_state* b ) = 0;
+  virtual void yyrestart( std::istream* s ) = 0;
+  virtual void yyrestart( std::istream& s ) = 0;
+
+  virtual int yylex() = 0;
+
+  // Call yylex with new input/output sources.
+  int yylex( std::istream& new_in, std::ostream& new_out )
+  {
+    switch_streams( new_in, new_out );
+    return yylex();
+  }
+
+  int yylex( std::istream* new_in, std::ostream* new_out = 0)
+  {
+    switch_streams( new_in, new_out );
+    return yylex();
+  }
+
+  // Switch to new input/output streams.  A nil stream pointer
+  // indicates "keep the current one".
+  virtual void switch_streams( std::istream* new_in,
+                               std::ostream* new_out ) = 0;
+  virtual void switch_streams( std::istream& new_in,
+                               std::ostream& new_out ) = 0;
+
+  int lineno() const          { return yylineno; }
+
+  int debug() const           { return yy_flex_debug; }
+  void set_debug( int flag )  { yy_flex_debug = flag; }
+
+protected:
+  char* yytext;
+  int yyleng;
+  int yylineno;       // only maintained if you use %option yylineno
+  int yy_flex_debug;  // only has effect with -d or "%option debug"
+};
+
+}
+#endif // FLEXLEXER_H
+
+#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
+// Either this is the first time through (yyFlexLexerOnce not defined),
+// or this is a repeated include to define a different flavor of
+// yyFlexLexer, as discussed in the flex manual.
+# define yyFlexLexerOnce
+
+extern "C++" {
+
+class yyFlexLexer : public FlexLexer {
+public:
+  // arg_yyin and arg_yyout default to the cin and cout, but we
+  // only make that assignment when initializing in yylex().
+  yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout );
+  yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
+private:
+  void ctor_common();
+
+public:
+
+  virtual ~yyFlexLexer();
+
+  void yy_switch_to_buffer( yy_buffer_state* new_buffer );
+  yy_buffer_state* yy_create_buffer( std::istream* s, int size );
+  yy_buffer_state* yy_create_buffer( std::istream& s, int size );
+  void yy_delete_buffer( yy_buffer_state* b );
+  void yyrestart( std::istream* s );
+  void yyrestart( std::istream& s );
+
+  void yypush_buffer_state( yy_buffer_state* new_buffer );
+  void yypop_buffer_state();
+
+  virtual int yylex();
+  virtual void switch_streams( std::istream& new_in, std::ostream& new_out );
+  virtual void switch_streams( std::istream* new_in = 0, std::ostream* new_out = 0 );
+  virtual int yywrap();
+
+protected:
+  virtual int LexerInput( char* buf, int max_size );
+  virtual void LexerOutput( const char* buf, int size );
+  virtual void LexerError( const char* msg );
+
+  void yyunput( int c, char* buf_ptr );
+  int yyinput();
+
+  void yy_load_buffer_state();
+  void yy_init_buffer( yy_buffer_state* b, std::istream& s );
+  void yy_flush_buffer( yy_buffer_state* b );
+
+  int yy_start_stack_ptr;
+  int yy_start_stack_depth;
+  int* yy_start_stack;
+
+  void yy_push_state( int new_state );
+  void yy_pop_state();
+  int yy_top_state();
+
+  yy_state_type yy_get_previous_state();
+  yy_state_type yy_try_NUL_trans( yy_state_type current_state );
+  int yy_get_next_buffer();
+
+  std::istream yyin;  // input source for default LexerInput
+  std::ostream yyout; // output sink for default LexerOutput
+
+  // yy_hold_char holds the character lost when yytext is formed.
+  char yy_hold_char;
+
+  // Number of characters read into yy_ch_buf.
+  int yy_n_chars;
+
+  // Points to current character in buffer.
+  char* yy_c_buf_p;
+
+  int yy_init;                // whether we need to initialize
+  int yy_start;               // start state number
+
+  // Flag which is used to allow yywrap()'s to do buffer switches
+  // instead of setting up a fresh yyin.  A bit of a hack ...
+  int yy_did_buffer_switch_on_eof;
+
+
+  size_t yy_buffer_stack_top; /**< index of top of stack. */
+  size_t yy_buffer_stack_max; /**< capacity of stack. */
+  yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */
+  void yyensure_buffer_stack(void);
+
+  // The following are not always needed, but may be depending
+  // on use of certain flex features (like REJECT or yymore()).
+
+  yy_state_type yy_last_accepting_state;
+  char* yy_last_accepting_cpos;
+
+  yy_state_type* yy_state_buf;
+  yy_state_type* yy_state_ptr;
+
+  char* yy_full_match;
+  int* yy_full_state;
+  int yy_full_lp;
+
+  int yy_lp;
+  int yy_looking_for_trail_begin;
+
+  int yy_more_flag;
+  int yy_more_len;
+  int yy_more_offset;
+  int yy_prev_more_offset;
+};
+
+}
+
+#endif // yyFlexLexer || ! yyFlexLexerOnce
diff --git a/src/ExpToCasExe/ap242.exp b/src/ExpToCasExe/ap242.exp
deleted file mode 100644 (file)
index 994d350..0000000
+++ /dev/null
@@ -1,49554 +0,0 @@
-(*
-   $Id: mim_lf.exp,v 1.101 2019/07/01 16:42:01 kevin Exp $
-   ISO TC184/SC4/WG12 N10517 - ISO/TS 10303-442 AP242 managed model based 3d engineering - EXPRESS MIM Long form
-   Supersedes ISO TC184/SC4/WG3 N10384
-*)
-
--- -*- Mode: Express -*-
-
-(* ===================================================================================== *)
-(* Long form schema generated by The EXPRESS Data Manager  compiler version 9.8.9B 20130507 *)
-(* Sat Jun 08 15:16:30 2019 *)
-(* The schema is converted from ISO10303 P11-2003 to ISO10303 P11-1994 *)
-(* ===================================================================================== *)
-
-(* Pretty Printed by Express Engine
-      5.0.21 (GIT eeng-5.0.21)
-      Steel Bank CL 1.4.16 (64-bits)
-
-     eengine --pretty
-       -mode mim_longform
-       -schema mim_lf.exp
-   Line Width: 120
-   Commandline:
-     eengine --pretty
-       -mode mim_longform
-       -schema mim_lf.exp
-*)
-
-(* File: /Users/klt/Desktop/mim_lf.exp *)
-(* 1 Schema: AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF *)
-
-(*  Interfaces:                 0 *)
-(*  Constants:                 29 *)
-(*  Types:                    449 *)
-(*  Entities:               2,118 *)
-(*  Subtype_Constraints:        0 *)
-(*  Functions:                316 *)
-(*  Rules:                     55 *)
-(*  Procedures:                 0 *)
-
-SCHEMA automotive_design;
-
-TYPE a3m_accuracy_type_name = ENUMERATION OF
-  (atna_others,
-   atns_area_measure,
-   atns_length_measure,
-   atns_others,
-   atns_plane_angle_measure,
-   atns_volume_measure);
-END_TYPE;
-
-TYPE a3m_detected_difference_type_name = ENUMERATION OF
-  (ddna_a3ms_inspected_equivalence_element_select,
-   ddna_assembly_component_usage,
-   ddna_binary_assembly_constraint,
-   ddna_cartesian_point,
-   ddna_context_dependent_shape_representation,
-   ddna_count_measure,
-   ddna_multi_level_reference_designator,
-   ddna_no_element,
-   ddna_others,
-   ddna_volume_measure,
-   ddns_area_measure,
-   ddns_cartesian_point,
-   ddns_connected_face_set,
-   ddns_count_measure,
-   ddns_edge,
-   ddns_face,
-   ddns_five_count_measure,
-   ddns_four_count_measure,
-   ddns_length_measure,
-   ddns_no_element,
-   ddns_others,
-   ddns_point_on_curve,
-   ddns_point_on_surface,
-   ddns_several_edges,
-   ddns_several_faces,
-   ddns_three_count_measure,
-   ddns_two_cartesian_points,
-   ddns_two_count_measure,
-   ddns_volume_measure);
-END_TYPE;
-
-TYPE a3m_element_type_name = ENUMERATION OF
-  (etna_others,
-   etna_product_definition_or_reference,
-   etna_shape_representation,
-   etns_connected_edge_set,
-   etns_connected_face_set,
-   etns_external_representation_item,
-   etns_manifold_solid_brep,
-   etns_others,
-   etns_point_cloud_dataset,
-   etns_shell_based_surface_model,
-   etns_shell_based_wireframe_model,
-   etns_vertex_point);
-END_TYPE;
-
-TYPE a3m_equivalence_assessment_specification_select = SELECT 
-  (a3m_equivalence_assessment_by_logical_test,
-   a3m_equivalence_assessment_by_numerical_test);
-END_TYPE;
-
-TYPE a3m_measured_data_type_name = ENUMERATION OF
-  (mdna_boolean_value,
-   mdna_context_dependent_measure,
-   mdna_length_measure,
-   mdna_length_measure_and_context_dependent_measure,
-   mdna_others,
-   mdna_plane_angle_measure,
-   mdna_volume_measure,
-   mdns_area_measure,
-   mdns_boolean_value,
-   mdns_length_measure,
-   mdns_others,
-   mdns_plane_angle_measure,
-   mdns_volume_measure);
-END_TYPE;
-
-TYPE a3ma_accuracy_type_name = a3m_accuracy_type_name;
-END_TYPE;
-
-TYPE a3ma_detected_difference_type_name = a3m_detected_difference_type_name;
-END_TYPE;
-
-TYPE a3ma_element_type_name = a3m_element_type_name;
-END_TYPE;
-
-TYPE a3ma_measured_data_type_name = a3m_measured_data_type_name;
-END_TYPE;
-
-TYPE a3ms_accuracy_type_name = a3m_accuracy_type_name;
-END_TYPE;
-
-TYPE a3ms_detected_difference_type_name = a3m_detected_difference_type_name;
-END_TYPE;
-
-TYPE a3ms_element_type_name = a3m_element_type_name;
-END_TYPE;
-
-TYPE a3ms_inspected_equivalence_element_select = inspected_equivalence_element_select;
-END_TYPE;
-
-TYPE a3ms_measured_data_type_name = a3m_measured_data_type_name;
-END_TYPE;
-
-TYPE absorbed_dose_measure = REAL;
-END_TYPE;
-
-TYPE acceleration_measure = REAL;
-END_TYPE;
-
-TYPE accuracy_associated_target_select = SELECT 
-  (a3m_equivalence_criteria_representation,
-   a3m_equivalence_criterion,
-   a3m_equivalence_inspection_result_representation,
-   data_equivalence_inspection_result);
-END_TYPE;
-
-TYPE action_items = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_date_and_time_assignment,
-   applied_date_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_state_observed_assignment,
-   applied_state_type_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_status,
-   ascribable_state,
-   ascribable_state_relationship,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   breakdown_of,
-   calendar_date,
-   certification,
-   certification_item,
-   change_group,
-   characterized_class,
-   characterized_object,
-   class,
-   classification_item,
-   class_system,
-   condition,
-   conditional_effectivity,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   date_and_time,
-   date_and_time_assignment,
-   date_assignment,
-   dimensional_location,
-   dimensional_size,
-   directed_action_assignment,
-   directed_dimensional_location,
-   document_file,
-   document_reference_item,
-   document_relationship,
-   document_type,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   evaluated_characteristic,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   event_occurrence,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   group,
-   group_relationship,
-   hierarchical_interface_connection,
-   identification_assignment_relationship,
-   inclusion_product_concept_feature,
-   identification_item,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design,
-   interface_connector_occurrence,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_definition_for,
-   interface_specification_version,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   mechanical_design_geometric_presentation_representation,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   presentation_area,
-   process_operation,
-   process_plan,
-   product,
-   product_category,
-   product_class,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_definition,
-   product_definition_element_relationship,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_definition_usage,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   product_process_plan,
-   product_related_product_category,
-   product_relationship,
-   property_definition,
-   property_definition_relationship,
-   property_definition_representation,
-   representation,
-   representation_item,
-   representation_relationship,
-   requirement_assigned_item,
-   requirement_assignment,
-   requirement_for_action_resource,
-   resource_property,
-   retention,
-   rule_set,
-   security_classification,
-   security_classification_level,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_representation,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   usage_association,
-   validation,
-   value_representation_item,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE action_method_items = SELECT 
-  (action,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_request_solution,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   breakdown_of,
-   condition,
-   configuration_design,
-   configuration_item,
-   contract,
-   contract_assignment,
-   date_and_time,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   document_file,
-   effectivity,
-   envelope,
-   event_occurrence,
-   evidence,
-   executed_action,
-   externally_defined_general_property,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   hierarchical_interface_connection,
-   interface_connection,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   material_designation_characterization,
-   measure_representation_item,
-   organization,
-   organizational_address,
-   organizational_project,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   product,
-   product_class,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category_usage,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_design_version_to_individual,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   property_definition,
-   property_definition_representation,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_view_definition_relationship,
-   state_observed,
-   state_type,
-   state_type_relationship,
-   structured_message,
-   validation,
-   value_representation_item,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE action_request_item = SELECT 
-  (action,
-   action_method,
-   action_property,
-   action_relationship,
-   alternate_product_relationship,
-   assembly_component_usage_substitute,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   executed_action,
-   general_property,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organization,
-   organizational_project,
-   person,
-   person_and_organization,
-   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_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_identification,
-   property_definition,
-   resource_property,
-   shape_aspect,
-   shape_representation,
-   versioned_action_request);
-END_TYPE;
-
-TYPE actuated_direction = ENUMERATION OF
-  (bidirectional,
-   positive_only,
-   negative_only,
-   not_actuated);
-END_TYPE;
-
-TYPE ahead_or_behind = ENUMERATION OF
-  (ahead,
-   exact,
-   behind);
-END_TYPE;
-
-TYPE amount_of_substance_measure = REAL;
-END_TYPE;
-
-TYPE analysed_item = SELECT 
-  (action_property_representation,
-   alternate_product_relationship,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   evidence,
-   interface_connection,
-   interface_connector_occurrence,
-   organization,
-   organizational_project_relationship,
-   organization_relationship,
-   product,
-   product_concept,
-   product_definition,
-   product_definition_context,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_group_relationship,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   requirement_assignment,
-   state_observed,
-   state_observed_assignment,
-   state_observed_role,
-   state_type,
-   validation,
-   verification,
-   verification_relationship);
-END_TYPE;
-
-TYPE angle_direction_reference_select = SELECT 
-  (curve,
-   direction,
-   point_path);
-END_TYPE;
-
-TYPE angle_direction_reference_with_a2p3d_select = SELECT 
-  (angle_direction_reference_select,
-   axis2_placement_3d);
-END_TYPE;
-
-TYPE angle_relator = ENUMERATION OF
-  (equal,
-   large,
-   small);
-END_TYPE;
-
-TYPE angular_deviation = positive_plane_angle_measure;
-END_TYPE;
-
-TYPE annotation_placeholder_occurrence_role = ENUMERATION OF
-  (annotation_text,
-   gps_data);
-END_TYPE;
-
-TYPE annotation_plane_element = SELECT 
-  (draughting_callout,
-   styled_item);
-END_TYPE;
-
-TYPE annotation_representation_select = SELECT 
-  (draughting_model,
-   presentation_area,
-   presentation_view,
-   symbol_representation);
-END_TYPE;
-
-TYPE annotation_symbol_occurrence_item = SELECT 
-  (annotation_symbol,
-   defined_symbol);
-END_TYPE;
-
-TYPE annotation_text_occurrence_item = SELECT 
-  (annotation_text,
-   annotation_text_character,
-   composite_text,
-   defined_character_glyph,
-   text_literal);
-END_TYPE;
-
-TYPE ap242_assignment_object_select = assignment_object_select;
-END_TYPE;
-
-TYPE approval_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_request_solution,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   assembly_component_usage_substitute,
-   breakdown_of,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   date,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action,
-   directed_action_assignment,
-   document,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   envelope,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_defined_general_property,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   group,
-   group_relationship,
-   identification_assignment_relationship,
-   inclusion_product_concept_feature,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_definition,
-   interface_connector_design,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_connector_version,
-   interface_definition_for,
-   interface_specification_definition,
-   interface_specification_version,
-   in_zone,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   mechanical_design_geometric_presentation_representation,
-   organization,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   package_product_concept_feature,
-   person_and_organization,
-   presentation_area,
-   process_plan,
-   product,
-   product_class,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_definition_usage,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   security_classification,
-   shape_aspect_relationship,
-   shape_representation,
-   structured_message,
-   validation,
-   value_representation_item,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE approved_item = SELECT 
-  (certification,
-   change,
-   change_request,
-   configuration_effectivity,
-   configuration_item,
-   contract,
-   product,
-   security_classification,
-   start_request,
-   start_work);
-END_TYPE;
-
-TYPE area_measure = REAL;
-END_TYPE;
-
-TYPE area_or_view = SELECT 
-  (presentation_area,
-   presentation_view);
-END_TYPE;
-
-TYPE area_unit_type = ENUMERATION OF
-  (circular,
-   cylindrical,
-   rectangular,
-   spherical,
-   square);
-END_TYPE;
-
-TYPE assignment_object_select = SELECT 
-  (action_property,
-   action_property_representation,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   breakdown_of,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   frozen_assignment,
-   material_designation_characterization,
-   organizational_address,
-   person_and_organization_address,
-   product_concept_feature_association,
-   product_concept_feature_category_usage,
-   property_definition,
-   property_definition_representation,
-   requirement_assignment,
-   requirement_for_action_resource);
-END_TYPE;
-
-TYPE atom_based_value = SELECT 
-  (maths_atom);
-END_TYPE;
-
-TYPE attribute_classification_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   action_request_solution,
-   action_request_status,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   approval,
-   approval_person_organization,
-   approval_relationship,
-   approval_status,
-   certification,
-   context_dependent_unit,
-   contract,
-   date_and_time_assignment,
-   date_assignment,
-   derived_unit,
-   descriptive_representation_item,
-   document_file,
-   document_relationship,
-   effectivity,
-   envelope,
-   envelope_relationship,
-   event_occurrence_relationship,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   group,
-   group_relationship,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_definition,
-   interface_definition_connection,
-   interface_specification_definition,
-   language,
-   measure_representation_item,
-   measure_with_unit,
-   message_relationship,
-   named_unit,
-   organizational_address,
-   organizational_project_relationship,
-   organization_relationship,
-   person_and_organization,
-   person_and_organization_address,
-   product,
-   product_category,
-   product_concept,
-   product_concept_context,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   property_definition,
-   property_definition_relationship,
-   property_definition_representation,
-   representation,
-   representation_context,
-   representation_item,
-   security_classification,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   time_interval_relationship,
-   uncertainty_measure_with_unit,
-   usage_association,
-   versioned_action_request);
-END_TYPE;
-
-TYPE attribute_identifier = identifier;
-WHERE
-  WR1: validate_attribute_id(SELF);
-END_TYPE;
-
-TYPE attribute_language_item = SELECT 
-  (action,
-   action_method,
-   action_method_relationship,
-   actuated_kinematic_pair,
-   alternate_product_relationship,
-   application_context,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_certification_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_security_classification_assignment,
-   approval,
-   approval_relationship,
-   approval_status,
-   assembly_component_usage_substitute,
-   attribute_value_assignment,
-   certification,
-   certification_type,
-   configuration_design,
-   configuration_item,
-   contract,
-   data_environment,
-   date_role,
-   date_time_role,
-   descriptive_representation_item,
-   document_relationship,
-   document_usage_role,
-   draughting_title,
-   effectivity,
-   effectivity_relationship,
-   envelope,
-   envelope_relationship,
-   event_occurrence,
-   evidence,
-   external_source,
-   general_property,
-   general_property_relationship,
-   geometric_representation_item,
-   geometric_tolerance,
-   group,
-   group_relationship,
-   identification_role,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   interface_definition_for,
-   kinematic_pair,
-   make_from_usage_option,
-   mapped_item,
-   message_relationship,
-   multi_language_attribute_assignment,
-   name_assignment,
-   object_role,
-   organizational_project,
-   organizational_project_relationship,
-   organizational_project_role,
-   organization_relationship,
-   organization_role,
-   person_and_organization,
-   person_and_organization_role,
-   presentation_layer_assignment,
-   process_product_association,
-   product,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_relationship,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_shape,
-   product_definition_substitute,
-   product_group,
-   product_group_relationship,
-   product_related_product_category,
-   property_definition,
-   property_definition_relationship,
-   representation,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   resource_requirement_type,
-   security_classification,
-   security_classification_assignment,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_representation,
-   state_observed,
-   state_observed_relationship,
-   state_type,
-   state_type_relationship,
-   structured_message,
-   styled_item,
-   time_interval_role,
-   topological_representation_item,
-   uncertainty_measure_with_unit,
-   uncertainty_qualifier,
-   usage_association,
-   validation,
-   verification,
-   versioned_action_request,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE attribute_select = SELECT 
-  (product_group_context,
-   product_group_purpose);
-END_TYPE;
-
-TYPE attribute_type = SELECT 
-  (label,
-   text);
-END_TYPE;
-
-TYPE axial_geometry_constraint_element = SELECT 
-  (circle,
-   conical_surface,
-   cylindrical_surface,
-   line,
-   plane,
-   point,
-   revolved_area_solid,
-   revolved_face_solid,
-   right_circular_cone,
-   right_circular_cylinder,
-   sphere,
-   spherical_surface,
-   surface_of_revolution,
-   toroidal_surface,
-   torus);
-END_TYPE;
-
-TYPE axis2_placement = SELECT 
-  (axis2_placement_2d,
-   axis2_placement_3d);
-END_TYPE;
-
-TYPE b_spline_curve_form = ENUMERATION OF
-  (polyline_form,
-   circular_arc,
-   elliptic_arc,
-   parabolic_arc,
-   hyperbolic_arc,
-   unspecified);
-END_TYPE;
-
-TYPE b_spline_or_composite_curve_select = SELECT 
-  (b_spline_curve,
-   composite_curve);
-END_TYPE;
-
-TYPE b_spline_or_rectangular_composite_surface_select = SELECT 
-  (b_spline_surface,
-   rectangular_composite_surface);
-END_TYPE;
-
-TYPE b_spline_surface_form = ENUMERATION OF
-  (plane_surf,
-   cylindrical_surf,
-   conical_surf,
-   spherical_surf,
-   toroidal_surf,
-   surf_of_revolution,
-   ruled_surf,
-   generalised_cone,
-   quadric_surf,
-   surf_of_linear_extrusion,
-   unspecified);
-END_TYPE;
-
-TYPE base_solid_select = SELECT
-  (solid_model,
-   csg_primitive,
-   boolean_result);
-WHERE
-   WR1: NOT('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF));
-END_TYPE;
-
-TYPE basis_11_direction_member = SELECT 
-  (cartesian_11,
-   curve_11,
-   cylindrical_11,
-   point_array,
-   polar_11,
-   user_defined_11);
-END_TYPE;
-
-TYPE blend_end_condition_select = SELECT 
-  (edge_curve,
-   point_on_curve,
-   vertex);
-END_TYPE;
-
-TYPE blend_radius_variation_type = ENUMERATION OF
-  (linear_blend,
-   cubic_blend,
-   unspecified_blend);
-END_TYPE;
-
-TYPE boolean_operand = SELECT 
-  (boolean_result,
-   csg_primitive,
-   half_space_2d,
-   half_space_solid,
-   solid_model);
-END_TYPE;
-
-TYPE boolean_operand_2d = SELECT 
-  (boolean_result_2d,
-   bounded_primitive_2d);
-END_TYPE;
-
-TYPE boolean_operator = ENUMERATION OF
-  (union,
-   intersection,
-   difference);
-END_TYPE;
-
-TYPE boolean_value = BOOLEAN;
-END_TYPE;
-
-TYPE bounded_primitive_2d = SELECT 
-  (area_with_outer_boundary,
-   circular_area,
-   elliptic_area,
-   path_area_with_parameters,
-   polygonal_area,
-   rectangular_area);
-END_TYPE;
-
-TYPE box_characteristic_select = SELECT 
-  (box_height,
-   box_rotate_angle,
-   box_slant_angle,
-   box_width);
-END_TYPE;
-
-TYPE box_height = positive_ratio_measure;
-END_TYPE;
-
-TYPE box_rotate_angle = plane_angle_measure;
-END_TYPE;
-
-TYPE box_slant_angle = plane_angle_measure;
-END_TYPE;
-
-TYPE box_width = positive_ratio_measure;
-END_TYPE;
-
-TYPE camera_model_d3_multi_clipping_intersection_select = SELECT 
-  (camera_model_d3_multi_clipping_union,
-   plane);
-END_TYPE;
-
-TYPE camera_model_d3_multi_clipping_union_select = SELECT 
-  (camera_model_d3_multi_clipping_intersection,
-   plane);
-END_TYPE;
-
-TYPE capacitance_measure = REAL;
-END_TYPE;
-
-TYPE category_usage_item = SELECT 
-  (product_class);
-END_TYPE;
-
-TYPE cc_classified_item = SELECT 
-  (assembly_component_usage,
-   product_definition_formation);
-END_TYPE;
-
-TYPE cc_person_organization_item = SELECT 
-  (change,
-   change_request,
-   configuration_item,
-   contract,
-   product,
-   product_definition,
-   product_definition_formation,
-   security_classification,
-   start_request,
-   start_work);
-END_TYPE;
-
-TYPE cc_specified_item = SELECT 
-  (product_definition,
-   shape_aspect);
-END_TYPE;
-
-TYPE celsius_temperature_measure = REAL;
-END_TYPE;
-
-TYPE central_or_parallel = ENUMERATION OF
-  (central,
-   parallel);
-END_TYPE;
-
-TYPE certification_item = SELECT 
-  (action_method,
-   alternate_product_relationship,
-   analysis_assignment,
-   applied_action_method_assignment,
-   assembly_component_usage,
-   evidence,
-   executed_action,
-   interface_connection,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_specification_version,
-   make_from_usage_option,
-   organizational_project,
-   product,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_definition_relationship,
-   product_group,
-   product_group_relationship,
-   product_identification,
-   product_relationship,
-   requirement_view_definition_relationship);
-END_TYPE;
-
-TYPE certified_item = SELECT 
-  (supplied_part_relationship);
-END_TYPE;
-
-TYPE chained_representation_link = SELECT 
-  (mapped_item,
-   representation_context,
-   representation_relationship);
-END_TYPE;
-
-TYPE change_management_object = SELECT 
-  (action,
-   action_items,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   breakdown_of,
-   class,
-   condition,
-   conditional_effectivity,
-   configuration_effectivity,
-   contract,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   document_file,
-   effectivity,
-   event_occurrence,
-   exclusive_product_concept_feature_category,
-   frozen_assignment,
-   general_property_relationship,
-   inclusion_product_concept_feature,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   process_operation,
-   process_plan,
-   product,
-   product_class,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_identification,
-   product_process_plan,
-   project_item,
-   property_definition,
-   property_definition_representation,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_view_definition_relationship,
-   value_representation_item);
-END_TYPE;
-
-TYPE change_relationship_select = SELECT 
-  (action_relationship,
-   alternative_solution_relationship,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   shape_aspect_relationship);
-END_TYPE;
-
-TYPE change_request_item = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE character_spacing_select = SELECT 
-  (descriptive_measure,
-   length_measure,
-   measure_with_unit,
-   ratio_measure);
-END_TYPE;
-
-TYPE character_style_select = SELECT 
-  (character_glyph_style_outline,
-   character_glyph_style_stroke,
-   text_style_for_defined_font);
-END_TYPE;
-
-TYPE characterized_action_definition = SELECT 
-  (action,
-   action_method,
-   action_method_relationship,
-   action_relationship);
-END_TYPE;
-
-TYPE characterized_definition = SELECT 
-  (characterized_item,
-   characterized_object,
-   characterized_product_definition,
-   shape_definition);
-END_TYPE;
-
-TYPE characterized_item = SELECT 
-  (dimensional_size,
-   geometric_tolerance,
-   item_identified_representation_usage);
-END_TYPE;
-
-TYPE characterized_material_property = SELECT 
-  (material_property_representation,
-   product_material_composition_relationship);
-END_TYPE;
-
-TYPE characterized_product_composition_value = SELECT 
-  (measure_with_unit);
-END_TYPE;
-
-TYPE characterized_product_definition = SELECT 
-  (product_definition,
-   product_definition_occurrence,
-   product_definition_relationship,
-   product_definition_relationship_relationship);
-END_TYPE;
-
-TYPE characterized_property_representation = SELECT 
-  (action_property_representation,
-   dimensional_characteristic_representation,
-   property_definition_representation,
-   resource_property_representation);
-END_TYPE;
-
-TYPE characterized_resource_definition = SELECT 
-  (action_resource,
-   action_resource_relationship,
-   action_resource_requirement);
-END_TYPE;
-
-TYPE chordal_deviation = positive_length_measure;
-END_TYPE;
-
-TYPE class_usage_effectivity_context_item = SELECT 
-  (product_definition);
-END_TYPE;
-
-TYPE classification_item = SELECT 
-  (action,
-   action_directive,
-   action_directive_relationship,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   action_request_solution,
-   action_request_status,
-   action_resource,
-   action_resource_relationship,
-   address,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment_relationship,
-   applied_contract_assignment,
-   applied_date_and_time_assignment,
-   applied_date_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_external_identification_assignment_relationship,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_person_organization,
-   approval_relationship,
-   approval_status,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   attribute_language_assignment,
-   breakdown_context,
-   breakdown_element_realization,
-   breakdown_of,
-   calendar_date,
-   certification,
-   change_element_sequence,
-   change_group,
-   characterized_class,
-   characterized_object,
-   class,
-   classified_item,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configuration_item_relationship,
-   context_dependent_unit,
-   contract,
-   contract_relationship,
-   conversion_based_unit,
-   date_and_time,
-   date_and_time_assignment,
-   date_assignment,
-   definitional_representation_relationship,
-   derived_unit,
-   descriptive_representation_item,
-   directed_action,
-   directed_action_assignment,
-   document_file,
-   document_relationship,
-   document_type,
-   effectivity,
-   effectivity_relationship,
-   envelope,
-   envelope_relationship,
-   evaluated_characteristic,
-   event_occurrence,
-   event_occurrence_relationship,
-   evidence,
-   executed_action,
-   feature_definition,
-   general_feature,
-   general_property,
-   general_property_relationship,
-   generic_property_relationship,
-   group,
-   group_relationship,
-   identification_assignment,
-   identification_assignment_relationship,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_definition_connection,
-   interface_definition_for,
-   in_zone,
-   language,
-   link_motion_relationship,
-   local_time,
-   location,
-   location_relationship,
-   material_designation,
-   material_designation_characterization,
-   measure_qualification,
-   measure_representation_item,
-   measure_with_unit,
-   message_relationship,
-   multi_language_attribute_assignment,
-   named_unit,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   plus_minus_tolerance,
-   process_operation,
-   process_plan,
-   process_product_association,
-   product,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_concept_relationship,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_usage,
-   product_definition_usage_relationship,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_context,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   retention,
-   satisfies_requirement,
-   security_classification,
-   security_classification_level,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_feature_definition_relationship,
-   state_definition_to_state_assignment_relationship,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_observed_role,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   time_interval_relationship,
-   type_qualifier,
-   uncertainty_measure_with_unit,
-   usage_association,
-   validation,
-   verification,
-   versioned_action_request,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE classified_item = SELECT 
-  (product,
-   product_definition,
-   product_definition_formation);
-END_TYPE;
-
-TYPE closed_or_open_shell_select = SELECT 
-  (closed_shell,
-   open_shell);
-END_TYPE;
-
-TYPE colour_type_enum = ENUMERATION OF
-  (rgb8,
-   rgbt8);
-END_TYPE;
-
-TYPE common_datum_list = LIST[2:?] OF datum_reference_element;
-WHERE
-  WR1: SIZEOF( QUERY(dre <* SELF | dre\shape_aspect.of_shape <> SELF[1]\shape_aspect.of_shape)) = 0;
-END_TYPE; 
-
-TYPE compound_inner_area_boundary = SELECT 
-  (set_inner_area_boundary);
-END_TYPE;
-
-TYPE compound_item_definition = SELECT 
-  (list_representation_item,
-   set_representation_item);
-END_TYPE;
-
-TYPE conductance_measure = REAL;
-END_TYPE;
-
-TYPE configuration_design_item = SELECT 
-  (product_definition,
-   product_definition_formation,
-   product_definition_occurrence);
-END_TYPE;
-
-TYPE configured_effectivity_context_item = SELECT 
-  (product_concept_feature_association);
-END_TYPE;
-
-TYPE configured_effectivity_item = SELECT 
-  (action_relationship,
-   process_plan,
-   product_definition,
-   product_process_plan);
-END_TYPE;
-
-TYPE connected_edge_with_length_set_items = SELECT 
-  (connected_edge_set,
-   path,
-   vertex_on_edge);
-END_TYPE;
-
-TYPE constraint_group_member = SELECT 
-  (explicit_constraint,
-   simultaneous_constraint_group);
-END_TYPE;
-
-TYPE constructive_geometry_representation_or_shape_representation = SELECT 
-  (constructive_geometry_representation,
-   shape_representation);
-END_TYPE;
-
-TYPE context_dependent_measure = REAL;
-END_TYPE;
-
-TYPE contract_item = SELECT 
-  (action_directive,
-   action_method,
-   action_method_relationship,
-   alternate_product_relationship,
-   applied_action_method_assignment,
-   applied_classification_assignment,
-   applied_description_text_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   directed_action,
-   drawing_revision,
-   executed_action,
-   information_usage_right,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design,
-   organization,
-   organizational_project,
-   person_and_organization,
-   product,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_group,
-   product_group_relationship,
-   product_identification,
-   requirement_assignment,
-   requirement_source,
-   security_classification,
-   structured_message,
-   validation,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE contracted_item = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE count_measure = NUMBER;
-END_TYPE;
-
-TYPE csg_2d_area_select = SELECT 
-  (axis2_placement_2d,
-   csg_primitive_solid_2d);
-END_TYPE;
-
-TYPE csg_2d_shape_select = SELECT 
-  (axis2_placement_2d,
-   csg_solid_2d,
-   mapped_item);
-END_TYPE;
-
-TYPE csg_primitive = SELECT 
-  (block,
-   bounded_primitive_2d,
-   cyclide_segment_solid,
-   eccentric_cone,
-   ellipsoid,
-   faceted_primitive,
-   rectangular_pyramid,
-   right_angular_wedge,
-   right_circular_cone,
-   right_circular_cylinder,
-   sphere,
-   torus);
-END_TYPE;
-
-TYPE csg_select = SELECT 
-  (boolean_result,
-   csg_primitive);
-END_TYPE;
-
-TYPE csg_select_2d = SELECT 
-  (boolean_result_2d,
-   bounded_primitive_2d);
-END_TYPE;
-
-TYPE current_element_assignment_select = SELECT 
-  (add_element,
-   modify_element);
-END_TYPE;
-
-TYPE curve_font_or_scaled_curve_font_select = SELECT 
-  (curve_style_font_and_scaling,
-   curve_style_font_select);
-END_TYPE;
-
-TYPE curve_on_surface = SELECT 
-  (composite_curve_on_surface,
-   pcurve,
-   surface_curve);
-END_TYPE;
-
-TYPE curve_or_annotation_curve_occurrence = SELECT 
-  (annotation_curve_occurrence,
-   curve);
-END_TYPE;
-
-TYPE curve_or_curve_set = SELECT 
-  (curve,
-   geometric_curve_set);
-END_TYPE;
-
-TYPE curve_or_render = SELECT 
-  (curve_style,
-   curve_style_rendering);
-END_TYPE;
-
-TYPE curve_or_surface_constraint_element = SELECT 
-  (curve,
-   surface);
-END_TYPE;
-
-TYPE curve_style_font_select = SELECT 
-  (curve_style_font,
-   externally_defined_curve_font,
-   pre_defined_curve_font);
-END_TYPE;
-
-TYPE curves_or_area = ENUMERATION OF
-  (curves,
-   area);
-END_TYPE;
-
-TYPE date_and_time_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_usage_right,
-   approval,
-   approval_person_organization,
-   approval_status,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   data_equivalence_definition,
-   data_quality_definition,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action,
-   document,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   envelope,
-   event_occurrence,
-   evidence,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_definition_connection,
-   interface_definition_for,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   person,
-   person_and_organization,
-   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_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   property_definition,
-   property_definition_representation,
-   representation,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   rule_action,
-   security_classification,
-   security_classification_level,
-   shape_representation,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   validation,
-   verification,
-   verification_relationship,
-   versioned_action_request);
-END_TYPE;
-
-TYPE date_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_usage_right,
-   approval,
-   approval_person_organization,
-   approval_status,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   data_equivalence_definition,
-   data_quality_definition,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action,
-   document,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   envelope,
-   event_occurrence,
-   evidence,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_definition_connection,
-   interface_definition_for,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   person,
-   person_and_organization,
-   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_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   property_definition,
-   property_definition_representation,
-   representation,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   security_classification,
-   security_classification_level,
-   shape_representation,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   validation,
-   verification,
-   verification_relationship,
-   versioned_action_request);
-END_TYPE;
-
-TYPE date_time_item = SELECT 
-  (approval_person_organization,
-   certification,
-   change,
-   change_request,
-   contract,
-   product_definition,
-   security_classification,
-   start_request,
-   start_work);
-END_TYPE;
-
-TYPE date_time_or_event_occurrence = SELECT 
-  (date_time_select,
-   event_occurrence);
-END_TYPE;
-
-TYPE date_time_select = SELECT 
-  (date,
-   date_and_time,
-   local_time);
-END_TYPE;
-
-TYPE datum_or_common_datum = SELECT 
-  (common_datum_list,
-   datum);
-END_TYPE;
-
-TYPE datum_reference_modifier = SELECT 
-  (datum_reference_modifier_with_value,
-   simple_datum_reference_modifier);
-END_TYPE;
-
-TYPE datum_reference_modifier_type = ENUMERATION OF
-  (circular_or_cylindrical,
-   distance,
-   projected,
-   spherical);
-END_TYPE;
-
-TYPE datum_system_or_reference = SELECT 
-  (datum_reference,
-   datum_system);
-END_TYPE;
-
-TYPE day_in_month_number = INTEGER;
-WHERE
-  WR1: {1 <= SELF <= 31};
-END_TYPE;
-
-TYPE day_in_week_number = INTEGER;
-WHERE
-  WR1: { 1 <= SELF <= 7 };
-END_TYPE;
-
-TYPE day_in_year_number = INTEGER;
-WHERE
-  WR1: {1 <= SELF <= 366};
-END_TYPE;
-
-TYPE defined_glyph_select = SELECT 
-  (externally_defined_character_glyph,
-   pre_defined_character_glyph);
-END_TYPE;
-
-TYPE defined_symbol_select = SELECT 
-  (externally_defined_symbol,
-   pre_defined_symbol);
-END_TYPE;
-
-TYPE derived_property_select = SELECT 
-  (action_property,
-   dimensional_location,
-   dimensional_size,
-   geometric_tolerance,
-   property_definition,
-   resource_property);
-END_TYPE;
-
-TYPE description_attribute_select = SELECT 
-  (action_request_solution,
-   application_context,
-   approval_role,
-   configuration_design,
-   context_dependent_shape_representation,
-   date_role,
-   date_time_role,
-   effectivity,
-   external_source,
-   organizational_project,
-   organization_role,
-   person_and_organization,
-   person_and_organization_role,
-   property_definition_representation,
-   representation);
-END_TYPE;
-
-TYPE description_item = SELECT 
-  (action,
-   action_directive,
-   action_directive_relationship,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   address,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   analysis_representation_context,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_classification_assignment_relationship,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_external_identification_assignment_relationship,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_location_assignment,
-   applied_location_representation_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_state_observed_assignment,
-   applied_state_type_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_relationship,
-   ascribable_state,
-   ascribable_state_relationship,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   breakdown_element_group_assignment,
-   certification,
-   change_element_sequence,
-   change_group,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configuration_item_relationship,
-   contract,
-   contract_relationship,
-   data_environment,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   document_file,
-   document_relationship,
-   effectivity,
-   effectivity_relationship,
-   envelope,
-   envelope_relationship,
-   evaluated_characteristic,
-   event_occurrence,
-   event_occurrence_relationship,
-   exclusive_product_concept_feature_category,
-   general_property,
-   general_property_relationship,
-   generic_property_relationship,
-   geometric_item_specific_usage,
-   global_uncertainty_assigned_context,
-   global_unit_assigned_context,
-   group,
-   group_relationship,
-   location,
-   location_relationship,
-   material_designation_characterization,
-   measure_qualification,
-   measure_with_unit,
-   message_relationship,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   organization_type,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   process_operation,
-   process_plan,
-   process_product_association,
-   product,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_concept_relationship,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_definition_usage,
-   product_definition_usage_relationship,
-   product_group_membership,
-   product_group_relationship,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_context,
-   representation_item,
-   representation_relationship,
-   requirement_for_action_resource,
-   retention,
-   satisfies_requirement,
-   security_classification,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_feature_definition,
-   shape_feature_definition_relationship,
-   state_definition_to_state_assignment_relationship,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_observed_role,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   state_type_role,
-   structured_message,
-   time_interval,
-   time_interval_relationship,
-   uncertainty_measure_with_unit,
-   uncertainty_qualifier,
-   usage_association,
-   verification_relationship,
-   versioned_action_request,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE descriptive_measure = STRING;
-END_TYPE;
-
-TYPE detailed_report_style_type = ENUMERATION OF
-  (inspected_element,
-   defective_element);
-END_TYPE;
-
-TYPE detailed_report_type = ENUMERATION OF
-  (measured_element,
-   inferior_quality_element);
-END_TYPE;
-
-TYPE dimension_count = INTEGER;
-WHERE
-  WR1: SELF > 0;
-END_TYPE;
-
-TYPE dimension_extent_usage = ENUMERATION OF
-  (origin,
-   target);
-END_TYPE;
-
-TYPE dimensional_characteristic = SELECT 
-  (dimensional_location,
-   dimensional_size);
-END_TYPE;
-
-TYPE directed_tolerance_zone_type = ENUMERATION OF
-  (perpendicular,
-   parallel,
-   including);
-END_TYPE;
-
-TYPE direction_count_select = SELECT 
-  (u_direction_count,
-   v_direction_count);
-END_TYPE;
-
-TYPE document_identifier_assigned_item = SELECT 
-  (document);
-END_TYPE;
-
-TYPE document_reference_item = SELECT 
-  (action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_person_organization,
-   approval_relationship,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   breakdown_context,
-   breakdown_of,
-   certification,
-   change_group,
-   characterized_class,
-   characterized_object,
-   class,
-   class_system,
-   condition,
-   configuration_design,
-   configuration_item,
-   contract,
-   contract_relationship,
-   date_and_time_assignment,
-   date_assignment,
-   descriptive_representation_item,
-   dimensional_size,
-   directed_action_assignment,
-   document_relationship,
-   effectivity,
-   effectivity_relationship,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_conditioned_data_quality_criterion,
-   externally_defined_dimension_definition,
-   externally_defined_item,
-   feature_definition,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   group,
-   group_relationship,
-   identification_assignment_relationship,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_definition_connection,
-   in_zone,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   presentation_area,
-   process_plan,
-   product,
-   product_category,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_process,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_definition_usage,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_process_plan,
-   product_related_product_category,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_requirement_type,
-   retention,
-   rule_set,
-   security_classification,
-   shape_aspect,
-   shape_aspect_relationship,
-   state_observed,
-   state_type,
-   structured_message,
-   time_interval,
-   time_interval_relationship,
-   usage_association,
-   validation,
-   value_representation_item,
-   verification,
-   verification_relationship,
-   versioned_action_request);
-END_TYPE;
-
-TYPE dose_equivalent_measure = REAL;
-END_TYPE;
-
-TYPE draughting_callout_element = SELECT 
-  (annotation_curve_occurrence,
-   annotation_fill_area_occurrence,
-   annotation_placeholder_occurrence,
-   annotation_symbol_occurrence,
-   annotation_text_occurrence,
-   tessellated_annotation_occurrence);
-END_TYPE;
-
-TYPE draughting_model_item_association_select = SELECT 
-  (annotation_occurrence,
-   draughting_callout);
-END_TYPE;
-
-TYPE draughting_model_item_definition = SELECT 
-  (angularity_tolerance,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_date_and_time_assignment,
-   applied_date_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_group_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_name_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   circular_runout_tolerance,
-   coaxiality_tolerance,
-   concentricity_tolerance,
-   cylindricity_tolerance,
-   dimensional_location,
-   dimensional_size,
-   flatness_tolerance,
-   geometric_tolerance,
-   geometric_tolerance_with_datum_reference,
-   geometric_tolerance_with_defined_area_unit,
-   geometric_tolerance_with_defined_unit,
-   geometric_tolerance_with_maximum_tolerance,
-   geometric_tolerance_with_modifiers,
-   line_profile_tolerance,
-   modified_geometric_tolerance,
-   parallelism_tolerance,
-   perpendicularity_tolerance,
-   position_tolerance,
-   product_definition_relationship,
-   product_definition_shape,
-   property_definition,
-   roundness_tolerance,
-   shape_aspect,
-   shape_aspect_relationship,
-   straightness_tolerance,
-   surface_profile_tolerance,
-   symmetry_tolerance,
-   total_runout_tolerance,
-   unequally_disposed_geometric_tolerance);
-END_TYPE;
-
-TYPE draughting_model_item_select = SELECT 
-  (axis2_placement,
-   camera_model,
-   draughting_callout,
-   mapped_item,
-   styled_item);
-END_TYPE;
-
-TYPE draughting_subfigure_representation_item = SELECT 
-  (annotation_occurrence,
-   axis2_placement,
-   draughting_callout);
-END_TYPE;
-
-TYPE draughting_symbol_representation_item = SELECT 
-  (annotation_curve_occurrence,
-   annotation_fill_area_occurrence,
-   annotation_symbol_occurrence,
-   annotation_text_occurrence,
-   axis2_placement);
-END_TYPE;
-
-TYPE draughting_titled_item = SELECT 
-  (drawing_revision,
-   drawing_sheet_revision);
-END_TYPE;
-
-TYPE edge_or_curve = SELECT 
-  (curve,
-   edge);
-END_TYPE;
-
-TYPE effectivity_item = SELECT 
-  (action,
-   action_directive,
-   action_directive_relationship,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   alternative_solution_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment_relationship,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_external_identification_assignment_relationship,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval_relationship,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   breakdown_of,
-   class,
-   class_system,
-   condition,
-   conditional_effectivity,
-   configuration_design,
-   configuration_item,
-   configuration_item_relationship,
-   configured_effectivity_assignment,
-   contract,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   document_file,
-   document_relationship,
-   draughting_model,
-   drawing_revision,
-   effectivity_relationship,
-   event_occurrence_relationship,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_defined_general_property,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   generic_property_relationship,
-   group,
-   identification_assignment_relationship,
-   inclusion_product_concept_feature,
-   interface_connection,
-   interface_connector_design_to_planned,
-   interface_connector_design_to_realized,
-   interface_connector_occurrence,
-   interface_connector_planned_to_realized,
-   interface_definition_for,
-   in_zone,
-   link_motion_relationship,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   mechanical_design_geometric_presentation_representation,
-   multi_language_attribute_assignment,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   package_product_concept_feature,
-   person_and_organization,
-   person_and_organization_address,
-   presentation_area,
-   process_operation,
-   process_plan,
-   product,
-   product_class,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_concept_relationship,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_definition_usage,
-   product_definition_usage_relationship,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   security_classification,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_representation,
-   structured_message,
-   time_interval_relationship,
-   usage_association,
-   validation,
-   value_representation_item,
-   verification,
-   verification_relationship,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE electric_charge_measure = REAL;
-END_TYPE;
-
-TYPE electric_current_measure = REAL;
-END_TYPE;
-
-TYPE electric_potential_measure = REAL;
-END_TYPE;
-
-TYPE elementary_function_enumerators = ENUMERATION OF
-  (ef_and,
-   ef_or,
-   ef_not,
-   ef_xor,
-   ef_negate_i,
-   ef_add_i,
-   ef_subtract_i,
-   ef_multiply_i,
-   ef_divide_i,
-   ef_mod_i,
-   ef_exponentiate_i,
-   ef_eq_i,
-   ef_ne_i,
-   ef_gt_i,
-   ef_lt_i,
-   ef_ge_i,
-   ef_le_i,
-   ef_abs_i,
-   ef_max_i,
-   ef_min_i,
-   ef_if_i,
-   ef_negate_r,
-   ef_reciprocal_r,
-   ef_add_r,
-   ef_subtract_r,
-   ef_multiply_r,
-   ef_divide_r,
-   ef_mod_r,
-   ef_exponentiate_r,
-   ef_exponentiate_ri,
-   ef_eq_r,
-   ef_ne_r,
-   ef_gt_r,
-   ef_lt_r,
-   ef_ge_r,
-   ef_le_r,
-   ef_abs_r,
-   ef_max_r,
-   ef_min_r,
-   ef_acos_r,
-   ef_asin_r,
-   ef_atan2_r,
-   ef_cos_r,
-   ef_exp_r,
-   ef_ln_r,
-   ef_log2_r,
-   ef_log10_r,
-   ef_sin_r,
-   ef_sqrt_r,
-   ef_tan_r,
-   ef_if_r,
-   ef_form_c,
-   ef_rpart_c,
-   ef_ipart_c,
-   ef_negate_c,
-   ef_reciprocal_c,
-   ef_add_c,
-   ef_subtract_c,
-   ef_multiply_c,
-   ef_divide_c,
-   ef_exponentiate_c,
-   ef_exponentiate_ci,
-   ef_eq_c,
-   ef_ne_c,
-   ef_conjugate_c,
-   ef_abs_c,
-   ef_arg_c,
-   ef_cos_c,
-   ef_exp_c,
-   ef_ln_c,
-   ef_sin_c,
-   ef_sqrt_c,
-   ef_tan_c,
-   ef_if_c,
-   ef_subscript_s,
-   ef_eq_s,
-   ef_ne_s,
-   ef_gt_s,
-   ef_lt_s,
-   ef_ge_s,
-   ef_le_s,
-   ef_subsequence_s,
-   ef_concat_s,
-   ef_size_s,
-   ef_format,
-   ef_value,
-   ef_like,
-   ef_if_s,
-   ef_subscript_b,
-   ef_eq_b,
-   ef_ne_b,
-   ef_gt_b,
-   ef_lt_b,
-   ef_ge_b,
-   ef_le_b,
-   ef_subsequence_b,
-   ef_concat_b,
-   ef_size_b,
-   ef_if_b,
-   ef_subscript_t,
-   ef_eq_t,
-   ef_ne_t,
-   ef_concat_t,
-   ef_size_t,
-   ef_entuple,
-   ef_detuple,
-   ef_insert,
-   ef_remove,
-   ef_if_t,
-   ef_sum_it,
-   ef_product_it,
-   ef_add_it,
-   ef_subtract_it,
-   ef_scalar_mult_it,
-   ef_dot_prod_it,
-   ef_sum_rt,
-   ef_product_rt,
-   ef_add_rt,
-   ef_subtract_rt,
-   ef_scalar_mult_rt,
-   ef_dot_prod_rt,
-   ef_norm_rt,
-   ef_sum_ct,
-   ef_product_ct,
-   ef_add_ct,
-   ef_subtract_ct,
-   ef_scalar_mult_ct,
-   ef_dot_prod_ct,
-   ef_norm_ct,
-   ef_if,
-   ef_ensemble,
-   ef_member_of);
-END_TYPE;
-
-TYPE elementary_space_enumerators = ENUMERATION OF
-  (es_numbers,
-   es_complex_numbers,
-   es_reals,
-   es_integers,
-   es_logicals,
-   es_booleans,
-   es_strings,
-   es_binarys,
-   es_maths_spaces,
-   es_maths_functions,
-   es_generics);
-END_TYPE;
-
-TYPE energy_measure = REAL;
-END_TYPE;
-
-TYPE equivalence_detected_difference_select = SELECT 
-  (a3ms_inspected_equivalence_element_select,
-   area_measure,
-   assembly_component_usage,
-   binary_assembly_constraint,
-   cartesian_point,
-   connected_face_set,
-   context_dependent_shape_representation,
-   count_measure,
-   edge,
-   face,
-   length_measure,
-   multi_level_reference_designator,
-   point_on_curve,
-   point_on_surface,
-   volume_measure);
-END_TYPE;
-
-TYPE equivalence_measured_value_select = SELECT 
-  (a3ma_length_measure_and_context_dependent_measure_pair,
-   area_measure,
-   boolean_value,
-   context_dependent_measure,
-   length_measure,
-   plane_angle_measure,
-   volume_measure);
-END_TYPE;
-
-TYPE equivalence_product_data_select = SELECT 
-  (product_definition_or_reference,
-   product_definition_relationship);
-END_TYPE;
-
-TYPE event_occurrence_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_request_solution,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_classification_assignment,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   draughting_model,
-   drawing_revision,
-   executed_action,
-   general_organizational_data_select,
-   general_property,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organizational_project,
-   organization_relationship,
-   person_and_organization,
-   presentation_area,
-   product,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   property_definition,
-   requirement_for_action_resource,
-   resource_property,
-   security_classification_level,
-   shape_representation);
-END_TYPE;
-
-TYPE evidence_item = SELECT 
-  (action_property,
-   action_property_representation,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   date_and_time_assignment,
-   date_assignment,
-   measure_representation_item,
-   person,
-   person_and_organization,
-   product,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_context,
-   representation_item,
-   state_type,
-   structured_message,
-   validation,
-   value_representation_item,
-   verification);
-END_TYPE;
-
-TYPE expression_extension_select = SELECT 
-  (expression_extension_numeric,
-   expression_extension_string);
-END_TYPE;
-
-TYPE extension_options = ENUMERATION OF
-  (eo_none,
-   eo_cont,
-   eo_cont_right,
-   eo_cont_left);
-END_TYPE;
-
-TYPE external_identification_item = SELECT 
-  (action_directive,
-   action_method,
-   action_method_relationship,
-   action_relationship,
-   action_request_status,
-   address,
-   analysis_model,
-   analysis_representation_context,
-   applied_action_method_assignment,
-   applied_classification_assignment,
-   applied_external_identification_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   approval,
-   approval_person_organization,
-   approval_status,
-   assembly_bond_definition,
-   assembly_joint,
-   assembly_component_usage,
-   breakdown_context,
-   certification,
-   class,
-   composite_curve,
-   condition,
-   configuration_effectivity,
-   contract,
-   curve,
-   date_and_time_assignment,
-   date_assignment,
-   derived_unit,
-   document_file,
-   effectivity,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   event_occurrence,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_defined_class,
-   externally_defined_context_dependent_unit,
-   externally_defined_conversion_based_unit,
-   externally_defined_general_property,
-   externally_defined_representation_item,
-   external_source,
-   general_property,
-   generic_product_definition_reference,
-   group,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_definition,
-   interface_connector_occurrence,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_definition_for,
-   interface_specification_definition,
-   interface_specification_version,
-   loop,
-   material_designation,
-   named_unit,
-   organization,
-   organizational_address,
-   organizational_project,
-   oriented_surface,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   point_on_curve,
-   precision_qualifier,
-   process_operation,
-   process_plan,
-   product,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_concept_feature_category,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_group,
-   product_identification,
-   product_process_plan,
-   product_specification,
-   property_definition,
-   representation,
-   representation_item,
-   requirement_source,
-   satisfies_requirement,
-   security_classification,
-   shape_representation,
-   state_observed,
-   state_type,
-   structured_message,
-   surface,
-   time_interval,
-   trimmed_curve,
-   type_qualifier,
-   uncertainty_qualifier,
-   validation,
-   verification,
-   versioned_action_request,
-   vertex_point);
-END_TYPE;
-
-TYPE face_or_surface = SELECT 
-  (face,
-   surface);
-END_TYPE;
-
-TYPE fill_area_style_tile_shape_select = SELECT 
-  (externally_defined_tile,
-   fill_area_style_tile_coloured_region,
-   fill_area_style_tile_curve_with_style,
-   fill_area_style_tile_symbol_with_style,
-   pre_defined_tile);
-END_TYPE;
-
-TYPE fill_style_select = SELECT 
-  (externally_defined_hatch_style,
-   externally_defined_tile_style,
-   fill_area_style_colour,
-   fill_area_style_hatching,
-   fill_area_style_tiles,
-   texture_style_specification);
-END_TYPE;
-
-TYPE font_select = SELECT 
-  (externally_defined_text_font,
-   pre_defined_text_font,
-   text_font);
-END_TYPE;
-
-TYPE force_measure = REAL;
-END_TYPE;
-
-TYPE founded_item_select = SELECT 
-  (founded_item,
-   representation_item);
-END_TYPE;
-
-TYPE frequency_measure = REAL;
-END_TYPE;
-
-TYPE general_organizational_data_select = SELECT 
-  (action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_person_organization,
-   approval_relationship,
-   approval_status,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   breakdown_element_group_assignment,
-   breakdown_element_realization,
-   breakdown_of,
-   certification,
-   characterized_product_concept_feature,
-   characterized_product_concept_feature_category,
-   class,
-   class_system,
-   condition,
-   conditional_concept_feature,
-   conditional_effectivity,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   date_and_time_assignment,
-   date_assignment,
-   directed_action_assignment,
-   document_file,
-   drawing_revision,
-   drawing_sheet_revision,
-   effectivity,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   frozen_assignment,
-   general_property,
-   general_property_relationship,
-   group,
-   group_relationship,
-   identification_assignment_relationship,
-   inclusion_product_concept_feature,
-   information_usage_right,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   organization,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   presentation_area,
-   process_operation,
-   process_plan,
-   product,
-   product_class,
-   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_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_definition_usage,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   representation_item,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   requirement_view_definition_relationship,
-   security_classification,
-   shape_representation,
-   value_representation_item,
-   versioned_action_request);
-END_TYPE;
-
-TYPE generalized_surface_select = SELECT 
-  (face_surface,
-   surface,
-   surfaced_open_shell);
-END_TYPE;
-
-TYPE generic_property_definition_select = SELECT 
-  (action_property,
-   dimensional_location,
-   dimensional_size,
-   property_definition,
-   resource_property);
-END_TYPE;
-
-TYPE geometric_constraint_element = SELECT 
-  (curve,
-   direction,
-   point,
-   surface,
-   vector);
-END_TYPE;
-
-TYPE geometric_item_specific_usage_select = SELECT 
-  (shape_aspect,
-   shape_aspect_relationship);
-END_TYPE;
-
-TYPE geometric_model_item = SELECT 
-  (connected_face_set,
-   edge_loop,
-   geometric_representation_item);
-END_TYPE;
-
-TYPE geometric_set_select = SELECT 
-  (annotation_text,
-   curve,
-   placement,
-   planar_box,
-   point,
-   surface);
-END_TYPE;
-
-TYPE geometric_tolerance_auxiliary_classification_enum = ENUMERATION OF
-  (all_over,
-   unless_otherwise_specified);
-END_TYPE;
-
-TYPE geometric_tolerance_modifier = ENUMERATION OF
-  (any_cross_section,
-   associated_least_square_feature,
-   associated_maximum_inscribed_feature,
-   associated_minimum_inscribed_feature,
-   associated_minmax_feature,
-   associated_tangent_feature,
-   circle_a,
-   common_zone,
-   each_radial_element,
-   free_state,
-   least_material_requirement,
-   line_element,
-   major_diameter,
-   maximum_material_requirement,
-   minor_diameter,
-   not_convex,
-   peak_height,
-   pitch_diameter,
-   reciprocity_requirement,
-   reference_least_square_feature_with_external_material_constraint,
-   reference_least_square_feature_with_internal_material_constraint,
-   reference_least_square_feature_without_constraint,
-   reference_maximum_inscribed_feature,
-   reference_minimax_feature_with_external_material_constraint,
-   reference_minimax_feature_with_internal_material_constraint,
-   reference_minimax_feature_without_constraint,
-   reference_minimum_circumscribed_feature,
-   separate_requirement,
-   standard_deviation,
-   statistical_tolerance,
-   tangent_plane,
-   total_range_deviations,
-   united_feature,
-   valley_depth);
-END_TYPE;
-
-TYPE geometric_tolerance_target = SELECT 
-  (dimensional_location,
-   dimensional_size,
-   product_definition_shape,
-   shape_aspect);
-END_TYPE;
-
-TYPE gps_filtration_specification_target = SELECT 
-  (geometric_tolerance);
-END_TYPE;
-
-TYPE gps_filtration_type = SELECT 
-  (geometric_tolerance_modifier);
-END_TYPE;
-
-TYPE groupable_item = SELECT (
-   address,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_attribute_classification_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_group_assignment,
-   applied_identification_assignment,
-   applied_location_assignment,
-   applied_location_representation_assignment,
-   applied_name_assignment,
-   applied_organization_assignment,
-   applied_organization_type_assignment,
-   applied_organizational_project_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   approval,
-   approval_person_organization,
-   approval_relationship,
-   approval_status,
-   ascribable_state,
-   ascribable_state_relationship,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   attribute_language_assignment,
-   breakdown_element_group_assignment,
-   calendar_date,
-   certification,
-   component_feature,
-   configuration_design,
-   configuration_item,
-   configuration_item_relationship,
-   context_dependent_shape_representation,
-   contract,
-   contract_relationship,
-   coordinated_universal_time_offset,
-   date_and_time,
-   date_and_time_assignment,
-   date_assignment,
-   derived_unit,
-   derived_unit_element,
-   description_text,
-   document_file,
-   document_relationship,
-   effectivity,
-   effectivity_relationship,
-   event_occurrence,
-   event_occurrence_relationship,
-   evidence,
-   external_source,
-   general_property,
-   general_property_relationship,
-   geometric_item_specific_usage,
-   geometric_representation_item,
-   group_relationship,
-   instanced_feature,
-   interface_connector_definition,
-   interface_definition_connection,
-   interface_definition_for,
-   item_defined_transformation,
-   local_time,
-   mapped_item,
-   measure_qualification,
-   measure_with_unit,
-   multi_language_attribute_assignment,
-   named_unit,
-   organization,
-   organization_relationship,
-   organization_type,
-   organizational_project,
-   organizational_project_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   precision_qualifier,
-   product,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_group_membership,
-   product_group_relationship,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   replicate_feature,
-   representation,
-   representation_context,
-   representation_item,
-   representation_relationship,
-   representation_relationship_with_transformation,
-   security_classification,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_representation_relationship,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_observed_role,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   styled_item,
-   time_interval,
-   time_interval_assignment,
-   time_interval_relationship,
-   time_interval_role,
-   topological_representation_item,
-   transition_feature,
-   type_qualifier,
-   uncertainty_qualifier,
-   verification_relationship,
-   versioned_action_request);
-   WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
-END_TYPE; 
-
-TYPE hour_in_day = INTEGER;
-WHERE
-  WR1: { 0 <= SELF < 24 };
-END_TYPE;
-
-TYPE id_attribute_select = SELECT 
-  (action,
-   address,
-   application_context,
-   ascribable_state_relationship,
-   dimensional_size,
-   geometric_tolerance,
-   group,
-   organizational_project,
-   product_category,
-   property_definition,
-   representation,
-   shape_aspect,
-   shape_aspect_relationship,
-   topological_representation_item);
-END_TYPE;
-
-TYPE identification_item = SELECT 
-  (action,
-   action_directive,
-   action_directive_relationship,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   address,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   analysis_assignment,
-   analysis_representation_context,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment_relationship,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_external_identification_assignment_relationship,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_relationship,
-   approval_status,
-   ascribable_state,
-   ascribable_state_relationship,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   breakdown_element_realization,
-   breakdown_of,
-   certification,
-   change_group,
-   characterized_class,
-   class,
-   class_system,
-   configuration_effectivity,
-   configuration_item,
-   configuration_item_relationship,
-   contract,
-   contract_relationship,
-   date_and_time_assignment,
-   date_assignment,
-   degenerate_pcurve,
-   dimensional_size,
-   dimensional_size_with_path,
-   directed_action_assignment,
-   document_file,
-   document_relationship,
-   document_type,
-   draughting_model,
-   effectivity,
-   effectivity_relationship,
-   envelope,
-   envelope_relationship,
-   evaluated_characteristic,
-   event_occurrence,
-   event_occurrence_relationship,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   generic_property_relationship,
-   group,
-   group_relationship,
-   identification_assignment_relationship,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_definition,
-   interface_connector_design,
-   interface_connector_occurrence,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_definition_for,
-   interface_specification_definition,
-   interface_specification_version,
-   link_motion_relationship,
-   material_designation,
-   material_designation_characterization,
-   measure_representation_item,
-   mechanical_design_geometric_presentation_representation,
-   message_relationship,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organization_relationship,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   point_on_surface,
-   presentation_area,
-   process_operation,
-   process_plan,
-   product,
-   product_category,
-   product_class,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_concept_feature_category,
-   product_concept_relationship,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_definition_relationship,
-   product_definition_usage,
-   product_definition_usage_relationship,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_relationship,
-   property_definition_representation,
-   representation,
-   representation_context,
-   representation_relationship,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   retention,
-   rule_set,
-   satisfies_requirement,
-   security_classification,
-   security_classification_level,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_feature_definition,
-   shape_feature_definition_relationship,
-   shape_representation,
-   state_definition_to_state_assignment_relationship,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   time_interval,
-   time_interval_relationship,
-   usage_association,
-   validation,
-   verification,
-   verification_relationship,
-   versioned_action_request,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE identifier = STRING;
-END_TYPE;
-
-TYPE idrm_marked_item = SELECT 
-  (document_file,
-   product_definition);
-END_TYPE;
-
-TYPE illuminance_measure = REAL;
-END_TYPE;
-
-TYPE inductance_measure = REAL;
-END_TYPE;
-
-TYPE input_selector = positive_integer;
-END_TYPE;
-
-TYPE inspected_ecdq_element_select = inspected_element_select;
-WHERE
-  wr1 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_COMPOSITE_CURVE_SELECT' IN TYPEOF(SELF));
-  wr2 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' IN TYPEOF(SELF));
-  wr3 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_OR_OPEN_SHELL_SELECT' IN TYPEOF(SELF));
-  wr4 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN TYPEOF(SELF));
-  wr5 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF));
-  wr6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(SELF));
-  wr7 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF(SELF));
-  wr8 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(SELF));
-  wr9 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(SELF));
-  wr10 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(SELF));
-  wr11 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF(SELF));
-  wr12 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(SELF));
-  wr13 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(SELF));
-  wr14 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(SELF));
-END_TYPE;
-
-TYPE inspected_element_select = SELECT 
-  (assembly_component_usage,
-   axis2_placement_3d,
-   b_spline_or_composite_curve_select,
-   b_spline_or_rectangular_composite_surface_select,
-   cartesian_transformation_operator_3d,
-   closed_or_open_shell_select,
-   connected_face_set,
-   curve,
-   direction,
-   edge_curve,
-   edge_loop,
-   face_surface,
-   global_uncertainty_assigned_context,
-   global_unit_assigned_context,
-   group,
-   manifold_solid_brep,
-   placement,
-   point,
-   presentation_layer_assignment,
-   representation_item,
-   styled_item,
-   surface,
-   vertex_point);
-END_TYPE;
-
-TYPE inspected_equivalence_element_select = SELECT 
-  (connected_edge_set,
-   connected_face_set,
-   externally_defined_representation_item,
-   manifold_solid_brep,
-   point_cloud_dataset,
-   product_definition_or_reference,
-   shape_representation,
-   shell_based_surface_model,
-   shell_based_wireframe_model,
-   vertex_point);
-END_TYPE;
-
-TYPE inspected_shape_element_select = inspected_element_select;
-WHERE
-  wr1 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(SELF));
-  wr2 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF));
-  wr3 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_TRANSFORMATION_OPERATOR_3D' IN TYPEOF(SELF));
-  wr4 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT' IN TYPEOF(SELF));
-  wr5 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(SELF));
-  wr6 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF(SELF));
-  wr7 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT' IN TYPEOF(SELF));
-  wr8 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(SELF));
-  wr9 : NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(SELF));
-END_TYPE;
-
-TYPE instance_usage_context_select = SELECT 
-  (process_product_association,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_definition_usage);
-END_TYPE;
-
-TYPE internal_or_reflected_shape_aspect = SELECT 
-  (identifier,
-   shape_aspect);
-END_TYPE;
-
-TYPE interpolation_type = ENUMERATION OF
-  (undefined_interpolation_type,
-   discontinuous_interpolation_type,
-   synchronous_interpolation_type,
-   linear_interpolation_type);
-END_TYPE;
-
-TYPE invisibility_context = SELECT 
-  (draughting_model,
-   presentation_representation,
-   presentation_set);
-END_TYPE;
-
-TYPE invisible_item = SELECT 
-  (draughting_callout,
-   presentation_layer_assignment,
-   representation,
-   styled_item);
-END_TYPE;
-
-TYPE ir_usage_item = action_items;
-END_TYPE;
-
-TYPE item_identified_representation_usage_definition = SELECT 
-  (applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_date_and_time_assignment,
-   applied_date_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_group_assignment,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_name_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   characterized_object,
-   dimensional_size,
-   geometric_tolerance,
-   product_definition_relationship,
-   property_definition,
-   represented_definition);
-END_TYPE;
-
-TYPE item_identified_representation_usage_select = SELECT 
-  (list_representation_item,
-   representation_item,
-   set_representation_item);
-END_TYPE;
-
-TYPE kinematic_analysis_definition = SELECT 
-  (interpolated_configuration_sequence,
-   prescribed_path);
-END_TYPE;
-
-TYPE kinematic_link_representation_items = SELECT 
-  (curve,
-   point,
-   rigid_placement,
-   surface);
-END_TYPE;
-
-TYPE kinematic_result = SELECT 
-  (interpolated_configuration_sequence,
-   resulting_path);
-END_TYPE;
-
-TYPE kinematic_topology_representation_select = SELECT 
-  (kinematic_topology_directed_structure,
-   kinematic_topology_network_structure,
-   kinematic_topology_structure);
-END_TYPE;
-
-TYPE knot_type = ENUMERATION OF
-  (uniform_knots,
-   quasi_uniform_knots,
-   piecewise_bezier_knots,
-   unspecified);
-END_TYPE;
-
-TYPE label = STRING;
-END_TYPE;
-
-TYPE layered_item = SELECT 
-  (presentation_representation,
-   representation_item);
-END_TYPE;
-
-TYPE length_measure = REAL;
-END_TYPE;
-
-TYPE length_or_plane_angle_measure_with_unit_select = SELECT 
-  (length_measure_with_unit,
-   plane_angle_measure_with_unit);
-END_TYPE;
-
-TYPE length_to_height_ratio = ratio_measure;
-END_TYPE;
-
-TYPE limit_condition = ENUMERATION OF
-  (maximum_material_condition,
-   least_material_condition,
-   regardless_of_feature_size);
-END_TYPE;
-
-TYPE linear_geometry_constraint_element = SELECT 
-  (direction,
-   line,
-   plane,
-   vector);
-END_TYPE;
-
-TYPE linearly_independent_enum = ENUMERATION OF
-  (independent,
-   not_independent,
-   not_tested);
-END_TYPE;
-
-TYPE link_or_shape_representation = SELECT 
-  (kinematic_link_representation,
-   shape_representation);
-END_TYPE;
-
-TYPE list_item_defined_transformation = LIST [2 : ?] OF item_defined_transformation;
-END_TYPE;
-
-TYPE list_of_reversible_topology_item = LIST [0 : ?] OF reversible_topology_item;
-END_TYPE;
-
-TYPE list_representation_item = LIST [1 : ?] OF representation_item;
-END_TYPE;
-
-TYPE locally_refined_spline_type_enum = ENUMERATION OF
-  (analysis_suitable_t_spline,
-   hierarchical_b_spline,
-   lr_b_spline,
-   semi_standard_t_spline,
-   standard_t_spline);
-END_TYPE;
-
-TYPE location_in_aggregate_item = LIST [1 : ?] OF integer_representation_item;
-END_TYPE;
-
-TYPE location_item = SELECT 
-  (assembly_component_usage,
-   document_file,
-   interface_connection,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   organization,
-   organizational_project,
-   organization_type,
-   person,
-   person_and_organization,
-   product,
-   product_definition,
-   product_definition_formation,
-   product_definition_relationship,
-   product_group);
-END_TYPE;
-
-TYPE location_of_extreme_value_select = SELECT 
-  (boundary_curve_of_b_spline_or_rectangular_composite_surface,
-   b_spline_curve_knot_locator,
-   b_spline_curve_segment,
-   b_spline_surface_knot_locator,
-   b_spline_surface_patch,
-   b_spline_surface_strip,
-   composite_curve_transition_locator,
-   face_bound,
-   inspected_shape_element_select,
-   oriented_edge,
-   point_on_edge_curve,
-   point_on_face_surface,
-   rectangular_composite_surface_transition_locator,
-   subedge,
-   subface);
-END_TYPE;
-
-TYPE location_representation_item = SELECT 
-  (organizational_address,
-   person_and_organization_address,
-   product,
-   product_definition_formation);
-END_TYPE;
-
-TYPE lower_upper = ENUMERATION OF
-  (lower,
-   upper);
-END_TYPE;
-
-TYPE luminous_flux_measure = REAL;
-END_TYPE;
-
-TYPE luminous_intensity_measure = REAL;
-END_TYPE;
-
-TYPE machining_feature_definition = SELECT 
-  (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);
-END_TYPE;
-
-TYPE magnetic_flux_density_measure = REAL;
-END_TYPE;
-
-TYPE magnetic_flux_measure = REAL;
-END_TYPE;
-
-TYPE marker_select = SELECT 
-  (marker_type,
-   pre_defined_marker);
-END_TYPE;
-
-TYPE marker_type = ENUMERATION OF
-  (dot,
-   x,
-   plus,
-   asterisk,
-   ring,
-   square,
-   triangle);
-END_TYPE;
-
-TYPE mass_measure = REAL;
-END_TYPE;
-
-TYPE maths_atom = SELECT 
-  (maths_enum_atom,
-   maths_simple_atom);
-END_TYPE;
-
-TYPE maths_boolean = BOOLEAN;
-END_TYPE;
-
-TYPE maths_enum_atom = SELECT 
-  (elementary_function_enumerators,
-   elementary_space_enumerators,
-   extension_options,
-   lower_upper,
-   open_closed,
-   ordering_type,
-   repackage_options,
-   space_constraint_type,
-   symmetry_type);
-END_TYPE;
-
-TYPE maths_expression = SELECT 
-  (atom_based_value,
-   generic_expression,
-   maths_tuple);
-END_TYPE;
-
-TYPE maths_function_select = SELECT 
-  (elementary_function_enumerators,
-   maths_function);
-END_TYPE;
-
-TYPE maths_integer = INTEGER;
-END_TYPE;
-
-TYPE maths_logical = LOGICAL;
-END_TYPE;
-
-TYPE maths_number = NUMBER;
-END_TYPE;
-
-TYPE maths_real = REAL;
-END_TYPE;
-
-TYPE maths_simple_atom = SELECT 
-  (maths_boolean,
-   maths_integer,
-   maths_logical,
-   maths_number,
-   maths_real,
-   maths_string);
-END_TYPE;
-
-TYPE maths_space_or_function = SELECT 
-  (maths_function,
-   maths_space);
-END_TYPE;
-
-TYPE maths_string = STRING;
-END_TYPE;
-
-TYPE maths_tuple = LIST [0 : ?] OF maths_value;
-END_TYPE;
-
-TYPE maths_value = SELECT
-  (atom_based_value,
-   maths_tuple,
-   generic_expression);
-WHERE
-  constancy: NOT ('GENERIC_EXPRESSION' IN stripped_typeof(SELF)) OR
-             expression_is_constant(SELF);
-END_TYPE;
-
-TYPE maximum_edge_length = positive_length_measure;
-END_TYPE;
-
-TYPE measure_value = SELECT 
-  (absorbed_dose_measure,
-   acceleration_measure,
-   amount_of_substance_measure,
-   area_measure,
-   capacitance_measure,
-   celsius_temperature_measure,
-   conductance_measure,
-   context_dependent_measure,
-   count_measure,
-   descriptive_measure,
-   dose_equivalent_measure,
-   electric_charge_measure,
-   electric_current_measure,
-   electric_potential_measure,
-   energy_measure,
-   force_measure,
-   frequency_measure,
-   illuminance_measure,
-   inductance_measure,
-   length_measure,
-   luminous_flux_measure,
-   luminous_intensity_measure,
-   magnetic_flux_density_measure,
-   magnetic_flux_measure,
-   mass_measure,
-   non_negative_length_measure,
-   numeric_measure,
-   parameter_value,
-   plane_angle_measure,
-   positive_length_measure,
-   positive_plane_angle_measure,
-   positive_ratio_measure,
-   power_measure,
-   pressure_measure,
-   radioactivity_measure,
-   ratio_measure,
-   resistance_measure,
-   solid_angle_measure,
-   thermodynamic_temperature_measure,
-   time_measure,
-   velocity_measure,
-   volume_measure);
-END_TYPE;
-
-TYPE measured_value_select = SELECT 
-  (boolean_value,
-   measure_value,
-   plane_angle_and_length_pair,
-   plane_angle_and_ratio_pair);
-END_TYPE;
-
-TYPE mechanical_design_and_draughting_relationship_select = SELECT 
-  (draughting_model,
-   mechanical_design_geometric_presentation_representation,
-   mechanical_design_presentation_representation_with_draughting,
-   mechanical_design_shaded_presentation_representation,
-   shape_representation);
-END_TYPE;
-
-TYPE mechanical_design_geometric_presentation_area_items = SELECT 
-  (axis2_placement,
-   mapped_item);
-END_TYPE;
-
-TYPE mechanical_design_geometric_presentation_representation_items = SELECT 
-  (axis2_placement,
-   camera_model_d3,
-   mapped_item,
-   styled_item);
-END_TYPE;
-
-TYPE mechanical_design_shaded_presentation_area_items = SELECT 
-  (axis2_placement,
-   mapped_item);
-END_TYPE;
-
-TYPE mechanical_design_shaded_presentation_representation_items = SELECT 
-  (axis2_placement,
-   camera_model_d3,
-   mapped_item,
-   styled_item);
-END_TYPE;
-
-TYPE message = STRING;
-END_TYPE;
-
-TYPE minute_in_hour = INTEGER;
-WHERE
-  WR1: { 0 <= SELF <= 59 };
-END_TYPE;
-
-TYPE month_in_year_number = INTEGER;
-WHERE
-  WR1: { 1 <= SELF <= 12 };
-END_TYPE;
-
-TYPE multi_language_attribute_item = SELECT 
-  (action,
-   action_directive,
-   action_directive_relationship,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   action_relationship,
-   actuated_kinematic_pair,
-   alternate_product_relationship,
-   alternative_solution_relationship,
-   analysis_assignment,
-   analysis_representation_context,
-   application_context,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_action_request_assignment,
-   applied_approval_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment_relationship,
-   applied_contract_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_external_identification_assignment,
-   applied_external_identification_assignment_relationship,
-   applied_identification_assignment,
-   applied_ineffectivity_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_time_interval_assignment,
-   applied_usage_right,
-   approval,
-   approval_relationship,
-   approval_status,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   assignment_object_relationship,
-   attribute_value_assignment,
-   breakdown_context,
-   breakdown_element_realization,
-   breakdown_of,
-   certification,
-   certification_type,
-   change_element_sequence,
-   change_group,
-   class,
-   colour,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configuration_item_relationship,
-   contract,
-   contract_relationship,
-   data_environment,
-   date_role,
-   date_time_role,
-   descriptive_representation_item,
-   directed_action_assignment,
-   document_file,
-   document_relationship,
-   document_usage_role,
-   draughting_title,
-   effectivity,
-   effectivity_relationship,
-   envelope,
-   envelope_relationship,
-   evaluated_characteristic,
-   event_occurrence,
-   event_occurrence_relationship,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_defined_class,
-   external_source,
-   general_property,
-   general_property_relationship,
-   generic_property_relationship,
-   geometric_representation_item,
-   geometric_tolerance,
-   global_uncertainty_assigned_context,
-   global_unit_assigned_context,
-   group,
-   group_relationship,
-   identification_assignment_relationship,
-   identification_role,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   interface_definition_for,
-   in_zone,
-   kinematic_pair,
-   link_motion_relationship,
-   make_from_usage_option,
-   mapped_item,
-   material_designation_characterization,
-   measure_qualification,
-   measure_with_unit,
-   message_relationship,
-   name_assignment,
-   object_role,
-   organization,
-   organizational_address,
-   organizational_project,
-   organizational_project_relationship,
-   organizational_project_role,
-   organization_relationship,
-   organization_role,
-   package_product_concept_feature,
-   person,
-   person_and_organization,
-   person_and_organization_address,
-   person_and_organization_role,
-   presentation_layer_assignment,
-   process_operation,
-   process_plan,
-   process_product_association,
-   product,
-   product_concept,
-   product_concept_context,
-   product_concept_feature,
-   product_concept_feature_association,
-   product_concept_feature_category,
-   product_concept_feature_category_usage,
-   product_concept_relationship,
-   product_definition,
-   product_definition_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_shape,
-   product_definition_substitute,
-   product_definition_usage,
-   product_definition_usage_relationship,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_group,
-   product_group_relationship,
-   product_identification,
-   product_process_plan,
-   product_related_product_category,
-   product_relationship,
-   product_specification,
-   property_definition,
-   property_definition_relationship,
-   property_definition_representation,
-   qualitative_uncertainty,
-   representation,
-   representation_context,
-   representation_item,
-   representation_relationship,
-   representation_relationship_with_transformation,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   resource_requirement_type,
-   retention,
-   satisfies_requirement,
-   security_classification,
-   security_classification_assignment,
-   shape_aspect,
-   shape_aspect_relationship,
-   shape_feature_definition,
-   shape_feature_definition_relationship,
-   shape_representation,
-   state_definition_to_state_assignment_relationship,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   styled_item,
-   time_interval,
-   time_interval_relationship,
-   time_interval_role,
-   topological_representation_item,
-   uncertainty_measure_with_unit,
-   uncertainty_qualifier,
-   usage_association,
-   validation,
-   verification,
-   verification_relationship,
-   versioned_action_request,
-   versioned_action_request_relationship);
-END_TYPE;
-
-TYPE multi_or_next_assembly_usage_occurrence = SELECT 
-  (multi_level_reference_designator,
-   next_assembly_usage_occurrence);
-END_TYPE;
-
-TYPE name_attribute_select = SELECT 
-  (action_request_solution,
-   address,
-   configuration_design,
-   context_dependent_shape_representation,
-   derived_unit,
-   effectivity,
-   person_and_organization,
-   product_definition,
-   product_definition_substitute,
-   property_definition_representation);
-END_TYPE;
-
-TYPE name_item = SELECT 
-  (applied_action_assignment,
-   applied_action_method_assignment,
-   assembly_component_usage,
-   external_class_library,
-   group,
-   group_relationship,
-   product,
-   product_definition);
-END_TYPE;
-
-TYPE non_negative_length_measure = length_measure;
-WHERE
-  WR1: SELF >= 0.0;
-END_TYPE;
-
-TYPE non_negative_real = REAL;
-WHERE
-  WR1: 0.0 <= SELF;
-END_TYPE;
-
-TYPE nonnegative_integer = INTEGER;
-WHERE 
-nonnegativity: SELF >= 0;
-END_TYPE;
-
-TYPE null_style = ENUMERATION OF
-  (null);
-END_TYPE;
-
-TYPE numeric_measure = NUMBER;
-END_TYPE;
-
-TYPE one_or_two = positive_integer;
-WHERE in_range: (SELF = 1) OR (SELF = 2);
-END_TYPE;
-
-TYPE open_closed = ENUMERATION OF
-  (open,
-   closed);
-END_TYPE;
-
-TYPE ordering_type = ENUMERATION OF
-  (by_rows,
-   by_columns);
-END_TYPE;
-
-TYPE organization_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   approval,
-   approval_status,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   data_equivalence_definition,
-   data_quality_definition,
-   date_and_time_assignment,
-   date_assignment,
-   document_file,
-   document_type,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   envelope,
-   event_occurrence,
-   evidence,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   information_right,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   interface_definition_for,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organization,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   person_and_organization,
-   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_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   rule_action,
-   satisfies_requirement,
-   security_classification,
-   security_classification_level,
-   shape_representation,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   validation,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE organization_type_item = SELECT 
-  (organization);
-END_TYPE;
-
-TYPE orientation_basis_select = SELECT 
-  (axis2_placement_3d,
-   min_and_major_ply_orientation_basis);
-END_TYPE;
-
-TYPE oriented_tolerance_zone_type = ENUMERATION OF
-  (perpendicular,
-   parallel,
-   angular);
-END_TYPE;
-
-TYPE parallel_offset_type = ENUMERATION OF
-  (curve_2d_offset,
-   curve_3d_offset,
-   surface_offset);
-END_TYPE;
-
-TYPE parameter_value = REAL;
-END_TYPE;
-
-TYPE path_or_composite_curve = SELECT 
-  (composite_curve,
-   path);
-END_TYPE;
-
-TYPE pcurve_or_surface = SELECT 
-  (pcurve,
-   surface);
-END_TYPE;
-
-TYPE person_and_organization_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_certification_assignment,
-   applied_classification_assignment,
-   applied_contract_assignment,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_effectivity_assignment,
-   applied_event_occurrence_assignment,
-   applied_identification_assignment,
-   applied_organizational_project_assignment,
-   applied_organization_assignment,
-   applied_person_and_organization_assignment,
-   applied_security_classification_assignment,
-   approval,
-   approval_status,
-   ascribable_state,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   data_equivalence_definition,
-   data_quality_definition,
-   date_and_time_assignment,
-   date_assignment,
-   document_file,
-   document_type,
-   draughting_model,
-   drawing_revision,
-   effectivity,
-   envelope,
-   event_occurrence,
-   evidence,
-   executed_action,
-   general_property,
-   general_property_relationship,
-   information_usage_right,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   interface_definition_for,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organization,
-   organizational_address,
-   organizational_project,
-   organization_relationship,
-   person_and_organization,
-   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_context,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   requirement_assignment,
-   requirement_for_action_resource,
-   requirement_source,
-   resource_property,
-   rule_action,
-   security_classification,
-   security_classification_level,
-   shape_representation,
-   state_observed,
-   state_observed_assignment,
-   state_observed_relationship,
-   state_type,
-   state_type_assignment,
-   state_type_relationship,
-   structured_message,
-   validation,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE person_organization_select = SELECT 
-  (organization,
-   person,
-   person_and_organization);
-END_TYPE;
-
-TYPE picture_representation_item_select = SELECT 
-  (axis2_placement_2d,
-   planar_box,
-   styled_item);
-END_TYPE;
-
-TYPE planar_curve_select = SELECT
-  (line,
-   conic,
-   trimmed_curve,
-   pcurve,
-   surface_curve);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-  WR2: check_curve_planarity(SELF);
-END_TYPE;
-
-TYPE plane_angle_measure = REAL;
-END_TYPE;
-
-TYPE plane_or_planar_box = SELECT 
-  (planar_box,
-   plane);
-END_TYPE;
-
-TYPE point_and_vector_member = SELECT 
-  (direction,
-   point);
-END_TYPE;
-
-TYPE point_and_vector_members = LIST [2 : 3] OF point_and_vector_member;
-END_TYPE;
-
-TYPE point_array_members = LIST [1 : ?] OF point_and_vector;
-END_TYPE;
-
-TYPE point_cloud_set_or_superset = SELECT 
-  (point_cloud_dataset,
-   point_cloud_superdataset);
-END_TYPE;
-
-TYPE point_curve_or_surface_constraint_element = SELECT 
-  (curve,
-   point,
-   surface);
-END_TYPE;
-
-TYPE point_path_members = LIST [1 : ?] OF point_and_vector;
-END_TYPE;
-
-TYPE point_placement_shape_representation_item = SELECT 
-  (axis2_placement_3d,
-   compound_representation_item,
-   mapped_item);
-END_TYPE;
-
-TYPE positive_integer = nonnegative_integer;
-WHERE positivity: SELF > 0;
-END_TYPE;
-
-TYPE positive_length_measure = non_negative_length_measure;
-WHERE
-  WR1: SELF > 0.0;
-END_TYPE;
-
-TYPE positive_plane_angle_measure = plane_angle_measure;
-WHERE
-  WR1: SELF > 0.0;
-END_TYPE;
-
-TYPE positive_ratio_measure = ratio_measure;
-WHERE
-  WR1: SELF > 0.0;
-END_TYPE;
-
-TYPE power_measure = REAL;
-END_TYPE;
-
-TYPE preferred_ordering = ENUMERATION OF
-  (extremity_order,
-   detected_order);
-END_TYPE;
-
-TYPE preferred_report_ordering = ENUMERATION OF
-  (in_notable_order,
-   in_detected_order);
-END_TYPE;
-
-TYPE preferred_surface_curve_representation = ENUMERATION OF
-  (curve_3d,
-   pcurve_s1,
-   pcurve_s2);
-END_TYPE;
-
-TYPE presentable_text = STRING;
-WHERE
-  WR1: control_characters_free(SELF);
-END_TYPE;
-
-TYPE presentation_representation_select = SELECT 
-  (presentation_representation,
-   presentation_set);
-END_TYPE;
-
-TYPE presentation_size_assignment_select = SELECT 
-  (area_in_set,
-   presentation_area,
-   presentation_view);
-END_TYPE;
-
-TYPE presentation_style_select = SELECT 
-  (curve_style,
-   externally_defined_style,
-   fill_area_style,
-   null_style,
-   point_style,
-   surface_style_usage,
-   symbol_style,
-   texture_style_tessellation_specification,
-   text_style);
-END_TYPE;
-
-TYPE presented_item_select = SELECT 
-  (action,
-   action_method,
-   action_relationship,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_category,
-   product_definition,
-   product_definition_formation,
-   product_definition_relationship);
-END_TYPE;
-
-TYPE pressure_measure = REAL;
-END_TYPE;
-
-TYPE previous_element_assignment_select = SELECT 
-  (delete_element,
-   modify_element);
-END_TYPE;
-
-TYPE product_definition_occurrence_or_reference = SELECT 
-  (product_definition_occurrence,
-   product_definition_occurrence_reference);
-END_TYPE;
-
-TYPE product_definition_or_assembly_relationship = SELECT 
-  (assembly_component_usage,
-   product_definition);
-END_TYPE;
-
-TYPE product_definition_or_breakdown_element_usage = SELECT 
-  (product,
-   product_definition,
-   product_definition_formation,
-   product_definition_usage);
-END_TYPE;
-
-TYPE product_definition_or_product_definition_relationship = SELECT 
-  (interface_connector_occurrence,
-   product,
-   product_definition,
-   product_definition_usage,
-   product_group);
-END_TYPE;
-
-TYPE product_definition_or_reference = SELECT 
-  (generic_product_definition_reference,
-   product_definition,
-   product_definition_occurrence);
-END_TYPE;
-
-TYPE product_definition_or_reference_or_occurrence = product_definition_or_reference;
-END_TYPE;
-
-TYPE product_or_formation_or_definition = SELECT 
-  (product,
-   product_definition,
-   product_definition_formation);
-END_TYPE;
-
-TYPE product_select = SELECT 
-  (product,
-   product_concept,
-   product_definition_formation,
-   product_group);
-END_TYPE;
-
-TYPE product_space = SELECT 
-  (uniform_product_space);
-END_TYPE;
-
-TYPE project_item = SELECT 
-  (action_method,
-   action_method_relationship,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   assembly_component_usage,
-   configuration_item,
-   executed_action,
-   measure_representation_item,
-   product,
-   product_concept,
-   product_definition,
-   product_definition_formation,
-   product_definition_occurrence,
-   product_definition_occurrence_reference,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   property_definition_representation,
-   representation,
-   representation_item,
-   value_representation_item);
-END_TYPE;
-
-TYPE property_or_shape_select = SELECT 
-  (property_definition,
-   shape_definition);
-END_TYPE;
-
-TYPE property_variable_rep_select = SELECT 
-  (dimensional_size,
-   representation);
-END_TYPE;
-
-TYPE radial_geometry_constraint_element = SELECT 
-  (circle,
-   conical_surface,
-   cylindrical_surface,
-   right_circular_cone,
-   right_circular_cylinder,
-   sphere,
-   spherical_surface);
-END_TYPE;
-
-TYPE radioactivity_measure = REAL;
-END_TYPE;
-
-TYPE ratio_measure = REAL;
-END_TYPE;
-
-TYPE real_interval = SELECT
-  (real_interval_from_min,
-   real_interval_to_max,
-   finite_real_interval,
-   elementary_space);
-WHERE
-  WR1: NOT ('ELEMENTARY_SPACE' IN stripped_typeof(SELF)) OR
-    (SELF\elementary_space.space_id = es_reals);
-END_TYPE;
-
-TYPE rendering_properties_select = SELECT 
-  (surface_style_reflectance_ambient,
-   surface_style_transparent);
-END_TYPE;
-
-TYPE repackage_options = ENUMERATION OF
-  (ro_nochange,
-   ro_wrap_as_tuple,
-   ro_unwrap_tuple);
-END_TYPE;
-
-TYPE representation_or_representation_reference = SELECT 
-  (representation,
-   representation_reference);
-END_TYPE;
-
-TYPE representation_proxy_select = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE representative_value_type = ENUMERATION OF
-  (average_value,
-   max_value,
-   min_value,
-   min_max_value);
-END_TYPE;
-
-TYPE represented_definition = SELECT 
-  (general_property,
-   property_definition,
-   property_definition_relationship,
-   shape_aspect,
-   shape_aspect_relationship);
-END_TYPE;
-
-TYPE requirement_assigned_item = SELECT 
-  (action_method,
-   alternate_product_relationship,
-   applied_action_method_assignment,
-   applied_state_observed_assignment,
-   applied_state_type_assignment,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   characterized_object,
-   configuration_item,
-   descriptive_representation_item,
-   dimensional_location,
-   dimensional_size,
-   geometric_tolerance,
-   interface_connector_occurrence,
-   organizational_project,
-   product,
-   product_class,
-   product_definition,
-   product_definition_formation,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_group,
-   product_group_membership,
-   quantified_assembly_component_usage,
-   representation,
-   shape_aspect,
-   state_observed,
-   state_type,
-   validation,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE requirement_satisfaction_item = SELECT 
-  (requirement_assigned_item);
-END_TYPE;
-
-TYPE requirement_source_item = SELECT 
-  (action_method,
-   applied_action_method_assignment,
-   applied_state_observed_assignment,
-   applied_state_type_assignment,
-   characterized_object,
-   contract,
-   dimensional_location,
-   dimensional_size,
-   executed_action,
-   geometric_tolerance,
-   group,
-   group_relationship,
-   interface_connector_occurrence,
-   organization,
-   organizational_project,
-   person_and_organization,
-   product,
-   product_definition,
-   product_definition_formation,
-   product_definition_relationship,
-   shape_aspect,
-   state_observed,
-   state_type,
-   validation,
-   verification);
-END_TYPE;
-
-TYPE resistance_measure = REAL;
-END_TYPE;
-
-TYPE reversible_topology = SELECT 
-  (list_of_reversible_topology_item,
-   reversible_topology_item,
-   set_of_reversible_topology_item);
-END_TYPE;
-
-TYPE reversible_topology_item = SELECT 
-  (closed_shell,
-   edge,
-   face,
-   face_bound,
-   open_shell,
-   path);
-END_TYPE;
-
-TYPE rigid_placement = SELECT 
-  (axis2_placement_3d,
-   su_parameters);
-END_TYPE;
-
-TYPE role_select = SELECT 
-  (action_assignment,
-   action_request_assignment,
-   approval_assignment,
-   approval_date_time,
-   certification_assignment,
-   contract_assignment,
-   directed_action_assignment,
-   document_reference,
-   effectivity_assignment,
-   group_assignment,
-   name_assignment,
-   security_classification_assignment);
-END_TYPE;
-
-TYPE rule_superseded_item = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE same_as_item = SELECT 
-  (address,
-   applied_external_identification_assignment,
-   approval,
-   approval_status,
-   attribute_language_assignment,
-   calendar_date,
-   certification,
-   contract,
-   coordinated_universal_time_offset,
-   date_and_time,
-   derived_unit,
-   derived_unit_element,
-   event_occurrence,
-   external_source,
-   general_property,
-   information_right,
-   information_usage_right,
-   language,
-   local_time,
-   measure_with_unit,
-   named_unit,
-   organization,
-   person,
-   product_definition_context,
-   representation_context,
-   requirement_source,
-   security_classification,
-   time_interval,
-   usage_association);
-END_TYPE;
-
-TYPE second_in_minute = REAL;
-WHERE
-  WR1: { 0 <= SELF < 60.0 };
-END_TYPE;
-
-TYPE security_classification_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_method_relationship,
-   action_property,
-   action_property_representation,
-   applied_action_assignment,
-   applied_action_method_assignment,
-   applied_classification_assignment,
-   applied_description_text_assignment,
-   applied_description_text_assignment_relationship,
-   applied_document_reference,
-   applied_document_usage_constraint_assignment,
-   applied_external_identification_assignment,
-   applied_identification_assignment,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   class_system,
-   conditional_effectivity,
-   configuration_design,
-   configuration_effectivity,
-   configured_effectivity_assignment,
-   document,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   envelope,
-   evaluated_characteristic_of_product_as_individual_test_result,
-   evidence,
-   exclusive_product_concept_feature_category,
-   executed_action,
-   externally_defined_general_property,
-   general_property,
-   group,
-   identification_assignment_relationship,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_design,
-   interface_connector_occurrence,
-   interface_definition_connection,
-   interface_definition_for,
-   make_from_usage_option,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organizational_project,
-   package_product_concept_feature,
-   presentation_area,
-   process_plan,
-   product,
-   product_class,
-   product_concept,
-   product_concept_feature,
-   product_concept_feature_category,
-   product_definition,
-   product_definition_formation,
-   product_definition_formation_relationship,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_definition_usage,
-   product_design_to_individual,
-   product_design_version_to_individual,
-   product_group,
-   product_group_membership,
-   product_group_relationship,
-   product_identification,
-   product_process_plan,
-   product_relationship,
-   property_definition,
-   property_definition_representation,
-   representation,
-   requirement_assignment,
-   requirement_source,
-   requirement_view_definition_relationship,
-   resource_property,
-   shape_representation,
-   structured_message,
-   validation,
-   verification,
-   versioned_action_request);
-END_TYPE;
-
-TYPE set_inner_area_boundary = SET [1 : ?] OF bounded_primitive_2d;
-END_TYPE;
-
-TYPE set_item_defined_transformation = SET [2 : ?] OF item_defined_transformation;
-END_TYPE;
-
-TYPE set_of_reversible_topology_item = SET [0 : ?] OF reversible_topology_item;
-END_TYPE;
-
-TYPE set_representation_item = SET [1 : ?] OF representation_item;
-END_TYPE;
-
-TYPE shading_curve_method = ENUMERATION OF
-  (constant_colour,
-   linear_colour);
-END_TYPE;
-
-TYPE shading_surface_method = ENUMERATION OF
-  (constant_shading,
-   colour_shading,
-   dot_shading,
-   normal_shading);
-END_TYPE;
-
-TYPE shape_aspect_or_characterized_object = SELECT 
-  (characterized_object,
-   shape_aspect);
-END_TYPE;
-
-TYPE shape_data_quality_assessment_specification_select = SELECT 
-  (shape_data_quality_assessment_by_logical_test,
-   shape_data_quality_assessment_by_numerical_test);
-END_TYPE;
-
-TYPE shape_data_quality_value_limit_type_select = SELECT 
-  (shape_data_quality_value_limit,
-   shape_data_quality_value_range);
-END_TYPE;
-
-TYPE shape_definition = SELECT 
-  (product_definition_shape,
-   shape_aspect,
-   shape_aspect_relationship);
-END_TYPE;
-
-TYPE shape_dimension_representation_item = SELECT 
-  (compound_representation_item,
-   descriptive_representation_item,
-   measure_representation_item,
-   placement);
-END_TYPE;
-
-TYPE shape_model = SELECT 
-  (constructive_geometry_representation,
-   shape_representation);
-END_TYPE;
-
-TYPE shape_representation_item = SELECT 
-  (geometric_representation_item,
-   topological_representation_item);
-END_TYPE;
-
-TYPE shape_representation_with_parameters_items = SELECT 
-  (descriptive_representation_item,
-   direction,
-   measure_representation_item,
-   placement);
-END_TYPE;
-
-TYPE shell = SELECT 
-  (closed_shell,
-   open_shell,
-   vertex_shell,
-   wire_shell);
-END_TYPE;
-
-TYPE si_prefix = ENUMERATION OF
-  (exa,
-   peta,
-   tera,
-   giga,
-   mega,
-   kilo,
-   hecto,
-   deca,
-   deci,
-   centi,
-   milli,
-   micro,
-   nano,
-   pico,
-   femto,
-   atto);
-END_TYPE;
-
-TYPE si_unit_name = ENUMERATION OF
-  (metre,
-   gram,
-   second,
-   ampere,
-   kelvin,
-   mole,
-   candela,
-   radian,
-   steradian,
-   hertz,
-   newton,
-   pascal,
-   joule,
-   watt,
-   coulomb,
-   volt,
-   farad,
-   ohm,
-   siemens,
-   weber,
-   tesla,
-   henry,
-   degree_celsius,
-   lumen,
-   lux,
-   becquerel,
-   gray,
-   sievert);
-END_TYPE;
-
-TYPE simple_datum_reference_modifier = ENUMERATION OF
-  (any_cross_section,
-   any_longitudinal_section,
-   basic,
-   contacting_feature,
-   degree_of_freedom_constraint_u,
-   degree_of_freedom_constraint_v,
-   degree_of_freedom_constraint_w,
-   degree_of_freedom_constraint_x,
-   degree_of_freedom_constraint_y,
-   degree_of_freedom_constraint_z,
-   distance_variable,
-   free_state,
-   least_material_requirement,
-   line,
-   major_diameter,
-   maximum_material_requirement,
-   minor_diameter,
-   orientation,
-   pitch_diameter,
-   plane,
-   point,
-   translation);
-END_TYPE;
-
-TYPE size_select = SELECT 
-  (descriptive_measure,
-   measure_with_unit,
-   positive_length_measure);
-END_TYPE;
-
-TYPE sketch_basis_select = SELECT 
-  (curve_bounded_surface,
-   face_surface,
-   planar_curve_select);
-END_TYPE;
-
-TYPE sketch_element_select = SELECT (
-   curve,
-   point);
-   WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-END_TYPE;
-
-TYPE sketch_type_select = SELECT 
-  (neutral_sketch_representation,
-   positioned_sketch,
-   subsketch);
-END_TYPE;
-
-TYPE solid_angle_measure = REAL;
-END_TYPE;
-
-TYPE source = ENUMERATION OF
-  (made,
-   bought,
-   not_known);
-END_TYPE;
-
-TYPE source_item = SELECT 
-  (identifier,
-   message);
-END_TYPE;
-
-TYPE space_constraint_type = ENUMERATION OF
-  (sc_equal,
-   sc_subspace,
-   sc_member);
-END_TYPE;
-
-TYPE spatial_rotation = SELECT 
-  (rotation_about_direction,
-   ypr_rotation);
-END_TYPE;
-
-TYPE specified_item = SELECT 
-  (drawing_revision);
-END_TYPE;
-
-TYPE spherical_pair_select = SELECT 
-  (spherical_pair,
-   spherical_pair_with_pin);
-END_TYPE;
-
-TYPE spline_knot_values = LIST [2: ?] OF REAL; 
-WHERE 
-WR1 :   increasing_values_in_list(SELF);
-END_TYPE;
-
-TYPE start_request_item = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE state_observed_of_item = SELECT 
-  (alternate_product_relationship,
-   applied_action_method_assignment,
-   applied_external_identification_assignment,
-   approval,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   attachment_slot_design_to_planned,
-   attachment_slot_design_to_realized,
-   attachment_slot_on_product,
-   attachment_slot_planned_to_realized,
-   breakdown_element_group_assignment,
-   breakdown_element_usage,
-   certification,
-   configuration_item,
-   contract,
-   document_file,
-   evidence,
-   final_solution,
-   group,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_definition,
-   interface_connector_design,
-   interface_connector_occurrence,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_specification_definition,
-   interface_specification_version,
-   organization,
-   organizational_project,
-   person_and_organization,
-   product,
-   product_category,
-   product_concept,
-   product_definition,
-   product_definition_formation,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_in_attachment_slot,
-   security_classification,
-   structured_message,
-   validation,
-   verification);
-END_TYPE;
-
-TYPE state_type_of_item = SELECT 
-  (action_method,
-   alternate_product_relationship,
-   applied_action_method_assignment,
-   applied_external_identification_assignment,
-   approval,
-   assembly_component_usage,
-   assembly_component_usage_substitute,
-   attachment_slot_design_to_planned,
-   attachment_slot_design_to_realized,
-   attachment_slot_on_product,
-   attachment_slot_planned_to_realized,
-   breakdown_element_group_assignment,
-   breakdown_element_usage,
-   certification,
-   configuration_item,
-   contract,
-   document_file,
-   evidence,
-   final_solution,
-   interface_connection,
-   interface_connector_as_planned,
-   interface_connector_as_realized,
-   interface_connector_definition,
-   interface_connector_design,
-   interface_connector_occurrence,
-   interface_connector_version,
-   interface_definition_connection,
-   interface_specification_definition,
-   interface_specification_version,
-   organization,
-   organizational_project,
-   person_and_organization,
-   product,
-   product_category,
-   product_concept,
-   product_definition,
-   product_definition_formation,
-   product_definition_group_assignment,
-   product_definition_relationship,
-   product_group,
-   product_in_attachment_slot,
-   security_classification,
-   validation,
-   verification);
-END_TYPE;
-
-TYPE statistical_value_type = ENUMERATION OF
-  (number_of_inspected_instances,
-   number_of_quality_defects_detected);
-END_TYPE;
-
-TYPE string_representation_item_select = SELECT 
-  (descriptive_representation_item,
-   included_text_block,
-   structured_text_composition);
-END_TYPE;
-
-TYPE style_context_select = SELECT 
-  (context_dependent_shape_representation,
-   group,
-   presentation_layer_assignment,
-   presentation_set,
-   representation,
-   representation_item,
-   representation_relationship);
-END_TYPE;
-
-TYPE styled_item_target = SELECT 
-  (geometric_representation_item,
-   mapped_item,
-   representation_or_representation_reference,
-   topological_representation_item);
-END_TYPE;
-
-TYPE summary_report_style_type = ENUMERATION OF
-  (conclusion,
-   number_of_defects,
-   number_of_inspections);
-END_TYPE;
-
-TYPE summary_report_type = ENUMERATION OF
-  (unspecified,
-   conclusion_only,
-   number_of_quality_defects,
-   number_of_inspections_and_conclusion,
-   full_statistics);
-END_TYPE;
-
-TYPE supported_item = SELECT 
-  (action,
-   action_directive,
-   action_method);
-END_TYPE;
-
-TYPE surface_boundary_type = ENUMERATION OF
-  (u_parameter_min,
-   v_parameter_min,
-   u_parameter_max,
-   v_parameter_max);
-END_TYPE;
-
-TYPE surface_model = SELECT 
-  (face_based_surface_model,
-   shell_based_surface_model);
-END_TYPE;
-
-TYPE surface_or_solid_model = SELECT 
-  (solid_model,
-   surface_model);
-END_TYPE;
-
-TYPE surface_side = ENUMERATION OF
-  (positive,
-   negative,
-   both);
-END_TYPE;
-
-TYPE surface_side_style_select = SELECT 
-  (pre_defined_surface_side_style,
-   surface_side_style);
-END_TYPE;
-
-TYPE surface_style_element_select = SELECT 
-  (surface_style_boundary,
-   surface_style_control_grid,
-   surface_style_fill_area,
-   surface_style_parameter_line,
-   surface_style_rendering,
-   surface_style_segmentation_curve,
-   surface_style_silhouette);
-END_TYPE;
-
-TYPE swept_surface_or_solid = SELECT 
-  (swept_area_solid,
-   swept_face_solid,
-   swept_surface);
-END_TYPE;
-
-TYPE symbol_style_select = SELECT 
-  (symbol_colour);
-END_TYPE;
-
-TYPE symmetry_type = ENUMERATION OF
-  (identity,
-   skew,
-   hermitian,
-   skew_hermitian);
-END_TYPE;
-
-TYPE tangent_contact_type = ENUMERATION OF
-  (point_contact,
-   curve_contact,
-   surface_contact);
-END_TYPE;
-
-TYPE target_annotated_3d_model_select = SELECT 
-  (shape_representation_relationship);
-END_TYPE;
-
-TYPE tessellated_edge_or_vertex = SELECT 
-  (tessellated_edge,
-   tessellated_vertex);
-END_TYPE;
-
-TYPE tessellated_facet_long_short_edge_ratio = ratio_measure;
-END_TYPE;
-
-TYPE tessellated_surface_item = SELECT 
-  (tessellated_face,
-   tessellated_shell,
-   tessellated_solid,
-   tessellated_surface_set);
-END_TYPE;
-
-TYPE tessellation_accuracy_parameter_item = SELECT 
-  (angular_deviation,
-   chordal_deviation,
-   length_to_height_ratio,
-   maximum_edge_length,
-   tessellated_facet_long_short_edge_ratio);
-END_TYPE;
-
-TYPE text = STRING;
-END_TYPE;
-
-TYPE text_alignment = label;
-END_TYPE;
-
-TYPE text_delineation = label;
-END_TYPE;
-
-TYPE text_or_character = SELECT 
-  (annotation_text,
-   annotation_text_character,
-   composite_text,
-   defined_character_glyph,
-   text_literal);
-END_TYPE;
-
-TYPE text_path = ENUMERATION OF
-  (left,
-   right,
-   up,
-   down);
-END_TYPE;
-
-TYPE text_string_representation_item = SELECT 
-  (annotation_text,
-   annotation_text_character,
-   axis2_placement,
-   composite_text,
-   defined_character_glyph,
-   text_literal);
-END_TYPE;
-
-TYPE texture_file_type = ENUMERATION OF
-  (jpeg,
-   png,
-   gif,
-   tiff,
-   bmp,
-   dds,
-   tga,
-   other);
-END_TYPE;
-
-TYPE thermodynamic_temperature_measure = REAL;
-END_TYPE;
-
-TYPE time_interval_item = SELECT 
-  (action,
-   action_directive,
-   action_method,
-   action_property,
-   action_relationship,
-   action_request_solution,
-   alternate_product_relationship,
-   analysis_assignment,
-   applied_action_assignment,
-   applied_classification_assignment,
-   applied_person_and_organization_assignment,
-   approval_status,
-   assembly_component_usage_substitute,
-   certification,
-   class,
-   class_system,
-   configuration_design,
-   configuration_effectivity,
-   configuration_item,
-   configured_effectivity_assignment,
-   contract,
-   document_file,
-   draughting_model,
-   drawing_revision,
-   evidence,
-   executed_action,
-   general_property,
-   material_designation,
-   mechanical_design_geometric_presentation_representation,
-   organizational_project,
-   organization_relationship,
-   person_and_organization,
-   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_formation_relationship,
-   product_definition_relationship,
-   product_definition_substitute,
-   property_definition,
-   requirement_for_action_resource,
-   resource_property,
-   security_classification,
-   security_classification_level,
-   shape_representation,
-   time_interval_based_effectivity,
-   validation,
-   verification,
-   verification_relationship,
-   versioned_action_request);
-END_TYPE;
-
-TYPE time_measure = REAL;
-END_TYPE;
-
-TYPE tolerance_method_definition = SELECT 
-  (limits_and_fits,
-   tolerance_value);
-END_TYPE;
-
-TYPE tolerance_value_or_limits_and_fits = SELECT 
-  (limits_and_fits,
-   tolerance_value);
-END_TYPE;
-
-TYPE tolerance_zone_target = SELECT 
-  (dimensional_location,
-   dimensional_size,
-   general_datum_reference,
-   geometric_tolerance);
-END_TYPE;
-
-TYPE transformation = SELECT 
-  (functionally_defined_transformation,
-   item_defined_transformation,
-   list_item_defined_transformation,
-   set_item_defined_transformation);
-END_TYPE;
-
-TYPE transition_code = ENUMERATION OF
-  (discontinuous,
-   continuous,
-   cont_same_gradient,
-   cont_same_gradient_same_curvature);
-END_TYPE;
-
-TYPE trim_condition_select = SELECT 
-  (generalized_surface_select,
-   length_measure,
-   plane_angle_measure,
-   solid_model);
-END_TYPE;
-
-TYPE trim_intent = ENUMERATION OF
-  (blind,
-   offset,
-   through_all,
-   unspecified,
-   up_to_next);
-END_TYPE;
-
-TYPE trimming_preference = ENUMERATION OF
-  (cartesian,
-   parameter,
-   unspecified);
-END_TYPE;
-
-TYPE trimming_select = SELECT 
-  (cartesian_point,
-   parameter_value);
-END_TYPE;
-
-TYPE tuple_space = SELECT 
-  (extended_tuple_space,
-   product_space);
-END_TYPE;
-
-TYPE u_direction_count = INTEGER;
-WHERE
-  WR1: SELF > 1;
-END_TYPE;
-
-TYPE u_or_v_parameter = ENUMERATION OF
-  (u_parameter,
-   v_parameter);
-END_TYPE;
-
-TYPE unit = SELECT 
-  (derived_unit,
-   named_unit);
-END_TYPE;
-
-TYPE unsigned_8_bit_integer = INTEGER;
-WHERE
-  WR1: {0 <= SELF <= 255};
-END_TYPE;
-
-TYPE used_equivalence_representation_select = SELECT 
-  (data_equivalence_criteria_representation,
-   data_equivalence_inspection_result_representation);
-END_TYPE;
-
-TYPE used_quality_representation_select = SELECT 
-  (data_quality_criteria_representation,
-   data_quality_inspection_result_representation);
-END_TYPE;
-
-TYPE v_direction_count = INTEGER;
-WHERE
-  WR1: SELF > 1;
-END_TYPE;
-
-TYPE validation_criteria_or_results_select = SELECT 
-  (data_equivalence_definition_representation_relationship);
-END_TYPE;
-
-TYPE value_format_type = identifier;
-WHERE
-      WR1: LENGTH(SELF) <= 80; 
-END_TYPE; -- value_format_type
-
-TYPE value_qualifier = SELECT 
-  (maths_value_precision_qualifier,
-   precision_qualifier,
-   type_qualifier,
-   uncertainty_qualifier,
-   value_format_type_qualifier);
-END_TYPE;
-
-TYPE vector_or_direction = SELECT 
-  (direction,
-   vector);
-END_TYPE;
-
-TYPE velocity_measure = REAL;
-END_TYPE;
-
-TYPE volume_measure = REAL;
-END_TYPE;
-
-TYPE week_in_year_number = INTEGER;
-WHERE
-  WR1: { 1 <= SELF <= 53 };
-END_TYPE;
-
-TYPE work_item = SELECT 
-  (product_definition_formation);
-END_TYPE;
-
-TYPE year_number = INTEGER;
-WHERE
-  WR1: (SELF > 1581);
-END_TYPE;
-
-TYPE ypr_enumeration = ENUMERATION OF
-  (yaw,
-   pitch,
-   roll);
-END_TYPE;
-
-TYPE ypr_rotation = ARRAY [ypr_index(yaw) : ypr_index(roll)] OF plane_angle_measure;
-END_TYPE;
-
-TYPE zero_or_one = nonnegative_integer;
-WHERE in_range: (SELF = 0) OR (SELF = 1);
-END_TYPE;
-
-ENTITY a3m_equivalence_accuracy_association;
-  id                 : identifier;
-  name               : label;
-  description        : OPTIONAL text;
-  specific_accuracy  : shape_measurement_accuracy;
-  equivalence_target : accuracy_associated_target_select;
-END_ENTITY;
-
-ENTITY a3m_equivalence_assessment_by_logical_test
-  SUBTYPE OF (data_equivalence_assessment_specification);
-END_ENTITY;
-
-ENTITY a3m_equivalence_assessment_by_numerical_test
-  SUBTYPE OF (data_equivalence_assessment_specification);
-  threshold : shape_data_quality_value_limit_type_select;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criteria_representation
-  SUBTYPE OF (data_equivalence_criteria_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION' IN TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion
-  ABSTRACT SUPERTYPE OF (a3m_equivalence_criterion_with_specified_elements)
-  SUBTYPE OF (data_equivalence_criterion, data_equivalence_inspection_requirement);
-  assessment_specification  : a3m_equivalence_assessment_specification_select;
-  comparing_element_types   : LIST [1 : ?] OF a3m_element_type_name;
-  compared_element_types    : LIST [1 : ?] OF a3m_element_type_name;
-  measured_data_type        : a3m_measured_data_type_name;
-  detected_difference_types : LIST [0 : ?] OF a3m_detected_difference_type_name;
-  accuracy_types            : LIST [0 : ?] OF a3m_accuracy_type_name;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
-       0;
-  WR2: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_INSPECTION_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-  WR3: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION_INSPECTION_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_for_assembly
-  ABSTRACT SUPERTYPE OF (ONEOF(a3m_equivalence_criterion_of_assembly_data_structure,
-                               a3m_equivalence_criterion_of_detailed_assembly_data_content,
-                               a3m_equivalence_criterion_of_component_property_difference,
-                               a3m_equivalence_criterion_of_representative_assembly_property_value))
-  SUBTYPE OF (a3m_equivalence_criterion);
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : ?] OF a3ma_element_type_name;
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : ?] OF a3ma_element_type_name;
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : ?] OF a3ma_detected_difference_type_name;
-DERIVE
-  SELF\a3m_equivalence_criterion.accuracy_types : LIST [0 : 0] OF a3ma_accuracy_type_name := [];
-WHERE
-  WR1: a3ma_validate_accuracy_types(SELF, SELF);
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_for_shape
-  ABSTRACT SUPERTYPE OF (ONEOF(a3m_equivalence_criterion_of_detailed_shape_data_content,
-                               a3m_equivalence_criterion_of_representative_shape_property_value,
-                               a3m_equivalence_criterion_of_shape_data_structure))
-  SUBTYPE OF (a3m_equivalence_criterion);
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : ?] OF a3ms_element_type_name;
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : ?] OF a3ms_element_type_name;
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : ?] OF a3ms_detected_difference_type_name;
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : ?] OF a3ms_accuracy_type_name;
-WHERE
-  WR1: a3ms_validate_accuracy_types(SELF, SELF);
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_assembly_data_structure
-  ABSTRACT SUPERTYPE OF (ONEOF(different_component_identification_via_multi_level_reference, mismatch_of_component,
-                               missing_assembly_constraint, missing_component))
-  SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-  SELF\a3m_equivalence_criterion.compared_element_types  : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_component_property_difference
-  ABSTRACT SUPERTYPE OF (different_component_shape)
-  SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type : a3ma_measured_data_type_name := mdna_boolean_value;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_detailed_assembly_data_content
-  ABSTRACT SUPERTYPE OF (ONEOF(different_angle_of_assembly_constraint, different_assembly_constraint_type,
-                               different_component_type, different_length_of_assembly_constraint,
-                               different_placement_of_component))
-  SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-  SELF\a3m_equivalence_criterion.compared_element_types  : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_detailed_shape_data_content
-  ABSTRACT SUPERTYPE OF (ONEOF(different_surface_normal, mismatch_of_arcwise_connected_curves,
-                               mismatch_of_arcwise_connected_surfaces, mismatch_of_arcwise_connected_surfaces_boundary,
-                               mismatch_of_points, mismatch_of_point_cloud_and_related_geometry,
-                               mismatch_of_underlying_edge_geometry, mismatch_of_underlying_face_geometry))
-  SUBTYPE OF (a3m_equivalence_criterion_for_shape);
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_representative_assembly_property_value
-  ABSTRACT SUPERTYPE OF (ONEOF(different_assembly_centroid, different_assembly_centroid_using_notional_solid,
-                               different_assembly_volume, different_number_of_components))
-  SUBTYPE OF (a3m_equivalence_criterion_for_assembly);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-  SELF\a3m_equivalence_criterion.compared_element_types  : LIST [1 : 1] OF a3ma_element_type_name := [etna_product_definition_or_reference];
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_representative_shape_property_value
-  ABSTRACT SUPERTYPE OF (ONEOF(different_bounding_box, different_centroid, different_curve_length,
-                               different_number_of_closed_shell, different_number_of_geometric_elements,
-                               different_number_of_geometric_elements_wireframe_model,
-                               different_number_of_topological_elements,
-                               different_number_of_topological_elements_wireframe_model, different_surface_area,
-                               different_volume))
-  SUBTYPE OF (a3m_equivalence_criterion_for_shape);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3m_element_type_name := SELF\a3m_equivalence_criterion.compared_element_types;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_of_shape_data_structure
-  ABSTRACT SUPERTYPE OF (ONEOF(mismatch_of_edges, mismatch_of_faces, missing_edge, missing_face))
-  SUBTYPE OF (a3m_equivalence_criterion_for_shape);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types : LIST [1 : ?] OF a3m_element_type_name := SELF\a3m_equivalence_criterion.compared_element_types;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_report_item_with_measured_value
-  SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
-  representative_measured_value : equivalence_measured_value_select;
-  value_type                    : representative_value_type;
-END_ENTITY;
-
-ENTITY a3m_equivalence_criterion_with_specified_elements
-  SUBTYPE OF (a3m_equivalence_criterion);
-  comparing_specified_elements : SET [1 : ?] OF inspected_equivalence_element_select;
-  compared_specified_elements  : SET [1 : ?] OF inspected_equivalence_element_select;
-END_ENTITY;
-
-ENTITY a3m_equivalence_inspection_instance_report_item
-  SUBTYPE OF (data_equivalence_inspection_instance_report_item);
-  measured_value_for_inspected_element : equivalence_measured_value_select;
-END_ENTITY;
-
-ENTITY a3m_equivalence_inspection_requirement_with_values
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (data_equivalence_inspection_requirement);
-  applied_values : SET [1 : ?] OF measure_representation_item;
-END_ENTITY;
-
-ENTITY a3m_equivalence_inspection_result_representation
-  SUBTYPE OF (data_equivalence_inspection_result_representation);
-END_ENTITY;
-
-ENTITY a3m_equivalence_inspection_result_representation_for_assembly
-  SUBTYPE OF (a3m_equivalence_inspection_result_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MS_EQUIVALENCE_INSPECTION_RESULT' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY a3m_equivalence_inspection_result_representation_for_shape
-  SUBTYPE OF (a3m_equivalence_inspection_result_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MA_EQUIVALENCE_INSPECTION_RESULT' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY a3m_equivalence_summary_report_request_with_representative_value
-  SUBTYPE OF (data_equivalence_report_request);
-  report_request_type : representative_value_type;
-END_ENTITY;
-
-ENTITY a3m_inspected_model_and_inspection_result_relationship;
-  inspected_model    : target_annotated_3d_model_select;
-  equivalence_result : a3m_equivalence_inspection_result_representation;
-END_ENTITY;
-
-ENTITY a3ma_assembly_and_shape_criteria_relationship
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : different_component_shape;
-  SELF\representation_item_relationship.related_representation_item  : a3m_equivalence_criterion_for_shape;
-END_ENTITY;
-
-ENTITY a3ma_equivalence_criterion_assessment_threshold_relationship
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : different_placement_of_component;
-  SELF\representation_item_relationship.related_representation_item  : shape_data_quality_lower_value_limit;
-END_ENTITY;
-
-ENTITY a3ma_equivalence_inspection_result
-  SUBTYPE OF (data_equivalence_inspection_result);
-  SELF\data_equivalence_inspection_result.criterion_inspected : a3m_equivalence_criterion_for_assembly;
-WHERE
-  WR1: a3ma_validate_accuracy_types(SELF, SELF\data_equivalence_inspection_result.criterion_inspected);
-  WR2: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ma_validate_element_types(re,
-                                                       SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-  WR3: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ma_validate_detected_difference_types(re,
-                                                                   SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-  WR4: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ma_validate_measured_type(re,
-                                                       SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-END_ENTITY;
-
-ENTITY a3ma_length_measure_and_context_dependent_measure_pair
-  SUBTYPE OF (compound_representation_item);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIST_REPRESENTATION_ITEM' IN
-       TYPEOF(SELF\compound_representation_item.item_element);
-  WR2: SIZEOF(SELF\compound_representation_item.item_element) = 2;
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
-       TYPEOF(SELF\compound_representation_item.item_element[1]);
-  WR4: SIZEOF(QUERY(vri
-                    <* [SELF\compound_representation_item.item_element[1]]
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-                      TYPEOF(vri.value_component))) =
-       1;
-  WR5: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
-       TYPEOF(SELF\compound_representation_item.item_element[2]);
-  WR6: SIZEOF(QUERY(vri
-                    <* [SELF\compound_representation_item.item_element[2]]
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN
-                      TYPEOF(vri.value_component))) =
-       1;
-END_ENTITY;
-
-ENTITY a3ms_equivalence_criterion_with_specified_elements
-  SUBTYPE OF (a3m_equivalence_criterion_for_shape, a3m_equivalence_criterion_with_specified_elements);
-  SELF\a3m_equivalence_criterion_with_specified_elements.comparing_specified_elements : SET [1 : ?] OF a3ms_inspected_equivalence_element_select;
-  SELF\a3m_equivalence_criterion_with_specified_elements.compared_specified_elements  : SET [1 : ?] OF a3ms_inspected_equivalence_element_select;
-WHERE
-  WR1: (a3ms_get_element_type(SELF.comparing_specified_elements) = etns_external_representation_item) OR
-       (a3ms_get_element_type(SELF.comparing_specified_elements) IN
-        SELF\a3m_equivalence_criterion_for_shape.comparing_element_types);
-  WR2: (a3ms_get_element_type(SELF.compared_specified_elements) = etns_external_representation_item) OR
-       (a3ms_get_element_type(SELF.compared_specified_elements) IN
-        SELF\a3m_equivalence_criterion_for_shape.compared_element_types);
-END_ENTITY;
-
-ENTITY a3ms_equivalence_inspection_result
-  SUBTYPE OF (data_equivalence_inspection_result);
-  SELF\data_equivalence_inspection_result.criterion_inspected : a3m_equivalence_criterion_for_shape;
-WHERE
-  WR1: a3ms_validate_accuracy_types(SELF, SELF\data_equivalence_inspection_result.criterion_inspected);
-  WR2: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ms_validate_element_types(re,
-                                                       SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-  WR3: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ms_validate_detected_difference_types(re,
-                                                                   SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-  WR4: SIZEOF(QUERY(re
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_REPORT.INSPECTION_RESULT'))
-                    | NOT (a3ms_validate_measured_type(re,
-                                                       SELF\data_equivalence_inspection_result.criterion_inspected)))) =
-       0;
-END_ENTITY;
-
-ENTITY abrupt_change_of_surface_normal
-  SUBTYPE OF (geometry_with_local_irregularity);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  small_vector_tolerance                                     : length_measure;
-  test_point_distance_tolerance                              : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY abs_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY absorbed_dose_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABSORBED_DOSE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY absorbed_dose_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.gray);
-END_ENTITY;
-
-ENTITY abstract_variable
-  SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item);
-END_ENTITY;
-
-ENTITY abstracted_expression_function
-  SUBTYPE OF (maths_function, quantifier_expression);
-DERIVE
-  SELF\quantifier_expression.variables : LIST [1 : ?] OF UNIQUE generic_variable := remove_first(SELF\multiple_arity_generic_expression.operands);
-  expr                                 : generic_expression                      := SELF\multiple_arity_generic_expression.operands[1];
-WHERE
-  WR1: SIZEOF(QUERY(operand <* SELF\multiple_arity_generic_expression.operands | NOT (has_values_space(operand)))) = 0;
-END_ENTITY;
-
-ENTITY acceleration_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACCELERATION_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY acceleration_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0);
-END_ENTITY;
-
-ENTITY acos_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY action;
-  name          : label;
-  description   : OPTIONAL text;
-  chosen_method : action_method;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY action_actual
-  SUBTYPE OF (executed_action);
-END_ENTITY;
-
-ENTITY action_assignment
-  ABSTRACT SUPERTYPE OF ((ONEOF(applied_usage_right, applied_action_assignment)));
-  assigned_action : action;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY action_directive;
-  name        : label;
-  description : OPTIONAL text;
-  analysis    : text;
-  comment     : text;
-  requests    : SET [1 : ?] OF versioned_action_request;
-END_ENTITY;
-
-ENTITY action_directive_relationship;
-  name          : label;
-  description   : OPTIONAL STRING;
-  relating      : action_directive;
-  related       : action_directive;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_action_directive_relationship(SELF, [related],
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY action_happening
-  SUBTYPE OF (action_relationship);
-END_ENTITY;
-
-ENTITY action_method;
-  name        : label;
-  description : OPTIONAL text;
-  consequence : text;
-  purpose     : text;
-END_ENTITY;
-
-ENTITY action_method_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_action_method : action_method;
-  role                   : action_method_role;
-END_ENTITY;
-
-ENTITY action_method_relationship;
-  name            : label;
-  description     : OPTIONAL text;
-  relating_method : action_method;
-  related_method  : action_method;
-END_ENTITY;
-
-ENTITY action_method_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY action_property;
-  name        : label;
-  description : text;
-  definition  : characterized_action_definition;
-END_ENTITY;
-
-ENTITY action_property_representation;
-  name           : label;
-  description    : text;
-  property       : action_property;
-  representation : representation;
-END_ENTITY;
-
-ENTITY action_relationship;
-  name            : label;
-  description     : OPTIONAL text;
-  relating_action : action;
-  related_action  : action;
-END_ENTITY;
-
-ENTITY action_request_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_action_request : versioned_action_request;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY action_request_solution;
-  method  : action_method;
-  request : versioned_action_request;
-DERIVE
-  description : text  := get_description_value(SELF);
-  name        : label := get_name_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY action_request_status;
-  status           : label;
-  assigned_request : versioned_action_request;
-END_ENTITY;
-
-ENTITY action_resource;
-  name        : label;
-  description : OPTIONAL text;
-  usage       : SET [1 : ?] OF supported_item;
-  kind        : action_resource_type;
-END_ENTITY;
-
-ENTITY action_resource_relationship;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_resource : action_resource;
-  related_resource  : action_resource;
-END_ENTITY;
-
-ENTITY action_resource_requirement;
-  name        : label;
-  description : text;
-  kind        : resource_requirement_type;
-  operations  : SET [1 : ?] OF characterized_action_definition;
-END_ENTITY;
-
-ENTITY action_resource_type;
-  name : label;
-END_ENTITY;
-
-ENTITY action_status;
-  status          : label;
-  assigned_action : executed_action;
-END_ENTITY;
-
-ENTITY actuated_kinematic_pair
-  SUBTYPE OF (kinematic_pair);
-  t_x : OPTIONAL actuated_direction;
-  t_y : OPTIONAL actuated_direction;
-  t_z : OPTIONAL actuated_direction;
-  r_x : OPTIONAL actuated_direction;
-  r_y : OPTIONAL actuated_direction;
-  r_z : OPTIONAL actuated_direction;
-END_ENTITY;
-
-ENTITY add_element
-  SUBTYPE OF (change_element);
-END_ENTITY;
-
-ENTITY additive_manufacturing_build_plate_relationship
-  SUBTYPE OF (additive_manufacturing_setup_relationship);
-END_ENTITY;
-
-ENTITY additive_manufacturing_setup
-  SUBTYPE OF (product);
-END_ENTITY;
-
-ENTITY additive_manufacturing_setup_relationship
-  ABSTRACT SUPERTYPE OF (ONEOF(additive_manufacturing_build_plate_relationship,
-                               additive_manufacturing_support_structure_geometry_relationship,
-                               additive_manufacturing_setup_workpiece_relationship))
-  SUBTYPE OF (next_assembly_usage_occurrence);
-END_ENTITY;
-
-ENTITY additive_manufacturing_setup_workpiece_relationship
-  SUBTYPE OF (additive_manufacturing_setup_relationship);
-END_ENTITY;
-
-ENTITY additive_manufacturing_support_structure_geometry_relationship
-  SUBTYPE OF (additive_manufacturing_setup_relationship);
-END_ENTITY;
-
-ENTITY address;
-  internal_location       : OPTIONAL label;
-  street_number           : OPTIONAL label;
-  street                  : OPTIONAL label;
-  postal_box              : OPTIONAL label;
-  town                    : OPTIONAL label;
-  region                  : OPTIONAL label;
-  postal_code             : OPTIONAL label;
-  country                 : OPTIONAL label;
-  facsimile_number        : OPTIONAL label;
-  telephone_number        : OPTIONAL label;
-  electronic_mail_address : OPTIONAL label;
-  telex_number            : OPTIONAL label;
-DERIVE
-  name : label      := get_name_value(SELF);
-  url  : identifier := get_id_value(SELF);
-WHERE
-  WR1: 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);
-END_ENTITY;
-
-ENTITY advanced_brep_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                              TYPEOF(it)) =
-                       1))) >
-       0;
-  WR3: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(csh
-                                        <* msb_shells(msb)
-                                        | NOT (SIZEOF(QUERY(fcs
-                                                            <* csh\connected_face_set.cfs_faces
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                   TYPEOF(fcs)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
-                       TYPEOF(msb\manifold_solid_brep.outer)))) =
-       0;
-  WR5: SIZEOF(QUERY(brv
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation)) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-END_ENTITY;
-
-ENTITY advanced_face
-  SUBTYPE OF (face_surface);
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE'] *
-              TYPEOF(face_geometry)) =
-       1;
-  WR2: SIZEOF(QUERY(elp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                    | NOT (SIZEOF(QUERY(oe
-                                        <* elp_fbnds.bound\path.edge_list
-                                        | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                               TYPEOF(oe\oriented_edge.edge_element)))) =
-                           0))) =
-       0;
-  WR3: SIZEOF(QUERY(elp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                    | NOT (SIZEOF(QUERY(oe
-                                        <* elp_fbnds.bound\path.edge_list
-                                        | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
-                                                      TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
-                                               1))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(elp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                    | NOT (SIZEOF(QUERY(oe
-                                        <* elp_fbnds.bound\path.edge_list
-                                        | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                 TYPEOF(oe\edge.edge_start)) AND
-                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
-                                                 TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry))) AND
-                                               (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                 TYPEOF(oe\edge.edge_end)) AND
-                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
-                                                 TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(elp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound)))) =
-       0;
-  WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR
-           (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
-                   TYPEOF(face_geometry\swept_surface.swept_curve)) =
-            1);
-  WR7: SIZEOF(QUERY(vlp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                            TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
-                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
-                            TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))))) =
-       0;
-  WR8: SIZEOF(QUERY(bnd
-                    <* bounds
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
-                                  TYPEOF(bnd.bound)) =
-                           1))) =
-       0;
-  WR9: SIZEOF(QUERY(elp_fbnds
-                    <* QUERY(bnds
-                             <* bounds
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                    | NOT (SIZEOF(QUERY(oe
-                                        <* elp_fbnds.bound\path.edge_list
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                                                                   TYPEOF(sc_ag)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR
-             (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)))
-                      | NOT (SIZEOF(QUERY(oe
-                                          <* elp_fbnds.bound\path.edge_list
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-END_ENTITY;
-
-ENTITY agc_with_dimension
-  SUBTYPE OF (angle_geometric_constraint);
-  angle_value : plane_angle_measure;
-END_ENTITY;
-
-ENTITY aggregate_id_attribute;
-  attribute_value : identifier;
-  identified_item : SET [1 : ?] OF id_attribute_select;
-END_ENTITY;
-
-ENTITY all_around_shape_aspect
-  SUBTYPE OF (continuous_shape_aspect);
-END_ENTITY;
-
-ENTITY alternate_product_relationship;
-  name       : label;
-  definition : OPTIONAL text;
-  alternate  : product;
-  base       : product;
-  basis      : text;
-UNIQUE
-  UR1: alternate, base;
-WHERE
-  WR1: alternate :<>: base;
-END_ENTITY;
-
-ENTITY alternative_solution_relationship
-  SUBTYPE OF (product_definition_formation_relationship);
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_alternative_solution_relationship(SELF,
-                                                 [SELF\product_definition_formation_relationship.related_product_definition_formation],
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATIVE_SOLUTION_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY amount_of_substance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY amount_of_substance_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY analysis_assignment
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY analysis_item
-  SUBTYPE OF (group_assignment);
-  items                                : SET [1 : 1] OF analysed_item;
-  SELF\group_assignment.assigned_group : analysis_assignment;
-END_ENTITY;
-
-ENTITY analysis_model
-  SUBTYPE OF (representation);
-  SELF\representation.context_of_items : analysis_representation_context;
-END_ENTITY;
-
-ENTITY analysis_representation_context
-  SUBTYPE OF (representation_context);
-END_ENTITY;
-
-ENTITY and_expression
-  SUBTYPE OF (multiple_arity_boolean_expression);
-END_ENTITY;
-
-ENTITY angle_assembly_constraint_with_dimension
-  SUBTYPE OF (binary_assembly_constraint, agc_with_dimension);
-END_ENTITY;
-
-ENTITY angle_direction_reference
-  SUBTYPE OF (representation_item_relationship, geometric_representation_item);
-  SELF\representation_item_relationship.relating_representation_item : orientation_basis_select;
-  SELF\representation_item_relationship.related_representation_item  : angle_direction_reference_select;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN
-        TYPEOF(relating_representation_item)) OR
-       NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-            TYPEOF(relating_representation_item));
-END_ENTITY;
-
-ENTITY angle_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF linear_geometry_constraint_element;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
-        (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
-END_ENTITY;
-
-ENTITY angular_dimension
-  SUBTYPE OF (dimension_curve_directed_callout);
-END_ENTITY;
-
-ENTITY angular_location
-  SUBTYPE OF (dimensional_location);
-  angle_selection : angle_relator;
-END_ENTITY;
-
-ENTITY angular_size
-  SUBTYPE OF (dimensional_size);
-  angle_selection : angle_relator;
-END_ENTITY;
-
-ENTITY angularity_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY annotation_curve_occurrence
-  SUPERTYPE OF ((ONEOF(leader_curve, projection_curve)))
-  SUBTYPE OF (annotation_occurrence);
-  SELF\styled_item.item : curve_or_curve_set;
-END_ENTITY;
-
-ENTITY annotation_fill_area
-  SUBTYPE OF (geometric_representation_item);
-  boundaries : SET [1 : ?] OF curve;
-WHERE
-  WR1: (SELF\geometric_representation_item.dim = 3) OR
-       (SIZEOF(QUERY(curve
-                     <* boundaries
-                     | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN TYPEOF(curve)) OR
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE' IN TYPEOF(curve)) OR
-                            (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(curve)) AND
-                             (curve\b_spline_curve.closed_curve = true)) OR
-                            (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(curve)) AND
-                             (curve\composite_curve.closed_curve = true)) OR
-                            (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(curve)) AND
-                             (curve\polyline.points[LOINDEX(curve\polyline.points)] =
-                              curve\polyline.points[HIINDEX(curve\polyline.points)]))))) =
-        0);
-END_ENTITY;
-
-ENTITY annotation_fill_area_occurrence
-  SUBTYPE OF (annotation_occurrence);
-  fill_style_target     : point;
-  SELF\styled_item.item : annotation_fill_area;
-END_ENTITY;
-
-ENTITY annotation_occurrence
-  SUPERTYPE OF ((ONEOF(annotation_point_occurrence, 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)))
-  SUBTYPE OF (styled_item);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-  WR2: SIZEOF(QUERY(reps
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN
-                           TYPEOF(reps)))) =
-       0;
-END_ENTITY;
-
-ENTITY annotation_occurrence_associativity
-  SUBTYPE OF (annotation_occurrence_relationship);
-WHERE
-  WR1: SIZEOF(TYPEOF(SELF.related_annotation_occurrence) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE']) =
-       1;
-END_ENTITY;
-
-ENTITY annotation_occurrence_relationship;
-  name                           : label;
-  description                    : text;
-  relating_annotation_occurrence : annotation_occurrence;
-  related_annotation_occurrence  : annotation_occurrence;
-END_ENTITY;
-
-ENTITY annotation_placeholder_occurrence
-  SUBTYPE OF (annotation_occurrence, geometric_representation_item);
-  SELF\styled_item.item : geometric_set;
-  role                  : annotation_placeholder_occurrence_role;
-  line_spacing          : positive_length_measure;
-INVERSE
-  the_callout                                             : draughting_callout FOR contents;
-  the_draughting_model_item_association_with_placeholders : SET [0:1] OF draughting_model_item_association_with_placeholder FOR annotation_placeholder;
-WHERE
-  WR1: md_valid_content_in_geometric_set_for_placeholder(item);
-  WR2: NOT (role = annotation_placeholder_occurrence_role.gps_data) OR
-           ((SIZEOF(the_draughting_model_item_association_with_placeholders) = 1) AND
-            md_pmi_name_and_type_correlation(SELF));
-END_ENTITY;
-
-ENTITY annotation_plane
-  SUBTYPE OF (annotation_occurrence, geometric_representation_item);
-  elements              : OPTIONAL SET [1 : ?] OF annotation_plane_element;
-  SELF\styled_item.item : plane_or_planar_box;
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-            TYPEOF(SELF\styled_item.item\planar_box.placement));
-  WR3: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-         TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(SELF\styled_item.item)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
-         TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1])));
-  WR4: (SIZEOF(SELF\styled_item.styles) = 1) AND
-       (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1);
-END_ENTITY;
-
-ENTITY annotation_point_occurrence
-  SUBTYPE OF (annotation_occurrence);
-  SELF\styled_item.item : point;
-END_ENTITY;
-
-ENTITY annotation_subfigure_occurrence
-  SUBTYPE OF (annotation_symbol_occurrence);
-WHERE
-  WR1: SIZEOF(QUERY(sty <* SELF.styles | NOT (SIZEOF(sty.styles) = 1))) = 0;
-  WR2: SIZEOF(QUERY(sty
-                    <* SELF.styles
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NULL_STYLE' IN TYPEOF(sty.styles[1])))) =
-       0;
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item));
-  WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN
-        TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation));
-END_ENTITY;
-
-ENTITY annotation_symbol
-  SUBTYPE OF (mapped_item);
-  SELF\mapped_item.mapping_source : symbol_representation_map;
-  SELF\mapped_item.mapping_target : symbol_target;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY annotation_symbol_occurrence
-  SUBTYPE OF (annotation_occurrence);
-  SELF\styled_item.item : annotation_symbol_occurrence_item;
-END_ENTITY;
-
-ENTITY annotation_text
-  SUBTYPE OF (mapped_item);
-  SELF\mapped_item.mapping_target : axis2_placement;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STRING_REPRESENTATION' IN
-       TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY annotation_text_character
-  SUBTYPE OF (mapped_item);
-  alignment                       : text_alignment;
-  SELF\mapped_item.mapping_target : axis2_placement;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN
-       TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY annotation_text_occurrence
-  SUBTYPE OF (annotation_occurrence);
-  SELF\styled_item.item : annotation_text_occurrence_item;
-END_ENTITY;
-
-ENTITY ap242_assignment_object_relationship
-  SUBTYPE OF (assignment_object_relationship);
-  SELF\assignment_object_relationship.related  : ap242_assignment_object_select;
-  SELF\assignment_object_relationship.relating : ap242_assignment_object_select;
-END_ENTITY;
-
-ENTITY apex
-  SUBTYPE OF (derived_shape_aspect);
-END_ENTITY;
-
-ENTITY application_context;
-  application : label;
-DERIVE
-  description : text       := get_description_value(SELF);
-  id          : identifier := get_id_value(SELF);
-INVERSE
-  context_elements : SET [1:?] OF application_context_element FOR frame_of_reference;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY application_context_element
-  SUPERTYPE OF (ONEOF(product_concept_context, product_context, product_definition_context));
-  name               : label;
-  frame_of_reference : application_context;
-END_ENTITY;
-
-ENTITY application_protocol_definition;
-  status                                    : label;
-  application_interpreted_model_schema_name : label;
-  application_protocol_year                 : year_number;
-  application                               : application_context;
-END_ENTITY;
-
-ENTITY applied_action_assignment
-  SUBTYPE OF (action_assignment);
-  items : SET [1 : ?] OF action_items;
-END_ENTITY;
-
-ENTITY applied_action_method_assignment
-  SUBTYPE OF (action_method_assignment);
-  items : SET [1 : ?] OF action_method_items;
-END_ENTITY;
-
-ENTITY applied_action_request_assignment
-  SUBTYPE OF (action_request_assignment);
-  items : SET [1 : ?] OF action_request_item;
-END_ENTITY;
-
-ENTITY applied_approval_assignment
-  SUBTYPE OF (approval_assignment);
-  items : SET [1 : ?] OF approval_item;
-END_ENTITY;
-
-ENTITY applied_area
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT ({2 <= SIZEOF(impl_rep.used_representation.items) <= 3})))) =
-                             0)))) =
-        0);
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | (SIZEOF(QUERY(pdr
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'effective length')))) =
-                                                  1)))) =
-                             0)))) <=
-        1);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'maximum length')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY applied_attribute_classification_assignment
-  SUBTYPE OF (attribute_classification_assignment);
-  SELF\attribute_classification_assignment.assigned_class : class;
-  items                                                   : SET [1 : ?] OF attribute_classification_item;
-END_ENTITY;
-
-ENTITY applied_certification_assignment
-  SUBTYPE OF (certification_assignment);
-  items : SET [1 : ?] OF certification_item;
-END_ENTITY;
-
-ENTITY applied_classification_assignment
-  SUBTYPE OF (classification_assignment);
-  items : SET [1 : ?] OF classification_item;
-END_ENTITY;
-
-ENTITY applied_classification_assignment_relationship
-  SUBTYPE OF (classification_assignment_relationship);
-  SELF\classification_assignment_relationship.related  : applied_classification_assignment;
-  SELF\classification_assignment_relationship.relating : applied_classification_assignment;
-END_ENTITY;
-
-ENTITY applied_contract_assignment
-  SUBTYPE OF (contract_assignment);
-  items : SET [1 : ?] OF contract_item;
-END_ENTITY;
-
-ENTITY applied_date_and_time_assignment
-  SUBTYPE OF (date_and_time_assignment);
-  items : SET [1 : ?] OF date_and_time_item;
-END_ENTITY;
-
-ENTITY applied_date_assignment
-  SUBTYPE OF (date_assignment);
-  items : SET [1 : ?] OF date_item;
-END_ENTITY;
-
-ENTITY applied_description_text_assignment
-  SUBTYPE OF (description_text_assignment);
-  items : SET [1 : ?] OF description_item;
-END_ENTITY;
-
-ENTITY applied_description_text_assignment_relationship
-  SUBTYPE OF (description_text_assignment_relationship);
-  SELF\description_text_assignment_relationship.related  : applied_description_text_assignment;
-  SELF\description_text_assignment_relationship.relating : applied_description_text_assignment;
-END_ENTITY;
-
-ENTITY applied_directed_action_assignment
-  SUBTYPE OF (directed_action_assignment);
-  items : SET [1 : ?] OF action_request_item;
-END_ENTITY;
-
-ENTITY applied_document_reference
-  SUBTYPE OF (document_reference);
-  items : SET [1 : ?] OF document_reference_item;
-END_ENTITY;
-
-ENTITY applied_document_usage_constraint_assignment
-  SUBTYPE OF (document_usage_constraint_assignment);
-  items : SET [1 : ?] OF document_reference_item;
-END_ENTITY;
-
-ENTITY applied_effectivity_assignment
-  SUBTYPE OF (effectivity_assignment);
-  items : SET [1 : ?] OF effectivity_item;
-END_ENTITY;
-
-ENTITY applied_event_occurrence_assignment
-  SUBTYPE OF (event_occurrence_assignment);
-  items : SET [1 : ?] OF event_occurrence_item;
-END_ENTITY;
-
-ENTITY applied_external_identification_assignment
-  SUBTYPE OF (external_identification_assignment);
-  items : SET [1 : ?] OF external_identification_item;
-END_ENTITY;
-
-ENTITY applied_external_identification_assignment_relationship
-  SUBTYPE OF (external_identification_assignment_relationship);
-  SELF\external_identification_assignment_relationship.related  : applied_external_identification_assignment;
-  SELF\external_identification_assignment_relationship.relating : applied_external_identification_assignment;
-END_ENTITY;
-
-ENTITY applied_group_assignment
-  SUBTYPE OF (group_assignment);
-  items : SET [1 : ?] OF groupable_item;
-END_ENTITY;
-
-ENTITY applied_identification_assignment
-  SUBTYPE OF (identification_assignment);
-  items : SET [1 : ?] OF identification_item;
-END_ENTITY;
-
-ENTITY applied_ineffectivity_assignment
-  SUBTYPE OF (effectivity_assignment);
-  items : SET [1 : ?] OF effectivity_item;
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOT_EFFECTIVITY',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SERIAL_NUMBERED_EFFECTIVITY',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_EFFECTIVITY'] *
-              TYPEOF(SELF.assigned_effectivity)) =
-       0;
-END_ENTITY;
-
-ENTITY applied_location_assignment
-  SUBTYPE OF (location_assignment);
-  items : SET [1 : ?] OF location_item;
-END_ENTITY;
-
-ENTITY applied_location_representation_assignment
-  SUBTYPE OF (location_representation_assignment);
-  items : SET [1 : ?] OF location_representation_item;
-END_ENTITY;
-
-ENTITY applied_name_assignment
-  SUBTYPE OF (name_assignment);
-  item : name_item;
-END_ENTITY;
-
-ENTITY applied_organization_assignment
-  SUBTYPE OF (organization_assignment);
-  items : SET [1 : ?] OF organization_item;
-END_ENTITY;
-
-ENTITY applied_organization_type_assignment
-  SUBTYPE OF (organization_type_assignment);
-  items : SET [1 : ?] OF organization_type_item;
-END_ENTITY;
-
-ENTITY applied_organizational_project_assignment
-  SUBTYPE OF (organizational_project_assignment);
-  items : SET [1 : ?] OF project_item;
-END_ENTITY;
-
-ENTITY applied_person_and_organization_assignment
-  SUBTYPE OF (person_and_organization_assignment);
-  items : SET [1 : ?] OF person_and_organization_item;
-END_ENTITY;
-
-ENTITY applied_presented_item
-  SUBTYPE OF (presented_item);
-  items : SET [1 : ?] OF presented_item_select;
-END_ENTITY;
-
-ENTITY applied_security_classification_assignment
-  SUBTYPE OF (security_classification_assignment);
-  items : SET [1 : ?] OF security_classification_item;
-END_ENTITY;
-
-ENTITY applied_state_observed_assignment
-  SUBTYPE OF (state_observed_assignment);
-  items : SET [1 : ?] OF state_observed_of_item;
-END_ENTITY;
-
-ENTITY applied_state_type_assignment
-  SUBTYPE OF (state_type_assignment);
-  items : SET [1 : ?] OF state_type_of_item;
-END_ENTITY;
-
-ENTITY applied_time_interval_assignment
-  SUBTYPE OF (time_interval_assignment);
-  items : SET [0 : ?] OF time_interval_item;
-END_ENTITY;
-
-ENTITY applied_usage_right
-  SUBTYPE OF (action_assignment);
-  items : SET [1 : ?] OF ir_usage_item;
-END_ENTITY;
-
-ENTITY approval;
-  status : approval_status;
-  level  : label;
-END_ENTITY;
-
-ENTITY approval_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_approval : approval;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY approval_date_time;
-  date_time      : date_time_select;
-  dated_approval : approval;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY approval_person_organization;
-  person_organization : person_organization_select;
-  authorized_approval : approval;
-  role                : approval_role;
-END_ENTITY;
-
-ENTITY approval_relationship;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_approval : approval;
-  related_approval  : approval;
-END_ENTITY;
-
-ENTITY approval_role;
-  role : label;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY approval_status;
-  name : label;
-END_ENTITY;
-
-ENTITY area_in_set;
-  area   : presentation_area;
-  in_set : presentation_set;
-END_ENTITY;
-
-ENTITY area_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY area_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-END_ENTITY;
-
-ENTITY area_with_outer_boundary
-  SUBTYPE OF (half_space_2d);
-  SELF\half_space_2d.base_curve : composite_curve;
-WHERE
-  WR1: base_curve\composite_curve.closed_curve = true;
-END_ENTITY;
-
-ENTITY array_placement_group
-  SUPERTYPE OF (ONEOF(linear_array_placement_group_component, rectangular_array_placement_group_component))
-  SUBTYPE OF (assembly_group_component);
-END_ENTITY;
-
-ENTITY ascribable_state;
-  name                    : label;
-  description             : OPTIONAL text;
-  pertaining_state_type   : state_type;
-  ascribed_state_observed : state_observed;
-END_ENTITY;
-
-ENTITY ascribable_state_relationship;
-  name                      : label;
-  description               : OPTIONAL text;
-  relating_ascribable_state : ascribable_state;
-  related_ascribable_state  : ascribable_state;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY asin_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY assembly_bond_definition
-    SUBTYPE OF ( shape_aspect );
-    UNIQUE
-      ur1 : SELF\shape_aspect.name;
-END_ENTITY;
-
-ENTITY assembly_joint
-  SUBTYPE OF (component_feature_joint);
-WHERE
-  WR1: acyclic_shape_aspect_relationship(SELF, [SELF\shape_aspect_relationship.related_shape_aspect],
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_JOINT');
-END_ENTITY;
-
-ENTITY component_mating_constraint_condition
-    SUBTYPE OF ( shape_aspect );
-    UNIQUE
-      ur1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
-END_ENTITY;
-
-ENTITY connection_zone_based_assembly_joint
-    SUBTYPE OF ( assembly_joint );
-END_ENTITY;
-
-ENTITY assembly_component
-  SUBTYPE OF (component_definition, product_definition_shape);
-DERIVE
-  SELF\property_definition.definition : assembly_component := SELF;
-WHERE
-  WR1: NOT EXISTS(SELF\property_definition.description);
-END_ENTITY;
-
-ENTITY assembly_component_usage
-  SUPERTYPE OF (quantified_assembly_component_usage ANDOR
-                ONEOF(multi_level_reference_designator, next_assembly_usage_occurrence, promissory_usage_occurrence,
-                      specified_higher_usage_occurrence))
-  SUBTYPE OF (product_definition_usage);
-  reference_designator : OPTIONAL identifier;
-END_ENTITY;
-
-ENTITY assembly_component_usage_substitute;
-  name       : label;
-  definition : OPTIONAL text;
-  base       : assembly_component_usage;
-  substitute : assembly_component_usage;
-UNIQUE
-  UR1: base, substitute;
-WHERE
-  WR1: base.relating_product_definition :=: substitute.relating_product_definition;
-  WR2: base :<>: substitute;
-END_ENTITY;
-
-ENTITY assembly_geometric_constraint
-  ABSTRACT SUPERTYPE OF (ONEOF(binary_assembly_constraint, fixed_constituent_assembly_constraint))
-  SUBTYPE OF (explicit_constraint);
-END_ENTITY;
-
-ENTITY assembly_group_component
-  SUBTYPE OF (assembly_component);
-END_ENTITY;
-
-ENTITY assembly_group_component_definition_placement_link
-  SUBTYPE OF (product_definition, product_definition_relationship);
-  SELF\product_definition_relationship.relating_product_definition : assembly_component;
-  SELF\product_definition_relationship.related_product_definition  : assembly_component;
-WHERE
-  WR1: SELF\product_definition_relationship.related_product_definition :<>:
-       SELF\product_definition_relationship.relating_product_definition;
-  WR2: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition],
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK');
-END_ENTITY;
-
-ENTITY assembly_shape_constraint
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY assembly_shape_constraint_item_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : assembly_shape_constraint;
-END_ENTITY;
-
-ENTITY assembly_shape_joint
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY assembly_shape_joint_item_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : assembly_shape_joint;
-END_ENTITY;
-
-ENTITY assigned_analysis
-  SUBTYPE OF (group_assignment);
-  items                                : SET [1 : 1] OF product_definition_formation;
-  SELF\group_assignment.assigned_group : analysis_assignment;
-END_ENTITY;
-
-ENTITY assigned_requirement
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : requirement_assignment;
-  items                                : SET [1 : 1] OF product_definition;
-END_ENTITY;
-
-ENTITY assignment_object_relationship;
-  id            : OPTIONAL identifier;
-  description   : OPTIONAL text;
-  relating      : assignment_object_select;
-  related       : assignment_object_select;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_assignment_object_relationship(SELF, [related],
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSIGNMENT_OBJECT_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY atan_function
-  SUBTYPE OF (binary_function_call);
-END_ENTITY;
-
-ENTITY atom_based_literal
-  SUBTYPE OF (generic_literal);
-  lit_value : atom_based_value;
-END_ENTITY;
-
-ENTITY atomic_formula
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY attachment_slot_as_planned
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY attachment_slot_as_realized
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY attachment_slot_design
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY attachment_slot_design_to_planned
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_design;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : attachment_slot_as_planned;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY attachment_slot_design_to_realized
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_design;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : attachment_slot_as_realized;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY attachment_slot_on_product
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY attachment_slot_planned_to_realized
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : attachment_slot_as_planned;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : attachment_slot_as_realized;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY attribute_assertion
-  SUBTYPE OF (fact_type, property_definition_representation, representation);
-END_ENTITY;
-
-ENTITY attribute_classification_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_class : group;
-  attribute_name : label;
-  role           : classification_role;
-END_ENTITY;
-
-ENTITY attribute_language_assignment
-  SUBTYPE OF (attribute_classification_assignment);
-  SELF\attribute_classification_assignment.assigned_class : language;
-  items                                                   : SET [1 : ?] OF attribute_language_item;
-WHERE
-  WR1: SELF\attribute_classification_assignment.role.name IN ['primary','translated'];
-  WR2: SELF\attribute_classification_assignment.attribute_name <> '';
-END_ENTITY;
-
-ENTITY attribute_value_assignment
-  ABSTRACT SUPERTYPE;
-  attribute_name  : label;
-  attribute_value : attribute_type;
-  role            : attribute_value_role;
-END_ENTITY;
-
-ENTITY attribute_value_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY auxiliary_geometric_representation_item
-  SUBTYPE OF (geometric_representation_item, variational_representation_item);
-END_ENTITY;
-
-ENTITY axis1_placement
-  SUBTYPE OF (placement);
-  axis : OPTIONAL direction;
-DERIVE
-  z : direction := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0]));
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY axis2_placement_2d
-  SUBTYPE OF (placement);
-  ref_direction : OPTIONAL direction;
-DERIVE
-  p : LIST [2 : 2] OF direction := build_2axes(ref_direction);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY axis2_placement_3d
-  SUBTYPE OF (placement);
-  axis          : OPTIONAL direction;
-  ref_direction : OPTIONAL direction;
-DERIVE
-  p : LIST [3 : 3] OF direction := build_axes(axis, ref_direction);
-WHERE
-  WR1: SELF\placement.location.dim = 3;
-  WR2: (NOT (EXISTS(axis))) OR (axis.dim = 3);
-  WR3: (NOT (EXISTS(ref_direction))) OR (ref_direction.dim = 3);
-  WR4: (NOT (EXISTS(axis))) OR (NOT (EXISTS(ref_direction))) OR (cross_product(axis, ref_direction).magnitude > 0.0);
-END_ENTITY;
-
-ENTITY b_spline_basis
-  SUBTYPE OF (maths_function, generic_literal);
-  degree         : nonnegative_integer;
-  repeated_knots : LIST [2 : ?] OF REAL;
-DERIVE
-  order     : positive_integer := degree + 1;
-  num_basis : positive_integer := SIZEOF(repeated_knots) - order;
-WHERE
-  WR1: num_basis >= order;
-  WR2: nondecreasing(repeated_knots);
-  WR3: repeated_knots[order] < repeated_knots[num_basis + 1];
-END_ENTITY;
-
-ENTITY b_spline_curve
-  SUPERTYPE OF (ONEOF(uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR
-                rational_b_spline_curve)
-  SUBTYPE OF (bounded_curve);
-  degree              : INTEGER;
-  control_points_list : LIST [2 : ?] OF cartesian_point;
-  curve_form          : b_spline_curve_form;
-  closed_curve        : LOGICAL;
-  self_intersect      : LOGICAL;
-DERIVE
-  upper_index_on_control_points : INTEGER                                                      := (SIZEOF(control_points_list) -
-                                                                                                   1);
-  control_points                : ARRAY [0 : upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,
-                                                                                                                0,
-                                                                                                                upper_index_on_control_points);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_CURVE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_CURVE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY b_spline_curve_knot_locator
-  SUBTYPE OF (founded_item);
-  basis_curve : b_spline_curve;
-  knot_index  : INTEGER;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY b_spline_curve_segment
-  SUBTYPE OF (founded_item);
-  basis_curve      : b_spline_curve;
-  start_knot_index : INTEGER;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY b_spline_curve_with_knots
-  SUBTYPE OF (b_spline_curve);
-  knot_multiplicities : LIST [2 : ?] OF INTEGER;
-  knots               : LIST [2 : ?] OF parameter_value;
-  knot_spec           : knot_type;
-DERIVE
-  upper_index_on_knots : INTEGER := SIZEOF(knots);
-WHERE
-  WR1: constraints_param_b_spline(degree, upper_index_on_knots, upper_index_on_control_points, knot_multiplicities,
-                                  knots);
-  WR2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
-END_ENTITY;
-
-ENTITY b_spline_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  basis                                 : LIST [1 : ?] OF b_spline_basis;
-DERIVE
-  coef : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: function_is_table(coef);
-  WR2: (space_dimension(coef.range) = 1) AND (number_superspace_of(factor1(coef.range)) = the_reals);
-  WR3: SIZEOF(basis) <= SIZEOF(shape_of_array(coef));
-  WR4: compare_basis_and_coef(basis, coef);
-END_ENTITY;
-
-ENTITY b_spline_surface
-  SUPERTYPE OF (ONEOF(b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR
-                rational_b_spline_surface)
-  SUBTYPE OF (bounded_surface);
-  u_degree            : INTEGER;
-  v_degree            : INTEGER;
-  control_points_list : LIST [2 : ?] OF LIST [2 : ?] OF cartesian_point;
-  surface_form        : b_spline_surface_form;
-  u_closed            : LOGICAL;
-  v_closed            : LOGICAL;
-  self_intersect      : LOGICAL;
-DERIVE
-  u_upper        : INTEGER                                                       := SIZEOF(control_points_list) - 1;
-  v_upper        : INTEGER                                                       := SIZEOF(control_points_list[1]) - 1;
-  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);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY b_spline_surface_knot_locator
-  SUBTYPE OF (founded_item);
-  basis_surface     : b_spline_surface;
-  knot_index        : INTEGER;
-  surface_parameter : u_or_v_parameter;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY b_spline_surface_patch
-  SUBTYPE OF (founded_item);
-  basis_surface      : b_spline_surface;
-  u_start_knot_index : INTEGER;
-  v_start_knot_index : INTEGER;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY b_spline_surface_strip
-  SUBTYPE OF (founded_item);
-  basis_surface     : b_spline_surface;
-  start_knot_index  : INTEGER;
-  surface_parameter : u_or_v_parameter;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY b_spline_surface_with_knots
-  SUBTYPE OF (b_spline_surface);
-  u_multiplicities : LIST [2 : ?] OF INTEGER;
-  v_multiplicities : LIST [2 : ?] OF INTEGER;
-  u_knots          : LIST [2 : ?] OF parameter_value;
-  v_knots          : LIST [2 : ?] OF parameter_value;
-  knot_spec        : knot_type;
-DERIVE
-  knot_u_upper : INTEGER := SIZEOF(u_knots);
-  knot_v_upper : INTEGER := SIZEOF(v_knots);
-WHERE
-  WR1: constraints_param_b_spline(SELF\b_spline_surface.u_degree, knot_u_upper, SELF\b_spline_surface.u_upper,
-                                  u_multiplicities, u_knots);
-  WR2: constraints_param_b_spline(SELF\b_spline_surface.v_degree, knot_v_upper, SELF\b_spline_surface.v_upper,
-                                  v_multiplicities, v_knots);
-  WR3: SIZEOF(u_multiplicities) = knot_u_upper;
-  WR4: SIZEOF(v_multiplicities) = knot_v_upper;
-END_ENTITY;
-
-ENTITY b_spline_volume
-  SUPERTYPE OF (ONEOF(b_spline_volume_with_knots, uniform_volume, quasi_uniform_volume, bezier_volume) ANDOR
-                rational_b_spline_volume)
-  SUBTYPE OF (volume);
-  u_degree            : INTEGER;
-  v_degree            : INTEGER;
-  w_degree            : INTEGER;
-  control_points_list : LIST [2 : ?] OF LIST [2 : ?] OF LIST [2 : ?] OF cartesian_point;
-DERIVE
-  u_upper        : INTEGER                                                                              := SIZEOF(control_points_list) -
-                                                                                                           1;
-  v_upper        : INTEGER                                                                              := SIZEOF(control_points_list[1]) -
-                                                                                                           1;
-  w_upper        : INTEGER                                                                              := SIZEOF(control_points_list[1][1]) -
-                                                                                                           1;
-  control_points : ARRAY [0 : u_upper] OF ARRAY [0 : v_upper] OF ARRAY [0 : w_upper] OF cartesian_point := make_array_of_array_of_array(control_points_list,
-                                                                                                                                        0,
-                                                                                                                                        u_upper,
-                                                                                                                                        0,
-                                                                                                                                        v_upper,
-                                                                                                                                        0,
-                                                                                                                                        w_upper);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_VOLUME' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_VOLUME' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_VOLUME' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_VOLUME_WITH_KNOTS' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY b_spline_volume_with_knots
-  SUBTYPE OF (b_spline_volume);
-  u_multiplicities : LIST [2 : ?] OF INTEGER;
-  v_multiplicities : LIST [2 : ?] OF INTEGER;
-  w_multiplicities : LIST [2 : ?] OF INTEGER;
-  u_knots          : LIST [2 : ?] OF parameter_value;
-  v_knots          : LIST [2 : ?] OF parameter_value;
-  w_knots          : LIST [2 : ?] OF parameter_value;
-DERIVE
-  knot_u_upper : INTEGER := SIZEOF(u_knots);
-  knot_v_upper : INTEGER := SIZEOF(v_knots);
-  knot_w_upper : INTEGER := SIZEOF(w_knots);
-WHERE
-  WR1: constraints_param_b_spline(SELF\b_spline_volume.u_degree, knot_u_upper, SELF\b_spline_volume.u_upper,
-                                  u_multiplicities, u_knots);
-  WR2: constraints_param_b_spline(SELF\b_spline_volume.v_degree, knot_v_upper, SELF\b_spline_volume.v_upper,
-                                  v_multiplicities, v_knots);
-  WR3: constraints_param_b_spline(SELF\b_spline_volume.w_degree, knot_w_upper, SELF\b_spline_volume.w_upper,
-                                  w_multiplicities, w_knots);
-  WR4: SIZEOF(u_multiplicities) = knot_u_upper;
-  WR5: SIZEOF(v_multiplicities) = knot_v_upper;
-  WR6: SIZEOF(w_multiplicities) = knot_w_upper;
-END_ENTITY;
-
-ENTITY back_chaining_rule
-  SUBTYPE OF (rule_definition);
-END_ENTITY;
-
-ENTITY back_chaining_rule_body
-  SUBTYPE OF (property_definition, property_definition_representation, representation);
-END_ENTITY;
-
-ENTITY background_colour
-  SUBTYPE OF (colour);
-  presentation : area_or_view;
-UNIQUE
-  UR1: presentation;
-END_ENTITY;
-
-ENTITY banded_matrix
-  SUBTYPE OF (linearized_table_function);
-  default_entry : maths_value;
-  below         : INTEGER;
-  above         : INTEGER;
-  order         : ordering_type;
-WHERE
-  WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
-  WR2: -below <= above;
-  WR3: member_of(default_entry, factor1(SELF\linearized_table_function.source.range));
-END_ENTITY;
-
-ENTITY barring_hole
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'profile usage') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                              TYPEOF(sar.relating_shape_aspect)) =
-                                       1))) =
-                       1))) =
-       1;
-  WR2: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'barring profile') AND (sa.description = 'closed profile occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'profile usage'))) =
-                       1))) =
-       1;
-  WR3: (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation))) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       {1 <= SIZEOF(pdr.used_representation.items) <= 2})) =
-        1);
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'base radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) <>
-                       1))) =
-       0;
-END_ENTITY;
-
-ENTITY basic_sparse_matrix
-  SUBTYPE OF (explicit_table_function, multiple_arity_generic_expression);
-  SELF\multiple_arity_generic_expression.operands : LIST [3 : 3] OF maths_function;
-  default_entry                                   : maths_value;
-  order                                           : ordering_type;
-DERIVE
-  index : maths_function := SELF\multiple_arity_generic_expression.operands[1];
-  loc   : maths_function := SELF\multiple_arity_generic_expression.operands[2];
-  val   : maths_function := SELF\multiple_arity_generic_expression.operands[3];
-WHERE
-  WR1: function_is_1d_table(index);
-  WR2: function_is_1d_table(loc);
-  WR3: function_is_1d_table(val);
-  WR4: check_sparse_index_domain(index.domain, index_base, shape, order);
-  WR5: check_sparse_index_to_loc(index.range, loc.domain);
-  WR6: loc.domain = val.domain;
-  WR7: check_sparse_loc_range(loc.range, index_base, shape, order);
-  WR8: member_of(default_entry, val.range);
-END_ENTITY;
-
-ENTITY bead
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation))) <=
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(pdr.used_representation.items) > 2))) =
-        0);
-  WR2: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'base radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) >
-                       1))) =
-       0;
-  WR4: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'sweep path') AND (sa.description = 'path feature component occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'path feature component usage') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1))) =
-       1;
-  WR5: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'bead profile') AND (sa.description = 'open profile occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'profile usage') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE'] *
-                                              TYPEOF(sar.relating_shape_aspect)) =
-                                       1))) =
-                       1))) =
-       1;
-  WR6: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'end condition') AND (sa.description = 'bead end occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.name = 'bead end usage') AND (sar.description = 'starting') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1))) =
-       1;
-  WR7: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'end condition') AND (sa.description = 'bead end occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.name = 'bead end usage') AND (sar.description = 'ending') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1))) =
-       1;
-END_ENTITY;
-
-ENTITY bead_end
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['linear','open','radiused'];
-  WR3: (SELF.description <> 'linear') XOR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)))) >
-        0);
-  WR4: (SELF.description <> 'linear') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(pdr.used_representation.items) = 2))) =
-        1);
-  WR5: (SELF.description <> 'linear') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'end length') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) =
-        1);
-  WR6: (SELF.description <> 'linear') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                        TYPEOF(i)))) =
-                        1))) =
-        1);
-  WR7: SIZEOF(QUERY(sar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                       TYPEOF(sar)) AND
-                      (sar.name = 'bead end usage') AND (sar.description IN ['starting','ending']) AND
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY between_shape_aspect
-  SUBTYPE OF (continuous_shape_aspect);
-WHERE
-  WR1: SIZEOF(QUERY(sar
-                    <* SELF\composite_shape_aspect.component_relationships
-                    | sar\shape_aspect_relationship.name = 'start feature')) =
-       1;
-  WR2: SIZEOF(QUERY(sar
-                    <* SELF\composite_shape_aspect.component_relationships
-                    | sar\shape_aspect_relationship.name = 'end feature')) =
-       1;
-END_ENTITY;
-
-ENTITY beveled_sheet_representation
-  SUBTYPE OF (shape_representation);
-END_ENTITY;
-
-ENTITY bezier_curve
-  SUBTYPE OF (b_spline_curve);
-END_ENTITY;
-
-ENTITY bezier_surface
-  SUBTYPE OF (b_spline_surface);
-END_ENTITY;
-
-ENTITY bezier_volume
-  SUBTYPE OF (b_spline_volume);
-END_ENTITY;
-
-ENTITY binary_assembly_constraint
-  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))
-  SUBTYPE OF (assembly_geometric_constraint, representation_relationship_with_transformation);
-  SELF\representation_relationship.rep_1 : representative_shape_representation;
-  SELF\representation_relationship.rep_2 : representative_shape_representation;
-WHERE
-  WR1: (SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3) AND
-       (SELF\explicit_constraint.reference_elements[1]\geometric_representation_item.dim = 3);
-  WR2: (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)));
-  WR3: (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND
-       (SIZEOF(SELF\explicit_constraint.reference_elements) = 1);
-  WR4: (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]);
-END_ENTITY;
-
-ENTITY binary_boolean_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(xor_expression, equals_expression))
-  SUBTYPE OF (boolean_expression, binary_generic_expression);
-END_ENTITY;
-
-ENTITY binary_function_call
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY binary_generic_expression
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (generic_expression);
-  operands : LIST [2 : 2] OF generic_expression;
-END_ENTITY;
-
-ENTITY binary_numeric_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(minus_expression, div_expression, mod_expression, slash_expression, power_expression,
-                               binary_function_call))
-  SUBTYPE OF (numeric_expression, binary_generic_expression);
-  SELF\binary_generic_expression.operands : LIST [2 : 2] OF numeric_expression;
-END_ENTITY;
-
-ENTITY block
-  SUBTYPE OF (geometric_representation_item);
-  position : axis2_placement_3d;
-  x        : positive_length_measure;
-  y        : positive_length_measure;
-  z        : positive_length_measure;
-END_ENTITY;
-
-ENTITY block_volume
-  SUBTYPE OF (volume);
-  position : axis2_placement_3d;
-  x        : positive_length_measure;
-  y        : positive_length_measure;
-  z        : positive_length_measure;
-END_ENTITY;
-
-ENTITY boolean_defined_function
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (defined_function, boolean_expression);
-END_ENTITY;
-
-ENTITY boolean_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(simple_boolean_expression, unary_boolean_expression, binary_boolean_expression,
-                               multiple_arity_boolean_expression, comparison_expression, interval_expression,
-                               boolean_defined_function))
-  SUBTYPE OF (expression);
-END_ENTITY;
-
-ENTITY boolean_literal
-  SUBTYPE OF (simple_boolean_expression, generic_literal);
-  the_value : BOOLEAN;
-END_ENTITY;
-
-ENTITY boolean_representation_item
-  SUBTYPE OF (representation_item, boolean_literal);
-END_ENTITY;
-
-ENTITY boolean_result
-  SUBTYPE OF (geometric_representation_item);
-  operator       : boolean_operator;
-  first_operand  : boolean_operand;
-  second_operand : boolean_operand;
-END_ENTITY;
-
-ENTITY boolean_result_2d
-  SUBTYPE OF (boolean_result);
-  SELF\boolean_result.first_operand  : boolean_operand_2d;
-  SELF\boolean_result.second_operand : boolean_operand_2d;
-END_ENTITY;
-
-ENTITY boolean_variable
-  SUBTYPE OF (simple_boolean_expression, variable);
-END_ENTITY;
-
-ENTITY boss
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SELF\characterized_object.description IN ['circular','complex','rectangular'];
-  WR2: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                               TYPEOF(pd))
-                    | NOT (SIZEOF(QUERY(sa_occ
-                                        <* USEDIN(pds,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                        | (sa_occ.description = 'boss height occurrence') AND
-                                          (SIZEOF(QUERY(sdr
-                                                        <* QUERY(sar
-                                                                 <* USEDIN(sa_occ,
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                 | (sar.description =
-                                                                    'path feature component usage') AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                    TYPEOF(sar)))
-                                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                           TYPEOF(sdr.relating_shape_aspect)) AND
-                                                          (sdr.relating_shape_aspect.description = 'linear') AND
-                                                          (sdr.name = 'boss height'))) =
-                                           1))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     ({1 <= SIZEOF(pdr.used_representation.items) <= 2}))) =
-                      1)) =
-       1;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'fillet radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-  WR6: (NOT (SELF\characterized_object.description = 'circular')) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (sa_occ.description = 'circular profile occurrence') AND
-                                           (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
-                                                           TYPEOF(sdr.relating_shape_aspect))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR7: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd)))
-                    | (NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | ((sa_occ.description = 'top condition occurrence') AND
-                                            (SIZEOF(QUERY(fcr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | ((sar.description = 'boss top usage') AND
-                                                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                       TYPEOF(sar))))
-                                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS_TOP' IN
-                                                              TYPEOF(fcr.relating_shape_aspect))))) =
-                                             1)))) =
-                            1)))) =
-       0;
-  WR8: (NOT (SELF\characterized_object.description = 'circular')) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (sa_occ.description = 'change in diameter occurrence') AND
-                                           (SIZEOF(QUERY(fcr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'taper usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                             TYPEOF(fcr.related_shape_aspect)) AND
-                                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' IN
-                                                             TYPEOF(fcr.relating_shape_aspect))))) =
-                                            1))) <=
-                            1))) =
-        0);
-  WR9: (NOT (SELF\characterized_object.description = 'complex')) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (sa_occ.description = 'enclosed boundary occurrence') AND
-                                           (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                                                  TYPEOF(sdr.relating_shape_aspect)) =
-                                                           1)) =
-                                            1))) =
-                            1))) =
-        0);
-  WR10: (NOT (SELF\characterized_object.description IN ['complex','rectangular'])) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (sa_occ.description = 'change in boundary occurrence') AND
-                                            (SIZEOF(QUERY(fcr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                   | (sar.description = 'taper usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                              TYPEOF(fcr.related_shape_aspect)) AND
-                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' IN
-                                                              TYPEOF(fcr.relating_shape_aspect)) AND
-                                                             (fcr.related_shape_aspect.description IN
-                                                              ['angle taper','directed taper'])))) =
-                                             1))) <=
-                             1))) =
-         0);
-  WR11: (NOT (SELF\characterized_object.description = 'rectangular')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (sa_occ.description = 'rectangular profile occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | (sar.description = 'profile usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' IN
-                                                            TYPEOF(sdr.relating_shape_aspect))) =
-                                             1))) =
-                             1))) =
-         0);
-  WR12: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (pdr.used_representation.name = 'maximum feature limit'))) >=
-        0;
-END_ENTITY;
-
-ENTITY boss_top
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SELF.description IN ['planar','complex']);
-  WR3: ((NOT (SELF.description = 'planar')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION') IN
-                                              TYPEOF(pdr.used_representation)))) =
-                              1)))) =
-         0));
-  WR4: ((NOT (SELF.description = 'planar')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION') IN
-                                              TYPEOF(pdr.used_representation)))) =
-                              1)))) =
-         0));
-  WR5: (NOT (SELF.description = 'complex')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION') IN
-                                            TYPEOF(pdr.used_representation))) =
-                             1)))) =
-        0);
-  WR6: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | ((sar.description = 'boss top usage') AND
-                                 (sar.name IN ['boss height start','boss height end'])) AND
-                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                 TYPEOF(sar)))
-                     | ((fcr.related_shape_aspect.description = 'top condition occurrence') AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' IN
-                         TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS_TOP' IN
-                         TYPEOF(fcr.relating_shape_aspect))))) >=
-        1);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) <=
-                             1)))) =
-        0);
-  WR8: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR9: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'top radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY bound_parameter_environment
-  SUBTYPE OF (environment);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN
-        TYPEOF(SELF\environment.syntactic_representation)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE' IN
-        TYPEOF(SELF\environment.semantics));
-END_ENTITY;
-
-ENTITY bound_variable_semantics
-  SUBTYPE OF (variable_semantics);
-END_ENTITY;
-
-ENTITY bound_variational_parameter
-  SUBTYPE OF (variational_parameter);
-DERIVE
-  SELF\variational_parameter.parameter_current_value : maths_value := ?;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_PARAMETER_ENVIRONMENT' IN
-       TYPEOF(SELF\generic_variable.interpretation);
-END_ENTITY;
-
-ENTITY boundary_curve
-  SUBTYPE OF (composite_curve_on_surface);
-WHERE
-  WR1: SELF\composite_curve.closed_curve;
-END_ENTITY;
-
-ENTITY boundary_curve_of_b_spline_or_rectangular_composite_surface
-  SUBTYPE OF (founded_item);
-  basis_surface : b_spline_or_rectangular_composite_surface_select;
-  boundary_type : surface_boundary_type;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY bounded_curve
-  SUPERTYPE OF (ONEOF(polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve,
-                      locally_refined_spline_curve))
-  SUBTYPE OF (curve);
-END_ENTITY;
-
-ENTITY bounded_pcurve
-  SUBTYPE OF (pcurve, bounded_curve);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN
-        TYPEOF(SELF\pcurve.reference_to_curve.items[1]));
-END_ENTITY;
-
-ENTITY bounded_surface
-  SUPERTYPE OF (ONEOF(b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface,
-                      rectangular_composite_surface, locally_refined_spline_surface))
-  SUBTYPE OF (surface);
-END_ENTITY;
-
-ENTITY bounded_surface_curve
-  SUBTYPE OF (surface_curve, bounded_curve);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve.curve_3d));
-END_ENTITY;
-
-ENTITY box_domain
-  SUBTYPE OF (founded_item);
-  corner  : cartesian_point;
-  xlength : positive_length_measure;
-  ylength : positive_length_measure;
-  zlength : positive_length_measure;
-WHERE
-  WR1: SIZEOF(QUERY(item
-                    <* USEDIN(SELF, '')
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOXED_HALF_SPACE' IN TYPEOF(item)))) =
-       0;
-END_ENTITY;
-
-ENTITY boxed_half_space
-  SUBTYPE OF (half_space_solid);
-  enclosure : box_domain;
-END_ENTITY;
-
-ENTITY breakdown_context
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY breakdown_element_group_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_definition_element_relationship;
-  items                                : SET [1 : 1] OF product_definition_or_breakdown_element_usage;
-END_ENTITY;
-
-ENTITY breakdown_element_realization
-  SUBTYPE OF (characterized_object, product_definition_element_relationship);
-END_ENTITY;
-
-ENTITY breakdown_element_usage
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY breakdown_of
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY brep_with_voids
-  SUBTYPE OF (manifold_solid_brep);
-  voids : SET [1 : ?] OF oriented_closed_shell;
-END_ENTITY;
-
-ENTITY calendar_date
-  SUBTYPE OF (date);
-  day_component   : day_in_month_number;
-  month_component : month_in_year_number;
-WHERE
-  WR1: valid_calendar_date(SELF);
-END_ENTITY;
-
-ENTITY camera_image
-  SUPERTYPE OF (ONEOF(camera_image_2d_with_scale, camera_image_3d_with_scale))
-  SUBTYPE OF (mapped_item);
-  SELF\mapped_item.mapping_source : camera_usage;
-  SELF\mapped_item.mapping_target : planar_box;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY camera_image_2d_with_scale
-  SUBTYPE OF (camera_image);
-DERIVE
-  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);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D2' IN
-        TYPEOF(SELF\mapped_item.mapping_source.mapping_origin));
-  WR2: aspect_ratio(SELF\mapped_item.mapping_target) =
-       aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window);
-  WR3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window_clipping;
-END_ENTITY;
-
-ENTITY camera_image_3d_with_scale
-  SUBTYPE OF (camera_image);
-DERIVE
-  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));
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3' IN
-        TYPEOF(SELF\mapped_item.mapping_source.mapping_origin));
-  WR2: aspect_ratio(SELF\mapped_item.mapping_target) =
-       aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window);
-  WR3: 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;
-  WR4: (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) AND
-       (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0);
-  WR5: (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);
-  WR6: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
-        TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement)) AND
-       NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-            TYPEOF(SELF\mapped_item.mapping_target\planar_box.placement));
-END_ENTITY;
-
-ENTITY camera_model
-  ABSTRACT SUPERTYPE OF (ONEOF(camera_model_d2, camera_model_d3))
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: (SIZEOF(USEDIN(SELF,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION.TRANSFORM_ITEM_1')) +
-        SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPING_ORIGIN'))) >
-       0;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')) = 0;
-END_ENTITY;
-
-ENTITY camera_model_d2
-  SUBTYPE OF (camera_model);
-  view_window          : planar_box;
-  view_window_clipping : BOOLEAN;
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY camera_model_d3
-  SUBTYPE OF (camera_model);
-  view_reference_system : axis2_placement_3d;
-  perspective_of_volume : view_volume;
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY camera_model_d3_multi_clipping
-  SUBTYPE OF (camera_model_d3);
-  shape_clipping : SET [1 : ?] OF camera_model_d3_multi_clipping_intersection_select;
-END_ENTITY;
-
-ENTITY camera_model_d3_multi_clipping_intersection
-  SUBTYPE OF (geometric_representation_item);
-  shape_clipping : SET [2 : ?] OF camera_model_d3_multi_clipping_intersection_select;
-END_ENTITY;
-
-ENTITY camera_model_d3_multi_clipping_union
-  SUBTYPE OF (geometric_representation_item);
-  shape_clipping : SET [2 : ?] OF camera_model_d3_multi_clipping_union_select;
-END_ENTITY;
-
-ENTITY camera_model_d3_with_hlhsr
-  SUBTYPE OF (camera_model_d3);
-  hidden_line_surface_removal : BOOLEAN;
-END_ENTITY;
-
-ENTITY camera_model_with_light_sources
-  SUBTYPE OF (camera_model_d3);
-  sources : SET [1 : ?] OF light_source;
-END_ENTITY;
-
-ENTITY camera_usage
-  SUBTYPE OF (representation_map);
-  SELF\representation_map.mapping_origin : camera_model;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
-            TYPEOF(SELF\representation_map.mapped_representation));
-END_ENTITY;
-
-ENTITY capacitance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAPACITANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY capacitance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.farad);
-END_ENTITY;
-
-ENTITY cartesian_11
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY cartesian_complex_number_region
-  SUBTYPE OF (maths_space, generic_literal);
-  real_constraint : real_interval;
-  imag_constraint : real_interval;
-WHERE
-  WR1: min_exists(real_constraint) OR max_exists(real_constraint) OR min_exists(imag_constraint) OR
-       max_exists(imag_constraint);
-END_ENTITY;
-
-ENTITY cartesian_point
-  SUPERTYPE OF (ONEOF(cylindrical_point, polar_point, spherical_point))
-  SUBTYPE OF (point);
-  coordinates : LIST [1 : 3] OF length_measure;
-END_ENTITY;
-
-ENTITY cartesian_transformation_operator
-  SUPERTYPE OF (ONEOF(cartesian_transformation_operator_2d, cartesian_transformation_operator_3d))
-  SUBTYPE OF (geometric_representation_item, functionally_defined_transformation);
-  axis1        : OPTIONAL direction;
-  axis2        : OPTIONAL direction;
-  local_origin : cartesian_point;
-  scale        : OPTIONAL REAL;
-DERIVE
-  scl : REAL := NVL(scale, 1.0);
-WHERE
-  WR1: scl > 0.0;
-END_ENTITY;
-
-ENTITY cartesian_transformation_operator_2d
-  SUBTYPE OF (cartesian_transformation_operator);
-DERIVE
-  u : LIST [2 : 2] OF direction := base_axis(2, SELF\cartesian_transformation_operator.axis1,
-                                             SELF\cartesian_transformation_operator.axis2, ?);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY cartesian_transformation_operator_3d
-  SUBTYPE OF (cartesian_transformation_operator);
-  axis3 : OPTIONAL direction;
-DERIVE
-  u : LIST [3 : 3] OF direction := base_axis(3, SELF\cartesian_transformation_operator.axis1,
-                                             SELF\cartesian_transformation_operator.axis2, axis3);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY cc_design_approval
-  SUBTYPE OF (approval_assignment);
-  items : SET [1 : ?] OF approved_item;
-END_ENTITY;
-
-ENTITY cc_design_certification
-  SUBTYPE OF (certification_assignment);
-  items : SET [1 : ?] OF certified_item;
-END_ENTITY;
-
-ENTITY cc_design_contract
-  SUBTYPE OF (contract_assignment);
-  items : SET [1 : ?] OF contracted_item;
-END_ENTITY;
-
-ENTITY cc_design_date_and_time_assignment
-  SUBTYPE OF (date_and_time_assignment);
-  items : SET [1 : ?] OF date_time_item;
-END_ENTITY;
-
-ENTITY cc_design_person_and_organization_assignment
-  SUBTYPE OF (person_and_organization_assignment);
-  items : SET [1 : ?] OF cc_person_organization_item;
-WHERE
-  WR1: cc_design_person_and_organization_correlation(SELF);
-END_ENTITY;
-
-ENTITY cc_design_security_classification
-  SUBTYPE OF (security_classification_assignment);
-  items : SET [1 : ?] OF cc_classified_item;
-END_ENTITY;
-
-ENTITY cc_design_specification_reference
-  SUBTYPE OF (document_reference);
-  items : SET [1 : ?] OF cc_specified_item;
-END_ENTITY;
-
-ENTITY cdgc_with_dimension
-  SUBTYPE OF (curve_distance_geometric_constraint);
-  distance_value : non_negative_length_measure;
-END_ENTITY;
-
-ENTITY celsius_temperature_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY centre_of_symmetry
-  SUBTYPE OF (derived_shape_aspect);
-END_ENTITY;
-
-ENTITY certification;
-  name    : label;
-  purpose : text;
-  kind    : certification_type;
-END_ENTITY;
-
-ENTITY certification_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_certification : certification;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY certification_type;
-  description : label;
-END_ENTITY;
-
-ENTITY chain_based_geometric_item_specific_usage
-  SUBTYPE OF (geometric_item_specific_usage, chain_based_item_identified_representation_usage);
-END_ENTITY;
-
-ENTITY chain_based_item_identified_representation_usage
-  SUBTYPE OF (item_identified_representation_usage);
-  nodes           : LIST [2 : ?] OF UNIQUE representation;
-  undirected_link : LIST [1 : ?] OF chained_representation_link;
-DERIVE
-  root          : representation                              := nodes[1];
-  directed_link : LIST [1 : ?] OF representation_relationship := get_directed_link(nodes, undirected_link);
-  leaf          : representation                              := SELF\item_identified_representation_usage.used_representation;
-WHERE
-  WR1: EXISTS(directed_link);
-END_ENTITY;
-
-ENTITY chamfer
-  SUBTYPE OF (transition_feature);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'chamfer face')))) <=
-                             1)))) =
-        0);
-  WR2: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                 TYPEOF(sar)))
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
-                         TYPEOF(fcr.related_shape_aspect)) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
-                         TYPEOF(fcr.relating_shape_aspect)) AND
-                        (fcr.related_shape_aspect.description = 'first offset')))) =
-        1);
-  WR3: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                 TYPEOF(sar)))
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
-                         TYPEOF(fcr.related_shape_aspect)) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
-                         TYPEOF(fcr.relating_shape_aspect)) AND
-                        (fcr.related_shape_aspect.description = 'second offset')))) =
-        1);
-END_ENTITY;
-
-ENTITY chamfer_offset
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: (SELF.description IN ['first offset','second offset']);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR4: ((NOT (SELF.description = 'first offset')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'offset amount')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR5: ((NOT (SELF.description = 'first offset')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                               TYPEOF(pdr.used_representation)) AND
-                                              (pdr.used_representation.name = 'first face shape')))) <=
-                              1)))) =
-         0));
-  WR6: ((NOT (SELF.description = 'second offset')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'offset amount')) OR
-                                                                   ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'offset angle'))))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT (SELF.description = 'second offset')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                               TYPEOF(pdr.used_representation)) AND
-                                              (pdr.used_representation.name = 'second face shape')))) <=
-                              1)))) =
-         0));
-  WR8: (SIZEOF(QUERY(sdr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                 TYPEOF(sar)))
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER' IN
-                         TYPEOF(sdr.relating_shape_aspect)) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER_OFFSET' IN
-                         TYPEOF(sdr.related_shape_aspect))))) =
-        1);
-END_ENTITY;
-
-ENTITY change
-  SUBTYPE OF (action_assignment);
-  items : SET [1 : ?] OF work_item;
-END_ENTITY;
-
-ENTITY change_composition_relationship
-  SUBTYPE OF (group_relationship);
-  SELF\group_relationship.relating_group : change_group;
-  SELF\group_relationship.related_group  : change_element;
-DERIVE
-  composition : change_group   := SELF\group_relationship.relating_group;
-  element     : change_element := SELF\group_relationship.related_group;
-END_ENTITY;
-
-ENTITY change_element
-  ABSTRACT SUPERTYPE OF (ONEOF(modify_element, delete_element, add_element))
-  SUBTYPE OF (group, characterized_object);
-END_ENTITY;
-
-ENTITY change_element_sequence
-  SUBTYPE OF (group_relationship);
-  SELF\group_relationship.relating_group : change_element;
-  SELF\group_relationship.related_group  : change_element;
-DERIVE
-  next     : change_element := SELF\group_relationship.related_group;
-  previous : change_element := SELF\group_relationship.relating_group;
-END_ENTITY;
-
-ENTITY change_group
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY change_group_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : change_group;
-  item                                 : change_relationship_select;
-END_ENTITY;
-
-ENTITY change_request
-  SUBTYPE OF (action_request_assignment);
-  items : SET [1 : ?] OF change_request_item;
-END_ENTITY;
-
-ENTITY character_glyph_font_usage;
-  character : generic_character_glyph_symbol;
-  font      : text_font;
-END_ENTITY;
-
-ENTITY character_glyph_style_outline
-  SUBTYPE OF (founded_item);
-  outline_style : curve_style;
-END_ENTITY;
-
-ENTITY character_glyph_style_stroke
-  SUBTYPE OF (founded_item);
-  stroke_style : curve_style;
-END_ENTITY;
-
-ENTITY character_glyph_symbol
-  SUBTYPE OF (generic_character_glyph_symbol);
-  character_box  : planar_extent;
-  baseline_ratio : ratio_measure;
-DERIVE
-  box_height : length_measure := character_box.size_in_y;
-WHERE
-  WR1: {0.0 <= baseline_ratio <= 1.0};
-  WR2: item_in_context(character_box, SELF\representation.context_of_items);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(box_height);
-END_ENTITY;
-
-ENTITY character_glyph_symbol_outline
-  SUBTYPE OF (character_glyph_symbol);
-  outlines : SET [1 : ?] OF annotation_fill_area;
-WHERE
-  WR1: outlines <= SELF\representation.items;
-END_ENTITY;
-
-ENTITY character_glyph_symbol_stroke
-  SUBTYPE OF (character_glyph_symbol);
-  strokes : SET [1 : ?] OF curve;
-WHERE
-  WR1: strokes <= SELF\representation.items;
-END_ENTITY;
-
-ENTITY characteristic_data_column_header
-  SUBTYPE OF (general_property);
-END_ENTITY;
-
-ENTITY characteristic_data_column_header_link
-  SUBTYPE OF (general_property_relationship);
-END_ENTITY;
-
-ENTITY characteristic_data_table_header
-  SUBTYPE OF (general_property);
-END_ENTITY;
-
-ENTITY characteristic_data_table_header_decomposition
-  SUBTYPE OF (general_property_relationship);
-END_ENTITY;
-
-ENTITY characteristic_type
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY characterized_chain_based_item_within_representation
-  SUBTYPE OF (characterized_item_within_representation);
-  nodes           : LIST [2 : ?] OF UNIQUE representation;
-  undirected_link : LIST [1 : ?] OF chained_representation_link;
-DERIVE
-  root          : representation                              := nodes[1];
-  directed_link : LIST [1 : ?] OF representation_relationship := get_directed_link(nodes, undirected_link);
-  leaf          : representation                              := SELF\characterized_item_within_representation.rep;
-WHERE
-  WR1: EXISTS(directed_link);
-END_ENTITY;
-
-ENTITY characterized_class
-  SUBTYPE OF (characterized_object, class);
-END_ENTITY;
-
-ENTITY characterized_item_within_representation
-  SUBTYPE OF (characterized_object);
-  item : representation_item;
-  rep  : representation;
-UNIQUE
-  UR1: item, rep;
-WHERE
-  WR1: rep IN using_representations(item);
-END_ENTITY;
-
-ENTITY characterized_location_object
-  SUBTYPE OF (characterized_object, location);
-END_ENTITY;
-
-ENTITY characterized_object;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY characterized_object_relationship;
-  name            : label;
-  description     : OPTIONAL text;
-  relating_object : characterized_object;
-  related_object  : characterized_object;
-END_ENTITY;
-
-ENTITY characterized_product_concept_feature
-  SUBTYPE OF (product_concept_feature, characterized_object);
-END_ENTITY;
-
-ENTITY characterized_product_concept_feature_category
-  SUBTYPE OF (product_concept_feature_category, characterized_object);
-END_ENTITY;
-
-ENTITY characterized_representation
-  SUBTYPE OF (representation, characterized_object);
-DERIVE
-  SELF\characterized_object.name        : label := SELF\representation.name;
-  SELF\characterized_object.description : text  := SELF\representation.description;
-END_ENTITY;
-
-ENTITY circle
-  SUBTYPE OF (conic);
-  radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY circular_area
-  SUBTYPE OF (primitive_2d);
-  centre : cartesian_point;
-  radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY circular_closed_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | NOT (SIZEOF(QUERY(it
-                                                              <* impl_rep.used_representation.items
-                                                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                  TYPEOF(it)) AND
-                                                                 (it.name = 'orientation')))) =
-                                                 1))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'diameter')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY circular_involute
-  SUBTYPE OF (curve);
-  position    : axis2_placement;
-  base_radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY circular_path
-  SUBTYPE OF (path_node);
-  via_point : cartesian_point;
-END_ENTITY;
-
-ENTITY circular_pattern
-  SUBTYPE OF (replicate_feature);
-WHERE
-  WR1: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                    | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                              TYPEOF(sdr.related_shape_aspect)))) =
-                                              1)))) <=
-                             3)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'diameter')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'base feature rotation')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                   TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                  (it.name = 'number of features')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'angular spacing')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR8: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY circular_runout_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY class
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY class_by_extension
-  SUBTYPE OF (class);
-END_ENTITY;
-
-ENTITY class_by_intension
-  SUBTYPE OF (class);
-END_ENTITY;
-
-ENTITY class_system
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY class_usage_effectivity_context_assignment
-  SUBTYPE OF (effectivity_context_assignment);
-  items : SET [1 : ?] OF class_usage_effectivity_context_item;
-WHERE
-  WR1: SELF.role.name = 'class usage influence';
-  WR2: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)))) =
-       0;
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN
-                            TYPEOF(i)))) =
-        0);
-END_ENTITY;
-
-ENTITY classification_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_class : group;
-  role           : classification_role;
-END_ENTITY;
-
-ENTITY classification_assignment_relationship;
-  id            : OPTIONAL identifier;
-  description   : OPTIONAL text;
-  relating      : classification_assignment;
-  related       : classification_assignment;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_classification_assignment_relationship(SELF, [related],
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFICATION_ASSIGNMENT_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY classification_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY clgc_with_dimension
-  SUBTYPE OF (curve_length_geometric_constraint);
-  length_value : positive_length_measure;
-END_ENTITY;
-
-ENTITY closed_curve_style_parameters
-  SUBTYPE OF (curve_style_parameters_representation);
-END_ENTITY;
-
-ENTITY closed_path_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-END_ENTITY;
-
-ENTITY closed_shell
-  SUBTYPE OF (connected_face_set);
-END_ENTITY;
-
-ENTITY clothoid
-  SUBTYPE OF (curve);
-  position          : axis2_placement;
-  clothoid_constant : length_measure;
-END_ENTITY;
-
-ENTITY coaxial_assembly_constraint
-  SUBTYPE OF (binary_assembly_constraint, coaxial_geometric_constraint);
-END_ENTITY;
-
-ENTITY coaxial_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF axial_geometry_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF axial_geometry_constraint_element;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\explicit_constraint.reference_elements
-                    | SIZEOF(TYPEOF(q) *
-                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERE']) >
-                      0)) =
-       0;
-END_ENTITY;
-
-ENTITY coaxiality_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY collection
-  SUBTYPE OF (product);
-END_ENTITY;
-
-ENTITY collection_assignment
-  SUBTYPE OF (applied_group_assignment);
-END_ENTITY;
-
-ENTITY collection_membership
-  SUBTYPE OF (applied_group_assignment);
-END_ENTITY;
-
-ENTITY collection_relationship
-  SUBTYPE OF (product_relationship);
-  SELF\product_relationship.relating_product : collection;
-  SELF\product_relationship.related_product  : collection;
-DERIVE
-  related_collection  : collection := SELF\product_relationship.related_product;
-  relating_collection : collection := SELF\product_relationship.relating_product;
-END_ENTITY;
-
-ENTITY collection_version
-  SUBTYPE OF (product_definition_formation);
-  SELF\product_definition_formation.of_product : collection;
-DERIVE
-  of_collection : collection := SELF\product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY collection_version_relationship
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : collection_version;
-DERIVE
-  related_version  : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
-  relating_version : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
-END_ENTITY;
-
-ENTITY collection_version_sequence_relationship
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : collection_version;
-DERIVE
-  predecessor : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
-  successor   : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
-END_ENTITY;
-
-ENTITY collection_view_definition
-  SUBTYPE OF (product_definition);
-  SELF\product_definition.formation : collection_version;
-DERIVE
-  defined_version : collection_version := SELF\product_definition.formation;
-END_ENTITY;
-
-ENTITY colour;
-END_ENTITY;
-
-ENTITY colour_rgb
-  SUBTYPE OF (colour_specification);
-  red   : REAL;
-  green : REAL;
-  blue  : REAL;
-WHERE
-  WR1: {0.0 <= red <= 1.0};
-  WR2: {0.0 <= green <= 1.0};
-  WR3: {0.0 <= blue <= 1.0};
-END_ENTITY;
-
-ENTITY colour_specification
-  SUBTYPE OF (colour);
-  name : label;
-END_ENTITY;
-
-ENTITY common_datum
-  SUBTYPE OF (composite_shape_aspect, datum);
-WHERE
-  WR1: SIZEOF(SELF\composite_shape_aspect.component_relationships) = 2;
-  WR2: SIZEOF(QUERY(sar
-                    <* SELF\composite_shape_aspect.component_relationships
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
-                            TYPEOF(sar.related_shape_aspect)) AND
-                           NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM' IN
-                                TYPEOF(sar.related_shape_aspect))))) =
-       0;
-END_ENTITY;
-
-ENTITY comparison_equal
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY comparison_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(comparison_equal, comparison_greater, comparison_greater_equal, comparison_less,
-                               comparison_less_equal, comparison_not_equal, like_expression))
-  SUBTYPE OF (boolean_expression, binary_generic_expression);
-  SELF\binary_generic_expression.operands : LIST [2 : 2] OF expression;
-WHERE
-  WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[1])) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[2]))) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[1])) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[2]))) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[1])) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
-         TYPEOF(SELF\binary_generic_expression.operands[2])));
-END_ENTITY;
-
-ENTITY comparison_greater
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY comparison_greater_equal
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY comparison_less
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY comparison_less_equal
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY comparison_not_equal
-  SUBTYPE OF (comparison_expression);
-END_ENTITY;
-
-ENTITY complex_area
-  ABSTRACT SUPERTYPE OF (path_area_with_parameters ANDOR primitive_2d_with_inner_boundary)
-  SUBTYPE OF (primitive_2d);
-END_ENTITY;
-
-ENTITY complex_clause
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY complex_conjunctive_clause
-  SUBTYPE OF (complex_clause);
-END_ENTITY;
-
-ENTITY complex_disjunctive_clause
-  SUBTYPE OF (complex_clause);
-END_ENTITY;
-
-ENTITY complex_number_literal
-  SUBTYPE OF (generic_literal);
-  real_part : REAL;
-  imag_part : REAL;
-END_ENTITY;
-
-ENTITY complex_number_literal_polar
-  SUBTYPE OF (complex_number_literal);
-  modulus  : REAL;
-  argument : REAL;
-DERIVE
-  SELF\complex_number_literal.real_part : REAL := modulus * COS(argument);
-  SELF\complex_number_literal.imag_part : REAL := modulus * SIN(argument);
-WHERE
-  WR1: modulus >= 0;
-  WR2: {0 <= argument <= 2 * PI};
-END_ENTITY;
-
-ENTITY complex_shelled_solid
-  SUBTYPE OF (shelled_solid);
-  thickened_face_list : LIST [1 : ?] OF SET [1 : ?] OF face_surface;
-  thickness_list      : LIST [1 : ?] OF length_measure;
-WHERE
-  WR1: SIZEOF(thickened_face_list) = SIZEOF(thickness_list);
-  WR2: SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0;
-END_ENTITY;
-
-ENTITY complex_triangulated_face
-  SUBTYPE OF (tessellated_face);
-  pnindex         : LIST [0 : ?] OF INTEGER;
-  triangle_strips : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
-  triangle_fans   : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
-WHERE
-  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.pnmax));
-  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <> coordinates.npoints));
-  WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
-END_ENTITY;
-
-ENTITY complex_triangulated_surface_set
-  SUBTYPE OF (tessellated_surface_set);
-  pnindex         : LIST [0 : ?] OF INTEGER;
-  triangle_strips : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
-  triangle_fans   : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
-WHERE
-  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_surface_set.pnmax));
-  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax <> coordinates.npoints));
-  WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
-END_ENTITY;
-
-ENTITY component_definition
-  SUBTYPE OF (product_definition, product_definition_relationship);
-DERIVE
-  SELF\product_definition_relationship.related_product_definition : component_definition := SELF;
-WHERE
-  WR1: NOT EXISTS(SELF\product_definition_relationship.description);
-  WR2: NOT EXISTS(SELF\property_definition.description);
-  WR3: SELF\product_definition_relationship.id = SELF\product_definition.id;
-  WR4: SELF\product_definition_relationship.name = 'definition usage';
-  WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY component_feature
-  SUBTYPE OF (shape_aspect);
-  SELF\shape_aspect.of_shape : assembly_component;
-END_ENTITY;
-
-ENTITY component_feature_joint
-  SUBTYPE OF (shape_aspect_relationship, shape_aspect);
-  SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
-  SELF\shape_aspect_relationship.related_shape_aspect  : component_feature;
-END_ENTITY;
-
-ENTITY component_feature_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
-  SELF\shape_aspect_relationship.related_shape_aspect  : component_feature;
-WHERE
-  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>: SELF\shape_aspect_relationship.relating_shape_aspect;
-END_ENTITY;
-
-ENTITY component_path_shape_aspect
-  SUBTYPE OF (shape_aspect);
-  location               : multi_or_next_assembly_usage_occurrence;
-  component_shape_aspect : internal_or_reflected_shape_aspect;
-UNIQUE
-  UR1: location, component_shape_aspect;
-END_ENTITY;
-
-ENTITY component_terminal
-  SUBTYPE OF (component_feature);
-END_ENTITY;
-
-ENTITY composite_assembly_sequence_definition
-  SUBTYPE OF (product_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
-                      TYPEOF(pdr))) >
-       0;
-END_ENTITY;
-
-ENTITY composite_curve
-  SUBTYPE OF (bounded_curve);
-  segments       : LIST [1 : ?] OF composite_curve_segment;
-  self_intersect : LOGICAL;
-DERIVE
-  n_segments   : INTEGER := SIZEOF(segments);
-  closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous;
-WHERE
-  WR1: ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | temp.transition = discontinuous)) = 1)) OR
-       ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | temp.transition = discontinuous)) = 0));
-END_ENTITY;
-
-ENTITY composite_curve_on_surface
-  SUPERTYPE OF (boundary_curve)
-  SUBTYPE OF (composite_curve);
-DERIVE
-  basis_surface : SET [0 : 2] OF surface := get_basis_surface(SELF);
-WHERE
-  WR1: SIZEOF(basis_surface) > 0;
-  WR2: constraints_composite_curve_on_surface(SELF);
-END_ENTITY;
-
-ENTITY composite_curve_segment
-  SUBTYPE OF (founded_item);
-  transition   : transition_code;
-  same_sense   : BOOLEAN;
-  parent_curve : curve;
-INVERSE
-  using_curves : BAG [1:?] OF composite_curve FOR segments;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve));
-END_ENTITY;
-
-ENTITY composite_curve_transition_locator
-  SUBTYPE OF (founded_item);
-  basis_curve      : composite_curve;
-  transition_index : INTEGER;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_curve) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY composite_group_shape_aspect
-  SUBTYPE OF (composite_shape_aspect);
-END_ENTITY;
-
-ENTITY composite_hole
-  SUBTYPE OF (compound_feature);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SELF\characterized_object.description IN ['counterbore','countersunk']);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                        (SIZEOF(QUERY(csa
-                                      <* USEDIN(pds,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                          TYPEOF(csa)) AND
-                                         (SIZEOF(QUERY(sar
-                                                       <* csa.component_relationships
-                                                       | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                            TYPEOF(sar)) AND
-                                                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
-                                                            TYPEOF(sar.related_shape_aspect)))))) =
-                                          2)))) =
-                         1)))) =
-        1);
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       ((NOT (SELF\characterized_object.description = 'countersunk')) OR
-        (SIZEOF(QUERY(pds
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                          TYPEOF(pds)) AND
-                         (SIZEOF(QUERY(csa
-                                       <* USEDIN(pds,
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                       | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                           TYPEOF(csa)) AND
-                                          (SIZEOF(QUERY(sar
-                                                        <* csa.component_relationships
-                                                        | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
-                                                            TYPEOF(sar.related_shape_aspect)) AND
-                                                           (NOT (SIZEOF(QUERY(pds
-                                                                              <* QUERY(pd
-                                                                                       <* USEDIN(sar.related_shape_aspect,
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                                                                       | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                                                                          TYPEOF(pd)))
-                                                                              | (NOT (SIZEOF(QUERY(sa_occ
-                                                                                                   <* USEDIN(pds,
-                                                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                                                                                   | ((sa_occ.description =
-                                                                                                       'change in diameter occurrence') AND
-                                                                                                      (SIZEOF(QUERY(fcr2
-                                                                                                                    <* QUERY(sar2
-                                                                                                                             <* USEDIN(sa_occ,
-                                                                                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                                                                             | ((sar2.description =
-                                                                                                                                 'taper usage') AND
-                                                                                                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                                                                                 TYPEOF(sar2))))
-                                                                                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                                                                                       TYPEOF(fcr2.related_shape_aspect)))) =
-                                                                                                       1)))) =
-                                                                                      0)))) =
-                                                                 0))))) =
-                                           1)))) =
-                          1)))) =
-         1));
-END_ENTITY;
-
-ENTITY composite_material_designation
-  SUBTYPE OF (material_designation);
-END_ENTITY;
-
-ENTITY composite_shape_aspect
-  SUPERTYPE OF (ONEOF(continuous_shape_aspect, common_datum, composite_group_shape_aspect))
-  SUBTYPE OF (shape_aspect);
-INVERSE
-  component_relationships : SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
-END_ENTITY;
-
-ENTITY composite_sheet_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] *
-              TYPEOF(SELF)) =
-       1;
-END_ENTITY;
-
-ENTITY composite_text
-  SUBTYPE OF (geometric_representation_item);
-  collected_text : SET [2 : ?] OF text_or_character;
-WHERE
-  WR1: acyclic_composite_text(SELF, collected_text);
-END_ENTITY;
-
-ENTITY composite_text_with_associated_curves
-  SUBTYPE OF (composite_text);
-  associated_curves : SET [1 : ?] OF curve;
-END_ENTITY;
-
-ENTITY composite_text_with_blanking_box
-  SUBTYPE OF (composite_text);
-  blanking : planar_box;
-END_ENTITY;
-
-ENTITY composite_text_with_delineation
-  SUBTYPE OF (composite_text);
-  delineation : text_delineation;
-END_ENTITY;
-
-ENTITY composite_text_with_extent
-  SUBTYPE OF (composite_text);
-  extent : planar_extent;
-END_ENTITY;
-
-ENTITY composite_unit_shape_aspect
-  SUBTYPE OF (composite_shape_aspect);
-END_ENTITY;
-
-ENTITY compound_feature
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | ((csa.name = 'compound feature in solid') AND
-                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                         TYPEOF(csa))))) =
-                        1))) =
-        1);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                       TYPEOF(csa))) =
-                        1))) =
-        1);
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                        (SIZEOF(QUERY(csa
-                                      <* USEDIN(pds,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                          TYPEOF(csa)) AND
-                                         (SIZEOF(QUERY(fcr
-                                                       <* csa.component_relationships
-                                                       | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                               TYPEOF(fcr))))) =
-                                          0)))) =
-                         1)))) =
-        1);
-  WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                        TYPEOF(csa)))) =
-                        1))) =
-        1);
-  WR5: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                        (SIZEOF(QUERY(csa
-                                      <* USEDIN(pds,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                          TYPEOF(csa)) AND
-                                         (SIZEOF(QUERY(sar
-                                                       <* csa.component_relationships
-                                                       | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THREAD' IN
-                                                          TYPEOF(sar.related_shape_aspect)))) =
-                                          0)))) =
-                         1)))) =
-        1);
-  WR6: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                        TYPEOF(csa)) AND
-                                       (SIZEOF(QUERY(sar
-                                                     <* csa.component_relationships
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_FEATURE' IN
-                                                         TYPEOF(sar.related_shape_aspect)) AND
-                                                        (sar.related_shape_aspect\characterized_object.name <>
-                                                         SELF\characterized_object.name)))) =
-                                        0))) =
-                        1))) =
-        1);
-END_ENTITY;
-
-ENTITY compound_representation_item
-  SUPERTYPE OF ((ONEOF(point_and_vector, point_array)) ANDOR
-                ((ONEOF(row_representation_item, table_representation_item))))
-  SUBTYPE OF (representation_item);
-  item_element : compound_item_definition;
-END_ENTITY;
-
-ENTITY compound_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
-        TYPEOF(SELF.context_of_items)) AND
-       (SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3);
-  WR2: SIZEOF(QUERY(cbsr_i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                             TYPEOF(cbsr_i)) <>
-                      1)) =
-       0;
-  WR3: SIZEOF(QUERY(cbsr_i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(cbsr_i)) =
-                      1)) >
-       0;
-  WR4: SIZEOF(QUERY(cbsr_i
-                    <* SELF.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(cbsr_i)) AND
-                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_SHAPE_REPRESENTATION',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] *
-                              TYPEOF(cbsr_i\mapped_item.mapping_source)) <>
-                       1))) =
-       0;
-END_ENTITY;
-
-ENTITY concat_expression
-  SUBTYPE OF (string_expression, multiple_arity_generic_expression);
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF string_expression;
-END_ENTITY;
-
-ENTITY concentricity_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY concept_feature_operator;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY concept_feature_relationship;
-  name                             : label;
-  description                      : OPTIONAL text;
-  relating_product_concept_feature : product_concept_feature;
-  related_product_concept_feature  : product_concept_feature;
-END_ENTITY;
-
-ENTITY concept_feature_relationship_with_condition
-  SUBTYPE OF (concept_feature_relationship);
-  conditional_operator : concept_feature_operator;
-END_ENTITY;
-
-ENTITY condition
-  SUBTYPE OF (action_method);
-END_ENTITY;
-
-ENTITY conditional_concept_feature
-  SUBTYPE OF (product_concept_feature);
-  condition : concept_feature_relationship_with_condition;
-END_ENTITY;
-
-ENTITY conditional_effectivity
-  SUBTYPE OF (condition, effectivity);
-END_ENTITY;
-
-ENTITY conductance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDUCTANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY conductance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.siemens);
-END_ENTITY;
-
-ENTITY configurable_item
-  SUBTYPE OF (configuration_item);
-  item_concept_feature : SET [1 : ?] OF product_concept_feature_association;
-END_ENTITY;
-
-ENTITY configuration_design;
-  configuration : configuration_item;
-  design        : configuration_design_item;
-DERIVE
-  name        : label := get_name_value(SELF);
-  description : text  := get_description_value(SELF);
-UNIQUE
-  UR1: configuration, design;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY configuration_effectivity
-  SUBTYPE OF (product_definition_effectivity);
-  configuration : configuration_design;
-UNIQUE
-  UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN
-       TYPEOF(SELF\product_definition_effectivity.usage);
-END_ENTITY;
-
-ENTITY configuration_item;
-  id           : identifier;
-  name         : label;
-  description  : OPTIONAL text;
-  item_concept : product_concept;
-  purpose      : OPTIONAL label;
-END_ENTITY;
-
-ENTITY configuration_item_hierarchical_relationship
-  SUBTYPE OF (configuration_item_relationship);
-END_ENTITY;
-
-ENTITY configuration_item_relationship;
-  name                        : label;
-  description                 : OPTIONAL text;
-  relating_configuration_item : configuration_item;
-  related_configuration_item  : configuration_item;
-END_ENTITY;
-
-ENTITY configuration_item_revision_sequence
-  SUBTYPE OF (configuration_item_relationship);
-END_ENTITY;
-
-ENTITY configured_effectivity_assignment
-  SUBTYPE OF (effectivity_assignment);
-  items : SET [1 : ?] OF configured_effectivity_item;
-WHERE
-  WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity)) =
-        1) AND
-       (SELF.assigned_effectivity.id = 'configuration validity');
-  WR2: SIZEOF(SELF.items) = 1;
-  WR3: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) OR
-                          NOT (i\product_definition.frame_of_reference.name IN
-                               ['conceptual definition',
-                                'part occurrence',
-                                'functional definition',
-                                'alternative definition']))) =
-       0;
-  WR4: SELF.role.name IN ['design','usage'];
-  WR5: (SELF.role.name <> 'design') OR
-       (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND
-                       (i\product_definition.frame_of_reference.name = 'part occurrence'))) =
-        0);
-  WR6: (SELF.role.name <> 'usage') OR
-       (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND
-                       (i\product_definition.frame_of_reference.name = 'conceptual definition'))) =
-        0);
-  WR7: SELF.role.description IN ['exception','inherited','local'];
-  WR8: SIZEOF(QUERY(x
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN
-                      TYPEOF(x))) =
-       1;
-END_ENTITY;
-
-ENTITY configured_effectivity_context_assignment
-  SUBTYPE OF (effectivity_context_assignment);
-  SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment;
-  items                                                               : SET [1 : ?] OF configured_effectivity_context_item;
-WHERE
-  WR1: SIZEOF(SELF.items) = 1;
-END_ENTITY;
-
-ENTITY conic
-  SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola))
-  SUBTYPE OF (curve);
-  position : axis2_placement;
-END_ENTITY;
-
-ENTITY conical_stepped_hole_transition
-  SUBTYPE OF (geometric_representation_item);
-  transition_number : positive_integer;
-  cone_apex_angle   : plane_angle_measure;
-  cone_base_radius  : positive_length_measure;
-END_ENTITY;
-
-ENTITY conical_surface
-  SUBTYPE OF (elementary_surface);
-  radius     : length_measure;
-  semi_angle : plane_angle_measure;
-WHERE
-  WR1: radius >= 0.0;
-END_ENTITY;
-
-ENTITY connected_edge_set
-  SUBTYPE OF (topological_representation_item);
-  ces_edges : SET [1 : ?] OF edge;
-END_ENTITY;
-
-ENTITY connected_edge_with_length_set_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF connected_edge_with_length_set_items;
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET' IN TYPEOF(it))) =
-       1;
-END_ENTITY;
-
-ENTITY connected_face_set
-  SUPERTYPE OF (ONEOF(closed_shell, open_shell))
-  SUBTYPE OF (topological_representation_item);
-  cfs_faces : SET [1 : ?] OF face;
-END_ENTITY;
-
-ENTITY connected_face_sub_set
-  SUBTYPE OF (connected_face_set);
-  parent_face_set : connected_face_set;
-END_ENTITY;
-
-ENTITY connected_volume_set
-  SUBTYPE OF (topological_representation_item);
-  cvs_volumes : SET [1 : ?] OF volume_with_faces;
-END_ENTITY;
-
-ENTITY connected_volume_sub_set
-  SUBTYPE OF (connected_volume_set);
-  parent_volume_set : connected_volume_set;
-END_ENTITY;
-
-ENTITY connection_zone_interface_plane_relationship
-  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
-UNIQUE
-  UR1: SELF\shape_aspect_relationship.name;
-END_ENTITY;
-
-ENTITY connectivity_definition
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY connectivity_definition_item_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : connectivity_definition;
-END_ENTITY;
-
-ENTITY constant_function
-  SUBTYPE OF (maths_function, generic_literal);
-  sole_output      : maths_value;
-  source_of_domain : maths_space_or_function;
-WHERE
-  WR1: no_cyclic_domain_reference(source_of_domain, [SELF]);
-  WR2: expression_is_constant(domain_from(source_of_domain));
-END_ENTITY;
-
-ENTITY constituent_shape_aspect
-  SUBTYPE OF (shape_aspect);
-  parent : shape_aspect;
-DERIVE
-  SELF\shape_aspect.of_shape : product_definition_shape := get_root_shape_aspect(SELF);
-END_ENTITY;
-
-ENTITY constrained_kinematic_motion_representation
-  SUBTYPE OF (representation_relationship_with_transformation);
-  SELF\representation_relationship.rep_1 : representative_shape_representation;
-  SELF\representation_relationship.rep_2 : representative_shape_representation;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-        TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-        TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
-  WR2: ((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));
-  WR3: (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)));
-  WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_PAIR' IN
-       TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
-END_ENTITY;
-
-ENTITY constructive_geometry_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
-        TYPEOF(SELF\representation.context_of_items)) AND
-       ({2 <= SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension <= 3});
-  WR2: SIZEOF(QUERY(cgr_i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] *
-                             TYPEOF(cgr_i)) <>
-                      1)) =
-       0;
-  WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) > 0;
-END_ENTITY;
-
-ENTITY constructive_geometry_representation_relationship
-  SUBTYPE OF (representation_relationship);
-  SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_representation;
-  SELF\representation_relationship.rep_2 : constructive_geometry_representation;
-WHERE
-  WR1: (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
-        TYPEOF(SELF.rep_1.context_of_items));
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN
-            TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY contact_feature
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY contact_feature_definition
-  SUBTYPE OF (shape_feature_definition);
-END_ENTITY;
-
-ENTITY contact_feature_definition_fit_relationship
-  SUBTYPE OF (shape_feature_definition_fit_relationship);
-  SELF\characterized_object_relationship.relating_object : contact_feature_definition;
-  SELF\characterized_object_relationship.related_object  : contact_feature_definition;
-END_ENTITY;
-
-ENTITY contact_feature_fit_relationship
-  SUBTYPE OF (shape_feature_fit_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : contact_feature;
-  SELF\shape_aspect_relationship.related_shape_aspect  : contact_feature;
-END_ENTITY;
-
-ENTITY contact_ratio_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) = 1) AND
-       (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                               TYPEOF(i)) =
-                        1) AND
-                       (i.name = 'ratio value'))) =
-        1);
-  WR2: (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | pdr\property_definition_representation.name = 'contact ratio reference')) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | (pdr\property_definition_representation.name = 'contact ratio reference') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-                        TYPEOF(pdr\property_definition_representation.definition\property_definition.definition)))) =
-        1);
-  WR3: (SIZEOF(USEDIN(SELF,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | SIZEOF(QUERY(gpa
-                                    <* USEDIN(pdr.definition,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
-                                       TYPEOF(gpa\general_property_association.base_definition)) AND
-                                      (gpa\general_property_association.base_definition\general_property.name =
-                                       'surface_condition'))) =
-                       1)) =
-        1);
-END_ENTITY;
-
-ENTITY contacting_feature
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: SELF\shape_aspect.product_definitional = false;
-END_ENTITY;
-
-ENTITY containing_message
-  SUBTYPE OF (group_assignment);
-  items                                : SET [1 : 1] OF structured_message;
-  SELF\group_assignment.assigned_group : message_contents_group;
-DERIVE
-  message_contents_group : message_contents_group := SELF\group_assignment.assigned_group;
-END_ENTITY;
-
-ENTITY context_dependent_invisibility
-  SUBTYPE OF (invisibility);
-  presentation_context : invisibility_context;
-END_ENTITY;
-
-ENTITY context_dependent_kinematic_link_representation;
-  representation_relation      : kinematic_link_representation_association;
-  represented_product_relation : product_definition_relationship_kinematics;
-END_ENTITY;
-
-ENTITY context_dependent_over_riding_styled_item
-  SUBTYPE OF (over_riding_styled_item);
-  style_context : LIST [1 : ?] OF style_context_select;
-WHERE
-  WR1: (SIZEOF(QUERY(sc
-                     <* style_context
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc))) =
-        1) OR
-       (SIZEOF(QUERY(sc
-                     <* style_context
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) OR
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN
-                        TYPEOF(sc)) OR
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN
-                        TYPEOF(sc)))) =
-        SIZEOF(style_context));
-END_ENTITY;
-
-ENTITY context_dependent_shape_representation;
-  representation_relation      : shape_representation_relationship;
-  represented_product_relation : product_definition_shape;
-DERIVE
-  description : text  := get_description_value(SELF);
-  name        : label := get_name_value(SELF);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN
-       TYPEOF(SELF.represented_product_relation.definition);
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-  WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY context_dependent_unit
-  SUBTYPE OF (named_unit);
-  name : label;
-END_ENTITY;
-
-ENTITY continuous_shape_aspect
-  SUPERTYPE OF (ONEOF(between_shape_aspect, all_around_shape_aspect))
-  SUBTYPE OF (composite_shape_aspect);
-END_ENTITY;
-
-ENTITY contract;
-  name    : label;
-  purpose : text;
-  kind    : contract_type;
-END_ENTITY;
-
-ENTITY contract_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_contract : contract;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY contract_relationship;
-  id                : identifier;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_contract : contract;
-  related_contract  : contract;
-END_ENTITY;
-
-ENTITY contract_type;
-  description : label;
-END_ENTITY;
-
-ENTITY conversion_based_unit
-  SUBTYPE OF (named_unit);
-  name              : label;
-  conversion_factor : measure_with_unit;
-WHERE
-  WR1: SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY convex_hexahedron
-  SUBTYPE OF (faceted_primitive);
-WHERE
-  WR1: SIZEOF(points) = 8;
-  WR2: above_plane(points[1], points[2], points[3], points[4]) = 0.0;
-  WR3: above_plane(points[5], points[8], points[7], points[6]) = 0.0;
-  WR4: above_plane(points[1], points[4], points[8], points[5]) = 0.0;
-  WR5: above_plane(points[4], points[3], points[7], points[8]) = 0.0;
-  WR6: above_plane(points[3], points[2], points[6], points[7]) = 0.0;
-  WR7: above_plane(points[1], points[5], points[6], points[2]) = 0.0;
-  WR8: same_side([points[1],points[2],points[3]], [points[5],points[6],points[7],points[8]]);
-  WR9: same_side([points[1],points[4],points[8]], [points[3],points[7],points[6],points[2]]);
-  WR10: same_side([points[1],points[2],points[5]], [points[3],points[7],points[8],points[4]]);
-  WR11: same_side([points[5],points[6],points[7]], [points[1],points[2],points[3],points[4]]);
-  WR12: same_side([points[3],points[7],points[6]], [points[1],points[4],points[8],points[5]]);
-  WR13: same_side([points[3],points[7],points[8]], [points[1],points[5],points[6],points[2]]);
-END_ENTITY;
-
-ENTITY coordinated_universal_time_offset;
-  hour_offset   : INTEGER;
-  minute_offset : OPTIONAL INTEGER;
-  sense         : ahead_or_behind;
-DERIVE
-  actual_minute_offset : INTEGER := NVL(minute_offset, 0);
-WHERE
-  WR1: {0 <= hour_offset < 24};
-  WR2: {0 <= actual_minute_offset <= 59};
-  WR3: NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (sense = exact));
-END_ENTITY;
-
-ENTITY coordinates_list
-  SUBTYPE OF (tessellated_item);
-  npoints         : INTEGER;
-  position_coords : LIST [1 : ?] OF LIST [3 : 3] OF REAL;
-WHERE
-  WR1: npoints = SIZEOF(position_coords);
-  WR2: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPOSITIONED_TESSELLATED_ITEM'] * TYPEOF(SELF)) = 0;
-END_ENTITY;
-
-ENTITY cos_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY counterbore_hole_definition
-  SUBTYPE OF (explicit_composite_hole);
-  counterbore                     : LIST [1 : ?] OF UNIQUE explicit_round_hole;
-  drilled_hole_depth              : OPTIONAL positive_length_measure_with_unit;
-  drilled_hole_depth_tolerance    : OPTIONAL tolerance_value;
-  drilled_hole_diameter           : positive_length_measure_with_unit;
-  drilled_hole_diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
-  through_hole                    : BOOLEAN;
-WHERE
-  WR1: through_hole XOR EXISTS(drilled_hole_depth);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
-  WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
-  WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
-END_ENTITY;
-
-ENTITY counterbore_hole_occurrence
-  SUBTYPE OF (shape_aspect_occurrence);
-  SELF\shape_aspect_occurrence.definition : counterbore_hole_definition;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
-  WR2: SELF\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY counterbore_hole_occurrence_in_assembly
-  SUBTYPE OF (counterbore_hole_occurrence);
-  modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
-END_ENTITY;
-
-ENTITY counterdrill_hole_definition
-  SUBTYPE OF (explicit_composite_hole);
-  counterbore                     : explicit_round_hole;
-  counterdrill_angle              : positive_plane_angle_measure_with_unit;
-  counterdrill_angle_tolerance    : tolerance_value;
-  drilled_hole_depth              : OPTIONAL positive_length_measure_with_unit;
-  drilled_hole_depth_tolerance    : OPTIONAL tolerance_value;
-  drilled_hole_diameter           : positive_length_measure_with_unit;
-  drilled_hole_diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
-  through_hole                    : BOOLEAN;
-WHERE
-  WR1: through_hole XOR EXISTS(drilled_hole_depth);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-       TYPEOF(counterdrill_angle_tolerance\tolerance_value.lower_bound);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-       TYPEOF(counterdrill_angle_tolerance\tolerance_value.upper_bound);
-  WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
-  WR5: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
-  WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
-  WR7: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
-END_ENTITY;
-
-ENTITY counterdrill_hole_occurrence
-  SUBTYPE OF (shape_aspect_occurrence);
-  SELF\shape_aspect_occurrence.definition : counterdrill_hole_definition;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
-  WR2: SELF\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY counterdrill_hole_occurrence_in_assembly
-  SUBTYPE OF (counterdrill_hole_occurrence);
-  modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
-END_ENTITY;
-
-ENTITY countersink_hole_definition
-  SUBTYPE OF (explicit_composite_hole);
-  countersink_angle               : positive_plane_angle_measure_with_unit;
-  countersink_angle_tolerance     : tolerance_value;
-  countersink_diameter            : positive_length_measure_with_unit;
-  countersink_diameter_tolerance  : OPTIONAL tolerance_value_or_limits_and_fits;
-  drilled_hole_depth              : OPTIONAL positive_length_measure_with_unit;
-  drilled_hole_depth_tolerance    : OPTIONAL tolerance_value;
-  drilled_hole_diameter           : positive_length_measure_with_unit;
-  drilled_hole_diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
-  through_hole                    : BOOLEAN;
-WHERE
-  WR1: through_hole XOR EXISTS(drilled_hole_depth);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-       TYPEOF(countersink_angle_tolerance\tolerance_value.lower_bound);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-       TYPEOF(countersink_angle_tolerance\tolerance_value.upper_bound);
-  WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(countersink_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(countersink_diameter_tolerance\tolerance_value.lower_bound));
-  WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(countersink_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(countersink_diameter_tolerance\tolerance_value.upper_bound));
-  WR6: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.lower_bound);
-  WR7: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(drilled_hole_depth_tolerance\tolerance_value.upper_bound);
-  WR8: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.lower_bound));
-  WR9: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN
-            TYPEOF(drilled_hole_diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(drilled_hole_diameter_tolerance\tolerance_value.upper_bound));
-END_ENTITY;
-
-ENTITY countersink_hole_occurrence
-  SUBTYPE OF (shape_aspect_occurrence);
-  SELF\shape_aspect_occurrence.definition : countersink_hole_definition;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(SELF\shape_aspect.of_shape\property_definition.definition);
-  WR2: SELF\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY countersink_hole_occurrence_in_assembly
-  SUBTYPE OF (countersink_hole_occurrence);
-  modified_components : LIST [1 : ?] OF UNIQUE multi_level_reference_designator;
-END_ENTITY;
-
-ENTITY criterion_report_item_with_number_of_instances
-  SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
-  statistical_value : count_measure;
-  value_type        : summary_report_style_type;
-END_ENTITY;
-
-ENTITY criterion_report_item_with_value
-  SUBTYPE OF (data_equivalence_inspection_criterion_report_item);
-  report_value : measure_with_unit;
-  value_type   : label;
-END_ENTITY;
-
-ENTITY cross_sectional_alternative_shape_element
-  SUBTYPE OF (cross_sectional_part_shape_element);
-INVERSE
-  items : SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
-END_ENTITY;
-
-ENTITY cross_sectional_group_shape_element
-  SUPERTYPE OF (ONEOF(cross_sectional_group_shape_element_with_tubular_cover,
-                      cross_sectional_group_shape_element_with_lacing, twisted_cross_sectional_group_shape_element))
-  SUBTYPE OF (cross_sectional_part_shape_element);
-INVERSE
-  items : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
-END_ENTITY;
-
-ENTITY cross_sectional_group_shape_element_with_lacing
-  SUBTYPE OF (cross_sectional_group_shape_element);
-END_ENTITY;
-
-ENTITY cross_sectional_group_shape_element_with_tubular_cover
-  SUBTYPE OF (cross_sectional_group_shape_element);
-END_ENTITY;
-
-ENTITY cross_sectional_occurrence_shape_element
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY cross_sectional_part_shape_element
-  SUPERTYPE OF (ONEOF(cross_sectional_alternative_shape_element, cross_sectional_group_shape_element))
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY csg_2d_shape_representation
-  SUBTYPE OF (shape_representation);
-  SELF\representation.items : SET [1 : ?] OF csg_2d_shape_select;
-WHERE
-  WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID'] * TYPEOF(it)) = 1) OR
-                      (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION' IN
-                        TYPEOF(it\mapped_item.mapping_source.mapped_representation))))) >=
-       1;
-  WR3: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) AND
-                       (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION') IN
-                             TYPEOF(it\mapped_item.mapping_source.mapped_representation)))))) =
-       0;
-END_ENTITY;
-
-ENTITY csg_primitive_solid_2d
-  SUBTYPE OF (csg_solid_2d);
-  SELF\csg_solid.tree_root_expression : bounded_primitive_2d;
-END_ENTITY;
-
-ENTITY csg_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID'] *
-                              TYPEOF(it)) <>
-                       1))) =
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR4: SIZEOF(QUERY(sr
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA' IN TYPEOF(it)))
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID'] *
-                              TYPEOF(sr\solid_replica.parent_solid)) =
-                       0))) =
-       0;
-  WR5: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) >
-       0;
-END_ENTITY;
-
-ENTITY csg_solid
-  SUBTYPE OF (solid_model);
-  tree_root_expression : csg_select;
-END_ENTITY;
-
-ENTITY csg_solid_2d
-  SUBTYPE OF (csg_solid);
-  SELF\csg_solid.tree_root_expression : csg_select_2d;
-WHERE
-  WR1: valid_csg_2d_primitives(SELF);
-END_ENTITY;
-
-ENTITY cubic_bezier_tessellated_edge
-  SUBTYPE OF (tessellated_edge);
-  SELF\tessellated_edge.line_strip : LIST [4 : ?] OF INTEGER;
-END_ENTITY;
-
-ENTITY cubic_bezier_triangulated_face
-  SUBTYPE OF (tessellated_face);
-  ctriangles : LIST [1 : ?] OF LIST [10 : 10] OF INTEGER;
-WHERE
-  WR1: SIZEOF(SELF\tessellated_face.normals) = 0;
-END_ENTITY;
-
-ENTITY cubic_tessellated_connecting_edge
-  SUBTYPE OF (cubic_bezier_tessellated_edge);
-  smooth : LOGICAL;
-  face1  : cubic_bezier_triangulated_face;
-  face2  : cubic_bezier_triangulated_face;
-END_ENTITY;
-
-ENTITY currency
-  ABSTRACT SUPERTYPE OF ((ONEOF(externally_defined_currency, iso4217_currency)))
-  SUBTYPE OF (context_dependent_unit);
-WHERE
-  WR1: ((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));
-END_ENTITY;
-
-ENTITY currency_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-  SELF\measure_with_unit.unit_component : currency;
-END_ENTITY;
-
-ENTITY current_change_element_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : current_element_assignment_select;
-  items                                : SET [1 : ?] OF change_management_object;
-END_ENTITY;
-
-ENTITY curve
-  SUPERTYPE OF (ONEOF(line, conic, clothoid, circular_involute, pcurve, surface_curve, offset_curve_2d,
-                      offset_curve_3d, curve_replica))
-  SUBTYPE OF (geometric_representation_item);
-END_ENTITY;
-
-ENTITY curve_11
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY curve_based_path
-  SUBTYPE OF (path_node);
-  path_curve : curve;
-END_ENTITY;
-
-ENTITY curve_based_path_with_orientation
-  SUBTYPE OF (kinematic_path_segment);
-  position_curve    : bounded_curve;
-  orientation_curve : bounded_curve;
-WHERE
-  WR1: TYPEOF(position_curve) = TYPEOF(orientation_curve);
-END_ENTITY;
-
-ENTITY curve_based_path_with_orientation_and_parameters
-  SUBTYPE OF (curve_based_path_with_orientation);
-  parameters : path_parameter_representation;
-END_ENTITY;
-
-ENTITY curve_bounded_surface
-  SUBTYPE OF (bounded_surface);
-  basis_surface  : surface;
-  boundaries     : SET [1 : ?] OF boundary_curve;
-  implicit_outer : BOOLEAN;
-WHERE
-  WR1: (NOT implicit_outer) OR
-       (SIZEOF(QUERY(temp
-                     <* boundaries
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) =
-        0);
-  WR2: (NOT (implicit_outer)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface));
-  WR3: SIZEOF(QUERY(temp
-                    <* boundaries
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) <=
-       1;
-  WR4: SIZEOF(QUERY(temp <* boundaries | (temp\composite_curve_on_surface.basis_surface[1] <> SELF.basis_surface))) = 0;
-END_ENTITY;
-
-ENTITY curve_dimension
-  SUBTYPE OF (dimension_curve_directed_callout);
-END_ENTITY;
-
-ENTITY curve_distance_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF curve;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 4] OF point_curve_or_surface_constraint_element;
-  near_points                                   : SET [0 : 4] OF near_point_relationship;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
-        (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
-  WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
-  WR3: SIZEOF(QUERY(q
-                    <* near_points
-                    | NOT (q\representation_item_relationship.relating_representation_item IN
-                           SELF\explicit_constraint.reference_elements))) =
-       0;
-END_ENTITY;
-
-ENTITY curve_length_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF bounded_curve;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-END_ENTITY;
-
-ENTITY curve_replica
-  SUBTYPE OF (curve);
-  parent_curve   : curve;
-  transformation : cartesian_transformation_operator;
-WHERE
-  WR1: transformation.dim = parent_curve.dim;
-  WR2: acyclic_curve_replica(SELF, parent_curve);
-END_ENTITY;
-
-ENTITY curve_segment_set
-  SUBTYPE OF (geometric_representation_item);
-  segments : SET [1 : ?] OF composite_curve_segment;
-END_ENTITY;
-
-ENTITY curve_smoothness_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF curve_segment_set;
-  smoothness                                    : transition_code;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-END_ENTITY;
-
-ENTITY curve_style
-  SUBTYPE OF (founded_item);
-  name         : label;
-  curve_font   : OPTIONAL curve_font_or_scaled_curve_font_select;
-  curve_width  : OPTIONAL size_select;
-  curve_colour : OPTIONAL colour;
-WHERE
-  WR1: EXISTS(curve_font) OR EXISTS(curve_width) OR EXISTS(curve_colour);
-END_ENTITY;
-
-ENTITY curve_style_font
-  SUBTYPE OF (founded_item);
-  name         : label;
-  pattern_list : LIST [1 : ?] OF curve_style_font_pattern;
-END_ENTITY;
-
-ENTITY curve_style_font_and_scaling
-  SUBTYPE OF (founded_item);
-  name               : label;
-  curve_font         : curve_style_font_select;
-  curve_font_scaling : REAL;
-END_ENTITY;
-
-ENTITY curve_style_font_pattern
-  SUBTYPE OF (founded_item);
-  visible_segment_length   : positive_length_measure;
-  invisible_segment_length : positive_length_measure;
-END_ENTITY;
-
-ENTITY curve_style_parameters_representation
-  SUBTYPE OF (representation);
-END_ENTITY;
-
-ENTITY curve_style_parameters_with_ends
-  SUBTYPE OF (curve_style_parameters_representation);
-END_ENTITY;
-
-ENTITY curve_style_rendering;
-  rendering_method     : shading_curve_method;
-  rendering_properties : surface_rendering_properties;
-END_ENTITY;
-
-ENTITY curve_swept_solid_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_AREA_SOLID',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_AREA_SOLID',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR4: SIZEOF(QUERY(scsas
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN
-                               TYPEOF(it))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN
-                            TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR
-                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                            TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) =
-       0;
-END_ENTITY;
-
-ENTITY curve_with_excessive_segments
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_COMPOSITE_CURVE_SELECT']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY curve_with_small_curvature_radius
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY cyclide_segment_solid
-  SUBTYPE OF (geometric_representation_item);
-  position    : axis2_placement_3d;
-  radius1     : positive_length_measure;
-  radius2     : positive_length_measure;
-  cone_angle1 : plane_angle_measure;
-  cone_angle2 : plane_angle_measure;
-  turn_angle  : plane_angle_measure;
-END_ENTITY;
-
-ENTITY cylindrical_11
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY cylindrical_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY cylindrical_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : cylindrical_pair;
-  actual_translation              : length_measure;
-  actual_rotation                 : plane_angle_measure;
-END_ENTITY;
-
-ENTITY cylindrical_pair_with_range
-  SUBTYPE OF (cylindrical_pair);
-  lower_limit_actual_translation : OPTIONAL length_measure;
-  upper_limit_actual_translation : OPTIONAL length_measure;
-  lower_limit_actual_rotation    : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation    : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR
-       (lower_limit_actual_translation < upper_limit_actual_translation);
-  WR2: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR
-       (lower_limit_actual_rotation < upper_limit_actual_rotation);
-END_ENTITY;
-
-ENTITY cylindrical_point
-  SUBTYPE OF (cartesian_point);
-  r     : length_measure;
-  theta : plane_angle_measure;
-  z     : length_measure;
-DERIVE
-  SELF\cartesian_point.coordinates : LIST [3 : 3] OF length_measure := [r * COS(theta),r * SIN(theta),z];
-WHERE
-  WR1: r >= 0.0;
-END_ENTITY;
-
-ENTITY cylindrical_surface
-  SUBTYPE OF (elementary_surface);
-  radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY cylindrical_volume
-  SUBTYPE OF (volume);
-  position : axis2_placement_3d;
-  radius   : positive_length_measure;
-  height   : positive_length_measure;
-END_ENTITY;
-
-ENTITY cylindricity_tolerance
-  SUBTYPE OF (geometric_tolerance);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY data_environment;
-  name        : label;
-  description : text;
-  elements    : SET [1 : ?] OF characterized_property_representation;
-END_ENTITY;
-
-ENTITY data_equivalence_assessment_specification;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY data_equivalence_criteria_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERION' IN TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_criterion
-  SUBTYPE OF (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_definition;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY data_equivalence_definition_relationship;
-  id                                   : identifier;
-  name                                 : label;
-  description                          : OPTIONAL text;
-  relating_data_equivalence_definition : data_equivalence_definition;
-  related_data_equivalence_definition  : data_equivalence_definition;
-END_ENTITY;
-
-ENTITY data_equivalence_definition_representation_relationship;
-  id                  : identifier;
-  name                : label;
-  description         : OPTIONAL text;
-  definition          : data_equivalence_definition;
-  used_representation : used_equivalence_representation_select;
-END_ENTITY;
-
-ENTITY data_equivalence_inspected_element_pair
-  SUBTYPE OF (representation_item);
-  comparing_elements : SET [1 : ?] OF inspected_equivalence_element_select;
-  compared_elements  : SET [1 : ?] OF inspected_equivalence_element_select;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_criterion_report
-  SUBTYPE OF (data_equivalence_inspection_report);
-  statistical_values : SET [1 : ?] OF data_equivalence_inspection_criterion_report_item;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_criterion_report_item
-  ABSTRACT SUPERTYPE OF ((ONEOF(criterion_report_item_with_number_of_instances,
-                                criterion_report_item_with_value)) ANDOR
-                         (ONEOF(a3m_equivalence_criterion_report_item_with_measured_value,
-                                criterion_report_item_with_number_of_instances, criterion_report_item_with_value)))
-  SUBTYPE OF (representation_item);
-INVERSE
-  criterion_report : data_equivalence_inspection_criterion_report FOR statistical_values;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_instance_report
-  SUBTYPE OF (data_equivalence_inspection_report);
-  inspected_instances : LIST [1 : ?] OF data_equivalence_inspection_instance_report_item;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_instance_report_item
-  SUBTYPE OF (representation_item);
-  inspected_element : data_equivalence_inspected_element_pair;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_report
-  ABSTRACT SUPERTYPE OF (ONEOF(data_equivalence_inspection_criterion_report,
-                               data_equivalence_inspection_instance_report))
-  SUBTYPE OF (representation_item);
-  inspection_result : data_equivalence_inspection_result;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_requirement
-  SUBTYPE OF (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_result
-  SUBTYPE OF (representation_item);
-  criterion_inspected : data_equivalence_criterion;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_result_representation
-  SUBTYPE OF (representation);
-  criteria_inspected : data_equivalence_criteria_representation;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_RESULT' IN
-                      TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY data_equivalence_inspection_result_with_judgement
-  SUBTYPE OF (data_equivalence_inspection_result);
-  judgement : BOOLEAN;
-END_ENTITY;
-
-ENTITY data_equivalence_report_request;
-  id                          : identifier;
-  name                        : label;
-  description                 : OPTIONAL text;
-  criterion_of_report_request : data_equivalence_criterion;
-END_ENTITY;
-
-ENTITY data_quality_assessment_measurement_association;
-  assessment_specification : data_quality_criterion_assessment_association;
-  measurement_requirement  : data_quality_criterion_measurement_association;
-WHERE
-  WR1: SELF.measurement_requirement\representation_item_relationship.relating_representation_item :=:
-       SELF.assessment_specification.criterion;
-END_ENTITY;
-
-ENTITY data_quality_assessment_specification;
-  description : text;
-END_ENTITY;
-
-ENTITY data_quality_criteria_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION' IN TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY data_quality_criterion
-  SUBTYPE OF (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_criterion_assessment_association;
-  criterion                : data_quality_criterion;
-  assessment_specification : data_quality_assessment_specification;
-END_ENTITY;
-
-ENTITY data_quality_criterion_measurement_association
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : data_quality_criterion;
-  SELF\representation_item_relationship.related_representation_item  : data_quality_measurement_requirement;
-END_ENTITY;
-
-ENTITY data_quality_definition;
-  description : text;
-END_ENTITY;
-
-ENTITY data_quality_definition_relationship;
-  description                      : text;
-  relating_data_quality_definition : data_quality_definition;
-  related_data_quality_definition  : data_quality_definition;
-END_ENTITY;
-
-ENTITY data_quality_definition_representation_relationship;
-  description         : text;
-  definition          : data_quality_definition;
-  used_representation : used_quality_representation_select;
-END_ENTITY;
-
-ENTITY data_quality_inspection_criterion_report
-  SUBTYPE OF (data_quality_inspection_report);
-  statistical_values : SET [1 : 2] OF data_quality_inspection_criterion_report_item;
-WHERE
-  WR1: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUMMARY_REPORT_REQUEST' IN TYPEOF(i1))) >
-       0;
-  WR2: (SIZEOF(SELF.statistical_values) = 1) OR
-       (SELF.statistical_values[1].value_type <> SELF.statistical_values[2].value_type);
-END_ENTITY;
-
-ENTITY data_quality_inspection_criterion_report_item
-  SUBTYPE OF (representation_item);
-  statistical_value : INTEGER;
-  value_type        : statistical_value_type;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_instance_report
-  SUBTYPE OF (data_quality_inspection_report);
-  inspected_instances : LIST [1 : ?] OF data_quality_inspection_instance_report_item;
-WHERE
-  WR1: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DETAILED_REPORT_REQUEST' IN TYPEOF(i1))) >
-       0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_instance_report_item
-  SUBTYPE OF (representation_item);
-  inspected_elements : SET [1 : ?] OF inspected_element_select;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_report
-  SUPERTYPE OF (ONEOF(data_quality_inspection_criterion_report, data_quality_inspection_instance_report))
-  SUBTYPE OF (representation_item);
-  inspection_result : data_quality_inspection_result;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_result
-  SUBTYPE OF (representation_item);
-  criterion_inspected : data_quality_criterion;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERIA_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_result_representation
-  SUBTYPE OF (representation);
-  criteria_inspected : data_quality_criteria_representation;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q))) >
-       0;
-  WR2: SIZEOF(inspected_product_definition(SELF)) > 0;
-END_ENTITY;
-
-ENTITY data_quality_inspection_result_with_judgement
-  SUBTYPE OF (data_quality_inspection_result);
-  judgement : BOOLEAN;
-END_ENTITY;
-
-ENTITY data_quality_measurement_requirement
-  SUBTYPE OF (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* bag_to_set(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
-                      TYPEOF(q))) =
-       0;
-END_ENTITY;
-
-ENTITY data_quality_report_measurement_association
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : data_quality_measurement_requirement;
-  SELF\representation_item_relationship.related_representation_item  : data_quality_inspection_report;
-END_ENTITY;
-
-ENTITY data_quality_report_request
-  ABSTRACT SUPERTYPE OF (ONEOF(summary_report_request, detailed_report_request));
-  description                 : text;
-  criterion_of_report_request : data_quality_criterion;
-END_ENTITY;
-
-ENTITY date
-  SUPERTYPE OF (ONEOF(calendar_date, ordinal_date, week_of_year_and_day_date, year_month));
-  year_component : year_number;
-END_ENTITY;
-
-ENTITY date_and_time;
-  date_component : date;
-  time_component : local_time;
-END_ENTITY;
-
-ENTITY date_and_time_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_date_and_time : date_and_time;
-  role                   : date_time_role;
-END_ENTITY;
-
-ENTITY date_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_date : date;
-  role          : date_role;
-END_ENTITY;
-
-ENTITY date_representation_item
-  SUBTYPE OF (representation_item, date);
-END_ENTITY;
-
-ENTITY date_role;
-  name : label;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY date_time_representation_item
-  SUBTYPE OF (representation_item, date_and_time);
-END_ENTITY;
-
-ENTITY date_time_role;
-  name : label;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY dated_effectivity
-  SUBTYPE OF (effectivity);
-  effectivity_end_date   : OPTIONAL date_time_or_event_occurrence;
-  effectivity_start_date : OPTIONAL date_time_or_event_occurrence;
-WHERE
-  WR1: EXISTS(effectivity_end_date) OR EXISTS(effectivity_start_date);
-END_ENTITY;
-
-ENTITY datum
-  SUBTYPE OF (shape_aspect);
-  identification : identifier;
-INVERSE
-  established_by_relationships : SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect;
-UNIQUE
-  UR1: identification, SELF\shape_aspect.of_shape;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR
-       ((SIZEOF(QUERY(x
-                      <* SELF\datum.established_by_relationships
-                      | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET'] *
-                               TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)) =
-                        1)) >=
-         1));
-  WR2: SIZEOF(QUERY(x
-                    <* SELF\datum.established_by_relationships
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE' IN
-                       TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) <=
-       1;
-  WR3: SELF\shape_aspect.product_definitional = false;
-  WR4: SELF\shape_aspect.name = '';
-END_ENTITY;
-
-ENTITY datum_feature
-  SUPERTYPE OF (ONEOF(dimensional_location_with_datum_feature, dimensional_size_with_datum_feature))
-  SUBTYPE OF (shape_aspect);
-INVERSE
-  feature_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
-WHERE
-  WR1: SIZEOF(QUERY(sar
-                    <* SELF\datum_feature.feature_basis_relationship
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
-                       TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) =
-       1;
-  WR2: SELF\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY datum_feature_callout
-  SUBTYPE OF (draughting_callout);
-END_ENTITY;
-
-ENTITY datum_reference;
-  precedence       : INTEGER;
-  referenced_datum : datum;
-WHERE
-  WR1: precedence > 0;
-END_ENTITY;
-
-ENTITY datum_reference_compartment
-  SUBTYPE OF (general_datum_reference);
-INVERSE
-  owner : datum_system FOR constituents;
-END_ENTITY;
-
-ENTITY datum_reference_element
-  SUBTYPE OF (general_datum_reference);
-DERIVE
-  owner : general_datum_reference := sts_get_general_datum_reference(SELF);
-WHERE
-  WR1: SELF <> owner;
-  WR2: EXISTS(owner);
-  WR3: SELF\shape_aspect.of_shape = owner\shape_aspect.of_shape;
-END_ENTITY;
-
-ENTITY datum_reference_modifier_with_value;
-  modifier_type  : datum_reference_modifier_type;
-  modifier_value : length_measure_with_unit;
-WHERE
-  WR1: modifier_value\measure_with_unit.value_component > 0.0;
-END_ENTITY;
-
-ENTITY datum_system
-  SUBTYPE OF (shape_aspect);
-  constituents : LIST [1 : 3] OF UNIQUE datum_reference_compartment;
-UNIQUE
-  UR1: SELF\shape_aspect.of_shape, SELF\shape_aspect.name;
-WHERE
-  WR1: SELF\shape_aspect.product_definitional = false;
-END_ENTITY;
-
-ENTITY datum_target
-  SUBTYPE OF (shape_aspect);
-  target_id : identifier;
-INVERSE
-  target_basis_relationship : SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
-WHERE
-  WR1: SIZEOF(QUERY(sar
-                    <* SELF\datum_target.target_basis_relationship
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN
-                       TYPEOF(sar\shape_aspect_relationship.related_shape_aspect)))) =
-       1;
-  WR2: SELF\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY datum_target_callout
-  SUBTYPE OF (draughting_callout);
-END_ENTITY;
-
-ENTITY default_model_geometric_view
-  SUBTYPE OF (model_geometric_view, shape_aspect);
-DERIVE
-  SELF\shape_aspect.product_definitional : LOGICAL := false;
-UNIQUE
-  UR1: of_shape;
-WHERE
-  WR1: SELF\characterized_object.name = SELF\shape_aspect.name;
-  WR2: NOT EXISTS(SELF\characterized_object.description);
-  WR3: NOT EXISTS(SELF\shape_aspect.description);
-END_ENTITY;
-
-ENTITY default_tolerance_table
-  SUBTYPE OF (representation);
-WHERE
-  WR1: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN
-                           TYPEOF(i)))) =
-       0;
-  WR2: (SIZEOF(QUERY(rr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
-                     | rr.name < 'general tolerance definition')) =
-        0) AND
-       (SIZEOF(QUERY(rr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
-                     | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance'))) =
-        0) AND
-       (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) = 0);
-END_ENTITY;
-
-ENTITY default_tolerance_table_cell
-  SUBTYPE OF (compound_representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(x
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x))) =
-       1;
-  WR2: default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element);
-  WR3: default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element);
-  WR4: default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element);
-  WR5: default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element);
-END_ENTITY;
-
-ENTITY defined_character_glyph
-  SUBTYPE OF (geometric_representation_item);
-  definition : defined_glyph_select;
-  placement  : axis2_placement;
-END_ENTITY;
-
-ENTITY defined_constraint
-  ABSTRACT SUPERTYPE OF (equal_parameter_constraint)
-  SUBTYPE OF (explicit_constraint);
-END_ENTITY;
-
-ENTITY defined_function
-  ABSTRACT SUPERTYPE OF ((ONEOF(numeric_defined_function, string_defined_function, boolean_defined_function)) ANDOR
-                         sql_mappable_defined_function);
-END_ENTITY;
-
-ENTITY defined_symbol
-  SUBTYPE OF (geometric_representation_item);
-  definition : defined_symbol_select;
-  target     : symbol_target;
-END_ENTITY;
-
-ENTITY definite_integral_expression
-  SUBTYPE OF (quantifier_expression);
-  lower_limit_neg_infinity : BOOLEAN;
-  upper_limit_pos_infinity : BOOLEAN;
-DERIVE
-  integrand                            : generic_expression                      := SELF\multiple_arity_generic_expression.operands[1];
-  variable_of_integration              : maths_variable                          := SELF\multiple_arity_generic_expression.operands[2];
-  SELF\quantifier_expression.variables : LIST [1 : 1] OF UNIQUE generic_variable := [variable_of_integration];
-WHERE
-  WR1: has_values_space(integrand);
-  WR2: space_is_continuum(values_space_of(integrand));
-  WR3: definite_integral_expr_check(SELF\multiple_arity_generic_expression.operands, lower_limit_neg_infinity,
-                                    upper_limit_pos_infinity);
-END_ENTITY;
-
-ENTITY definite_integral_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  variable_of_integration               : input_selector;
-  lower_limit_neg_infinity              : BOOLEAN;
-  upper_limit_pos_infinity              : BOOLEAN;
-DERIVE
-  integrand : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: space_is_continuum(integrand.range);
-  WR2: definite_integral_check(integrand.domain, variable_of_integration, lower_limit_neg_infinity,
-                               upper_limit_pos_infinity);
-END_ENTITY;
-
-ENTITY definitional_product_definition_usage
-  SUBTYPE OF (product_definition_usage);
-UNIQUE
-  UR1: relating_product_definition, related_product_definition;
-END_ENTITY;
-
-ENTITY definitional_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN
-       TYPEOF(SELF\representation.context_of_items);
-END_ENTITY;
-
-ENTITY definitional_representation_relationship
-  SUBTYPE OF (representation_relationship);
-WHERE
-  WR1: acyclic_representation_relationship(SELF, [SELF\representation_relationship.rep_2],
-                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION');
-END_ENTITY;
-
-ENTITY definitional_representation_relationship_with_same_context
-  SUBTYPE OF (definitional_representation_relationship);
-WHERE
-  WR1: SELF\representation_relationship.rep_1.context_of_items :=:
-       SELF\representation_relationship.rep_2.context_of_items;
-END_ENTITY;
-
-ENTITY degenerate_pcurve
-  SUBTYPE OF (point);
-  basis_surface      : surface;
-  reference_to_curve : definitional_representation;
-WHERE
-  WR1: SIZEOF(reference_to_curve\representation.items) = 1;
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
-  WR3: reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY degenerate_toroidal_surface
-  SUBTYPE OF (toroidal_surface);
-  select_outer : BOOLEAN;
-WHERE
-  WR1: major_radius < minor_radius;
-END_ENTITY;
-
-ENTITY delete_element
-  SUBTYPE OF (change_element);
-END_ENTITY;
-
-ENTITY dependent_variable_definition
-  SUBTYPE OF (unary_generic_expression);
-  name        : label;
-  description : text;
-END_ENTITY;
-
-ENTITY derived_shape_aspect
-  SUPERTYPE OF (ONEOF(apex, centre_of_symmetry, geometric_alignment, geometric_contact, geometric_intersection,
-                      parallel_offset, perpendicular_to, extension, tangent))
-  SUBTYPE OF (shape_aspect);
-INVERSE
-  deriving_relationships : SET [1:?] OF shape_aspect_deriving_relationship FOR relating_shape_aspect;
-END_ENTITY;
-
-ENTITY derived_unit
-  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));
-  elements : SET [1 : ?] OF derived_unit_element;
-DERIVE
-  name : label := get_name_value(SELF);
-WHERE
-  WR1: (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0));
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY derived_unit_element;
-  unit     : named_unit;
-  exponent : REAL;
-END_ENTITY;
-
-ENTITY description_attribute;
-  attribute_value : text;
-  described_item  : description_attribute_select;
-END_ENTITY;
-
-ENTITY description_text;
-  description : text;
-END_ENTITY;
-
-ENTITY description_text_assignment
-  ABSTRACT SUPERTYPE;
-  description : description_text;
-END_ENTITY;
-
-ENTITY description_text_assignment_relationship;
-  id            : OPTIONAL identifier;
-  description   : OPTIONAL text;
-  relating      : description_text_assignment;
-  related       : description_text_assignment;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_description_text_assignment_relationship(SELF, [related],
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_TEXT_ASSIGNMENT_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY descriptive_representation_item
-  SUPERTYPE OF (ONEOF(tagged_text_item, uniform_resource_identifier))
-  SUBTYPE OF (representation_item);
-  description : text;
-END_ENTITY;
-
-ENTITY design_context
-  SUBTYPE OF (product_definition_context);
-WHERE
-  WR1: SELF.life_cycle_stage = 'design';
-END_ENTITY;
-
-ENTITY design_make_from_relationship
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY detailed_equivalence_report_request
-  SUBTYPE OF (data_equivalence_report_request);
-  report_request_type : detailed_report_style_type;
-  report_sequence     : preferred_report_ordering;
-END_ENTITY;
-
-ENTITY detailed_equivalence_report_request_with_number_of_instances
-  SUBTYPE OF (detailed_equivalence_report_request);
-  number_of_instances : INTEGER;
-DERIVE
-  SELF\detailed_equivalence_report_request.report_request_type : detailed_report_style_type := inspected_element;
-END_ENTITY;
-
-ENTITY detailed_report_request
-  SUBTYPE OF (data_quality_report_request);
-  detailed_report_request_type : detailed_report_type;
-  report_sequence              : preferred_ordering;
-END_ENTITY;
-
-ENTITY detailed_report_request_with_number_of_data
-  SUBTYPE OF (detailed_report_request);
-  number_of_data : INTEGER;
-DERIVE
-  SELF\detailed_report_request.detailed_report_request_type : detailed_report_type := measured_element;
-END_ENTITY;
-
-ENTITY diameter_dimension
-  SUBTYPE OF (dimension_curve_directed_callout);
-END_ENTITY;
-
-ENTITY dielectric_constant_measure_with_unit
-  SUBTYPE OF (ratio_measure_with_unit);
-END_ENTITY;
-
-ENTITY different_angle_of_assembly_constraint
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_plane_angle_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY different_assembly_centroid
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_cartesian_point];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY different_assembly_centroid_using_notional_solid
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_cartesian_point];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY different_assembly_constraint_type
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
-END_ENTITY;
-
-ENTITY different_assembly_volume
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_volume_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_volume_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY different_bounding_box
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [3 : 3] OF a3ms_element_type_name             := [etns_manifold_solid_brep,
-                                                                                                                    etns_shell_based_surface_model,
-                                                                                                                    etns_shell_based_wireframe_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_two_cartesian_points];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
-END_ENTITY;
-
-ENTITY different_centroid
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [3 : 3] OF a3ms_element_type_name             := [etns_manifold_solid_brep,
-                                                                                                                    etns_shell_based_surface_model,
-                                                                                                                    etns_shell_based_wireframe_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_cartesian_point];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
-END_ENTITY;
-
-ENTITY different_component_identification_via_multi_level_reference
-  SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_multi_level_reference_designator];
-END_ENTITY;
-
-ENTITY different_component_shape
-  SUBTYPE OF (a3m_equivalence_criterion_of_component_property_difference);
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ma_element_type_name             := [etna_shape_representation];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ma_element_type_name             := [etna_shape_representation];
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_a3ms_inspected_equivalence_element_select];
-INVERSE
-  shape_criteria : SET [1:?] OF a3ma_assembly_and_shape_criteria_relationship FOR relating_representation_item;
-END_ENTITY;
-
-ENTITY different_component_type
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_assembly_component_usage];
-END_ENTITY;
-
-ENTITY different_curve_length
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_edge_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_length_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
-END_ENTITY;
-
-ENTITY different_length_of_assembly_constraint
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_binary_assembly_constraint];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY different_number_of_closed_shell
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_manifold_solid_brep];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_count_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY different_number_of_components
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_assembly_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_count_measure];
-END_ENTITY;
-
-ENTITY different_number_of_geometric_elements
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [2 : 2] OF a3ms_element_type_name             := [etns_manifold_solid_brep,
-                                                                                                                    etns_shell_based_surface_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_three_count_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY different_number_of_geometric_elements_wireframe_model
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_shell_based_wireframe_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_two_count_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY different_number_of_topological_elements
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [2 : 2] OF a3ms_element_type_name             := [etns_manifold_solid_brep,
-                                                                                                                    etns_shell_based_surface_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_five_count_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY different_number_of_topological_elements_wireframe_model
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_shell_based_wireframe_model];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_four_count_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY different_placement_of_component
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_assembly_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_length_measure_and_context_dependent_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_context_dependent_shape_representation];
-INVERSE
-  assessment_threshold_2 : a3ma_equivalence_criterion_assessment_threshold_relationship FOR relating_representation_item;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ma_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        mdna_length_measure);
-  WR2: (a3ma_get_value_limit_type(SELF.assessment_threshold_2\representation_item_relationship.related_representation_item) =
-        mdna_context_dependent_measure) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_UNIT' IN
-        TYPEOF(SELF.assessment_threshold_2\representation_item_relationship.related_representation_item\measure_with_unit.unit_component));
-END_ENTITY;
-
-ENTITY different_surface_area
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_area_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_area_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_area_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
-END_ENTITY;
-
-ENTITY different_surface_normal
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_plane_angle_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
-                                                                                                                    ddns_point_on_surface];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_plane_angle_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
-        'discretization_distance_tolerance');
-END_ENTITY;
-
-ENTITY different_volume
-  SUBTYPE OF (a3m_equivalence_criterion_of_representative_shape_property_value,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_manifold_solid_brep];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_volume_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_volume_measure];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_volume_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name = 'approximation_tolerance');
-END_ENTITY;
-
-ENTITY dimension_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
-       (SIZEOF(QUERY(dce_1
-                     <* SELF\draughting_callout.contents
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(dce_1))))) =
-        0);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
-       (SIZEOF(QUERY(dce_1
-                     <* SELF\draughting_callout.contents
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(dce_1))))) =
-        0);
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) XOR
-       (SIZEOF(QUERY(dce_1
-                     <* SELF\draughting_callout.contents
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(dce_1))))) =
-        0);
-END_ENTITY;
-
-ENTITY dimension_callout_component_relationship
-  SUBTYPE OF (draughting_callout_relationship);
-WHERE
-  WR1: SELF.name IN ['prefix','suffix'];
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' IN
-       TYPEOF(SELF.relating_draughting_callout);
-  WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) =
-       0;
-  WR4: SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents =
-       SELF.related_draughting_callout.contents;
-  WR5: ((SELF.name = 'prefix') AND
-        (SIZEOF(QUERY(ato
-                      <* QUERY(con
-                               <* SELF.related_draughting_callout.contents
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                  TYPEOF(con)))
-                      | NOT (ato.name = 'prefix text'))) =
-         0));
-  WR6: ((SELF.name = 'suffix') AND
-        (SIZEOF(QUERY(ato
-                      <* QUERY(con
-                               <* SELF.related_draughting_callout.contents
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                  TYPEOF(con)))
-                      | NOT (ato.name = 'suffix text'))) =
-         0));
-END_ENTITY;
-
-ENTITY dimension_callout_relationship
-  SUBTYPE OF (draughting_callout_relationship);
-WHERE
-  WR1: SELF.name IN ['primary','secondary'];
-  WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) >=
-       1;
-  WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT']) =
-       0;
-  WR4: SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents =
-       SELF.related_draughting_callout.contents;
-END_ENTITY;
-
-ENTITY dimension_curve
-  SUBTYPE OF (annotation_curve_occurrence);
-WHERE
-  WR1: (SIZEOF(QUERY(dct
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
-                         TYPEOF(dct))))) <=
-        2);
-  WR2: SIZEOF(QUERY(dcdc
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN
-                       TYPEOF(dcdc)))) >=
-       1;
-  WR3: (SIZEOF(QUERY(dct1
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
-                         TYPEOF(dct1)) AND
-                        (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin)))) <=
-        1) AND
-       (SIZEOF(QUERY(dct2
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TERMINATOR_SYMBOL.ANNOTATED_CURVE')
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_TERMINATOR' IN
-                         TYPEOF(dct2)) AND
-                        (dct2\dimension_curve_terminator.role = dimension_extent_usage.target)))) <=
-        1);
-END_ENTITY;
-
-ENTITY dimension_curve_directed_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(QUERY(d_c
-                    <* SELF\draughting_callout.contents
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c)))) <=
-       2;
-  WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
-END_ENTITY;
-
-ENTITY dimension_curve_terminator
-  SUBTYPE OF (terminator_symbol);
-  role : dimension_extent_usage;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN
-       TYPEOF(SELF\terminator_symbol.annotated_curve);
-END_ENTITY;
-
-ENTITY dimension_curve_terminator_to_projection_curve_associativity
-  SUBTYPE OF (annotation_occurrence_associativity);
-  SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator;
-  SELF\annotation_occurrence_relationship.related_annotation_occurrence  : projection_curve;
-END_ENTITY;
-
-ENTITY dimension_pair
-  SUBTYPE OF (draughting_callout_relationship);
-WHERE
-  WR1: SELF.name IN ['chained','parallel'];
-  WR2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) =
-       1;
-  WR3: SIZEOF(TYPEOF(SELF.related_draughting_callout) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION']) =
-       1;
-END_ENTITY;
-
-ENTITY dimension_related_tolerance_zone_element;
-  related_dimension : dimensional_location;
-  related_element   : tolerance_zone_definition;
-END_ENTITY;
-
-ENTITY dimension_text_associativity
-  SUBTYPE OF (text_literal, mapped_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' IN
-        TYPEOF(SELF\mapped_item.mapping_source.mapped_representation));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN
-        TYPEOF(SELF\mapped_item.mapping_target));
-  WR3: SIZEOF(QUERY(ato
-                    <* QUERY(si
-                             <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                TYPEOF(si)))
-                    | NOT (SIZEOF(QUERY(dc
-                                        <* USEDIN(ato,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN
-                                           TYPEOF(dc))) *
-                                  [SELF\mapped_item.mapping_target]) =
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY dimensional_characteristic_representation;
-  dimension      : dimensional_characteristic;
-  representation : shape_dimension_representation;
-END_ENTITY;
-
-ENTITY dimensional_exponents;
-  length_exponent                    : REAL;
-  mass_exponent                      : REAL;
-  time_exponent                      : REAL;
-  electric_current_exponent          : REAL;
-  thermodynamic_temperature_exponent : REAL;
-  amount_of_substance_exponent       : REAL;
-  luminous_intensity_exponent        : REAL;
-END_ENTITY;
-
-ENTITY dimensional_location
-  SUPERTYPE OF (ONEOF(angular_location, dimensional_location_with_path))
-  SUBTYPE OF (shape_aspect_relationship);
-WHERE
-  WR1: SELF\shape_aspect_relationship.relating_shape_aspect :<>: SELF\shape_aspect_relationship.related_shape_aspect;
-  WR2: SELF\shape_aspect_relationship.relating_shape_aspect.of_shape :=:
-       SELF\shape_aspect_relationship.related_shape_aspect.of_shape;
-END_ENTITY;
-
-ENTITY dimensional_location_with_datum_feature
-  SUBTYPE OF (datum_feature, dimensional_location);
-END_ENTITY;
-
-ENTITY dimensional_location_with_path
-  SUBTYPE OF (dimensional_location);
-  path : shape_aspect;
-END_ENTITY;
-
-ENTITY dimensional_size
-  SUPERTYPE OF (ONEOF(angular_size, dimensional_size_with_path));
-  applies_to : shape_aspect;
-  name       : label;
-DERIVE
-  id : identifier := get_id_value(SELF);
-UNIQUE
-  UR1: id, applies_to;
-WHERE
-  WR1: applies_to.product_definitional = true;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY dimensional_size_with_datum_feature
-  SUBTYPE OF (datum_feature, dimensional_size);
-WHERE
-  WR1: SELF\dimensional_size.applies_to :=: SELF;
-END_ENTITY;
-
-ENTITY dimensional_size_with_path
-  SUBTYPE OF (dimensional_size);
-  path : shape_aspect;
-END_ENTITY;
-
-ENTITY directed_action
-  SUBTYPE OF (executed_action);
-  directive : action_directive;
-END_ENTITY;
-
-ENTITY directed_action_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_directed_action : directed_action;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY directed_angle
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pdr
-                    <* get_shape_aspect_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)))) =
-       1;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_shape_aspect_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(pdr.used_representation.items) = 1))) =
-       1;
-  WR4: SELF.description IN ['punch direction','profile normal','surface normal'];
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_shape_aspect_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'angle') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-END_ENTITY;
-
-ENTITY directed_dimensional_location
-  SUBTYPE OF (dimensional_location);
-END_ENTITY;
-
-ENTITY directed_tolerance_zone
-  SUBTYPE OF (tolerance_zone_with_datum);
-  direction : directed_tolerance_zone_type;
-END_ENTITY;
-
-ENTITY direction
-  SUBTYPE OF (geometric_representation_item);
-  direction_ratios : LIST [2 : 3] OF REAL;
-WHERE
-  WR1: SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0;
-END_ENTITY;
-
-ENTITY direction_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) = 1);
-  WR2: (SIZEOF(QUERY(it
-                     <* SELF.items
-                     | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(it))))) =
-        0);
-END_ENTITY;
-
-ENTITY disallowed_assembly_relationship_usage
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE']);
-END_ENTITY;
-
-ENTITY disconnected_face_set
-  SUBTYPE OF (erroneous_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY discontinuous_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuous_curve, g2_discontinuous_curve, g1_discontinuous_surface,
-                               g2_discontinuous_surface))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY div_expression
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY document;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-  kind        : document_type;
-INVERSE
-  representation_types : SET [0:?] OF document_representation_type FOR represented_document;
-END_ENTITY;
-
-ENTITY document_file
-  SUBTYPE OF (document, characterized_object);
-WHERE
-  WR1: SELF\characterized_object.name = '';
-  WR2: NOT EXISTS(SELF\characterized_object.description);
-  WR3: SIZEOF(QUERY(drt <* SELF\document.representation_types | drt.name IN ['digital','physical'])) = 1;
-END_ENTITY;
-
-ENTITY document_identifier
-  SUBTYPE OF (group);
-UNIQUE
-  UR1: SELF\group.name, SELF\group.description;
-END_ENTITY;
-
-ENTITY document_identifier_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : document_identifier;
-  items                                : SET [1 : ?] OF document_identifier_assigned_item;
-END_ENTITY;
-
-ENTITY document_product_association;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_document : document;
-  related_product   : product_or_formation_or_definition;
-END_ENTITY;
-
-ENTITY document_product_equivalence
-  SUBTYPE OF (document_product_association);
-WHERE
-  WR1: SELF\document_product_association.name = 'equivalence';
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                          | prpc.name = 'document')) =
-             1));
-  WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                          | prpc.name = 'document')) =
-             1));
-  WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                          | prpc.name = 'document')) =
-             1));
-END_ENTITY;
-
-ENTITY document_reference
-  ABSTRACT SUPERTYPE;
-  assigned_document : document;
-  source            : label;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY document_relationship;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_document : document;
-  related_document  : document;
-END_ENTITY;
-
-ENTITY document_representation_type;
-  name                 : label;
-  represented_document : document;
-END_ENTITY;
-
-ENTITY document_type;
-  product_data_type : label;
-END_ENTITY;
-
-ENTITY document_usage_constraint;
-  source                : document;
-  subject_element       : label;
-  subject_element_value : text;
-END_ENTITY;
-
-ENTITY document_usage_constraint_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_document_usage : document_usage_constraint;
-  role                    : document_usage_role;
-END_ENTITY;
-
-ENTITY document_usage_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY dose_equivalent_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOSE_EQUIVALENT_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY dose_equivalent_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.sievert);
-END_ENTITY;
-
-ENTITY double_offset_shelled_solid
-  SUBTYPE OF (shelled_solid);
-  thickness2 : length_measure;
-WHERE
-  WR1: thickness2 <> 0;
-  WR2: SELF\shelled_solid.thickness <> thickness2;
-END_ENTITY;
-
-ENTITY draped_defined_transformation
-  SUBTYPE OF (transformation_with_derived_angle);
-END_ENTITY;
-
-ENTITY draped_orientation_angle
-  SUBTYPE OF (ply_orientation_angle);
-END_ENTITY;
-
-ENTITY draughting_annotation_occurrence
-  SUBTYPE OF (annotation_occurrence);
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(QUERY(sty
-                     <* SELF.styles
-                     | NOT ((SIZEOF(sty.styles) = 1) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                             TYPEOF(sty.styles[1]))))) =
-        0);
-  WR2: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(QUERY(sty
-                     <* SELF.styles
-                     | NOT ((SIZEOF(sty.styles) = 1) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
-                             TYPEOF(sty.styles[1]))))) =
-        0);
-  WR3: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(QUERY(bound
-                     <* SELF.item\annotation_fill_area.boundaries
-                     | NOT (SIZEOF(QUERY(si
-                                         <* USEDIN(bound,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
-                                            TYPEOF(si)))) >
-                            0))) =
-        0);
-  WR4: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(QUERY(sty
-                     <* SELF.styles
-                     | NOT ((SIZEOF(sty.styles) = 1) AND
-                            (SIZEOF(TYPEOF(sty.styles[1]) *
-                                    ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_STYLE',
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NULL_STYLE']) =
-                             1)))) =
-        0);
-  WR5: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item)))) OR
-       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SYMBOL_REPRESENTATION',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION'] *
-               TYPEOF(SELF.item\mapped_item.mapping_source.mapped_representation)) =
-        1);
-  WR6: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(QUERY(sty
-                     <* SELF.styles
-                     | NOT ((SIZEOF(sty.styles) = 1) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE' IN
-                             TYPEOF(sty.styles[1]))))) =
-        0);
-  WR7: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF))) OR
-       (SIZEOF(TYPEOF(SELF.item) *
-               ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL']) =
-        1);
-  WR8: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
-       (SIZEOF(QUERY(tl
-                     <* SELF.item\composite_text.collected_text
-                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(tl)))) =
-        0);
-  WR9: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(SELF.item)))) OR
-       (SELF.item\text_literal.alignment IN ['baseline left','baseline centre','baseline right']);
-  WR10: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
-        (SIZEOF(QUERY(tl
-                      <* QUERY(text
-                               <* SELF.item\composite_text.collected_text
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(text)))
-                      | NOT (tl\text_literal.alignment IN ['baseline left','baseline centre','baseline right']))) =
-         0);
-  WR11: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR
-            check_text_alignment(SELF.item);
-  WR12: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR
-            check_text_font(SELF.item);
-  WR13: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(SELF.item)))) OR
-        (SIZEOF(QUERY(tl
-                      <* QUERY(text
-                               <* SELF.item\composite_text.collected_text
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' IN TYPEOF(text)))
-                      | NOT (SIZEOF(TYPEOF(tl) *
-                                    ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL_WITH_BLANKING_BOX',
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) =
-                             0))) =
-         0);
-  WR14: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
-                                             TYPEOF(si)))) >
-                             0))) =
-         0);
-  WR15: (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) AND
-              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN
-                                             TYPEOF(si)))) >
-                             0))) =
-         0);
-  WR16: SIZEOF(QUERY(cs
-                     <* QUERY(sty
-                              <* SELF.styles
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                 TYPEOF(sty.styles[1])))
-                     | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                             TYPEOF(cs.styles[1]\curve_style.curve_width)) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                             TYPEOF(cs.styles[1]\curve_style.curve_width\measure_with_unit.value_component))))) =
-        0;
-  WR17: SIZEOF(QUERY(fas
-                     <* QUERY(sty
-                              <* SELF.styles
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
-                                 TYPEOF(sty.styles[1])))
-                     | NOT ((SIZEOF(QUERY(fs
-                                          <* fas.styles[1]\fill_area_style.fill_styles
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_TILES' IN
-                                             TYPEOF(fs)))) <=
-                             1) AND
-                            (SIZEOF(QUERY(fst
-                                          <* QUERY(fs
-                                                   <* fas.styles[1]\fill_area_style.fill_styles
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_TILES' IN
-                                                      TYPEOF(fs)))
-                                          | NOT (SIZEOF(fst\fill_area_style_tiles.tiles) = 1))) =
-                             0)))) =
-        0;
-  WR18: SIZEOF(QUERY(fas
-                     <* QUERY(sty
-                              <* SELF.styles
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE' IN
-                                 TYPEOF(sty.styles[1])))
-                     | NOT (SIZEOF(QUERY(fsh
-                                         <* QUERY(fs
-                                                  <* fas.styles[1]\fill_area_style.fill_styles
-                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR19: SIZEOF(QUERY(ts
-                     <* QUERY(sty
-                              <* SELF.styles
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE' IN
-                                 TYPEOF(sty.styles[1])))
-                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN
-                            TYPEOF(ts.styles[1])))) =
-        0;
-  WR20: SIZEOF(QUERY(ts
-                     <* QUERY(sty
-                              <* SELF.styles
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN
-                                 TYPEOF(sty.styles[1])))
-                     | NOT (SIZEOF(ts.styles[1]\text_style_with_box_characteristics.characteristics) = 4))) =
-        0;
-END_ENTITY;
-
-ENTITY draughting_callout
-  SUBTYPE OF (geometric_representation_item);
-  contents : SET [1 : ?] OF draughting_callout_element;
-WHERE
-  WR1: (SIZEOF(QUERY(l_1
-                     <* SELF\draughting_callout.contents
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) =
-        0) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
-       (SIZEOF(QUERY(l_1
-                     <* SELF\draughting_callout.contents
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) =
-        0) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
-       (SIZEOF(QUERY(l_1
-                     <* SELF\draughting_callout.contents
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) =
-        0) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF)));
-END_ENTITY;
-
-ENTITY draughting_callout_relationship;
-  name                        : label;
-  description                 : text;
-  relating_draughting_callout : draughting_callout;
-  related_draughting_callout  : draughting_callout;
-END_ENTITY;
-
-ENTITY draughting_elements
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(QUERY(l_c
-                    <* QUERY(con
-                             <* SELF.contents
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(con)))
-                    | NOT (SIZEOF(QUERY(ldc
-                                        <* USEDIN(l_c,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN
-                                           TYPEOF(ldc)))) <=
-                           1))) =
-       0;
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF)) OR
-           (SIZEOF(QUERY(con
-                         <* SELF.contents
-                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN TYPEOF(con)))) <=
-            2);
-  WR3: SIZEOF(QUERY(rc
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
-                       TYPEOF(rc)) AND
-                      (rc.name = 'primary'))) <=
-       1;
-  WR4: SIZEOF(QUERY(rc
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
-                       TYPEOF(rc)) AND
-                      (rc.name = 'secondary'))) <=
-       1;
-  WR5: SIZEOF(QUERY(sec
-                    <* QUERY(rc
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
-                                TYPEOF(rc)) AND
-                               (rc.name = 'secondary'))
-                    | NOT (SIZEOF(QUERY(prim
-                                        <* USEDIN(SELF,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_RELATIONSHIP' IN
-                                           TYPEOF(prim)) AND
-                                          (prim.name = 'primary'))) =
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY draughting_model
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF draughting_model_item_select;
-UNIQUE
-  UR1: SELF\representation.name;
-WHERE
-  WR1: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL'] *
-                                  TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(smi
-                    <* QUERY(si
-                             <* QUERY(it
-                                      <* SELF.items
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
-                                TYPEOF(si\styled_item.item)))
-                    | (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                       TYPEOF(psa))))) =
-                                                  1)))) =
-                             1))))) =
-       0;
-END_ENTITY;
-
-ENTITY draughting_model_item_association
-  SUBTYPE OF (item_identified_representation_usage);
-  SELF\item_identified_representation_usage.definition          : draughting_model_item_definition;
-  SELF\item_identified_representation_usage.used_representation : annotation_representation_select;
-  SELF\item_identified_representation_usage.identified_item     : draughting_model_item_association_select;
-END_ENTITY;
-
-ENTITY draughting_model_item_association_with_placeholder
-  SUBTYPE OF (draughting_model_item_association);
-  SELF\draughting_model_item_association.definition          : draughting_model_item_definition;
-  SELF\draughting_model_item_association.used_representation : draughting_model;
-  SELF\item_identified_representation_usage.identified_item  : draughting_callout;
-  annotation_placeholder                                     : annotation_placeholder_occurrence;
-END_ENTITY;
-
-ENTITY draughting_pre_defined_colour
-  SUBTYPE OF (pre_defined_colour);
-WHERE
-  WR1: SELF\pre_defined_item.name IN ['red','green','blue','yellow','magenta','cyan','black','white'];
-END_ENTITY;
-
-ENTITY draughting_pre_defined_curve_font
-  SUBTYPE OF (pre_defined_curve_font);
-WHERE
-  WR1: SELF\pre_defined_item.name IN ['continuous','chain','chain double dash','dashed','dotted'];
-END_ENTITY;
-
-ENTITY draughting_pre_defined_text_font
-  SUBTYPE OF (pre_defined_text_font);
-WHERE
-  WR1: SELF\pre_defined_item.name[1:8] = 'ISO 3098';
-END_ENTITY;
-
-ENTITY draughting_specification_reference
-  SUBTYPE OF (document_reference);
-  specified_items : SET [1 : ?] OF specified_item;
-WHERE
-  WR1: (SELF.assigned_document.kind.product_data_type = 'draughting specification');
-END_ENTITY;
-
-ENTITY draughting_subfigure_representation
-  SUBTYPE OF (symbol_representation);
-  SELF\representation.items : SET [1 : ?] OF draughting_subfigure_representation_item;
-WHERE
-  WR1: SIZEOF(QUERY(item
-                    <* SELF\representation.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_OCCURRENCE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT'] *
-                             TYPEOF(item)) =
-                      1)) >=
-       1;
-  WR2: SIZEOF(QUERY(srm
-                    <* QUERY(rm
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_REPRESENTATION_MAP' IN
-                                TYPEOF(rm)))
-                    | NOT (SIZEOF(QUERY(a_s
-                                        <* QUERY(mi
-                                                 <* srm.map_usage
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN
-                                                    TYPEOF(mi)))
-                                        | NOT (SIZEOF(QUERY(aso
-                                                            <* USEDIN(a_s,
-                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
-                                                                   TYPEOF(aso)))) =
-                                               0))) =
-                           0))) >
-       0;
-  WR3: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
-END_ENTITY;
-
-ENTITY draughting_symbol_representation
-  SUBTYPE OF (symbol_representation);
-  SELF\representation.items : SET [1 : ?] OF draughting_symbol_representation_item;
-UNIQUE
-  UR1: SELF\representation.name;
-WHERE
-  WR1: SIZEOF(QUERY(item
-                    <* SELF\representation.items
-                    | (SIZEOF(TYPEOF(item) *
-                              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) =
-                       1))) >=
-       1;
-  WR2: SIZEOF(QUERY(item
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
-                      TYPEOF(item))) =
-       0;
-  WR3: SIZEOF(QUERY(rm
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_REPRESENTATION_MAP' IN
-                           TYPEOF(rm)))) =
-       0;
-  WR4: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
-END_ENTITY;
-
-ENTITY draughting_text_literal_with_delineation
-  SUBTYPE OF (text_literal_with_delineation);
-WHERE
-  WR1: SELF.delineation IN ['underline','overline'];
-END_ENTITY;
-
-ENTITY draughting_title;
-  items    : SET [1 : ?] OF draughting_titled_item;
-  language : label;
-  contents : text;
-END_ENTITY;
-
-ENTITY drawing_definition;
-  drawing_number : identifier;
-  drawing_type   : OPTIONAL label;
-END_ENTITY;
-
-ENTITY drawing_revision
-  SUBTYPE OF (presentation_set);
-  revision_identifier : identifier;
-  drawing_identifier  : drawing_definition;
-  intended_scale      : OPTIONAL text;
-UNIQUE
-  UR1: revision_identifier, drawing_identifier;
-END_ENTITY;
-
-ENTITY drawing_revision_sequence;
-  predecessor : drawing_revision;
-  successor   : drawing_revision;
-WHERE
-  WR1: predecessor :<>: successor;
-END_ENTITY;
-
-ENTITY drawing_sheet_layout
-  SUBTYPE OF (draughting_symbol_representation);
-END_ENTITY;
-
-ENTITY drawing_sheet_revision
-  SUBTYPE OF (presentation_area);
-  revision_identifier : identifier;
-WHERE
-  WR1: SIZEOF(QUERY(item
-                    <* SELF\representation.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) AND
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
-                       (TYPEOF(item\mapped_item.mapping_source.mapped_representation))))) =
-       0;
-END_ENTITY;
-
-ENTITY drawing_sheet_revision_sequence
-  SUBTYPE OF (representation_relationship);
-WHERE
-  WR1: SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
-       TYPEOF(SELF\representation_relationship.rep_1);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN
-       TYPEOF(SELF\representation_relationship.rep_2);
-END_ENTITY;
-
-ENTITY drawing_sheet_revision_usage
-  SUBTYPE OF (area_in_set);
-  sheet_number : identifier;
-UNIQUE
-  UR1: sheet_number, SELF\area_in_set.in_set;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\area_in_set.area)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_REVISION' IN TYPEOF(SELF\area_in_set.in_set));
-END_ENTITY;
-
-ENTITY dupin_cyclide_surface
-  SUBTYPE OF (elementary_surface);
-  generalised_major_radius : positive_length_measure;
-  generalised_minor_radius : positive_length_measure;
-  skewness                 : length_measure;
-WHERE
-  WR1: skewness >= 0.0;
-END_ENTITY;
-
-ENTITY eccentric_cone
-  SUBTYPE OF (geometric_representation_item);
-  position    : axis2_placement_3d;
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-  height      : positive_length_measure;
-  x_offset    : length_measure;
-  y_offset    : length_measure;
-  ratio       : REAL;
-WHERE
-  WR1: ratio >= 0.0;
-END_ENTITY;
-
-ENTITY eccentric_conical_volume
-  SUBTYPE OF (volume);
-  position    : axis2_placement_3d;
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-  height      : positive_length_measure;
-  x_offset    : length_measure;
-  y_offset    : length_measure;
-  ratio       : REAL;
-WHERE
-  WR1: ratio >= 0.0;
-END_ENTITY;
-
-ENTITY edge
-  SUPERTYPE OF (ONEOF(edge_curve, edge_with_length, oriented_edge, subedge))
-  SUBTYPE OF (topological_representation_item);
-  edge_start : vertex;
-  edge_end   : vertex;
-END_ENTITY;
-
-ENTITY edge_based_wireframe_model
-  SUBTYPE OF (geometric_representation_item);
-  ebwm_boundary : SET [1 : ?] OF connected_edge_set;
-END_ENTITY;
-
-ENTITY edge_based_wireframe_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                              TYPEOF(it)) =
-                       1))) >=
-       1;
-  WR3: SIZEOF(QUERY(ebwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                   TYPEOF(edges)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(ebwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                                                                        TYPEOF(edges\edge_curve.edge_geometry)))
-                                                            | NOT (SIZEOF(pline_edges\edge_curve.edge_geometry\polyline.points) >
-                                                                   2))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(ebwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                    TYPEOF(edges.edge_start)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                    TYPEOF(edges.edge_end))))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(ebwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR7: SIZEOF(QUERY(ebwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(eb
-                                        <* ebwm\edge_based_wireframe_model.ebwm_boundary
-                                        | NOT (SIZEOF(QUERY(edges
-                                                            <* eb.ces_edges
-                                                            | NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND
-                                                                   valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR9: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
-END_ENTITY;
-
-ENTITY edge_blended_solid
-  ABSTRACT SUPERTYPE OF (track_blended_solid ANDOR
-                         (ONEOF(solid_with_constant_radius_edge_blend, solid_with_chamfered_edges)))
-  SUBTYPE OF (modified_solid);
-  blended_edges : LIST [1 : ?] OF UNIQUE edge_curve;
-END_ENTITY;
-
-ENTITY edge_curve
-  SUBTYPE OF (edge, geometric_representation_item);
-  edge_geometry : curve;
-  same_sense    : BOOLEAN;
-END_ENTITY;
-
-ENTITY edge_loop
-  SUBTYPE OF (loop, path);
-DERIVE
-  ne : INTEGER := SIZEOF(SELF\path.edge_list);
-WHERE
-  WR1: (SELF\path.edge_list[1].edge_start) :=: (SELF\path.edge_list[ne].edge_end);
-END_ENTITY;
-
-ENTITY edge_round
-  SUBTYPE OF (transition_feature);
-WHERE
-  WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                           TYPEOF(pdr.used_representation))) =
-                            1))) =
-        0);
-  WR2: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR3: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'radius'))) =
-                                                1))) =
-                            0))) =
-        0);
-  WR4: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'first offset'))) <=
-                                                1))) =
-                            0))) =
-        0);
-  WR5: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'second offset'))) <=
-                                                1))) =
-                            0))) =
-        0);
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'edge round face'))) <=
-                           1))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'first face shape'))) <=
-                           1))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'second face shape'))) <=
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY edge_with_excessive_segments
-  SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY edge_with_length
-  SUBTYPE OF (edge);
-  edge_length : positive_length_measure;
-END_ENTITY;
-
-ENTITY effectivity
-  SUPERTYPE OF (ONEOF(serial_numbered_effectivity, dated_effectivity, lot_effectivity,
-                      time_interval_based_effectivity));
-  id : identifier;
-DERIVE
-  name        : label := get_name_value(SELF);
-  description : text  := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY effectivity_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_effectivity : effectivity;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY effectivity_context_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_effectivity_assignment : effectivity_assignment;
-  role                            : effectivity_context_role;
-END_ENTITY;
-
-ENTITY effectivity_context_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY effectivity_relationship;
-  name                 : label;
-  description          : OPTIONAL text;
-  related_effectivity  : effectivity;
-  relating_effectivity : effectivity;
-END_ENTITY;
-
-ENTITY electric_charge_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CHARGE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY electric_charge_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.coulomb);
-END_ENTITY;
-
-ENTITY electric_current_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CURRENT_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY electric_current_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY electric_potential_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY electric_potential_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.volt);
-END_ENTITY;
-
-ENTITY elementary_brep_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(csh
-                                        <* msb_shells(msb)
-                                        | NOT (SIZEOF(QUERY(fcs
-                                                            <* csh.cfs_faces
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
-                                                                   TYPEOF(fcs)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(csh
-                                        <* msb_shells(msb)
-                                        | NOT (SIZEOF(QUERY(fcs
-                                                            <* csh\connected_face_set.cfs_faces
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN
-                                                                    TYPEOF(fcs\face_surface.face_geometry))))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                           TYPEOF(bnds.bound))
-                                                                                | NOT (SIZEOF(QUERY(oe
-                                                                                                    <* elp_fbnds.bound\path.edge_list
-                                                                                                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                                           TYPEOF(oe.edge_element)))) =
-                                                                                       0))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                           TYPEOF(bnds.bound))
-                                                                                | NOT (SIZEOF(QUERY(oe
-                                                                                                    <* elp_fbnds.bound\path.edge_list
-                                                                                                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                                                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                                                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'] *
-                                                                                                                  TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
-                                                                                                           1))) =
-                                                                                       0))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                           TYPEOF(bnds.bound))
-                                                                                | NOT (SIZEOF(QUERY(oe
-                                                                                                    <* elp_fbnds.bound\path.edge_list
-                                                                                                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                            TYPEOF(oe.edge_start)) AND
-                                                                                                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                            TYPEOF(oe.edge_end))))) =
-                                                                                       0))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                           TYPEOF(bnds.bound))
-                                                                                | NOT (SIZEOF(QUERY(oe
-                                                                                                    <* elp_fbnds.bound\path.edge_list
-                                                                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR9: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
-                      TYPEOF(msb\manifold_solid_brep.outer))) =
-       0;
-  WR10: SIZEOF(QUERY(brv
-                     <* QUERY(it
-                              <* items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation)) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(mi
-                     <* QUERY(it
-                              <* items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN
-                            TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-        0;
-  WR12: SIZEOF(QUERY(msb
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                                            TYPEOF(bnds.bound))
-                                                                                 | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                         TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
-                                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
-                                                                                         TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY elementary_function
-  SUBTYPE OF (maths_function, generic_literal);
-  func_id : elementary_function_enumerators;
-END_ENTITY;
-
-ENTITY elementary_space
-  SUBTYPE OF (maths_space, generic_literal);
-  space_id : elementary_space_enumerators;
-END_ENTITY;
-
-ENTITY elementary_surface
-  SUPERTYPE OF (ONEOF(plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface))
-  SUBTYPE OF (surface);
-  position : axis2_placement_3d;
-END_ENTITY;
-
-ENTITY ellipse
-  SUBTYPE OF (conic);
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-END_ENTITY;
-
-ENTITY ellipsoid
-  SUBTYPE OF (geometric_representation_item);
-  position    : axis2_placement_3d;
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-  semi_axis_3 : positive_length_measure;
-END_ENTITY;
-
-ENTITY ellipsoid_volume
-  SUBTYPE OF (volume);
-  position    : axis2_placement_3d;
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-  semi_axis_3 : positive_length_measure;
-END_ENTITY;
-
-ENTITY elliptic_area
-  SUBTYPE OF (primitive_2d);
-  position    : axis2_placement_2d;
-  semi_axis_1 : positive_length_measure;
-  semi_axis_2 : positive_length_measure;
-END_ENTITY;
-
-ENTITY energy_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY energy_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.joule);
-END_ENTITY;
-
-ENTITY entirely_narrow_face
-  SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  width_tolerance                                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY entirely_narrow_solid
-  SUBTYPE OF (inapt_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  width_tolerance                                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY entirely_narrow_surface
-  SUBTYPE OF (nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  width_tolerance                                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY entity_assertion
-  SUBTYPE OF (fact_type);
-END_ENTITY;
-
-ENTITY enum_reference_prefix
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY envelope
-  SUBTYPE OF (characterized_object, product);
-END_ENTITY;
-
-ENTITY envelope_relationship
-  SUBTYPE OF (product_relationship);
-END_ENTITY;
-
-ENTITY environment;
-  syntactic_representation : generic_variable;
-  semantics                : variable_semantics;
-END_ENTITY;
-
-ENTITY equal_parameter_constraint
-  SUBTYPE OF (defined_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF variational_parameter;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) >= 2;
-END_ENTITY;
-
-ENTITY equals_expression
-  SUBTYPE OF (binary_boolean_expression);
-END_ENTITY;
-
-ENTITY equivalence_instance_report_item_with_notable_instances
-  SUBTYPE OF (a3m_equivalence_inspection_instance_report_item);
-  notable_instances : LIST [1 : ?] OF equivalence_notable_instance;
-END_ENTITY;
-
-ENTITY equivalence_notable_instance;
-  comparing_elements : LIST [0 : ?] OF equivalence_detected_difference_select;
-  compared_elements  : LIST [0 : ?] OF equivalence_detected_difference_select;
-  measured_value     : equivalence_measured_value_select;
-WHERE
-  WR1: (SIZEOF(comparing_elements) <> 0) OR (SIZEOF(compared_elements) <> 0);
-END_ENTITY;
-
-ENTITY erroneous_b_spline_curve_definition
-  SUBTYPE OF (erroneous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY erroneous_b_spline_surface_definition
-  SUBTYPE OF (erroneous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY erroneous_data
-  ABSTRACT SUPERTYPE OF (ONEOF(erroneous_topology, erroneous_geometry, erroneous_topology_and_geometry_relationship,
-                               erroneous_manifold_solid_brep))
-  SUBTYPE OF (shape_data_quality_criterion);
-END_ENTITY;
-
-ENTITY erroneous_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(inconsistent_curve_transition_code, erroneous_b_spline_curve_definition,
-                               inconsistent_surface_transition_code, erroneous_b_spline_surface_definition))
-  SUBTYPE OF (erroneous_data);
-END_ENTITY;
-
-ENTITY erroneous_manifold_solid_brep
-  ABSTRACT SUPERTYPE OF (ONEOF(wrongly_oriented_void, wrongly_placed_void, intersecting_shells_in_solid,
-                               solid_with_wrong_number_of_voids))
-  SUBTYPE OF (erroneous_data);
-END_ENTITY;
-
-ENTITY erroneous_topology
-  ABSTRACT SUPERTYPE OF (ONEOF(open_edge_loop, open_closed_shell, inconsistent_adjacent_face_normals,
-                               disconnected_face_set))
-  SUBTYPE OF (erroneous_data);
-END_ENTITY;
-
-ENTITY erroneous_topology_and_geometry_relationship
-  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))
-  SUBTYPE OF (erroneous_data);
-END_ENTITY;
-
-ENTITY evaluated_characteristic
-  SUBTYPE OF (representation, representation_relationship);
-UNIQUE
-  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
-WHERE
-  WR1: SELF\representation_relationship.rep_1 <> SELF\representation_relationship.rep_2;
-END_ENTITY;
-
-ENTITY evaluated_characteristic_of_product_as_individual_test_result
-  SUBTYPE OF (evaluated_characteristic);
-END_ENTITY;
-
-ENTITY evaluated_degenerate_pcurve
-  SUBTYPE OF (degenerate_pcurve);
-  equivalent_point : cartesian_point;
-END_ENTITY;
-
-ENTITY evaluation_product_definition
-  SUBTYPE OF (product_definition);
-END_ENTITY;
-
-ENTITY event_occurrence;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY event_occurrence_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_event_occurrence : event_occurrence;
-  role                      : event_occurrence_role;
-END_ENTITY;
-
-ENTITY event_occurrence_relationship;
-  name           : label;
-  description    : OPTIONAL text;
-  relating_event : event_occurrence;
-  related_event  : event_occurrence;
-END_ENTITY;
-
-ENTITY event_occurrence_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY evidence
-  SUBTYPE OF (group_assignment);
-  items : SET [1 : ?] OF evidence_item;
-END_ENTITY;
-
-ENTITY excessive_use_of_groups
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP']);
-END_ENTITY;
-
-ENTITY excessive_use_of_layers
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT']);
-END_ENTITY;
-
-ENTITY excessively_high_degree_curve
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY excessively_high_degree_surface
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY exclusive_product_concept_feature_category
-  SUBTYPE OF (product_concept_feature_category);
-END_ENTITY;
-
-ENTITY executed_action
-  SUBTYPE OF (action);
-END_ENTITY;
-
-ENTITY exp_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY expanded_uncertainty
-  SUBTYPE OF (standard_uncertainty);
-  coverage_factor : REAL;
-END_ENTITY;
-
-ENTITY explicit_composite_hole
-  SUBTYPE OF (composite_hole);
-  placement : shape_representation;
-INVERSE
-  explicit_shape : SET [0:?] OF item_identified_representation_usage FOR definition;
-WHERE
-  WR1: SIZEOF(QUERY(ri
-                    <* placement\representation.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(ri)))) =
-       1;
-  WR2: (SIZEOF(explicit_shape) = 0) OR
-       (SIZEOF(QUERY(es
-                     <* explicit_shape
-                     | NOT (placement = es\item_identified_representation_usage.used_representation))) =
-        0);
-END_ENTITY;
-
-ENTITY explicit_constraint
-  ABSTRACT SUPERTYPE OF (ONEOF(defined_constraint, free_form_constraint))
-  SUBTYPE OF (variational_representation_item);
-  description          : OPTIONAL text;
-  constrained_elements : SET [1 : ?] OF representation_item;
-  reference_elements   : SET [0 : ?] OF representation_item;
-WHERE
-  WR1: SIZEOF(constrained_elements * reference_elements) = 0;
-END_ENTITY;
-
-ENTITY explicit_geometric_constraint
-  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))
-  SUBTYPE OF (defined_constraint, geometric_representation_item);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_representation_item;
-  SELF\explicit_constraint.reference_elements   : SET [0 : ?] OF geometric_representation_item;
-END_ENTITY;
-
-ENTITY explicit_procedural_geometric_representation_item_relationship
-  SUBTYPE OF (explicit_procedural_representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence;
-  SELF\representation_item_relationship.related_representation_item  : geometric_representation_item;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' IN
-            TYPEOF(SELF\representation_item_relationship.related_representation_item));
-END_ENTITY;
-
-ENTITY explicit_procedural_representation_item_relationship
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' IN
-            TYPEOF(SELF\representation_item_relationship.related_representation_item));
-  WR2: 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;
-END_ENTITY;
-
-ENTITY explicit_procedural_representation_relationship
-  SUBTYPE OF (representation_relationship);
-  SELF\representation_relationship.rep_1 : procedural_representation;
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION' IN
-             TYPEOF(SELF\representation_relationship.rep_2))) AND
-       (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION' IN
-             TYPEOF(SELF\representation_relationship.rep_2)));
-  WR2: SELF\representation_relationship.rep_1.context_of_items :=:
-       SELF\representation_relationship.rep_2.context_of_items;
-END_ENTITY;
-
-ENTITY explicit_procedural_shape_representation_relationship
-  SUBTYPE OF (explicit_procedural_representation_relationship);
-  SELF\representation_relationship.rep_1 : procedural_shape_representation;
-  SELF\representation_relationship.rep_2 : shape_representation;
-END_ENTITY;
-
-ENTITY explicit_round_hole
-  SUBTYPE OF (round_hole);
-  depth              : positive_length_measure_with_unit;
-  depth_tolerance    : OPTIONAL tolerance_value;
-  diameter           : positive_length_measure_with_unit;
-  diameter_tolerance : OPTIONAL tolerance_value_or_limits_and_fits;
-  placement          : shape_representation;
-WHERE
-  WR1: SIZEOF(QUERY(ri
-                    <* placement\representation.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(ri)))) =
-       1;
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(depth_tolerance\tolerance_value.lower_bound);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(depth_tolerance\tolerance_value.upper_bound);
-  WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN TYPEOF(diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(diameter_tolerance\tolerance_value.lower_bound));
-  WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_VALUE' IN TYPEOF(diameter_tolerance)) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-            TYPEOF(diameter_tolerance\tolerance_value.upper_bound));
-END_ENTITY;
-
-ENTITY explicit_table_function
-  ABSTRACT SUPERTYPE OF (ONEOF(listed_real_data, listed_integer_data, listed_logical_data, listed_string_data,
-                               listed_complex_number_data, listed_data, externally_listed_data,
-                               linearized_table_function, basic_sparse_matrix))
-  SUBTYPE OF (maths_function);
-  index_base : zero_or_one;
-  shape      : LIST [1 : ?] OF positive_integer;
-END_ENTITY;
-
-ENTITY expression
-  ABSTRACT SUPERTYPE OF (ONEOF(numeric_expression, boolean_expression, string_expression))
-  SUBTYPE OF (generic_expression);
-END_ENTITY;
-
-ENTITY expression_conversion_based_unit
-  SUBTYPE OF (context_dependent_unit, variable_semantics);
-INVERSE
-  associated_variable_environment : environment FOR semantics;
-END_ENTITY;
-
-ENTITY expression_denoted_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-DERIVE
-  expr : generic_expression := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: (schema_prefix + 'FUNCTION_SPACE') IN TYPEOF(values_space_of(expr));
-END_ENTITY;
-
-ENTITY expression_extension_numeric
-  SUBTYPE OF (measure_with_unit, numeric_expression);
-END_ENTITY;
-
-ENTITY expression_extension_string
-  SUBTYPE OF (measure_with_unit, string_expression);
-END_ENTITY;
-
-ENTITY expression_extension_to_select;
-  type_expression_associated : expression_extension_select;
-END_ENTITY;
-
-ENTITY extended_tuple_space
-  SUBTYPE OF (maths_space, generic_literal);
-  base     : tuple_space;
-  extender : maths_space;
-WHERE
-  WR1: expression_is_constant(base) AND expression_is_constant(extender);
-  WR2: no_cyclic_space_reference(SELF, []);
-  WR3: extender <> the_empty_space;
-END_ENTITY;
-
-ENTITY extension
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
-END_ENTITY;
-
-ENTITY extent
-  SUBTYPE OF (characterized_object);
-END_ENTITY;
-
-ENTITY external_class_library
-  SUBTYPE OF (external_source);
-END_ENTITY;
-
-ENTITY external_identification_assignment
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (identification_assignment);
-  source : external_source;
-END_ENTITY;
-
-ENTITY external_identification_assignment_relationship;
-  id            : OPTIONAL identifier;
-  description   : OPTIONAL text;
-  relating      : external_identification_assignment;
-  related       : external_identification_assignment;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_external_identification_assignment_relationship(SELF, [related],
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY external_source;
-  source_id : source_item;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY external_source_relationship;
-  name            : label;
-  description     : OPTIONAL text;
-  relating_source : external_source;
-  related_source  : external_source;
-END_ENTITY;
-
-ENTITY externally_conditioned_data_quality_criteria_representation
-  SUBTYPE OF (data_quality_criteria_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN
-                      TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY externally_conditioned_data_quality_criterion
-  SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
-       0;
-  WR2: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-  WR3: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-END_ENTITY;
-
-ENTITY externally_conditioned_data_quality_inspection_instance_report_item
-  SUBTYPE OF (data_quality_inspection_instance_report_item);
-  SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_ecdq_element_select;
-WHERE
-  WR1: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT.INSPECTED_INSTANCES'))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
-                           TYPEOF(i1.inspection_result)))) =
-       0;
-END_ENTITY;
-
-ENTITY externally_conditioned_data_quality_inspection_result
-  SUBTYPE OF (data_quality_inspection_result);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' IN
-       TYPEOF(SELF\data_quality_inspection_result.criterion_inspected);
-END_ENTITY;
-
-ENTITY externally_conditioned_data_quality_inspection_result_representation
-  SUBTYPE OF (data_quality_inspection_result_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
-                      TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY externally_defined_character_glyph
-  SUBTYPE OF (externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_class
-  SUBTYPE OF (class, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_colour
-  SUBTYPE OF (colour_specification, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_context_dependent_unit
-  SUBTYPE OF (context_dependent_unit, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_conversion_based_unit
-  SUBTYPE OF (conversion_based_unit, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_currency
-  SUBTYPE OF (currency, externally_defined_context_dependent_unit);
-END_ENTITY;
-
-ENTITY externally_defined_curve_font
-  SUBTYPE OF (externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_dimension_definition
-  SUBTYPE OF (dimensional_size, externally_defined_item);
-WHERE
-  WR1: (SELF\externally_defined_item.item_id = 'external size dimension') AND
-       (SELF\externally_defined_item.source.source_id = 'external size dimension specification');
-  WR2: 1 >=
-       SIZEOF(QUERY(adr
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')
-                    | (adr.assigned_document.description = 'external size dimension specification')));
-END_ENTITY;
-
-ENTITY externally_defined_feature_definition
-  SUBTYPE OF (feature_definition, externally_defined_item);
-WHERE
-  WR1: (((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')));
-  WR2: ((NOT (SELF\characterized_object.description = 'thread')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(pdr.used_representation)) AND
-                                       ({5 <= SIZEOF(pdr.used_representation.items) <= 10}))) =
-                        1)) =
-         1));
-  WR3: ((NOT (SELF\characterized_object.description = 'marking')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(pdr.used_representation)) AND
-                                       (SIZEOF(pdr.used_representation.items) = 2))) =
-                        1)) =
-         1));
-  WR4: ((NOT (SELF\characterized_object.description = 'knurl')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(pdr.used_representation)) AND
-                                       (SIZEOF(pdr.used_representation.items) = 1))) =
-                        1)) =
-         1));
-  WR5: (NOT (SELF\characterized_object.description IN ['knurl','thread'])) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'partial area occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'applied area usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
-                                                              TYPEOF(sdr.relating_shape_aspect)))) =
-                                              1)))) <=
-                             1)))) =
-        0);
-  WR6: ((NOT (SELF\characterized_object.description = 'marking')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'marking text')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT (SELF\characterized_object.description = 'thread')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'removal direction') AND
-                                                                   ((it.description = 'internal') OR
-                                                                    (it.description = 'external'))))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT (SELF\characterized_object.description = 'thread')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'qualifier')))) <=
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR9: ((NOT (SELF\characterized_object.description = 'thread')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'hand')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR10: ((NOT (SELF\characterized_object.description = 'thread')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    (it.name = 'fit class')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR11: ((NOT (SELF\characterized_object.description = 'thread')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    (it.name = 'form')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR12: ((NOT (SELF\characterized_object.description = 'thread')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'major diameter')))) <=
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR13: ((NOT (SELF\characterized_object.description = 'thread')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'number of threads')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR14: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'fit class 2')))) <=
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR15: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'nominal size')))) <=
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR16: (NOT (SELF\characterized_object.description IN ['knurl','gear','thread'])) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'applied shape') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) =
-                                               1)))) <=
-                              1)))) =
-         0);
-  WR17: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | SIZEOF(QUERY(pdr
-                                      <* USEDIN(pd,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-  WR18: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'number of teeth')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR19: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'reference pressure angle')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR20: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'rake shift factor')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR21: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'nominal tooth depth')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR22: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'face width')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR23: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'tip diameter')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR24: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-  WR25: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'normal attribute')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR26: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    (it.name = 'internal or external gear') AND
-                                                                    ((it.description = 'internal') OR
-                                                                     (it.description = 'external'))))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR27: ((NOT (SELF\characterized_object.description IN ['gear'])) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'root fillet radius')))) <=
-                                                    1)))) =
-                               0)))) =
-          0));
-END_ENTITY;
-
-ENTITY externally_defined_general_property
-  SUBTYPE OF (general_property, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_hatch_style
-  SUBTYPE OF (externally_defined_item, geometric_representation_item);
-END_ENTITY;
-
-ENTITY externally_defined_item;
-  item_id : source_item;
-  source  : external_source;
-END_ENTITY;
-
-ENTITY externally_defined_item_relationship;
-  name          : label;
-  description   : OPTIONAL text;
-  relating_item : externally_defined_item;
-  related_item  : externally_defined_item;
-END_ENTITY;
-
-ENTITY externally_defined_item_with_multiple_references
-  SUBTYPE OF (externally_defined_item);
-  references : LIST [1 : ?] OF UNIQUE source_item;
-UNIQUE
-  UR1: references;
-WHERE
-  WR1: NOT (SELF\externally_defined_item.item_id IN references);
-END_ENTITY;
-
-ENTITY externally_defined_marker
-  SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
-END_ENTITY;
-
-ENTITY externally_defined_representation
-  SUBTYPE OF (representation, externally_defined_item);
-  SELF\representation.items : SET [1 : ?] OF externally_defined_representation_item;
-END_ENTITY;
-
-ENTITY externally_defined_representation_item
-  SUBTYPE OF (representation_item, externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_string
-  SUBTYPE OF (externally_defined_representation_item);
-END_ENTITY;
-
-ENTITY externally_defined_style
-  SUBTYPE OF (externally_defined_item, founded_item);
-END_ENTITY;
-
-ENTITY externally_defined_symbol
-  SUBTYPE OF (externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_terminator_symbol
-  SUBTYPE OF (externally_defined_symbol);
-END_ENTITY;
-
-ENTITY externally_defined_text_font
-  SUBTYPE OF (externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_tile
-  SUBTYPE OF (externally_defined_item);
-END_ENTITY;
-
-ENTITY externally_defined_tile_style
-  SUBTYPE OF (externally_defined_item, geometric_representation_item);
-END_ENTITY;
-
-ENTITY externally_listed_data
-  SUBTYPE OF (explicit_table_function, generic_literal, externally_defined_item);
-  value_range : maths_space;
-WHERE
-  WR1: expression_is_constant(value_range);
-END_ENTITY;
-
-ENTITY extreme_instance;
-  locations_of_extreme_value : SET [1 : ?] OF location_of_extreme_value_select;
-  measured_value             : measured_value_select;
-END_ENTITY;
-
-ENTITY extreme_patch_width_variation
-  SUBTYPE OF (geometry_with_local_irregularity);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY extruded_area_solid
-  SUBTYPE OF (swept_area_solid);
-  extruded_direction : direction;
-  depth              : positive_length_measure;
-WHERE
-  WR1: dot_product((SELF\swept_area_solid.swept_area.basis_surface\elementary_surface.position.p[3]),
-                   extruded_direction) <>
-       0.0;
-END_ENTITY;
-
-ENTITY extruded_face_solid
-  SUBTYPE OF (swept_face_solid);
-  extruded_direction : direction;
-  depth              : positive_length_measure;
-WHERE
-  WR1: dot_product((SELF\swept_face_solid.swept_face.face_geometry\elementary_surface.position.p[3]),
-                   extruded_direction) <>
-       0.0;
-END_ENTITY;
-
-ENTITY extruded_face_solid_with_draft_angle
-  SUBTYPE OF (extruded_face_solid_with_trim_conditions);
-  draft_angle : plane_angle_measure;
-WHERE
-  WR1: draft_angle <> 0;
-END_ENTITY;
-
-ENTITY extruded_face_solid_with_multiple_draft_angles
-  SUBTYPE OF (extruded_face_solid_with_trim_conditions);
-  drafted_edges : LIST [2 : ?] OF SET [1 : ?] OF edge_curve;
-  draft_angles  : LIST [2 : ?] OF plane_angle_measure;
-WHERE
-  WR1: SIZEOF(drafted_edges) = SIZEOF(draft_angles);
-  WR2: SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0;
-  WR3: SIZEOF(QUERY(q
-                    <* drafted_edges
-                    | (SIZEOF(QUERY(r <* q | NOT (SELF\swept_face_solid.swept_face IN using_items(r, [])))) > 0))) =
-       0;
-END_ENTITY;
-
-ENTITY extruded_face_solid_with_trim_conditions
-  SUPERTYPE OF (ONEOF(extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles))
-  SUBTYPE OF (extruded_face_solid);
-  first_trim_condition  : trim_condition_select;
-  second_trim_condition : trim_condition_select;
-  first_trim_intent     : trim_intent;
-  second_trim_intent    : trim_intent;
-  first_offset          : non_negative_length_measure;
-  second_offset         : non_negative_length_measure;
-WHERE
-  WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(first_trim_condition)) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(second_trim_condition)));
-  WR2: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND
-             ((first_trim_intent = trim_intent.offset) OR (first_trim_intent = trim_intent.up_to_next))) OR
-            (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)) AND
-             ((second_trim_intent = trim_intent.offset) OR (second_trim_intent = trim_intent.up_to_next))));
-  WR3: NOT (((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-                   TYPEOF(first_trim_condition))) AND
-             ((first_trim_intent = trim_intent.blind) OR (first_trim_intent = trim_intent.through_all))) OR
-            ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-                   TYPEOF(second_trim_condition))) AND
-             ((second_trim_intent = trim_intent.blind) OR (second_trim_intent = trim_intent.through_all))));
-  WR4: (((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)));
-  WR5: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition))) AND
-            (first_trim_condition = second_trim_condition));
-END_ENTITY;
-
-ENTITY face
-  SUPERTYPE OF (ONEOF(face_surface, subface, oriented_face))
-  SUBTYPE OF (topological_representation_item);
-  bounds : SET [1 : ?] OF face_bound;
-WHERE
-  WR1: NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF))));
-  WR2: SIZEOF(QUERY(temp
-                    <* bounds
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF(temp))) <=
-       1;
-END_ENTITY;
-
-ENTITY face_based_surface_model
-  SUBTYPE OF (geometric_representation_item);
-  fbsm_faces : SET [1 : ?] OF connected_face_set;
-END_ENTITY;
-
-ENTITY face_bound
-  SUBTYPE OF (topological_representation_item);
-  bound       : loop;
-  orientation : BOOLEAN;
-END_ENTITY;
-
-ENTITY face_outer_bound
-  SUBTYPE OF (face_bound);
-END_ENTITY;
-
-ENTITY face_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) >= 1);
-  WR2: (SIZEOF(QUERY(it
-                     <* SELF.items
-                     | (NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(it)) OR
-                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF(it)))))) =
-        0);
-END_ENTITY;
-
-ENTITY face_shape_representation_relationship
-  SUBTYPE OF (representation_relationship);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_1));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(SELF.rep_2));
-END_ENTITY;
-
-ENTITY face_surface
-  SUBTYPE OF (face, geometric_representation_item);
-  face_geometry : surface;
-  same_sense    : BOOLEAN;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry));
-END_ENTITY;
-
-ENTITY face_surface_with_excessive_patches_in_one_direction
-  SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY faceted_brep
-  SUBTYPE OF (manifold_solid_brep);
-END_ENTITY;
-
-ENTITY faceted_brep_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                              TYPEOF(it)) =
-                       1))) >
-       0;
-  WR3: SIZEOF(QUERY(fbrep
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(csh
-                                        <* msb_shells(fbrep)
-                                        | NOT (SIZEOF(QUERY(fcs
-                                                            <* csh\connected_face_set.cfs_faces
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
-                                                                    TYPEOF(fcs)) AND
-                                                                   (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                                                                     TYPEOF(fcs\face_surface.face_geometry)) AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN
-                                                                     TYPEOF(fcs\face_surface.face_geometry\elementary_surface.position.location)))))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(fbrep
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN
-                                                                                   TYPEOF(bnds)))) =
-                                                                   1))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(msb
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
-                       TYPEOF(msb\manifold_solid_brep.outer)))) =
-       0;
-  WR6: SIZEOF(QUERY(brv
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation)) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-END_ENTITY;
-
-ENTITY faceted_primitive
-  SUPERTYPE OF (ONEOF(tetrahedron, convex_hexahedron))
-  SUBTYPE OF (geometric_representation_item);
-  points : LIST [4 : ?] OF UNIQUE cartesian_point;
-WHERE
-  WR1: points[1].dim = 3;
-END_ENTITY;
-
-ENTITY fact_type
-  SUBTYPE OF (property_definition);
-END_ENTITY;
-
-ENTITY feature_component_definition
-  SUBTYPE OF (characterized_object);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(USEDIN(pd,
-                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')) =
-                             1)))) =
-        0);
-END_ENTITY;
-
-ENTITY feature_component_relationship
-  SUPERTYPE OF (ONEOF(pattern_omit_membership, pattern_offset_membership))
-  SUBTYPE OF (shape_aspect_relationship);
-WHERE
-  WR1: ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRANSITION_FEATURE',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN'] *
-                TYPEOF(SELF.relating_shape_aspect)) =
-         1) OR
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MACHINING_FEATURE_DEFINITION' IN
-         TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-         TYPEOF(SELF.relating_shape_aspect.of_shape.definition)));
-END_ENTITY;
-
-ENTITY feature_definition
-  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))
-  SUBTYPE OF (characterized_object);
-END_ENTITY;
-
-ENTITY feature_definition_with_connection_area
-  SUBTYPE OF (shape_feature_definition);
-END_ENTITY;
-
-ENTITY feature_for_datum_target_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.related_shape_aspect : datum_target;
-UNIQUE
-  UR1: related_shape_aspect;
-WHERE
-  WR1: relating_shape_aspect.of_shape :=: related_shape_aspect.of_shape;
-  WR2: relating_shape_aspect\shape_aspect.product_definitional = true;
-END_ENTITY;
-
-ENTITY feature_in_panel
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SELF.description IN ['pocket','boss','stairstep'];
-  WR2: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 3}))) =
-       0;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'base radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'target radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR6: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'base boundary') AND
-                      (sa.description IN ['directed angle occurrence','closed profile occurrence']))) =
-       1;
-  WR7: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'target boundary') AND
-                      (sa.description IN ['directed angle occurrence','closed profile occurrence']))) =
-       1;
-  WR8: SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'directed angle occurrence'))) <= 1;
-  WR9: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.description = 'directed angle occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.name = 'directed angle usage') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTED_ANGLE' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1))) =
-       SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'directed angle occurrence')));
-  WR10: SIZEOF(QUERY(sa
-                     <* get_shape_aspects(SELF)
-                     | (sa.description = 'closed profile occurrence') AND
-                       (SIZEOF(QUERY(sar
-                                     <* USEDIN(sa,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                        TYPEOF(sar)) AND
-                                       (sar.description = 'profile usage') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                               TYPEOF(sar.relating_shape_aspect)) =
-                                        1))) =
-                        1))) =
-        SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 'closed profile occurrence')));
-  WR11: (SIZEOF(QUERY(pdr
-                      <* get_property_definition_representations(SELF)
-                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                        TYPEOF(pdr.used_representation))) <=
-         1) AND
-        (SIZEOF(QUERY(pdr
-                      <* get_property_definition_representations(SELF)
-                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                         TYPEOF(pdr.used_representation)) AND
-                        NOT (pdr.used_representation.name = 'target face'))) =
-         0);
-  WR12: (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)
-                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                         TYPEOF(pdr.used_representation)))) =
-         1);
-END_ENTITY;
-
-ENTITY feature_pattern
-  SUBTYPE OF (replicate_feature);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     (SIZEOF(QUERY(srwp_i
-                                                   <* pdr.used_representation.items
-                                                   | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                          TYPEOF(srwp_i)))) >
-                                      0))) >
-                      0)) =
-       0;
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'base feature placement'))) >
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY fill_area_style
-  SUBTYPE OF (founded_item);
-  name        : label;
-  fill_styles : SET [1 : ?] OF fill_style_select;
-WHERE
-  WR1: SIZEOF(QUERY(fill_style
-                    <* fill_styles
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_COLOUR' IN
-                      TYPEOF(fill_style))) <=
-       1;
-END_ENTITY;
-
-ENTITY fill_area_style_colour;
-  name        : label;
-  fill_colour : colour;
-END_ENTITY;
-
-ENTITY fill_area_style_hatching
-  SUBTYPE OF (geometric_representation_item);
-  hatch_line_appearance         : curve_style;
-  start_of_next_hatch_line      : one_direction_repeat_factor;
-  point_of_reference_hatch_line : cartesian_point;
-  pattern_start                 : cartesian_point;
-  hatch_line_angle              : plane_angle_measure;
-END_ENTITY;
-
-ENTITY fill_area_style_tile_coloured_region
-  SUBTYPE OF (geometric_representation_item);
-  closed_curve  : curve_or_annotation_curve_occurrence;
-  region_colour : colour;
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(closed_curve))) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN TYPEOF(closed_curve)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE' IN TYPEOF(closed_curve)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(closed_curve)) AND
-        (closed_curve\b_spline_curve.closed_curve = true)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(closed_curve)) AND
-        (closed_curve\composite_curve.closed_curve = true)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(closed_curve)) AND
-        (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] =
-         closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]));
-END_ENTITY;
-
-ENTITY fill_area_style_tile_curve_with_style
-  SUBTYPE OF (geometric_representation_item);
-  styled_curve : annotation_curve_occurrence;
-END_ENTITY;
-
-ENTITY fill_area_style_tile_symbol_with_style
-  SUBTYPE OF (geometric_representation_item);
-  symbol : annotation_symbol_occurrence;
-END_ENTITY;
-
-ENTITY fill_area_style_tiles
-  SUBTYPE OF (geometric_representation_item);
-  tiling_pattern : two_direction_repeat_factor;
-  tiles          : SET [1 : ?] OF fill_area_style_tile_shape_select;
-  tiling_scale   : positive_ratio_measure;
-END_ENTITY;
-
-ENTITY fillet
-  SUBTYPE OF (transition_feature);
-WHERE
-  WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                           TYPEOF(pdr.used_representation))) =
-                            1))) =
-        0);
-  WR2: (NOT (SELF\shape_aspect.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR3: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'radius'))) =
-                                                1))) =
-                            0))) =
-        0);
-  WR4: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'first offset'))) <=
-                                                1))) =
-                            0))) =
-        0);
-  WR5: (NOT (SELF.description = 'constant radius')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'second offset'))) <=
-                                                1))) =
-                            0))) =
-        0);
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'fillet face'))) =
-                           1))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'first face shape'))) =
-                           1))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'second face shape'))) =
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY final_solution
-  SUBTYPE OF (product_definition_formation);
-  status : STRING;
-INVERSE
-  specification : SET [1:?] OF product_definition FOR formation;
-END_ENTITY;
-
-ENTITY finite_function
-  SUBTYPE OF (maths_function, generic_literal);
-  pairs : SET [1 : ?] OF LIST [2 : 2] OF maths_value;
-WHERE
-  WR1: VALUE_UNIQUE(list_selected_components(pairs, 1));
-END_ENTITY;
-
-ENTITY finite_integer_interval
-  SUBTYPE OF (maths_space, generic_literal);
-  min : INTEGER;
-  max : INTEGER;
-DERIVE
-  size : positive_integer := max - min + 1;
-WHERE
-  WR1: min <= max;
-END_ENTITY;
-
-ENTITY finite_real_interval
-  SUBTYPE OF (maths_space, generic_literal);
-  min         : REAL;
-  min_closure : open_closed;
-  max         : REAL;
-  max_closure : open_closed;
-WHERE
-  WR1: min < max;
-END_ENTITY;
-
-ENTITY fixed_constituent_assembly_constraint
-  SUBTYPE OF (assembly_geometric_constraint, fixed_element_geometric_constraint);
-  fixed_constituent : representative_shape_representation;
-WHERE
-  WR1: SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3;
-  WR2: (assembly_leaf(using_product_definition_of_shape_representation(fixed_constituent)[1]));
-  WR3: (SIZEOF(SELF\explicit_constraint.constrained_elements) = 1) AND
-       (SIZEOF(SELF\explicit_constraint.reference_elements) = 0);
-  WR4: fixed_constituent IN
-       (using_representations(SELF\explicit_constraint.constrained_elements[1]) +
-        using_representation_with_mapping(SELF\explicit_constraint.constrained_elements[1]));
-END_ENTITY;
-
-ENTITY fixed_element_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-END_ENTITY;
-
-ENTITY fixed_instance_attribute_set
-  SUBTYPE OF (variational_representation_item);
-  fixed_attributes : SET [1 : ?] OF instance_attribute_reference;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* using_representations(SELF)
-                    | SIZEOF(QUERY(r
-                                   <* q.items
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET' IN
-                                     TYPEOF(r))) >
-                      1)) =
-       0;
-END_ENTITY;
-
-ENTITY fixed_reference_swept_surface
-  SUBTYPE OF (swept_surface);
-  directrix       : curve;
-  fixed_reference : direction;
-END_ENTITY;
-
-ENTITY flat_face
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'removal direction')))) =
-                             1)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'course of travel occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description =
-                                                                        'path feature component usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR3: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'removal boundary occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'profile usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.name = 'removal boundary')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR4: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                               TYPEOF(pd))
-                    | NOT (SIZEOF(QUERY(sa_occ
-                                        <* USEDIN(pds,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                        | (sa_occ.description = 'enclosed boundary occurrence') AND
-                                          (SIZEOF(QUERY(sdr
-                                                        <* QUERY(sar
-                                                                 <* USEDIN(sa_occ,
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                 | (sar.description = 'profile usage') AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                    TYPEOF(sar)))
-                                                        | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                                                  TYPEOF(sdr.relating_shape_aspect)) =
-                                                           1) AND
-                                                          (sdr.relating_shape_aspect.description = 'boundary'))) =
-                                           1))) <=
-                           1))) =
-       0;
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-  WR6: SIZEOF(QUERY(pds
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                         TYPEOF(csa)) AND
-                                        (csa.name = 'uncut volume') AND
-                                        (SIZEOF(QUERY(sar
-                                                      <* csa.component_relationships
-                                                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                          TYPEOF(sar)) AND
-                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
-                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION'] *
-                                                                 TYPEOF(sar.related_shape_aspect)) =
-                                                          1)))) =
-                                         1)))) <=
-                        1)))) =
-       1;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'removal depth'))) <=
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY flat_pattern_ply_representation_relationship
-  SUBTYPE OF (shape_representation_relationship);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
-       (TYPEOF(SELF\representation_relationship.rep_1) * TYPEOF(SELF\representation_relationship.rep_2));
-  WR2: SELF\representation_relationship.rep_1.context_of_items\geometric_representation_context.coordinate_space_dimension =
-       3;
-END_ENTITY;
-
-ENTITY flatness_tolerance
-  SUBTYPE OF (geometric_tolerance);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY force_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY force_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.newton);
-END_ENTITY;
-
-ENTITY format_function
-  SUBTYPE OF (string_expression, binary_generic_expression);
-DERIVE
-  value_to_format : generic_expression := SELF\binary_generic_expression.operands[1];
-  format_string   : generic_expression := SELF\binary_generic_expression.operands[2];
-WHERE
-  WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION') IN TYPEOF(value_to_format)) AND
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION') IN TYPEOF(format_string));
-END_ENTITY;
-
-ENTITY forward_chaining_rule
-  SUBTYPE OF (rule_definition);
-END_ENTITY;
-
-ENTITY forward_chaining_rule_premise
-  SUBTYPE OF (property_definition, property_definition_representation, representation);
-END_ENTITY;
-
-ENTITY founded_item
-  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)));
-DERIVE
-  users : SET [0 : ?] OF founded_item_select := using_items(SELF, []);
-WHERE
-  WR1: SIZEOF(users) > 0;
-  WR2: NOT (SELF IN users);
-END_ENTITY;
-
-ENTITY free_edge
-  SUBTYPE OF (inapt_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, []);
-  WR5: SIZEOF(QUERY(sdqr
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
-                       TYPEOF(sdqr)) AND
-                      (SIZEOF(QUERY(sdqiir
-                                    <* bag_to_set(USEDIN(sdqr,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
-                                       TYPEOF(sdqiir)) AND
-                                      (SIZEOF(QUERY(sdqiri
-                                                    <* sdqiir.inspected_instances
-                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN
-                                                       TYPEOF(sdqiri.inspected_elements[1])))) =
-                                       0))) =
-                       0))) =
-       0;
-END_ENTITY;
-
-ENTITY free_form_assignment
-  SUBTYPE OF (free_form_constraint);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\free_form_constraint.constrained_elements
-                    | q IN used_variables(SELF\free_form_constraint.constraining_expression))) =
-       0;
-  WR2: SIZEOF(QUERY(q
-                    <* SELF\free_form_constraint.reference_elements
-                    | NOT (q IN used_variables(SELF\free_form_constraint.constraining_expression)))) =
-       0;
-  WR3: SIZEOF(SELF\free_form_constraint.reference_elements) >= 1;
-  WR4: 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;
-END_ENTITY;
-
-ENTITY free_form_constraint
-  ABSTRACT SUPERTYPE OF (ONEOF(free_form_assignment, free_form_relation))
-  SUBTYPE OF (explicit_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
-  SELF\explicit_constraint.reference_elements   : SET [0 : ?] OF variational_parameter;
-  constraining_expression                       : expression;
-END_ENTITY;
-
-ENTITY free_form_relation
-  SUBTYPE OF (free_form_constraint);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN
-       TYPEOF(SELF\free_form_constraint.constraining_expression);
-  WR2: 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;
-END_ENTITY;
-
-ENTITY free_kinematic_motion_representation
-  SUBTYPE OF (representation_relationship_with_transformation);
-  SELF\representation_relationship.rep_1 : representative_shape_representation;
-  SELF\representation_relationship.rep_2 : representative_shape_representation;
-  motion                                 : kinematic_path;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION' IN
-       TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
-        TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_1)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
-        TYPEOF(SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.transform_item_2));
-  WR3: ((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));
-  WR4: (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)));
-END_ENTITY;
-
-ENTITY free_variable_semantics
-  SUBTYPE OF (variable_semantics);
-END_ENTITY;
-
-ENTITY frequency_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREQUENCY_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY frequency_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.hertz);
-END_ENTITY;
-
-ENTITY frozen_assignment
-  SUBTYPE OF (approval_assignment);
-  items : SET [1 : ?] OF change_management_object;
-END_ENTITY;
-
-ENTITY fully_constrained_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := false;
-END_ENTITY;
-
-ENTITY func
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY function_application
-  SUBTYPE OF (multiple_arity_generic_expression);
-  func      : maths_function_select;
-  arguments : LIST [1 : ?] OF maths_expression;
-DERIVE
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF generic_expression := [convert_to_maths_function(func)] +
-                                                                                          convert_to_operands(arguments);
-WHERE
-  WR1: function_applicability(func, arguments);
-END_ENTITY;
-
-ENTITY function_space
-  SUBTYPE OF (maths_space, generic_literal);
-  domain_constraint : space_constraint_type;
-  domain_argument   : maths_space;
-  range_constraint  : space_constraint_type;
-  range_argument    : maths_space;
-WHERE
-  WR1: expression_is_constant(domain_argument) AND expression_is_constant(range_argument);
-  WR2: (domain_argument <> the_empty_space) AND (range_argument <> the_empty_space);
-  WR3: (domain_constraint <> sc_member) OR NOT member_of(the_empty_space, domain_argument);
-  WR4: (range_constraint <> sc_member) OR NOT member_of(the_empty_space, range_argument);
-  WR5: NOT (any_space_satisfies(domain_constraint, domain_argument) AND
-            any_space_satisfies(range_constraint, range_argument));
-END_ENTITY;
-
-ENTITY functional_breakdown_context
-  SUBTYPE OF (breakdown_context);
-END_ENTITY;
-
-ENTITY functional_element_usage
-  SUBTYPE OF (breakdown_element_usage);
-END_ENTITY;
-
-ENTITY functionally_defined_transformation;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY g1_discontinuity_between_adjacent_faces
-  SUBTYPE OF (non_smooth_geometry_transition_across_edge);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
-END_ENTITY;
-
-ENTITY g1_discontinuous_curve
-  SUBTYPE OF (discontinuous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY g1_discontinuous_surface
-  SUBTYPE OF (discontinuous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
-END_ENTITY;
-
-ENTITY g2_discontinuity_between_adjacent_faces
-  SUBTYPE OF (non_smooth_geometry_transition_across_edge);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  assessment_specification_2                                 : shape_data_quality_assessment_by_numerical_test;
-  flat_curvature_radius_tolerance                            : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
-        value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
-  WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR5: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR6: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE']);
-END_ENTITY;
-
-ENTITY g2_discontinuous_curve
-  SUBTYPE OF (discontinuous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  assessment_specification_2                                 : shape_data_quality_assessment_by_numerical_test;
-  flat_curvature_radius_tolerance                            : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
-        value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
-  WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR5: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
-  WR6: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY g2_discontinuous_surface
-  SUBTYPE OF (discontinuous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  assessment_specification_2                                 : shape_data_quality_assessment_by_numerical_test;
-  flat_curvature_radius_tolerance                            : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN
-        value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_RATIO_PAIR');
-  WR4: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR5: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
-  WR6: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_adjacent_edges_in_loop
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_edge_and_base_surface
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_faces_related_to_an_edge
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_pcurves_related_to_an_edge
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_vertex_and_base_surface
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gap_between_vertex_and_edge
-  SUBTYPE OF (geometric_gap_in_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY gear
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR2: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'number of teeth'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR3: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'reference pressure angle'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR4: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'rake shift factor'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR5: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'nominal tooth depth'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR6: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'face width'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR7: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'tip diameter'))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR8: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR9: NOT (SELF\characterized_object.description IN
-            ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-           (SIZEOF(QUERY(pd
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                         | NOT (SIZEOF(QUERY(impl_rep
-                                             <* QUERY(pdr
-                                                      <* USEDIN(pd,
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                        TYPEOF(pdr.used_representation))
-                                             | NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'internal or external gear') AND
-                                                                   ((it.description = 'internal') OR
-                                                                    (it.description = 'external')))) =
-                                                    1))) =
-                                0))) =
-            0);
-  WR10: NOT (SELF\characterized_object.description IN
-             ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'normal attribute'))) =
-                                                     1))) =
-                                 0))) =
-             0);
-  WR11: NOT (SELF\characterized_object.description IN
-             ['straight bevel gear','helical bevel gear','spur gear','helical gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'root fillet radius'))) <=
-                                                     1))) =
-                                 0))) =
-             0);
-  WR12: NOT (SELF\characterized_object.description IN ['helix gear','helical bevel gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'reference helix angle'))) =
-                                                     1))) =
-                                 0))) =
-             0);
-  WR13: NOT (SELF\characterized_object.description IN ['helix gear','helical bevel gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR14: NOT (SELF\characterized_object.description IN ['straight bevel gear','helical bevel gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'tip angle'))) =
-                                                     1))) =
-                                 0))) =
-             0);
-  WR15: NOT (SELF\characterized_object.description IN ['straight bevel gear','helical bevel gear']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(QUERY(it
-                                                                  <* impl_rep.used_representation.items
-                                                                  | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'root angle'))) =
-                                                     1))) =
-                                 0))) =
-             0);
-  WR16: SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | SIZEOF(QUERY(sdr
-                                                        <* QUERY(sar
-                                                                 <* USEDIN(sa_occ,
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                 | (sar.description = 'applied shape') AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                    TYPEOF(sar)))
-                                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                          TYPEOF(sdr.relating_shape_aspect))) =
-                                           1)) =
-                            1))) =
-        0;
-END_ENTITY;
-
-ENTITY gear_pair
-  SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
-  radius_first_link  : length_measure;
-  radius_second_link : length_measure;
-  bevel              : plane_angle_measure;
-  helical_angle      : plane_angle_measure;
-  gear_ratio         : REAL;
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY gear_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : gear_pair;
-  actual_rotation_1               : plane_angle_measure;
-DERIVE
-  actual_rotation_2 : plane_angle_measure := -actual_rotation_1 * SELF\pair_value.applies_to_pair\gear_pair.gear_ratio;
-END_ENTITY;
-
-ENTITY gear_pair_with_range
-  SUBTYPE OF (gear_pair);
-  lower_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY general_datum_reference
-  ABSTRACT SUPERTYPE OF (ONEOF(datum_reference_compartment, datum_reference_element))
-  SUBTYPE OF (shape_aspect);
-  base      : datum_or_common_datum;
-  modifiers : OPTIONAL SET [1 : ?] OF datum_reference_modifier;
-WHERE
-  WR1: SELF\shape_aspect.name = '';
-  WR2: NOT EXISTS(SELF\shape_aspect.description);
-  WR3: NOT EXISTS(SELF\shape_aspect.id);
-  WR4: SELF\shape_aspect.product_definitional = false;
-  WR5: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN TYPEOF(base)) OR
-           (SELF\shape_aspect.of_shape = base\shape_aspect.of_shape);
-  WR6: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM_LIST' IN TYPEOF(base)) OR
-           (SELF\shape_aspect.of_shape = base[1]\shape_aspect.of_shape);
-END_ENTITY;
-
-ENTITY general_feature
-  SUBTYPE OF (shape_feature_definition);
-WHERE
-  WR1: (SIZEOF(get_property_definition_representations(SELF)) <= 1) AND
-       (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation))) <=
-        1);
-  WR2: 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,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.name = 'course of travel'))) =
-                       1)));
-  WR3: 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,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1)));
-  WR4: 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,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'profile usage'))) =
-                       1)));
-  WR5: (SIZEOF(QUERY(sa
-                     <* get_shape_aspects(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)))) <=
-        1) AND
-       (SIZEOF(QUERY(sa
-                     <* get_shape_aspects(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND
-                       (sa.name = 'general compound feature') AND
-                       (SIZEOF(QUERY(sar
-                                     <* USEDIN(sa,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                        TYPEOF(sar)) AND
-                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE' IN
-                                        TYPEOF(sar.related_shape_aspect)))) >=
-                        2))) <=
-        1);
-END_ENTITY;
-
-ENTITY general_linear_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  sum_index                             : one_or_two;
-DERIVE
-  mat : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: function_is_2d_table(mat);
-  WR2: (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.range), es_numbers);
-END_ENTITY;
-
-ENTITY general_material_property
-  SUBTYPE OF (general_property);
-WHERE
-  WR1: SIZEOF(QUERY(gpa
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION')
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_PROPERTY' IN
-                           TYPEOF(gpa\general_property_association.derived_definition)))) =
-       0;
-END_ENTITY;
-
-ENTITY general_property;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY general_property_association;
-  name               : label;
-  description        : OPTIONAL text;
-  base_definition    : general_property;
-  derived_definition : derived_property_select;
-WHERE
-  WR1: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE'] *
-               TYPEOF(derived_definition)) >
-        0) OR
-       (SIZEOF(USEDIN(derived_definition,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')) =
-        1);
-  WR2: (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
-                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE'] *
-               TYPEOF(derived_definition)) >
-        0) OR
-       (derived_definition.name = base_definition.name);
-END_ENTITY;
-
-ENTITY general_property_relationship;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_property : general_property;
-  related_property  : general_property;
-END_ENTITY;
-
-ENTITY generic_character_glyph_symbol
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (symbol_representation);
-END_ENTITY;
-
-ENTITY generic_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(simple_generic_expression, unary_generic_expression, binary_generic_expression,
-                               multiple_arity_generic_expression));
-WHERE
-  WR1: is_acyclic(SELF);
-END_ENTITY;
-
-ENTITY generic_literal
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (simple_generic_expression);
-END_ENTITY;
-
-ENTITY generic_product_definition_reference
-  ABSTRACT SUPERTYPE OF (ONEOF(product_definition_reference, product_definition_reference_with_local_representation));
-  source : external_source;
-END_ENTITY;
-
-ENTITY generic_property_relationship;
-  name          : label;
-  description   : text;
-  relating      : generic_property_definition_select;
-  related       : generic_property_definition_select;
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_generic_property_relationship(SELF, [related],
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_PROPERTY_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY generic_variable
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (simple_generic_expression);
-INVERSE
-  interpretation : environment FOR syntactic_representation;
-END_ENTITY;
-
-ENTITY geometric_alignment
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
-END_ENTITY;
-
-ENTITY geometric_contact
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 2;
-END_ENTITY;
-
-ENTITY geometric_curve_set
-  SUBTYPE OF (geometric_set);
-WHERE
-  WR1: SIZEOF(QUERY(temp
-                    <* SELF\geometric_set.elements
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(temp)) OR
-                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(temp))))) =
-       0;
-END_ENTITY;
-
-ENTITY geometric_gap_in_topology
-  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))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY geometric_intersection
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
-END_ENTITY;
-
-ENTITY geometric_item_specific_usage
-  SUBTYPE OF (item_identified_representation_usage);
-  SELF\item_identified_representation_usage.definition          : geometric_item_specific_usage_select;
-  SELF\item_identified_representation_usage.used_representation : shape_model;
-  SELF\item_identified_representation_usage.identified_item     : geometric_model_item;
-END_ENTITY;
-
-ENTITY geometric_model_element_relationship
-  SUBTYPE OF (geometric_representation_item, representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : geometric_representation_item;
-  SELF\representation_item_relationship.related_representation_item  : geometric_representation_item;
-UNIQUE
-  UR1: SELF\representation_item_relationship.relating_representation_item,
-       SELF\representation_item_relationship.related_representation_item;
-WHERE
-  WR1: SELF\representation_item_relationship.relating_representation_item :<>:
-       SELF\representation_item_relationship.related_representation_item;
-END_ENTITY;
-
-ENTITY geometric_representation_context
-  SUPERTYPE OF (ONEOF(geometric_representation_context_with_parameter, path_parameter_representation_context))
-  SUBTYPE OF (representation_context);
-  coordinate_space_dimension : dimension_count;
-END_ENTITY;
-
-ENTITY geometric_representation_context_with_parameter
-  SUBTYPE OF (geometric_representation_context);
-  parameter_unit : OPTIONAL unit;
-END_ENTITY;
-
-ENTITY geometric_representation_item
-  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,
-                       ellipsoid, faceted_primitive, rectangular_pyramid, cyclide_segment_solid, volume,
-                       half_space_solid, shell_based_surface_model, face_based_surface_model,
-                       shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, tessellated_item,
-                       volume_with_faces, scanned_data_item)) ANDOR
-                ((ONEOF(annotation_fill_area, curve, point, text_literal))) ANDOR
-                ((ONEOF(camera_model, curve, direction))) ANDOR
-                ((ONEOF(curve, externally_defined_hatch_style, externally_defined_tile_style, fill_area_style_hatching,
-                        fill_area_style_tile_symbol_with_style, fill_area_style_tiles, one_direction_repeat_factor,
-                        point, vector))) ANDOR
-                ((ONEOF(curve, planar_extent))) ANDOR (ONEOF(kinematic_path, placement)) ANDOR
-                (ONEOF(rotation_about_direction, su_parameters)))
-  SUBTYPE OF (representation_item);
-DERIVE
-  dim : dimension_count := dimension_of(SELF);
-WHERE
-  WR1: SIZEOF(QUERY(using_rep
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
-                           TYPEOF(using_rep.context_of_items)))) =
-       0;
-END_ENTITY;
-
-ENTITY geometric_set
-  SUBTYPE OF (geometric_representation_item);
-  elements : SET [1 : ?] OF geometric_set_select;
-END_ENTITY;
-
-ENTITY geometric_tolerance
-  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));
-  name                    : label;
-  description             : OPTIONAL text;
-  magnitude               : OPTIONAL length_measure_with_unit;
-  toleranced_shape_aspect : geometric_tolerance_target;
-DERIVE
-  controlling_shape : product_definition_shape := sts_get_product_definition_shape(toleranced_shape_aspect);
-  id                : identifier               := get_id_value(SELF);
-INVERSE
-  auxiliary_classification : SET [0:?] OF geometric_tolerance_auxiliary_classification FOR described_item;
-  tolerance_relationship   : SET [0:?] OF geometric_tolerance_relationship FOR relating_geometric_tolerance;
-UNIQUE
-  UR1: id, controlling_shape;
-WHERE
-  WR1: magnitude\measure_with_unit.value_component >= 0.0;
-  WR2: EXISTS(controlling_shape);
-  WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR4: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-  WR5: SIZEOF(QUERY(tr <* tolerance_relationship | tr.name = 'composite tolerance')) <= 1;
-END_ENTITY;
-
-ENTITY geometric_tolerance_auxiliary_classification;
-  attribute_value : geometric_tolerance_auxiliary_classification_enum;
-  described_item  : geometric_tolerance;
-END_ENTITY;
-
-ENTITY geometric_tolerance_relationship;
-  name                         : label;
-  description                  : text;
-  relating_geometric_tolerance : geometric_tolerance;
-  related_geometric_tolerance  : geometric_tolerance;
-WHERE
-  WR1: NOT (name = 'composite tolerance') OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN
-             TYPEOF(relating_geometric_tolerance)) AND
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN
-             TYPEOF(related_geometric_tolerance))) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN
-             TYPEOF(relating_geometric_tolerance)) AND
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN
-             TYPEOF(related_geometric_tolerance))) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' IN
-             TYPEOF(relating_geometric_tolerance)) AND
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' IN
-             TYPEOF(related_geometric_tolerance)));
-  WR2: NOT (name = 'composite tolerance') OR
-           (relating_geometric_tolerance\geometric_tolerance.toleranced_shape_aspect :=:
-            related_geometric_tolerance\geometric_tolerance.toleranced_shape_aspect);
-  WR3: acyclic_geometric_tolerance_relationship(SELF, [related_geometric_tolerance],
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE');
-END_ENTITY;
-
-ENTITY geometric_tolerance_with_datum_reference
-  SUPERTYPE OF (ONEOF(angularity_tolerance, circular_runout_tolerance, coaxiality_tolerance, concentricity_tolerance,
-                      parallelism_tolerance, perpendicularity_tolerance, symmetry_tolerance, total_runout_tolerance))
-  SUBTYPE OF (geometric_tolerance);
-  datum_system : SET [1 : ?] OF datum_system_or_reference;
-WHERE
-  WR1: (SIZEOF(QUERY(ds
-                     <* datum_system
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_SYSTEM' IN TYPEOF(ds))) =
-        0) OR
-       (SIZEOF(datum_system) = 1);
-END_ENTITY;
-
-ENTITY geometric_tolerance_with_defined_area_unit
-  SUBTYPE OF (geometric_tolerance_with_defined_unit);
-  area_type        : area_unit_type;
-  second_unit_size : OPTIONAL length_or_plane_angle_measure_with_unit_select;
-WHERE
-  WR1: NOT (EXISTS(second_unit_size) XOR
-            (area_type IN [area_unit_type.rectangular,area_unit_type.cylindrical,area_unit_type.spherical]));
-  WR2: NOT (area_type = area_unit_type.cylindrical) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-            TYPEOF(second_unit_size));
-  WR3: NOT (area_type = area_unit_type.rectangular) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(second_unit_size));
-  WR4: NOT (area_type = area_unit_type.spherical) OR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF(unit_size)) AND
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-            TYPEOF(second_unit_size));
-  WR5: NOT (area_type = area_unit_type.spherical) OR
-           (SIZEOF(QUERY(tz
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOLERANCE_ZONE.DEFINING_TOLERANCE')
-                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_TOLERANCE_ZONE' IN
-                            TYPEOF(tz)))) <>
-            0);
-END_ENTITY;
-
-ENTITY geometric_tolerance_with_defined_unit
-  SUBTYPE OF (geometric_tolerance);
-  unit_size : length_or_plane_angle_measure_with_unit_select;
-WHERE
-  WR1: ('NUMBER' IN TYPEOF(unit_size\measure_with_unit.value_component)) AND
-       (unit_size\measure_with_unit.value_component > 0.0);
-END_ENTITY;
-
-ENTITY geometric_tolerance_with_maximum_tolerance
-  SUBTYPE OF (geometric_tolerance_with_modifiers);
-  maximum_upper_tolerance : length_measure_with_unit;
-WHERE
-  WR1: (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);
-  WR2: (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);
-END_ENTITY;
-
-ENTITY geometric_tolerance_with_modifiers
-  SUBTYPE OF (geometric_tolerance);
-  modifiers : SET [1 : ?] OF geometric_tolerance_modifier;
-WHERE
-  WR1: NOT (geometric_tolerance_modifier.circle_a IN modifiers) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-             TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)) AND
-            (SELF\geometric_tolerance.toleranced_shape_aspect\shape_aspect.product_definitional = true) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN
-             TYPEOF(SELF\geometric_tolerance.toleranced_shape_aspect)));
-END_ENTITY;
-
-ENTITY geometrical_tolerance_callout
-  SUBTYPE OF (draughting_callout);
-END_ENTITY;
-
-ENTITY geometrically_bounded_2d_wireframe_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
-  WR2: SIZEOF(QUERY(item
-                    <* SELF.items
-                    | NOT (SIZEOF(TYPEOF(item) *
-                                  ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(item
-                    <* SELF.items
-                    | SIZEOF(TYPEOF(item) *
-                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
-                      1)) >=
-       1;
-  WR4: SIZEOF(QUERY(mi
-                    <* QUERY(item
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(item)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR5: SIZEOF(QUERY(gcs
-                    <* QUERY(item
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
-                    | NOT (SIZEOF(QUERY(elem
-                                        <* gcs\geometric_set.elements
-                                        | NOT (SIZEOF(TYPEOF(elem) *
-                                                      ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE']) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(gcs
-                    <* QUERY(item
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
-                    | NOT (SIZEOF(QUERY(crv
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
-                                                    TYPEOF(elem)))
-                                        | NOT (valid_basis_curve_in_2d_wireframe(crv)))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(gcs
-                    <* QUERY(item
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(item)))
-                    | NOT (SIZEOF(QUERY(pnt
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
-                                                    TYPEOF(elem)))
-                                        | NOT (SIZEOF(TYPEOF(pnt) *
-                                                      ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']) =
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY geometrically_bounded_surface_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN
-                                            TYPEOF(mr_it)))) >
-                            0)))) =
-       0;
-  WR4: SIZEOF(QUERY(gs
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(pnt
-                                        <* QUERY(gsel
-                                                 <* gs\geometric_set.elements
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
-                                                   TYPEOF(gsel))
-                                        | NOT (gbsf_check_point(pnt)))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(gs
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(cv
-                                        <* QUERY(gsel
-                                                 <* gs\geometric_set.elements
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
-                                                   TYPEOF(gsel))
-                                        | NOT (gbsf_check_curve(cv)))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(gs
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(sf
-                                        <* QUERY(gsel
-                                                 <* gs\geometric_set.elements
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
-                                                   TYPEOF(gsel))
-                                        | NOT (gbsf_check_surface(sf)))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(gs
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it))
-                    | SIZEOF(QUERY(gsel
-                                   <* gs\geometric_set.elements
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(gsel))) >
-                      0)) >
-       0;
-END_ENTITY;
-
-ENTITY geometrically_bounded_wireframe_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(TYPEOF(it) *
-                                  ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(TYPEOF(it) *
-                              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM']) =
-                       1))) >=
-       1;
-  WR3: SIZEOF(QUERY(gcs
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(crv
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
-                                                    TYPEOF(elem)))
-                                        | NOT valid_geometrically_bounded_wf_curve(crv))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(gcs
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(pnts
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN
-                                                    TYPEOF(elem)))
-                                        | NOT valid_geometrically_bounded_wf_point(pnts))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(gcs
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(cnc
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN
-                                                    TYPEOF(elem)))
-                                        | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-                                               TYPEOF(cnc\conic.position)))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(gcs
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(pline
-                                        <* QUERY(elem
-                                                 <* gcs\geometric_set.elements
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                                                    TYPEOF(elem)))
-                                        | NOT (SIZEOF(pline\polyline.points) > 2))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-END_ENTITY;
-
-ENTITY geometry_with_local_irregularity
-  ABSTRACT SUPERTYPE OF (ONEOF(extreme_patch_width_variation, zero_surface_normal, abrupt_change_of_surface_normal))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY geometry_with_local_near_degeneracy
-  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))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY global_assignment
-  SUBTYPE OF (representation_item_relationship);
-END_ENTITY;
-
-ENTITY global_uncertainty_assigned_context
-  SUBTYPE OF (representation_context);
-  uncertainty : SET [1 : ?] OF uncertainty_measure_with_unit;
-END_ENTITY;
-
-ENTITY global_unit_assigned_context
-  SUBTYPE OF (representation_context);
-  units : SET [1 : ?] OF unit;
-END_ENTITY;
-
-ENTITY gps_filter;
-  filter_type : gps_filtration_type;
-  filter_data : LIST [1 : ?] OF measure_with_unit;
-INVERSE
-  owner : gps_filtration_specification FOR filter_data;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_MODIFIERS' IN
-            TYPEOF(owner\gps_filtration_specification.base_target)) OR
-           (SIZEOF([geometric_tolerance_modifier.reference_minimax_feature_without_constraint,
-                    geometric_tolerance_modifier.reference_minimax_feature_with_external_material_constraint,
-                    geometric_tolerance_modifier.reference_minimax_feature_with_internal_material_constraint,
-                    geometric_tolerance_modifier.reference_least_square_feature_without_constraint,
-                    geometric_tolerance_modifier.reference_least_square_feature_with_external_material_constraint,
-                    geometric_tolerance_modifier.reference_least_square_feature_with_internal_material_constraint,
-                    geometric_tolerance_modifier.reference_minimum_circumscribed_feature,
-                    geometric_tolerance_modifier.reference_maximum_inscribed_feature,
-                    geometric_tolerance_modifier.total_range_deviations,
-                    geometric_tolerance_modifier.peak_height,
-                    geometric_tolerance_modifier.valley_depth,
-                    geometric_tolerance_modifier.standard_deviation] *
-                   owner\gps_filtration_specification.base_target\geometric_tolerance_with_modifiers.modifiers) <>
-            0);
-END_ENTITY;
-
-ENTITY gps_filtration_specification;
-  base_target : gps_filtration_specification_target;
-  filter_data : LIST [1 : ?] OF gps_filter;
-END_ENTITY;
-
-ENTITY ground_fact
-  SUBTYPE OF (atomic_formula);
-END_ENTITY;
-
-ENTITY group
-  SUPERTYPE OF (ONEOF(change_group, change_element));
-  name        : label;
-  description : OPTIONAL text;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY group_assignment
-  ABSTRACT SUPERTYPE OF (ONEOF(current_change_element_assignment, previous_change_element_assignment,
-                               change_group_assignment));
-  assigned_group : group;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY group_relationship;
-  name           : label;
-  description    : OPTIONAL text;
-  relating_group : group;
-  related_group  : group;
-END_ENTITY;
-
-ENTITY half_space_2d
-  SUBTYPE OF (primitive_2d);
-  base_curve     : curve;
-  agreement_flag : BOOLEAN;
-END_ENTITY;
-
-ENTITY half_space_solid
-  SUBTYPE OF (geometric_representation_item);
-  base_surface   : surface;
-  agreement_flag : BOOLEAN;
-END_ENTITY;
-
-ENTITY hardness_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: ({2 <= SIZEOF(SELF.items) <= 4}) AND
-       (SIZEOF(QUERY(i
-                     <* items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                        TYPEOF(i)) AND
-                       (i.name IN ['measuring method','measuring position']))) +
-        SIZEOF(QUERY(i
-                     <* items
-                     | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                               TYPEOF(i)) =
-                        1) AND
-                       (i.name IN ['depth','hardness']))) =
-        SIZEOF(SELF.items));
-  WR2: SIZEOF(QUERY(i <* SELF.items | i.name = 'measuring method')) = 1;
-  WR3: SIZEOF(QUERY(i <* SELF.items | i.name = 'hardness')) = 1;
-  WR4: SIZEOF(QUERY(i <* SELF.items | i.name = 'measuring position')) <= 1;
-  WR5: SIZEOF(QUERY(i <* SELF.items | i.name = 'depth')) <= 1;
-  WR6: (SIZEOF(USEDIN(SELF,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | SIZEOF(QUERY(gpa
-                                    <* USEDIN(pdr.definition,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
-                                       TYPEOF(gpa.base_definition)) AND
-                                      (gpa\general_property_association.base_definition\general_property.name =
-                                       'surface_condition'))) =
-                       1)) =
-        1);
-END_ENTITY;
-
-ENTITY harness_node
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY harness_segment
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY hexahedron_volume
-  SUBTYPE OF (volume);
-  points : LIST [8 : 8] OF cartesian_point;
-WHERE
-  WR1: above_plane(points[1], points[2], points[3], points[4]) = 0.0;
-  WR2: above_plane(points[5], points[8], points[7], points[6]) = 0.0;
-  WR3: above_plane(points[1], points[4], points[8], points[5]) = 0.0;
-  WR4: above_plane(points[4], points[3], points[7], points[8]) = 0.0;
-  WR5: above_plane(points[3], points[2], points[6], points[7]) = 0.0;
-  WR6: above_plane(points[1], points[5], points[6], points[2]) = 0.0;
-  WR7: same_side([points[1],points[2],points[3]], [points[5],points[6],points[7],points[8]]);
-  WR8: same_side([points[1],points[4],points[8]], [points[3],points[7],points[6],points[2]]);
-  WR9: same_side([points[1],points[2],points[5]], [points[3],points[7],points[8],points[4]]);
-  WR10: same_side([points[5],points[6],points[7]], [points[1],points[2],points[3],points[4]]);
-  WR11: same_side([points[3],points[7],points[6]], [points[1],points[4],points[8],points[5]]);
-  WR12: same_side([points[3],points[7],points[8]], [points[1],points[5],points[6],points[2]]);
-  WR13: points[1].dim = 3;
-END_ENTITY;
-
-ENTITY hidden_element_over_riding_styled_item
-  SUBTYPE OF (context_dependent_over_riding_styled_item);
-  SELF\context_dependent_over_riding_styled_item.style_context : LIST [1 : 1] OF presentation_view;
-  SELF\styled_item.item                                        : camera_image;
-INVERSE
-  container : SET [1:?] OF presentation_view FOR items;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN
-       TYPEOF(SELF.item\mapped_item.mapping_source.mapping_origin);
-END_ENTITY;
-
-ENTITY hierarchical_interface_connection
-  SUBTYPE OF (interface_connection);
-END_ENTITY;
-
-ENTITY high_degree_axi_symmetric_surface
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  approximation_tolerance                                    : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY high_degree_conic
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  approximation_tolerance                                    : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY high_degree_linear_curve
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  approximation_tolerance                                    : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY high_degree_planar_surface
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  approximation_tolerance                                    : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY high_order_kinematic_pair
-  ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_and_planar_curve_pair, point_on_surface_pair,
-                               point_on_planar_curve_pair, planar_curve_pair, surface_pair))
-  SUBTYPE OF (kinematic_pair);
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_2
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY hole_bottom
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SELF.description IN ['through','flat','flat with radius','flat with taper','spherical','conical']);
-  WR3: ((NOT (SELF.description = 'through')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(USEDIN(pd,
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
-                              0)))) =
-         0));
-  WR4: ((NOT (SELF.description IN ['flat with radius','flat with taper','spherical','conical'])) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                              TYPEOF(pdr.used_representation)))) =
-                              1)))) =
-         0));
-  WR5: ((NOT (SELF.description = 'flat')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 0)))) =
-                              0)))) =
-         0));
-  WR6: ((NOT (SELF.description IN ['flat with radius','spherical'])) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT (SELF.description = 'flat with taper')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT (SELF.description = 'conical')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-  WR9: ((SELF.description = 'through') OR
-        (SIZEOF(QUERY(fcr
-                      <* QUERY(sar
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                               | ((sar.description = 'hole bottom usage') AND
-                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                   TYPEOF(sar))))
-                      | ((fcr.name IN ['hole depth start','hole depth end'])))) >=
-         1));
-  WR10: ((NOT (SELF.description = 'flat with radius')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'corner radius')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR11: ((NOT (SELF.description = 'spherical')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'radius')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR12: ((NOT (SELF.description = 'conical')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'tip radius')))) <=
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR13: ((NOT (SELF.description = 'conical')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'tip angle')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR14: (SIZEOF(QUERY(fcr
-                      <* QUERY(sar
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                               | ((sar.description = 'hole bottom usage') AND
-                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                   TYPEOF(sar))))
-                      | ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND
-                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
-                          TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HOLE_BOTTOM' IN
-                          TYPEOF(fcr.relating_shape_aspect))))) >=
-         1);
-  WR15: ((NOT (SELF.description = 'flat with taper')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'final diameter')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR16: ((NOT (SELF.description = 'flat with taper')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'taper diameter')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-END_ENTITY;
-
-ENTITY hole_in_panel
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'hole profile') AND (sa.description = 'closed profile occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'profile usage') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                              TYPEOF(sar.relating_shape_aspect)) =
-                                       1))) =
-                       1))) =
-       1;
-  WR2: SIZEOF(get_property_definition_representations(SELF)) =
-       SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | SIZEOF(pdr.used_representation.items) = 1));
-END_ENTITY;
-
-ENTITY homogeneous_linear_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  sum_index                             : one_or_two;
-DERIVE
-  mat : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: function_is_2d_table(mat);
-  WR2: (space_dimension(mat.range) = 1) AND subspace_of_es(factor1(mat.range), es_numbers);
-END_ENTITY;
-
-ENTITY homokinetic_pair
-  SUBTYPE OF (universal_pair);
-WHERE
-  WR1: NOT EXISTS(SELF.input_skew_angle);
-END_ENTITY;
-
-ENTITY hyperbola
-  SUBTYPE OF (conic);
-  semi_axis      : positive_length_measure;
-  semi_imag_axis : positive_length_measure;
-END_ENTITY;
-
-ENTITY id_attribute;
-  attribute_value : identifier;
-  identified_item : id_attribute_select;
-END_ENTITY;
-
-ENTITY identification_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_id : identifier;
-  role        : identification_role;
-END_ENTITY;
-
-ENTITY identification_assignment_relationship;
-  name                               : label;
-  description                        : OPTIONAL text;
-  relating_identification_assignment : identification_assignment;
-  related_identification_assignment  : identification_assignment;
-END_ENTITY;
-
-ENTITY identification_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY idrm_classification_assignment
-  SUBTYPE OF (classification_assignment);
-  items : SET [1 : ?] OF idrm_marked_item;
-END_ENTITY;
-
-ENTITY illuminance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ILLUMINANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY illuminance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lux);
-END_ENTITY;
-
-ENTITY implicit_explicit_positioned_sketch_relationship
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : repositioned_neutral_sketch;
-  SELF\representation_item_relationship.related_representation_item  : positioned_sketch;
-WHERE
-  WR1: 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;
-END_ENTITY;
-
-ENTITY implicit_intersection_curve
-  SUBTYPE OF (implicit_planar_curve);
-  external_surface : surface;
-END_ENTITY;
-
-ENTITY implicit_model_intersection_curve
-  SUBTYPE OF (implicit_planar_curve);
-  intersected_model : surface_or_solid_model;
-END_ENTITY;
-
-ENTITY implicit_planar_curve
-  ABSTRACT SUPERTYPE OF (ONEOF(implicit_intersection_curve, implicit_projected_curve,
-                               implicit_model_intersection_curve, implicit_silhouette_curve))
-  SUBTYPE OF (curve, auxiliary_geometric_representation_item);
-  using_sketch            : positioned_sketch;
-  computed_representation : curve;
-DERIVE
-  curve_plane : plane := get_plane_of_implicit_geometry(using_sketch);
-WHERE
-  WR1: SIZEOF(TYPEOF(computed_representation) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IMPLICIT_PLANAR_CURVE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA']) =
-       0;
-END_ENTITY;
-
-ENTITY implicit_planar_intersection_point
-  SUBTYPE OF (implicit_point_on_plane);
-  external_curve : curve;
-END_ENTITY;
-
-ENTITY implicit_planar_projection_point
-  SUBTYPE OF (implicit_point_on_plane);
-  external_point       : point;
-  projection_direction : direction;
-END_ENTITY;
-
-ENTITY implicit_point_on_plane
-  ABSTRACT SUPERTYPE OF (ONEOF(implicit_planar_intersection_point, implicit_planar_projection_point))
-  SUBTYPE OF (point, auxiliary_geometric_representation_item);
-  using_sketch            : positioned_sketch;
-  computed_representation : cartesian_point;
-DERIVE
-  plane_of_point : plane := get_plane_of_implicit_geometry(using_sketch);
-WHERE
-  WR1: (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);
-  WR2: SIZEOF(TYPEOF(computed_representation) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IMPLICIT_POINT_ON_PLANE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA']) =
-       0;
-END_ENTITY;
-
-ENTITY implicit_projected_curve
-  SUBTYPE OF (implicit_planar_curve);
-  external_curve       : curve;
-  projection_direction : direction;
-END_ENTITY;
-
-ENTITY implicit_silhouette_curve
-  SUBTYPE OF (implicit_planar_curve);
-  silhouetted_model : surface_or_solid_model;
-  view_direction    : direction;
-END_ENTITY;
-
-ENTITY imported_curve_function
-  SUBTYPE OF (maths_function, generic_literal);
-  geometry          : curve;
-  parametric_domain : tuple_space;
-WHERE
-  WR1: expression_is_constant(parametric_domain);
-END_ENTITY;
-
-ENTITY imported_point_function
-  SUBTYPE OF (maths_function, generic_literal);
-  geometry : point;
-END_ENTITY;
-
-ENTITY imported_surface_function
-  SUBTYPE OF (maths_function, generic_literal);
-  geometry          : surface;
-  parametric_domain : tuple_space;
-WHERE
-  WR1: expression_is_constant(parametric_domain);
-END_ENTITY;
-
-ENTITY imported_volume_function
-  SUBTYPE OF (maths_function, generic_literal);
-  geometry          : volume;
-  parametric_domain : tuple_space;
-WHERE
-  WR1: expression_is_constant(parametric_domain);
-END_ENTITY;
-
-ENTITY in_zone
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY inappropriate_element_visibility
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM']);
-END_ENTITY;
-
-ENTITY inappropriate_use_of_layer
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT']);
-END_ENTITY;
-
-ENTITY inapt_data
-  ABSTRACT SUPERTYPE OF (ONEOF(inapt_topology, inapt_geometry, inapt_topology_and_geometry_relationship,
-                               inapt_manifold_solid_brep))
-  SUBTYPE OF (shape_data_quality_criterion);
-END_ENTITY;
-
-ENTITY inapt_geometry
-  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))
-  SUBTYPE OF (inapt_data);
-END_ENTITY;
-
-ENTITY inapt_manifold_solid_brep
-  ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_solids, small_volume_solid, multiply_defined_solids,
-                               entirely_narrow_solid, solid_with_excessive_number_of_voids))
-  SUBTYPE OF (inapt_data);
-END_ENTITY;
-
-ENTITY inapt_topology
-  ABSTRACT SUPERTYPE OF (ONEOF(free_edge, non_manifold_at_edge, non_manifold_at_vertex, over_used_vertex))
-  SUBTYPE OF (inapt_data);
-END_ENTITY;
-
-ENTITY inapt_topology_and_geometry_relationship
-  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))
-  SUBTYPE OF (inapt_data);
-END_ENTITY;
-
-ENTITY incidence_assembly_constraint
-  SUBTYPE OF (binary_assembly_constraint, incidence_geometric_constraint);
-END_ENTITY;
-
-ENTITY incidence_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : ?] OF geometric_constraint_element;
-  near_points                                   : SET [0 : ?] OF near_point_relationship;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
-  WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
-  WR3: SIZEOF(QUERY(q
-                    <* near_points
-                    | NOT (q\representation_item_relationship.relating_representation_item IN
-                           SELF\explicit_constraint.reference_elements))) =
-       0;
-END_ENTITY;
-
-ENTITY included_text_block
-  SUBTYPE OF (mapped_item);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN
-       TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
-END_ENTITY;
-
-ENTITY inclusion_product_concept_feature
-  SUBTYPE OF (conditional_concept_feature);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
-  WR2: SIZEOF(QUERY(cfr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
-                      TYPEOF(cfr))) +
-       SIZEOF(QUERY(cfr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
-                      TYPEOF(cfr))) =
-       0;
-  WR3: SELF.condition.conditional_operator.name = 'implication';
-END_ENTITY;
-
-ENTITY inconsistent_adjacent_face_normals
-  SUBTYPE OF (erroneous_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_OR_OPEN_SHELL_SELECT']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inconsistent_curve_transition_code
-  SUBTYPE OF (erroneous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  angle_tolerance                                            : plane_angle_measure;
-  curvature_ratio_tolerance                                  : ratio_measure;
-  distance_tolerance                                         : length_measure;
-  flat_curvature_radius_tolerance                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_TRANSITION_LOCATOR']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inconsistent_edge_and_curve_directions
-  SUBTYPE OF (erroneous_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  distance_tolerance                                         : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inconsistent_element_reference
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
-END_ENTITY;
-
-ENTITY inconsistent_face_and_closed_shell_normals
-  SUBTYPE OF (erroneous_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inconsistent_face_and_surface_normals
-  SUBTYPE OF (erroneous_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inconsistent_surface_transition_code
-  SUBTYPE OF (erroneous_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  angle_tolerance                                            : plane_angle_measure;
-  curvature_ratio_tolerance                                  : ratio_measure;
-  distance_tolerance                                         : length_measure;
-  flat_curvature_radius_tolerance                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE_TRANSITION_LOCATOR']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY index_expression
-  SUBTYPE OF (string_expression, binary_generic_expression);
-DERIVE
-  operand : generic_expression := SELF\binary_generic_expression.operands[1];
-  index   : generic_expression := SELF\binary_generic_expression.operands[2];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index));
-  WR2: is_int_expr(index);
-END_ENTITY;
-
-ENTITY indirectly_selected_elements
-  SUBTYPE OF (user_selected_elements);
-  indirectly_picked_items : SET [1 : ?] OF representation_item;
-END_ENTITY;
-
-ENTITY indirectly_selected_shape_elements
-  SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements);
-  SELF\indirectly_selected_elements.indirectly_picked_items : SET [1 : ?] OF shape_representation_item;
-END_ENTITY;
-
-ENTITY indistinct_curve_knots
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_KNOT_LOCATOR']);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY indistinct_surface_knots
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_KNOT_LOCATOR']);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY inductance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDUCTANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY inductance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.henry);
-END_ENTITY;
-
-ENTITY information_right
-  SUBTYPE OF (action_method);
-END_ENTITY;
-
-ENTITY information_usage_right
-  SUBTYPE OF (action_method);
-END_ENTITY;
-
-ENTITY instance_attribute_reference
-  SUBTYPE OF (variable_semantics);
-  attribute_name  : attribute_identifier;
-  owning_instance : representation_item;
-END_ENTITY;
-
-ENTITY instance_report_item_with_extreme_instances
-  SUBTYPE OF (shape_data_quality_inspection_instance_report_item);
-  extreme_instances : LIST [1 : ?] OF extreme_instance;
-END_ENTITY;
-
-ENTITY instance_usage_context_assignment
-  SUBTYPE OF (product_definition_context);
-  items : SET [1 : ?] OF instance_usage_context_select;
-END_ENTITY;
-
-ENTITY instanced_feature
-  SUBTYPE OF (feature_definition, shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.product_definitional;
-END_ENTITY;
-
-ENTITY int_literal
-  SUBTYPE OF (literal_number);
-  SELF\literal_number.the_value : INTEGER;
-END_ENTITY;
-
-ENTITY int_numeric_variable
-  SUBTYPE OF (numeric_variable);
-END_ENTITY;
-
-ENTITY int_value_function
-  SUBTYPE OF (value_function);
-END_ENTITY;
-
-ENTITY integer_defined_function
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (numeric_defined_function);
-END_ENTITY;
-
-ENTITY integer_interval_from_min
-  SUBTYPE OF (maths_space, generic_literal);
-  min : INTEGER;
-END_ENTITY;
-
-ENTITY integer_interval_to_max
-  SUBTYPE OF (maths_space, generic_literal);
-  max : INTEGER;
-END_ENTITY;
-
-ENTITY integer_representation_item
-  SUBTYPE OF (representation_item, int_literal);
-END_ENTITY;
-
-ENTITY integer_tuple_literal
-  SUBTYPE OF (generic_literal);
-  lit_value : LIST [1 : ?] OF INTEGER;
-END_ENTITY;
-
-ENTITY interface_component
-  SUBTYPE OF (physical_component);
-END_ENTITY;
-
-ENTITY interface_connection
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY interface_connector_as_planned
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY interface_connector_as_realized
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY interface_connector_definition
-  SUBTYPE OF (product_definition);
-END_ENTITY;
-
-ENTITY interface_connector_design
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY interface_connector_design_to_planned
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_design;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : interface_connector_as_planned;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY interface_connector_design_to_realized
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_design;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : interface_connector_as_realized;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY interface_connector_occurrence
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY interface_connector_planned_to_realized
-  SUBTYPE OF (product_definition_formation_relationship);
-  SELF\product_definition_formation_relationship.relating_product_definition_formation : interface_connector_as_planned;
-  SELF\product_definition_formation_relationship.related_product_definition_formation  : interface_connector_as_realized;
-WHERE
-  WR1: SELF.relating_product_definition_formation.of_product :=: SELF.related_product_definition_formation.of_product;
-END_ENTITY;
-
-ENTITY interface_connector_version
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY interface_definition_connection
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY interface_definition_for
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY interface_specification_definition
-  SUBTYPE OF (product_definition);
-END_ENTITY;
-
-ENTITY interface_specification_version
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY interfaced_group_component
-  SUBTYPE OF (assembly_group_component);
-END_ENTITY;
-
-ENTITY interpolated_configuration_representation
-  SUBTYPE OF (representation);
-  SELF\representation.context_of_items : geometric_representation_context_with_parameter;
-  SELF\representation.items            : SET [1 : ?] OF interpolated_configuration_sequence;
-END_ENTITY;
-
-ENTITY interpolated_configuration_segment
-  SUBTYPE OF (founded_item);
-  state         : mechanism_state_representation;
-  t_parameter   : parameter_value;
-  interpolation : interpolation_type;
-END_ENTITY;
-
-ENTITY interpolated_configuration_sequence
-  SUBTYPE OF (geometric_representation_item);
-  segments : LIST [2 : ?] OF interpolated_configuration_segment;
-DERIVE
-  n_segments           : INTEGER                  := SIZEOF(segments);
-  closed_interpolation : LOGICAL                  := segments[n_segments].interpolation <>
-                                                     discontinuous_interpolation_type;
-  configured_mechanism : mechanism_representation := segments[1].state.represented_mechanism;
-WHERE
-  WR1: SIZEOF(QUERY(ics <* segments | ics.state.represented_mechanism :<>: configured_mechanism)) = 0;
-END_ENTITY;
-
-ENTITY intersecting_connected_face_sets
-  SUBTYPE OF (topology_related_to_self_intersecting_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY intersecting_loops_in_face
-  SUBTYPE OF (erroneous_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY intersecting_shells_in_solid
-  SUBTYPE OF (erroneous_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY intersection_curve
-  SUBTYPE OF (surface_curve);
-WHERE
-  WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
-  WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) <>
-       associated_surface(SELF\surface_curve.associated_geometry[2]);
-END_ENTITY;
-
-ENTITY interval_expression
-  SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
-DERIVE
-  interval_low  : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
-  interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
-  interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_low)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_item)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF(interval_high));
-  WR2: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_high)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_item))) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_item)) AND
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_high)));
-END_ENTITY;
-
-ENTITY invisibility;
-  invisible_items : SET [1 : ?] OF invisible_item;
-END_ENTITY;
-
-ENTITY iso4217_currency
-  SUBTYPE OF (currency);
-END_ENTITY;
-
-ENTITY item_defined_transformation;
-  name             : label;
-  description      : OPTIONAL text;
-  transform_item_1 : representation_item;
-  transform_item_2 : representation_item;
-END_ENTITY;
-
-ENTITY item_identified_representation_usage;
-  name                : label;
-  description         : OPTIONAL text;
-  definition          : item_identified_representation_usage_definition;
-  used_representation : representation;
-  identified_item     : item_identified_representation_usage_select;
-UNIQUE
-  UR1: used_representation, identified_item;
-  UR2: used_representation, definition;
-WHERE
-  WR1: NOT (SIZEOF(identified_item) = 1) OR (used_representation IN using_representations(identified_item));
-  WR2: NOT (SIZEOF(identified_item) > 1) OR (used_representation IN get_representations_for_items(identified_item));
-END_ENTITY;
-
-ENTITY item_link_motion_relationship
-  SUBTYPE OF (link_motion_relationship);
-  SELF\representation_relationship.rep_1 : shape_representation;
-  item                                   : geometric_representation_item;
-END_ENTITY;
-
-ENTITY joggle
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      NOT ({5 <= SIZEOF(pdr.used_representation.items) <= 10}))) =
-       0;
-  WR2: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'direction angle 1') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'direction angle 2') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'height') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) <=
-       1;
-  WR6: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'slope angle 1') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR7: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'slope angle 2') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR8: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'defining path') AND (sa.description = 'path feature component occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.description = 'path feature component usage') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                       TYPEOF(sar.relating_shape_aspect)) AND
-                                      (sar.relating_shape_aspect.description = 'linear'))) =
-                       1))) =
-       1;
-  WR9: SIZEOF(QUERY(sa
-                    <* get_shape_aspects(SELF)
-                    | (sa.name = 'termination') AND (sa.description = 'joggle termination occurrence') AND
-                      (SIZEOF(QUERY(sar
-                                    <* USEDIN(sa,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                       TYPEOF(sar)) AND
-                                      (sar.name = 'joggle termination usage') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.JOGGLE_TERMINATION' IN
-                                       TYPEOF(sar.relating_shape_aspect)))) =
-                       1))) =
-       1;
-  WR10: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'base radius 1') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) <=
-        1;
-  WR11: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'base radius 2') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) <=
-        1;
-  WR12: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'top radius 1') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) <=
-        1;
-  WR13: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'top radius 2') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) <=
-        1;
-END_ENTITY;
-
-ENTITY joggle_termination
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['value termination','face termination'];
-  WR3: (SELF.description = 'value termination') XOR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)))) =
-        0);
-  WR4: (SELF.description <> 'value termination') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(pdr.used_representation.items) = 2))) =
-        1);
-  WR5: (SELF.description <> 'value termination') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'depth') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) =
-        1);
-  WR6: (SELF.description <> 'value termination') OR
-       (SIZEOF(QUERY(pdr
-                     <* get_shape_aspect_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (SIZEOF(QUERY(i
-                                     <* pdr.used_representation.items
-                                     | (i.name = 'angle') AND
-                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                               TYPEOF(i)) =
-                                        2))) =
-                        1))) =
-        1);
-  WR7: SIZEOF(QUERY(sar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                       TYPEOF(sar)) AND
-                      (sar.name = 'joggle termination usage') AND
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY kinematic_analysis_consistency;
-  control : kinematic_control;
-  result  : kinematic_analysis_result;
-WHERE
-  WR1: control.controlled_mechanism :=: result.analysed_mechanism;
-END_ENTITY;
-
-ENTITY kinematic_analysis_result;
-  analysed_mechanism : mechanism_representation;
-  result             : kinematic_result;
-END_ENTITY;
-
-ENTITY kinematic_control;
-  controlled_mechanism         : mechanism_representation;
-  contained_kinematic_programs : kinematic_analysis_definition;
-END_ENTITY;
-
-ENTITY kinematic_joint
-  SUBTYPE OF (edge);
-  SELF\edge.edge_start : kinematic_link;
-  SELF\edge.edge_end   : kinematic_link;
-UNIQUE
-  UR1: edge_start, edge_end;
-WHERE
-  WR1: edge_start :<>: edge_end;
-END_ENTITY;
-
-ENTITY kinematic_link
-  SUBTYPE OF (vertex);
-END_ENTITY;
-
-ENTITY kinematic_link_representation
-  ABSTRACT SUPERTYPE OF (ONEOF(linear_flexible_link_representation, rigid_link_representation))
-  SUBTYPE OF (representation);
-  SELF\representation.context_of_items : geometric_representation_context;
-  SELF\representation.items            : SET [1 : ?] OF kinematic_link_representation_items;
-  represented_link                     : kinematic_link;
-INVERSE
-  associated_shape_representation : SET [0:1] OF kinematic_link_representation_association FOR rep_1;
-END_ENTITY;
-
-ENTITY kinematic_link_representation_association
-  SUBTYPE OF (representation_relationship);
-  SELF\representation_relationship.rep_1 : kinematic_link_representation;
-  SELF\representation_relationship.rep_2 : shape_representation;
-WHERE
-  WR1: (SELF\representation_relationship.rep_2.context_of_items :=:
-        SELF\representation_relationship.rep_1.context_of_items) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN
-        TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY kinematic_loop
-  SUBTYPE OF (edge_loop);
-  SELF\path.edge_list : LIST [1 : ?] OF UNIQUE oriented_joint;
-END_ENTITY;
-
-ENTITY kinematic_pair
-  ABSTRACT SUPERTYPE OF (ONEOF(high_order_kinematic_pair, low_order_kinematic_pair_with_motion_coupling,
-                               low_order_kinematic_pair) ANDOR
-                         actuated_kinematic_pair)
-  SUBTYPE OF (geometric_representation_item, item_defined_transformation);
-  joint                                             : kinematic_joint;
-  SELF\item_defined_transformation.transform_item_1 : rigid_placement;
-  SELF\item_defined_transformation.transform_item_2 : rigid_placement;
-DERIVE
-  associated_link_representations_1     : SET [1 : ?] OF kinematic_link_representation := sort_link_associations(link_representation_associations,
-                                                                                                                 true);
-  associated_link_representations_2     : SET [1 : ?] OF kinematic_link_representation := sort_link_associations(link_representation_associations,
-                                                                                                                 false);
-  SELF\item_defined_transformation.name : label                                        := SELF\representation_item.name;
-INVERSE
-  link_representation_associations : SET [1:?] OF pair_representation_relationship FOR transformation_operator;
-END_ENTITY;
-
-ENTITY kinematic_path
-  ABSTRACT SUPERTYPE OF (ONEOF(kinematic_path_defined_by_nodes, kinematic_path_defined_by_curves))
-  SUBTYPE OF (geometric_representation_item);
-  segments : LIST [1 : ?] OF kinematic_path_segment;
-  t_start  : parameter_value;
-DERIVE
-  n_segments  : INTEGER := SIZEOF(segments);
-  closed_path : LOGICAL := segments[n_segments].transition <> discontinuous;
-WHERE
-  WR1: SIZEOF(QUERY(using_rep
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER' IN
-                           TYPEOF(using_rep.context_of_items)))) =
-       0;
-END_ENTITY;
-
-ENTITY kinematic_path_defined_by_curves
-  SUBTYPE OF (kinematic_path);
-  SELF\kinematic_path.segments : LIST [1 : ?] OF curve_based_path_with_orientation;
-END_ENTITY;
-
-ENTITY kinematic_path_defined_by_nodes
-  SUBTYPE OF (kinematic_path);
-  SELF\kinematic_path.segments : LIST [1 : ?] OF path_node;
-  placement_start              : placement;
-END_ENTITY;
-
-ENTITY kinematic_path_segment
-  ABSTRACT SUPERTYPE OF (ONEOF(path_node, curve_based_path_with_orientation))
-  SUBTYPE OF (founded_item);
-  t_end      : parameter_value;
-  transition : transition_code;
-END_ENTITY;
-
-ENTITY kinematic_property_definition_representation
-  ABSTRACT SUPERTYPE OF (ONEOF(kinematic_property_topology_representation, kinematic_property_mechanism_representation))
-  SUBTYPE OF (property_definition_representation);
-  SELF\property_definition_representation.definition : product_definition_kinematics;
-END_ENTITY;
-
-ENTITY kinematic_property_mechanism_representation
-  SUBTYPE OF (kinematic_property_definition_representation);
-  SELF\property_definition_representation.used_representation : mechanism_representation;
-  base                                                        : kinematic_link_representation;
-WHERE
-  WR1: SIZEOF(QUERY(i
-                    <* used_representation.items
-                    | (base :=: i\representation_relationship.rep_1) OR
-                      (base :=: i\representation_relationship.rep_2))) >
-       0;
-END_ENTITY;
-
-ENTITY kinematic_property_topology_representation
-  SUBTYPE OF (kinematic_property_definition_representation);
-  SELF\property_definition_representation.used_representation : kinematic_topology_representation_select;
-  base                                                        : kinematic_link;
-WHERE
-  WR1: used_representation IN using_representations(base);
-END_ENTITY;
-
-ENTITY kinematic_topology_directed_structure
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF oriented_joint;
-  parent                    : kinematic_topology_structure;
-WHERE
-  WR1: context_of_items :=: parent.context_of_items;
-  WR2: get_kinematic_joints_from_oriented_joints(items) <= parent.items;
-END_ENTITY;
-
-ENTITY kinematic_topology_network_structure
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF kinematic_loop;
-  parent                    : kinematic_topology_structure;
-WHERE
-  WR1: context_of_items :=: parent.context_of_items;
-  WR2: get_kinematic_joints_from_kinematic_loops(items) <= parent.items;
-END_ENTITY;
-
-ENTITY kinematic_topology_structure
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF kinematic_joint;
-WHERE
-  WR1: SIZEOF(QUERY(item <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF(item))) =
-       0;
-END_ENTITY;
-
-ENTITY kinematic_topology_substructure
-  SUBTYPE OF (kinematic_topology_structure);
-  parent : kinematic_topology_structure;
-WHERE
-  WR1: context_of_items :=: parent.context_of_items;
-  WR2: SELF\kinematic_topology_structure.items <= parent\kinematic_topology_structure.items;
-END_ENTITY;
-
-ENTITY kinematic_topology_tree_structure
-  SUBTYPE OF (kinematic_topology_directed_structure);
-END_ENTITY;
-
-ENTITY known_source
-  SUBTYPE OF (external_source, pre_defined_item);
-END_ENTITY;
-
-ENTITY laid_defined_transformation
-  SUBTYPE OF (transformation_with_derived_angle);
-END_ENTITY;
-
-ENTITY laid_orientation_angle
-  SUBTYPE OF (ply_orientation_angle);
-END_ENTITY;
-
-ENTITY language
-  SUBTYPE OF (group);
-WHERE
-  WR1: SELF\group.name <> '';
-END_ENTITY;
-
-ENTITY leader_curve
-  SUBTYPE OF (annotation_curve_occurrence);
-WHERE
-  WR1: SIZEOF(QUERY(ldc
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT.CONTENTS')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >=
-       1;
-END_ENTITY;
-
-ENTITY leader_directed_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(QUERY(l_1
-                    <* SELF\draughting_callout.contents
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >=
-       1;
-  WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
-END_ENTITY;
-
-ENTITY leader_directed_dimension
-  SUBTYPE OF (leader_directed_callout);
-WHERE
-  WR1: SIZEOF(QUERY(con
-                    <* SELF.contents
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) =
-       1;
-END_ENTITY;
-
-ENTITY leader_terminator
-  SUBTYPE OF (terminator_symbol);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(SELF\terminator_symbol.annotated_curve);
-END_ENTITY;
-
-ENTITY length_function
-  SUBTYPE OF (numeric_expression, unary_generic_expression);
-  SELF\unary_generic_expression.operand : string_expression;
-END_ENTITY;
-
-ENTITY length_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY length_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY light_source
-  SUPERTYPE OF (ONEOF(light_source_ambient, light_source_directional, light_source_positional, light_source_spot))
-  SUBTYPE OF (geometric_representation_item);
-  light_colour : colour;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM')) = 0;
-END_ENTITY;
-
-ENTITY light_source_ambient
-  SUBTYPE OF (light_source);
-END_ENTITY;
-
-ENTITY light_source_directional
-  SUBTYPE OF (light_source);
-  orientation : direction;
-END_ENTITY;
-
-ENTITY light_source_positional
-  SUBTYPE OF (light_source);
-  position             : cartesian_point;
-  constant_attenuation : REAL;
-  distance_attenuation : REAL;
-END_ENTITY;
-
-ENTITY light_source_spot
-  SUBTYPE OF (light_source);
-  position               : cartesian_point;
-  orientation            : direction;
-  concentration_exponent : REAL;
-  constant_attenuation   : REAL;
-  distance_attenuation   : REAL;
-  spread_angle           : positive_plane_angle_measure;
-END_ENTITY;
-
-ENTITY like_expression
-  SUBTYPE OF (comparison_expression);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
-        TYPEOF(SELF\binary_generic_expression.operands[1])) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN
-        TYPEOF(SELF\binary_generic_expression.operands[2]));
-END_ENTITY;
-
-ENTITY limits_and_fits;
-  form_variance : label;
-  zone_variance : label;
-  grade         : label;
-  source        : text;
-END_ENTITY;
-
-ENTITY line
-  SUBTYPE OF (curve);
-  pnt : cartesian_point;
-  dir : vector;
-WHERE
-  WR1: dir.dim = pnt.dim;
-END_ENTITY;
-
-ENTITY line_profile_tolerance
-  SUBTYPE OF (geometric_tolerance);
-END_ENTITY;
-
-ENTITY linear_array_component_definition_link
-  SUBTYPE OF (product_definition, product_definition_relationship);
-  SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;
-  SELF\product_definition_relationship.related_product_definition  : linear_array_placement_group_component;
-WHERE
-  WR1: SELF\product_definition_relationship.related_product_definition :<>:
-       SELF\product_definition_relationship.relating_product_definition;
-  WR2: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition],
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK');
-END_ENTITY;
-
-ENTITY linear_array_placement_group_component
-  SUBTYPE OF (array_placement_group);
-END_ENTITY;
-
-ENTITY linear_dimension
-  SUBTYPE OF (dimension_curve_directed_callout);
-END_ENTITY;
-
-ENTITY linear_flexible_and_pinion_pair
-  SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
-  pinion_radius : length_measure;
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY linear_flexible_and_planar_curve_pair
-  SUBTYPE OF (high_order_kinematic_pair);
-  pair_curve  : curve;
-  orientation : BOOLEAN;
-WHERE
-  WR1: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (pair_curve IN r.items))) = 0;
-  WR2: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY linear_flexible_link_representation
-  SUBTYPE OF (kinematic_link_representation);
-END_ENTITY;
-
-ENTITY linear_path
-  SUBTYPE OF (path_node);
-DERIVE
-  SELF\kinematic_path_segment.transition : transition_code := continuous;
-END_ENTITY;
-
-ENTITY linear_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'profile length')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY linearized_table_function
-  SUPERTYPE OF (ONEOF(standard_table_function, regular_table_function, triangular_matrix, symmetric_matrix,
-                      banded_matrix))
-  SUBTYPE OF (explicit_table_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  first                                 : INTEGER;
-DERIVE
-  source : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: function_is_1d_array(source);
-  WR2: member_of(first, source\maths_function.domain);
-END_ENTITY;
-
-ENTITY link_motion_relationship
-  SUBTYPE OF (definitional_representation_relationship, representation_relationship_with_transformation);
-  SELF\representation_relationship.rep_1                                       : link_or_shape_representation;
-  SELF\representation_relationship.rep_2                                       : link_motion_representation_along_path;
-  SELF\representation_relationship_with_transformation.transformation_operator : link_motion_transformation;
-WHERE
-  WR1: transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items;
-  WR2: transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items;
-END_ENTITY;
-
-ENTITY link_motion_representation_along_path
-  SUPERTYPE OF (ONEOF(prescribed_path, resulting_path))
-  SUBTYPE OF (representation);
-  SELF\representation.items            : SET [1 : ?] OF kinematic_path;
-  SELF\representation.context_of_items : geometric_representation_context_with_parameter;
-END_ENTITY;
-
-ENTITY link_motion_transformation
-  SUBTYPE OF (item_defined_transformation);
-  SELF\item_defined_transformation.transform_item_1 : rigid_placement;
-  SELF\item_defined_transformation.transform_item_2 : kinematic_path;
-END_ENTITY;
-
-ENTITY listed_complex_number_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values : LIST [2 : ?] OF REAL;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values) DIV 2];
-WHERE
-  WR1: NOT ODD(SIZEOF(values));
-END_ENTITY;
-
-ENTITY listed_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values      : LIST [1 : ?] OF maths_value;
-  value_range : maths_space;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values)];
-WHERE
-  WR1: expression_is_constant(value_range);
-  WR2: SIZEOF(QUERY(val <* values | NOT (member_of(val, value_range)))) = 0;
-END_ENTITY;
-
-ENTITY listed_integer_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values : LIST [1 : ?] OF INTEGER;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values)];
-END_ENTITY;
-
-ENTITY listed_logical_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values : LIST [1 : ?] OF LOGICAL;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values)];
-END_ENTITY;
-
-ENTITY listed_real_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values : LIST [1 : ?] OF REAL;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values)];
-END_ENTITY;
-
-ENTITY listed_string_data
-  SUBTYPE OF (explicit_table_function, generic_literal);
-  values : LIST [1 : ?] OF STRING;
-DERIVE
-  SELF\explicit_table_function.shape : LIST [1 : ?] OF positive_integer := [SIZEOF(values)];
-END_ENTITY;
-
-ENTITY literal_conjunction
-  SUBTYPE OF (simple_clause);
-END_ENTITY;
-
-ENTITY literal_disjunction
-  SUBTYPE OF (simple_clause);
-END_ENTITY;
-
-ENTITY literal_number
-  ABSTRACT SUPERTYPE OF (ONEOF(int_literal, real_literal))
-  SUBTYPE OF (simple_numeric_expression, generic_literal);
-  the_value : NUMBER;
-END_ENTITY;
-
-ENTITY local_b_spline
-  SUBTYPE OF (representation_item);
-  degree         : INTEGER;
-  knots          : LIST [2 : ?] OF INTEGER;
-  multiplicities : LIST [2 : ?] OF INTEGER;
-WHERE
-  WR1: degree > 0;
-  WR2: SIZEOF(knots) = SIZEOF(multiplicities);
-  WR3: constraints_param_local_b_spline(degree, knots, multiplicities);
-END_ENTITY;
-
-ENTITY local_time;
-  hour_component   : hour_in_day;
-  minute_component : OPTIONAL minute_in_hour;
-  second_component : OPTIONAL second_in_minute;
-  zone             : coordinated_universal_time_offset;
-WHERE
-  WR1: valid_time(SELF);
-END_ENTITY;
-
-ENTITY locally_refined_spline_curve
-  SUBTYPE OF (bounded_curve);
-  b_splines                   : LIST [2 : ?] OF local_b_spline;
-  knot_values                 : spline_knot_values;
-  control_points_list         : LIST [2 : ?] OF cartesian_point;
-  scaling_factors             : LIST [2 : ?] OF REAL;
-  closed_curve                : LOGICAL;
-  locally_refined_spline_type : locally_refined_spline_type_enum;
-  self_intersect              : LOGICAL;
-  domain                      : LIST [2 : 2] OF REAL;
-WHERE
-  WR1: SIZEOF(b_splines) = SIZEOF(control_points_list);
-  WR2: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
-END_ENTITY;
-
-ENTITY locally_refined_spline_surface
-  SUBTYPE OF (bounded_surface);
-  u_b_splines                 : LIST [4 : ?] OF local_b_spline;
-  v_b_splines                 : LIST [4 : ?] OF local_b_spline;
-  u_knots                     : spline_knot_values;
-  v_knots                     : spline_knot_values;
-  control_points_list         : LIST [4 : ?] OF cartesian_point;
-  scaling_factors             : LIST [4 : ?] OF REAL;
-  linearly_independent        : linearly_independent_enum;
-  locally_refined_spline_type : locally_refined_spline_type_enum;
-  self_intersect              : LOGICAL;
-  u_closed                    : LOGICAL;
-  v_closed                    : LOGICAL;
-  domain                      : LIST [2 : 2] OF LIST [2 : 2] OF REAL;
-WHERE
-  WR1: SIZEOF(u_b_splines) = SIZEOF(control_points_list);
-  WR2: SIZEOF(v_b_splines) = SIZEOF(control_points_list);
-  WR3: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
-  WR4: constraints_scaling(SELF.scaling_factors);
-END_ENTITY;
-
-ENTITY locally_refined_spline_volume
-  SUBTYPE OF (volume);
-  u_b_splines                 : LIST [8 : ?] OF local_b_spline;
-  v_b_splines                 : LIST [8 : ?] OF local_b_spline;
-  w_b_splines                 : LIST [8 : ?] OF local_b_spline;
-  u_knots                     : spline_knot_values;
-  v_knots                     : spline_knot_values;
-  w_knots                     : spline_knot_values;
-  control_points_list         : LIST [8 : ?] OF cartesian_point;
-  scaling_factors             : LIST [8 : ?] OF REAL;
-  linearly_independent        : linearly_independent_enum;
-  locally_refined_spline_type : locally_refined_spline_type_enum;
-  domain                      : LIST [3 : 3] OF LIST [2 : 2] OF REAL;
-WHERE
-  WR1: SIZEOF(u_b_splines) = SIZEOF(control_points_list);
-  WR2: SIZEOF(v_b_splines) = SIZEOF(control_points_list);
-  WR3: SIZEOF(w_b_splines) = SIZEOF(control_points_list);
-  WR4: SIZEOF(scaling_factors) = SIZEOF(control_points_list);
-  WR5: constraints_scaling(SELF.scaling_factors);
-END_ENTITY;
-
-ENTITY location;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY location_assignment
-  ABSTRACT SUPERTYPE;
-  id                : identifier;
-  name              : label;
-  description       : OPTIONAL text;
-  assigned_location : location;
-  role              : location_role;
-END_ENTITY;
-
-ENTITY location_in_aggregate_representation_item
-  SUBTYPE OF (compound_representation_item);
-  SELF\compound_representation_item.item_element : location_in_aggregate_item;
-END_ENTITY;
-
-ENTITY location_relationship;
-  id                : identifier;
-  name              : label;
-  description       : OPTIONAL text;
-  relating_location : location;
-  related_location  : location;
-END_ENTITY;
-
-ENTITY location_representation_assignment
-  ABSTRACT SUPERTYPE;
-  id                   : identifier;
-  name                 : label;
-  description          : OPTIONAL text;
-  represented_location : location;
-  role                 : location_representation_role;
-END_ENTITY;
-
-ENTITY location_representation_role;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY location_role;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY location_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) = 1);
-  WR2: (SIZEOF(QUERY(it
-                     <* SELF.items
-                     | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(it))))) =
-        0);
-END_ENTITY;
-
-ENTITY locator
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 5}))) =
-       0;
-  WR2: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'diameter') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'tip radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) <=
-       1;
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'tip angle') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) =
-       1;
-  WR5: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (SIZEOF(QUERY(i
-                                    <* pdr.used_representation.items
-                                    | (i.name = 'base radius') AND
-                                      (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                              TYPEOF(i)) =
-                                       2))) =
-                       1))) <=
-       1;
-END_ENTITY;
-
-ENTITY log_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY log10_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY log2_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY logical_literal
-  SUBTYPE OF (generic_literal);
-  lit_value : LOGICAL;
-END_ENTITY;
-
-ENTITY logical_representation_item
-  SUBTYPE OF (representation_item, logical_literal);
-END_ENTITY;
-
-ENTITY loop
-  SUPERTYPE OF (ONEOF(vertex_loop, edge_loop, poly_loop))
-  SUBTYPE OF (topological_representation_item);
-END_ENTITY;
-
-ENTITY loss_tangent_measure_with_unit
-  SUBTYPE OF (ratio_measure_with_unit);
-END_ENTITY;
-
-ENTITY lot_effectivity
-  SUBTYPE OF (effectivity);
-  effectivity_lot_id   : identifier;
-  effectivity_lot_size : measure_with_unit;
-END_ENTITY;
-
-ENTITY low_order_kinematic_pair
-  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))
-  SUBTYPE OF (kinematic_pair);
-  t_x : BOOLEAN;
-  t_y : BOOLEAN;
-  t_z : BOOLEAN;
-  r_x : BOOLEAN;
-  r_y : BOOLEAN;
-  r_z : BOOLEAN;
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-  WR2: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_2
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY low_order_kinematic_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : low_order_kinematic_pair;
-  actual_translation_x            : length_measure;
-  actual_translation_y            : length_measure;
-  actual_translation_z            : length_measure;
-  actual_rotation_x               : plane_angle_measure;
-  actual_rotation_y               : plane_angle_measure;
-  actual_rotation_z               : plane_angle_measure;
-END_ENTITY;
-
-ENTITY low_order_kinematic_pair_with_motion_coupling
-  ABSTRACT SUPERTYPE OF (ONEOF(gear_pair, linear_flexible_and_pinion_pair, rack_and_pinion_pair, screw_pair))
-  SUBTYPE OF (kinematic_pair);
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_2
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY low_order_kinematic_pair_with_range
-  SUBTYPE OF (low_order_kinematic_pair);
-  lower_limit_actual_rotation_x    : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation_x    : OPTIONAL plane_angle_measure;
-  lower_limit_actual_rotation_y    : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation_y    : OPTIONAL plane_angle_measure;
-  lower_limit_actual_rotation_z    : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation_z    : OPTIONAL plane_angle_measure;
-  lower_limit_actual_translation_x : OPTIONAL length_measure;
-  upper_limit_actual_translation_x : OPTIONAL length_measure;
-  lower_limit_actual_translation_y : OPTIONAL length_measure;
-  upper_limit_actual_translation_y : OPTIONAL length_measure;
-  lower_limit_actual_translation_z : OPTIONAL length_measure;
-  upper_limit_actual_translation_z : OPTIONAL length_measure;
-END_ENTITY;
-
-ENTITY luminous_flux_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_FLUX_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY luminous_flux_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.lumen);
-END_ENTITY;
-
-ENTITY luminous_intensity_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY luminous_intensity_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY machining_process_executable
-  SUBTYPE OF (process_operation);
-END_ENTITY;
-
-ENTITY magnetic_flux_density_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY magnetic_flux_density_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.tesla);
-END_ENTITY;
-
-ENTITY magnetic_flux_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY magnetic_flux_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.weber);
-END_ENTITY;
-
-ENTITY make_from_feature_relationship
-  SUBTYPE OF (component_feature_relationship);
-END_ENTITY;
-
-ENTITY make_from_usage_option
-  SUBTYPE OF (product_definition_usage);
-  ranking           : INTEGER;
-  ranking_rationale : text;
-  quantity          : measure_with_unit;
-WHERE
-  WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
-END_ENTITY;
-
-ENTITY manifold_solid_brep
-  SUBTYPE OF (solid_model);
-  outer : closed_shell;
-END_ENTITY;
-
-ENTITY manifold_subsurface_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN
-                           TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR4: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) =
-       0;
-  WR5: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                TYPEOF(fac)))) =
-                            0)))) =
-       0;
-  WR6: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | (SIZEOF(QUERY(fac <* cfss\connected_face_set.cfs_faces | NOT advanced_face_properties(fac))) =
-                       0))) =
-       0;
-  WR7: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(fcs
-                                        <* cfss\connected_face_set.cfs_faces
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                           TYPEOF(fcs)) AND
-                                          NOT (SIZEOF(QUERY(elp_fbnds
-                                                            <* QUERY(bnds
-                                                                     <* fcs.bounds
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                       TYPEOF(bnds.bound))
-                                                            | NOT (SIZEOF(QUERY(oe
-                                                                                <* elp_fbnds.bound\path.edge_list
-                                                                                | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                        TYPEOF(oe.edge_element)) OR
-                                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE' IN
-                                                                                        TYPEOF(oe.edge_element))))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(fcs
-                                        <* cfss\connected_face_set.cfs_faces
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                           TYPEOF(fcs)) AND
-                                          NOT (SIZEOF(QUERY(elp_fbnds
-                                                            <* QUERY(bnds
-                                                                     <* fcs.bounds
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                       TYPEOF(bnds.bound))
-                                                            | NOT (SIZEOF(QUERY(oe
-                                                                                <* elp_fbnds.bound\path.edge_list
-                                                                                | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                        TYPEOF(oe.edge_start)) AND
-                                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                        TYPEOF(oe.edge_end))))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(cfss
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(fcs
-                                        <* cfss\connected_face_set.cfs_faces
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                           TYPEOF(fcs)) AND
-                                          (NOT (SIZEOF(QUERY(bnds
-                                                             <* fcs.bounds
-                                                             | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
-                                                                           TYPEOF(bnds.bound)) =
-                                                                    1))) =
-                                                0)))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(cfss
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(fcs
-                                         <* cfss\connected_face_set.cfs_faces
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                            TYPEOF(fcs)) AND
-                                           (NOT (SIZEOF(QUERY(elp_fbnds
-                                                              <* QUERY(bnds
-                                                                       <* fcs.bounds
-                                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                         TYPEOF(bnds.bound))
-                                                              | NOT (SIZEOF(QUERY(oe
-                                                                                  <* elp_fbnds.bound\path.edge_list
-                                                                                  | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] *
-                                                                                                TYPEOF(oe.edge_element\edge_curve.edge_geometry)) =
-                                                                                         1))) =
-                                                                     0))) =
-                                                 0)))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(cfss
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(fcs
-                                         <* cfss\connected_face_set.cfs_faces
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                            TYPEOF(fcs)) AND
-                                           (NOT (SIZEOF(QUERY(elp_fbnds
-                                                              <* QUERY(bnds
-                                                                       <* fcs.bounds
-                                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                         TYPEOF(bnds.bound))
-                                                              | NOT (SIZEOF(QUERY(oe
-                                                                                  <* elp_fbnds.bound\path.edge_list
-                                                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                                                                                                               TYPEOF(sc_ag)))) =
-                                                                                           0))))) =
-                                                                     0))) =
-                                                 0)))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(cfss
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(fcs
-                                         <* cfss\connected_face_set.cfs_faces
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN
-                                            TYPEOF(fcs)) AND
-                                           (NOT (SIZEOF(QUERY(elp_fbnds
-                                                              <* QUERY(bnds
-                                                                       <* fcs.bounds
-                                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                         TYPEOF(bnds.bound))
-                                                              | NOT (SIZEOF(QUERY(oe
-                                                                                  <* elp_fbnds.bound\path.edge_list
-                                                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY manifold_surface_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN
-                                            TYPEOF(mr_it)))) >
-                            0)))) =
-       0;
-  WR4: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN
-                               TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(sh
-                                        <* sbsm\shell_based_surface_model.sbsm_boundary
-                                        | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL'] *
-                                                      TYPEOF(sh)) =
-                                               1))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
-                                                                   TYPEOF(fa)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (msf_surface_check(fa\face_surface.face_geometry))))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(bnds
-                                                                                 <* fa.bounds
-                                                                                 | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
-                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
-                                                                                               TYPEOF(bnds.bound)) =
-                                                                                        1))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(elp_fbnds
-                                                                                 <* QUERY(bnds
-                                                                                          <* fa.bounds
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                            TYPEOF(bnds.bound))
-                                                                                 | NOT (SIZEOF(QUERY(oe
-                                                                                                     <* elp_fbnds\path.edge_list
-                                                                                                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                                            TYPEOF(oe.edge_element)))) =
-                                                                                        0))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(sbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(elp_fbnds
-                                                                                 <* QUERY(bnds
-                                                                                          <* fa.bounds
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                            TYPEOF(bnds.bound))
-                                                                                 | NOT (SIZEOF(QUERY(oe_cv
-                                                                                                     <* QUERY(oe
-                                                                                                              <* elp_fbnds\path.edge_list
-                                                                                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                                                TYPEOF(oe.edge_element))
-                                                                                                     | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] *
-                                                                                                                   TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) =
-                                                                                                            1))) =
-                                                                                        0))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(sbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR11: SIZEOF(QUERY(sbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(QUERY(oe
-                                                                                                      <* elp_fbnds\path.edge_list
-                                                                                                      | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                              TYPEOF(oe.edge_element.edge_start)) AND
-                                                                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                              TYPEOF(oe.edge_element.edge_end))))) =
-                                                                                         0))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(sbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(QUERY(oe
-                                                                                                      <* elp_fbnds\path.edge_list
-                                                                                                      | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                                     TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) =
-                                                                                                              1) AND
-                                                                                                             (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                                     TYPEOF(oe.edge_element.edge_end\vertex_point.vertex_geometry)) =
-                                                                                                              1)))) =
-                                                                                         0))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR13: SIZEOF(QUERY(sbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(vlp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                         TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR14: SIZEOF(QUERY(sbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(vlp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) =
-                                                                                         1))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY mapped_item
-  SUBTYPE OF (representation_item);
-  mapping_source : representation_map;
-  mapping_target : representation_item;
-WHERE
-  WR1: acyclic_mapped_representation(SELF);
-END_ENTITY;
-
-ENTITY marking
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     ({2 <= SIZEOF(pdr.used_representation.items) <= 6}))) =
-                      1)) =
-       1;
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'marking text')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'special instructions')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'font name')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'character height')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'character spacing')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'applied shape') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                              TYPEOF(sdr.relating_shape_aspect)))) =
-                                              1)))) =
-                             1)))) =
-        0);
-END_ENTITY;
-
-ENTITY mass_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY mass_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY mated_part_relationship
-  SUBTYPE OF (group, group_assignment, product_definition_shape, product_definition_relationship, shape_aspect);
-  items : SET [0 : ?] OF product_definition;
-DERIVE
-  SELF\group_assignment.assigned_group : mated_part_relationship := SELF;
-  SELF\property_definition.definition  : mated_part_relationship := SELF;
-  SELF\shape_aspect.of_shape           : mated_part_relationship := SELF;
-END_ENTITY;
-
-ENTITY material_designation;
-  name        : label;
-  definitions : SET [1 : ?] OF characterized_definition;
-END_ENTITY;
-
-ENTITY material_designation_characterization;
-  name        : label;
-  description : text;
-  designation : material_designation;
-  property    : characterized_material_property;
-END_ENTITY;
-
-ENTITY material_property
-  SUBTYPE OF (property_definition);
-UNIQUE
-  UR1: SELF\property_definition.name, SELF\property_definition.definition;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT' IN
-        TYPEOF(SELF\property_definition.definition)) OR
-       (SIZEOF(bag_to_set(USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) -
-               QUERY(temp
-                     <* bag_to_set(USEDIN(SELF,
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'))
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_PROPERTY_REPRESENTATION' IN
-                        TYPEOF(temp)))) =
-        0);
-END_ENTITY;
-
-ENTITY material_property_representation
-  SUBTYPE OF (property_definition_representation);
-  dependent_environment : data_environment;
-END_ENTITY;
-
-ENTITY mathematical_description;
-  described  : maths_expression;
-  describing : STRING;
-  encoding   : label;
-END_ENTITY;
-
-ENTITY maths_boolean_variable
-  SUBTYPE OF (maths_variable, boolean_variable);
-WHERE
-  WR1: subspace_of_es(SELF\maths_variable.values_space, es_booleans);
-END_ENTITY;
-
-ENTITY maths_enum_literal
-  SUBTYPE OF (generic_literal);
-  lit_value : maths_enum_atom;
-END_ENTITY;
-
-ENTITY maths_function
-  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))
-  SUBTYPE OF (generic_expression);
-DERIVE
-  domain : tuple_space := derive_function_domain(SELF);
-  range  : tuple_space := derive_function_range(SELF);
-END_ENTITY;
-
-ENTITY maths_integer_variable
-  SUBTYPE OF (maths_variable, int_numeric_variable);
-WHERE
-  WR1: subspace_of_es(SELF\maths_variable.values_space, es_integers);
-END_ENTITY;
-
-ENTITY maths_real_variable
-  SUBTYPE OF (maths_variable, real_numeric_variable);
-WHERE
-  WR1: subspace_of_es(SELF\maths_variable.values_space, es_reals);
-END_ENTITY;
-
-ENTITY maths_space
-  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,
-                               uniform_product_space, extended_tuple_space,
-                               function_space))
-  SUBTYPE OF (generic_expression);
-END_ENTITY;
-
-ENTITY maths_string_variable
-  SUBTYPE OF (maths_variable, string_variable);
-WHERE
-  WR1: subspace_of_es(SELF\maths_variable.values_space, es_strings);
-END_ENTITY;
-
-ENTITY maths_value_precision_qualifier;
-  precision_value : maths_value;
-END_ENTITY;
-
-ENTITY maths_variable
-  SUBTYPE OF (generic_variable);
-  values_space : maths_space;
-  name         : label;
-WHERE
-  WR1: expression_is_constant(values_space);
-END_ENTITY;
-
-ENTITY mating_material
-  SUBTYPE OF (property_definition, group);
-  SELF\property_definition.definition : product_definition_usage_relationship;
-UNIQUE
-  UR1: SELF\property_definition.definition;
-END_ENTITY;
-
-ENTITY mating_material_items
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : mating_material;
-  items                                : SET [1 : ?] OF product_definition;
-END_ENTITY;
-
-ENTITY maximum_function
-  SUBTYPE OF (multiple_arity_function_call);
-END_ENTITY;
-
-ENTITY measure_qualification;
-  name              : label;
-  description       : text;
-  qualified_measure : measure_with_unit;
-  qualifiers        : SET [1 : ?] OF value_qualifier;
-WHERE
-  WR1: SIZEOF(QUERY(temp
-                    <* qualifiers
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp)) OR
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATHS_VALUE_PRECISION_QUALIFIER' IN
-                       TYPEOF(temp)))) <
-       2;
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN
-            TYPEOF(SELF\measure_qualification.qualified_measure));
-END_ENTITY;
-
-ENTITY measure_representation_item
-  SUBTYPE OF (representation_item, measure_with_unit);
-END_ENTITY;
-
-ENTITY measure_with_unit
-  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));
-  value_component : measure_value;
-  unit_component  : unit;
-WHERE
-  WR1: valid_units(SELF);
-END_ENTITY;
-
-ENTITY mechanical_context
-  SUBTYPE OF (product_context);
-WHERE
-  WR1: SELF.discipline_type = 'mechanical';
-END_ENTITY;
-
-ENTITY mechanical_design_and_draughting_relationship
-  SUBTYPE OF (definitional_representation_relationship_with_same_context);
-  SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select;
-  SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
-            TYPEOF(rep_2)) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
-             TYPEOF(rep_1)) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
-  WR3: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
-            TYPEOF(rep_2)) OR
-           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
-             TYPEOF(rep_1)) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
-END_ENTITY;
-
-ENTITY mechanical_design_geometric_presentation_area
-  SUBTYPE OF (presentation_area);
-  SELF\representation.items : SET [1 : ?] OF mechanical_design_geometric_presentation_area_items;
-WHERE
-  WR1: SIZEOF(QUERY(it1
-                    <* SELF.items
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1)) OR
-                          ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
-                           TYPEOF(it1\mapped_item.mapping_source.mapped_representation)))) =
-       0;
-  WR2: SIZEOF(QUERY(pv
-                    <* QUERY(mi1
-                             <* QUERY(it1
-                                      <* SELF.items
-                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN
-                                                TYPEOF(it2)) OR
-                                               (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
-                                                 TYPEOF(it2)) AND
-                                                NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
-                                                     TYPEOF(it2))) AND
-                                               NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
-                                                    TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR
-                                              (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
-                                                TYPEOF(it2)) AND
-                                               NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN
-                                                     TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))))) =
-                           0))) =
-       0;
-  WR3: (SIZEOF(QUERY(ps
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                     | (SIZEOF(QUERY(ps
-                                     <* USEDIN(ais,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                                     | ((ps\presentation_size.size.size_in_x <= 0) OR
-                                        (ps\presentation_size.size.size_in_y <= 0)))) >
-                        0))) =
-        0);
-  WR4: (SIZEOF(QUERY(ps
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
-                        TYPEOF(ps.size.placement)))) =
-        1) AND
-       (SIZEOF(QUERY(ps
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-                        TYPEOF(ps.size.placement)))) =
-        0) OR
-       ((SIZEOF(QUERY(ais
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                      | (SIZEOF(QUERY(ps
-                                      <* USEDIN(ais,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
-                                         TYPEOF(ps.size.placement)))) =
-                         1))) =
-         1) AND
-        (SIZEOF(QUERY(ais
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                      | (SIZEOF(QUERY(ps
-                                      <* USEDIN(ais,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-                                         TYPEOF(ps.size.placement)))) =
-                         0))) =
-         1));
-END_ENTITY;
-
-ENTITY mechanical_design_geometric_presentation_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF mechanical_design_geometric_presentation_representation_items;
-WHERE
-  WR1: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] *
-                                  TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(smi
-                    <* QUERY(si
-                             <* QUERY(it
-                                      <* SELF.items
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
-                                TYPEOF(si\styled_item.item)))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
-                            TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation))))) =
-       0;
-  WR3: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(pss
-                                                            <* psa.styles
-                                                            | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'] *
-                                                                          TYPEOF(pss)) =
-                                                                   1))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psbc
-                                        <* QUERY(psa
-                                                 <* si\styled_item.styles
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
-                                                   TYPEOF(psa))
-                                        | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION'] *
-                                                      TYPEOF(psbc\presentation_style_by_context.style_context)) =
-                                               1))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ps
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                    TYPEOF(ps\point_style.marker_size)) AND
-                                                                   (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                           TYPEOF(ps\point_style.marker_colour)) =
-                                                                    1)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(cs
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                           TYPEOF(cs\curve_style.curve_colour)) =
-                                                                    1) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                    TYPEOF(cs\curve_style.curve_width)) AND
-                                                                   (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                           TYPEOF(cs\curve_style.curve_font)) =
-                                                                    1)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_SIDE_STYLE' IN
-                                                                   TYPEOF(ssu\surface_style_usage.style)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (SIZEOF(QUERY(sses
-                                                                                <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY'] *
-                                                                                              TYPEOF(sses)) =
-                                                                                       1))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (SIZEOF(QUERY(sspl
-                                                                                <* QUERY(sses
-                                                                                         <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE' IN
-                                                                                           TYPEOF(sses))
-                                                                                | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                        TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
-                                                                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                               TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) =
-                                                                                        1) AND
-                                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                        TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width)) AND
-                                                                                       (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                               TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font)) =
-                                                                                        1)))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sscg
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                         TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) =
-                                                                                         1) AND
-                                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                         TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_font)) =
-                                                                                         1)))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sssh
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                         TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) =
-                                                                                         1) AND
-                                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                         TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) =
-                                                                                         1)))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sssc
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                         TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) =
-                                                                                         1) AND
-                                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                         TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font)) =
-                                                                                         1)))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR13: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(ssbd
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                         TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) =
-                                                                                         1) AND
-                                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                         TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width)) AND
-                                                                                        (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) =
-                                                                                         1)))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY mechanical_design_presentation_representation_with_draughting
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF camera_model_d3;
-END_ENTITY;
-
-ENTITY mechanical_design_requirement_item_association
-  SUBTYPE OF (pmi_requirement_item_association);
-  SELF\pmi_requirement_item_association.requirement : requirement_assignment;
-END_ENTITY;
-
-ENTITY mechanical_design_shaded_presentation_area
-  SUBTYPE OF (presentation_area);
-  SELF\representation.items : SET [1 : ?] OF mechanical_design_shaded_presentation_area_items;
-WHERE
-  WR1: SIZEOF(QUERY(it1
-                    <* SELF.items
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR
-                           (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1)) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
-                             TYPEOF(it1\mapped_item.mapping_source.mapped_representation)))))) =
-       0;
-  WR2: SIZEOF(QUERY(pv
-                    <* QUERY(mi1
-                             <* QUERY(it1
-                                      <* SELF.items
-                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN
-                                                TYPEOF(it2)) OR
-                                               (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
-                                                 TYPEOF(it2)) AND
-                                                NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
-                                                     TYPEOF(it2))) AND
-                                               NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
-                                                    TYPEOF(it2\mapped_item.mapping_source.mapped_representation))) OR
-                                              (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
-                                                TYPEOF(it2)) AND
-                                               NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN
-                                                     TYPEOF(it2\mapped_item.mapping_source.mapped_representation)))))) =
-                           0))) =
-       0;
-  WR3: (SIZEOF(QUERY(ps
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SET' IN
-                                TYPEOF(ais.in_set))
-                     | SIZEOF(QUERY(ps
-                                    <* USEDIN(pset,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                                    | NOT ((ps\presentation_size.size.size_in_x > 0) AND
-                                           (ps\presentation_size.size.size_in_y > 0)))) =
-                       0)) =
-        0);
-  WR4: (SIZEOF(QUERY(psize
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
-                       TYPEOF(psize.size.placement))) =
-        1) AND
-       (SIZEOF(QUERY(pset
-                     <* QUERY(ais
-                              <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SET' IN
-                                TYPEOF(ais.in_set))
-                     | SIZEOF(QUERY(psize
-                                    <* USEDIN(pset,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')
-                                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN
-                                           TYPEOF(psize.size.placement)))) =
-                       0)) =
-        0);
-  WR5: SIZEOF(QUERY(pv
-                    <* QUERY(mi1
-                             <* QUERY(it1
-                                      <* SELF.items
-                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it1))
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
-                               TYPEOF(mi1\mapped_item.mapping_source.mapped_representation))
-                    | NOT (SIZEOF(QUERY(ci
-                                        <* pv\mapped_item.mapping_source.mapped_representation\representation.items
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_IMAGE_3D_WITH_SCALE' IN
-                                           TYPEOF(ci)) AND
-                                          (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3',
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR',
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_WITH_LIGHT_SOURCES'] *
-                                                  TYPEOF(ci\mapped_item.mapping_source.mapping_origin)) =
-                                           1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY mechanical_design_shaded_presentation_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF mechanical_design_shaded_presentation_representation_items;
-WHERE
-  WR1: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] *
-                                  TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(smi
-                    <* QUERY(si
-                             <* QUERY(it
-                                      <* SELF.items
-                                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it)))
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
-                                TYPEOF(si\styled_item.item)))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
-                            TYPEOF(smi\styled_item.item\mapped_item.mapping_source.mapped_representation))))) =
-       0;
-  WR3: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(pss
-                                                            <* psa.styles
-                                                            | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'] *
-                                                                          TYPEOF(pss)) =
-                                                                   1))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psbc
-                                        <* QUERY(psa
-                                                 <* si\styled_item.styles
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
-                                                   TYPEOF(psa))
-                                        | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM',
-                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION'] *
-                                                      TYPEOF(psbc\presentation_style_by_context.style_context)) =
-                                               1))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ps
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MARKER_TYPE' IN
-                                                                    TYPEOF(ps\point_style.marker)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                    TYPEOF(ps\point_style.marker_size)) AND
-                                                                   (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                           TYPEOF(ps\point_style.marker_colour)) =
-                                                                    1)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(cs
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                           TYPEOF(cs\curve_style.curve_colour)) =
-                                                                    1) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                    TYPEOF(cs\curve_style.curve_width)) AND
-                                                                   (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                           TYPEOF(cs\curve_style.curve_font)) =
-                                                                    1)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_SIDE_STYLE' IN
-                                                                   TYPEOF(ssu\surface_style_usage.style)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (SIZEOF(QUERY(sses
-                                                                                <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA',
-                                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_RENDERING'] *
-                                                                                              TYPEOF(sses)) =
-                                                                                       1))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(si
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                    | NOT (SIZEOF(QUERY(psa
-                                        <* si\styled_item.styles
-                                        | NOT (SIZEOF(QUERY(ssu
-                                                            <* QUERY(pss
-                                                                     <* psa.styles
-                                                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                       TYPEOF(pss))
-                                                            | NOT (SIZEOF(QUERY(ssfa
-                                                                                <* QUERY(sses
-                                                                                         <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA' IN
-                                                                                           TYPEOF(sses))
-                                                                                | NOT (SIZEOF(QUERY(fss
-                                                                                                    <* ssfa\surface_style_fill_area.fill_area.fill_styles
-                                                                                                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_COLOUR' IN
-                                                                                                            TYPEOF(fss)) AND
-                                                                                                           (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                                   TYPEOF(fss\fill_area_style_colour.fill_colour)) =
-                                                                                                            1)))) =
-                                                                                       0))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sspl
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_PARAMETER_LINE' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                          TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour)) =
-                                                                                          1) AND
-                                                                                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                          TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                 TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font)) =
-                                                                                          1)) OR
-                                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
-                                                                                          TYPEOF(sspl\surface_style_parameter_line.style_of_parameter_lines)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR11: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sscg
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_CONTROL_GRID' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                          TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_colour)) =
-                                                                                          1) AND
-                                                                                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                          TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_width)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                 TYPEOF(sscg\surface_style_control_grid.style_of_control_grid\curve_style.curve_font)) =
-                                                                                          1)) OR
-                                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
-                                                                                          TYPEOF(sscg\surface_style_control_grid.style_of_control_grid)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR12: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sssh
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SILHOUETTE' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                          TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) =
-                                                                                          1) AND
-                                                                                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                          TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_width)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                 TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) =
-                                                                                          1)) OR
-                                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
-                                                                                          TYPEOF(sssh\surface_style_silhouette.style_of_silhouette)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(sssh\surface_style_silhouette.style_of_silhouette\curve_style_rendering.rendering_properties.rendered_colour)) =
-                                                                                          1))))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR13: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(sssc
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_SEGMENTATION_CURVE' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                          TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_colour)) =
-                                                                                          1) AND
-                                                                                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                          TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                 TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font)) =
-                                                                                          1)) OR
-                                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
-                                                                                          TYPEOF(sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR14: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(ssbd
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_BOUNDARY' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                                                          TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_colour)) =
-                                                                                          1) AND
-                                                                                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-                                                                                          TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_width)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
-                                                                                                 TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font)) =
-                                                                                          1)) OR
-                                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING' IN
-                                                                                          TYPEOF(ssbd\surface_style_boundary.style_of_boundary)) AND
-                                                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                                 TYPEOF(ssbd\surface_style_boundary.style_of_boundary\curve_style_rendering.rendering_properties.rendered_colour)) =
-                                                                                          1))))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR15: SIZEOF(QUERY(si
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(it))
-                     | NOT (SIZEOF(QUERY(psa
-                                         <* si\styled_item.styles
-                                         | NOT (SIZEOF(QUERY(ssu
-                                                             <* QUERY(pss
-                                                                      <* psa.styles
-                                                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
-                                                                        TYPEOF(pss))
-                                                             | NOT (SIZEOF(QUERY(ssre
-                                                                                 <* QUERY(sses
-                                                                                          <* ssu\surface_style_usage.style\surface_side_style.styles
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_RENDERING' IN
-                                                                                            TYPEOF(sses))
-                                                                                 | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
-                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_PRE_DEFINED_COLOUR'] *
-                                                                                               TYPEOF(ssre\surface_style_rendering.surface_colour)) =
-                                                                                        1))) =
-                                                                    0))) =
-                                                0))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY mechanism_representation
-  SUBTYPE OF (representation);
-  SELF\representation.context_of_items : geometric_representation_context;
-  SELF\representation.items            : SET [1 : ?] OF pair_representation_relationship;
-  represented_topology                 : kinematic_topology_representation_select;
-DERIVE
-  represented_joints : SET [1 : ?] OF kinematic_joint := collect_joints(items);
-WHERE
-  WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_STRUCTURE' IN
-         TYPEOF(represented_topology)) AND
-        (represented_joints :=: represented_topology.items)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE' IN
-         TYPEOF(represented_topology)) AND
-        (represented_joints :=: get_kinematic_joints_from_oriented_joints(represented_topology.items))) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE' IN
-         TYPEOF(represented_topology)) AND
-        (represented_joints :=: get_kinematic_joints_from_kinematic_loops(represented_topology.items)));
-END_ENTITY;
-
-ENTITY mechanism_state_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF pair_value;
-  represented_mechanism     : mechanism_representation;
-DERIVE
-  SELF\representation.context_of_items : geometric_representation_context := represented_mechanism.context_of_items;
-END_ENTITY;
-
-ENTITY message_contents_assignment
-  SUBTYPE OF (group_assignment);
-  items                                : SET [1 : ?] OF representation;
-  SELF\group_assignment.assigned_group : message_contents_group;
-DERIVE
-  message_contents_group : message_contents_group := SELF\group_assignment.assigned_group;
-END_ENTITY;
-
-ENTITY message_contents_group
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY message_relationship
-  SUBTYPE OF (product_relationship);
-  SELF\product_relationship.relating_product : structured_message;
-  SELF\product_relationship.related_product  : structured_message;
-DERIVE
-  related_message  : structured_message := SELF\product_relationship.related_product;
-  relating_message : structured_message := SELF\product_relationship.relating_product;
-END_ENTITY;
-
-ENTITY min_and_major_ply_orientation_basis
-  SUBTYPE OF (representation_item_relationship, geometric_representation_item);
-  SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d;
-  SELF\representation_item_relationship.related_representation_item  : axis2_placement_3d;
-DERIVE
-  major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item;
-  minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item;
-END_ENTITY;
-
-ENTITY minimum_function
-  SUBTYPE OF (multiple_arity_function_call);
-END_ENTITY;
-
-ENTITY minus_expression
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY minus_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY mismatch_of_arcwise_connected_curves
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_edge_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_edge_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
-                                                                                                                    ddns_point_on_curve];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
-        'discretization_distance_tolerance');
-END_ENTITY;
-
-ENTITY mismatch_of_arcwise_connected_surfaces
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
-                                                                                                                    ddns_point_on_surface];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
-        'discretization_distance_tolerance');
-END_ENTITY;
-
-ENTITY mismatch_of_arcwise_connected_surfaces_boundary
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content,
-              a3m_equivalence_inspection_requirement_with_values);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
-                                                                                                                    ddns_point_on_curve];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-        TYPEOF(SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1])) AND
-       (SELF\a3m_equivalence_inspection_requirement_with_values.applied_values[1].name =
-        'discretization_distance_tolerance');
-END_ENTITY;
-
-ENTITY mismatch_of_component
-  SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ma_detected_difference_type_name := [ddna_assembly_component_usage];
-END_ENTITY;
-
-ENTITY mismatch_of_edges
-  SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_edge_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_edge,
-                                                                                                                    ddns_several_edges];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY mismatch_of_faces
-  SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_face,
-                                                                                                                    ddns_several_faces];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY mismatch_of_point_cloud_and_related_geometry
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [2 : 2] OF a3ms_element_type_name             := [etns_connected_edge_set,
-                                                                                                                    etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_point_cloud_dataset];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [3 : 3] OF a3ms_detected_difference_type_name := [ddns_cartesian_point,
-                                                                                                                    ddns_point_on_curve,
-                                                                                                                    ddns_point_on_surface];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [1 : 1] OF a3ms_accuracy_type_name            := [atns_length_measure];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY mismatch_of_points
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_numerical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_vertex_point];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_vertex_point];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_length_measure;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_no_element];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold)) AND
-       (a3ms_get_value_limit_type(SELF\a3m_equivalence_criterion.assessment_specification\a3m_equivalence_assessment_by_numerical_test.threshold) =
-        SELF.measured_data_type);
-END_ENTITY;
-
-ENTITY mismatch_of_underlying_edge_geometry
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_edge];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY mismatch_of_underlying_face_geometry
-  SUBTYPE OF (a3m_equivalence_criterion_of_detailed_shape_data_content);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.comparing_element_types   : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [1 : 1] OF a3ms_detected_difference_type_name := [ddns_face];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY missing_assembly_constraint
-  SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ma_detected_difference_type_name := [ddna_no_element,
-                                                                                                                    ddna_binary_assembly_constraint];
-END_ENTITY;
-
-ENTITY missing_component
-  SUBTYPE OF (a3m_equivalence_criterion_of_assembly_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ma_measured_data_type_name                       := mdna_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ma_detected_difference_type_name := [ddna_no_element,
-                                                                                                                    ddna_assembly_component_usage];
-END_ENTITY;
-
-ENTITY missing_edge
-  SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_edge_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_no_element,
-                                                                                                                    ddns_edge];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY missing_face
-  SUBTYPE OF (a3m_equivalence_criterion_of_shape_data_structure);
-  SELF\a3m_equivalence_criterion.assessment_specification : a3m_equivalence_assessment_by_logical_test;
-DERIVE
-  SELF\a3m_equivalence_criterion.compared_element_types    : LIST [1 : 1] OF a3ms_element_type_name             := [etns_connected_face_set];
-  SELF\a3m_equivalence_criterion.measured_data_type        : a3ms_measured_data_type_name                       := mdns_boolean_value;
-  SELF\a3m_equivalence_criterion.detected_difference_types : LIST [2 : 2] OF a3ms_detected_difference_type_name := [ddns_no_element,
-                                                                                                                    ddns_face];
-  SELF\a3m_equivalence_criterion.accuracy_types            : LIST [0 : 0] OF a3ms_accuracy_type_name            := [];
-END_ENTITY;
-
-ENTITY mod_expression
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY model_geometric_view
-  SUBTYPE OF (characterized_item_within_representation);
-  SELF\characterized_item_within_representation.rep  : draughting_model;
-  SELF\characterized_item_within_representation.item : camera_model;
-END_ENTITY;
-
-ENTITY modified_geometric_tolerance
-  SUBTYPE OF (geometric_tolerance);
-  modifier : limit_condition;
-END_ENTITY;
-
-ENTITY modified_pattern
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: SIZEOF(QUERY(fcr
-                    <* QUERY(sar
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                               TYPEOF(sar))
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE'] *
-                              TYPEOF(fcr.related_shape_aspect.of_shape.definition)) >=
-                       1) AND
-                      (fcr.description = 'base shape'))) =
-       1;
-  WR2: SIZEOF(QUERY(fcr
-                    <* QUERY(sar
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                               TYPEOF(sar))
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
-                              TYPEOF(fcr.related_shape_aspect.of_shape.definition)) =
-                       1) AND
-                      (fcr.description = 'base pattern'))) =
-       1;
-  WR3: SIZEOF(QUERY(sar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                    | (SIZEOF(QUERY(msar
-                                    <* USEDIN(sar.related_shape_aspect,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OFFSET_MEMBERSHIP',
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OMIT_MEMBERSHIP'] *
-                                              TYPEOF(sar)) =
-                                       1) AND
-                                      (sar.description = 'modified pattern') AND (sar :<>: msar))) >=
-                       1))) =
-       0;
-END_ENTITY;
-
-ENTITY modified_solid
-  ABSTRACT SUPERTYPE OF (ONEOF(edge_blended_solid, sculptured_solid, shelled_solid,
-                               modified_solid_with_placed_configuration))
-  SUBTYPE OF (solid_model);
-  rationale  : text;
-  base_solid : base_solid_select;
-END_ENTITY;
-
-ENTITY modified_solid_with_placed_configuration
-  ABSTRACT SUPERTYPE OF (ONEOF(solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern))
-  SUBTYPE OF (modified_solid);
-  placing : axis2_placement_3d;
-END_ENTITY;
-
-ENTITY modify_element
-  SUBTYPE OF (change_element);
-END_ENTITY;
-
-ENTITY moments_of_inertia_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) = 1) AND
-       (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM' IN
-                        TYPEOF(i)) AND
-                       (i.name = 'moments of inertia matrix'))) =
-        1);
-  WR2: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIST_REPRESENTATION_ITEM' IN
-                       TYPEOF(i\compound_representation_item.item_element)) AND
-                      value_range_aggregate_rep_item(i\compound_representation_item.item_element))) =
-       1;
-END_ENTITY;
-
-ENTITY mult_expression
-  SUBTYPE OF (multiple_arity_numeric_expression);
-END_ENTITY;
-
-ENTITY multi_language_attribute_assignment
-  SUBTYPE OF (attribute_value_assignment);
-  items : SET [1 : ?] OF multi_language_attribute_item;
-DERIVE
-  translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class;
-INVERSE
-  language_indication : SET [1:1] OF attribute_language_assignment FOR items;
-WHERE
-  WR1: (SELF\attribute_value_assignment.role.name = 'alternate language');
-  WR2: SIZEOF(QUERY(ala
-                    <* language_indication
-                    | (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND
-                      (ala\attribute_classification_assignment.role.name = 'translated'))) =
-       1;
-  WR3: SELF\attribute_value_assignment.attribute_name <> '';
-  WR4: SIZEOF(QUERY(ci
-                    <* items
-                    | SIZEOF(QUERY(ata
-                                   <* USEDIN(ci,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(ci
-                    <* items
-                    | SIZEOF(QUERY(ata
-                                   <* USEDIN(ci,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY multi_level_reference_designator
-  SUBTYPE OF ( assembly_component_usage );
-  location  : LIST [1 : ?] OF UNIQUE next_assembly_usage_occurrence;
-DERIVE
-  SELF\product_definition_relationship.relating_product_definition : product_definition := location[1]\product_definition_relationship.relating_product_definition;
-  SELF\product_definition_relationship.related_product_definition  : product_definition_or_reference := location[HIINDEX(location)]\product_definition_relationship.related_product_definition;
-  leaf : product_definition_or_reference := related_product_definition;
-  root : product_definition := relating_product_definition;
-UNIQUE
-  UR1: location;
-WHERE
-  WR1: unambiguously_specified_multi_level_reference_designator(location);
-  WR2: SIZEOF( QUERY ( cp <* location | NOT EXISTS(cp\assembly_component_usage.reference_designator ))) = 0;
-END_ENTITY;
-
-ENTITY multiple_arity_boolean_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(and_expression, or_expression))
-  SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF boolean_expression;
-END_ENTITY;
-
-ENTITY multiple_arity_function_call
-  ABSTRACT SUPERTYPE OF (ONEOF(maximum_function, minimum_function))
-  SUBTYPE OF (multiple_arity_numeric_expression);
-END_ENTITY;
-
-ENTITY multiple_arity_generic_expression
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (generic_expression);
-  operands : LIST [2 : ?] OF generic_expression;
-END_ENTITY;
-
-ENTITY multiple_arity_numeric_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(plus_expression, mult_expression, multiple_arity_function_call))
-  SUBTYPE OF (numeric_expression, multiple_arity_generic_expression);
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF numeric_expression;
-END_ENTITY;
-
-ENTITY multiply_defined_cartesian_points
-  SUBTYPE OF (multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_curves
-  SUBTYPE OF (multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_directions
-  SUBTYPE OF (multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY multiply_defined_edges
-  SUBTYPE OF (topology_related_to_multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_faces
-  SUBTYPE OF (topology_related_to_multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_curves, multiply_defined_surfaces, multiply_defined_cartesian_points,
-                               multiply_defined_directions, multiply_defined_placements))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY multiply_defined_placements
-  SUBTYPE OF (multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  assessment_specification_2                                 : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR3: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_AND_LENGTH_PAIR');
-  WR4: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT']);
-  WR5: validate_locations_of_extreme_value_type(SELF, []);
-  WR6: validate_accuracy_types(SELF, []);
-  WR7: SIZEOF(QUERY(sdqr
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
-                       TYPEOF(sdqr)) AND
-                      (SIZEOF(QUERY(sdqiir
-                                    <* bag_to_set(USEDIN(sdqr,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY multiply_defined_solids
-  SUBTYPE OF (inapt_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_surfaces
-  SUBTYPE OF (multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY multiply_defined_vertices
-  SUBTYPE OF (topology_related_to_multiply_defined_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY name_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_name : label;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY name_attribute;
-  attribute_value : label;
-  named_item      : name_attribute_select;
-END_ENTITY;
-
-ENTITY named_unit
-  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));
-  dimensions : dimensional_exponents;
-END_ENTITY;
-
-ENTITY narrow_surface_patch
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  width_tolerance                                            : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY near_point_relationship
-  SUBTYPE OF (representation_item_relationship);
-  SELF\representation_item_relationship.relating_representation_item : curve_or_surface_constraint_element;
-  SELF\representation_item_relationship.related_representation_item  : point;
-END_ENTITY;
-
-ENTITY nearly_degenerate_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(small_area_surface, short_length_curve, entirely_narrow_surface))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY nearly_degenerate_surface_boundary
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDARY_CURVE_OF_B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY nearly_degenerate_surface_patch
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY neutral_sketch_representation
-  SUBTYPE OF (shape_representation);
-  neutral_sketch_semantics  : curves_or_area;
-  SELF\representation.items : SET [1 : ?] OF sketch_element_select;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* items
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
-                            TYPEOF(q)) AND
-                           (q\geometric_representation_item.dim = 3)))) =
-       0;
-END_ENTITY;
-
-ENTITY next_assembly_usage_occurrence
-  SUBTYPE OF (assembly_component_usage);
-DERIVE
-  product_definition_occurrence_id : identifier := SELF\product_definition_relationship.related_product_definition\product_definition_occurrence.id;
-UNIQUE
-  UR1: SELF\assembly_component_usage.reference_designator,
-       SELF\product_definition_relationship.relating_product_definition;
-  UR2: product_definition_occurrence_id, SELF\product_definition_relationship.relating_product_definition;
-END_ENTITY;
-
-ENTITY ngon_closed_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                          TYPEOF(pdr.used_representation))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'orientation'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                               TYPEOF(it)) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                               TYPEOF(it\measure_with_unit.value_component)) AND
-                                                              (it.name = 'number of sides'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name IN
-                                                               ['circumscribed diameter','diameter across flats']))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'corner radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY non_agreed_accuracy_parameter_usage
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT']);
-END_ENTITY;
-
-ENTITY non_agreed_scale_usage
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_TRANSFORMATION_OPERATOR_3D']);
-END_ENTITY;
-
-ENTITY non_agreed_unit_usage
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT']);
-END_ENTITY;
-
-ENTITY non_manifold_at_edge
-  SUBTYPE OF (inapt_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY non_manifold_at_vertex
-  SUBTYPE OF (inapt_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY non_manifold_surface_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(it)) =
-                      1)) >
-       0;
-  WR3: SIZEOF(QUERY(mi
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))
-                    | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL' IN
-                                            TYPEOF(mr_it)))) >
-                            0)))) =
-       0;
-  WR4: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE'] *
-                                                                          TYPEOF(fa)) =
-                                                                   1))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
-                                                                        TYPEOF(fa)))
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(f_sf)) OR
-                                                                   (nmsf_surface_check(f_sf\face_surface.face_geometry))))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN
-                                                                        TYPEOF(fa)))
-                                                            | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR7: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(bnds
-                                                                                 <* fa.bounds
-                                                                                 | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
-                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'] *
-                                                                                               TYPEOF(bnds.bound)) =
-                                                                                        1))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(elp_fbnds
-                                                                                 <* QUERY(bnds
-                                                                                          <* fa.bounds
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                            TYPEOF(bnds.bound))
-                                                                                 | NOT (SIZEOF(QUERY(oe
-                                                                                                     <* elp_fbnds\path.edge_list
-                                                                                                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                                            TYPEOF(oe.edge_element)))) =
-                                                                                        0))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(fbsm
-                    <* QUERY(it
-                             <* SELF.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                    TYPEOF(fa)) OR
-                                                                   (SIZEOF(QUERY(elp_fbnds
-                                                                                 <* QUERY(bnds
-                                                                                          <* fa.bounds
-                                                                                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                            TYPEOF(bnds.bound))
-                                                                                 | NOT (SIZEOF(QUERY(oe_cv
-                                                                                                     <* QUERY(oe
-                                                                                                              <* elp_fbnds\path.edge_list
-                                                                                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                                                TYPEOF(oe.edge_element))
-                                                                                                     | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-                                                                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] *
-                                                                                                                   TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) =
-                                                                                                            1))) =
-                                                                                        0))) =
-                                                                    0)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(fbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR11: SIZEOF(QUERY(fbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(QUERY(oe
-                                                                                                      <* elp_fbnds\path.edge_list
-                                                                                                      | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                              TYPEOF(oe.edge_element.edge_start)) AND
-                                                                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                                              TYPEOF(oe.edge_element.edge_end))))) =
-                                                                                         0))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(fbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(elp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(QUERY(oe
-                                                                                                      <* elp_fbnds\path.edge_list
-                                                                                                      | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                                     TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) =
-                                                                                                              1) AND
-                                                                                                             (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                                     TYPEOF(oe.edge_element.edge_end\vertex_point.vertex_geometry)) =
-                                                                                                              1)))) =
-                                                                                         0))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR13: SIZEOF(QUERY(fbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(vlp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                         TYPEOF(vlp_fbnds\vertex_loop.loop_vertex)))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-  WR14: SIZEOF(QUERY(fbsm
-                     <* QUERY(it
-                              <* SELF.items
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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 (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN
-                                                                     TYPEOF(fa)) OR
-                                                                    (SIZEOF(QUERY(vlp_fbnds
-                                                                                  <* QUERY(bnds
-                                                                                           <* fa.bounds
-                                                                                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                                             TYPEOF(bnds.bound))
-                                                                                  | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                                                                                                TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) =
-                                                                                         1))) =
-                                                                     0)))) =
-                                                0))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY non_referenced_coordinate_system
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D']);
-END_ENTITY;
-
-ENTITY non_smooth_geometry_transition_across_edge
-  ABSTRACT SUPERTYPE OF (ONEOF(g1_discontinuity_between_adjacent_faces, g2_discontinuity_between_adjacent_faces))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY non_uniform_zone_definition
-  SUBTYPE OF (tolerance_zone_definition);
-END_ENTITY;
-
-ENTITY not_expression
-  SUBTYPE OF (unary_boolean_expression);
-  SELF\unary_generic_expression.operand : boolean_expression;
-END_ENTITY;
-
-ENTITY null_representation_item
-  SUBTYPE OF (representation_item);
-END_ENTITY;
-
-ENTITY numeric_defined_function
-  ABSTRACT SUPERTYPE OF (ONEOF(integer_defined_function, real_defined_function))
-  SUBTYPE OF (numeric_expression, defined_function);
-END_ENTITY;
-
-ENTITY numeric_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(simple_numeric_expression, unary_numeric_expression, binary_numeric_expression,
-                               multiple_arity_numeric_expression, length_function, value_function,
-                               numeric_defined_function))
-  SUBTYPE OF (expression);
-DERIVE
-  is_int       : BOOLEAN := is_int_expr(SELF);
-  sql_mappable : BOOLEAN := is_sql_mappable(SELF);
-END_ENTITY;
-
-ENTITY numeric_variable
-  SUPERTYPE OF (ONEOF(int_numeric_variable, real_numeric_variable))
-  SUBTYPE OF (simple_numeric_expression, variable);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY object_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY odd_function
-  SUBTYPE OF (unary_boolean_expression);
-  SELF\unary_generic_expression.operand : numeric_expression;
-WHERE
-  WR1: is_int_expr(operand);
-END_ENTITY;
-
-ENTITY offset_curve_2d
-  SUBTYPE OF (curve);
-  basis_curve    : curve;
-  distance       : length_measure;
-  self_intersect : LOGICAL;
-WHERE
-  WR1: basis_curve.dim = 2;
-END_ENTITY;
-
-ENTITY offset_curve_3d
-  SUBTYPE OF (curve);
-  basis_curve    : curve;
-  distance       : length_measure;
-  self_intersect : LOGICAL;
-  ref_direction  : direction;
-WHERE
-  WR1: (basis_curve.dim = 3) AND (ref_direction.dim = 3);
-END_ENTITY;
-
-ENTITY offset_surface
-  SUBTYPE OF (surface);
-  basis_surface  : surface;
-  distance       : length_measure;
-  self_intersect : LOGICAL;
-END_ENTITY;
-
-ENTITY one_direction_repeat_factor
-  SUBTYPE OF (geometric_representation_item);
-  repeat_factor : vector;
-END_ENTITY;
-
-ENTITY open_closed_shell
-  SUBTYPE OF (erroneous_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY open_edge_loop
-  SUBTYPE OF (erroneous_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY open_path
-  SUBTYPE OF (path);
-DERIVE
-  ne : INTEGER := SIZEOF(SELF\path.edge_list);
-WHERE
-  WR1: (SELF\path.edge_list[1].edge_element.edge_start) :<>: (SELF\path.edge_list[ne].edge_element.edge_end);
-END_ENTITY;
-
-ENTITY open_path_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'profile limit'))) <=
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY open_shell
-  SUBTYPE OF (connected_face_set);
-END_ENTITY;
-
-ENTITY or_expression
-  SUBTYPE OF (multiple_arity_boolean_expression);
-END_ENTITY;
-
-ENTITY ordinal_date
-  SUBTYPE OF (date);
-  day_component : day_in_year_number;
-WHERE
-  WR1: (NOT leap_year(SELF.year_component) AND {1 <= day_component <= 365}) OR
-       (leap_year(SELF.year_component) AND {1 <= day_component <= 366});
-END_ENTITY;
-
-ENTITY ordinate_dimension
-  SUBTYPE OF (projection_directed_callout);
-END_ENTITY;
-
-ENTITY organization;
-  id          : OPTIONAL identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY organization_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_organization : organization;
-  role                  : organization_role;
-END_ENTITY;
-
-ENTITY organization_relationship;
-  name                  : label;
-  description           : OPTIONAL text;
-  relating_organization : organization;
-  related_organization  : organization;
-END_ENTITY;
-
-ENTITY organization_role;
-  name : label;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY organization_type;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY organization_type_assignment
-  ABSTRACT SUPERTYPE;
-  id                         : identifier;
-  name                       : label;
-  description                : OPTIONAL text;
-  assigned_organization_type : organization_type;
-  role                       : organization_type_role;
-END_ENTITY;
-
-ENTITY organization_type_role;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY organizational_address
-  SUBTYPE OF (address);
-  organizations : SET [1 : ?] OF organization;
-  description   : OPTIONAL text;
-END_ENTITY;
-
-ENTITY organizational_project;
-  name                      : label;
-  description               : OPTIONAL text;
-  responsible_organizations : SET [1 : ?] OF organization;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY organizational_project_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_organizational_project : organizational_project;
-  role                            : organizational_project_role;
-END_ENTITY;
-
-ENTITY organizational_project_relationship;
-  name                            : label;
-  description                     : OPTIONAL text;
-  relating_organizational_project : organizational_project;
-  related_organizational_project  : organizational_project;
-END_ENTITY;
-
-ENTITY organizational_project_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY oriented_closed_shell
-  SUBTYPE OF (closed_shell);
-  closed_shell_element : closed_shell;
-  orientation          : BOOLEAN;
-DERIVE
-  SELF\connected_face_set.cfs_faces : SET [1 : ?] OF face := conditional_reverse(SELF.orientation,
-                                                                                 SELF.closed_shell_element.cfs_faces);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN
-            TYPEOF(SELF.closed_shell_element));
-END_ENTITY;
-
-ENTITY oriented_edge
-  SUBTYPE OF (edge);
-  edge_element : edge;
-  orientation  : BOOLEAN;
-DERIVE
-  SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation, SELF.edge_element.edge_start,
-                                                  SELF.edge_element.edge_end);
-  SELF\edge.edge_end   : vertex := boolean_choose(SELF.orientation, SELF.edge_element.edge_end,
-                                                  SELF.edge_element.edge_start);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF(SELF.edge_element));
-END_ENTITY;
-
-ENTITY oriented_face
-  SUBTYPE OF (face);
-  face_element : face;
-  orientation  : BOOLEAN;
-DERIVE
-  SELF\face.bounds : SET [1 : ?] OF face_bound := conditional_reverse(SELF.orientation, SELF.face_element.bounds);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF(SELF.face_element));
-END_ENTITY;
-
-ENTITY oriented_joint
-  SUBTYPE OF (oriented_edge);
-  SELF\oriented_edge.edge_element : kinematic_joint;
-END_ENTITY;
-
-ENTITY oriented_open_shell
-  SUBTYPE OF (open_shell);
-  open_shell_element : open_shell;
-  orientation        : BOOLEAN;
-DERIVE
-  SELF\connected_face_set.cfs_faces : SET [1 : ?] OF face := conditional_reverse(SELF.orientation,
-                                                                                 SELF.open_shell_element.cfs_faces);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF(SELF.open_shell_element));
-END_ENTITY;
-
-ENTITY oriented_path
-  SUBTYPE OF (path);
-  path_element : path;
-  orientation  : BOOLEAN;
-DERIVE
-  SELF\path.edge_list : LIST [1 : ?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation,
-                                                                                    SELF.path_element.edge_list);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(SELF.path_element));
-END_ENTITY;
-
-ENTITY oriented_surface
-  SUBTYPE OF (surface);
-  orientation : BOOLEAN;
-END_ENTITY;
-
-ENTITY oriented_tolerance_zone
-  SUBTYPE OF (tolerance_zone_with_datum);
-  orientation : oriented_tolerance_zone_type;
-  angle       : OPTIONAL plane_angle_measure_with_unit;
-WHERE
-  WR1: (orientation <> oriented_tolerance_zone_type.angular) XOR EXISTS(angle);
-END_ENTITY;
-
-ENTITY outer_boundary_curve
-  SUBTYPE OF (boundary_curve);
-END_ENTITY;
-
-ENTITY outer_round
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(pdr.used_representation)) AND
-                                       (SIZEOF(pdr.used_representation.items) = 3))) =
-                        1)) =
-         1));
-  WR2: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(pdr.used_representation)) AND
-                                       ({2 <= SIZEOF(pdr.used_representation.items) <= 3}))) =
-                        1)) =
-         1));
-  WR3: (SELF\characterized_object.description IN ['outer diameter','outer diameter to shoulder']);
-  WR4: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'length')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'diameter')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'v-shape boundary occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' IN
-                                                                TYPEOF(sdr.relating_shape_aspect)) AND
-                                                               (sdr.relating_shape_aspect.description = 'v-shape')))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR7: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'reduced size occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'taper usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                                TYPEOF(sdr.relating_shape_aspect)) AND
-                                                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_ROUND' IN
-                                                                TYPEOF(sdr.related_shape_aspect.of_shape.definition)) AND
-                                                               (sdr.name = 'reduced size')))) =
-                                               1)))) <=
-                              1)))) =
-         0));
-  WR8: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'length')))) <=
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR9: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'feature length')))) <=
-                                                   1)))) =
-                              0)))) =
-         0));
-END_ENTITY;
-
-ENTITY outside_profile
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     (SIZEOF(pdr.used_representation.items) = 1))) =
-                      1)) =
-       1;
-  WR2: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                               TYPEOF(pd))
-                    | NOT (SIZEOF(QUERY(sa_occ
-                                        <* USEDIN(pds,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR3: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                              | (sa_occ.description = 'boundary occurrence'))) =
-                                 1))) =
-             0)) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
-                                                                   TYPEOF(sdr.relating_shape_aspect)) =
-                                                            1) AND
-                                                           (sdr.relating_shape_aspect.description =
-                                                            'outside boundary'))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR4: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | NOT (SIZEOF(QUERY(sdr
-                                                             <* QUERY(sar
-                                                                      <* USEDIN(sa_occ,
-                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                      | (sar.description = 'profile floor usage') AND
-                                                                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                         TYPEOF(sar)))
-                                                             | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR' IN
-                                                                 TYPEOF(sdr.relating_shape_aspect)) AND
-                                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE' IN
-                                                                 TYPEOF(sdr.related_shape_aspect.of_shape.definition))))) =
-                                                1))) =
-                            0))) =
-        0);
-  WR5: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description =
-                                                                     'path feature component usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR6: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                              | (sa_occ.description = 'complex boundary occurrence'))) =
-                                 1))) =
-             0)) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
-                                                                   TYPEOF(sdr.relating_shape_aspect)) =
-                                                            1))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR7: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                              | (sa_occ.description = 'partial circular boundary occurrence'))) =
-                                 1))) =
-             0)) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN
-                                                            TYPEOF(sdr.relating_shape_aspect)))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR8: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                              | (sa_occ.description = 'closed circular boundary occurrence'))) =
-                                 1))) =
-             0)) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
-                                                            TYPEOF(sdr.relating_shape_aspect)))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR9: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                     TYPEOF(pd))
-                          | NOT (SIZEOF(QUERY(sa_occ
-                                              <* USEDIN(pds,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                              | (sa_occ.description = 'open rectangular boundary occurrence'))) =
-                                 1))) =
-             0)) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' IN
-                                                            TYPEOF(sdr.relating_shape_aspect)))) =
-                                            1))) =
-                            1))) =
-        0);
-  WR10: (NOT (SIZEOF(QUERY(pds
-                           <* QUERY(pd
-                                    <* USEDIN(SELF,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                      TYPEOF(pd))
-                           | NOT (SIZEOF(QUERY(sa_occ
-                                               <* USEDIN(pds,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                               | (sa_occ.description = 'closed rectangular boundary occurrence'))) =
-                                  1))) =
-              0)) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | (sar.description = 'profile usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' IN
-                                                             TYPEOF(sdr.relating_shape_aspect)))) =
-                                             1))) =
-                             1))) =
-         0);
-  WR11: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                               TYPEOF(pdr.used_representation)) AND
-                                              (pdr.used_representation.name = 'removal direction')))) =
-                              1)))) =
-         0);
-  WR12: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (pdr.used_representation.name = 'maximum feature limit'))) >=
-        0;
-END_ENTITY;
-
-ENTITY over_riding_styled_item
-  SUBTYPE OF (styled_item);
-  over_ridden_style : styled_item;
-END_ENTITY;
-
-ENTITY over_used_vertex
-  SUBTYPE OF (inapt_topology);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY overcomplex_geometry
-  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))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY overcomplex_topology_and_geometry_relationship
-  ABSTRACT SUPERTYPE OF (ONEOF(unused_patches, edge_with_excessive_segments,
-                               face_surface_with_excessive_patches_in_one_direction))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY overlapping_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_curves, partly_overlapping_surfaces))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY package_product_concept_feature
-  SUBTYPE OF (product_concept_feature);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(SELF));
-  WR2: SIZEOF(QUERY(cfr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
-                       TYPEOF(cfr)) AND
-                      (SIZEOF(QUERY(ipcf
-                                    <* USEDIN(cfr,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE.CONDITION')
-                                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN
-                                      TYPEOF(ipcf))) =
-                       1))) >
-       0;
-END_ENTITY;
-
-ENTITY pair_representation_relationship
-  SUBTYPE OF (geometric_representation_item, representation_relationship_with_transformation);
-  SELF\representation_relationship.rep_1                                       : kinematic_link_representation;
-  SELF\representation_relationship.rep_2                                       : kinematic_link_representation;
-  SELF\representation_relationship_with_transformation.transformation_operator : kinematic_pair;
-WHERE
-  WR1: transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items;
-  WR2: transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items;
-  WR3: rep_1\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_start;
-  WR4: rep_2\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_end;
-END_ENTITY;
-
-ENTITY pair_value
-  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))
-  SUBTYPE OF (geometric_representation_item);
-  applies_to_pair : kinematic_pair;
-END_ENTITY;
-
-ENTITY parabola
-  SUBTYPE OF (conic);
-  focal_dist : length_measure;
-WHERE
-  WR1: focal_dist <> 0.0;
-END_ENTITY;
-
-ENTITY parallel_assembly_constraint
-  SUBTYPE OF (binary_assembly_constraint, parallel_geometric_constraint);
-END_ENTITY;
-
-ENTITY parallel_assembly_constraint_with_dimension
-  SUBTYPE OF (parallel_assembly_constraint, pgc_with_dimension);
-END_ENTITY;
-
-ENTITY parallel_composed_function
-  SUBTYPE OF (maths_function, multiple_arity_generic_expression);
-  source_of_domain : maths_space_or_function;
-  prep_functions   : LIST [1 : ?] OF maths_function;
-  final_function   : maths_function_select;
-DERIVE
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF generic_expression := convert_to_operands_prcmfn(source_of_domain,
-                                                                                                                     prep_functions,
-                                                                                                                     final_function);
-WHERE
-  WR1: no_cyclic_domain_reference(source_of_domain, [SELF]);
-  WR2: expression_is_constant(domain_from(source_of_domain));
-  WR3: parallel_composed_function_domain_check(domain_from(source_of_domain), prep_functions);
-  WR4: parallel_composed_function_composability_check(prep_functions, final_function);
-END_ENTITY;
-
-ENTITY parallel_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF linear_geometry_constraint_element;
-END_ENTITY;
-
-ENTITY parallel_offset
-  SUBTYPE OF (derived_shape_aspect);
-  offset : measure_with_unit;
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
-END_ENTITY;
-
-ENTITY parallel_offset_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF curve_or_surface_constraint_element;
-  offset_type                                   : parallel_offset_type;
-WHERE
-  WR1: 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)
-                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(q))) >
-             0));
-  WR2: NOT ((offset_type = surface_offset) AND
-            (SIZEOF(QUERY(q
-                          <* (SELF\explicit_constraint.constrained_elements +
-                              SELF\explicit_constraint.reference_elements)
-                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(q))) >
-             0));
-END_ENTITY;
-
-ENTITY parallelism_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY parametric_representation_context
-  SUBTYPE OF (representation_context);
-END_ENTITY;
-
-ENTITY partial_circular_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) >= 3)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'orientation')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'sweep angle')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'profile limit'))) <=
-                           1))) =
-       0;
-END_ENTITY;
-
-ENTITY partial_derivative_expression
-  SUBTYPE OF (unary_generic_expression);
-  d_variables : LIST [1 : ?] OF maths_variable;
-  extension   : extension_options;
-DERIVE
-  derivand : generic_expression := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: has_values_space(derivand);
-  WR2: space_is_continuum(values_space_of(derivand));
-  WR3: 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;
-END_ENTITY;
-
-ENTITY partial_derivative_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  d_variables                           : LIST [1 : ?] OF input_selector;
-  extension                             : extension_options;
-DERIVE
-  derivand : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: space_is_continuum(derivand.range);
-  WR2: partial_derivative_check(derivand.domain, d_variables);
-END_ENTITY;
-
-ENTITY partial_document_with_structured_text_representation_assignment
-  SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
-END_ENTITY;
-
-ENTITY partly_overlapping_curves
-  SUBTYPE OF (overlapping_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY partly_overlapping_edges
-  SUBTYPE OF (topology_related_to_overlapping_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY partly_overlapping_faces
-  SUBTYPE OF (topology_related_to_overlapping_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY partly_overlapping_solids
-  SUBTYPE OF (inapt_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY partly_overlapping_surfaces
-  SUBTYPE OF (overlapping_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY path
-  SUPERTYPE OF (ONEOF(open_path, edge_loop, oriented_path))
-  SUBTYPE OF (topological_representation_item);
-  edge_list : LIST [1 : ?] OF UNIQUE oriented_edge;
-WHERE
-  WR1: path_head_to_tail(SELF);
-END_ENTITY;
-
-ENTITY path_area_with_parameters
-  SUBTYPE OF (complex_area, mapped_item);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(SELF\mapped_item.mapping_target);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_PARAMETERS_REPRESENTATION' IN
-       TYPEOF(SELF\mapped_item.mapping_source\representation_map.mapped_representation);
-  WR3: SELF\mapped_item.mapping_source\representation_map.mapping_origin\representation_item.name = 'curve width';
-END_ENTITY;
-
-ENTITY path_feature_component
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SELF.description IN ['partial circular','complete circular','linear','complex']);
-  WR3: ((NOT (SELF.description = 'complex')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                              TYPEOF(pdr.used_representation)))) =
-                              1)))) =
-         0));
-  WR4: ((SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'orientation')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR5: ((NOT (SELF.description = 'partial circular')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)))) =
-                              0)))) =
-         0));
-  WR6: ((NOT (SELF.description = 'partial circular')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'radius')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT (SELF.description = 'partial circular')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'sweep angle')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT (SELF.description = 'complete circular')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                              0)))) =
-         0));
-  WR9: ((NOT (SELF.description = 'complete circular')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'radius')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR10: ((NOT (SELF.description = 'linear')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                               0)))) =
-          0));
-  WR11: ((NOT (SELF.description = 'linear')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                            TYPEOF(it)) =
-                                                                     2) AND
-                                                                    (it.name = 'distance')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR12: ((NOT (SELF.description = 'linear')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(pdr
-                                            <* USEDIN(pd,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                               TYPEOF(pdr.used_representation)))) =
-                               1)))) =
-          0));
-  WR13: ((NOT (SELF.description = 'complex')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(pdr
-                                            <* USEDIN(pd,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-END_ENTITY;
-
-ENTITY path_node
-  ABSTRACT SUPERTYPE OF (ONEOF(point_to_point_path, circular_path, linear_path, curve_based_path))
-  SUBTYPE OF (kinematic_path_segment);
-  placement_end : placement;
-END_ENTITY;
-
-ENTITY path_parameter_representation
-  SUBTYPE OF (definitional_representation);
-  SELF\representation.context_of_items : path_parameter_representation_context;
-  SELF\representation.items            : SET [1 : ?] OF bounded_curve;
-WHERE
-  WR1: SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
-END_ENTITY;
-
-ENTITY path_parameter_representation_context
-  SUBTYPE OF (geometric_representation_context, parametric_representation_context);
-END_ENTITY;
-
-ENTITY path_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: (SIZEOF(SELF.items) >= 1);
-  WR2: (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH'] *
-                               TYPEOF(i)) =
-                        1))) >=
-        1);
-END_ENTITY;
-
-ENTITY pattern_offset_membership
-  SUBTYPE OF (feature_component_relationship);
-WHERE
-  WR1: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.relating_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | ((SIZEOF(QUERY(pdr
-                                      <* (QUERY(pd
-                                                <* USEDIN(fcr.related_shape_aspect.of_shape,
-                                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                                | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                                  TYPEOF(pd)))
-                                      | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
-                                               TYPEOF(pdr.definition)) =
-                                        1)) =
-                         0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.related_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | (fcr.description = 'modified pattern') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
-                        TYPEOF(fcr.relating_shape_aspect)))) >=
-        1);
-  WR3: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.related_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
-                         TYPEOF(fcr.relating_shape_aspect)) AND
-                        (NOT (SIZEOF(QUERY(modfcr
-                                           <* QUERY(modsar
-                                                    <* USEDIN(fcr.relating_shape_aspect,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                    | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR4: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(USEDIN(pd,
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
-                              2)))) =
-         0));
-  WR5: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(USEDIN(pd,
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
-                              1)))) =
-         0));
-  WR6: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (NOT (SIZEOF(pdr.used_representation.items) = 2)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                    TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                   (it.name = 'index number')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'offset')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR9: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)))) =
-                              0)))) =
-         0));
-  WR10: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-               TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF.related_shape_aspect,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                     TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                    (it.name = 'row index')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR11: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-               TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF.related_shape_aspect,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                     TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                    (it.name = 'column index')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR12: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-               TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF.related_shape_aspect,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                                                                     TYPEOF(it)) AND
-                                                                    (it.name = 'offset distance')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR13: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-               TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF.related_shape_aspect,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(pdr
-                                            <* USEDIN(pd,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                                TYPEOF(pdr.used_representation)) AND
-                                               (pdr.used_representation.name = 'offset direction')))) =
-                               1)))) =
-          0));
-END_ENTITY;
-
-ENTITY pattern_omit_membership
-  SUBTYPE OF (feature_component_relationship);
-WHERE
-  WR1: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.relating_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | ((SIZEOF(QUERY(pdr
-                                      <* (QUERY(pd
-                                                <* USEDIN(fcr.related_shape_aspect.of_shape,
-                                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                                | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                                  TYPEOF(pd)))
-                                      | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN'] *
-                                               TYPEOF(pdr.definition)) =
-                                        1)) =
-                         0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.related_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | (fcr.description = 'modified pattern') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
-                        TYPEOF(fcr.relating_shape_aspect)))) >=
-        1);
-  WR3: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF.related_shape_aspect,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                              | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar)) AND
-                                 (sar :<>: SELF)))
-                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN
-                         TYPEOF(fcr.relating_shape_aspect)) AND
-                        (NOT (SIZEOF(QUERY(modfcr
-                                           <* QUERY(modsar
-                                                    <* USEDIN(fcr.relating_shape_aspect,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                    | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
-                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF.related_shape_aspect,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(USEDIN(pd,
-                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) =
-                             1)))) =
-        0);
-  WR5: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (NOT (SIZEOF(pdr.used_representation.items) = 1)))) =
-                              0)))) =
-         0));
-  WR6: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                    TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                   (it.name = 'index number')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (NOT (SIZEOF(pdr.used_representation.items) = 2)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                    TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                   (it.name = 'row index')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR9: ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN
-              TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF.related_shape_aspect,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                    TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                   (it.name = 'column index')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-END_ENTITY;
-
-ENTITY pcurve
-  SUBTYPE OF (curve);
-  basis_surface      : surface;
-  reference_to_curve : definitional_representation;
-WHERE
-  WR1: SIZEOF(reference_to_curve\representation.items) = 1;
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(reference_to_curve\representation.items[1]);
-  WR3: reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY pdgc_with_dimension
-  SUBTYPE OF (point_distance_geometric_constraint);
-  distance_value : non_negative_length_measure;
-END_ENTITY;
-
-ENTITY perpendicular_assembly_constraint
-  SUBTYPE OF (binary_assembly_constraint, perpendicular_geometric_constraint);
-END_ENTITY;
-
-ENTITY perpendicular_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 2] OF linear_geometry_constraint_element;
-WHERE
-  WR1: NOT ((SIZEOF(SELF\explicit_constraint.reference_elements) = 2) AND
-            NOT ((SIZEOF(QUERY(q
-                               <* SELF\explicit_constraint.constrained_elements +
-                                  SELF\explicit_constraint.reference_elements
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(q))) =
-                  SIZEOF(SELF\explicit_constraint.reference_elements +
-                         SELF\explicit_constraint.constrained_elements))));
-  WR2: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (SIZEOF(SELF\explicit_constraint.constrained_elements) IN [2,3]);
-  WR3: 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
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' IN TYPEOF(q))) =
-                 3) XOR
-                (SIZEOF(QUERY(q
-                              <* SELF\explicit_constraint.constrained_elements
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(q))) =
-                 3));
-END_ENTITY;
-
-ENTITY perpendicular_to
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
-END_ENTITY;
-
-ENTITY perpendicularity_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY person;
-  id            : identifier;
-  last_name     : OPTIONAL label;
-  first_name    : OPTIONAL label;
-  middle_names  : OPTIONAL LIST [1 : ?] OF label;
-  prefix_titles : OPTIONAL LIST [1 : ?] OF label;
-  suffix_titles : OPTIONAL LIST [1 : ?] OF label;
-WHERE
-  WR1: EXISTS(last_name) OR EXISTS(first_name);
-END_ENTITY;
-
-ENTITY person_and_organization;
-  the_person       : person;
-  the_organization : organization;
-DERIVE
-  name        : label := get_name_value(SELF);
-  description : text  := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY person_and_organization_address
-  SUBTYPE OF (organizational_address, personal_address);
-  SELF\organizational_address.organizations : SET [1 : 1] OF organization;
-  SELF\personal_address.people              : SET [1 : 1] OF person;
-WHERE
-  WR1: SIZEOF(QUERY(pao
-                    <* USEDIN(SELF\personal_address.people[1],
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON')
-                    | pao.the_organization :=: SELF\organizational_address.organizations[1])) =
-       1;
-END_ENTITY;
-
-ENTITY person_and_organization_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_person_and_organization : person_and_organization;
-  role                             : person_and_organization_role;
-END_ENTITY;
-
-ENTITY person_and_organization_role;
-  name : label;
-DERIVE
-  description : text := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY personal_address
-  SUBTYPE OF (address);
-  people      : SET [1 : ?] OF person;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY pgc_with_dimension
-  SUBTYPE OF (parallel_geometric_constraint);
-  distance_value     : non_negative_length_measure;
-  negative_direction : BOOLEAN;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
-       (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
-  WR2: SIZEOF(QUERY(q
-                    <* (SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements)
-                    | SIZEOF(TYPEOF(q) *
-                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR']) >
-                      0)) =
-       0;
-END_ENTITY;
-
-ENTITY physical_breakdown_context
-  SUBTYPE OF (breakdown_context);
-END_ENTITY;
-
-ENTITY physical_component
-  SUBTYPE OF (assembly_component);
-END_ENTITY;
-
-ENTITY physical_component_feature
-  SUPERTYPE OF ((ONEOF(physical_component_terminal, physical_component_interface_terminal)))
-  SUBTYPE OF (component_feature);
-END_ENTITY;
-
-ENTITY physical_component_interface_terminal
-  SUBTYPE OF (physical_component_feature);
-END_ENTITY;
-
-ENTITY physical_component_terminal
-  SUBTYPE OF (component_terminal, physical_component_feature);
-END_ENTITY;
-
-ENTITY physical_element_usage
-  SUBTYPE OF (breakdown_element_usage);
-END_ENTITY;
-
-ENTITY picture_representation
-  SUBTYPE OF (presentation_view);
-  SELF\representation.items : SET [2 : ?] OF picture_representation_item_select;
-INVERSE
-  size : presentation_size FOR unit;
-WHERE
-  WR1: SIZEOF(QUERY(item <* items | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1;
-  WR2: SIZEOF(QUERY(se
-                    <* QUERY(item
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item)))
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PICTURE_REPRESENTATION_ITEM' IN
-                           TYPEOF(se\styled_item.item)))) =
-       0;
-END_ENTITY;
-
-ENTITY placed_datum_target_feature
-  SUBTYPE OF (datum_target);
-DERIVE
-  representation_associations : SET [0 : ?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF);
-WHERE
-  WR1: SELF.description IN ['point','line','rectangle','circle','circular curve'];
-  WR2: SIZEOF(QUERY(pdr
-                    <* representation_associations
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                      TYPEOF(pdr.used_representation))) =
-       1;
-  WR3: valid_datum_target_parameters(SELF);
-END_ENTITY;
-
-ENTITY placed_feature
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY placement
-  SUPERTYPE OF (ONEOF(axis1_placement, axis2_placement_2d, axis2_placement_3d))
-  SUBTYPE OF (geometric_representation_item);
-  location : cartesian_point;
-END_ENTITY;
-
-ENTITY planar_box
-  SUBTYPE OF (planar_extent);
-  placement : axis2_placement;
-END_ENTITY;
-
-ENTITY planar_curve_pair
-  SUPERTYPE OF (ONEOF(sliding_curve_pair, rolling_curve_pair) ANDOR planar_curve_pair_range)
-  SUBTYPE OF (high_order_kinematic_pair);
-  curve_1     : curve;
-  curve_2     : curve;
-  orientation : BOOLEAN;
-WHERE
-  WR1: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (curve_1 IN r.items))) = 0;
-  WR2: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_2 | NOT (curve_2 IN r.items))) = 0;
-  WR3: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY planar_curve_pair_range
-  SUBTYPE OF (planar_curve_pair);
-  range_on_curve_1 : trimmed_curve;
-  range_on_curve_2 : trimmed_curve;
-WHERE
-  WR1: SELF\planar_curve_pair.curve_1 :=: range_on_curve_1.basis_curve;
-  WR2: SELF\planar_curve_pair.curve_2 :=: range_on_curve_2.basis_curve;
-  WR3: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (range_on_curve_1 IN r.items))) =
-       0;
-  WR4: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_2 | NOT (range_on_curve_2 IN r.items))) =
-       0;
-END_ENTITY;
-
-ENTITY planar_extent
-  SUBTYPE OF (geometric_representation_item);
-  size_in_x : length_measure;
-  size_in_y : length_measure;
-END_ENTITY;
-
-ENTITY planar_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY planar_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : planar_pair;
-  actual_rotation                 : plane_angle_measure;
-  actual_translation_x            : length_measure;
-  actual_translation_y            : length_measure;
-END_ENTITY;
-
-ENTITY planar_pair_with_range
-  SUBTYPE OF (planar_pair);
-  lower_limit_actual_rotation      : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation      : OPTIONAL plane_angle_measure;
-  lower_limit_actual_translation_x : OPTIONAL length_measure;
-  upper_limit_actual_translation_x : OPTIONAL length_measure;
-  lower_limit_actual_translation_y : OPTIONAL length_measure;
-  upper_limit_actual_translation_y : OPTIONAL length_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR
-       (lower_limit_actual_rotation < upper_limit_actual_rotation);
-  WR2: (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);
-  WR3: (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);
-END_ENTITY;
-
-ENTITY planar_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(SELF.items) = 1;
-  WR2: SIZEOF(QUERY(it <* SELF.items | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(it)))) = 1;
-END_ENTITY;
-
-ENTITY plane
-  SUBTYPE OF (elementary_surface);
-END_ENTITY;
-
-ENTITY plane_angle_and_length_pair
-  SUBTYPE OF (founded_item);
-  plane_angle_value : plane_angle_measure;
-  length_value      : length_measure;
-END_ENTITY;
-
-ENTITY plane_angle_and_ratio_pair
-  SUBTYPE OF (founded_item);
-  plane_angle_value : plane_angle_measure;
-  ratio_value       : ratio_measure;
-END_ENTITY;
-
-ENTITY plane_angle_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY plane_angle_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY plus_expression
-  SUBTYPE OF (multiple_arity_numeric_expression);
-END_ENTITY;
-
-ENTITY plus_minus_tolerance;
-  range                : tolerance_method_definition;
-  toleranced_dimension : dimensional_characteristic;
-UNIQUE
-  UR1: toleranced_dimension;
-END_ENTITY;
-
-ENTITY ply_angle_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : 1] OF measure_representation_item;
-END_ENTITY;
-
-ENTITY ply_laminate_sequence_definition
-  SUBTYPE OF (product_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
-                      TYPEOF(pdr))) >
-       0;
-END_ENTITY;
-
-ENTITY ply_orientation_angle
-  SUBTYPE OF (representation_relationship);
-  SELF\representation_relationship.rep_1 : reinforcement_orientation_basis;
-  SELF\representation_relationship.rep_2 : ply_angle_representation;
-END_ENTITY;
-
-ENTITY pmi_requirement_item_association
-  SUBTYPE OF (item_identified_representation_usage);
-  requirement : characterized_object;
-END_ENTITY;
-
-ENTITY pocket
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SELF\characterized_object.description IN
-        ['closed rectangular','open rectangular','complex','circular cutout','complex cutout','recess']);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'pocket depth occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description =
-                                                                        'path feature component usage') AND
-                                                                       (sar.name = 'pocket depth') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.relating_shape_aspect.description = 'linear')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                       TYPEOF(pdr.used_representation)))) =
-       1;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     ({1 <= SIZEOF(pdr.used_representation.items) <= 2}))) =
-                      1)) =
-       1;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'fillet radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-  WR7: ((NOT (SELF\characterized_object.description IN ['complex','non-circular cutout','recess'])) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'boundary occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
-                                                                       TYPEOF(sdr.relating_shape_aspect)) =
-                                                                1)))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR8: ((NOT (SELF\characterized_object.description = 'closed rectangular')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'closed boundary occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' IN
-                                                                TYPEOF(sdr.relating_shape_aspect))))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR9: ((NOT (SELF\characterized_object.description = 'open rectangular')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'open boundary occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' IN
-                                                                TYPEOF(sdr.relating_shape_aspect))))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR10: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'bottom condition occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'pocket bottom usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
-                                                                TYPEOF(sdr.relating_shape_aspect)) AND
-                                                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                                                                TYPEOF(sdr.related_shape_aspect.of_shape.definition))))) =
-                                               1)))) =
-                              1)))) =
-         0);
-  WR11: ((NOT (SELF\characterized_object.description IN ['complex','non-circular cutout','recess'])) OR
-         (SIZEOF(QUERY(pds
-                       <* QUERY(pd
-                                <* USEDIN(SELF,
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                   TYPEOF(pd)))
-                       | (NOT (SIZEOF(QUERY(sa_occ
-                                            <* USEDIN(pds,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                            | ((sa_occ.description = 'change in boundary occurrence') AND
-                                               (SIZEOF(QUERY(fcr
-                                                             <* QUERY(sar
-                                                                      <* USEDIN(sa_occ,
-                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                      | ((sar.description = 'taper usage') AND
-                                                                         (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                          TYPEOF(sar))))
-                                                             | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                                 TYPEOF(fcr.relating_shape_aspect)) AND
-                                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                                                                 TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                                                                (fcr.related_shape_aspect.description IN
-                                                                 ['angle taper','directed taper'])))) =
-                                                1)))) <=
-                               1)))) =
-          0));
-  WR12: (NOT (SELF\characterized_object.description = 'circular cutout')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (sa_occ.description = 'enclosed boundary occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | (sar.description = 'profile usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
-                                                             TYPEOF(sdr.relating_shape_aspect)))) =
-                                             1))) =
-                             1))) =
-         0);
-  WR13: (NOT (SELF\characterized_object.description IN ['circular cutout','complex cutout'])) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (sa_occ.description = 'bottom condition occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | (sar.description = 'pocket bottom usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
-                                                              TYPEOF(sdr.relating_shape_aspect)) AND
-                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                                                              TYPEOF(sdr.related_shape_aspect.of_shape.definition)) AND
-                                                             (sdr.relating_shape_aspect.description = 'through')))) =
-                                             1))) =
-                             1))) =
-         0);
-  WR14: (NOT (SELF\characterized_object.description = 'recess')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd))
-                      | NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | (sa_occ.description = 'bottom condition occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | (sar.description = 'pocket bottom usage') AND
-                                                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                      TYPEOF(sar)))
-                                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
-                                                              TYPEOF(sdr.relating_shape_aspect)) AND
-                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                                                              TYPEOF(sdr.related_shape_aspect.of_shape.definition)) AND
-                                                             (sdr.relating_shape_aspect.description IN
-                                                              ['planar','complex'])))) =
-                                             1))) =
-                             1))) =
-         0);
-  WR15: SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (pdr.used_representation.name = 'maximum feature limit'))) >=
-        0;
-  WR16: ((NOT (SELF\characterized_object.description IN
-               ['closed rectangular','open rectangular','complex','recess'])) OR
-         (SIZEOF(QUERY(pds
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                           TYPEOF(pds)) AND
-                          (SIZEOF(QUERY(csa
-                                        <* USEDIN(pds,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                        | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                            TYPEOF(csa)) AND
-                                           (csa.name = 'uncut volume') AND
-                                           (SIZEOF(QUERY(sar
-                                                         <* csa.component_relationships
-                                                         | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                              TYPEOF(sar)) AND
-                                                             (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
-                                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION'] *
-                                                                     TYPEOF(sar.related_shape_aspect)) =
-                                                              1))))) =
-                                            1)))) <=
-                           1)))) =
-          1));
-  WR17: ((NOT (SELF\characterized_object.description IN ['closed rectangular','open rectangular'])) OR
-         (SIZEOF(QUERY(pds
-                       <* QUERY(pd
-                                <* USEDIN(SELF,
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                   TYPEOF(pd)))
-                       | (NOT (SIZEOF(QUERY(sa_occ
-                                            <* USEDIN(pds,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                            | ((sa_occ.description = 'change in boundary occurrence') AND
-                                               (SIZEOF(QUERY(fcr
-                                                             <* QUERY(sar
-                                                                      <* USEDIN(sa_occ,
-                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                      | ((sar.description = 'taper usage') AND
-                                                                         (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                          TYPEOF(sar))))
-                                                             | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                                 TYPEOF(fcr.relating_shape_aspect)) AND
-                                                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                                                                 TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                                                                (fcr.related_shape_aspect.description IN
-                                                                 ['angle taper','directed taper'])))) >=
-                                                1)))) <=
-                               1)))) =
-          0));
-END_ENTITY;
-
-ENTITY pocket_bottom
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['planar','complex','through'];
-  WR3: ((NOT (SELF.description = 'planar')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION') IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'floor normal'))) =
-                              1)))) =
-         0));
-  WR4: ((NOT (SELF.description = 'planar')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION') IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'floor location'))) =
-                              1)))) =
-         0));
-  WR5: ((NOT (SELF.description = 'complex')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'floor face'))) =
-                              1)))) =
-         0));
-  WR6: (NOT (SELF.description IN ['planar','complex']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(pdr
-                                              <* USEDIN(pd,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                TYPEOF(pdr.used_representation))) =
-                                 1))) =
-             0));
-  WR7: (NOT (SELF.description IN ['planar','complex']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(impl_rep
-                                              <* QUERY(pdr
-                                                       <* USEDIN(pd,
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                         TYPEOF(pdr.used_representation))
-                                              | NOT (SIZEOF(impl_rep.used_representation.items) <= 1))) =
-                                 0))) =
-             0));
-  WR8: (NOT (SELF.description = 'through') OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(pdr
-                                              <* USEDIN(pd,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                TYPEOF(pdr.used_representation))) =
-                                 0))) =
-             0));
-  WR9: (NOT (SELF.description IN ['planar','complex'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'radius'))) <=
-                                                1))) =
-                            0))) =
-        0);
-  WR10: SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | (sar.description = 'pocket bottom usage') AND
-                                ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                 TYPEOF(sar)))
-                     | ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET' IN
-                         TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN
-                         TYPEOF(fcr.relating_shape_aspect))))) >=
-        1;
-  WR11: ((NOT (SELF.description IN ['planar','complex'])) OR
-         (SIZEOF(QUERY(fcr
-                       <* QUERY(sar
-                                <* USEDIN(SELF,
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                | (sar.description = 'pocket bottom usage') AND
-                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-END_ENTITY;
-
-ENTITY pogc_with_dimension
-  SUBTYPE OF (parallel_offset_geometric_constraint);
-  offset_value                 : positive_length_measure;
-  offset_direction_constrained : BOOLEAN;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) = 1) OR
-       (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
-  WR2: (NOT (offset_direction_constrained = true) AND
-            ((offset_type = curve_2d_offset) OR (offset_type = surface_offset)));
-END_ENTITY;
-
-ENTITY point
-  SUPERTYPE OF (ONEOF(cartesian_point, point_on_curve, point_on_surface, point_in_volume, point_replica,
-                      degenerate_pcurve))
-  SUBTYPE OF (geometric_representation_item);
-END_ENTITY;
-
-ENTITY point_and_vector
-  SUBTYPE OF (compound_representation_item, geometric_representation_item);
-  SELF\compound_representation_item.item_element : point_and_vector_members;
-END_ENTITY;
-
-ENTITY point_array
-  SUBTYPE OF (compound_representation_item, geometric_representation_item);
-  SELF\compound_representation_item.item_element : point_array_members;
-END_ENTITY;
-
-ENTITY point_cloud_dataset
-  SUBTYPE OF (scanned_data_item);
-  point_coordinates : LIST [1 : ?] OF LIST [3 : 3] OF REAL;
-END_ENTITY;
-
-ENTITY point_cloud_dataset_with_colours
-  SUBTYPE OF (point_cloud_dataset);
-  colour_indices : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
-WHERE
-  WR1: SIZEOF(colour_indices) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
-END_ENTITY;
-
-ENTITY point_cloud_dataset_with_intensities
-  SUBTYPE OF (point_cloud_dataset);
-  intensities : LIST [1 : ?] OF REAL;
-WHERE
-  WR1: SIZEOF(intensities) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
-END_ENTITY;
-
-ENTITY point_cloud_dataset_with_normals
-  SUBTYPE OF (point_cloud_dataset);
-  normals : LIST [1 : ?] OF LIST [3 : 3] OF REAL;
-WHERE
-  WR1: SIZEOF(normals) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
-END_ENTITY;
-
-ENTITY point_cloud_superdataset
-  SUBTYPE OF (scanned_data_item);
-  pts_per_sublist : INTEGER;
-  sublists        : LIST [2 : ?] OF point_cloud_dataset;
-WHERE
-  WR1: consistent_sizes(SELF.pts_per_sublist, SELF.sublists);
-END_ENTITY;
-
-ENTITY point_distance_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF point;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 4] OF point_curve_or_surface_constraint_element;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
-        (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
-END_ENTITY;
-
-ENTITY point_in_volume
-  SUBTYPE OF (point);
-  basis_volume      : volume;
-  point_parameter_u : parameter_value;
-  point_parameter_v : parameter_value;
-  point_parameter_w : parameter_value;
-END_ENTITY;
-
-ENTITY point_on_curve
-  SUBTYPE OF (point);
-  basis_curve     : curve;
-  point_parameter : parameter_value;
-END_ENTITY;
-
-ENTITY point_on_edge_curve
-  SUBTYPE OF (point_on_curve);
-  basis_edge_curve : edge_curve;
-DERIVE
-  SELF\point_on_curve.basis_curve : curve := SELF.basis_edge_curve.edge_geometry;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_edge_curve) * relating_shape_representations_of_extreme_values(SELF)) >
-       0;
-END_ENTITY;
-
-ENTITY point_on_face_surface
-  SUBTYPE OF (point_on_surface);
-  basis_face_surface : face_surface;
-DERIVE
-  SELF\point_on_surface.basis_surface : surface := SELF.basis_face_surface.face_geometry;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_face_surface) *
-              relating_shape_representations_of_extreme_values(SELF)) >
-       0;
-END_ENTITY;
-
-ENTITY point_on_planar_curve_pair
-  SUBTYPE OF (high_order_kinematic_pair);
-  pair_curve  : curve;
-  orientation : BOOLEAN;
-WHERE
-  WR1: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (pair_curve IN r.items))) = 0;
-  WR2: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY point_on_planar_curve_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : point_on_planar_curve_pair;
-  actual_point_on_curve           : point_on_curve;
-  input_orientation               : spatial_rotation;
-DERIVE
-  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair,
-                                                                       input_orientation);
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\point_on_planar_curve_pair.pair_curve :=: actual_point_on_curve.basis_curve;
-END_ENTITY;
-
-ENTITY point_on_planar_curve_pair_with_range
-  SUBTYPE OF (point_on_planar_curve_pair);
-  range_on_pair_curve : trimmed_curve;
-  lower_limit_yaw     : OPTIONAL plane_angle_measure;
-  upper_limit_yaw     : OPTIONAL plane_angle_measure;
-  lower_limit_pitch   : OPTIONAL plane_angle_measure;
-  upper_limit_pitch   : OPTIONAL plane_angle_measure;
-  lower_limit_roll    : OPTIONAL plane_angle_measure;
-  upper_limit_roll    : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
-  WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
-  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
-  WR4: SIZEOF(QUERY(r
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT (range_on_pair_curve IN r.items))) =
-       0;
-END_ENTITY;
-
-ENTITY point_on_surface
-  SUBTYPE OF (point);
-  basis_surface     : surface;
-  point_parameter_u : parameter_value;
-  point_parameter_v : parameter_value;
-END_ENTITY;
-
-ENTITY point_on_surface_pair
-  SUBTYPE OF (high_order_kinematic_pair);
-  pair_surface : surface;
-WHERE
-  WR1: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (pair_surface IN r.items))) = 0;
-  WR2: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY point_on_surface_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : point_on_surface_pair;
-  actual_point_on_surface         : point_on_surface;
-  input_orientation               : spatial_rotation;
-DERIVE
-  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair,
-                                                                       input_orientation);
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\point_on_surface_pair.pair_surface :=: actual_point_on_surface.basis_surface;
-END_ENTITY;
-
-ENTITY point_on_surface_pair_with_range
-  SUBTYPE OF (point_on_surface_pair);
-  range_on_pair_surface : rectangular_trimmed_surface;
-  lower_limit_yaw       : OPTIONAL plane_angle_measure;
-  upper_limit_yaw       : OPTIONAL plane_angle_measure;
-  lower_limit_pitch     : OPTIONAL plane_angle_measure;
-  upper_limit_pitch     : OPTIONAL plane_angle_measure;
-  lower_limit_roll      : OPTIONAL plane_angle_measure;
-  upper_limit_roll      : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
-  WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
-  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
-  WR4: SIZEOF(QUERY(r
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT (range_on_pair_surface IN r.items))) =
-       0;
-END_ENTITY;
-
-ENTITY point_path
-  SUBTYPE OF (compound_representation_item, geometric_representation_item);
-  SELF\compound_representation_item.item_element : point_path_members;
-END_ENTITY;
-
-ENTITY point_placement_shape_representation
-  SUBTYPE OF (shape_representation);
-  SELF\representation.items : SET [1 : ?] OF point_placement_shape_representation_item;
-WHERE
-  WR1: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                             TYPEOF(i)) =
-                      1)) >
-       0;
-END_ENTITY;
-
-ENTITY point_replica
-  SUBTYPE OF (point);
-  parent_pt      : point;
-  transformation : cartesian_transformation_operator;
-WHERE
-  WR1: transformation.dim = parent_pt.dim;
-  WR2: acyclic_point_replica(SELF, parent_pt);
-END_ENTITY;
-
-ENTITY point_style
-  SUBTYPE OF (founded_item);
-  name          : label;
-  marker        : OPTIONAL marker_select;
-  marker_size   : OPTIONAL size_select;
-  marker_colour : OPTIONAL colour;
-WHERE
-  WR1: EXISTS(marker) OR EXISTS(marker_size) OR EXISTS(marker_colour);
-END_ENTITY;
-
-ENTITY point_to_point_path
-  SUBTYPE OF (path_node);
-DERIVE
-  SELF\kinematic_path_segment.transition : transition_code := discontinuous;
-END_ENTITY;
-
-ENTITY polar_11
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY polar_complex_number_region
-  SUBTYPE OF (maths_space, generic_literal);
-  centre               : complex_number_literal;
-  distance_constraint  : real_interval;
-  direction_constraint : finite_real_interval;
-WHERE
-  WR1: min_exists(distance_constraint) AND (real_min(distance_constraint) >= 0.0);
-  WR2: {-PI <= direction_constraint.min < PI};
-  WR3: direction_constraint.max - direction_constraint.min <= 2.0 * PI;
-  WR4: (direction_constraint.max - direction_constraint.min < 2.0 * PI) OR (direction_constraint.min_closure = open);
-  WR5: (direction_constraint.max - direction_constraint.min < 2.0 * PI) OR (direction_constraint.max_closure = open) OR
-       (direction_constraint.min = -PI);
-  WR6: (real_min(distance_constraint) > 0.0) OR max_exists(distance_constraint) OR
-       (direction_constraint.max - direction_constraint.min < 2.0 * PI) OR (direction_constraint.max_closure = open);
-END_ENTITY;
-
-ENTITY polar_point
-  SUBTYPE OF (cartesian_point);
-  r     : length_measure;
-  theta : plane_angle_measure;
-DERIVE
-  SELF\cartesian_point.coordinates : LIST [2 : 2] OF length_measure := [r * COS(theta),r * SIN(theta)];
-WHERE
-  WR1: r >= 0.0;
-END_ENTITY;
-
-ENTITY poly_loop
-  SUBTYPE OF (loop, geometric_representation_item);
-  polygon : LIST [3 : ?] OF UNIQUE cartesian_point;
-END_ENTITY;
-
-ENTITY polygonal_area
-  SUBTYPE OF (primitive_2d);
-  bounds : LIST [3 : ?] OF UNIQUE cartesian_point;
-END_ENTITY;
-
-ENTITY polyline
-  SUBTYPE OF (bounded_curve);
-  points : LIST [2 : ?] OF cartesian_point;
-END_ENTITY;
-
-ENTITY position_tolerance
-  SUBTYPE OF (geometric_tolerance);
-END_ENTITY;
-
-ENTITY positioned_sketch
-  SUBTYPE OF (geometric_representation_item);
-  sketch_basis       : sketch_basis_select;
-  auxiliary_elements : SET [0 : ?] OF auxiliary_geometric_representation_item;
-WHERE
-  WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(sketch_basis)) AND
-            NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                 TYPEOF(sketch_basis\curve_bounded_surface.basis_surface)));
-  WR2: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND
-            NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                 TYPEOF(sketch_basis\face_surface.face_geometry)));
-  WR3: SIZEOF(QUERY(q
-                    <* auxiliary_elements
-                    | (SIZEOF(TYPEOF(q) *
-                              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']) =
-                       0))) =
-       0;
-  WR4: SIZEOF(QUERY(q <* auxiliary_elements | q\geometric_representation_item.dim <> 3)) = 0;
-END_ENTITY;
-
-ENTITY positive_length_measure_with_unit
-  SUBTYPE OF (length_measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN
-       TYPEOF(SELF\measure_with_unit.value_component);
-END_ENTITY;
-
-ENTITY positive_plane_angle_measure_with_unit
-  SUBTYPE OF (plane_angle_measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN
-       TYPEOF(SELF\measure_with_unit.value_component);
-END_ENTITY;
-
-ENTITY power_expression
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY power_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY power_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.watt);
-END_ENTITY;
-
-ENTITY pre_defined_character_glyph
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_colour
-  SUBTYPE OF (pre_defined_item, colour);
-END_ENTITY;
-
-ENTITY pre_defined_curve_font
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_dimension_symbol
-  SUBTYPE OF (pre_defined_symbol);
-WHERE
-  WR1: SELF.name IN
-       ['arc length',
-        'conical taper',
-        'counterbore',
-        'countersink',
-        'depth',
-        'diameter',
-        'plus minus',
-        'radius',
-        'slope',
-        'spherical diameter',
-        'spherical radius',
-        'square'];
-END_ENTITY;
-
-ENTITY pre_defined_geometrical_tolerance_symbol
-  SUBTYPE OF (pre_defined_symbol);
-WHERE
-  WR1: 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'];
-END_ENTITY;
-
-ENTITY pre_defined_item;
-  name : label;
-END_ENTITY;
-
-ENTITY pre_defined_marker
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_point_marker_symbol
-  SUBTYPE OF (pre_defined_marker, pre_defined_symbol);
-WHERE
-  WR1: SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x'];
-END_ENTITY;
-
-ENTITY pre_defined_surface_condition_symbol
-  SUBTYPE OF (pre_defined_symbol);
-WHERE
-  WR1: 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'];
-END_ENTITY;
-
-ENTITY pre_defined_surface_side_style
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_symbol
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_terminator_symbol
-  SUBTYPE OF (pre_defined_symbol);
-WHERE
-  WR1: 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'];
-END_ENTITY;
-
-ENTITY pre_defined_text_font
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY pre_defined_tile
-  SUBTYPE OF (pre_defined_item);
-END_ENTITY;
-
-ENTITY precision_qualifier;
-  precision_value : INTEGER;
-END_ENTITY;
-
-ENTITY prescribed_path
-  SUBTYPE OF (link_motion_representation_along_path);
-  controlling_joints : OPTIONAL SET [1 : 6] OF kinematic_joint;
-END_ENTITY;
-
-ENTITY presentation_area
-  SUBTYPE OF (presentation_representation);
-WHERE
-  WR1: ((SIZEOF(QUERY(ais
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET.AREA')
-                      | SIZEOF(USEDIN(ais, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')) =
-                        1)) >
-         0) OR
-        (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_SIZE.UNIT')) = 1));
-END_ENTITY;
-
-ENTITY presentation_layer_assignment;
-  name           : label;
-  description    : text;
-  assigned_items : SET [1 : ?] OF layered_item;
-END_ENTITY;
-
-ENTITY presentation_representation
-  SUPERTYPE OF (ONEOF(presentation_area, presentation_view))
-  SUBTYPE OF (representation);
-  SELF\representation.context_of_items : geometric_representation_context;
-WHERE
-  WR1: SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_AREA' IN TYPEOF(SELF)) OR
-       (SIZEOF(QUERY(prr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
-                       TYPEOF(prr\representation_relationship.rep_1))) >
-        0) OR
-       (SIZEOF(QUERY(rm
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')
-                     | SIZEOF(QUERY(mi
-                                    <* USEDIN(rm,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')
-                                    | SIZEOF(QUERY(rep
-                                                   <* using_representations(mi)
-                                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN
-                                                     TYPEOF(rep))) >
-                                      0)) >
-                       0)) >
-        0);
-END_ENTITY;
-
-ENTITY presentation_set;
-INVERSE
-  areas : SET [1:?] OF area_in_set FOR in_set;
-END_ENTITY;
-
-ENTITY presentation_size;
-  unit : presentation_size_assignment_select;
-  size : planar_box;
-UNIQUE
-  UR1: unit;
-WHERE
-  WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN TYPEOF(unit)) AND
-        item_in_context(size, unit\representation.context_of_items)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET' IN TYPEOF(unit)) AND
-        (SIZEOF(QUERY(ais
-                      <* unit\area_in_set.in_set.areas
-                      | NOT item_in_context(size, ais.area\representation.context_of_items))) =
-         0));
-END_ENTITY;
-
-ENTITY presentation_style_assignment
-  SUBTYPE OF (founded_item);
-  styles : SET [1 : ?] OF presentation_style_select;
-WHERE
-  WR1: SIZEOF(QUERY(style1
-                    <* styles
-                    | NOT (SIZEOF(QUERY(style2
-                                        <* (styles - style1)
-                                        | NOT ((TYPEOF(style1) <> TYPEOF(style2)) OR
-                                               (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE',
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_STYLE'] *
-                                                       TYPEOF(style1)) =
-                                                1)))) =
-                           0))) =
-       0;
-  WR2: SIZEOF(QUERY(style1
-                    <* styles
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF(style1))) <=
-       2;
-  WR3: SIZEOF(QUERY(style1
-                    <* styles
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF(style1)) AND
-                      (SIZEOF(QUERY(style2
-                                    <* (styles - style1)
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY presentation_style_by_context
-  SUBTYPE OF (presentation_style_assignment);
-  style_context : style_context_select;
-END_ENTITY;
-
-ENTITY presentation_view
-  SUBTYPE OF (presentation_representation);
-END_ENTITY;
-
-ENTITY presented_item
-  ABSTRACT SUPERTYPE;
-END_ENTITY;
-
-ENTITY presented_item_representation;
-  presentation : presentation_representation_select;
-  item         : presented_item;
-END_ENTITY;
-
-ENTITY pressure_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY pressure_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.pascal);
-END_ENTITY;
-
-ENTITY previous_change_element_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : previous_element_assignment_select;
-  items                                : SET [1 : ?] OF change_management_object;
-END_ENTITY;
-
-ENTITY primitive_2d
-  SUPERTYPE OF (ONEOF(circular_area, elliptic_area, rectangular_area, polygonal_area, half_space_2d))
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 2;
-END_ENTITY;
-
-ENTITY primitive_2d_with_inner_boundary
-  SUBTYPE OF (complex_area, compound_representation_item);
-  SELF\compound_representation_item.item_element : compound_inner_area_boundary;
-DERIVE
-  inner_boundary : compound_inner_area_boundary := SELF\compound_representation_item.item_element;
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPTIC_AREA',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_AREA',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_WITH_OUTER_BOUNDARY',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS'] *
-              TYPEOF(SELF)) >
-       0;
-  WR2: SIZEOF(QUERY(inner
-                    <* inner_boundary
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN
-                      TYPEOF(inner))) =
-       0;
-  WR3: open_path_based_inner_boundary(inner_boundary);
-END_ENTITY;
-
-ENTITY prismatic_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := false;
-END_ENTITY;
-
-ENTITY prismatic_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : prismatic_pair;
-  actual_translation              : length_measure;
-END_ENTITY;
-
-ENTITY prismatic_pair_with_range
-  SUBTYPE OF (prismatic_pair);
-  lower_limit_actual_translation : OPTIONAL length_measure;
-  upper_limit_actual_translation : OPTIONAL length_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR
-       (lower_limit_actual_translation < upper_limit_actual_translation);
-END_ENTITY;
-
-ENTITY procedural_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF procedural_representation_sequence;
-END_ENTITY;
-
-ENTITY procedural_representation_sequence
-  SUBTYPE OF (representation_item);
-  elements         : LIST [1 : ?] OF representation_item;
-  suppressed_items : SET [0 : ?] OF representation_item;
-  rationale        : text;
-WHERE
-  WR1: SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0;
-END_ENTITY;
-
-ENTITY procedural_shape_representation
-  SUBTYPE OF (procedural_representation, shape_representation);
-  SELF\representation.items : SET [1 : ?] OF procedural_shape_representation_sequence;
-END_ENTITY;
-
-ENTITY procedural_shape_representation_sequence
-  SUBTYPE OF (geometric_representation_item, procedural_representation_sequence);
-  SELF\procedural_representation_sequence.elements : LIST [1 : ?] OF shape_representation_item;
-END_ENTITY;
-
-ENTITY procedural_solid_representation_sequence
-  SUBTYPE OF (procedural_shape_representation_sequence);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_MODEL' IN TYPEOF(SELF);
-END_ENTITY;
-
-ENTITY process_operation
-  SUBTYPE OF (action_method);
-END_ENTITY;
-
-ENTITY process_plan
-  SUBTYPE OF (action);
-WHERE
-  WR1: SIZEOF(QUERY(ar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
-                             TYPEOF(ar.relating_action)) <>
-                      1)) =
-       0;
-  WR2: SIZEOF(QUERY(ar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
-                              TYPEOF(ar.related_action)) =
-                       1) OR
-                      ((ar.name = 'process operation occurrence') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
-                        TYPEOF(ar.related_action.chosen_method))))) =
-       SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION'));
-END_ENTITY;
-
-ENTITY process_product_association;
-  name            : label;
-  description     : text;
-  defined_product : characterized_product_definition;
-  process         : product_definition_process;
-END_ENTITY;
-
-ENTITY process_property_association;
-  name              : label;
-  description       : text;
-  process           : property_process;
-  property_or_shape : property_or_shape_select;
-END_ENTITY;
-
-ENTITY product;
-  id                 : identifier;
-  name               : label;
-  description        : OPTIONAL text;
-  frame_of_reference : SET [1 : ?] OF product_context;
-END_ENTITY;
-
-ENTITY product_as_planned
-  SUBTYPE OF (product_definition_formation);
-END_ENTITY;
-
-ENTITY product_category;
-  name        : label;
-  description : OPTIONAL text;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY product_category_relationship;
-  name         : label;
-  description  : OPTIONAL text;
-  category     : product_category;
-  sub_category : product_category;
-WHERE
-  WR1: acyclic_product_category_relationship(SELF, [SELF.sub_category]);
-END_ENTITY;
-
-ENTITY product_class
-  SUBTYPE OF (product_concept, characterized_object);
-END_ENTITY;
-
-ENTITY product_concept;
-  id             : identifier;
-  name           : label;
-  description    : OPTIONAL text;
-  market_context : product_concept_context;
-UNIQUE
-  UR1: id;
-END_ENTITY;
-
-ENTITY product_concept_context
-  SUBTYPE OF (application_context_element);
-  market_segment_type : label;
-END_ENTITY;
-
-ENTITY product_concept_feature;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY product_concept_feature_association;
-  name        : label;
-  description : OPTIONAL text;
-  concept     : product_concept;
-  feature     : product_concept_feature;
-END_ENTITY;
-
-ENTITY product_concept_feature_category
-  SUBTYPE OF (group);
-WHERE
-  WR1: SIZEOF(QUERY(aga
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP_ASSIGNMENT.ASSIGNED_GROUP')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE' IN
-                                        TYPEOF(i)) AND
-                                       NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE' IN
-                                            TYPEOF(i)))) <>
-                        SIZEOF(aga\applied_group_assignment.items))))) =
-       0;
-END_ENTITY;
-
-ENTITY product_concept_feature_category_usage
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_concept_feature_category;
-  items                                : SET [1 : ?] OF category_usage_item;
-WHERE
-  WR1: SELF.role.name IN ['mandatory category usage','optional category usage'];
-END_ENTITY;
-
-ENTITY product_concept_relationship;
-  name                     : label;
-  description              : OPTIONAL text;
-  relating_product_concept : product_concept;
-  related_product_concept  : product_concept;
-END_ENTITY;
-
-ENTITY product_context
-  SUBTYPE OF (application_context_element);
-  discipline_type : label;
-END_ENTITY;
-
-ENTITY product_data_and_data_equivalence_relationship;
-  id               : identifier;
-  name             : label;
-  description      : OPTIONAL text;
-  product_data     : equivalence_product_data_select;
-  data_equivalence : data_equivalence_definition;
-END_ENTITY;
-
-ENTITY product_data_and_data_quality_relationship;
-  description  : text;
-  product_data : product_definition;
-  data_quality : data_quality_definition;
-END_ENTITY;
-
-ENTITY product_definition
-  SUPERTYPE OF (ONEOF(composite_assembly_sequence_definition, ply_laminate_sequence_definition));
-  id                 : identifier;
-  description        : OPTIONAL text;
-  formation          : product_definition_formation;
-  frame_of_reference : product_definition_context;
-DERIVE
-  name : label := get_name_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY product_definition_context
-  SUBTYPE OF (application_context_element);
-  life_cycle_stage : label;
-END_ENTITY;
-
-ENTITY product_definition_context_association;
-  definition         : product_definition;
-  frame_of_reference : product_definition_context;
-  role               : product_definition_context_role;
-END_ENTITY;
-
-ENTITY product_definition_context_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY product_definition_effectivity
-  SUBTYPE OF (effectivity);
-  usage : product_definition_relationship;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) =
-       0;
-END_ENTITY;
-
-ENTITY product_definition_element_relationship
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY product_definition_formation;
-  id          : identifier;
-  description : OPTIONAL text;
-  of_product  : product;
-UNIQUE
-  UR1: id, of_product;
-END_ENTITY;
-
-ENTITY product_definition_formation_relationship;
-  id                                    : identifier;
-  name                                  : label;
-  description                           : OPTIONAL text;
-  relating_product_definition_formation : product_definition_formation;
-  related_product_definition_formation  : product_definition_formation;
-END_ENTITY;
-
-ENTITY product_definition_formation_resource
-  SUBTYPE OF (action_resource, product_definition_formation);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) >
-       0;
-  WR2: SIZEOF(QUERY(prpc
-                    <* USEDIN(SELF\product_definition_formation.of_product,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                    | prpc.name = 'part')) <>
-       0;
-  WR3: SELF\action_resource.name = SELF\product_definition_formation.id;
-  WR4: SELF\action_resource.description = SELF\product_definition_formation.description;
-END_ENTITY;
-
-ENTITY product_definition_formation_with_specified_source
-  SUBTYPE OF (product_definition_formation);
-  make_or_buy : source;
-END_ENTITY;
-
-ENTITY product_definition_group_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_definition_element_relationship;
-  items                                : SET [1 : 1] OF product_definition_or_product_definition_relationship;
-END_ENTITY;
-
-ENTITY product_definition_kinematics
-  SUBTYPE OF (property_definition);
-  SELF\property_definition.definition : product_definition;
-INVERSE
-  representation_relation : kinematic_property_definition_representation FOR definition;
-UNIQUE
-  UR1: definition;
-END_ENTITY;
-
-ENTITY product_definition_occurrence
-  SUPERTYPE OF (product_definition_specified_occurrence ANDOR
-                product_definition_occurrence_reference_with_local_representation);
-  id          : identifier;
-  name        : OPTIONAL label;
-  description : OPTIONAL text;
-  definition  : OPTIONAL product_definition_or_reference_or_occurrence;
-  quantity    : OPTIONAL measure_with_unit;
-DERIVE
-  descendant_occurrences : SET [0 : ?] OF product_definition_specified_occurrence := get_descendant_occurrences(SELF);
-INVERSE
-  assembly_usages   : SET [0:?] OF assembly_component_usage FOR related_product_definition;
-  child_occurrences : SET [0:?] OF product_definition_specified_occurrence FOR occurrence_usage;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE' IN TYPEOF(SELF)) XOR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE' IN TYPEOF(definition)) OR
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE_REFERENCE' IN
-         TYPEOF(definition)));
-  WR2: EXISTS(definition) OR
-       (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.DESIGN')) > 0);
-  WR3: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
-END_ENTITY;
-
-ENTITY product_definition_occurrence_reference
-  SUBTYPE OF (product_definition_reference);
-  product_occurrence_id : identifier;
-END_ENTITY;
-
-ENTITY product_definition_occurrence_reference_with_local_representation
-  SUBTYPE OF (product_definition_occurrence, generic_product_definition_reference);
-END_ENTITY;
-
-ENTITY product_definition_occurrence_relationship;
-  name             : label;
-  description      : OPTIONAL text;
-  occurrence       : product_definition;
-  occurrence_usage : assembly_component_usage;
-WHERE
-  WR1: occurrence_usage.relating_product_definition :<>: occurrence;
-  WR2: occurrence_usage.related_product_definition :<>: occurrence;
-  WR3: occurrence.formation :=: occurrence_usage.related_product_definition.formation;
-END_ENTITY;
-
-ENTITY product_definition_process
-  SUBTYPE OF (action);
-  identification : identifier;
-INVERSE
-  product_definitions : SET [1:?] OF process_product_association FOR process;
-END_ENTITY;
-
-ENTITY product_definition_reference
-  SUBTYPE OF (generic_product_definition_reference);
-  product_id                      : identifier;
-  product_definition_formation_id : identifier;
-  product_definition_id           : identifier;
-  id_owning_organization_name     : OPTIONAL label;
-END_ENTITY;
-
-ENTITY product_definition_reference_with_local_representation
-  SUBTYPE OF (generic_product_definition_reference, product_definition);
-END_ENTITY;
-
-ENTITY product_definition_relationship;
-  id                          : identifier;
-  name                        : label;
-  description                 : OPTIONAL text;
-  relating_product_definition : product_definition_or_reference;
-  related_product_definition  : product_definition_or_reference;
-END_ENTITY;
-
-ENTITY product_definition_relationship_kinematics
-  SUBTYPE OF (property_definition);
-  SELF\property_definition.definition : product_definition_relationship;
-UNIQUE
-  UR1: definition;
-END_ENTITY;
-
-ENTITY product_definition_relationship_relationship;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-  relating    : product_definition_relationship;
-  related     : product_definition_relationship;
-END_ENTITY;
-
-ENTITY product_definition_resource
-  SUBTYPE OF (action_resource, product_definition);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) >
-       0;
-  WR2: SELF\product_definition.frame_of_reference\application_context_element.name IN
-       ['part definition','part occurrence','physical occurrence'];
-  WR3: SELF\action_resource.name = SELF\product_definition.name;
-  WR4: SELF\action_resource.description = SELF\product_definition.description;
-END_ENTITY;
-
-ENTITY product_definition_shape
-  SUBTYPE OF (property_definition);
-UNIQUE
-  UR1: SELF\property_definition.definition;
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT'] *
-              TYPEOF(SELF\property_definition.definition)) >
-       0;
-END_ENTITY;
-
-ENTITY product_definition_specified_occurrence
-  SUBTYPE OF (product_definition_occurrence);
-  SELF\product_definition_occurrence.definition : product_definition_occurrence_or_reference;
-  occurrence_usage                              : product_definition_occurrence_or_reference;
-UNIQUE
-  UR1: occurrence_usage, id;
-WHERE
-  WR1: SIZEOF(assembly_usages) = 0;
-  WR2: acyclic_product_definition_specified_occurrence(SELF, SELF\product_definition_occurrence.definition);
-END_ENTITY;
-
-ENTITY product_definition_substitute;
-  description           : OPTIONAL text;
-  context_relationship  : product_definition_relationship;
-  substitute_definition : product_definition;
-DERIVE
-  name : label := get_name_value(SELF);
-WHERE
-  WR1: context_relationship.related_product_definition :<>: substitute_definition;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY product_definition_usage
-  SUPERTYPE OF (ONEOF(make_from_usage_option, assembly_component_usage))
-  SUBTYPE OF (product_definition_relationship);
-UNIQUE
-  UR1: SELF\product_definition_relationship.id, SELF\product_definition_relationship.relating_product_definition,
-       SELF\product_definition_relationship.related_product_definition;
-WHERE
-  WR1: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition],
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE');
-END_ENTITY;
-
-ENTITY product_definition_usage_relationship
-  SUBTYPE OF (product_definition_relationship_relationship);
-  SELF\product_definition_relationship_relationship.relating : product_definition_usage;
-  SELF\product_definition_relationship_relationship.related  : product_definition_usage;
-WHERE
-  WR1: relating.relating_product_definition :=: related.relating_product_definition;
-END_ENTITY;
-
-ENTITY product_definition_with_associated_documents
-  SUBTYPE OF (product_definition);
-  documentation_ids : SET [1 : ?] OF document;
-END_ENTITY;
-
-ENTITY product_design_to_individual
-  SUBTYPE OF (product_relationship);
-DERIVE
-  individual_product : product := SELF\product_relationship.related_product;
-  product_design     : product := SELF\product_relationship.relating_product;
-END_ENTITY;
-
-ENTITY product_design_version_to_individual
-  SUBTYPE OF (product_definition_formation_relationship);
-DERIVE
-  individual_product     : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
-  product_design_version : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
-END_ENTITY;
-
-ENTITY product_group
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY product_group_attribute_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_group_attributes;
-  attributes                           : SET [1 : 1] OF attribute_select;
-END_ENTITY;
-
-ENTITY product_group_attribute_set
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_group;
-  product_group_attributes             : SET [1 : 1] OF product_group_attributes;
-END_ENTITY;
-
-ENTITY product_group_attributes
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY product_group_context
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY product_group_membership
-  SUBTYPE OF (characterized_object, group_assignment);
-  member : product_select;
-END_ENTITY;
-
-ENTITY product_group_membership_rules
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_group;
-  product_group_rules                  : SET [1 : 1] OF product_group_rules;
-END_ENTITY;
-
-ENTITY product_group_purpose
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY product_group_relationship
-  SUBTYPE OF (group_relationship);
-END_ENTITY;
-
-ENTITY product_group_rule
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY product_group_rule_assignment
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : product_group_rules;
-  product_group_rules                  : SET [1 : ?] OF product_group_rule;
-END_ENTITY;
-
-ENTITY product_group_rules
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY product_identification
-  SUBTYPE OF (configuration_item, characterized_object);
-  SELF\configuration_item.item_concept : product_class;
-WHERE
-  WR1: SIZEOF(QUERY(cd
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
-                       TYPEOF(cd.design)) AND
-                      (SIZEOF(QUERY(prpc
-                                    <* USEDIN(cd.design\product_definition_formation.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name IN ['part','raw material','tool'])) >
-                       0))) <=
-       1;
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURABLE_ITEM' IN TYPEOF(SELF)) XOR
-           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_SPECIFICATION' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY product_in_attachment_slot
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY product_material_composition_relationship
-  SUBTYPE OF (product_definition_relationship);
-  class                : label;
-  constituent_amount   : SET [1 : ?] OF characterized_product_composition_value;
-  composition_basis    : label;
-  determination_method : text;
-END_ENTITY;
-
-ENTITY product_planned_to_realized
-  SUBTYPE OF (product_definition_formation_relationship);
-DERIVE
-  planned_product  : product_definition_formation := SELF\product_definition_formation_relationship.relating_product_definition_formation;
-  realized_product : product_definition_formation := SELF\product_definition_formation_relationship.related_product_definition_formation;
-END_ENTITY;
-
-ENTITY product_process_plan
-  SUBTYPE OF (product_definition_process);
-WHERE
-  WR1: SIZEOF(QUERY(ar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
-                             TYPEOF(ar.relating_action)) <>
-                      1)) =
-       0;
-  WR2: SIZEOF(QUERY(ar
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN'] *
-                              TYPEOF(ar.related_action)) =
-                       1) OR
-                      ((ar.name = 'process operation occurrence') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN
-                        TYPEOF(ar.related_action.chosen_method))))) =
-       SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION'));
-  WR3: SIZEOF(QUERY(ppa
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PRODUCT_ASSOCIATION.PROCESS')
-                    | (ppa.name <> 'produced output') OR
-                      NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-                           TYPEOF(ppa.defined_product)))) =
-       0;
-END_ENTITY;
-
-ENTITY product_related_product_category
-  SUBTYPE OF (product_category);
-  products : SET [1 : ?] OF product;
-END_ENTITY;
-
-ENTITY product_relationship;
-  id               : identifier;
-  name             : label;
-  description      : OPTIONAL text;
-  relating_product : product;
-  related_product  : product;
-END_ENTITY;
-
-ENTITY product_resource
-  SUBTYPE OF (action_resource, product);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) >
-       0;
-  WR2: SIZEOF(QUERY(prpc
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                    | prpc.name = 'part')) <>
-       0;
-  WR3: SELF\action_resource.name = SELF\product.name;
-  WR4: SELF\action_resource.description = SELF\product.description;
-END_ENTITY;
-
-ENTITY product_specification
-  SUBTYPE OF (product_identification, configurable_item);
-END_ENTITY;
-
-ENTITY profile_floor
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['planar','complex','through'];
-  WR3: (NOT (SELF.description IN ['planar','complex']) OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(pdr
-                                              <* USEDIN(pd,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                TYPEOF(pdr.used_representation))) =
-                                 1))) =
-             0));
-  WR4: (NOT (SELF.description IN ['planar','complex'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR5: (NOT (SELF.description = 'through') OR
-            (SIZEOF(QUERY(pd
-                          <* USEDIN(SELF,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                          | NOT (SIZEOF(QUERY(pdr
-                                              <* USEDIN(pd,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                TYPEOF(pdr.used_representation))) =
-                                 0))) =
-             0));
-  WR6: (NOT (SELF.description IN ['planar','complex'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'radius'))) =
-                                                1))) =
-                            0))) =
-        0);
-  WR7: SIZEOF(QUERY(fcr
-                    <* QUERY(sar
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                             | (sar.description = 'profile floor usage') AND
-                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                TYPEOF(sar)))
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE' IN
-                        TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR' IN
-                        TYPEOF(fcr.relating_shape_aspect))))) >=
-       1;
-  WR8: ((NOT (SELF.description IN ['planar','complex'])) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-  WR9: (NOT (SELF.description = 'complex')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                            TYPEOF(pdr.used_representation)) AND
-                                           (pdr.used_representation.name = 'floor'))) =
-                            1))) =
-        1);
-  WR10: (NOT (SELF.description = 'planar')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)) AND
-                                            (pdr.used_representation.name = 'floor'))) =
-                             1))) =
-         1);
-END_ENTITY;
-
-ENTITY projected_zone_definition
-  SUBTYPE OF (tolerance_zone_definition);
-  projection_end   : shape_aspect;
-  projected_length : length_measure_with_unit;
-WHERE
-  WR1: ('NUMBER' IN TYPEOF(projected_length\measure_with_unit.value_component)) AND
-       (projected_length\measure_with_unit.value_component > 0.0);
-  WR2: (derive_dimensional_exponents(projected_length\measure_with_unit.unit_component) =
-        dimensional_exponents(1, 0, 0, 0, 0, 0, 0));
-END_ENTITY;
-
-ENTITY projected_zone_definition_with_offset
-  SUBTYPE OF (projected_zone_definition);
-  offset : length_measure_with_unit;
-END_ENTITY;
-
-ENTITY projection_curve
-  SUBTYPE OF (annotation_curve_occurrence);
-END_ENTITY;
-
-ENTITY projection_directed_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(QUERY(p_1
-                    <* SELF\draughting_callout.contents
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1)))) <=
-       2;
-  WR2: SIZEOF(SELF\draughting_callout.contents) >= 2;
-END_ENTITY;
-
-ENTITY promissory_usage_occurrence
-  SUBTYPE OF (assembly_component_usage);
-END_ENTITY;
-
-ENTITY property_definition
-  SUPERTYPE OF (ONEOF(product_definition_kinematics, product_definition_relationship_kinematics,
-                      product_definition_shape));
-  name        : label;
-  description : OPTIONAL text;
-  definition  : characterized_definition;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY property_definition_relationship;
-  name                         : label;
-  description                  : text;
-  relating_property_definition : property_definition;
-  related_property_definition  : property_definition;
-END_ENTITY;
-
-ENTITY property_definition_representation;
-  definition          : represented_definition;
-  used_representation : representation;
-DERIVE
-  description : text  := get_description_value(SELF);
-  name        : label := get_name_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY property_process
-  SUBTYPE OF (action);
-  identification : identifier;
-INVERSE
-  properties : SET [1:?] OF process_property_association FOR process;
-END_ENTITY;
-
-ENTITY protrusion
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'shape volume occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'volume shape usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (sdr.relating_shape_aspect.description =
-                                                              'volume shape'))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-END_ENTITY;
-
-ENTITY pyramid_volume
-  SUBTYPE OF (volume);
-  position : axis2_placement_3d;
-  xlength  : positive_length_measure;
-  ylength  : positive_length_measure;
-  height   : positive_length_measure;
-END_ENTITY;
-
-ENTITY qualified_representation_item
-  SUBTYPE OF (representation_item);
-  qualifiers : SET [1 : ?] OF value_qualifier;
-WHERE
-  WR1: SIZEOF(QUERY(temp
-                    <* qualifiers
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp)) OR
-                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATHS_VALUE_PRECISION_QUALIFIER' IN
-                       TYPEOF(temp)))) <
-       2;
-END_ENTITY;
-
-ENTITY qualitative_uncertainty
-  SUBTYPE OF (uncertainty_qualifier);
-  uncertainty_value : text;
-END_ENTITY;
-
-ENTITY quantified_assembly_component_usage
-  SUBTYPE OF (assembly_component_usage);
-  quantity : measure_with_unit;
-WHERE
-  WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
-END_ENTITY;
-
-ENTITY quantifier_expression
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (multiple_arity_generic_expression);
-  variables : LIST [1 : ?] OF UNIQUE generic_variable;
-WHERE
-  WR1: SIZEOF(QUERY(vrbl <* variables | NOT (vrbl IN SELF\multiple_arity_generic_expression.operands))) = 0;
-  WR2: SIZEOF(QUERY(vrbl
-                    <* variables
-                    | NOT ((schema_prefix + 'BOUND_VARIABLE_SEMANTICS') IN TYPEOF(vrbl.interpretation.semantics)))) =
-       0;
-END_ENTITY;
-
-ENTITY quasi_uniform_curve
-  SUBTYPE OF (b_spline_curve);
-END_ENTITY;
-
-ENTITY quasi_uniform_surface
-  SUBTYPE OF (b_spline_surface);
-END_ENTITY;
-
-ENTITY quasi_uniform_volume
-  SUBTYPE OF (b_spline_volume);
-END_ENTITY;
-
-ENTITY rack_and_pinion_pair
-  SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
-  pinion_radius : length_measure;
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY rack_and_pinion_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : rack_and_pinion_pair;
-  actual_displacement             : length_measure;
-DERIVE
-  actual_rotation : plane_angle_measure := 0.0;
-END_ENTITY;
-
-ENTITY rack_and_pinion_pair_with_range
-  SUBTYPE OF (rack_and_pinion_pair);
-  lower_limit_rack_displacement : OPTIONAL length_measure;
-  upper_limit_rack_displacement : OPTIONAL length_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_rack_displacement) OR NOT EXISTS(upper_limit_rack_displacement)) XOR
-       (lower_limit_rack_displacement < upper_limit_rack_displacement);
-END_ENTITY;
-
-ENTITY radioactivity_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIOACTIVITY_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY radioactivity_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.becquerel);
-END_ENTITY;
-
-ENTITY radius_dimension
-  SUBTYPE OF (dimension_curve_directed_callout);
-WHERE
-  WR1: SIZEOF(QUERY(con
-                    <* SELF.contents
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN TYPEOF(con))) <=
-       1;
-END_ENTITY;
-
-ENTITY radius_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF radial_geometry_constraint_element;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-END_ENTITY;
-
-ENTITY range_characteristic
-  SUBTYPE OF (representation, descriptive_representation_item);
-WHERE
-  WR1: NOT (SELF\representation.name IN
-            ['tolerance',
-             'minimum tolerance',
-             'maximum tolerance',
-             'nominal tolerance',
-             'plus minus tolerance',
-             'symmetrical tolerance',
-             'statistical tolerance']);
-END_ENTITY;
-
-ENTITY ratio_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY ratio_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY rational_b_spline_curve
-  SUBTYPE OF (b_spline_curve);
-  weights_data : LIST [2 : ?] OF REAL;
-DERIVE
-  weights : ARRAY [0 : upper_index_on_control_points] OF REAL := list_to_array(weights_data, 0,
-                                                                               upper_index_on_control_points);
-WHERE
-  WR1: SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.control_points_list);
-  WR2: curve_weights_positive(SELF);
-END_ENTITY;
-
-ENTITY rational_b_spline_surface
-  SUBTYPE OF (b_spline_surface);
-  weights_data : LIST [2 : ?] OF LIST [2 : ?] OF REAL;
-DERIVE
-  weights : ARRAY [0 : u_upper] OF ARRAY [0 : v_upper] OF REAL := make_array_of_array(weights_data, 0, u_upper, 0,
-                                                                                      v_upper);
-WHERE
-  WR1: (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]));
-  WR2: surface_weights_positive(SELF);
-END_ENTITY;
-
-ENTITY rational_b_spline_volume
-  SUBTYPE OF (b_spline_volume);
-  weights_data : LIST [2 : ?] OF LIST [2 : ?] OF LIST [2 : ?] OF REAL;
-DERIVE
-  weights : ARRAY [0 : u_upper] OF ARRAY [0 : v_upper] OF ARRAY [0 : w_upper] OF REAL := make_array_of_array_of_array(weights_data,
-                                                                                                                      0,
-                                                                                                                      u_upper,
-                                                                                                                      0,
-                                                                                                                      v_upper,
-                                                                                                                      0,
-                                                                                                                      w_upper);
-WHERE
-  WR1: (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_volume.control_points_list)) AND
-       (SIZEOF(weights_data[1]) = SIZEOF(SELF\b_spline_volume.control_points_list[1])) AND
-       (SIZEOF(weights_data[1][1]) = SIZEOF(SELF\b_spline_volume.control_points_list[1][1]));
-  WR2: volume_weights_positive(SELF);
-END_ENTITY;
-
-ENTITY rational_locally_refined_spline_curve
-  SUBTYPE OF (locally_refined_spline_curve);
-  weights_data : LIST [2 : ?] OF REAL;
-WHERE
-  WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_curve.control_points_list);
-  WR2: weights_positive(SELF.weights_data);
-END_ENTITY;
-
-ENTITY rational_locally_refined_spline_surface
-  SUBTYPE OF (locally_refined_spline_surface);
-  weights_data : LIST [4 : ?] OF REAL;
-WHERE
-  WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_surface.control_points_list);
-  WR2: weights_positive(SELF.weights_data);
-END_ENTITY;
-
-ENTITY rational_locally_refined_spline_volume
-  SUBTYPE OF (locally_refined_spline_volume);
-  weights_data : LIST [8 : ?] OF REAL;
-WHERE
-  WR1: SIZEOF(weights_data) = SIZEOF(SELF\locally_refined_spline_volume.control_points_list);
-  WR2: weights_positive(SELF.weights_data);
-END_ENTITY;
-
-ENTITY rational_representation_item
-  SUBTYPE OF (representation_item, slash_expression);
-WHERE
-  WR1: SIZEOF(QUERY(operand
-                    <* SELF\binary_generic_expression.operands
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) =
-       0;
-END_ENTITY;
-
-ENTITY rationalize_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-DERIVE
-  fun : maths_function := SELF\unary_generic_expression.operand;
-WHERE
-  WR1: (space_dimension(fun.domain) = 1) AND (space_dimension(fun.range) = 1);
-  WR2: number_tuple_subspace_check(factor1(fun.range));
-  WR3: space_dimension(factor1(fun.range)) > 1;
-END_ENTITY;
-
-ENTITY real_defined_function
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (numeric_defined_function);
-END_ENTITY;
-
-ENTITY real_interval_from_min
-  SUBTYPE OF (maths_space, generic_literal);
-  min         : REAL;
-  min_closure : open_closed;
-END_ENTITY;
-
-ENTITY real_interval_to_max
-  SUBTYPE OF (maths_space, generic_literal);
-  max         : REAL;
-  max_closure : open_closed;
-END_ENTITY;
-
-ENTITY real_literal
-  SUBTYPE OF (literal_number);
-  SELF\literal_number.the_value : REAL;
-END_ENTITY;
-
-ENTITY real_numeric_variable
-  SUBTYPE OF (numeric_variable);
-END_ENTITY;
-
-ENTITY real_representation_item
-  SUBTYPE OF (representation_item, real_literal);
-END_ENTITY;
-
-ENTITY real_tuple_literal
-  SUBTYPE OF (generic_literal);
-  lit_value : LIST [1 : ?] OF REAL;
-END_ENTITY;
-
-ENTITY rectangular_area
-  SUBTYPE OF (primitive_2d);
-  position : axis2_placement_2d;
-  x        : positive_length_measure;
-  y        : positive_length_measure;
-END_ENTITY;
-
-ENTITY rectangular_array_placement_group_component
-  SUBTYPE OF (array_placement_group);
-END_ENTITY;
-
-ENTITY rectangular_closed_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                          TYPEOF(pdr.used_representation))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'orientation'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'width'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'length'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'corner radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY rectangular_composite_surface
-  SUBTYPE OF (bounded_surface);
-  segments : LIST [1 : ?] OF LIST [1 : ?] OF surface_patch;
-DERIVE
-  n_u : INTEGER := SIZEOF(segments);
-  n_v : INTEGER := SIZEOF(segments[1]);
-WHERE
-  WR1: SIZEOF(QUERY(s <* segments | n_v <> SIZEOF(s))) = 0;
-  WR2: constraints_rectangular_composite_surface(SELF);
-END_ENTITY;
-
-ENTITY rectangular_composite_surface_transition_locator
-  SUBTYPE OF (founded_item);
-  basis_surface      : rectangular_composite_surface;
-  surface_parameter  : u_or_v_parameter;
-  u_transition_index : INTEGER;
-  v_transition_index : INTEGER;
-WHERE
-  WR1: SIZEOF(using_representations(SELF.basis_surface) * relating_shape_representations_of_extreme_values(SELF)) > 0;
-END_ENTITY;
-
-ENTITY rectangular_pattern
-  SUBTYPE OF (replicate_feature);
-WHERE
-  WR1: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                                                                    | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                              TYPEOF(sdr.related_shape_aspect)))) =
-                                              1)))) <=
-                             5)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'row layout direction')))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'column layout direction')))) =
-                             1)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 5)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                   TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                  (it.name = 'number of rows')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                   TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                  (it.name = 'number of columns')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR8: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'row spacing')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR9: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'column spacing')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR10: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'orientation')))) =
-                                                   1)))) =
-                              0)))) =
-         0);
-END_ENTITY;
-
-ENTITY rectangular_pyramid
-  SUBTYPE OF (geometric_representation_item);
-  position : axis2_placement_3d;
-  xlength  : positive_length_measure;
-  ylength  : positive_length_measure;
-  height   : positive_length_measure;
-END_ENTITY;
-
-ENTITY rectangular_trimmed_surface
-  SUBTYPE OF (bounded_surface);
-  basis_surface : surface;
-  u1            : parameter_value;
-  u2            : parameter_value;
-  v1            : parameter_value;
-  v2            : parameter_value;
-  usense        : BOOLEAN;
-  vsense        : BOOLEAN;
-WHERE
-  WR1: u1 <> u2;
-  WR2: v1 <> v2;
-  WR3: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) AND
-        (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) OR
-       (usense = (u2 > u1));
-  WR4: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) OR
-        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) OR
-       (vsense = (v2 > v1));
-END_ENTITY;
-
-ENTITY referenced_modified_datum
-  SUBTYPE OF (datum_reference);
-  modifier : limit_condition;
-END_ENTITY;
-
-ENTITY regular_table_function
-  SUBTYPE OF (linearized_table_function);
-  increments : LIST [1 : ?] OF INTEGER;
-WHERE
-  WR1: SIZEOF(increments) = SIZEOF(SELF\explicit_table_function.shape);
-  WR2: extremal_position_check(SELF);
-END_ENTITY;
-
-ENTITY reindexed_array_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  starting_indices                      : LIST [1 : ?] OF INTEGER;
-WHERE
-  WR1: function_is_array(SELF\unary_generic_expression.operand);
-  WR2: SIZEOF(starting_indices) = SIZEOF(shape_of_array(SELF\unary_generic_expression.operand));
-END_ENTITY;
-
-ENTITY reinforcement_orientation_basis
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : 1] OF basis_11_direction_member;
-END_ENTITY;
-
-ENTITY relative_event_occurrence
-  SUBTYPE OF (event_occurrence);
-  base_event : event_occurrence;
-  offset     : time_measure_with_unit;
-END_ENTITY;
-
-ENTITY removal_volume
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'shape volume occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'volume shape usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (sdr.relating_shape_aspect.description =
-                                                              'volume shape'))) =
-                                              1)))) =
-                             1)))) =
-        0);
-END_ENTITY;
-
-ENTITY rep_item_group
-  SUBTYPE OF (group, representation_item);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >
-       0;
-  WR2: SIZEOF(QUERY(r
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS')
-                    | r.name = 'group representation')) >
-       0;
-  WR3: SIZEOF(QUERY(ga
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP_ASSIGNMENT.ASSIGNED_GROUP')
-                    | ga.role.name <> 'group membership')) =
-       0;
-  WR4: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOPOLOGICAL_REPRESENTATION_ITEM',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'] *
-              TYPEOF(SELF)) =
-       1;
-END_ENTITY;
-
-ENTITY repackaging_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_function;
-  input_repack                          : repackage_options;
-  output_repack                         : repackage_options;
-  selected_output                       : nonnegative_integer;
-WHERE
-  WR1: (input_repack <> ro_wrap_as_tuple) OR
-       ((space_dimension(operand.domain) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(operand.domain))));
-  WR2: (output_repack <> ro_unwrap_tuple) OR
-       ((space_dimension(operand.range) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(operand.range))));
-  WR3: selected_output <= space_dimension(repackage(operand.range, output_repack));
-END_ENTITY;
-
-ENTITY reparametrised_composite_curve_segment
-  SUBTYPE OF (composite_curve_segment);
-  param_length : parameter_value;
-WHERE
-  WR1: param_length > 0.0;
-END_ENTITY;
-
-ENTITY replicate_feature
-  SUPERTYPE OF (ONEOF(circular_pattern, rectangular_pattern, feature_pattern))
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR2: (SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                 TYPEOF(sar)))
-                     | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE',
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE'] *
-                                TYPEOF(fcr.related_shape_aspect)) >=
-                         1) AND
-                        (fcr.name = 'pattern basis')))) =
-        1);
-  WR3: ((SIZEOF(QUERY(sar
-                      <* USEDIN(SELF,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                      | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                              TYPEOF(sar))))) +
-         SIZEOF(QUERY(sar
-                      <* USEDIN(SELF,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                      | (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                              TYPEOF(sar)))))) =
-        0);
-END_ENTITY;
-
-ENTITY repositioned_neutral_sketch
-  SUBTYPE OF (mapped_item, geometric_representation_item);
-DERIVE
-  map : representation_map := SELF\mapped_item.mapping_source;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' IN
-       TYPEOF(map.mapped_representation);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN TYPEOF(map.mapping_origin);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\mapped_item.mapping_target);
-END_ENTITY;
-
-ENTITY repositioned_tessellated_item
-  SUBTYPE OF (tessellated_item);
-  location : axis2_placement_3d;
-WHERE
-  WR1: NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CURVE_SET',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_GEOMETRIC_SET',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_POINT_SET',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_WIRE'] *
-                   TYPEOF(SELF)) =
-            0);
-END_ENTITY;
-
-ENTITY representation
-  SUPERTYPE OF ((ONEOF(reinforcement_orientation_basis, ply_angle_representation)) ANDOR
-                (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)));
-  name             : label;
-  items            : SET [1 : ?] OF representation_item;
-  context_of_items : representation_context;
-DERIVE
-  id          : identifier := get_id_value(SELF);
-  description : text       := get_description_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-  WR2: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY representation_context;
-  context_identifier : identifier;
-  context_type       : text;
-INVERSE
-  representations_in_context : SET [1:?] OF representation FOR context_of_items;
-END_ENTITY;
-
-ENTITY representation_context_reference;
-  context_identifier : identifier;
-INVERSE
-  representations_in_context : SET [1:?] OF representation_reference FOR context_of_items;
-END_ENTITY;
-
-ENTITY representation_item
-  SUPERTYPE OF ((ONEOF(compound_representation_item, mapped_item,
-                       value_representation_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))) ANDOR
-                (ONEOF(mapped_item, styled_item)));
-  name : label;
-WHERE
-  WR1: SIZEOF(using_representations(SELF)) > 0;
-END_ENTITY;
-
-ENTITY representation_item_relationship;
-  name                         : label;
-  description                  : OPTIONAL text;
-  relating_representation_item : representation_item;
-  related_representation_item  : representation_item;
-END_ENTITY;
-
-ENTITY representation_map;
-  mapping_origin        : representation_item;
-  mapped_representation : representation;
-INVERSE
-  map_usage : SET [1:?] OF mapped_item FOR mapping_source;
-WHERE
-  WR1: item_in_context(mapping_origin, mapped_representation\representation.context_of_items);
-END_ENTITY;
-
-ENTITY representation_proxy_item
-  SUBTYPE OF (representation_item);
-  item : representation_proxy_select;
-END_ENTITY;
-
-ENTITY representation_reference;
-  id               : identifier;
-  context_of_items : representation_context_reference;
-END_ENTITY;
-
-ENTITY representation_relationship;
-  name        : label;
-  description : OPTIONAL text;
-  rep_1       : representation_or_representation_reference;
-  rep_2       : representation_or_representation_reference;
-END_ENTITY;
-
-ENTITY representation_relationship_with_transformation
-  SUBTYPE OF (representation_relationship);
-  transformation_operator : transformation;
-WHERE
-  WR1: SELF\representation_relationship.rep_1.context_of_items :<>:
-       SELF\representation_relationship.rep_2.context_of_items;
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION' IN
-            TYPEOF(transformation_operator)) OR
-           (item_in_context(transformation_operator\item_defined_transformation.transform_item_1,
-                            SELF\representation_relationship.rep_1.context_of_items) AND
-            item_in_context(transformation_operator\item_defined_transformation.transform_item_2,
-                            SELF\representation_relationship.rep_2.context_of_items));
-END_ENTITY;
-
-ENTITY representative_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: unique_in_product_definition(SELF) OR unique_in_shape_aspect(SELF);
-END_ENTITY;
-
-ENTITY requirement_assigned_object
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : requirement_assignment;
-  items                                : SET [1 : 1] OF requirement_assigned_item;
-END_ENTITY;
-
-ENTITY requirement_assignment
-  SUBTYPE OF (characterized_object, group);
-END_ENTITY;
-
-ENTITY requirement_for_action_resource
-  SUBTYPE OF (action_resource_requirement);
-  resources : SET [1 : ?] OF action_resource;
-END_ENTITY;
-
-ENTITY requirement_source
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY requirement_view_definition_relationship
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY resistance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESISTANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY resistance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(si_unit_name.ohm);
-END_ENTITY;
-
-ENTITY resource_property;
-  name        : label;
-  description : text;
-  resource    : characterized_resource_definition;
-END_ENTITY;
-
-ENTITY resource_property_representation;
-  name           : label;
-  description    : text;
-  property       : resource_property;
-  representation : representation;
-END_ENTITY;
-
-ENTITY resource_requirement_type;
-  name        : label;
-  description : text;
-END_ENTITY;
-
-ENTITY restriction_function
-  SUBTYPE OF (maths_function, unary_generic_expression);
-  SELF\unary_generic_expression.operand : maths_space;
-END_ENTITY;
-
-ENTITY resulting_path
-  SUBTYPE OF (link_motion_representation_along_path);
-  controlling_joints : SET [1 : ?] OF kinematic_joint;
-END_ENTITY;
-
-ENTITY retention
-  SUBTYPE OF (action);
-WHERE
-  WR1: SIZEOF(QUERY(aa
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_ASSIGNMENT.ASSIGNED_ACTION')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND
-                      (aa.role.name = 'retention'))) >=
-       1;
-  WR2: (SIZEOF(QUERY(atia
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
-                     | (atia.role.name = 'minimum retention period'))) =
-        1) AND
-       (SIZEOF(QUERY(atia
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
-                     | (atia.role.name = 'maximum retention period'))) =
-        1) AND
-       (SIZEOF(QUERY(atia1
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
-                     | (atia1.role.name = 'minimum retention period') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
-                                     | (atia2.role.name = 'maximum retention period') AND
-                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR3: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATING_ACTION')) +
-       SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_RELATIONSHIP.RELATED_ACTION')) =
-       0;
-END_ENTITY;
-
-ENTITY revolute_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY revolute_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : revolute_pair;
-  actual_rotation                 : plane_angle_measure;
-END_ENTITY;
-
-ENTITY revolute_pair_with_range
-  SUBTYPE OF (revolute_pair);
-  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR
-       (lower_limit_actual_rotation < upper_limit_actual_rotation);
-END_ENTITY;
-
-ENTITY revolved_area_solid
-  SUBTYPE OF (swept_area_solid);
-  axis  : axis1_placement;
-  angle : plane_angle_measure;
-DERIVE
-  axis_line : line := representation_item('') || geometric_representation_item() || curve() ||
-                      line(axis.location,
-                           representation_item('') || geometric_representation_item() || vector(axis.z, 1.0));
-END_ENTITY;
-
-ENTITY revolved_face_solid
-  SUBTYPE OF (swept_face_solid);
-  axis  : axis1_placement;
-  angle : plane_angle_measure;
-DERIVE
-  axis_line : line := representation_item('') || geometric_representation_item() || curve() ||
-                      line(axis.location,
-                           representation_item('') || geometric_representation_item() || vector(axis.z, 1.0));
-END_ENTITY;
-
-ENTITY revolved_face_solid_with_trim_conditions
-  SUBTYPE OF (revolved_face_solid);
-  first_trim_condition  : trim_condition_select;
-  second_trim_condition : trim_condition_select;
-WHERE
-  WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(first_trim_condition)) OR
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(second_trim_condition)));
-  WR2: NOT ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-              TYPEOF(first_trim_condition)) AND
-             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-              TYPEOF(second_trim_condition))) AND
-            (first_trim_condition = second_trim_condition));
-END_ENTITY;
-
-ENTITY revolved_profile
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SELF\characterized_object.description IN ['groove','flat','round','open profile']);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                             0)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'removal direction'))) =
-       1;
-  WR5: ((NOT (SELF\characterized_object.description = 'open profile')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'outer edge shape occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE' IN
-                                                                TYPEOF(sdr.relating_shape_aspect)) AND
-                                                               (sdr.relating_shape_aspect.description =
-                                                                'outer edge shape')))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR6: (NOT (SELF\characterized_object.description = 'flat')) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'flat edge shape occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'profile usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.relating_shape_aspect.description =
-                                                               'flat edge shape')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR7: ((NOT (SELF\characterized_object.description = 'round')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'rounded edge shape occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN
-                                                                TYPEOF(sdr.relating_shape_aspect)) AND
-                                                               (sdr.relating_shape_aspect.description =
-                                                                'rounded edge shape')))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR8: ((NOT (SELF\characterized_object.description = 'groove')) OR
-        (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'sweep occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'profile usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
-                                                                       TYPEOF(sdr.relating_shape_aspect)) =
-                                                                1) AND
-                                                               (sdr.relating_shape_aspect.description = 'sweep')))) =
-                                               1)))) =
-                              1)))) =
-         0));
-  WR9: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-END_ENTITY;
-
-ENTITY rgc_with_dimension
-  SUBTYPE OF (radius_geometric_constraint);
-  radius_value : positive_length_measure;
-END_ENTITY;
-
-ENTITY rib_top
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                               TYPEOF(pd))
-                    | NOT (SIZEOF(QUERY(sa_occ
-                                        <* USEDIN(pds,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                        | (sa_occ.description = 'rib top condition occurrence') AND
-                                          (SIZEOF(QUERY(sdr
-                                                        <* QUERY(sar
-                                                                 <* USEDIN(sa_occ,
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                 | (sar.description = 'rib top usage') AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                    TYPEOF(sar)))
-                                                        | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP_FLOOR' IN
-                                                            TYPEOF(sdr.relating_shape_aspect)) AND
-                                                           ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP' IN
-                                                            TYPEOF(sdr.related_shape_aspect.of_shape.definition))))) =
-                                           1))) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'removal direction'))) =
-                           1))) =
-       1;
-  WR3: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-END_ENTITY;
-
-ENTITY rib_top_floor
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['planar','complex'];
-  WR3: SIZEOF(QUERY(fcr
-                    <* QUERY(sar
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                             | (sar.description = 'rib top usage') AND
-                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                TYPEOF(sar)))
-                    | ((fcr.related_shape_aspect.description = 'rib top condition occurrence') AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP' IN
-                        TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND
-                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP_FLOOR' IN
-                        TYPEOF(fcr.relating_shape_aspect))))) >=
-       1;
-  WR4: (NOT (SELF.description = 'complex')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                            TYPEOF(pdr.used_representation)) AND
-                                           (pdr.used_representation.name = 'rib top face'))) =
-                            1))) =
-        0);
-  WR5: (NOT (SELF.description = 'planar')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                            TYPEOF(pdr.used_representation)) AND
-                                           (pdr.used_representation.name = 'rib top face'))) =
-                            1))) =
-        0);
-  WR6: (NOT (SELF.description = 'planar')) OR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd))
-                     | NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | (sa_occ.description = 'boundary occurrence') AND
-                                           (SIZEOF(QUERY(sdr
-                                                         <* QUERY(sar
-                                                                  <* USEDIN(sa_occ,
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                  | (sar.description = 'profile usage') AND
-                                                                    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                     TYPEOF(sar)))
-                                                         | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE',
-                                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE'] *
-                                                                   TYPEOF(sdr.relating_shape_aspect)) =
-                                                            1) AND
-                                                           (sdr.relating_shape_aspect.description =
-                                                            'rib top floor boundary'))) =
-                                            1))) =
-                            1))) =
-        0);
-END_ENTITY;
-
-ENTITY right_angular_wedge
-  SUBTYPE OF (geometric_representation_item);
-  position : axis2_placement_3d;
-  x        : positive_length_measure;
-  y        : positive_length_measure;
-  z        : positive_length_measure;
-  ltx      : length_measure;
-WHERE
-  WR1: ((0.0 <= ltx) AND (ltx < x));
-END_ENTITY;
-
-ENTITY right_circular_cone
-  SUBTYPE OF (geometric_representation_item);
-  position   : axis1_placement;
-  height     : positive_length_measure;
-  radius     : length_measure;
-  semi_angle : plane_angle_measure;
-WHERE
-  WR1: radius >= 0.0;
-END_ENTITY;
-
-ENTITY right_circular_cylinder
-  SUBTYPE OF (geometric_representation_item);
-  position : axis1_placement;
-  height   : positive_length_measure;
-  radius   : positive_length_measure;
-END_ENTITY;
-
-ENTITY right_to_usage_association
-  SUBTYPE OF (action_method_relationship);
-  SELF\action_method_relationship.relating_method : information_usage_right;
-  SELF\action_method_relationship.related_method  : information_right;
-DERIVE
-  right_applied : information_right       := SELF\action_method_relationship.related_method;
-  right_usage   : information_usage_right := SELF\action_method_relationship.relating_method;
-END_ENTITY;
-
-ENTITY rigid_link_representation
-  SUBTYPE OF (kinematic_link_representation);
-END_ENTITY;
-
-ENTITY rigid_subsketch
-  SUBTYPE OF (subsketch);
-END_ENTITY;
-
-ENTITY role_association;
-  role           : object_role;
-  item_with_role : role_select;
-END_ENTITY;
-
-ENTITY rolling_curve_pair
-  SUBTYPE OF (planar_curve_pair);
-END_ENTITY;
-
-ENTITY rolling_curve_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : rolling_curve_pair;
-  actual_point_on_curve_1         : point_on_curve;
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve;
-END_ENTITY;
-
-ENTITY rolling_surface_pair
-  SUBTYPE OF (surface_pair);
-END_ENTITY;
-
-ENTITY rolling_surface_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : rolling_surface_pair;
-  actual_point_on_surface         : point_on_surface;
-  actual_rotation                 : plane_angle_measure;
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface.basis_surface;
-END_ENTITY;
-
-ENTITY rotation_about_direction
-  SUBTYPE OF (geometric_representation_item);
-  direction_of_axis : direction;
-  rotation_angle    : plane_angle_measure;
-WHERE
-  WR1: SIZEOF(direction_of_axis.direction_ratios) = 3;
-END_ENTITY;
-
-ENTITY round_hole
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'diameter occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'profile usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.name = 'diameter')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'hole depth occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description =
-                                                                        'path feature component usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.name = 'hole depth') AND
-                                                              (sdr.relating_shape_aspect.description = 'linear')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'bottom condition occurrence') AND
-                                             (SIZEOF(QUERY(fcr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'hole bottom usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HOLE_BOTTOM' IN
-                                                               TYPEOF(fcr.relating_shape_aspect)) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
-                                                               TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR4: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'change in diameter occurrence') AND
-                                             (SIZEOF(QUERY(fcr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'taper usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN
-                                                               TYPEOF(fcr.relating_shape_aspect)) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
-                                                               TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
-                                              1)))) <=
-                             1)))) =
-        0);
-  WR5: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_ROUND_HOLE' IN TYPEOF(SELF)) XOR
-       (SIZEOF(QUERY(pdr
-                     <* get_property_definition_representations(SELF)
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                        TYPEOF(pdr.used_representation)))) =
-        1);
-END_ENTITY;
-
-ENTITY rounded_end
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'partial circular boundary occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'profile usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN
-                                                               TYPEOF(sdr.relating_shape_aspect))))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'course of travel occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description =
-                                                                        'path feature component usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.relating_shape_aspect.description = 'linear')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-END_ENTITY;
-
-ENTITY rounded_u_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'width')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'profile limit'))) <=
-                           1))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'depth'))) <=
-                                               1))) =
-                           0))) =
-       0;
-END_ENTITY;
-
-ENTITY roundness_tolerance
-  SUBTYPE OF (geometric_tolerance);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY row_representation_item
-  SUBTYPE OF (compound_representation_item);
-  SELF\compound_representation_item.item_element : list_representation_item;
-END_ENTITY;
-
-ENTITY row_value
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY row_variable
-  SUBTYPE OF (abstract_variable);
-END_ENTITY;
-
-ENTITY rule_action
-  SUBTYPE OF (action);
-END_ENTITY;
-
-ENTITY rule_condition
-  SUBTYPE OF (atomic_formula);
-END_ENTITY;
-
-ENTITY rule_definition
-  SUBTYPE OF (rule_software_definition);
-END_ENTITY;
-
-ENTITY rule_set
-  SUBTYPE OF (rule_software_definition);
-END_ENTITY;
-
-ENTITY rule_set_group
-  SUBTYPE OF (rule_software_definition);
-END_ENTITY;
-
-ENTITY rule_software_definition
-  SUBTYPE OF (product_definition);
-END_ENTITY;
-
-ENTITY rule_superseded_assignment
-  SUBTYPE OF (action_assignment);
-  items : SET [1 : ?] OF rule_superseded_item;
-END_ENTITY;
-
-ENTITY rule_supersedence
-  SUBTYPE OF (rule_action);
-END_ENTITY;
-
-ENTITY ruled_surface_swept_area_solid
-  SUBTYPE OF (surface_curve_swept_area_solid);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND
-       (SELF.reference_surface\b_spline_surface.u_degree = 1);
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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));
-END_ENTITY;
-
-ENTITY runout_zone_definition
-  SUBTYPE OF (tolerance_zone_definition);
-  orientation : runout_zone_orientation;
-END_ENTITY;
-
-ENTITY runout_zone_orientation;
-  angle : plane_angle_measure_with_unit;
-END_ENTITY;
-
-ENTITY runout_zone_orientation_reference_direction
-  SUBTYPE OF (runout_zone_orientation);
-  orientation_defining_relationship : shape_aspect_relationship;
-END_ENTITY;
-
-ENTITY same_as_external_item_assignment
-  SUBTYPE OF (external_identification_assignment);
-  items : SET [0 : ?] OF same_as_item;
-END_ENTITY;
-
-ENTITY satisfied_requirement
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : satisfies_requirement;
-  items                                : SET [1 : 1] OF product_definition;
-END_ENTITY;
-
-ENTITY satisfies_requirement
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY satisfying_item
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : satisfies_requirement;
-  items                                : SET [1 : 1] OF requirement_satisfaction_item;
-END_ENTITY;
-
-ENTITY scalar_variable
-  SUBTYPE OF (abstract_variable);
-END_ENTITY;
-
-ENTITY scan_3d_model
-  SUBTYPE OF (scanned_data_item);
-  scanner_info   : SET [1 : ?] OF scanner_property;
-  scanned_points : SET [1 : ?] OF scanned_data_item;
-WHERE
-  WR1: SIZEOF(QUERY(tmp
-                    <* scanned_points
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SCAN_3D_MODEL' IN TYPEOF(tmp))) =
-       0;
-END_ENTITY;
-
-ENTITY scan_data_shape_representation
-  SUBTYPE OF (shape_representation);
-  SELF\representation.items : SET [1 : ?] OF scanned_data_item;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
-       TYPEOF(SELF\representation.context_of_items);
-END_ENTITY;
-
-ENTITY scanned_data_item
-  SUPERTYPE OF (ONEOF(point_cloud_dataset, point_cloud_superdataset, triangulated_point_cloud_dataset, scan_3d_model))
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(using_rep
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SCAN_DATA_SHAPE_REPRESENTATION' IN
-                           TYPEOF(using_rep)))) =
-       0;
-END_ENTITY;
-
-ENTITY scanner_basic_properties
-  SUBTYPE OF (scanner_property);
-  scanner_identification : label;
-  scanner_location       : axis2_placement_3d;
-  scanner_uncertainty    : OPTIONAL positive_length_measure;
-END_ENTITY;
-
-ENTITY scanner_property
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (representation_item);
-END_ENTITY;
-
-ENTITY screw_pair
-  SUBTYPE OF (low_order_kinematic_pair_with_motion_coupling);
-  pitch : length_measure;
-WHERE
-  WR1: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY screw_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : screw_pair;
-  actual_rotation                 : plane_angle_measure;
-DERIVE
-  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 * PI);
-END_ENTITY;
-
-ENTITY screw_pair_with_range
-  SUBTYPE OF (screw_pair);
-  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR
-       (lower_limit_actual_rotation < upper_limit_actual_rotation);
-END_ENTITY;
-
-ENTITY sculptured_solid
-  SUBTYPE OF (modified_solid);
-  sculpturing_element : generalized_surface_select;
-  positive_side       : BOOLEAN;
-END_ENTITY;
-
-ENTITY sdgc_with_dimension
-  SUBTYPE OF (surface_distance_geometric_constraint);
-  distance_value : non_negative_length_measure;
-END_ENTITY;
-
-ENTITY seam_curve
-  SUBTYPE OF (surface_curve);
-WHERE
-  WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
-  WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) =
-       associated_surface(SELF\surface_curve.associated_geometry[2]);
-  WR3: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[1]);
-  WR4: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(SELF\surface_curve.associated_geometry[2]);
-END_ENTITY;
-
-ENTITY seam_edge
-  SUBTYPE OF (oriented_edge);
-  pcurve_reference : pcurve;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN TYPEOF(edge_element)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SEAM_CURVE' IN TYPEOF(edge_element\edge_curve.edge_geometry));
-  WR2: pcurve_reference IN edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry;
-END_ENTITY;
-
-ENTITY security_classification;
-  name           : label;
-  purpose        : text;
-  security_level : security_classification_level;
-END_ENTITY;
-
-ENTITY security_classification_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_security_classification : security_classification;
-DERIVE
-  role : object_role := get_role(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
-END_ENTITY;
-
-ENTITY security_classification_level;
-  name : label;
-END_ENTITY;
-
-ENTITY selector_function
-  SUBTYPE OF (maths_function, generic_literal);
-  selector         : input_selector;
-  source_of_domain : maths_space_or_function;
-WHERE
-  WR1: no_cyclic_domain_reference(source_of_domain, [SELF]);
-  WR2: expression_is_constant(domain_from(source_of_domain));
-END_ENTITY;
-
-ENTITY self_intersecting_curve
-  SUBTYPE OF (self_intersecting_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  arc_length_separation_factor                               : REAL;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY self_intersecting_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_curve, self_intersecting_surface))
-  SUBTYPE OF (inapt_geometry);
-END_ENTITY;
-
-ENTITY self_intersecting_loop
-  SUBTYPE OF (topology_related_to_self_intersecting_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  arc_length_distance_factor                                 : REAL;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY self_intersecting_shell
-  SUBTYPE OF (topology_related_to_self_intersecting_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  geodesic_separation_factor                                 : REAL;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_FACE_SURFACE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY self_intersecting_surface
-  SUBTYPE OF (self_intersecting_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-  geodesic_separation_factor                                 : REAL;
-  interference_tolerance                                     : length_measure;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
-                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY serial_numbered_effectivity
-  SUBTYPE OF (effectivity);
-  effectivity_start_id : identifier;
-  effectivity_end_id   : OPTIONAL identifier;
-END_ENTITY;
-
-ENTITY series_composed_function
-  SUBTYPE OF (maths_function, multiple_arity_generic_expression);
-  SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF maths_function;
-WHERE
-  WR1: composable_sequence(SELF\multiple_arity_generic_expression.operands);
-END_ENTITY;
-
-ENTITY shape_aspect
-  SUPERTYPE OF ((ONEOF(shape_aspect_occurrence, component_path_shape_aspect) ANDOR constituent_shape_aspect) ANDOR
-                (ONEOF(harness_node, harness_segment)) ANDOR
-                (ONEOF(contacting_feature, datum, datum_feature, datum_target, datum_system,
-                       general_datum_reference)) ANDOR
-                (ONEOF(assembly_shape_constraint, assembly_shape_joint, connectivity_definition, contact_feature,
-                       transport_feature)));
-  name                 : label;
-  description          : OPTIONAL text;
-  of_shape             : product_definition_shape;
-  product_definitional : LOGICAL;
-DERIVE
-  id : identifier := get_id_value(SELF);
-UNIQUE
-  UR1: id, of_shape;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY shape_aspect_associativity
-  SUBTYPE OF (shape_aspect_relationship);
-WHERE
-  WR1: SELF.relating_shape_aspect.product_definitional;
-  WR2: NOT (SELF.related_shape_aspect.product_definitional);
-END_ENTITY;
-
-ENTITY shape_aspect_deriving_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-  SELF\shape_aspect_relationship.relating_shape_aspect : derived_shape_aspect;
-END_ENTITY;
-
-ENTITY shape_aspect_occurrence
-  SUBTYPE OF (shape_aspect);
-  definition : shape_aspect_or_characterized_object;
-WHERE
-  WR1: acyclic_shape_aspect_occurrence(SELF, definition);
-END_ENTITY;
-
-ENTITY shape_aspect_relationship
-  SUPERTYPE OF (ONEOF(assembly_shape_joint_item_relationship, assembly_shape_constraint_item_relationship,
-                      connectivity_definition_item_relationship, shape_feature_fit_relationship));
-  name                  : label;
-  description           : OPTIONAL text;
-  relating_shape_aspect : shape_aspect;
-  related_shape_aspect  : shape_aspect;
-DERIVE
-  id : identifier := get_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-END_ENTITY;
-
-ENTITY shape_aspect_relationship_representation_association;
-  represented_shape_aspect_relationship    : shape_aspect_relationship;
-  representing_representation_relationship : representation_relationship;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-        TYPEOF(representing_representation_relationship\representation_relationship.rep_1)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-        TYPEOF(representing_representation_relationship\representation_relationship.rep_2));
-  WR2: (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));
-  WR3: ((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));
-  WR4: 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);
-  WR5: 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)]);
-END_ENTITY;
-
-ENTITY shape_criteria_representation_with_accuracy
-  SUBTYPE OF (shape_data_quality_criteria_representation);
-  required_general_accuracy : SET [1 : ?] OF shape_measurement_accuracy;
-END_ENTITY;
-
-ENTITY shape_data_quality_assessment_by_logical_test
-  SUBTYPE OF (data_quality_assessment_specification);
-END_ENTITY;
-
-ENTITY shape_data_quality_assessment_by_numerical_test
-  SUBTYPE OF (data_quality_assessment_specification);
-  threshold : shape_data_quality_value_limit_type_select;
-END_ENTITY;
-
-ENTITY shape_data_quality_criteria_representation
-  SUBTYPE OF (data_quality_criteria_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_CRITERION' IN TYPEOF(q))) >
-       0;
-END_ENTITY;
-
-ENTITY shape_data_quality_criterion
-  SUPERTYPE OF (ONEOF(erroneous_data, inapt_data))
-  SUBTYPE OF (data_quality_criterion, data_quality_measurement_requirement);
-  assessment_specification : shape_data_quality_assessment_specification_select;
-WHERE
-  WR1: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.CRITERION')) =
-       0;
-  WR2: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATED_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-  WR3: SIZEOF(QUERY(i1
-                    <* bag_to_set(USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM_RELATIONSHIP.RELATING_REPRESENTATION_ITEM'))
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' IN
-                      TYPEOF(i1))) =
-       0;
-END_ENTITY;
-
-ENTITY shape_data_quality_criterion_and_accuracy_association;
-  required_specific_accuracy   : shape_measurement_accuracy;
-  shape_data_quality_criterion : shape_data_quality_criterion;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspected_shape_and_result_relationship
-  SUBTYPE OF (shape_representation_relationship);
-  SELF\representation_relationship.rep_1 : shape_representation;
-  SELF\representation_relationship.rep_2 : shape_data_quality_inspection_result_representation;
-WHERE
-  WR1: SIZEOF(using_product_definition_of_shape_representation(SELF.rep_1) *
-              bag_to_set(inspected_product_definition(SELF.rep_2))) >
-       0;
-  WR2: SELF.rep_1\representation.context_of_items :=: SELF.rep_2\representation.context_of_items;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspection_criterion_report
-  SUBTYPE OF (data_quality_inspection_criterion_report);
-  representative_measured_value : measured_value_select;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspection_instance_report
-  SUBTYPE OF (data_quality_inspection_instance_report);
-  SELF\data_quality_inspection_instance_report.inspected_instances : LIST [1 : ?] OF shape_data_quality_inspection_instance_report_item;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspection_instance_report_item
-  SUBTYPE OF (data_quality_inspection_instance_report_item);
-  SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_shape_element_select;
-  measured_value                                                       : measured_value_select;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspection_result
-  SUBTYPE OF (data_quality_inspection_result);
-  SELF\data_quality_inspection_result.criterion_inspected : shape_data_quality_criterion;
-END_ENTITY;
-
-ENTITY shape_data_quality_inspection_result_representation
-  SUBTYPE OF (data_quality_inspection_result_representation);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN
-                      TYPEOF(q))) >
-       0;
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
-       TYPEOF(SELF\representation.context_of_items);
-  WR3: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.REP_2')) >
-       0;
-END_ENTITY;
-
-ENTITY shape_data_quality_lower_value_limit
-  SUBTYPE OF (shape_data_quality_value_limit);
-WHERE
-  WR1: SELF\qualified_representation_item.qualifiers[1].name = 'minimum';
-END_ENTITY;
-
-ENTITY shape_data_quality_upper_value_limit
-  SUBTYPE OF (shape_data_quality_value_limit);
-WHERE
-  WR1: SELF\qualified_representation_item.qualifiers[1].name = 'maximum';
-END_ENTITY;
-
-ENTITY shape_data_quality_value_limit
-  ABSTRACT SUPERTYPE OF (ONEOF(shape_data_quality_upper_value_limit, shape_data_quality_lower_value_limit))
-  SUBTYPE OF (measure_representation_item, qualified_representation_item);
-END_ENTITY;
-
-ENTITY shape_data_quality_value_range
-  SUBTYPE OF (compound_representation_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                       | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                          TYPEOF(i1)))) =
-          2) OR
-         (SIZEOF(QUERY(i2
-                       <* SELF\compound_representation_item.item_element
-                       | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
-                          TYPEOF(i2)))) =
-          2)));
-  WR2: (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);
-  WR3: (SIZEOF(QUERY(i1
-                     <* SELF\compound_representation_item.item_element
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                        TYPEOF(i1)) AND
-                       (SIZEOF(QUERY(i2
-                                     <* SELF\compound_representation_item.item_element
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND
-                       (SIZEOF(QUERY(i2
-                                     <* SELF\compound_representation_item.item_element
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-END_ENTITY;
-
-ENTITY shape_defining_relationship
-  SUBTYPE OF (shape_aspect_relationship);
-END_ENTITY;
-
-ENTITY shape_definition_representation
-  SUBTYPE OF (property_definition_representation);
-  SELF\property_definition_representation.definition          : property_definition;
-  SELF\property_definition_representation.used_representation : shape_representation;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(definition)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION' IN
-        TYPEOF(definition\property_definition.definition));
-END_ENTITY;
-
-ENTITY shape_dimension_representation
-  SUBTYPE OF (shape_representation);
-  SELF\representation.items : SET [1 : ?] OF shape_dimension_representation_item;
-END_ENTITY;
-
-ENTITY shape_feature_definition
-  SUBTYPE OF (feature_definition);
-END_ENTITY;
-
-ENTITY shape_feature_definition_element_relationship
-  SUBTYPE OF (shape_aspect_relationship, characterized_object);
-DERIVE
-  SELF\characterized_object.name        : label := SELF\shape_aspect_relationship.name;
-  SELF\characterized_object.description : text  := SELF\shape_aspect_relationship.description;
-END_ENTITY;
-
-ENTITY shape_feature_definition_fit_relationship
-  SUBTYPE OF (shape_feature_definition_relationship);
-END_ENTITY;
-
-ENTITY shape_feature_definition_relationship
-  SUBTYPE OF (characterized_object_relationship, characterized_object);
-  SELF\characterized_object_relationship.relating_object : shape_feature_definition;
-  SELF\characterized_object_relationship.related_object  : shape_feature_definition;
-DERIVE
-  SELF\characterized_object.name        : label := SELF\characterized_object_relationship.name;
-  SELF\characterized_object.description : text  := SELF\characterized_object_relationship.description;
-END_ENTITY;
-
-ENTITY shape_feature_fit_relationship
-  SUBTYPE OF (shape_aspect_relationship, characterized_object);
-DERIVE
-  SELF\characterized_object.name        : label := SELF\shape_aspect_relationship.name;
-  SELF\characterized_object.description : text  := SELF\shape_aspect_relationship.description;
-END_ENTITY;
-
-ENTITY shape_inspection_result_accuracy_association;
-  applied_specific_accuracy : shape_measurement_accuracy;
-  shape_data_quality_result : shape_data_quality_inspection_result;
-END_ENTITY;
-
-ENTITY shape_inspection_result_representation_with_accuracy
-  SUBTYPE OF (shape_data_quality_inspection_result_representation);
-  applied_general_accuracy : SET [1 : ?] OF shape_measurement_accuracy;
-END_ENTITY;
-
-ENTITY shape_measurement_accuracy;
-  description : text;
-  range       : shape_data_quality_value_limit_type_select;
-END_ENTITY;
-
-ENTITY shape_representation
-  SUBTYPE OF (representation);
-END_ENTITY;
-
-ENTITY shape_representation_reference
-  SUBTYPE OF (representation_reference);
-END_ENTITY;
-
-ENTITY shape_representation_relationship
-  SUBTYPE OF (representation_relationship);
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_REFERENCE'] *
-              (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2))) >=
-       1;
-END_ENTITY;
-
-ENTITY shape_representation_with_parameters
-  SUBTYPE OF (shape_representation);
-  SELF\representation.items : SET [1 : ?] OF shape_representation_with_parameters_items;
-END_ENTITY;
-
-ENTITY shape_summary_request_with_representative_value
-  SUBTYPE OF (summary_report_request);
-END_ENTITY;
-
-ENTITY shell_based_surface_model
-  SUBTYPE OF (geometric_representation_item);
-  sbsm_boundary : SET [1 : ?] OF shell;
-WHERE
-  WR1: constraints_geometry_shell_based_surface_model(SELF);
-END_ENTITY;
-
-ENTITY shell_based_wireframe_model
-  SUBTYPE OF (geometric_representation_item);
-  sbwm_boundary : SET [1 : ?] OF shell;
-WHERE
-  WR1: constraints_geometry_shell_based_wireframe_model(SELF);
-END_ENTITY;
-
-ENTITY shell_based_wireframe_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] *
-                                  TYPEOF(it)) =
-                           1))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] *
-                              TYPEOF(it)) =
-                       1))) >=
-       1;
-  WR3: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(eloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT (SIZEOF(QUERY(el
-                                                                                <* eloop\path.edge_list
-                                                                                | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
-                                                                                       TYPEOF(el.edge_element)))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR4: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(eloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT (SIZEOF(QUERY(pline_el
-                                                                                <* QUERY(el
-                                                                                         <* eloop\path.edge_list
-                                                                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                                                                                            TYPEOF(el.edge_element\edge_curve.edge_geometry)))
-                                                                                | NOT (SIZEOF(pline_el.edge_element\edge_curve.edge_geometry\polyline.points) >
-                                                                                       2))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR5: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(eloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR6: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(eloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT (SIZEOF(QUERY(el
-                                                                                <* eloop\path.edge_list
-                                                                                | NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                        TYPEOF(el.edge_element.edge_start)) AND
-                                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                                        TYPEOF(el.edge_element.edge_end))))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(eloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT (SIZEOF(QUERY(el
-                                                                                <* eloop\path.edge_list
-                                                                                | NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND
-                                                                                       valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)))) =
-                                                                   0))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(vloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                                   TYPEOF(vloop\vertex_loop.loop_vertex)))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(sbwm
-                    <* QUERY(it
-                             <* SELF.items
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                TYPEOF(it)))
-                    | NOT (SIZEOF(QUERY(ws
-                                        <* QUERY(sb
-                                                 <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
-                                                    TYPEOF(sb)))
-                                        | NOT (SIZEOF(QUERY(vloop
-                                                            <* QUERY(wsb
-                                                                     <* ws\wire_shell.wire_shell_extent
-                                                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN
-                                                                        TYPEOF(wsb)))
-                                                            | NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) =
-                                               0))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(sbwm
-                     <* QUERY(it
-                              <* SELF.items
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                 TYPEOF(it)))
-                     | NOT (SIZEOF(QUERY(vs
-                                         <* QUERY(sb
-                                                  <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN
-                                                     TYPEOF(sb)))
-                                         | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
-                                                TYPEOF(vs\vertex_shell.vertex_shell_extent.loop_vertex)))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(sbwm
-                     <* QUERY(it
-                              <* SELF.items
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN
-                                 TYPEOF(it)))
-                     | NOT (SIZEOF(QUERY(vs
-                                         <* QUERY(sb
-                                                  <* sbwm\shell_based_wireframe_model.sbwm_boundary
-                                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN
-                                                     TYPEOF(sb)))
-                                         | NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(mi
-                     <* QUERY(it
-                              <* SELF.items
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))
-                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN
-                            TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) =
-        0;
-  WR13: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
-END_ENTITY;
-
-ENTITY shelled_solid
-  SUPERTYPE OF (ONEOF(double_offset_shelled_solid, complex_shelled_solid))
-  SUBTYPE OF (modified_solid);
-  deleted_face_set : SET [1 : ?] OF face_surface;
-  thickness        : length_measure;
-WHERE
-  WR1: thickness <> 0;
-END_ENTITY;
-
-ENTITY short_length_curve
-  SUBTYPE OF (nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY short_length_curve_segment
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_SEGMENT']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY short_length_edge
-  SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY si_absorbed_dose_unit
-  SUBTYPE OF (absorbed_dose_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.gray;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_capacitance_unit
-  SUBTYPE OF (capacitance_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.farad;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_conductance_unit
-  SUBTYPE OF (conductance_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.siemens;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_dose_equivalent_unit
-  SUBTYPE OF (dose_equivalent_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.sievert;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_electric_charge_unit
-  SUBTYPE OF (electric_charge_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.coulomb;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_electric_potential_unit
-  SUBTYPE OF (electric_potential_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.volt;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_energy_unit
-  SUBTYPE OF (energy_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.joule;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_force_unit
-  SUBTYPE OF (force_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.newton;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_frequency_unit
-  SUBTYPE OF (frequency_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.hertz;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_illuminance_unit
-  SUBTYPE OF (illuminance_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.lux;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_inductance_unit
-  SUBTYPE OF (inductance_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.henry;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_magnetic_flux_density_unit
-  SUBTYPE OF (magnetic_flux_density_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.tesla;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_magnetic_flux_unit
-  SUBTYPE OF (magnetic_flux_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.weber;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_power_unit
-  SUBTYPE OF (power_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.watt;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_pressure_unit
-  SUBTYPE OF (pressure_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.pascal;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_radioactivity_unit
-  SUBTYPE OF (radioactivity_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.becquerel;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_resistance_unit
-  SUBTYPE OF (resistance_unit, si_unit);
-WHERE
-  WR1: SELF\si_unit.name = si_unit_name.ohm;
-  WR2: NOT EXISTS(SELF\derived_unit.name);
-END_ENTITY;
-
-ENTITY si_unit
-  SUBTYPE OF (named_unit);
-  prefix : OPTIONAL si_prefix;
-  name   : si_unit_name;
-DERIVE
-  SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name);
-WHERE
-  WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND
-            (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR
-           (prefix = si_prefix.kilo);
-END_ENTITY;
-
-ENTITY simple_boolean_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(boolean_literal, boolean_variable))
-  SUBTYPE OF (boolean_expression, simple_generic_expression);
-END_ENTITY;
-
-ENTITY simple_clause
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY simple_generic_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(generic_literal, generic_variable))
-  SUBTYPE OF (generic_expression);
-END_ENTITY;
-
-ENTITY simple_numeric_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(literal_number, numeric_variable))
-  SUBTYPE OF (numeric_expression, simple_generic_expression);
-END_ENTITY;
-
-ENTITY simple_string_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(string_literal, string_variable))
-  SUBTYPE OF (string_expression, simple_generic_expression);
-END_ENTITY;
-
-ENTITY simplified_counterbore_hole_definition
-  SUBTYPE OF (counterbore_hole_definition);
-WHERE
-  WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
-END_ENTITY;
-
-ENTITY simplified_counterdrill_hole_definition
-  SUBTYPE OF (counterdrill_hole_definition);
-WHERE
-  WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
-END_ENTITY;
-
-ENTITY simplified_countersink_hole_definition
-  SUBTYPE OF (countersink_hole_definition);
-WHERE
-  WR1: SIZEOF(SELF\explicit_composite_hole.placement\representation.items) = 1;
-END_ENTITY;
-
-ENTITY simplified_spotface_hole_definition
-  SUBTYPE OF (spotface_hole_definition, simplified_counterbore_hole_definition);
-END_ENTITY;
-
-ENTITY simultaneous_constraint_group
-  SUBTYPE OF (variational_representation_item);
-  constraint_group : SET [2 : ?] OF constraint_group_member;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* using_representations(SELF)
-                    | SIZEOF(QUERY(r
-                                   <* q.items
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR2: 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;
-  WR3: SIZEOF(QUERY(q
-                    <* constraint_group
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_ENTITY;
-
-ENTITY sin_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY single_area_csg_2d_shape_representation
-  SUBTYPE OF (csg_2d_shape_representation);
-  SELF\representation.items : SET [1 : ?] OF csg_2d_area_select;
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)))) =
-       0;
-  WR2: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID_2D' IN TYPEOF(it)))) =
-       1;
-END_ENTITY;
-
-ENTITY single_boundary_csg_2d_shape_representation
-  SUBTYPE OF (single_area_csg_2d_shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(it
-                    <* SELF.items
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_PRIMITIVE_SOLID_2D' IN TYPEOF(it)) AND
-                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY') IN
-                        TYPEOF(it\csg_primitive_solid_2d.tree_root_expression))))) =
-       0;
-END_ENTITY;
-
-ENTITY single_property_is_definition
-  SUBTYPE OF (property_definition);
-  SELF\property_definition.definition : product_definition;
-UNIQUE
-  UR1: definition;
-END_ENTITY;
-
-ENTITY single_texture_style_tessellation_specification
-  SUBTYPE OF (texture_style_tessellation_specification);
-  texture_image       : label;
-  texture_coordinates : LIST [1 : ?] OF LIST [2 : 2] OF non_negative_real;
-  texture_format      : texture_file_type;
-  repeating_pattern   : BOOLEAN;
-END_ENTITY;
-
-ENTITY skew_line_distance_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF line;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 1] OF line;
-  distance_value                                : non_negative_length_measure;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements) = 2;
-END_ENTITY;
-
-ENTITY slash_expression
-  SUBTYPE OF (binary_numeric_expression);
-END_ENTITY;
-
-ENTITY sliding_curve_pair
-  SUBTYPE OF (planar_curve_pair);
-END_ENTITY;
-
-ENTITY sliding_curve_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : sliding_curve_pair;
-  actual_point_on_curve_1         : point_on_curve;
-  actual_point_on_curve_2         : point_on_curve;
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve;
-  WR2: SELF\pair_value.applies_to_pair\planar_curve_pair.curve_2 :=: actual_point_on_curve_2.basis_curve;
-END_ENTITY;
-
-ENTITY sliding_surface_pair
-  SUBTYPE OF (surface_pair);
-END_ENTITY;
-
-ENTITY sliding_surface_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : sliding_surface_pair;
-  actual_point_on_surface_1       : point_on_surface;
-  actual_point_on_surface_2       : point_on_surface;
-  actual_rotation                 : plane_angle_measure;
-WHERE
-  WR1: SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface_1.basis_surface;
-  WR2: SELF\pair_value.applies_to_pair\surface_pair.surface_2 :=: actual_point_on_surface_2.basis_surface;
-END_ENTITY;
-
-ENTITY slot
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | (NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                     TYPEOF(pdr.used_representation)))
-                                         | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                            0)))) =
-       0;
-  WR2: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd)))
-                    | (NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | ((sa_occ.description = 'swept shape occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | ((sar.description = 'profile usage') AND
-                                                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                       TYPEOF(sar))))
-                                                          | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
-                                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE',
-                                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE',
-                                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE',
-                                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE',
-                                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] *
-                                                                    TYPEOF(sdr.relating_shape_aspect)) =
-                                                             1))) =
-                                             1)))) =
-                            1)))) =
-       0;
-  WR3: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd)))
-                    | (NOT (SIZEOF(QUERY(sa_occ
-                                         <* USEDIN(pds,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                         | ((sa_occ.description = 'course of travel occurrence') AND
-                                            (SIZEOF(QUERY(sdr
-                                                          <* QUERY(sar
-                                                                   <* USEDIN(sa_occ,
-                                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                   | ((sar.description =
-                                                                       'path feature component usage') AND
-                                                                      ((sar.name = 'course of travel') AND
-                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                        TYPEOF(sar)))))
-                                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                             TYPEOF(sdr.relating_shape_aspect)))) =
-                                             1)))) =
-                            1)))) =
-       0;
-  WR4: SIZEOF(QUERY(pds
-                    <* QUERY(pd
-                             <* USEDIN(SELF,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                TYPEOF(pd)))
-                    | (NOT ((SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'end condition occurrence') AND
-                                             (SIZEOF(QUERY(fcr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | (((sar.description = 'slot end usage') AND
-                                                                        (sar.name IN
-                                                                         ['course of travel start',
-                                                                          'course of travel end'])) AND
-                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                        TYPEOF(sar))))
-                                                           | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
-                                                                TYPEOF(fcr.relating_shape_aspect)) AND
-                                                               (fcr.relating_shape_aspect.description IN
-                                                                ['open','radiused','flat','woodruff'])) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
-                                                               TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
-                                              1)))) =
-                             2) OR
-                            (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'end condition occurrence') AND
-                                             (SIZEOF(QUERY(fcr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | (((sar.description = 'slot end usage') AND
-                                                                        (sar.name IN
-                                                                         ['course of travel start',
-                                                                          'course of travel end'])) AND
-                                                                       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                        TYPEOF(sar))))
-                                                           | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
-                                                                TYPEOF(fcr.relating_shape_aspect)) AND
-                                                               (fcr.relating_shape_aspect.description IN ['loop'])) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
-                                                               TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
-                                              1)))) =
-                             1))))) =
-       0;
-  WR5: (NOT (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                      TYPEOF(pd)))
-                          | (NOT (SIZEOF(QUERY(sa_occ
-                                               <* USEDIN(pds,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                               | ((sa_occ.description = 'end condition occurrence') AND
-                                                  (SIZEOF(QUERY(fcr
-                                                                <* QUERY(sar
-                                                                         <* USEDIN(sa_occ,
-                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                         | (((sar.description = 'slot end usage') AND
-                                                                             (sar.name IN
-                                                                              ['course of travel start',
-                                                                               'course of travel end'])) AND
-                                                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                                             TYPEOF(sar))))
-                                                                | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
-                                                                     TYPEOF(fcr.relating_shape_aspect)) AND
-                                                                    (fcr.relating_shape_aspect.description IN
-                                                                     ['loop'])) AND
-                                                                   ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
-                                                                    TYPEOF(fcr.related_shape_aspect.of_shape.definition))))) =
-                                                   1)))) =
-                                  1)))) =
-             0) OR
-            (SIZEOF(QUERY(pds
-                          <* QUERY(pd
-                                   <* USEDIN(SELF,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                      TYPEOF(pd)))
-                          | (NOT (SIZEOF(QUERY(sa_occ
-                                               <* USEDIN(pds,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                               | ((sa_occ.description = 'course of travel occurrence') AND
-                                                  (SIZEOF(QUERY(sdr
-                                                                <* QUERY(sar
-                                                                         <* USEDIN(sa_occ,
-                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                         | ((sar.description =
-                                                                             'path feature component usage') AND
-                                                                            ((sar.name = 'course of travel') AND
-                                                                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
-                                                                              TYPEOF(sar)))))
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                                    TYPEOF(sdr.relating_shape_aspect)) AND
-                                                                   (sdr.relating_shape_aspect.description IN
-                                                                    ['complex','complete circular'])))) =
-                                                   1)))) =
-                                  1)))) =
-             0));
-  WR6: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                        TYPEOF(pdr.used_representation)) AND
-                       (pdr.used_representation.name = 'maximum feature limit')))) >=
-       0;
-END_ENTITY;
-
-ENTITY slot_end
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SELF.description IN ['open','radiused','flat','woodruff','loop'];
-  WR3: (NOT (SELF.description IN ['open','radiused','loop'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             0)))) =
-        0);
-  WR4: (NOT (SELF.description IN ['flat','woodruff'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR5: (NOT (SELF.description IN ['flat'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)))) =
-                             0)))) =
-        0);
-  WR6: (NOT (SELF.description = 'flat')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'first radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (NOT (SELF.description = 'flat')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'second radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR8: (NOT (SELF.description = 'woodruff')) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR9: (NOT (SELF.description IN ['woodruff'])) OR
-       (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR10: SIZEOF(QUERY(fcr
-                     <* QUERY(sar
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
-                              | (((sar.description = 'slot end usage') AND
-                                  (sar.name IN ['course of travel start','course of travel end'])) AND
-                                 ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                  TYPEOF(sar))))
-                     | (((fcr.related_shape_aspect.description = 'end condition occurrence') AND
-                         ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
-                          TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN
-                         TYPEOF(fcr.relating_shape_aspect))))) >=
-        1;
-END_ENTITY;
-
-ENTITY small_area_face
-  SUBTYPE OF (topology_related_to_nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY small_area_surface
-  SUBTYPE OF (nearly_degenerate_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY small_area_surface_patch
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_PATCH']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE']);
-END_ENTITY;
-
-ENTITY small_volume_solid
-  SUBTYPE OF (inapt_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE']);
-END_ENTITY;
-
-ENTITY software_for_data_quality_check;
-  description      : text;
-  software_name    : text;
-  software_version : text;
-  data_quality     : data_quality_definition_representation_relationship;
-END_ENTITY;
-
-ENTITY solid_angle_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_ANGLE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY solid_angle_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY solid_curve_font
-  SUBTYPE OF (pre_defined_curve_font);
-END_ENTITY;
-
-ENTITY solid_model
-  SUPERTYPE OF (ONEOF(csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid,
-                      solid_replica))
-  SUBTYPE OF (geometric_representation_item);
-END_ENTITY;
-
-ENTITY solid_replica
-  SUBTYPE OF (solid_model);
-  parent_solid   : solid_model;
-  transformation : cartesian_transformation_operator_3d;
-WHERE
-  WR1: acyclic_solid_replica(SELF, parent_solid);
-  WR2: parent_solid\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY solid_with_angle_based_chamfer
-  SUBTYPE OF (solid_with_chamfered_edges);
-  offset_distance : positive_length_measure;
-  left_offset     : BOOLEAN;
-  offset_angle    : positive_plane_angle_measure;
-END_ENTITY;
-
-ENTITY solid_with_chamfered_edges
-  ABSTRACT SUPERTYPE OF (ONEOF(solid_with_single_offset_chamfer, solid_with_double_offset_chamfer,
-                               solid_with_angle_based_chamfer))
-  SUBTYPE OF (edge_blended_solid);
-END_ENTITY;
-
-ENTITY solid_with_circular_pattern
-  SUPERTYPE OF (solid_with_incomplete_circular_pattern)
-  SUBTYPE OF (solid_with_shape_element_pattern);
-  replicate_count  : positive_integer;
-  angular_spacing  : plane_angle_measure;
-  radial_alignment : BOOLEAN;
-  reference_point  : point;
-END_ENTITY;
-
-ENTITY solid_with_circular_pocket
-  SUBTYPE OF (solid_with_pocket);
-  pocket_radius : positive_length_measure;
-WHERE
-  WR1: SELF\solid_with_pocket.floor_blend_radius <= pocket_radius;
-END_ENTITY;
-
-ENTITY solid_with_circular_protrusion
-  SUBTYPE OF (solid_with_protrusion);
-  protrusion_radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY solid_with_constant_radius_edge_blend
-  SUBTYPE OF (edge_blended_solid);
-  radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY solid_with_depression
-  ABSTRACT SUPERTYPE OF (solid_with_through_depression ANDOR
-                         ONEOF(solid_with_hole, solid_with_pocket, solid_with_groove))
-  SUBTYPE OF (modified_solid_with_placed_configuration);
-  depth : positive_length_measure;
-END_ENTITY;
-
-ENTITY solid_with_double_offset_chamfer
-  SUBTYPE OF (solid_with_chamfered_edges);
-  left_offset_distance  : positive_length_measure;
-  right_offset_distance : positive_length_measure;
-END_ENTITY;
-
-ENTITY solid_with_excessive_number_of_voids
-  SUBTYPE OF (inapt_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY solid_with_general_pocket
-  SUBTYPE OF (solid_with_pocket);
-  profile         : positioned_sketch;
-  reference_point : point;
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] *
-              TYPEOF(profile.sketch_basis)) =
-       1;
-  WR2: profile IN using_items(reference_point, []);
-END_ENTITY;
-
-ENTITY solid_with_general_protrusion
-  SUBTYPE OF (solid_with_protrusion);
-  profile         : positioned_sketch;
-  reference_point : point;
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] *
-              TYPEOF(profile.sketch_basis)) =
-       1;
-  WR2: profile IN using_items(reference_point, []);
-END_ENTITY;
-
-ENTITY solid_with_groove
-  SUBTYPE OF (solid_with_depression);
-  groove_radius       : positive_length_measure;
-  groove_width        : positive_length_measure;
-  draft_angle         : plane_angle_measure;
-  floor_fillet_radius : non_negative_length_measure;
-  external_groove     : BOOLEAN;
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY solid_with_incomplete_circular_pattern
-  SUBTYPE OF (solid_with_circular_pattern);
-  omitted_instances : SET [1 : ?] OF positive_integer;
-WHERE
-  WR1: SIZEOF(omitted_instances) < SELF\solid_with_circular_pattern.replicate_count;
-  WR2: SIZEOF(QUERY(q <* omitted_instances | q > SELF\solid_with_circular_pattern.replicate_count)) = 0;
-END_ENTITY;
-
-ENTITY solid_with_incomplete_rectangular_pattern
-  SUBTYPE OF (solid_with_rectangular_pattern);
-  omitted_instances : SET [1 : ?] OF LIST [2 : 2] OF positive_integer;
-WHERE
-  WR1: NOT ([1,1] IN omitted_instances);
-  WR2: SIZEOF(omitted_instances) <
-       ((SELF\solid_with_rectangular_pattern.row_count * SELF\solid_with_rectangular_pattern.column_count) - 1);
-  WR3: 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;
-END_ENTITY;
-
-ENTITY solid_with_pocket
-  ABSTRACT SUPERTYPE OF (ONEOF(solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket))
-  SUBTYPE OF (solid_with_depression);
-  floor_blend_radius : non_negative_length_measure;
-  draft_angle        : plane_angle_measure;
-END_ENTITY;
-
-ENTITY solid_with_protrusion
-  ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_protrusion, solid_with_rectangular_protrusion,
-                               solid_with_general_protrusion))
-  SUBTYPE OF (modified_solid_with_placed_configuration);
-  protrusion_height      : positive_length_measure;
-  protrusion_draft_angle : plane_angle_measure;
-END_ENTITY;
-
-ENTITY solid_with_rectangular_pattern
-  SUPERTYPE OF (solid_with_incomplete_rectangular_pattern)
-  SUBTYPE OF (solid_with_shape_element_pattern);
-  row_count      : positive_integer;
-  column_count   : positive_integer;
-  row_spacing    : length_measure;
-  column_spacing : length_measure;
-WHERE
-  WR1: (row_count * column_count) > 1;
-END_ENTITY;
-
-ENTITY solid_with_rectangular_pocket
-  SUBTYPE OF (solid_with_pocket);
-  pocket_length : positive_length_measure;
-  pocket_width  : positive_length_measure;
-  corner_radius : non_negative_length_measure;
-WHERE
-  WR1: (corner_radius < pocket_width / 2) AND (corner_radius < pocket_length / 2);
-END_ENTITY;
-
-ENTITY solid_with_rectangular_protrusion
-  SUBTYPE OF (solid_with_protrusion);
-  protrusion_length        : positive_length_measure;
-  protrusion_width         : positive_length_measure;
-  protrusion_corner_radius : non_negative_length_measure;
-WHERE
-  WR1: (protrusion_corner_radius <= protrusion_width / 2) AND (protrusion_corner_radius <= protrusion_length / 2);
-END_ENTITY;
-
-ENTITY solid_with_shape_element_pattern
-  ABSTRACT SUPERTYPE OF (ONEOF(solid_with_circular_pattern, solid_with_rectangular_pattern))
-  SUBTYPE OF (modified_solid_with_placed_configuration);
-  replicated_element : modified_solid_with_placed_configuration;
-END_ENTITY;
-
-ENTITY solid_with_single_offset_chamfer
-  SUBTYPE OF (solid_with_chamfered_edges);
-  offset_distance : positive_length_measure;
-END_ENTITY;
-
-ENTITY solid_with_variable_radius_edge_blend
-  SUBTYPE OF (track_blended_solid);
-  point_list         : LIST [2 : ?] OF point;
-  radius_list        : LIST [2 : ?] OF positive_length_measure;
-  edge_function_list : LIST [1 : ?] OF blend_radius_variation_type;
-WHERE
-  WR1: SIZEOF(point_list) = SIZEOF(radius_list);
-  WR2: SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1;
-  WR3: NOT ((point_list[1] = point_list[HIINDEX(point_list)]) AND
-            NOT (radius_list[1] = radius_list[HIINDEX(radius_list)]));
-END_ENTITY;
-
-ENTITY solid_with_wrong_number_of_voids
-  SUBTYPE OF (erroneous_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
-  WR3: validate_locations_of_extreme_value_type(SELF, []);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY source_for_requirement
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : requirement_source;
-  items                                : SET [1 : 1] OF requirement_source_item;
-END_ENTITY;
-
-ENTITY sourced_requirement
-  SUBTYPE OF (group_assignment);
-  SELF\group_assignment.assigned_group : requirement_source;
-  items                                : SET [1 : 1] OF product_definition;
-END_ENTITY;
-
-ENTITY specification_definition
-  SUBTYPE OF (product_definition);
-END_ENTITY;
-
-ENTITY specified_higher_usage_occurrence
-  SUBTYPE OF (assembly_component_usage);
-  upper_usage : assembly_component_usage;
-  next_usage  : next_assembly_usage_occurrence;
-UNIQUE
-  UR1: upper_usage, next_usage;
-WHERE
-  WR1: SELF :<>: upper_usage;
-  WR2: SELF\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition;
-  WR3: SELF\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition;
-  WR4: (upper_usage.related_product_definition :=: next_usage.relating_product_definition) OR
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(upper_usage.related_product_definition,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                     | pdr.relating_product_definition :=: next_usage.relating_product_definition)) =
-        1);
-  WR5: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] *
-              TYPEOF(upper_usage)) =
-       1;
-END_ENTITY;
-
-ENTITY sphere
-  SUBTYPE OF (geometric_representation_item);
-  radius : positive_length_measure;
-  centre : point;
-END_ENTITY;
-
-ENTITY spherical_cap
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)))) =
-                             0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'radius')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'internal angle')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY spherical_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY spherical_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : spherical_pair_select;
-  input_orientation               : spatial_rotation;
-DERIVE
-  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\pair_value.applies_to_pair,
-                                                                       input_orientation);
-END_ENTITY;
-
-ENTITY spherical_pair_with_pin
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := false;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY spherical_pair_with_pin_and_range
-  SUBTYPE OF (spherical_pair_with_pin);
-  lower_limit_yaw  : OPTIONAL plane_angle_measure;
-  upper_limit_yaw  : OPTIONAL plane_angle_measure;
-  lower_limit_roll : OPTIONAL plane_angle_measure;
-  upper_limit_roll : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
-  WR2: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
-END_ENTITY;
-
-ENTITY spherical_pair_with_range
-  SUBTYPE OF (spherical_pair);
-  lower_limit_yaw   : OPTIONAL plane_angle_measure;
-  upper_limit_yaw   : OPTIONAL plane_angle_measure;
-  lower_limit_pitch : OPTIONAL plane_angle_measure;
-  upper_limit_pitch : OPTIONAL plane_angle_measure;
-  lower_limit_roll  : OPTIONAL plane_angle_measure;
-  upper_limit_roll  : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
-  WR2: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
-  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
-END_ENTITY;
-
-ENTITY spherical_point
-  SUBTYPE OF (cartesian_point);
-  r     : length_measure;
-  theta : plane_angle_measure;
-  phi   : plane_angle_measure;
-DERIVE
-  SELF\cartesian_point.coordinates : LIST [3 : 3] OF length_measure := [r * SIN(theta) * COS(phi),
-                                                                        r * SIN(theta) * SIN(phi),
-                                                                        r * COS(theta)];
-WHERE
-  WR1: r >= 0.0;
-END_ENTITY;
-
-ENTITY spherical_surface
-  SUBTYPE OF (elementary_surface);
-  radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY spherical_volume
-  SUBTYPE OF (volume);
-  position : axis2_placement_3d;
-  radius   : positive_length_measure;
-END_ENTITY;
-
-ENTITY spotface_definition
-  SUBTYPE OF (explicit_round_hole);
-  spotface_radius           : positive_length_measure_with_unit;
-  spotface_radius_tolerance : OPTIONAL tolerance_value;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(spotface_radius_tolerance\tolerance_value.lower_bound);
-  WR2: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-       TYPEOF(spotface_radius_tolerance\tolerance_value.upper_bound);
-END_ENTITY;
-
-ENTITY spotface_hole_definition
-  SUBTYPE OF (counterbore_hole_definition);
-  SELF\counterbore_hole_definition.counterbore : LIST [1 : ?] OF UNIQUE spotface_definition;
-DERIVE
-  spotface : LIST [1 : ?] OF UNIQUE spotface_definition := SELF\counterbore_hole_definition.counterbore;
-END_ENTITY;
-
-ENTITY spotface_occurrence
-  SUBTYPE OF (counterbore_hole_occurrence);
-  SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
-END_ENTITY;
-
-ENTITY spotface_occurrence_in_assembly
-  SUBTYPE OF (counterbore_hole_occurrence_in_assembly);
-  SELF\counterbore_hole_occurrence.definition : spotface_hole_definition;
-END_ENTITY;
-
-ENTITY sql_mappable_defined_function
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (defined_function);
-END_ENTITY;
-
-ENTITY square_root_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY square_u_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                          TYPEOF(pdr.used_representation))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'orientation'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'width'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'first radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'second radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'first angle'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'second angle'))) =
-                                                1))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                            TYPEOF(pdr.used_representation)) AND
-                                           (pdr.used_representation.name = 'profile limit'))) <=
-                            1))) =
-        0;
-  WR12: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'depth'))) <=
-                                                1))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY standard_table_function
-  SUBTYPE OF (linearized_table_function);
-  order : ordering_type;
-WHERE
-  WR1: extremal_position_check(SELF);
-END_ENTITY;
-
-ENTITY standard_uncertainty
-  SUPERTYPE OF (expanded_uncertainty)
-  SUBTYPE OF (uncertainty_qualifier);
-  uncertainty_value : REAL;
-END_ENTITY;
-
-ENTITY start_request
-  SUBTYPE OF (action_request_assignment);
-  items : SET [1 : ?] OF start_request_item;
-END_ENTITY;
-
-ENTITY start_work
-  SUBTYPE OF (action_assignment);
-  items : SET [1 : ?] OF work_item;
-END_ENTITY;
-
-ENTITY state_definition_to_state_assignment_relationship
-  SUBTYPE OF (ascribable_state_relationship);
-  relation_type : STRING;
-WHERE
-  WR1: acyclic_state_definition_to_state_assignment_relationship(SELF,
-                                                                 [SELF\ascribable_state_relationship.related_ascribable_state],
-                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP');
-END_ENTITY;
-
-ENTITY state_observed;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY state_observed_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_state_observed : state_observed;
-  role                    : state_observed_role;
-END_ENTITY;
-
-ENTITY state_observed_relationship;
-  name                    : label;
-  description             : OPTIONAL text;
-  relating_state_observed : SET [1 : ?] OF state_observed;
-  related_state_observed  : SET [1 : ?] OF state_observed;
-END_ENTITY;
-
-ENTITY state_observed_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY state_predicted
-  SUBTYPE OF (state_observed);
-END_ENTITY;
-
-ENTITY state_type;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY state_type_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_state_type : state_type;
-  role                : state_type_role;
-END_ENTITY;
-
-ENTITY state_type_relationship;
-  name                : label;
-  description         : OPTIONAL text;
-  relating_state_type : SET [1 : ?] OF state_type;
-  related_state_type  : SET [1 : ?] OF state_type;
-END_ENTITY;
-
-ENTITY state_type_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY statechar_applied_object
-  SUBTYPE OF (characterized_object, state_observed_assignment);
-END_ENTITY;
-
-ENTITY statechar_object
-  SUBTYPE OF (characterized_object, state_observed);
-END_ENTITY;
-
-ENTITY statechar_relationship_object
-  SUBTYPE OF (characterized_object, state_observed_relationship);
-END_ENTITY;
-
-ENTITY statechar_type_applied_object
-  SUBTYPE OF (characterized_object, state_type_assignment);
-END_ENTITY;
-
-ENTITY statechar_type_object
-  SUBTYPE OF (characterized_object, state_type);
-END_ENTITY;
-
-ENTITY statechar_type_relationship_object
-  SUBTYPE OF (characterized_object, state_type_relationship);
-END_ENTITY;
-
-ENTITY steep_angle_between_adjacent_edges
-  SUBTYPE OF (steep_geometry_transition_across_edge);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
-END_ENTITY;
-
-ENTITY steep_angle_between_adjacent_faces
-  SUBTYPE OF (steep_geometry_transition_across_edge);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_EDGE_CURVE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
-END_ENTITY;
-
-ENTITY steep_geometry_transition_across_edge
-  ABSTRACT SUPERTYPE OF (ONEOF(steep_angle_between_adjacent_edges, steep_angle_between_adjacent_faces))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY step
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR2: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'course of travel occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description =
-                                                                        'path feature component usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)) AND
-                                                              (sdr.relating_shape_aspect.description = 'linear')))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pds
-                     <* QUERY(pd
-                              <* USEDIN(SELF,
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                              | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                 TYPEOF(pd)))
-                     | (NOT (SIZEOF(QUERY(sa_occ
-                                          <* USEDIN(pds,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                          | ((sa_occ.description = 'removal boundary occurrence') AND
-                                             (SIZEOF(QUERY(sdr
-                                                           <* QUERY(sar
-                                                                    <* USEDIN(sa_occ,
-                                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                    | ((sar.description = 'profile usage') AND
-                                                                       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                        TYPEOF(sar))))
-                                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' IN
-                                                              TYPEOF(sdr.relating_shape_aspect)))) =
-                                              1)))) =
-                             1)))) =
-        0);
-  WR4: SIZEOF(QUERY(pdr
-                    <* get_property_definition_representations(SELF)
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                       TYPEOF(pdr.used_representation)) AND
-                      (pdr.used_representation.name = 'maximum feature limit'))) >=
-       0;
-  WR5: SIZEOF(QUERY(pds
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND
-                       (SIZEOF(QUERY(csa
-                                     <* USEDIN(pds,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN
-                                         TYPEOF(csa)) AND
-                                        (csa.name = 'uncut volume') AND
-                                        (SIZEOF(QUERY(sar
-                                                      <* csa.component_relationships
-                                                      | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
-                                                          TYPEOF(sar)) AND
-                                                         (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS',
-                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION'] *
-                                                                 TYPEOF(sar.related_shape_aspect)) =
-                                                          1)))) =
-                                         1)))) <=
-                        1)))) =
-       1;
-END_ENTITY;
-
-ENTITY straightness_tolerance
-  SUBTYPE OF (geometric_tolerance);
-WHERE
-  WR1: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY strict_triangular_matrix
-  SUBTYPE OF (triangular_matrix);
-  main_diagonal_value : maths_value;
-END_ENTITY;
-
-ENTITY string_defined_function
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (defined_function, string_expression);
-END_ENTITY;
-
-ENTITY string_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(simple_string_expression, index_expression, substring_expression, concat_expression,
-                               format_function, string_defined_function))
-  SUBTYPE OF (expression);
-END_ENTITY;
-
-ENTITY string_literal
-  SUBTYPE OF (simple_string_expression, generic_literal);
-  the_value : STRING;
-END_ENTITY;
-
-ENTITY string_variable
-  SUBTYPE OF (simple_string_expression, variable);
-END_ENTITY;
-
-ENTITY structured_dimension_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(TYPEOF(SELF) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) =
-       0;
-  WR2: SIZEOF(QUERY(ato
-                    <* QUERY(con
-                             <* SELF.contents
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                TYPEOF(con)))
-                    | NOT (ato.name IN
-                           ['dimension value','tolerance value','unit text','prefix text','suffix text']))) =
-       0;
-  WR3: SIZEOF(QUERY(ato
-                    <* QUERY(con
-                             <* SELF.contents
-                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                TYPEOF(con)))
-                    | (ato.name = 'dimension value'))) >=
-       1;
-  WR4: SIZEOF(QUERY(dcr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
-                       TYPEOF(dcr)) AND
-                      (dcr.name = 'prefix'))) <=
-       1;
-  WR5: SIZEOF(QUERY(dcr
-                    <* USEDIN(SELF,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
-                       TYPEOF(dcr)) AND
-                      (dcr.name = 'suffix'))) <=
-       1;
-  WR6: NOT ((SIZEOF(QUERY(ato
-                          <* QUERY(con
-                                   <* SELF.contents
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                      TYPEOF(con)))
-                          | (ato.name = 'prefix text'))) >
-             0)) OR
-           (SIZEOF(QUERY(dcr
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
-                            TYPEOF(dcr)) AND
-                           (dcr.name = 'prefix'))) =
-            1);
-  WR7: NOT (SIZEOF(QUERY(ato
-                         <* QUERY(con
-                                  <* SELF.contents
-                                  | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN
-                                     TYPEOF(con)))
-                         | (ato.name = 'suffix text'))) >
-            0) OR
-           (SIZEOF(QUERY(dcr
-                         <* USEDIN(SELF,
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT')
-                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN
-                            TYPEOF(dcr)) AND
-                           (dcr.name = 'suffix'))) =
-            1);
-END_ENTITY;
-
-ENTITY structured_message
-  SUBTYPE OF (product);
-END_ENTITY;
-
-ENTITY structured_text_composition
-  SUBTYPE OF (compound_representation_item);
-END_ENTITY;
-
-ENTITY structured_text_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF string_representation_item_select;
-END_ENTITY;
-
-ENTITY styled_item
-  SUBTYPE OF (representation_item);
-  styles : SET [0 : ?] OF presentation_style_assignment;
-  item   : styled_item_target;
-WHERE
-  WR1: (SIZEOF(styles) = 0) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_TESSELLATED_ITEM_WITH_COLOURS' IN TYPEOF(SELF)) OR
-       (SIZEOF(styles) = 1) OR
-       (SIZEOF(styles) > 1) AND
-       (SIZEOF(QUERY(pres_style
-                     <* styles
-                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_STYLE_BY_CONTEXT' IN
-                            TYPEOF(pres_style)))) =
-        0);
-  WR2: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF(item));
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(item)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item)) OR
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM' IN TYPEOF(SELF));
-END_ENTITY;
-
-ENTITY styled_tessellated_item_with_colours
-  SUBTYPE OF (styled_item);
-  SELF\styled_item.item : tessellated_surface_item;
-  colour_type           : colour_type_enum;
-  colour_values         : LIST [1 : ?] OF LIST [3 : 4] OF unsigned_8_bit_integer;
-DERIVE
-  coloured_coordinate_values : coordinates_list := get_coordinate_values(item);
-WHERE
-  WR1: SIZEOF(SELF\styled_item.styles) = 0;
-  WR2: ((colour_type = rgb8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 3))) = 0)) OR
-       ((colour_type = rgbt8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 4))) = 0));
-  WR3: SIZEOF(colour_values) = coloured_coordinate_values\coordinates_list.npoints;
-END_ENTITY;
-
-ENTITY su_parameters
-  SUBTYPE OF (geometric_representation_item);
-  a     : length_measure;
-  alpha : plane_angle_measure;
-  b     : length_measure;
-  beta  : plane_angle_measure;
-  c     : length_measure;
-  gamma : plane_angle_measure;
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY subedge
-  SUBTYPE OF (edge);
-  parent_edge : edge;
-END_ENTITY;
-
-ENTITY subface
-  SUBTYPE OF (face);
-  parent_face : face;
-WHERE
-  WR1: NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + list_to_set(list_face_loops(parent_face))));
-END_ENTITY;
-
-ENTITY subsketch
-  SUBTYPE OF (geometric_representation_item);
-  subsketch_elements : SET [1 : ?] OF sketch_element_select;
-  owning_sketch      : sketch_type_select;
-WHERE
-  WR1: (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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) *
-                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIONED_SKETCH',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSKETCH']) =
-         1) AND
-        (SIZEOF(QUERY(q <* subsketch_elements | NOT (owning_sketch IN using_items(q, [])))) = 0));
-END_ENTITY;
-
-ENTITY substring_expression
-  SUBTYPE OF (string_expression, multiple_arity_generic_expression);
-DERIVE
-  operand : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
-  index1  : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
-  index2  : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index1)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index2));
-  WR2: SIZEOF(SELF\multiple_arity_generic_expression.operands) = 3;
-  WR3: is_int_expr(index1);
-  WR4: is_int_expr(index2);
-END_ENTITY;
-
-ENTITY summary_report_request
-  SUBTYPE OF (data_quality_report_request);
-  summary_report_request_type : summary_report_type;
-END_ENTITY;
-
-ENTITY summary_report_request_with_number_of_instances
-  SUBTYPE OF (data_equivalence_report_request);
-  report_request_type : SET [1 : 3] OF summary_report_style_type;
-END_ENTITY;
-
-ENTITY supplied_part_relationship
-  SUBTYPE OF (product_definition_relationship);
-END_ENTITY;
-
-ENTITY surface
-  SUPERTYPE OF (ONEOF(elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica))
-  SUBTYPE OF (geometric_representation_item);
-END_ENTITY;
-
-ENTITY surface_condition_callout
-  SUBTYPE OF (draughting_callout);
-WHERE
-  WR1: SIZEOF(QUERY(c
-                    <* SELF.contents
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'] *
-                             TYPEOF(c)) <>
-                      1)) =
-       0;
-END_ENTITY;
-
-ENTITY surface_curve
-  SUPERTYPE OF (ONEOF(intersection_curve, seam_curve) ANDOR bounded_surface_curve)
-  SUBTYPE OF (curve);
-  curve_3d              : curve;
-  associated_geometry   : LIST [1 : 2] OF pcurve_or_surface;
-  master_representation : preferred_surface_curve_representation;
-DERIVE
-  basis_surface : SET [1 : 2] OF surface := get_basis_surface(SELF);
-WHERE
-  WR1: curve_3d.dim = 3;
-  WR2: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR
-       (master_representation <> pcurve_s1);
-  WR3: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR
-       (master_representation <> pcurve_s2);
-  WR4: NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(curve_3d));
-END_ENTITY;
-
-ENTITY surface_curve_swept_area_solid
-  SUBTYPE OF (swept_area_solid);
-  directrix         : curve;
-  start_param       : REAL;
-  end_param         : REAL;
-  reference_surface : surface;
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR
-       (reference_surface IN (directrix\surface_curve.basis_surface));
-END_ENTITY;
-
-ENTITY surface_curve_swept_surface
-  SUBTYPE OF (swept_surface);
-  directrix         : curve;
-  reference_surface : surface;
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR
-       (reference_surface IN (directrix\surface_curve.basis_surface));
-END_ENTITY;
-
-ENTITY surface_distance_assembly_constraint_with_dimension
-  SUBTYPE OF (binary_assembly_constraint, sdgc_with_dimension);
-END_ENTITY;
-
-ENTITY surface_distance_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF surface;
-  SELF\explicit_constraint.reference_elements   : SET [0 : 4] OF point_curve_or_surface_constraint_element;
-  near_points                                   : SET [0 : 4] OF near_point_relationship;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SDGC_WITH_DIMENSION' IN TYPEOF(SELF)) AND
-        (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2));
-  WR2: SIZEOF(near_points) <= SIZEOF(SELF\explicit_constraint.reference_elements);
-  WR3: SIZEOF(QUERY(q
-                    <* near_points
-                    | NOT (q\representation_item_relationship.relating_representation_item IN
-                           SELF\explicit_constraint.reference_elements))) =
-       0;
-END_ENTITY;
-
-ENTITY surface_of_linear_extrusion
-  SUBTYPE OF (swept_surface);
-  extrusion_axis : vector;
-END_ENTITY;
-
-ENTITY surface_of_revolution
-  SUBTYPE OF (swept_surface);
-  axis_position : axis1_placement;
-DERIVE
-  axis_line : line := representation_item('') || geometric_representation_item() || curve() ||
-                      line(axis_position.location,
-                           representation_item('') || geometric_representation_item() || vector(axis_position.z, 1.0));
-END_ENTITY;
-
-ENTITY surface_pair
-  ABSTRACT SUPERTYPE OF (ONEOF(sliding_surface_pair, rolling_surface_pair) ANDOR surface_pair_with_range)
-  SUBTYPE OF (high_order_kinematic_pair);
-  surface_1   : surface;
-  surface_2   : surface;
-  orientation : BOOLEAN;
-WHERE
-  WR1: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_1 | NOT (surface_1 IN r.items))) = 0;
-  WR2: SIZEOF(QUERY(r <* SELF\kinematic_pair.associated_link_representations_2 | NOT (surface_2 IN r.items))) = 0;
-  WR3: SIZEOF(QUERY(lr
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION' IN
-                           TYPEOF(lr)))) =
-       0;
-END_ENTITY;
-
-ENTITY surface_pair_with_range
-  SUBTYPE OF (surface_pair);
-  range_on_surface_1          : rectangular_trimmed_surface;
-  range_on_surface_2          : rectangular_trimmed_surface;
-  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
-  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: SELF\surface_pair.surface_1 :=: range_on_surface_1.basis_surface;
-  WR2: SELF\surface_pair.surface_2 :=: range_on_surface_2.basis_surface;
-  WR3: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR
-       (lower_limit_actual_rotation < upper_limit_actual_rotation);
-  WR4: SIZEOF(QUERY(r
-                    <* SELF\kinematic_pair.associated_link_representations_1
-                    | NOT (range_on_surface_1 IN r.items))) =
-       0;
-  WR5: SIZEOF(QUERY(r
-                    <* SELF\kinematic_pair.associated_link_representations_2
-                    | NOT (range_on_surface_2 IN r.items))) =
-       0;
-END_ENTITY;
-
-ENTITY surface_patch
-  SUBTYPE OF (founded_item);
-  parent_surface : bounded_surface;
-  u_transition   : transition_code;
-  v_transition   : transition_code;
-  u_sense        : BOOLEAN;
-  v_sense        : BOOLEAN;
-INVERSE
-  using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR segments;
-WHERE
-  WR1: (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(parent_surface)));
-END_ENTITY;
-
-ENTITY surface_patch_set
-  SUBTYPE OF (geometric_representation_item);
-  patches : SET [1 : ?] OF surface_patch;
-END_ENTITY;
-
-ENTITY surface_profile_tolerance
-  SUBTYPE OF (geometric_tolerance);
-END_ENTITY;
-
-ENTITY surface_rendering_properties;
-  rendered_colour : colour;
-END_ENTITY;
-
-ENTITY surface_replica
-  SUBTYPE OF (surface);
-  parent_surface : surface;
-  transformation : cartesian_transformation_operator_3d;
-WHERE
-  WR1: acyclic_surface_replica(SELF, parent_surface);
-END_ENTITY;
-
-ENTITY surface_side_style
-  SUBTYPE OF (founded_item);
-  name   : label;
-  styles : SET [1 : 7] OF surface_style_element_select;
-WHERE
-  WR1: SIZEOF(QUERY(style1
-                    <* styles
-                    | SIZEOF(QUERY(style2 <* styles - style1 | TYPEOF(style1) = TYPEOF(style2))) > 0)) =
-       0;
-END_ENTITY;
-
-ENTITY surface_smoothness_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF surface_patch_set;
-  u_smoothness                                  : transition_code;
-  v_smoothness                                  : transition_code;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-END_ENTITY;
-
-ENTITY surface_style_boundary
-  SUBTYPE OF (founded_item);
-  style_of_boundary : curve_or_render;
-END_ENTITY;
-
-ENTITY surface_style_control_grid
-  SUBTYPE OF (founded_item);
-  style_of_control_grid : curve_or_render;
-END_ENTITY;
-
-ENTITY surface_style_fill_area
-  SUBTYPE OF (founded_item);
-  fill_area : fill_area_style;
-END_ENTITY;
-
-ENTITY surface_style_parameter_line
-  SUBTYPE OF (founded_item);
-  style_of_parameter_lines : curve_or_render;
-  direction_counts         : SET [1 : 2] OF direction_count_select;
-WHERE
-  WR1: (HIINDEX(direction_counts) = 1) XOR (TYPEOF(direction_counts[1]) <> TYPEOF(direction_counts[2]));
-END_ENTITY;
-
-ENTITY surface_style_reflectance_ambient;
-  ambient_reflectance : REAL;
-END_ENTITY;
-
-ENTITY surface_style_reflectance_ambient_diffuse
-  SUBTYPE OF (surface_style_reflectance_ambient);
-  diffuse_reflectance : REAL;
-END_ENTITY;
-
-ENTITY surface_style_reflectance_ambient_diffuse_specular
-  SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
-  specular_reflectance : REAL;
-  specular_exponent    : REAL;
-  specular_colour      : colour;
-END_ENTITY;
-
-ENTITY surface_style_rendering;
-  rendering_method : shading_surface_method;
-  surface_colour   : colour;
-END_ENTITY;
-
-ENTITY surface_style_rendering_with_properties
-  SUBTYPE OF (surface_style_rendering);
-  properties : SET [1 : 2] OF rendering_properties_select;
-WHERE
-  WR1: (HIINDEX(properties) = 1) XOR (TYPEOF(properties[1]) <> TYPEOF(properties[2]));
-END_ENTITY;
-
-ENTITY surface_style_segmentation_curve
-  SUBTYPE OF (founded_item);
-  style_of_segmentation_curve : curve_or_render;
-END_ENTITY;
-
-ENTITY surface_style_silhouette
-  SUBTYPE OF (founded_item);
-  style_of_silhouette : curve_or_render;
-END_ENTITY;
-
-ENTITY surface_style_transparent;
-  transparency : REAL;
-WHERE
-  WR1: {0.0 <= transparency <= 1.0};
-END_ENTITY;
-
-ENTITY surface_style_usage
-  SUBTYPE OF (founded_item);
-  side  : surface_side;
-  style : surface_side_style_select;
-END_ENTITY;
-
-ENTITY surface_texture_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] *
-                             TYPEOF(i)) <>
-                      1)) =
-       0;
-  WR2: (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                       TYPEOF(i))) =
-        1) AND
-       (SIZEOF(QUERY(i
-                     <* SELF.items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                        TYPEOF(i)) AND
-                       (i.name = 'measuring method'))) =
-        1);
-  WR3: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                             TYPEOF(i)) =
-                      1)) >
-       0;
-  WR4: (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')) <=
-        1) AND
-       (SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2')) =
-        0) AND
-       (SIZEOF(QUERY(rr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')
-                     | rr.rep_2.name = 'measuring direction')) =
-        SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_1')));
-  WR5: (SIZEOF(USEDIN(SELF,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | SIZEOF(QUERY(gpa
-                                    <* USEDIN(pdr.definition,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
-                                       TYPEOF(gpa.base_definition)) AND
-                                      (gpa\general_property_association.base_definition\general_property.name =
-                                       'surface_condition'))) =
-                       1)) =
-        1);
-END_ENTITY;
-
-ENTITY surface_with_excessive_patches_in_one_direction
-  SUBTYPE OF (overcomplex_geometry);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF,
-                                        ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT']);
-  WR4: validate_locations_of_extreme_value_type(SELF, []);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY surface_with_small_curvature_radius
-  SUBTYPE OF (geometry_with_local_near_degeneracy);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY surfaced_open_shell
-  SUBTYPE OF (open_shell);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\connected_face_set.cfs_faces
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) =
-       0;
-END_ENTITY;
-
-ENTITY swept_area_solid
-  SUPERTYPE OF (ONEOF(revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid))
-  SUBTYPE OF (solid_model);
-  swept_area : curve_bounded_surface;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface);
-END_ENTITY;
-
-ENTITY swept_curve_surface_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF surface;
-  SELF\explicit_constraint.reference_elements   : SET [1 : 1] OF swept_surface_or_solid;
-END_ENTITY;
-
-ENTITY swept_disk_solid
-  SUBTYPE OF (solid_model);
-  directrix    : curve;
-  radius       : positive_length_measure;
-  inner_radius : OPTIONAL positive_length_measure;
-  start_param  : REAL;
-  end_param    : REAL;
-WHERE
-  WR1: directrix.dim = 3;
-  WR2: (NOT EXISTS(inner_radius)) OR (radius > inner_radius);
-END_ENTITY;
-
-ENTITY swept_face_solid
-  SUPERTYPE OF (ONEOF(extruded_face_solid, revolved_face_solid))
-  SUBTYPE OF (solid_model);
-  swept_face : face_surface;
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry);
-END_ENTITY;
-
-ENTITY swept_point_curve_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve;
-  SELF\explicit_constraint.reference_elements   : SET [1 : 1] OF swept_face_solid;
-END_ENTITY;
-
-ENTITY swept_surface
-  SUPERTYPE OF (ONEOF(surface_of_linear_extrusion, surface_of_revolution, surface_curve_swept_surface,
-                      fixed_reference_swept_surface))
-  SUBTYPE OF (surface);
-  swept_curve : curve;
-END_ENTITY;
-
-ENTITY symbol
-  SUBTYPE OF (representation_item);
-END_ENTITY;
-
-ENTITY symbol_colour;
-  colour_of_symbol : colour;
-END_ENTITY;
-
-ENTITY symbol_representation
-  SUBTYPE OF (representation);
-END_ENTITY;
-
-ENTITY symbol_representation_map
-  SUBTYPE OF (representation_map);
-  SELF\representation_map.mapped_representation : symbol_representation;
-  SELF\representation_map.mapping_origin        : axis2_placement;
-WHERE
-  WR1: SIZEOF(QUERY(mi
-                    <* SELF\representation_map.map_usage
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi)))) =
-       0;
-END_ENTITY;
-
-ENTITY symbol_style
-  SUBTYPE OF (founded_item);
-  name            : label;
-  style_of_symbol : symbol_style_select;
-END_ENTITY;
-
-ENTITY symbol_target
-  SUBTYPE OF (geometric_representation_item);
-  placement : axis2_placement;
-  x_scale   : positive_ratio_measure;
-  y_scale   : positive_ratio_measure;
-END_ENTITY;
-
-ENTITY symmetric_banded_matrix
-  SUBTYPE OF (symmetric_matrix);
-  default_entry : maths_value;
-  above         : nonnegative_integer;
-WHERE
-  WR1: member_of(default_entry, factor1(SELF\linearized_table_function.source.range));
-END_ENTITY;
-
-ENTITY symmetric_matrix
-  SUBTYPE OF (linearized_table_function);
-  symmetry : symmetry_type;
-  triangle : lower_upper;
-  order    : ordering_type;
-WHERE
-  WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
-  WR2: SELF\explicit_table_function.shape[1] = SELF\explicit_table_function.shape[2];
-  WR3: NOT (symmetry = symmetry_type.skew) OR
-           ((space_dimension(SELF\linearized_table_function.source.range) = 1) AND
-            subspace_of_es(factor1(SELF\linearized_table_function.source.range), es_numbers));
-  WR4: NOT ((symmetry = symmetry_type.hermitian) OR (symmetry = symmetry_type.skew_hermitian)) OR
-           ((space_dimension(SELF\linearized_table_function.source.range) = 1) AND
-            subspace_of_es(factor1(SELF\linearized_table_function.source.range), es_complex_numbers));
-END_ENTITY;
-
-ENTITY symmetric_shape_aspect
-  SUBTYPE OF (shape_aspect);
-INVERSE
-  basis_relationships : SET [1:?] OF shape_aspect_deriving_relationship FOR related_shape_aspect;
-END_ENTITY;
-
-ENTITY symmetry_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [2 : 2] OF geometric_representation_item;
-  mirror_element                                : linear_geometry_constraint_element;
-WHERE
-  WR1: SIZEOF(SELF\explicit_constraint.reference_elements) = 0;
-  WR2: SIZEOF(TYPEOF(mirror_element) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR']) =
-       0;
-  WR3: NOT ((SELF\geometric_representation_item.dim = 2) AND
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(mirror_element)));
-END_ENTITY;
-
-ENTITY symmetry_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY system_breakdown_context
-  SUBTYPE OF (breakdown_context);
-END_ENTITY;
-
-ENTITY system_element_usage
-  SUBTYPE OF (breakdown_element_usage);
-END_ENTITY;
-
-ENTITY table_representation_item
-  SUBTYPE OF (compound_representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(itet
-                    <* SELF\compound_representation_item.item_element
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROW_REPRESENTATION_ITEM' IN
-                           TYPEOF(itet)))) =
-       0;
-END_ENTITY;
-
-ENTITY tactile_appearance_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: SIZEOF(QUERY(i
-                    <* SELF.items
-                    | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                             TYPEOF(i)) <>
-                      1)) =
-       0;
-  WR2: SIZEOF(QUERY(i <* SELF.items | name = 'depth')) <= 1;
-  WR3: (SIZEOF(USEDIN(SELF,
-                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
-        1) AND
-       (SIZEOF(QUERY(pdr
-                     <* USEDIN(SELF,
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                     | SIZEOF(QUERY(gpa
-                                    <* USEDIN(pdr.definition,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
-                                       TYPEOF(gpa.base_definition)) AND
-                                      (gpa\general_property_association.base_definition\general_property.name =
-                                       'surface_condition'))) =
-                       1)) =
-        1);
-END_ENTITY;
-
-ENTITY tagged_text_format
-  SUBTYPE OF (representation_context);
-END_ENTITY;
-
-ENTITY tagged_text_item
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY tan_function
-  SUBTYPE OF (unary_function_call);
-END_ENTITY;
-
-ENTITY tangent
-  SUBTYPE OF (derived_shape_aspect);
-WHERE
-  WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
-END_ENTITY;
-
-ENTITY tangent_assembly_constraint
-  SUBTYPE OF (binary_assembly_constraint, tangent_geometric_constraint);
-END_ENTITY;
-
-ENTITY tangent_geometric_constraint
-  SUBTYPE OF (explicit_geometric_constraint);
-  SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
-  SELF\explicit_constraint.reference_elements   : SET [0 : ?] OF curve_or_surface_constraint_element;
-  near_points                                   : SET [0 : ?] OF near_point_relationship;
-  tangent_contact                               : tangent_contact_type;
-WHERE
-  WR1: (SIZEOF(SELF\explicit_constraint.reference_elements) > 0) OR
-       (SIZEOF(SELF\explicit_constraint.constrained_elements) = 2);
-  WR2: NOT ((SELF\geometric_representation_item.dim = 2) AND (tangent_contact = surface_contact));
-  WR3: SIZEOF(QUERY(q
-                    <* near_points
-                    | NOT (q\representation_item_relationship.relating_representation_item IN
-                           SELF\explicit_constraint.reference_elements))) =
-       0;
-END_ENTITY;
-
-ENTITY taper
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-        TYPEOF(SELF.of_shape.definition));
-  WR2: (SELF.description IN ['angle taper','diameter taper','directed taper']);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)))) =
-                             0)))) =
-        0);
-  WR5: ((NOT (SELF.description = 'angle taper')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'taper angle')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR6: ((NOT (SELF.description = 'diameter taper')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'final diameter')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR7: ((NOT (SELF.description = 'directed taper')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'angle')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR8: ((NOT (SELF.description = 'directed taper')) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(pdr
-                                           <* USEDIN(pd,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
-                                              TYPEOF(pdr.used_representation)) AND
-                                             (pdr.used_representation.name = 'direction'))) =
-                              1)))) =
-         0));
-END_ENTITY;
-
-ENTITY tee_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                          TYPEOF(pdr.used_representation))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'orientation'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'width'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'depth'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'cross bar width'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'cross bar depth'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR10: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'first offset'))) =
-                                                1))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'second offset'))) =
-                                                1))) =
-                            0))) =
-        0;
-  WR12: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'first angle'))) =
-                                                1))) =
-                            0))) =
-        0;
-  WR13: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'second angle'))) =
-                                                1))) =
-                            0))) =
-        0;
-  WR14: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                       TYPEOF(it)) =
-                                                                2) AND
-                                                               (it.name = 'radius'))) <=
-                                                1))) =
-                            0))) =
-        0;
-  WR15: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(pdr
-                                         <* USEDIN(pd,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                         | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                            TYPEOF(pdr.used_representation)) AND
-                                           (pdr.used_representation.name = 'profile limit'))) <=
-                            1))) =
-        0;
-END_ENTITY;
-
-ENTITY terminal_feature
-  SUBTYPE OF (contact_feature);
-END_ENTITY;
-
-ENTITY terminal_location_group
-  SUBTYPE OF (terminal_feature);
-END_ENTITY;
-
-ENTITY terminator_symbol
-  SUBTYPE OF (annotation_symbol_occurrence);
-  annotated_curve : annotation_curve_occurrence;
-END_ENTITY;
-
-ENTITY tessellated_annotation_occurrence
-  SUBTYPE OF (annotation_occurrence);
-  SELF\styled_item.item : tessellated_geometric_set;
-END_ENTITY;
-
-ENTITY tessellated_connecting_edge
-  SUBTYPE OF (tessellated_edge);
-  smooth           : LOGICAL;
-  face1            : tessellated_face;
-  face2            : tessellated_face;
-  line_strip_face1 : LIST [2 : ?] OF INTEGER;
-  line_strip_face2 : LIST [2 : ?] OF INTEGER;
-WHERE
-  WR1: SIZEOF(line_strip_face1) = SIZEOF(line_strip_face2);
-  WR2: SIZEOF(line_strip_face1) = SIZEOF(SELF\tessellated_edge.line_strip);
-  WR3: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CUBIC_BEZIER_TRIANGULATED_FACE') IN TYPEOF(face1));
-  WR4: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CUBIC_BEZIER_TRIANGULATED_FACE') IN TYPEOF(face2));
-END_ENTITY;
-
-ENTITY tessellated_curve_set
-  SUBTYPE OF (tessellated_item);
-  coordinates : coordinates_list;
-  line_strips : LIST [1 : ?] OF LIST [2 : ?] OF INTEGER;
-END_ENTITY;
-
-ENTITY tessellated_edge
-  SUPERTYPE OF (ONEOF(tessellated_connecting_edge, cubic_bezier_tessellated_edge))
-  SUBTYPE OF (tessellated_structured_item);
-  coordinates    : coordinates_list;
-  geometric_link : OPTIONAL edge_or_curve;
-  line_strip     : LIST [2 : ?] OF INTEGER;
-END_ENTITY;
-
-ENTITY tessellated_face
-  ABSTRACT SUPERTYPE OF (ONEOF(triangulated_face, complex_triangulated_face, cubic_bezier_triangulated_face))
-  SUBTYPE OF (tessellated_structured_item);
-  coordinates    : coordinates_list;
-  pnmax          : INTEGER;
-  normals        : LIST [0 : ?] OF LIST [3 : 3] OF REAL;
-  geometric_link : OPTIONAL face_or_surface;
-WHERE
-  WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1) OR (SIZEOF(normals) = pnmax));
-END_ENTITY;
-
-ENTITY tessellated_geometric_set
-  SUBTYPE OF (tessellated_item);
-  children : SET [1 : ?] OF tessellated_item;
-END_ENTITY;
-
-ENTITY tessellated_item
-  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))
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(using_rep
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION' IN
-                           TYPEOF(using_rep)))) =
-       0;
-END_ENTITY;
-
-ENTITY tessellated_point_set
-  SUBTYPE OF (tessellated_item);
-  coordinates : coordinates_list;
-  point_list  : LIST [1 : ?] OF INTEGER;
-END_ENTITY;
-
-ENTITY tessellated_shape_representation
-  SUBTYPE OF (shape_representation);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
-       TYPEOF(SELF\representation.context_of_items);
-  WR2: NOT (SIZEOF(QUERY(it
-                         <* SELF.items
-                         | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_ITEM' IN TYPEOF(it))) =
-            0);
-END_ENTITY;
-
-ENTITY tessellated_shape_representation_with_accuracy_parameters
-  SUBTYPE OF (tessellated_shape_representation);
-  tessellation_accuracy_parameters : SET [1 : ?] OF tessellation_accuracy_parameter_item;
-END_ENTITY;
-
-ENTITY tessellated_shell
-  SUBTYPE OF (tessellated_item);
-  items            : SET [1 : ?] OF tessellated_structured_item;
-  topological_link : OPTIONAL connected_face_set;
-END_ENTITY;
-
-ENTITY tessellated_solid
-  SUBTYPE OF (tessellated_item);
-  items          : SET [1 : ?] OF tessellated_structured_item;
-  geometric_link : OPTIONAL manifold_solid_brep;
-END_ENTITY;
-
-ENTITY tessellated_structured_item
-  SUPERTYPE OF (ONEOF(tessellated_face, tessellated_edge, tessellated_vertex))
-  SUBTYPE OF (tessellated_item);
-END_ENTITY;
-
-ENTITY tessellated_surface_set
-  ABSTRACT SUPERTYPE OF (ONEOF(triangulated_surface_set, complex_triangulated_surface_set))
-  SUBTYPE OF (tessellated_item);
-  coordinates : coordinates_list;
-  pnmax       : INTEGER;
-  normals     : LIST [0 : ?] OF LIST [3 : 3] OF REAL;
-WHERE
-  WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1) OR (SIZEOF(normals) = pnmax));
-END_ENTITY;
-
-ENTITY tessellated_vertex
-  SUBTYPE OF (tessellated_structured_item);
-  coordinates      : coordinates_list;
-  topological_link : OPTIONAL vertex_point;
-  point_index      : INTEGER;
-END_ENTITY;
-
-ENTITY tessellated_wire
-  SUBTYPE OF (tessellated_item);
-  items                : SET [1 : ?] OF tessellated_edge_or_vertex;
-  geometric_model_link : OPTIONAL path_or_composite_curve;
-END_ENTITY;
-
-ENTITY tetrahedron
-  SUBTYPE OF (faceted_primitive);
-WHERE
-  WR1: SIZEOF(points) = 4;
-  WR2: above_plane(points[1], points[2], points[3], points[4]) <> 0.0;
-END_ENTITY;
-
-ENTITY tetrahedron_volume
-  SUBTYPE OF (volume);
-  point_1 : cartesian_point;
-  point_2 : cartesian_point;
-  point_3 : cartesian_point;
-  point_4 : cartesian_point;
-WHERE
-  WR1: point_1.dim = 3;
-  WR2: above_plane(point_1, point_2, point_3, point_4) <> 0.0;
-END_ENTITY;
-
-ENTITY text_font;
-  id          : identifier;
-  name        : label;
-  description : text;
-INVERSE
-  glyphs : SET [1:?] OF character_glyph_font_usage FOR font;
-END_ENTITY;
-
-ENTITY text_font_family;
-  id          : identifier;
-  name        : label;
-  description : text;
-INVERSE
-  fonts : SET [1:?] OF text_font_in_family FOR family;
-END_ENTITY;
-
-ENTITY text_font_in_family;
-  font   : text_font;
-  family : text_font_family;
-END_ENTITY;
-
-ENTITY text_literal
-  SUBTYPE OF (geometric_representation_item);
-  literal   : presentable_text;
-  placement : axis2_placement;
-  alignment : text_alignment;
-  path      : text_path;
-  font      : font_select;
-END_ENTITY;
-
-ENTITY text_literal_with_associated_curves
-  SUBTYPE OF (text_literal);
-  associated_curves : SET [1 : ?] OF curve;
-END_ENTITY;
-
-ENTITY text_literal_with_blanking_box
-  SUBTYPE OF (text_literal);
-  blanking : planar_box;
-END_ENTITY;
-
-ENTITY text_literal_with_delineation
-  SUBTYPE OF (text_literal);
-  delineation : text_delineation;
-END_ENTITY;
-
-ENTITY text_literal_with_extent
-  SUBTYPE OF (text_literal);
-  extent : planar_extent;
-END_ENTITY;
-
-ENTITY text_string_representation
-  SUBTYPE OF (representation);
-  SELF\representation.items : SET [1 : ?] OF text_string_representation_item;
-WHERE
-  WR1: SIZEOF(QUERY(item
-                    <* SELF\representation.items
-                    | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_CHARACTER',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINED_CHARACTER_GLYPH',
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'] *
-                                  TYPEOF(item)) =
-                           0))) >=
-       1;
-  WR2: SIZEOF(QUERY(a2p
-                    <* QUERY(item
-                             <* SELF\representation.items
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF(item))
-                    | NOT ((SIZEOF(QUERY(at
-                                         <* QUERY(item
-                                                  <* SELF\representation.items
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN
-                                                    TYPEOF(item))
-                                         | (at\mapped_item.mapping_target :=: a2p))) >=
-                            1) OR
-                           (SIZEOF(QUERY(atc
-                                         <* QUERY(item
-                                                  <* SELF\representation.items
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_CHARACTER' IN
-                                                    TYPEOF(item))
-                                         | (atc\mapped_item.mapping_target :=: a2p))) >=
-                            1)))) =
-       0;
-END_ENTITY;
-
-ENTITY text_style
-  SUBTYPE OF (founded_item);
-  name                 : label;
-  character_appearance : character_style_select;
-END_ENTITY;
-
-ENTITY text_style_for_defined_font;
-  text_colour : colour;
-END_ENTITY;
-
-ENTITY text_style_with_box_characteristics
-  SUBTYPE OF (text_style);
-  characteristics : SET [1 : 4] OF box_characteristic_select;
-WHERE
-  WR1: SIZEOF(QUERY(c1 <* characteristics | SIZEOF(QUERY(c2 <* characteristics - c1 | TYPEOF(c1) = TYPEOF(c2))) > 0)) =
-       0;
-END_ENTITY;
-
-ENTITY text_style_with_mirror
-  SUBTYPE OF (text_style);
-  mirror_placement : axis2_placement;
-END_ENTITY;
-
-ENTITY text_style_with_spacing
-  SUBTYPE OF (text_style);
-  character_spacing : character_spacing_select;
-END_ENTITY;
-
-ENTITY texture_style_specification
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (founded_item);
-END_ENTITY;
-
-ENTITY texture_style_tessellation_specification
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (texture_style_specification);
-END_ENTITY;
-
-ENTITY thermal_component
-  SUBTYPE OF (assembly_component);
-END_ENTITY;
-
-ENTITY thermal_resistance_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMAL_RESISTANCE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY thermal_resistance_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(-1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0);
-END_ENTITY;
-
-ENTITY thermodynamic_temperature_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN
-       TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY thermodynamic_temperature_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY thickened_face_solid
-  SUBTYPE OF (solid_model);
-  base_element : generalized_surface_select;
-  offset1      : length_measure;
-  offset2      : length_measure;
-WHERE
-  WR1: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND
-            (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element))));
-  WR2: offset1 <> offset2;
-END_ENTITY;
-
-ENTITY thread
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (SIZEOF(QUERY(pdr
-                                     <* USEDIN(pd,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                     | ((('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'major diameter')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'minor diameter')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'pitch diameter')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'number of threads')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'fit class')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'form')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR8: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'hand') AND
-                                                                  (it.description IN ['left','right'])))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR9: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'qualifier')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR10: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'thread side') AND
-                                                                   ((it.description = 'internal') OR
-                                                                    (it.description = 'external'))))) =
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR11: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'crest')))) <=
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR12: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'partial area occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'applied area usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) =
-                                               1)))) =
-                              1)))) =
-         0);
-  WR13: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'applied shape') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) =
-                                               1)))) =
-                              1)))) =
-         0);
-  WR14: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                    TYPEOF(it)) AND
-                                                                   (it.name = 'fit class 2')))) <=
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR15: (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'nominal size')))) <=
-                                                   1)))) =
-                              0)))) =
-         0);
-  WR16: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'thread runout') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'thread runout usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THREAD_RUNOUT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) <=
-                                               1)))) =
-                              1)))) =
-         0);
-END_ENTITY;
-
-ENTITY thread_runout
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
-  WR2: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(pdr
-                                          <* USEDIN(pd,
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                             TYPEOF(pdr.used_representation)))) =
-                             1)))) =
-        0);
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)))) =
-                             0)))) =
-        0);
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | (SIZEOF(QUERY(pdr
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'length of runout')))) =
-                                                  1)))) =
-                             0)))) <=
-        1);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'pitch or dimension') AND
-                                                                  (it.description IN
-                                                                   ['pitch','pitch or dimension'])))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  (it.name = 'included or extra') AND
-                                                                  (it.description IN ['included','extra'])))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-END_ENTITY;
-
-ENTITY time_interval;
-  id          : identifier;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY time_interval_assignment
-  ABSTRACT SUPERTYPE;
-  assigned_time_interval : time_interval;
-  role                   : time_interval_role;
-END_ENTITY;
-
-ENTITY time_interval_based_effectivity
-  SUBTYPE OF (effectivity);
-  effectivity_period : time_interval;
-END_ENTITY;
-
-ENTITY time_interval_relationship;
-  name                   : label;
-  description            : OPTIONAL text;
-  relating_time_interval : time_interval;
-  related_time_interval  : time_interval;
-END_ENTITY;
-
-ENTITY time_interval_role;
-  name        : label;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY time_interval_with_bounds
-  SUBTYPE OF (time_interval);
-  primary_bound   : OPTIONAL date_time_or_event_occurrence;
-  secondary_bound : OPTIONAL date_time_or_event_occurrence;
-  duration        : OPTIONAL time_measure_with_unit;
-WHERE
-  WR1: EXISTS(primary_bound) OR EXISTS(secondary_bound);
-  WR2: NOT (EXISTS(primary_bound) AND EXISTS(secondary_bound) AND EXISTS(duration));
-  WR3: EXISTS(primary_bound) AND
-       NOT EXISTS(secondary_bound) AND (NOT EXISTS(duration) OR duration_is_positive(duration));
-  WR4: EXISTS(secondary_bound) AND NOT EXISTS(primary_bound) AND EXISTS(duration) AND duration_is_negative(duration);
-END_ENTITY;
-
-ENTITY time_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY time_unit
-  SUBTYPE OF (named_unit);
-WHERE
-  WR1: (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);
-END_ENTITY;
-
-ENTITY tolerance_value;
-  lower_bound : measure_with_unit;
-  upper_bound : measure_with_unit;
-DERIVE
-  ubvc : REAL := upper_bound\measure_with_unit.value_component;
-  lbvc : REAL := lower_bound\measure_with_unit.value_component;
-WHERE
-  WR1: ubvc > lbvc;
-  WR2: upper_bound\measure_with_unit.unit_component = lower_bound\measure_with_unit.unit_component;
-END_ENTITY;
-
-ENTITY tolerance_zone
-  SUBTYPE OF (shape_aspect);
-  defining_tolerance : SET [1 : ?] OF tolerance_zone_target;
-  form               : tolerance_zone_form;
-END_ENTITY;
-
-ENTITY tolerance_zone_definition
-  SUPERTYPE OF (ONEOF(projected_zone_definition, non_uniform_zone_definition, runout_zone_definition));
-  zone       : tolerance_zone;
-  boundaries : SET [0 : ?] OF shape_aspect;
-END_ENTITY;
-
-ENTITY tolerance_zone_form;
-  name : label;
-END_ENTITY;
-
-ENTITY tolerance_zone_with_datum
-  SUPERTYPE OF (ONEOF(directed_tolerance_zone, oriented_tolerance_zone))
-  SUBTYPE OF (tolerance_zone);
-  datum_reference : datum_system;
-END_ENTITY;
-
-ENTITY topological_representation_item
-  SUPERTYPE OF (ONEOF(vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set,
-                      connected_volume_set, volume_with_faces, (loop ANDOR path)))
-  SUBTYPE OF (representation_item);
-DERIVE
-  permanent_id           : identifier := get_id_value(SELF);
-  permanent_aggregate_id : identifier := get_aggregate_id_value(SELF);
-WHERE
-  WR1: SIZEOF(USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
-  WR2: SIZEOF(USEDIN(SELF,
-                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGGREGATE_ID_ATTRIBUTE.IDENTIFIED_ITEM')) <=
-       1;
-END_ENTITY;
-
-ENTITY topology_related_to_multiply_defined_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(multiply_defined_faces, multiply_defined_vertices, multiply_defined_edges))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY topology_related_to_nearly_degenerate_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(short_length_edge, small_area_face, entirely_narrow_face))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY topology_related_to_overlapping_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(partly_overlapping_faces, partly_overlapping_edges))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY topology_related_to_self_intersecting_geometry
-  ABSTRACT SUPERTYPE OF (ONEOF(self_intersecting_loop, self_intersecting_shell, intersecting_connected_face_sets))
-  SUBTYPE OF (inapt_topology_and_geometry_relationship);
-END_ENTITY;
-
-ENTITY toroidal_surface
-  SUBTYPE OF (elementary_surface);
-  major_radius : positive_length_measure;
-  minor_radius : positive_length_measure;
-END_ENTITY;
-
-ENTITY toroidal_volume
-  SUBTYPE OF (volume);
-  position     : axis2_placement_3d;
-  major_radius : positive_length_measure;
-  minor_radius : positive_length_measure;
-WHERE
-  WR1: minor_radius < major_radius;
-END_ENTITY;
-
-ENTITY torus
-  SUBTYPE OF (geometric_representation_item);
-  position     : axis1_placement;
-  major_radius : positive_length_measure;
-  minor_radius : positive_length_measure;
-WHERE
-  WR1: major_radius > minor_radius;
-END_ENTITY;
-
-ENTITY total_runout_tolerance
-  SUBTYPE OF (geometric_tolerance_with_datum_reference);
-END_ENTITY;
-
-ENTITY track_blended_solid
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (edge_blended_solid);
-WHERE
-  WR1: check_continuous_edges(SELF\edge_blended_solid.blended_edges);
-END_ENTITY;
-
-ENTITY track_blended_solid_with_end_conditions
-  SUBTYPE OF (track_blended_solid);
-  end_conditions : LIST [2 : 2] OF blend_end_condition_select;
-WHERE
-  WR1: SIZEOF(TYPEOF(SELF) *
-              ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) =
-       1;
-  WR2: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) AND
-            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])));
-  WR3: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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))));
-  WR4: NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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))));
-END_ENTITY;
-
-ENTITY transformation_with_derived_angle
-  SUPERTYPE OF (ONEOF(draped_defined_transformation, laid_defined_transformation))
-  SUBTYPE OF (item_defined_transformation);
-  SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select;
-  SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
-DERIVE
-  orientation_angle : plane_angle_measure := derive_angle(SELF\item_defined_transformation.transform_item_1,
-                                                          SELF\item_defined_transformation.transform_item_2);
-WHERE
-  WR1: (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]);
-END_ENTITY;
-
-ENTITY transition_feature
-  SUPERTYPE OF (ONEOF(chamfer, edge_round, fillet))
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_FEATURE'] *
-              TYPEOF(SELF.of_shape.definition)) =
-       1;
-  WR2: SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_ROUND',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILLET'] *
-              TYPEOF(SELF)) =
-       1;
-END_ENTITY;
-
-ENTITY transport_feature
-  SUBTYPE OF (shape_aspect);
-END_ENTITY;
-
-ENTITY triangular_matrix
-  SUBTYPE OF (linearized_table_function);
-  default_entry : maths_value;
-  lo_up         : lower_upper;
-  order         : ordering_type;
-WHERE
-  WR1: SIZEOF(SELF\explicit_table_function.shape) = 2;
-  WR2: member_of(default_entry, SELF\maths_function.range);
-END_ENTITY;
-
-ENTITY triangulated_face
-  SUBTYPE OF (tessellated_face);
-  pnindex   : LIST [0 : ?] OF INTEGER;
-  triangles : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
-WHERE
-  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_face.pnmax));
-  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_face.pnmax <> coordinates.npoints));
-END_ENTITY;
-
-ENTITY triangulated_point_cloud_dataset
-  SUBTYPE OF (scanned_data_item);
-  points    : point_cloud_set_or_superset;
-  triangles : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
-END_ENTITY;
-
-ENTITY triangulated_surface_set
-  SUBTYPE OF (tessellated_surface_set);
-  pnindex   : LIST [0 : ?] OF INTEGER;
-  triangles : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
-WHERE
-  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\tessellated_surface_set.pnmax));
-  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\tessellated_surface_set.pnmax <> coordinates.npoints));
-END_ENTITY;
-
-ENTITY trimmed_curve
-  SUBTYPE OF (bounded_curve);
-  basis_curve           : curve;
-  trim_1                : SET [1 : 2] OF trimming_select;
-  trim_2                : SET [1 : 2] OF trimming_select;
-  sense_agreement       : BOOLEAN;
-  master_representation : trimming_preference;
-WHERE
-  WR1: (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
-  WR2: (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
-END_ENTITY;
-
-ENTITY turned_knurl
-  SUBTYPE OF (feature_definition);
-WHERE
-  WR1: (SELF\characterized_object.description IN ['diamond','diagonal','straight']);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                      TYPEOF(pdr.used_representation)) AND
-                                     ({6 <= SIZEOF(pdr.used_representation.items) <= 9}))) =
-                      1)) =
-       1;
-  WR3: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                   TYPEOF(it)) AND
-                                                                  ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-                                                                   TYPEOF(it\measure_with_unit.value_component)) AND
-                                                                  (it.name = 'number of teeth')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR4: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'major diameter')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR5: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'nominal diameter')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR6: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'tooth depth')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR7: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'root fillet')))) <=
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR8: (SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | (NOT (SIZEOF(QUERY(impl_rep
-                                          <* QUERY(pdr
-                                                   <* USEDIN(pd,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                   | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                      TYPEOF(pdr.used_representation)))
-                                          | (NOT (SIZEOF(QUERY(it
-                                                               <* impl_rep.used_representation.items
-                                                               | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                          TYPEOF(it)) =
-                                                                   2) AND
-                                                                  (it.name = 'diametral pitch')))) =
-                                                  1)))) =
-                             0)))) =
-        0);
-  WR9: ((NOT (SELF\characterized_object.description IN ['diamond','diagonal'])) OR
-        (SIZEOF(QUERY(pd
-                      <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                      | (NOT (SIZEOF(QUERY(impl_rep
-                                           <* QUERY(pdr
-                                                    <* USEDIN(pd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                       TYPEOF(pdr.used_representation)))
-                                           | (NOT (SIZEOF(QUERY(it
-                                                                <* impl_rep.used_representation.items
-                                                                | ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                           TYPEOF(it)) =
-                                                                    2) AND
-                                                                   (it.name = 'helix angle')))) =
-                                                   1)))) =
-                              0)))) =
-         0));
-  WR10: ((NOT (SELF\characterized_object.description = 'diagonal')) OR
-         (SIZEOF(QUERY(pd
-                       <* USEDIN(SELF,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                       | (NOT (SIZEOF(QUERY(impl_rep
-                                            <* QUERY(pdr
-                                                     <* USEDIN(pd,
-                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                     | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN
-                                                        TYPEOF(pdr.used_representation)))
-                                            | (NOT (SIZEOF(QUERY(it
-                                                                 <* impl_rep.used_representation.items
-                                                                 | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                                                     TYPEOF(it)) AND
-                                                                    (it.name = 'helix hand')))) =
-                                                    1)))) =
-                               0)))) =
-          0));
-  WR11: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((sa_occ.description = 'partial area occurrence') AND
-                                              (SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'applied area usage') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_AREA' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) =
-                                               1)))) =
-                              1)))) =
-         0);
-  WR12: (SIZEOF(QUERY(pds
-                      <* QUERY(pd
-                               <* USEDIN(SELF,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                               | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                                  TYPEOF(pd)))
-                      | (NOT (SIZEOF(QUERY(sa_occ
-                                           <* USEDIN(pds,
-                                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE')
-                                           | ((SIZEOF(QUERY(sdr
-                                                            <* QUERY(sar
-                                                                     <* USEDIN(sa_occ,
-                                                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')
-                                                                     | ((sar.description = 'applied shape') AND
-                                                                        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP') IN
-                                                                         TYPEOF(sar))))
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-                                                               TYPEOF(sdr.relating_shape_aspect)))) =
-                                               1)))) =
-                              1)))) =
-         0);
-END_ENTITY;
-
-ENTITY twisted_cross_sectional_group_shape_element
-  SUBTYPE OF (cross_sectional_group_shape_element);
-END_ENTITY;
-
-ENTITY two_direction_repeat_factor
-  SUBTYPE OF (one_direction_repeat_factor);
-  second_repeat_factor : vector;
-END_ENTITY;
-
-ENTITY type_qualifier;
-  name : label;
-END_ENTITY;
-
-ENTITY unary_boolean_expression
-  ABSTRACT SUPERTYPE OF (ONEOF(not_expression, odd_function))
-  SUBTYPE OF (boolean_expression, unary_generic_expression);
-END_ENTITY;
-
-ENTITY unary_function_call
-  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))
-  SUBTYPE OF (unary_numeric_expression);
-END_ENTITY;
-
-ENTITY unary_generic_expression
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (generic_expression);
-  operand : generic_expression;
-END_ENTITY;
-
-ENTITY unary_numeric_expression
-  ABSTRACT SUPERTYPE
-  SUBTYPE OF (numeric_expression, unary_generic_expression);
-  SELF\unary_generic_expression.operand : numeric_expression;
-END_ENTITY;
-
-ENTITY unbound_parameter_environment
-  SUBTYPE OF (environment);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN
-        TYPEOF(SELF\environment.syntactic_representation)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER_SEMANTICS' IN
-        TYPEOF(SELF\environment.semantics));
-END_ENTITY;
-
-ENTITY unbound_variational_parameter
-  SUBTYPE OF (variational_parameter);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_PARAMETER_ENVIRONMENT' IN
-       TYPEOF(SELF\generic_variable.interpretation);
-END_ENTITY;
-
-ENTITY unbound_variational_parameter_semantics
-  SUBTYPE OF (variable_semantics);
-END_ENTITY;
-
-ENTITY uncertainty_assigned_representation
-  SUBTYPE OF (representation);
-  uncertainty : SET [1 : ?] OF uncertainty_measure_with_unit;
-END_ENTITY;
-
-ENTITY uncertainty_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-  name        : label;
-  description : OPTIONAL text;
-WHERE
-  WR1: valid_measure_value(SELF\measure_with_unit.value_component);
-END_ENTITY;
-
-ENTITY uncertainty_qualifier
-  SUPERTYPE OF (ONEOF(standard_uncertainty, qualitative_uncertainty));
-  measure_name : label;
-  description  : text;
-END_ENTITY;
-
-ENTITY unconstrained_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN := true;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN := true;
-END_ENTITY;
-
-ENTITY unconstrained_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : unconstrained_pair;
-  actual_placement                : axis2_placement_3d;
-END_ENTITY;
-
-ENTITY unequally_disposed_geometric_tolerance
-  SUBTYPE OF (geometric_tolerance);
-  displacement : length_measure_with_unit;
-WHERE
-  WR1: 'NUMBER' IN TYPEOF(displacement\measure_with_unit.value_component);
-END_ENTITY;
-
-ENTITY uniform_curve
-  SUBTYPE OF (b_spline_curve);
-END_ENTITY;
-
-ENTITY uniform_product_space
-  SUBTYPE OF (maths_space, generic_literal);
-  base     : maths_space;
-  exponent : positive_integer;
-WHERE
-  WR1: expression_is_constant(base);
-  WR2: no_cyclic_space_reference(SELF, []);
-  WR3: base <> the_empty_space;
-END_ENTITY;
-
-ENTITY uniform_resource_identifier
-  SUBTYPE OF (descriptive_representation_item);
-END_ENTITY;
-
-ENTITY uniform_surface
-  SUBTYPE OF (b_spline_surface);
-END_ENTITY;
-
-ENTITY uniform_volume
-  SUBTYPE OF (b_spline_volume);
-END_ENTITY;
-
-ENTITY universal_pair
-  SUBTYPE OF (low_order_kinematic_pair);
-  input_skew_angle : OPTIONAL plane_angle_measure;
-DERIVE
-  SELF\low_order_kinematic_pair.t_x : BOOLEAN             := false;
-  SELF\low_order_kinematic_pair.t_y : BOOLEAN             := false;
-  SELF\low_order_kinematic_pair.t_z : BOOLEAN             := false;
-  SELF\low_order_kinematic_pair.r_x : BOOLEAN             := true;
-  SELF\low_order_kinematic_pair.r_y : BOOLEAN             := false;
-  SELF\low_order_kinematic_pair.r_z : BOOLEAN             := true;
-  skew_angle                        : plane_angle_measure := NVL(input_skew_angle, 0.0);
-WHERE
-  WR1: COS(plane_angle_for_pair_in_radian(SELF, skew_angle)) > 0.0;
-END_ENTITY;
-
-ENTITY universal_pair_value
-  SUBTYPE OF (pair_value);
-  SELF\pair_value.applies_to_pair : universal_pair;
-  first_rotation_angle            : plane_angle_measure;
-  second_rotation_angle           : plane_angle_measure;
-END_ENTITY;
-
-ENTITY universal_pair_with_range
-  SUBTYPE OF (universal_pair);
-  lower_limit_first_rotation  : OPTIONAL plane_angle_measure;
-  upper_limit_first_rotation  : OPTIONAL plane_angle_measure;
-  lower_limit_second_rotation : OPTIONAL plane_angle_measure;
-  upper_limit_second_rotation : OPTIONAL plane_angle_measure;
-WHERE
-  WR1: (NOT EXISTS(lower_limit_first_rotation) OR NOT EXISTS(upper_limit_first_rotation)) XOR
-       (lower_limit_first_rotation < upper_limit_first_rotation);
-  WR2: (NOT EXISTS(lower_limit_second_rotation) OR NOT EXISTS(upper_limit_second_rotation)) XOR
-       (lower_limit_second_rotation < upper_limit_second_rotation);
-END_ENTITY;
-
-ENTITY unused_patches
-  SUBTYPE OF (overcomplex_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_STRIP']);
-  WR5: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY unused_shape_element
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
-END_ENTITY;
-
-ENTITY usage_association
-  SUBTYPE OF (action_method_relationship);
-  SELF\action_method_relationship.relating_method : information_usage_right;
-  SELF\action_method_relationship.related_method  : information_usage_right;
-DERIVE
-  related  : information_usage_right := SELF\action_method_relationship.related_method;
-  relating : information_usage_right := SELF\action_method_relationship.relating_method;
-END_ENTITY;
-
-ENTITY user_defined_11
-  SUBTYPE OF (representation_item);
-END_ENTITY;
-
-ENTITY user_defined_curve_font
-  SUBTYPE OF (curve_style_font, mapped_item);
-END_ENTITY;
-
-ENTITY user_defined_marker
-  SUBTYPE OF (mapped_item, pre_defined_marker);
-END_ENTITY;
-
-ENTITY user_defined_terminator_symbol
-  SUBTYPE OF (mapped_item, pre_defined_symbol);
-END_ENTITY;
-
-ENTITY user_selected_elements
-  SUBTYPE OF (representation_item);
-  picked_items : SET [1 : ?] OF representation_item;
-END_ENTITY;
-
-ENTITY user_selected_shape_elements
-  SUBTYPE OF (user_selected_elements);
-  SELF\user_selected_elements.picked_items : SET [1 : ?] OF shape_representation_item;
-END_ENTITY;
-
-ENTITY validation
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY validation_software_identification;
-  id                             : identifier;
-  name                           : label;
-  description                    : OPTIONAL text;
-  software_name                  : label;
-  additional_name                : label;
-  validation_criteria_or_results : validation_criteria_or_results_select;
-END_ENTITY;
-
-ENTITY value_format_type_qualifier;
-  format_type : value_format_type;
-END_ENTITY;
-
-ENTITY value_function
-  SUPERTYPE OF (int_value_function)
-  SUBTYPE OF (numeric_expression, unary_generic_expression);
-  SELF\unary_generic_expression.operand : string_expression;
-END_ENTITY;
-
-ENTITY value_range
-  SUBTYPE OF (compound_representation_item);
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SET_REPRESENTATION_ITEM' IN TYPEOF(item_element)) AND
-       value_range_wr1(item_element);
-  WR2: value_range_wr2(item_element);
-  WR3: value_range_wr3(item_element);
-END_ENTITY;
-
-ENTITY value_representation_item
-  SUBTYPE OF (representation_item);
-  value_component : measure_value;
-WHERE
-  WR1: SIZEOF(QUERY(rep
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
-                           TYPEOF(rep.context_of_items)))) =
-       0;
-END_ENTITY;
-
-ENTITY variable
-  ABSTRACT SUPERTYPE OF (ONEOF(numeric_variable, boolean_variable, string_variable))
-  SUBTYPE OF (generic_variable);
-END_ENTITY;
-
-ENTITY variable_expression
-  SUBTYPE OF (variable_semantics);
-  property_associated : property_variable_rep_select;
-END_ENTITY;
-
-ENTITY variable_semantics
-  ABSTRACT SUPERTYPE;
-END_ENTITY;
-
-ENTITY variational_current_representation_relationship
-  SUBTYPE OF (representation_relationship);
-  SELF\representation_relationship.rep_1 : variational_representation;
-  current_result                         : representation;
-UNIQUE
-  UR1: current_result;
-WHERE
-  WR1: QUERY(q
-             <* SELF\representation_relationship.rep_1.items
-             | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN TYPEOF(q))) =
-       SELF\representation_relationship.rep_2.items;
-  WR2: SELF\representation_relationship.rep_1.context_of_items :=:
-       SELF\representation_relationship.rep_2.context_of_items;
-  WR3: SIZEOF(QUERY(q
-                    <* SELF\representation_relationship.rep_2.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN
-                      TYPEOF(q))) =
-       0;
-  WR4: TYPEOF(SELF\representation_relationship.rep_1) - TYPEOF(SELF\representation_relationship.rep_2) =
-       ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION'];
-  WR5: current_result :=: SELF\representation_relationship.rep_2;
-END_ENTITY;
-
-ENTITY variational_parameter
-  ABSTRACT SUPERTYPE OF (ONEOF(bound_variational_parameter, unbound_variational_parameter))
-  SUBTYPE OF (variational_representation_item, maths_variable);
-  parameter_description   : OPTIONAL text;
-  parameter_current_value : maths_value;
-WHERE
-  WR1: member_of(parameter_current_value, SELF\maths_variable.values_space);
-  WR2: SELF\maths_variable.name = SELF\representation_item.name;
-END_ENTITY;
-
-ENTITY variational_representation
-  SUBTYPE OF (representation);
-INVERSE
-  cm_link : variational_current_representation_relationship FOR rep_1;
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* SELF\representation.items
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM' IN
-                      TYPEOF(q))) >
-       0;
-  WR2: SIZEOF(QUERY(q <* (SELF\representation.items - cm_link.rep_2.items) | invalidate_vrep_item(q))) = 0;
-END_ENTITY;
-
-ENTITY variational_representation_item
-  ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item)
-  SUBTYPE OF (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(q
-                    <* using_representations(SELF)
-                    | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION' IN
-                           TYPEOF(q)))) =
-       0;
-  WR2: SIZEOF(QUERY(q <* using_representations(SELF) | NOT (SELF IN q.items))) = 0;
-END_ENTITY;
-
-ENTITY vector
-  SUBTYPE OF (geometric_representation_item);
-  orientation : direction;
-  magnitude   : length_measure;
-WHERE
-  WR1: magnitude >= 0.0;
-END_ENTITY;
-
-ENTITY vector_style
-  SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
-END_ENTITY;
-
-ENTITY vee_profile
-  SUBTYPE OF (shape_aspect);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN
-       TYPEOF(SELF.of_shape.definition);
-  WR2: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                          TYPEOF(pdr.used_representation))) =
-                           1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR4: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | SIZEOF(QUERY(pdr
-                                   <* USEDIN(pd,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR5: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN
-                                                               TYPEOF(it)) AND
-                                                              (it.name = 'orientation'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                               TYPEOF(it)) AND
-                                                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                                                               TYPEOF(it\measure_with_unit.value_component)) AND
-                                                              (it.name = 'profile radius'))) <=
-                                               1))) =
-                           0))) =
-       0;
-  WR7: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'profile angle'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR8: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(impl_rep
-                                        <* QUERY(pdr
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                   TYPEOF(pdr.used_representation))
-                                        | NOT (SIZEOF(QUERY(it
-                                                            <* impl_rep.used_representation.items
-                                                            | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
-                                                                      TYPEOF(it)) =
-                                                               2) AND
-                                                              (it.name = 'tilt angle'))) =
-                                               1))) =
-                           0))) =
-       0;
-  WR9: SIZEOF(QUERY(pd
-                    <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                    | NOT (SIZEOF(QUERY(pdr
-                                        <* USEDIN(pd,
-                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                        | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN
-                                           TYPEOF(pdr.used_representation)) AND
-                                          (pdr.used_representation.name = 'profile limit'))) <=
-                           1))) =
-       0;
-  WR10: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                TYPEOF(it)) AND
-                                                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                                                                TYPEOF(it\measure_with_unit.value_component)) AND
-                                                               (it.name = 'first length'))) <=
-                                                1))) =
-                            0))) =
-        0;
-  WR11: SIZEOF(QUERY(pd
-                     <* USEDIN(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                     | NOT (SIZEOF(QUERY(impl_rep
-                                         <* QUERY(pdr
-                                                  <* USEDIN(pd,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                                    TYPEOF(pdr.used_representation))
-                                         | NOT (SIZEOF(QUERY(it
-                                                             <* impl_rep.used_representation.items
-                                                             | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                TYPEOF(it)) AND
-                                                               ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' IN
-                                                                TYPEOF(it\measure_with_unit.value_component)) AND
-                                                               (it.name = 'second length'))) <=
-                                                1))) =
-                            0))) =
-        0;
-END_ENTITY;
-
-ENTITY velocity_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VELOCITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY velocity_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0);
-END_ENTITY;
-
-ENTITY verification
-  SUBTYPE OF (group);
-END_ENTITY;
-
-ENTITY verification_relationship
-  SUBTYPE OF (group_relationship);
-  SELF\group_relationship.relating_group : verification;
-  SELF\group_relationship.related_group  : verification;
-END_ENTITY;
-
-ENTITY versioned_action_request;
-  id          : identifier;
-  version     : OPTIONAL label;
-  purpose     : text;
-  description : OPTIONAL text;
-END_ENTITY;
-
-ENTITY versioned_action_request_relationship;
-  id                                : identifier;
-  name                              : label;
-  description                       : OPTIONAL text;
-  relating_versioned_action_request : versioned_action_request;
-  related_versioned_action_request  : versioned_action_request;
-END_ENTITY;
-
-ENTITY vertex
-  SUBTYPE OF (topological_representation_item);
-END_ENTITY;
-
-ENTITY vertex_loop
-  SUBTYPE OF (loop);
-  loop_vertex : vertex;
-END_ENTITY;
-
-ENTITY vertex_on_edge
-  SUBTYPE OF (vertex);
-  parent_edge         : edge_with_length;
-  distance_from_start : positive_length_measure;
-WHERE
-  WR1: distance_from_start < parent_edge.edge_length;
-END_ENTITY;
-
-ENTITY vertex_point
-  SUBTYPE OF (vertex, geometric_representation_item);
-  vertex_geometry : point;
-END_ENTITY;
-
-ENTITY vertex_shell
-  SUBTYPE OF (topological_representation_item);
-  vertex_shell_extent : vertex_loop;
-END_ENTITY;
-
-ENTITY view_volume
-  SUBTYPE OF (founded_item);
-  projection_type            : central_or_parallel;
-  projection_point           : cartesian_point;
-  view_plane_distance        : length_measure;
-  front_plane_distance       : length_measure;
-  front_plane_clipping       : BOOLEAN;
-  back_plane_distance        : length_measure;
-  back_plane_clipping        : BOOLEAN;
-  view_volume_sides_clipping : BOOLEAN;
-  view_window                : planar_box;
-INVERSE
-  camera_usages : SET [1:?] OF camera_model_d3 FOR perspective_of_volume;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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])),
-                    view_window\planar_box.placement\axis2_placement_3d.p[3]) =
-        1.0);
-  WR2: view_plane_distance = view_window.placement\placement.location.coordinates[3];
-END_ENTITY;
-
-ENTITY visual_appearance_representation
-  SUBTYPE OF (representation);
-WHERE
-  WR1: ({3 <= SIZEOF(SELF.items) <= 9}) AND
-       (SIZEOF(QUERY(i
-                     <* items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                        TYPEOF(i)) AND
-                       (i.name IN ['colour id','colour name','lustre','pattern','transparency','orientation']))) +
-        SIZEOF(QUERY(i
-                     <* items
-                     | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                               TYPEOF(i)) =
-                        1) AND
-                       (i.name IN ['refraction index','opacity']))) +
-        SIZEOF(QUERY(i
-                     <* items
-                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_FILE' IN TYPEOF(i)) AND
-                       (i.name IN ['texture map']))) =
-        SIZEOF(SELF.items));
-  WR2: SIZEOF(QUERY(i <* SELF.items | i.name = 'colour id')) = 1;
-  WR3: SIZEOF(QUERY(i <* SELF.items | i.name = 'lustre')) = 1;
-  WR4: SIZEOF(QUERY(i <* SELF.items | i.name = 'colour name')) <= 1;
-  WR5: SIZEOF(QUERY(i <* SELF.items | i.name = 'pattern')) <= 1;
-  WR6: SIZEOF(QUERY(i <* SELF.items | i.name = 'transparency')) <= 1;
-  WR7: SIZEOF(QUERY(i <* SELF.items | i.name = 'texture map')) <= 1;
-  WR8: SIZEOF(QUERY(i <* SELF.items | i.name = 'refraction index')) <= 1;
-  WR9: SIZEOF(QUERY(i <* SELF.items | i.name = 'opacity')) <= 1;
-  WR10: SIZEOF(QUERY(i <* SELF.items | i.name = 'orientation')) <= 1;
-  WR11: (SIZEOF(USEDIN(SELF,
-                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) =
-         1) AND
-        (SIZEOF(QUERY(pdr
-                      <* USEDIN(SELF,
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                      | SIZEOF(QUERY(gpa
-                                     <* USEDIN(pdr.definition,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY' IN
-                                        TYPEOF(gpa.base_definition)) AND
-                                       (gpa\general_property_association.base_definition\general_property.name =
-                                        'surface_condition'))) =
-                        1)) =
-         1);
-END_ENTITY;
-
-ENTITY volume
-  SUPERTYPE OF (ONEOF(block_volume, wedge_volume, spherical_volume, cylindrical_volume, eccentric_conical_volume,
-                      toroidal_volume, pyramid_volume, b_spline_volume, ellipsoid_volume, tetrahedron_volume,
-                      hexahedron_volume, locally_refined_spline_volume))
-  SUBTYPE OF (geometric_representation_item);
-WHERE
-  WR1: SELF\geometric_representation_item.dim = 3;
-END_ENTITY;
-
-ENTITY volume_measure_with_unit
-  SUBTYPE OF (measure_with_unit);
-WHERE
-  WR1: 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
-END_ENTITY;
-
-ENTITY volume_unit
-  SUBTYPE OF (derived_unit);
-WHERE
-  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-END_ENTITY;
-
-ENTITY volume_with_faces
-  ABSTRACT SUPERTYPE OF (ONEOF(volume_with_shell, volume_with_parametric_boundary))
-  SUBTYPE OF (geometric_representation_item, topological_representation_item);
-  volume_geometry : volume;
-END_ENTITY;
-
-ENTITY volume_with_parametric_boundary
-  SUBTYPE OF (volume_with_faces);
-  outer_bound : LIST [6 : 6] OF face;
-END_ENTITY;
-
-ENTITY volume_with_shell
-  SUBTYPE OF (volume_with_faces);
-  outer_bound : closed_shell;
-END_ENTITY;
-
-ENTITY wedge_volume
-  SUBTYPE OF (volume);
-  position : axis2_placement_3d;
-  x        : positive_length_measure;
-  y        : positive_length_measure;
-  z        : positive_length_measure;
-  ltx      : length_measure;
-WHERE
-  WR1: ((0.0 <= ltx) AND (ltx < x));
-END_ENTITY;
-
-ENTITY week_of_year_and_day_date
-  SUBTYPE OF (date);
-  week_component : week_in_year_number;
-  day_component  : OPTIONAL day_in_week_number;
-WHERE
-  WR1: NOT (leap_year(SELF\date.year_component)) OR {1 <= (day_component + (7 * (week_component - 1))) <= 366};
-  WR2: leap_year(SELF\date.year_component) OR {1 <= (day_component + (7 * (week_component - 1))) <= 365};
-END_ENTITY;
-
-ENTITY wire_shell
-  SUBTYPE OF (topological_representation_item);
-  wire_shell_extent : SET [1 : ?] OF loop;
-WHERE
-  WR1: NOT mixed_loop_type_set(wire_shell_extent);
-END_ENTITY;
-
-ENTITY wrong_element_name
-  SUBTYPE OF (externally_conditioned_data_quality_criterion);
-WHERE
-  WR1: validate_ecdq_inspected_elements_type(SELF,
-                                             ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM']);
-END_ENTITY;
-
-ENTITY wrongly_oriented_void
-  SUBTYPE OF (erroneous_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY wrongly_placed_loop
-  SUBTYPE OF (erroneous_topology_and_geometry_relationship);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE']);
-  WR3: validate_locations_of_extreme_value_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND']);
-  WR4: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE']);
-END_ENTITY;
-
-ENTITY wrongly_placed_void
-  SUBTYPE OF (erroneous_manifold_solid_brep);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
-WHERE
-  WR1: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE');
-  WR2: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS']);
-  WR3: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL']);
-  WR4: validate_accuracy_types(SELF, []);
-END_ENTITY;
-
-ENTITY xor_expression
-  SUBTYPE OF (binary_boolean_expression);
-  SELF\binary_generic_expression.operands : LIST [2 : 2] OF boolean_expression;
-END_ENTITY;
-
-ENTITY year_month
-  SUBTYPE OF (date);
-  month_component : month_in_year_number;
-END_ENTITY;
-
-ENTITY zero_surface_normal
-  SUBTYPE OF (geometry_with_local_irregularity);
-  SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
-WHERE
-  WR1: ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' IN
-        TYPEOF(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold)) AND
-       ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN
-        value_limit_type(SELF\shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold));
-  WR2: validate_measured_data_type(SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE');
-  WR3: validate_inspected_elements_type(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE']);
-  WR4: validate_locations_of_extreme_value_type(SELF,
-                                                ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE']);
-  WR5: validate_accuracy_types(SELF, ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE']);
-END_ENTITY;
-
-ENTITY zone_breakdown_context
-  SUBTYPE OF (breakdown_context);
-END_ENTITY;
-
-ENTITY zone_element_usage
-  SUBTYPE OF (breakdown_element_usage);
-END_ENTITY;
-
-FUNCTION a3ma_get_accuracy_types(ei : SET [0 : ?] OF a3m_equivalence_accuracy_association) : SET [0 : ?] OF a3ma_accuracy_type_name;
-LOCAL
-  type_out : a3ma_measured_data_type_name;
-  retval   : SET OF a3ma_accuracy_type_name := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(ei);
-    type_out := a3ma_get_value_limit_type(ei[i].specific_accuracy.range);
-    retval := retval + [atna_others];
-  END_REPEAT;
-  RETURN(retval);
-END_FUNCTION;
-
-FUNCTION a3ma_get_detected_difference_type(ei : LIST [0 : ?] OF equivalence_detected_difference_select) : a3ma_detected_difference_type_name;
-LOCAL
-  type_out : SET OF STRING;
-  sizeei   : INTEGER;
-END_LOCAL;
-  sizeei := SIZEOF(ei);
-  IF (sizeei = 0)
-  THEN
-    RETURN(ddna_no_element);
-  END_IF;
-  type_out := TYPEOF(ei[1]);
-  IF (SIZEOF(ei) > 1)
-  THEN
-    RETURN(ddna_others);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN type_out)
-  THEN
-    RETURN(ddna_assembly_component_usage);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_ASSEMBLY_CONSTRAINT' IN type_out)
-  THEN
-    RETURN(ddna_binary_assembly_constraint);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN type_out)
-  THEN
-    RETURN(ddna_cartesian_point);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN type_out)
-  THEN
-    RETURN(ddna_context_dependent_shape_representation);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
-  THEN
-    RETURN(ddna_count_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTI_LEVEL_REFERENCE_DESIGNATOR' IN type_out)
-  THEN
-    RETURN(ddna_multi_level_reference_designator);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-  THEN
-    RETURN(ddna_volume_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MS_INSPECTED_EQUIVALENCE_ELEMENT_SELECT' IN type_out)
-  THEN
-    RETURN(ddna_a3ms_inspected_equivalence_element_select);
-  END_IF;
-  RETURN(ddna_others);
-END_FUNCTION;
-
-FUNCTION a3ma_get_element_type(ei : SET [1 : ?] OF inspected_equivalence_element_select) : a3ma_element_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := TYPEOF(ei[1]);
-  IF (SIZEOF(ei) > 1)
-  THEN
-    RETURN(etna_others);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OR_REFERENCE' IN type_out)
-  THEN
-    RETURN(etna_product_definition_or_reference);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN type_out)
-  THEN
-    RETURN(etna_shape_representation);
-  END_IF;
-  RETURN(etna_others);
-END_FUNCTION;
-
-FUNCTION a3ma_get_measured_type(ei : equivalence_measured_value_select) : a3ma_measured_data_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := TYPEOF(ei);
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
-  THEN
-    RETURN(mdna_boolean_value);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_context_dependent_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_length_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3MA_LENGTH_MEASURE_AND_CONTEXT_DEPENDENT_MEASURE_PAIR' IN
-      type_out)
-  THEN
-    RETURN(mdna_length_measure_and_context_dependent_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_plane_angle_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_volume_measure);
-  END_IF;
-  RETURN(mdna_others);
-END_FUNCTION;
-
-FUNCTION a3ma_get_value_limit_type(ei : shape_data_quality_value_limit_type_select) : a3ma_measured_data_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := value_limit_type(ei);
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_context_dependent_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_length_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_plane_angle_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-  THEN
-    RETURN(mdna_volume_measure);
-  END_IF;
-  RETURN(mdna_others);
-END_FUNCTION;
-
-FUNCTION a3ma_validate_accuracy_types(ei : accuracy_associated_target_select;
-                                      cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
-LOCAL
-  aeaa : SET OF a3m_equivalence_accuracy_association;
-  rp   : SET OF representation;
-  tp   : SET OF a3ma_accuracy_type_name              := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(cr.accuracy_types);
-    tp := tp + [cr.accuracy_types[i]];
-  END_REPEAT;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(ei))
-  THEN
-    aeaa := bag_to_set(USEDIN(ei,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
-    IF (SIZEOF(cr.accuracy_types) = 0)
-    THEN
-      IF (SIZEOF(aeaa) = 0)
-      THEN
-        RETURN(true);
-      ELSE
-        RETURN(false);
-      END_IF;
-    END_IF;
-    IF (a3ma_get_accuracy_types(aeaa) = tp)
-    THEN
-      RETURN(true);
-    END_IF;
-    rp := bag_to_set(USEDIN(ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'));
-  ELSE
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' IN TYPEOF(ei))
-    THEN
-      rp := [ei];
-    ELSE
-      rp := [];
-    END_IF;
-  END_IF;
-  aeaa := [];
-  REPEAT i := 1 TO SIZEOF(rp);
-    aeaa := aeaa +
-            bag_to_set(USEDIN(rp[i],
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
-  END_REPEAT;
-  IF (a3ma_get_accuracy_types(aeaa) >= tp)
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION a3ma_validate_detected_difference_types(ei : data_equivalence_inspection_report;
-                                                 cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
-LOCAL
-  deiir   : data_equivalence_inspection_instance_report;
-  eiriwei : equivalence_instance_report_item_with_notable_instances;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        eiriwei := deiir.inspected_instances[i];
-        REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
-          IF (NOT (a3ma_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements) IN
-                   cr.detected_difference_types))
-          THEN
-            RETURN(false);
-          END_IF;
-          IF (NOT (a3ma_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
-                   cr.detected_difference_types))
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION a3ma_validate_element_types(ei : data_equivalence_inspection_report;
-                                     cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
-LOCAL
-  compared_et  : a3ma_element_type_name;
-  comparing_et : a3ma_element_type_name;
-  deiir        : data_equivalence_inspection_instance_report;
-  aeiiri       : a3m_equivalence_inspection_instance_report_item;
-  deiep        : data_equivalence_inspected_element_pair;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        aeiiri := deiir.inspected_instances[i];
-        deiep := aeiiri.inspected_element;
-        compared_et := a3ma_get_element_type(deiep.compared_elements);
-        comparing_et := a3ma_get_element_type(deiep.comparing_elements);
-        IF (NOT (compared_et IN cr.compared_element_types) OR NOT (comparing_et IN cr.comparing_element_types))
-        THEN
-          RETURN(false);
-        END_IF;
-        IF (compared_et <> comparing_et)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION a3ma_validate_measured_type(ei : data_equivalence_inspection_report;
-                                     cr : a3m_equivalence_criterion_for_assembly) : LOGICAL;
-LOCAL
-  amdtn   : a3ma_measured_data_type_name;
-  deicr   : data_equivalence_inspection_criterion_report;
-  acriwmv : a3m_equivalence_criterion_report_item_with_measured_value;
-  deiir   : data_equivalence_inspection_instance_report;
-  aeiiri  : a3m_equivalence_inspection_instance_report_item;
-  eiriwei : equivalence_instance_report_item_with_notable_instances;
-END_LOCAL;
-  amdtn := cr.measured_data_type;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_CRITERION_REPORT' IN TYPEOF(ei))
-  THEN
-    deicr := ei;
-    REPEAT i := 1 TO SIZEOF(deicr.statistical_values);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION_REPORT_ITEM_WITH_MEASURED_VALUE' IN
-          TYPEOF(deicr.statistical_values[i]))
-      THEN
-        acriwmv := deicr.statistical_values[i];
-        IF (a3ma_get_measured_type(acriwmv.representative_measured_value) <> amdtn)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        aeiiri := deiir.inspected_instances[i];
-        IF (a3ma_get_measured_type(aeiiri.measured_value_for_inspected_element) <> amdtn)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        eiriwei := deiir.inspected_instances[i];
-        REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
-          IF (a3ma_get_measured_type(eiriwei.notable_instances[j].measured_value) <> amdtn)
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION a3ms_get_accuracy_types(ei : SET [0 : ?] OF a3m_equivalence_accuracy_association) : SET [0 : ?] OF a3ms_accuracy_type_name;
-LOCAL
-  type_out : a3ms_measured_data_type_name;
-  retval   : SET OF a3ms_accuracy_type_name := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(ei);
-    type_out := a3ms_get_value_limit_type(ei[i].specific_accuracy.range);
-    IF (type_out = mdns_area_measure)
-    THEN
-      retval := retval + [atns_area_measure];
-    ELSE
-      IF (type_out = mdns_length_measure)
-      THEN
-        retval := retval + [atns_length_measure];
-      ELSE
-        IF (type_out = mdns_plane_angle_measure)
-        THEN
-          retval := retval + [atns_plane_angle_measure];
-        ELSE
-          IF (type_out = mdns_volume_measure)
-          THEN
-            retval := retval + [atns_volume_measure];
-          ELSE
-            retval := retval + [atns_others];
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_REPEAT;
-  RETURN(retval);
-END_FUNCTION;
-
-FUNCTION a3ms_get_detected_difference_type(ei : LIST [0 : ?] OF equivalence_detected_difference_select) : a3ms_detected_difference_type_name;
-LOCAL
-  type_out : SET OF STRING;
-  sizeei   : INTEGER;
-END_LOCAL;
-  sizeei := SIZEOF(ei);
-  IF (sizeei = 0)
-  THEN
-    RETURN(ddns_no_element);
-  ELSE
-    type_out := TYPEOF(ei[1]);
-    REPEAT i := 2 TO sizeei;
-      IF (TYPEOF(ei[i]) <> type_out)
-      THEN
-        RETURN(ddns_others);
-      END_IF;
-    END_REPEAT;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_area_measure);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_cartesian_point);
-      ELSE
-        IF (sizeei = 2)
-        THEN
-          RETURN(ddns_two_cartesian_points);
-        ELSE
-          RETURN(ddns_others);
-        END_IF;
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_connected_face_set);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_count_measure);
-      ELSE
-        IF (sizeei = 2)
-        THEN
-          RETURN(ddns_two_count_measure);
-        ELSE
-          IF (sizeei = 3)
-          THEN
-            RETURN(ddns_three_count_measure);
-          ELSE
-            IF (sizeei = 4)
-            THEN
-              RETURN(ddns_four_count_measure);
-            ELSE
-              IF (sizeei = 5)
-              THEN
-                RETURN(ddns_five_count_measure);
-              ELSE
-                RETURN(ddns_others);
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_edge);
-      ELSE
-        RETURN(ddns_several_edges);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_face);
-      ELSE
-        RETURN(ddns_several_faces);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_length_measure);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_point_on_curve);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_point_on_surface);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-    THEN
-      IF (sizeei = 1)
-      THEN
-        RETURN(ddns_volume_measure);
-      ELSE
-        RETURN(ddns_others);
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(ddns_others);
-END_FUNCTION;
-
-FUNCTION a3ms_get_element_type(ei : SET [1 : ?] OF inspected_equivalence_element_select) : a3ms_element_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := TYPEOF(ei[1]);
-  IF (SIZEOF(ei) > 1)
-  THEN
-    RETURN(etns_others);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_EDGE_SET' IN type_out)
-  THEN
-    RETURN(etns_connected_edge_set);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' IN type_out)
-  THEN
-    RETURN(etns_connected_face_set);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' IN type_out)
-  THEN
-    RETURN(etns_manifold_solid_brep);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_CLOUD_DATASET' IN type_out)
-  THEN
-    RETURN(etns_point_cloud_dataset);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN type_out)
-  THEN
-    RETURN(etns_shell_based_surface_model);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN type_out)
-  THEN
-    RETURN(etns_shell_based_wireframe_model);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN type_out)
-  THEN
-    RETURN(etns_vertex_point);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_REPRESENTATION_ITEM' IN type_out)
-  THEN
-    RETURN(etns_external_representation_item);
-  END_IF;
-  RETURN(etns_others);
-END_FUNCTION;
-
-FUNCTION a3ms_get_measured_type(ei : equivalence_measured_value_select) : a3ms_measured_data_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := TYPEOF(ei);
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_area_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
-  THEN
-    RETURN(mdns_boolean_value);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_length_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_plane_angle_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_volume_measure);
-  END_IF;
-  RETURN(mdns_others);
-END_FUNCTION;
-
-FUNCTION a3ms_get_value_limit_type(ei : shape_data_quality_value_limit_type_select) : a3ms_measured_data_type_name;
-LOCAL
-  type_out : SET OF STRING;
-END_LOCAL;
-  type_out := value_limit_type(ei);
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_area_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' IN type_out)
-  THEN
-    RETURN(mdns_boolean_value);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_length_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_plane_angle_measure);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN type_out)
-  THEN
-    RETURN(mdns_volume_measure);
-  END_IF;
-  RETURN(mdns_others);
-END_FUNCTION;
-
-FUNCTION a3ms_validate_accuracy_types(ei : accuracy_associated_target_select;
-                                      cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
-LOCAL
-  aeaa : SET OF a3m_equivalence_accuracy_association;
-  rp   : SET OF representation;
-  tp   : SET OF a3ms_accuracy_type_name              := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(cr.accuracy_types);
-    tp := tp + [cr.accuracy_types[i]];
-  END_REPEAT;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(ei))
-  THEN
-    aeaa := bag_to_set(USEDIN(ei,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
-    IF (SIZEOF(cr.accuracy_types) = 0)
-    THEN
-      IF (SIZEOF(aeaa) = 0)
-      THEN
-        RETURN(true);
-      ELSE
-        RETURN(false);
-      END_IF;
-    END_IF;
-    IF (a3ms_get_accuracy_types(aeaa) = tp)
-    THEN
-      RETURN(true);
-    END_IF;
-    rp := bag_to_set(USEDIN(ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'));
-  ELSE
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' IN TYPEOF(ei))
-    THEN
-      rp := [ei];
-    ELSE
-      rp := [];
-    END_IF;
-  END_IF;
-  aeaa := [];
-  REPEAT i := 1 TO SIZEOF(rp);
-    aeaa := aeaa +
-            bag_to_set(USEDIN(rp[i],
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_ACCURACY_ASSOCIATION.EQUIVALENCE_TARGET'));
-  END_REPEAT;
-  IF (a3ms_get_accuracy_types(aeaa) >= tp)
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION a3ms_validate_detected_difference_types(ei : data_equivalence_inspection_report;
-                                                 cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
-LOCAL
-  deiir   : data_equivalence_inspection_instance_report;
-  eiriwei : equivalence_instance_report_item_with_notable_instances;
-  addtn   : a3ms_detected_difference_type_name;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        eiriwei := deiir.inspected_instances[i];
-        REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
-          IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MISMATCH_OF_POINT_CLOUD_AND_RELATED_GEOMETRY' IN
-              TYPEOF(cr))
-          THEN
-            addtn := a3ms_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements);
-            IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) = etns_connected_edge_set)
-            THEN
-              IF (addtn <> ddns_point_on_curve)
-              THEN
-                RETURN(false);
-              END_IF;
-            ELSE
-              IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) = etns_connected_face_set)
-              THEN
-                IF (addtn <> ddns_point_on_surface)
-                THEN
-                  RETURN(false);
-                END_IF;
-              ELSE
-                IF (a3ms_get_element_type(eiriwei.inspected_element.comparing_elements) <>
-                    etns_external_representation_item)
-                THEN
-                  RETURN(false);
-                END_IF;
-              END_IF;
-            END_IF;
-            IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
-                     cr.detected_difference_types))
-            THEN
-              RETURN(false);
-            END_IF;
-          ELSE
-            IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].comparing_elements) IN
-                     cr.detected_difference_types))
-            THEN
-              RETURN(false);
-            END_IF;
-            IF (NOT (a3ms_get_detected_difference_type(eiriwei.notable_instances[j].compared_elements) IN
-                     cr.detected_difference_types))
-            THEN
-              RETURN(false);
-            END_IF;
-          END_IF;
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION a3ms_validate_element_types(ei : data_equivalence_inspection_report;
-                                     cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
-LOCAL
-  compared_et  : a3ms_element_type_name;
-  comparing_et : a3ms_element_type_name;
-  deiir        : data_equivalence_inspection_instance_report;
-  aeiiri       : a3m_equivalence_inspection_instance_report_item;
-  deiep        : data_equivalence_inspected_element_pair;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        aeiiri := deiir.inspected_instances[i];
-        deiep := aeiiri.inspected_element;
-        compared_et := a3ms_get_element_type(deiep.compared_elements);
-        comparing_et := a3ms_get_element_type(deiep.comparing_elements);
-        IF ((NOT (compared_et IN cr.compared_element_types) AND (compared_et <> etns_external_representation_item)) OR
-            (NOT (comparing_et IN cr.comparing_element_types) AND (comparing_et <> etns_external_representation_item)))
-        THEN
-          RETURN(false);
-        END_IF;
-        IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MISMATCH_OF_POINT_CLOUD_AND_RELATED_GEOMETRY' IN
-            TYPEOF(cr))
-        THEN
-          IF (((comparing_et <> etns_external_representation_item) AND
-               (compared_et <> etns_external_representation_item)) AND
-              (compared_et = comparing_et))
-          THEN
-            RETURN(false);
-          END_IF;
-        ELSE
-          IF (((comparing_et <> etns_external_representation_item) AND
-               (compared_et <> etns_external_representation_item)) AND
-              (compared_et <> comparing_et))
-          THEN
-            RETURN(false);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION a3ms_validate_measured_type(ei : data_equivalence_inspection_report;
-                                     cr : a3m_equivalence_criterion_for_shape) : LOGICAL;
-LOCAL
-  amdtn   : a3ms_measured_data_type_name;
-  deicr   : data_equivalence_inspection_criterion_report;
-  acriwmv : a3m_equivalence_criterion_report_item_with_measured_value;
-  deiir   : data_equivalence_inspection_instance_report;
-  aeiiri  : a3m_equivalence_inspection_instance_report_item;
-  eiriwei : equivalence_instance_report_item_with_notable_instances;
-END_LOCAL;
-  amdtn := cr.measured_data_type;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_CRITERION_REPORT' IN TYPEOF(ei))
-  THEN
-    deicr := ei;
-    REPEAT i := 1 TO SIZEOF(deicr.statistical_values);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_CRITERION_REPORT_ITEM_WITH_MEASURED_VALUE' IN
-          TYPEOF(deicr.statistical_values[i]))
-      THEN
-        acriwmv := deicr.statistical_values[i];
-        IF (a3ms_get_measured_type(acriwmv.representative_measured_value) <> amdtn)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_EQUIVALENCE_INSPECTION_INSTANCE_REPORT' IN TYPEOF(ei))
-  THEN
-    deiir := ei;
-    REPEAT i := 1 TO SIZEOF(deiir.inspected_instances);
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.A3M_EQUIVALENCE_INSPECTION_INSTANCE_REPORT_ITEM' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        aeiiri := deiir.inspected_instances[i];
-        IF (a3ms_get_measured_type(aeiiri.measured_value_for_inspected_element) <> amdtn)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUIVALENCE_INSTANCE_REPORT_ITEM_WITH_NOTABLE_INSTANCES' IN
-          TYPEOF(deiir.inspected_instances[i]))
-      THEN
-        eiriwei := deiir.inspected_instances[i];
-        REPEAT j := 1 TO SIZEOF(eiriwei.notable_instances);
-          IF (a3ms_get_measured_type(eiriwei.notable_instances[j].measured_value) <> amdtn)
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION above_plane(p1 : cartesian_point;
-                     p2 : cartesian_point;
-                     p3 : cartesian_point;
-                     p4 : cartesian_point) : REAL;
-LOCAL
-  dir2 : direction := dummy_gri || direction([1.0,0.0,0.0]);
-  dir3 : direction := dummy_gri || direction([1.0,0.0,0.0]);
-  dir4 : direction := dummy_gri || direction([1.0,0.0,0.0]);
-  val  : REAL;
-  mag  : REAL;
-END_LOCAL;
-  IF (p1.dim <> 3)
-  THEN
-    RETURN(?);
-  END_IF;
-  REPEAT i := 1 TO 3;
-    dir2.direction_ratios[i] := p2.coordinates[i] - p1.coordinates[i];
-    dir3.direction_ratios[i] := p3.coordinates[i] - p1.coordinates[i];
-    dir4.direction_ratios[i] := p4.coordinates[i] - p1.coordinates[i];
-    mag := dir4.direction_ratios[i] * dir4.direction_ratios[i];
-  END_REPEAT;
-  mag := SQRT(mag);
-  val := mag * dot_product(dir4, cross_product(dir2, dir3).orientation);
-  RETURN(val);
-END_FUNCTION;
-
-FUNCTION acyclic(arg1 : generic_expression;
-                 arg2 : SET OF generic_expression) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1))
-  THEN
-    RETURN(true);
-  END_IF;
-  IF arg1 IN arg2
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
-  THEN
-    RETURN(acyclic(arg1\unary_generic_expression.operand, arg2 + [arg1]));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
-  THEN
-    RETURN(acyclic(arg1\binary_generic_expression.operands[1], arg2 + [arg1]) AND
-           acyclic(arg1\binary_generic_expression.operands[2], arg2 + [arg1]));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
-  THEN
-    result := true;
-    REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.operands);
-      result := result AND acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2 + [arg1]);
-    END_REPEAT;
-    RETURN(result);
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION acyclic_action_directive_relationship(relation : action_directive_relationship;
-                                               relatives : SET [1 : ?] OF action_directive;
-                                               specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF action_directive_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(adr
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_DIRECTIVE_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(adr));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_action_directive_relationship(x[i], relatives + relation.relating, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_alternative_solution_relationship(relation : alternative_solution_relationship;
-                                                   relatives : SET [1 : ?] OF product_definition_formation;
-                                                   specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF alternative_solution_relationship;
-END_LOCAL;
-  IF relation.relating_product_definition_formation IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(asr
-             <* bag_to_set(USEDIN(relation.relating_product_definition_formation,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ALTERNATIVE_SOLUTION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION_FORMATION'))
-             | specific_relation IN TYPEOF(asr));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_alternative_solution_relationship(x[i], relatives + relation.relating_product_definition_formation,
-                                                     specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_assignment_object_relationship(relation : assignment_object_relationship;
-                                                relatives : SET [1 : ?] OF assignment_object_select;
-                                                specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF assignment_object_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(aor
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSIGNMENT_OBJECT_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(aor));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_assignment_object_relationship(x[i], relatives + relation.relating, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_classification_assignment_relationship(relation : classification_assignment_relationship;
-                                                        relatives : SET [1 : ?] OF classification_assignment;
-                                                        specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF classification_assignment_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(car
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFICATION_ASSIGNMENT_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(car));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_classification_assignment_relationship(x[i], relatives + relation.relating, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_composite_text(start_composite : composite_text;
-                                child_text : SET [1 : ?] OF text_or_character) : LOGICAL;
-LOCAL
-  i                     : INTEGER;
-  local_composite_text  : SET [0 : ?] OF composite_text;
-  local_annotation_text : SET [0 : ?] OF annotation_text;
-  local_children        : SET [0 : ?] OF text_or_character;
-END_LOCAL;
-  local_composite_text := QUERY(child
-                                <* child_text
-                                | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN TYPEOF(child)));
-  IF (SIZEOF(local_composite_text) > 0)
-  THEN
-    REPEAT i := 1 TO HIINDEX(local_composite_text);
-      IF (start_composite :=: local_composite_text[i])
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  local_children := child_text;
-  IF (SIZEOF(local_composite_text)) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(local_composite_text);
-      local_children := local_children + local_composite_text[i].collected_text;
-    END_REPEAT;
-  END_IF;
-  local_annotation_text := QUERY(child
-                                 <* child_text
-                                 | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN
-                                    TYPEOF(child)));
-  IF (SIZEOF(local_annotation_text) > 0)
-  THEN
-    REPEAT i := 1 TO HIINDEX(local_annotation_text);
-      local_children := local_children +
-                        QUERY(item
-                              <* local_annotation_text[i]\mapped_item.mapping_source.mapped_representation.items
-                              | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT',
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'] *
-                                       TYPEOF(item)) >
-                                0);
-    END_REPEAT;
-  END_IF;
-  IF (local_children :<>: child_text)
-  THEN
-    RETURN(acyclic_composite_text(start_composite, local_children));
-  ELSE
-    RETURN(true);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_curve_replica(rep : curve_replica;
-                               parent : curve) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent))
-  THEN
-    RETURN(true);
-  END_IF;
-  (* Return TRUE if the parent is not of type curve_replica *)
-  IF (parent :=: rep)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_curve_replica(rep, parent\curve_replica.parent_curve));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_description_text_assignment_relationship(relation : description_text_assignment_relationship;
-                                                          relatives : SET [1 : ?] OF description_text_assignment;
-                                                          specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF description_text_assignment_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(dtar
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_TEXT_ASSIGNMENT_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(dtar));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_description_text_assignment_relationship(x[i], relatives + relation.relating, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_external_identification_assignment_relationship(relation : external_identification_assignment_relationship;
-                                                                 relatives : SET [1 : ?] OF external_identification_assignment;
-                                                                 specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF external_identification_assignment_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(eiar
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(eiar));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_external_identification_assignment_relationship(x[i], relatives + relation.relating,
-                                                                   specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_generic_property_relationship(relation : generic_property_relationship;
-                                               relatives : SET [1 : ?] OF generic_property_definition_select;
-                                               specific_relation : STRING) : LOGICAL;
-LOCAL
-  x : SET OF generic_property_relationship;
-END_LOCAL;
-  IF relation.relating IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(gpr
-             <* bag_to_set(USEDIN(relation.relating,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_PROPERTY_RELATIONSHIP.RELATED'))
-             | specific_relation IN TYPEOF(gpr));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_generic_property_relationship(x[i], relatives + relation.relating, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_geometric_tolerance_relationship(relation : geometric_tolerance_relationship;
-                                                  relatives : SET [1 : ?] OF geometric_tolerance;
-                                                  specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF geometric_tolerance_relationship;
-END_LOCAL;
-  IF relation.relating_geometric_tolerance IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(geotol
-             <* bag_to_set(USEDIN(relation.relating_geometric_tolerance,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE'))
-             | specific_relation IN TYPEOF(geotol));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_geometric_tolerance_relationship(x[i], relatives + relation.relating_geometric_tolerance,
-                                                    specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_mapped_representation(mi : mapped_item) : BOOLEAN;
-LOCAL
-  rms : SET OF representation_map;
-  mis : SET OF mapped_item;
-  rs1 : SET OF representation;
-  rs2 : SET OF representation;
-END_LOCAL;
-  rs1 := using_representations(mi);
-  rs2 := [];
-  REPEAT WHILE SIZEOF(rs1) > 0;
-    REPEAT i := 1 TO HIINDEX(rs1);
-      rms := bag_to_set(USEDIN(rs1[i],
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
-      IF SIZEOF(rms) > 0
-      THEN
-        REPEAT j := 1 TO HIINDEX(rms);
-          mis := bag_to_set(USEDIN(rms[i],
-                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'));
-          IF SIZEOF(mis) > 0
-          THEN
-            REPEAT j := 1 TO HIINDEX(mis);
-              IF mis[i] :=: mi
-              THEN
-                RETURN(false);
-              END_IF;
-              rs2 := rs2 + using_representations(mis[i]);
-            END_REPEAT;
-          END_IF;
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-    rs1 := rs2;
-    rs2 := [];
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_point_replica(rep : point_replica;
-                               parent : point) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA') IN TYPEOF(parent))
-  THEN
-    RETURN(true);
-  END_IF;
-  (* Return TRUE if the parent is not of type point_replica *)
-  IF (parent :=: rep)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_product_category_relationship(relation : product_category_relationship;
-                                               children : SET OF product_category) : BOOLEAN;
-LOCAL
-  x              : SET OF product_category_relationship;
-  local_children : SET OF product_category;
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(children);
-    IF relation.category :=: children[i]
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  x := bag_to_set(USEDIN(relation.category,
-                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
-  local_children := children + relation.category;
-  IF SIZEOF(x) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(x);
-      IF NOT acyclic_product_category_relationship(x[i], local_children)
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_product_definition_relationship(relation : product_definition_relationship;
-                                                 relatives : SET [1 : ?] OF product_definition_or_reference;
-                                                 specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF product_definition_relationship;
-END_LOCAL;
-  IF relation.relating_product_definition IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(pd
-             <* bag_to_set(USEDIN(relation.relating_product_definition,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'))
-             | specific_relation IN TYPEOF(pd));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition,
-                                                   specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_product_definition_specified_occurrence(pdso : product_definition_specified_occurrence;
-                                                         definition : product_definition_occurrence) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SPECIFIED_OCCURRENCE') IN
-          TYPEOF(definition))
-  THEN
-    RETURN(true);
-  END_IF;
-  IF (definition :=: pdso)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_product_definition_specified_occurrence(pdso, definition\product_definition_occurrence.definition));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_representation_relationship(relation : representation_relationship;
-                                             relatives : SET [1 : ?] OF representation;
-                                             specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF representation_relationship;
-END_LOCAL;
-  IF relation.rep_1 IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(r
-             <* bag_to_set(USEDIN(relation.rep_1,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP.REP_2'))
-             | specific_relation IN TYPEOF(r));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_shape_aspect_occurrence(sao : shape_aspect_occurrence;
-                                         definition : shape_aspect_or_characterized_object) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_OCCURRENCE') IN TYPEOF(definition))
-  THEN
-    RETURN(true);
-  END_IF;
-  IF (definition :=: sao)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_shape_aspect_occurrence(sao, definition\shape_aspect_occurrence.definition));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_shape_aspect_relationship(relation : shape_aspect_relationship;
-                                           relatives : SET [1 : ?] OF shape_aspect;
-                                           specific_relation : STRING) : BOOLEAN;
-LOCAL
-  x : SET OF shape_aspect_relationship;
-END_LOCAL;
-  IF relation.relating_shape_aspect IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(sa
-             <* bag_to_set(USEDIN(relation.relating_shape_aspect,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'))
-             | specific_relation IN TYPEOF(sa));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_shape_aspect_relationship(x[i], relatives + relation.relating_shape_aspect, specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_solid_replica(rep : solid_replica;
-                               parent : solid_model) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent))
-  THEN
-    RETURN(true);
-  END_IF;
-  (* Return TRUE if the parent is not of type solid_replica. *)
-  IF (parent :=: rep)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_solid_replica(rep, parent\solid_replica.parent_solid));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION acyclic_state_definition_to_state_assignment_relationship(relation : state_definition_to_state_assignment_relationship;
-                                                                   relatives : SET [1 : ?] OF ascribable_state;
-                                                                   specific_relation : STRING) : LOGICAL;
-LOCAL
-  x : SET OF state_definition_to_state_assignment_relationship;
-END_LOCAL;
-  IF relation.relating_ascribable_state IN relatives
-  THEN
-    RETURN(false);
-  END_IF;
-  x := QUERY(sdtsar
-             <* bag_to_set(USEDIN(relation.relating_ascribable_state,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP.RELATED_ASCRIBABLE_STATE'))
-             | specific_relation IN TYPEOF(sdtsar));
-  REPEAT i := 1 TO HIINDEX(x);
-    IF NOT acyclic_state_definition_to_state_assignment_relationship(x[i],
-                                                                     relatives + relation.relating_ascribable_state,
-                                                                     specific_relation)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION acyclic_surface_replica(rep : surface_replica;
-                                 parent : surface) : BOOLEAN;
-  IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent))
-  THEN
-    RETURN(true);
-  END_IF;
-  (* Return TRUE if the parent is not of type surface_replica *)
-  IF (parent :=: rep)
-  THEN
-    RETURN(false);
-  ELSE
-    RETURN(acyclic_surface_replica(rep, parent\surface_replica.parent_surface));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION advanced_face_properties(testface : face) : BOOLEAN;
-(* return TRUE if testface is of type advanced_face *)
-  (* return TRUE if testface is of type advanced_face *)
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface)
-  THEN
-    RETURN(true);
-  END_IF;
-  (* if testface is a subface recursively test the parent_face,
-     return FALSE for all other types of face *)
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF(testface))
-  THEN
-    RETURN(advanced_face_properties(testface\subface.parent_face));
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION all_members_of_es(sv : SET OF maths_value;
-                           es : elementary_space_enumerators) : LOGICAL;
-
-CONSTANT
-  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'];
-END_CONSTANT;
-LOCAL
-  v        : maths_value;
-  key_type : STRING             := '';
-  types    : SET OF STRING;
-  ge       : generic_expression;
-  cum      : LOGICAL            := true;
-  vspc     : maths_space;
-END_LOCAL;
-  IF NOT EXISTS(sv) OR NOT EXISTS(es)
-  THEN
-    RETURN(false);
-  END_IF;
-  CASE es OF
-    es_numbers : key_type := 'NUMBER';
-    es_complex_numbers : key_type := 'COMPLEX_NUMBER_LITERAL';
-    es_reals : key_type := 'REAL';
-    es_integers : key_type := 'INTEGER';
-    es_logicals : key_type := 'LOGICAL';
-    es_booleans : key_type := 'BOOLEAN';
-    es_strings : key_type := 'STRING';
-    es_binarys : key_type := 'BINARY';
-    es_maths_spaces : key_type := 'MATHS_SPACE';
-    es_maths_functions : key_type := 'MATHS_FUNCTION';
-    es_generics : RETURN(true);
-  END_CASE;
-  REPEAT i := 1 TO SIZEOF(sv);
-    IF NOT EXISTS(sv[i])
-    THEN
-      RETURN(false);
-    END_IF;
-    v := simplify_maths_value(sv[i]);
-    types := stripped_typeof(v);
-    IF key_type IN types
-    THEN
-      SKIP;
-    END_IF;
-    IF (es = es_numbers) AND ('COMPLEX_NUMBER_LITERAL' IN types)
-    THEN
-      SKIP;
-    END_IF;
-    IF SIZEOF(base_types * types) > 0
-    THEN
-      RETURN(false);
-    END_IF;
-    ge := v;
-    IF has_values_space(ge)
-    THEN
-      vspc := values_space_of(ge);
-      IF NOT subspace_of_es(vspc, es)
-      THEN
-        IF NOT compatible_spaces(vspc, make_elementary_space(es))
-        THEN
-          RETURN(false);
-        END_IF;
-        cum := unknown;
-      END_IF;
-    ELSE
-      cum := unknown;
-    END_IF;
-    IF cum = false
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(cum);
-END_FUNCTION;
-
-FUNCTION any_space_satisfies(sc : space_constraint_type;
-                             spc : maths_space) : BOOLEAN;
-LOCAL
-  spc_id : elementary_space_enumerators;
-END_LOCAL;
-  IF (sc = sc_equal) OR NOT ('ELEMENTARY_SPACE' IN stripped_typeof(spc))
-  THEN
-    RETURN(false);
-  END_IF;
-  spc_id := spc\elementary_space.space_id;
-  IF sc = sc_subspace
-  THEN
-    RETURN(bool(spc_id = es_generics));
-  END_IF;
-  IF sc = sc_member
-  THEN
-    RETURN(bool((spc_id = es_generics) OR (spc_id = es_maths_spaces)));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION aspect_ratio(p : planar_box) : positive_ratio_measure;
-  IF (p.size_in_x > 0.) AND (p.size_in_y > 0.)
-  THEN
-    RETURN(p.size_in_x / p.size_in_y);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION assembly_leaf(item : product_definition) : BOOLEAN;
-LOCAL
-  local_relation  : SET OF assembly_component_usage := [];
-  local_relation2 : BAG OF assembly_component_usage := [];
-END_LOCAL;
-  local_relation2 := local_relation2 +
-                     QUERY(pdr
-                           <* USEDIN(item,
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION')
-                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr));
-  local_relation := bag_to_set(local_relation2);
-  IF (SIZEOF(local_relation) = 0)
-  THEN
-    RETURN(true);
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION assembly_root(item : product_definition) : BOOLEAN;
--- extraction of related assembly_component_relationships --
-  IF (SIZEOF(QUERY(pdr
-                   <* USEDIN(item,
-                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr))) =
-      0)
-  THEN
-    RETURN(true);
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION assoc_product_space(ts1 : tuple_space;
-                             ts2 : tuple_space) : tuple_space;
-LOCAL
-  types1  : SET OF STRING         := stripped_typeof(ts1);
-  types2  : SET OF STRING         := stripped_typeof(ts2);
-  up1     : uniform_product_space := make_uniform_product_space(the_reals, 1);
-  up2     : uniform_product_space := make_uniform_product_space(the_reals, 1);
-  lp1     : listed_product_space  := the_zero_tuple_space;
-  lp2     : listed_product_space  := the_zero_tuple_space;
-  lps     : listed_product_space  := the_zero_tuple_space;
-  et1     : extended_tuple_space  := the_tuples;
-  et2     : extended_tuple_space  := the_tuples;
-  ets     : extended_tuple_space  := the_tuples;
-  use_up1 : BOOLEAN;
-  use_up2 : BOOLEAN;
-  use_lp1 : BOOLEAN;
-  use_lp2 : BOOLEAN;
-  factors : LIST OF maths_space   := [];
-  tspace  : tuple_space;
-END_LOCAL;
-  IF 'UNIFORM_PRODUCT_SPACE' IN types1
-  THEN
-    up1 := ts1;
-    use_up1 := true;
-    use_lp1 := false;
-  ELSE
-    IF 'LISTED_PRODUCT_SPACE' IN types1
-    THEN
-      lp1 := ts1;
-      use_up1 := false;
-      use_lp1 := true;
-    ELSE
-      IF NOT ('EXTENDED_TUPLE_SPACE' IN types1)
-      THEN
-        RETURN(?);
-      END_IF;
-      et1 := ts1;
-      use_up1 := false;
-      use_lp1 := false;
-    END_IF;
-  END_IF;
-  IF 'UNIFORM_PRODUCT_SPACE' IN types2
-  THEN
-    up2 := ts2;
-    use_up2 := true;
-    use_lp2 := false;
-  ELSE
-    IF 'LISTED_PRODUCT_SPACE' IN types2
-    THEN
-      lp2 := ts2;
-      use_up2 := false;
-      use_lp2 := true;
-    ELSE
-      IF NOT ('EXTENDED_TUPLE_SPACE' IN types2)
-      THEN
-        RETURN(?);
-      END_IF;
-      et2 := ts2;
-      use_up2 := false;
-      use_lp2 := false;
-    END_IF;
-  END_IF;
-  IF use_up1
-  THEN
-    IF use_up2
-    THEN
-      IF up1.base = up2.base
-      THEN
-        tspace := make_uniform_product_space(up1.base, up1.exponent + up2.exponent);
-      ELSE
-        factors := [up1.base:up1.exponent,up2.base:up2.exponent];
-        tspace := make_listed_product_space(factors);
-      END_IF;
-    ELSE
-      IF use_lp2
-      THEN
-        factors := [up1.base:up1.exponent];
-        factors := factors + lp2.factors;
-        tspace := make_listed_product_space(factors);
-      ELSE
-        tspace := assoc_product_space(up1, et2.base);
-        tspace := make_extended_tuple_space(tspace, et2.extender);
-      END_IF;
-    END_IF;
-  ELSE
-    IF use_lp1
-    THEN
-      IF use_up2
-      THEN
-        factors := [up2.base:up2.exponent];
-        factors := lp1.factors + factors;
-        tspace := make_listed_product_space(factors);
-      ELSE
-        IF use_lp2
-        THEN
-          tspace := make_listed_product_space(lp1.factors + lp2.factors);
-        ELSE
-          tspace := assoc_product_space(lp1, et2.base);
-          tspace := make_extended_tuple_space(tspace, et2.extender);
-        END_IF;
-      END_IF;
-    ELSE
-      IF use_up2
-      THEN
-        IF et1.extender = up2.base
-        THEN
-          tspace := assoc_product_space(et1.base, up2);
-          tspace := make_extended_tuple_space(tspace, et1.extender);
-        ELSE
-          RETURN(?);
-        END_IF;
-      ELSE
-        IF use_lp2
-        THEN
-          factors := lp2.factors;
-          REPEAT i := 1 TO SIZEOF(factors);
-            IF et1.extender <> factors[i]
-            THEN
-              RETURN(?);
-            END_IF;
-          END_REPEAT;
-          tspace := assoc_product_space(et1.base, lp2);
-          tspace := make_extended_tuple_space(tspace, et1.extender);
-        ELSE
-          IF et1.extender = et2.extender
-          THEN
-            tspace := assoc_product_space(et1, et2.base);
-          ELSE
-            RETURN(?);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(tspace);
-END_FUNCTION;
-
-FUNCTION associated_surface(arg : pcurve_or_surface) : surface;
-LOCAL
-  surf : surface;
-END_LOCAL;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(arg)
-  THEN
-    surf := arg\pcurve.basis_surface;
-  ELSE
-    surf := arg;
-  END_IF;
-  RETURN(surf);
-END_FUNCTION;
-
-FUNCTION atan2(y : REAL;
-               x : REAL) : REAL;
-LOCAL
-  r : REAL;
-END_LOCAL;
-  IF (y = 0.0) AND (x = 0.0)
-  THEN
-    RETURN(?);
-  END_IF;
-  r := ATAN(y, x);
-  IF x < 0.0
-  THEN
-    IF y < 0.0
-    THEN
-      r := r - PI;
-    ELSE
-      r := r + PI;
-    END_IF;
-  END_IF;
-  RETURN(r);
-END_FUNCTION;
-
-FUNCTION bag_to_set(the_bag : BAG OF GENERIC : INTYPE) : SET OF GENERIC : INTYPE;
-LOCAL
-  the_set : SET OF GENERIC : INTYPE := [];
-END_LOCAL;
-  IF SIZEOF(the_bag) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(the_bag);
-      the_set := the_set + the_bag[i];
-    END_REPEAT;
-  END_IF;
-  RETURN(the_set);
-END_FUNCTION;
-
-FUNCTION base_axis(dim : INTEGER;
-                   axis1 : direction;
-                   axis2 : direction;
-                   axis3 : direction) : LIST [2 : 3] OF direction;
-LOCAL
-  u      : LIST [2 : 3] OF direction;
-  factor : REAL;
-  d1     : direction;
-  d2     : direction;
-END_LOCAL;
-  IF (dim = 3)
-  THEN
-    d1 := NVL(normalise(axis3), dummy_gri || direction([0.0,0.0,1.0]));
-    d2 := first_proj_axis(d1, axis1);
-    u := [d2,second_proj_axis(d1, d2, axis2),d1];
-  ELSE
-    IF EXISTS(axis1)
-    THEN
-      d1 := normalise(axis1);
-      u := [d1,orthogonal_complement(d1)];
-      IF EXISTS(axis2)
-      THEN
-        factor := dot_product(axis2, u[2]);
-        IF (factor < 0.0)
-        THEN
-          u[2].direction_ratios[1] := -u[2].direction_ratios[1];
-          u[2].direction_ratios[2] := -u[2].direction_ratios[2];
-        END_IF;
-      END_IF;
-    ELSE
-      IF EXISTS(axis2)
-      THEN
-        d1 := normalise(axis2);
-        u := [orthogonal_complement(d1),d1];
-        u[1].direction_ratios[1] := -u[1].direction_ratios[1];
-        u[1].direction_ratios[2] := -u[1].direction_ratios[2];
-      ELSE
-        u := [dummy_gri || direction([1.0,0.0]),dummy_gri || direction([0.0,1.0])];
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(u);
-END_FUNCTION;
-
-FUNCTION bool(lgcl : LOGICAL) : BOOLEAN;
-  IF NOT EXISTS(lgcl)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF lgcl <> true
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION boolean_choose(b : BOOLEAN;
-                        choice1 : GENERIC : ITEM;
-                        choice2 : GENERIC : ITEM) : GENERIC : ITEM;
-  IF b
-  THEN
-    RETURN(choice1);
-  ELSE
-    RETURN(choice2);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION build_2axes(ref_direction : direction) : LIST [2 : 2] OF direction;
-LOCAL
-  d : direction := NVL(normalise(ref_direction), dummy_gri || direction([1.0,0.0]));
-END_LOCAL;
-  RETURN([d,orthogonal_complement(d)]);
-END_FUNCTION;
-
-FUNCTION build_axes(axis : direction;
-                    ref_direction : direction) : LIST [3 : 3] OF direction;
-LOCAL
-  d1 : direction;
-  d2 : direction;
-END_LOCAL;
-  d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0]));
-  d2 := first_proj_axis(d1, ref_direction);
-  RETURN([d2,normalise(cross_product(d1, d2))\vector.orientation,d1]);
-END_FUNCTION;
-
-FUNCTION categories_of_product(obj : product) : SET OF STRING;
-LOCAL
-  category_assignments : BAG OF product_category;
-  categories           : SET OF STRING           := [];
-END_LOCAL;
-  category_assignments := USEDIN(obj,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS');
-  REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1;
-    categories := categories + category_assignments[i].name;
-  END_REPEAT;
-  RETURN(categories);
-END_FUNCTION;
-
-FUNCTION cc_design_person_and_organization_correlation(e : cc_design_person_and_organization_assignment) : BOOLEAN;
-LOCAL
-  po_role : STRING;
-END_LOCAL;
-  po_role := e\person_and_organization_assignment.role.name;
-  CASE po_role OF
-    'request_recipient' : IF SIZEOF(e.items) <>
-                             SIZEOF(QUERY(x
-                                          <* e.items
-                                          | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_REQUEST',
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_REQUEST'] *
-                                                   TYPEOF(x)) =
-                                            1))
-    THEN
-      RETURN(false);
-    END_IF;
-    'initiator' : IF SIZEOF(e.items) <>
-                     SIZEOF(QUERY(x
-                                  <* e.items
-                                  | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE_REQUEST',
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_REQUEST',
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.START_WORK',
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHANGE'] *
-                                           TYPEOF(x)) =
-                                    1))
-    THEN
-      RETURN(false);
-    END_IF;
-    'creator' : IF SIZEOF(e.items) <>
-                   SIZEOF(QUERY(x
-                                <* e.items
-                                | SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION',
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'] *
-                                         TYPEOF(x)) =
-                                  1))
-    THEN
-      RETURN(false);
-    END_IF;
-    'part_supplier' : IF SIZEOF(e.items) <>
-                         SIZEOF(QUERY(x
-                                      <* e.items
-                                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
-                                        TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    'design_supplier' : IF SIZEOF(e.items) <>
-                           SIZEOF(QUERY(x
-                                        <* e.items
-                                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
-                                          TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    'design_owner' : IF SIZEOF(e.items) <>
-                        SIZEOF(QUERY(x
-                                     <* e.items
-                                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    'configuration_manager' : IF SIZEOF(e.items) <>
-                                 SIZEOF(QUERY(x
-                                              <* e.items
-                                              | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_ITEM' IN
-                                                TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    'contractor' : IF SIZEOF(e.items) <>
-                      SIZEOF(QUERY(x
-                                   <* e.items
-                                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT' IN TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    'classification_officer' : IF SIZEOF(e.items) <>
-                                  SIZEOF(QUERY(x
-                                               <* e.items
-                                               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SECURITY_CLASSIFICATION' IN
-                                                 TYPEOF(x)))
-    THEN
-      RETURN(false);
-    END_IF;
-    OTHERWISE: RETURN(true);
-  END_CASE;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION check_continuous_edges(edges : LIST OF UNIQUE edge_curve) : BOOLEAN;
-LOCAL
-  i           : INTEGER;
-  next_vertex : vertex;
-END_LOCAL;
-  IF (SIZEOF(edges) = 1)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF ((edges[2].edge_start :=: edges[1].edge_end) XOR (edges[2].edge_start :=: edges[1].edge_start))
-  THEN
-    next_vertex := edges[2].edge_end;
-  ELSE
-    IF ((edges[2].edge_end :=: edges[1].edge_end) XOR (edges[2].edge_end :=: edges[1].edge_start))
-    THEN
-      next_vertex := edges[2].edge_start;
-    ELSE
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF (SIZEOF(edges) = 2)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 3 TO HIINDEX(edges);
-    IF (edges[i].edge_start :=: next_vertex)
-    THEN
-      next_vertex := edges[i].edge_end;
-    ELSE
-      IF (edges[i].edge_end :=: next_vertex)
-      THEN
-        next_vertex := edges[i].edge_start;
-      ELSE
-        RETURN(false);
-      END_IF;
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION check_curve_planarity(checked_curve : curve) : BOOLEAN;
-LOCAL
-  crv    : curve   := checked_curve;
-  i      : INTEGER;
-  j      : INTEGER;
-  result : BOOLEAN := false;
-END_LOCAL;
-  IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
-             TYPEOF(crv)) >
-      0)
-  THEN
-    result := true;
-  ELSE
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(crv)) AND
-        check_curve_planarity(crv\trimmed_curve.basis_curve))
-    THEN
-      result := true;
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(crv)) AND
-          ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF(crv\pcurve.basis_surface)))
-      THEN
-        result := true;
-      ELSE
-        IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(crv))
-        THEN
-          BEGIN  
-                 REPEAT j := 1 TO HIINDEX(crv\surface_curve.basis_surface);
-                   IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                       TYPEOF(crv\surface_curve.basis_surface[j]))
-                   THEN
-                     result := true;
-                   END_IF;
-                 END_REPEAT;
-          END;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION check_geometric_dimension(capt : SET [0 : ?] OF cartesian_point;
-                                   dir : SET [0 : ?] OF direction;
-                                   grc : SET [0 : ?] OF geometric_representation_context) : BOOLEAN;
-LOCAL
-  globaldim : INTEGER                       := 0;
-  reps      : SET [0 : ?] OF representation := [];
-  result    : BOOLEAN                       := true;
-END_LOCAL;
-  IF (SIZEOF(grc) = 0)
-  THEN
-    RETURN(false);
-  END_IF;
-  globaldim := geometric_dimensionalities_in_contexts(grc);
-  IF (globaldim > 0)
-  THEN
-    IF (SIZEOF(capt) > 0)
-    THEN
-      REPEAT i := 1 TO HIINDEX(capt);
-        IF (HIINDEX(capt[i].coordinates) <> globaldim)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-    IF (SIZEOF(dir) > 0)
-    THEN
-      REPEAT i := 1 TO HIINDEX(dir);
-        IF (HIINDEX(dir[i].direction_ratios) <> globaldim)
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-    RETURN(result);
-  ELSE
-    IF (SIZEOF(capt) > 0)
-    THEN
-      REPEAT i := 1 TO HIINDEX(capt);
-        reps := using_representations(capt[i]);
-        IF (SIZEOF(reps) > 0)
-        THEN
-          REPEAT j := 1 TO HIINDEX(reps);
-            IF (HIINDEX(capt[i].coordinates) <>
-                reps[j].context_of_items\geometric_representation_context.coordinate_space_dimension)
-            THEN
-              RETURN(false);
-            END_IF;
-          END_REPEAT;
-        ELSE
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-    IF (SIZEOF(dir) > 0)
-    THEN
-      REPEAT i := 1 TO HIINDEX(dir);
-        reps := using_representations(dir[i]);
-        IF (SIZEOF(reps) > 0)
-        THEN
-          REPEAT j := 1 TO HIINDEX(reps);
-            IF (HIINDEX(dir[i].direction_ratios) <>
-                reps[j].context_of_items\geometric_representation_context.coordinate_space_dimension)
-            THEN
-              RETURN(false);
-            END_IF;
-          END_REPEAT;
-        ELSE
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION check_sparse_index_domain(idxdom : tuple_space;
-                                   base : zero_or_one;
-                                   shape : LIST [1 : ?] OF positive_integer;
-                                   order : ordering_type) : BOOLEAN;
-LOCAL
-  mthspc   : maths_space;
-  interval : finite_integer_interval;
-  i        : INTEGER;
-END_LOCAL;
-  mthspc := factor1(idxdom);
-  interval := mthspc;
-  IF order = by_rows
-  THEN
-    i := 1;
-  ELSE
-    i := 2;
-  END_IF;
-  RETURN(bool((interval.min <= base) AND (interval.max >= base + shape[i])));
-END_FUNCTION;
-
-FUNCTION check_sparse_index_to_loc(index_range : tuple_space;
-                                   loc_domain : tuple_space) : BOOLEAN;
-LOCAL
-  temp         : maths_space;
-  idx_rng_itvl : finite_integer_interval;
-  loc_dmn_itvl : finite_integer_interval;
-END_LOCAL;
-  temp := factor1(index_range);
-  IF (schema_prefix + 'TUPLE_SPACE') IN TYPEOF(temp)
-  THEN
-    temp := factor1(temp);
-  END_IF;
-  IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  idx_rng_itvl := temp;
-  temp := factor1(loc_domain);
-  IF (schema_prefix + 'TUPLE_SPACE') IN TYPEOF(temp)
-  THEN
-    temp := factor1(temp);
-  END_IF;
-  IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  loc_dmn_itvl := temp;
-  RETURN(bool((loc_dmn_itvl.min <= idx_rng_itvl.min) AND (idx_rng_itvl.max <= loc_dmn_itvl.max + 1)));
-END_FUNCTION;
-
-FUNCTION check_sparse_loc_range(locrng : tuple_space;
-                                base : zero_or_one;
-                                shape : LIST [1 : ?] OF positive_integer;
-                                order : ordering_type) : BOOLEAN;
-LOCAL
-  mthspc   : maths_space;
-  interval : finite_integer_interval;
-  i        : INTEGER;
-END_LOCAL;
-  IF space_dimension(locrng) <> 1
-  THEN
-    RETURN(false);
-  END_IF;
-  mthspc := factor1(locrng);
-  IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(mthspc))
-  THEN
-    RETURN(false);
-  END_IF;
-  interval := mthspc;
-  IF order = by_rows
-  THEN
-    i := 2;
-  ELSE
-    i := 1;
-  END_IF;
-  RETURN(bool((interval.min >= base) AND (interval.max <= base + shape[i] - 1)));
-END_FUNCTION;
-
-FUNCTION check_text_alignment(ct : composite_text) : BOOLEAN;
-LOCAL
-  a : SET OF text_alignment := [];
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(ct.collected_text);
-    a := a + [ct.collected_text[i]\text_literal.alignment];
-  END_REPEAT;
-  RETURN(SIZEOF(a) = 1);
-END_FUNCTION;
-
-FUNCTION check_text_font(ct : composite_text) : BOOLEAN;
-LOCAL
-  f : SET OF font_select := [];
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(ct.collected_text);
-    f := f + [ct.collected_text[i]\text_literal.font];
-  END_REPEAT;
-  RETURN(SIZEOF(f) <= 1);
-END_FUNCTION;
-
-FUNCTION class_assignment_is_valid(aia : applied_classification_assignment) : BOOLEAN;
-LOCAL
-  item : classification_item;
-  role : classification_role;
-END_LOCAL;
-  role := aia\classification_assignment.role;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS_SYSTEM' IN
-      TYPEOF(aia\classification_assignment.assigned_class))
-  THEN
-    IF (role\classification_role.name <> 'class system membership')
-    THEN
-      RETURN(false);
-    END_IF;
-    REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
-      item := aia\applied_classification_assignment.items[i];
-      IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS'] * TYPEOF(item)) = 0)
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS' IN
-      TYPEOF(aia\classification_assignment.assigned_class))
-  THEN
-    IF NOT (role\classification_role.name IN ['definitional','non-definitional',''])
-    THEN
-      RETURN(false);
-    END_IF;
-    REPEAT i := LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
-      item := aia\applied_classification_assignment.items[i];
-      IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFIED_ITEM'] * TYPEOF(item)) = 0)
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF (role\classification_role.name = 'definitional')
-  THEN
-    IF NOT (SIZEOF(QUERY(it
-                         <* aia\applied_classification_assignment.items
-                         | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT',
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION',
-                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'] *
-                                       TYPEOF(it)) =
-                                1))) =
-            0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION closed_shell_reversed(a_shell : closed_shell) : oriented_closed_shell;
-LOCAL
-  the_reverse : oriented_closed_shell;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell))
-  THEN
-    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));
-  ELSE
-    the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || closed_shell() ||
-                   oriented_closed_shell(a_shell, false);
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION collect_joints(items : SET [1 : ?] OF pair_representation_relationship) : SET OF kinematic_joint;
-LOCAL
-  result : SET OF kinematic_joint := [];
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(items);
-    result := result + items[i].transformation_operator.joint;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION compare_basis_and_coef(basis : LIST [1 : ?] OF b_spline_basis;
-                                coef : maths_function) : BOOLEAN;
-LOCAL
-  shape : LIST OF positive_integer;
-END_LOCAL;
-  IF NOT EXISTS(basis) OR NOT EXISTS(coef)
-  THEN
-    RETURN(false);
-  END_IF;
-  shape := shape_of_array(coef);
-  IF NOT EXISTS(shape)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF SIZEOF(shape) < SIZEOF(basis)
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(basis);
-    IF (basis[i].num_basis = shape[i]) <> true
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION compatible_complex_number_regions(sp1 : maths_space;
-                                           sp2 : maths_space) : BOOLEAN;
-LOCAL
-  typenames   : SET OF STRING                   := stripped_typeof(sp1);
-  crgn1       : cartesian_complex_number_region;
-  crgn2       : cartesian_complex_number_region;
-  prgn1       : polar_complex_number_region;
-  prgn2       : polar_complex_number_region;
-  prgn1c2     : polar_complex_number_region;
-  prgn2c1     : polar_complex_number_region;
-  sp1_is_crgn : BOOLEAN;
-  sp2_is_crgn : BOOLEAN;
-END_LOCAL;
-  IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames
-  THEN
-    sp1_is_crgn := true;
-    crgn1 := sp1;
-  ELSE
-    IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames
-    THEN
-      sp1_is_crgn := false;
-      prgn1 := sp1;
-    ELSE
-      RETURN(true);
-    END_IF;
-  END_IF;
-  typenames := stripped_typeof(sp2);
-  IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames
-  THEN
-    sp2_is_crgn := true;
-    crgn2 := sp2;
-  ELSE
-    IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames
-    THEN
-      sp2_is_crgn := false;
-      prgn2 := sp2;
-    ELSE
-      RETURN(true);
-    END_IF;
-  END_IF;
-  IF sp1_is_crgn AND sp2_is_crgn
-  THEN
-    RETURN(compatible_intervals(crgn1.real_constraint, crgn2.real_constraint) AND
-           compatible_intervals(crgn1.imag_constraint, crgn2.imag_constraint));
-  END_IF;
-  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
-    IF NOT compatible_intervals(prgn1.distance_constraint, prgn2.distance_constraint)
-    THEN
-      RETURN(false);
-    END_IF;
-    IF compatible_intervals(prgn1.direction_constraint, prgn2.direction_constraint)
-    THEN
-      RETURN(true);
-    END_IF;
-    IF (prgn1.direction_constraint.max > PI) AND (prgn2.direction_constraint.max < PI)
-    THEN
-      RETURN(compatible_intervals(prgn2.direction_constraint,
-                                  make_finite_real_interval(-PI, open, prgn1.direction_constraint.max - 2.0 * PI,
-                                                            prgn1.direction_constraint.max_closure)));
-    END_IF;
-    IF (prgn2.direction_constraint.max > PI) AND (prgn1.direction_constraint.max < PI)
-    THEN
-      RETURN(compatible_intervals(prgn1.direction_constraint,
-                                  make_finite_real_interval(-PI, open, prgn2.direction_constraint.max - 2.0 * PI,
-                                                            prgn2.direction_constraint.max_closure)));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF sp1_is_crgn AND NOT sp2_is_crgn
-  THEN
-    crgn2 := enclose_pregion_in_cregion(prgn2);
-    prgn1 := enclose_cregion_in_pregion(crgn1, prgn2.centre);
-    RETURN(compatible_complex_number_regions(crgn1, crgn2) AND compatible_complex_number_regions(prgn1, prgn2));
-  END_IF;
-  IF NOT sp1_is_crgn AND sp2_is_crgn
-  THEN
-    crgn1 := enclose_pregion_in_cregion(prgn1);
-    prgn2 := enclose_cregion_in_pregion(crgn2, prgn1.centre);
-    RETURN(compatible_complex_number_regions(crgn1, crgn2) AND compatible_complex_number_regions(prgn1, prgn2));
-  END_IF;
-  prgn1c2 := enclose_pregion_in_pregion(prgn1, prgn2.centre);
-  prgn2c1 := enclose_pregion_in_pregion(prgn2, prgn1.centre);
-  RETURN(compatible_complex_number_regions(prgn1, prgn2c1) AND compatible_complex_number_regions(prgn1c2, prgn2));
-END_FUNCTION;
-
-FUNCTION compatible_es_values(esval1 : elementary_space_enumerators;
-                              esval2 : elementary_space_enumerators) : BOOLEAN;
-LOCAL
-  esval1_is_numeric : LOGICAL;
-  esval2_is_numeric : LOGICAL;
-END_LOCAL;
-  IF (esval1 = esval2) OR (esval1 = es_generics) OR (esval2 = es_generics)
-  THEN
-    RETURN(true);
-  END_IF;
-  esval1_is_numeric := (esval1 >= es_numbers) AND (esval1 <= es_integers);
-  esval2_is_numeric := (esval2 >= es_numbers) AND (esval2 <= es_integers);
-  IF (esval1_is_numeric AND (esval2 = es_numbers)) OR (esval2_is_numeric AND (esval1 = es_numbers))
-  THEN
-    RETURN(true);
-  END_IF;
-  IF esval1_is_numeric XOR esval2_is_numeric
-  THEN
-    RETURN(false);
-  END_IF;
-  IF ((esval1 = es_logicals) AND (esval2 = es_booleans)) OR ((esval1 = es_booleans) AND (esval2 = es_logicals))
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION compatible_intervals(sp1 : maths_space;
-                              sp2 : maths_space) : BOOLEAN;
-LOCAL
-  amin : REAL;
-  amax : REAL;
-END_LOCAL;
-  IF min_exists(sp1) AND max_exists(sp2)
-  THEN
-    amin := real_min(sp1);
-    amax := real_max(sp2);
-    IF amin > amax
-    THEN
-      RETURN(false);
-    END_IF;
-    IF amin = amax
-    THEN
-      RETURN(min_included(sp1) AND max_included(sp2));
-    END_IF;
-  END_IF;
-  IF min_exists(sp2) AND max_exists(sp1)
-  THEN
-    amin := real_min(sp2);
-    amax := real_max(sp1);
-    IF amin > amax
-    THEN
-      RETURN(false);
-    END_IF;
-    IF amin = amax
-    THEN
-      RETURN(min_included(sp2) AND max_included(sp1));
-    END_IF;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION compatible_spaces(sp1 : maths_space;
-                           sp2 : maths_space) : BOOLEAN;
-LOCAL
-  types1 : SET OF STRING := stripped_typeof(sp1);
-  types2 : SET OF STRING := stripped_typeof(sp2);
-  lgcl   : LOGICAL       := unknown;
-  m      : INTEGER;
-  n      : INTEGER;
-  s1     : maths_space;
-  s2     : maths_space;
-END_LOCAL;
-  IF 'FINITE_SPACE' IN types1
-  THEN
-    REPEAT i := 1 TO SIZEOF(sp1\finite_space.members);
-      lgcl := member_of(sp1\finite_space.members[i], sp2);
-      IF lgcl <> false
-      THEN
-        RETURN(true);
-      END_IF;
-    END_REPEAT;
-    RETURN(false);
-  END_IF;
-  IF 'FINITE_SPACE' IN types2
-  THEN
-    REPEAT i := 1 TO SIZEOF(sp2\finite_space.members);
-      lgcl := member_of(sp2\finite_space.members[i], sp1);
-      IF lgcl <> false
-      THEN
-        RETURN(true);
-      END_IF;
-    END_REPEAT;
-    RETURN(false);
-  END_IF;
-  IF 'ELEMENTARY_SPACE' IN types1
-  THEN
-    IF sp1\elementary_space.space_id = es_generics
-    THEN
-      RETURN(true);
-    END_IF;
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      RETURN(compatible_es_values(sp1\elementary_space.space_id, sp2\elementary_space.space_id));
-    END_IF;
-    IF ('FINITE_INTEGER_INTERVAL' IN types2) OR ('INTEGER_INTERVAL_FROM_MIN' IN types2) OR
-       ('INTEGER_INTERVAL_TO_MAX' IN types2)
-    THEN
-      RETURN(compatible_es_values(sp1\elementary_space.space_id, es_integers));
-    END_IF;
-    IF ('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN' IN types2) OR ('REAL_INTERVAL_TO_MAX' IN types2)
-    THEN
-      RETURN(compatible_es_values(sp1\elementary_space.space_id, es_reals));
-    END_IF;
-    IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types2) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types2)
-    THEN
-      RETURN(compatible_es_values(sp1\elementary_space.space_id, es_complex_numbers));
-    END_IF;
-    IF 'TUPLE_SPACE' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'FUNCTION_SPACE' IN types2
-    THEN
-      RETURN(bool(sp1\elementary_space.space_id = es_maths_functions));
-    END_IF;
-    RETURN(true);
-  END_IF;
-  IF 'ELEMENTARY_SPACE' IN types2
-  THEN
-    IF sp2\elementary_space.space_id = es_generics
-    THEN
-      RETURN(true);
-    END_IF;
-    IF ('FINITE_INTEGER_INTERVAL' IN types1) OR ('INTEGER_INTERVAL_FROM_MIN' IN types1) OR
-       ('INTEGER_INTERVAL_TO_MAX' IN types1)
-    THEN
-      RETURN(compatible_es_values(sp2\elementary_space.space_id, es_integers));
-    END_IF;
-    IF ('FINITE_REAL_INTERVAL' IN types1) OR ('REAL_INTERVAL_FROM_MIN' IN types1) OR ('REAL_INTERVAL_TO_MAX' IN types1)
-    THEN
-      RETURN(compatible_es_values(sp2\elementary_space.space_id, es_reals));
-    END_IF;
-    IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types1) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types1)
-    THEN
-      RETURN(compatible_es_values(sp2\elementary_space.space_id, es_complex_numbers));
-    END_IF;
-    IF 'TUPLE_SPACE' IN types1
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'FUNCTION_SPACE' IN types1
-    THEN
-      RETURN(bool(sp2\elementary_space.space_id = es_maths_functions));
-    END_IF;
-    RETURN(true);
-  END_IF;
-  IF subspace_of_es(sp1, es_integers)
-  THEN
-    IF subspace_of_es(sp2, es_integers)
-    THEN
-      RETURN(compatible_intervals(sp1, sp2));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(sp2, es_integers)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(sp1, es_reals)
-  THEN
-    IF subspace_of_es(sp2, es_reals)
-    THEN
-      RETURN(compatible_intervals(sp1, sp2));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(sp2, es_reals)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(sp1, es_complex_numbers)
-  THEN
-    IF subspace_of_es(sp2, es_complex_numbers)
-    THEN
-      RETURN(compatible_complex_number_regions(sp1, sp2));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(sp2, es_complex_numbers)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'UNIFORM_PRODUCT_SPACE' IN types1
-  THEN
-    IF 'UNIFORM_PRODUCT_SPACE' IN types2
-    THEN
-      IF sp1\uniform_product_space.exponent <> sp2\uniform_product_space.exponent
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(compatible_spaces(sp1\uniform_product_space.base, sp2\uniform_product_space.base));
-    END_IF;
-    IF 'LISTED_PRODUCT_SPACE' IN types2
-    THEN
-      n := SIZEOF(sp2\listed_product_space.factors);
-      IF sp1\uniform_product_space.exponent <> n
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO n;
-        IF NOT compatible_spaces(sp1\uniform_product_space.base, sp2\listed_product_space.factors[i])
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(true);
-    END_IF;
-    IF 'EXTENDED_TUPLE_SPACE' IN types2
-    THEN
-      m := sp1\uniform_product_space.exponent;
-      n := space_dimension(sp2\extended_tuple_space.base);
-      IF m < n
-      THEN
-        RETURN(false);
-      END_IF;
-      IF m = n
-      THEN
-        RETURN(compatible_spaces(sp1, sp2\extended_tuple_space.base));
-      END_IF;
-      RETURN(compatible_spaces(sp1,
-                               assoc_product_space(sp2\extended_tuple_space.base,
-                                                   make_uniform_product_space(sp2\extended_tuple_space.extender,
-                                                                              m - n))));
-    END_IF;
-    IF 'FUNCTION_SPACE' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    RETURN(true);
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN types1
-  THEN
-    n := SIZEOF(sp1\listed_product_space.factors);
-    IF 'UNIFORM_PRODUCT_SPACE' IN types2
-    THEN
-      IF n <> sp2\uniform_product_space.exponent
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO n;
-        IF NOT compatible_spaces(sp2\uniform_product_space.base, sp1\listed_product_space.factors[i])
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(true);
-    END_IF;
-    IF 'LISTED_PRODUCT_SPACE' IN types2
-    THEN
-      IF n <> SIZEOF(sp2\listed_product_space.factors)
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO n;
-        IF NOT compatible_spaces(sp1\listed_product_space.factors[i], sp2\listed_product_space.factors[i])
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(true);
-    END_IF;
-    IF 'EXTENDED_TUPLE_SPACE' IN types2
-    THEN
-      m := space_dimension(sp2\extended_tuple_space.base);
-      IF n < m
-      THEN
-        RETURN(false);
-      END_IF;
-      IF n = m
-      THEN
-        RETURN(compatible_spaces(sp1, sp2\extended_tuple_space.base));
-      END_IF;
-      RETURN(compatible_spaces(sp1,
-                               assoc_product_space(sp2\extended_tuple_space.base,
-                                                   make_uniform_product_space(sp2\extended_tuple_space.extender,
-                                                                              n - m))));
-    END_IF;
-    IF (schema_prefix + 'FUNCTION_SPACE') IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    RETURN(true);
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN types1
-  THEN
-    IF ('UNIFORM_PRODUCT_SPACE' IN types2) OR ('LISTED_PRODUCT_SPACE' IN types2)
-    THEN
-      RETURN(compatible_spaces(sp2, sp1));
-    END_IF;
-    IF 'EXTENDED_TUPLE_SPACE' IN types2
-    THEN
-      IF NOT compatible_spaces(sp1\extended_tuple_space.extender, sp2\extended_tuple_space.extender)
-      THEN
-        RETURN(false);
-      END_IF;
-      n := space_dimension(sp1\extended_tuple_space.base);
-      m := space_dimension(sp2\extended_tuple_space.base);
-      IF n < m
-      THEN
-        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));
-      END_IF;
-      IF n = m
-      THEN
-        RETURN(compatible_spaces(sp1\extended_tuple_space.base, sp2\extended_tuple_space.base));
-      END_IF;
-      IF n > m
-      THEN
-        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))));
-      END_IF;
-    END_IF;
-    IF 'FUNCTION_SPACE' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    RETURN(true);
-  END_IF;
-  IF 'FUNCTION_SPACE' IN types1
-  THEN
-    IF 'FUNCTION_SPACE' IN types2
-    THEN
-      s1 := sp1\function_space.domain_argument;
-      s2 := sp2\function_space.domain_argument;
-      CASE sp1\function_space.domain_constraint OF
-        sc_equal : BEGIN  
-                          CASE sp2\function_space.domain_constraint OF
-                            sc_equal : lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
-                            sc_subspace : lgcl := subspace_of(s1, s2);
-                            sc_member : lgcl := member_of(s1, s2);
-                          END_CASE;
-        END;
-        sc_subspace : BEGIN  
-                             CASE sp2\function_space.domain_constraint OF
-                               sc_equal : lgcl := subspace_of(s2, s1);
-                               sc_subspace : lgcl := compatible_spaces(s1, s2);
-                               sc_member : lgcl := unknown;
-                             END_CASE;
-        END;
-        sc_member : BEGIN  
-                           CASE sp2\function_space.domain_constraint OF
-                             sc_equal : lgcl := member_of(s2, s1);
-                             sc_subspace : lgcl := unknown;
-                             sc_member : lgcl := compatible_spaces(s1, s2);
-                           END_CASE;
-        END;
-      END_CASE;
-      IF lgcl = false
-      THEN
-        RETURN(false);
-      END_IF;
-      s1 := sp1\function_space.range_argument;
-      s2 := sp2\function_space.range_argument;
-      CASE sp1\function_space.range_constraint OF
-        sc_equal : BEGIN  
-                          CASE sp2\function_space.range_constraint OF
-                            sc_equal : lgcl := subspace_of(s1, s2) AND subspace_of(s2, s1);
-                            sc_subspace : lgcl := subspace_of(s1, s2);
-                            sc_member : lgcl := member_of(s1, s2);
-                          END_CASE;
-        END;
-        sc_subspace : BEGIN  
-                             CASE sp2\function_space.range_constraint OF
-                               sc_equal : lgcl := subspace_of(s2, s1);
-                               sc_subspace : lgcl := compatible_spaces(s1, s2);
-                               sc_member : lgcl := unknown;
-                             END_CASE;
-        END;
-        sc_member : BEGIN  
-                           CASE sp2\function_space.range_constraint OF
-                             sc_equal : lgcl := member_of(s2, s1);
-                             sc_subspace : lgcl := unknown;
-                             sc_member : lgcl := compatible_spaces(s1, s2);
-                           END_CASE;
-        END;
-      END_CASE;
-      IF lgcl = false
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(true);
-    END_IF;
-    RETURN(true);
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION composable_sequence(operands : LIST [2 : ?] OF maths_function) : BOOLEAN;
-  REPEAT i := 1 TO SIZEOF(operands) - 1;
-    IF NOT compatible_spaces(operands[i].range, operands[i + 1].domain)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION compute_total_depth(swsrh : solid_with_stepped_round_hole) : positive_length_measure;
-LOCAL
-  i  : positive_integer;
-  n  : positive_integer        := swsrh.segments;
-  td : positive_length_measure := swsrh.segment_depths[1];
-END_LOCAL;
-  IF n = 1
-  THEN
-    RETURN(td);
-  ELSE
-    REPEAT i := 2 TO n;
-      td := td + swsrh.segment_depths[i];
-    END_REPEAT;
-  END_IF;
-  RETURN(td);
-END_FUNCTION;
-
-FUNCTION conditional_reverse(p : BOOLEAN;
-                             an_item : reversible_topology) : reversible_topology;
-  IF p
-  THEN
-    RETURN(an_item);
-  ELSE
-    RETURN(topology_reversed(an_item));
-  END_IF;
-END_FUNCTION;
-
-FUNCTION consistent_sizes(max : INTEGER;
-                          point_lists : LIST OF point_cloud_dataset) : BOOLEAN;
-LOCAL
-  ndatasets : INTEGER := SIZEOF(point_lists);
-  result    : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 1 TO (ndatasets - 1);
-    IF (SIZEOF(point_lists[i].point_coordinates) <> max)
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  IF (SIZEOF(point_lists[ndatasets].point_coordinates) > max)
-  THEN
-    result := false;
-    RETURN(result);
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION constraints_composite_curve_on_surface(c : composite_curve_on_surface) : BOOLEAN;
-LOCAL
-  n_segments : INTEGER := SIZEOF(c.segments);
-END_LOCAL;
-  REPEAT k := 1 TO n_segments;
-    IF (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-             TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
-       (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN
-             TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
-       (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN
-             TYPEOF(c\composite_curve.segments[k].parent_curve)))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION constraints_geometry_shell_based_surface_model(m : shell_based_surface_model) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
-    IF (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[j])) AND
-            (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN TYPEOF(m.sbsm_boundary[j]))))
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION constraints_geometry_shell_based_wireframe_model(m : shell_based_wireframe_model) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT j := 1 TO SIZEOF(m.sbwm_boundary);
-    IF (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN TYPEOF(m.sbwm_boundary[j])) AND
-            (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN TYPEOF(m.sbwm_boundary[j]))))
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION constraints_param_b_spline(degree : INTEGER;
-                                    up_knots : INTEGER;
-                                    up_cp : INTEGER;
-                                    knot_mult : LIST [0 : ?] OF INTEGER;
-                                    knots : LIST [0 : ?] OF parameter_value) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-  k      : INTEGER;
-  sum    : INTEGER;
-END_LOCAL;
-  (* Find sum of knot multiplicities. *)
-  sum := knot_mult[1];
-  REPEAT i := 2 TO up_knots;
-    sum := sum + knot_mult[i];
-  END_REPEAT;
-  (* Check limits holding for all B-spline parametrisations *)
-  IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> (degree + up_cp + 2))
-  THEN
-    result := false;
-    RETURN(result);
-  END_IF;
-  k := knot_mult[1];
-  IF (k < 1) OR (k > degree + 1)
-  THEN
-    result := false;
-    RETURN(result);
-  END_IF;
-  REPEAT i := 2 TO up_knots;
-    IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1])
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-    k := knot_mult[i];
-    IF (i < up_knots) AND (k > degree)
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-    IF (i = up_knots) AND (k > degree + 1)
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION constraints_param_local_b_spline(degree : INTEGER;
-                                          knot_mult : LIST OF INTEGER;
-                                          knots : LIST OF INTEGER) : BOOLEAN;
-LOCAL
-  result   : BOOLEAN := true;
-  k        : INTEGER;
-  up_knots : INTEGER;
-  sum      : INTEGER;
-END_LOCAL;
-  (* Find sum of knot multiplicities. *)
-  up_knots := SIZEOF(knots);
-  sum := knot_mult[1];
-  REPEAT i := 2 TO up_knots;
-    sum := sum + knot_mult[i];
-  END_REPEAT;
-  (* Check limits holding for all B-spline parametrisations *)
-  IF (degree < 1) OR (up_knots < 2) OR (sum <> (degree + 2))
-  THEN
-    result := false;
-    RETURN(result);
-  END_IF;
-  k := knot_mult[1];
-  IF (k < 1) OR (k > degree + 1)
-  THEN
-    result := false;
-    RETURN(result);
-  END_IF;
-  (* first pointer shall be 1 or more *)
-  IF (knots[1] < 1)
-  THEN
-    result := false;
-  END_IF;
-  REPEAT i := 2 TO up_knots;
-    IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1])
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-    k := knot_mult[i];
-    IF (i < up_knots) AND (k > degree)
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-    IF (i = up_knots) AND (k > degree + 1)
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION constraints_rectangular_composite_surface(s : rectangular_composite_surface) : BOOLEAN;
-  REPEAT i := 1 TO s.n_u;
-    REPEAT j := 1 TO s.n_v;
-      IF NOT (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN
-               TYPEOF(s.segments[i][j].parent_surface)) OR
-              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN
-               TYPEOF(s.segments[i][j].parent_surface)))
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  (* Check the transition codes, omitting the last row or column *)
-  REPEAT i := 1 TO s.n_u - 1;
-    REPEAT j := 1 TO s.n_v;
-      IF s.segments[i][j].u_transition = discontinuous
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  REPEAT i := 1 TO s.n_u;
-    REPEAT j := 1 TO s.n_v - 1;
-      IF s.segments[i][j].v_transition = discontinuous
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION constraints_scaling(factors : LIST OF REAL) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(factors);
-    IF NOT ({0.0 < factors[i] <= 1.0})
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION control_characters_free(s : STRING) : BOOLEAN;
-LOCAL
-  ch : STRING;
-END_LOCAL;
-  REPEAT i := 1 TO LENGTH(s);
-    ch := s[i];
-    IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD')
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION convert_spatial_to_ypr_rotation(pair : kinematic_pair;
-                                         rotation : spatial_rotation) : ypr_rotation;
-LOCAL
-  axis       : direction;
-  angle      : plane_angle_measure;
-  conv_angle : plane_angle_measure;
-  ya         : plane_angle_measure;
-  pa         : plane_angle_measure;
-  ra         : plane_angle_measure;
-  ucf        : REAL;
-  dx         : REAL;
-  dy         : REAL;
-  dz         : REAL;
-  s_a        : REAL;
-  c_a        : REAL;
-  rotmat     : ARRAY [1 : 3] OF ARRAY [1 : 3] OF REAL;
-  cm1        : REAL;
-  s_y        : REAL;
-  c_y        : REAL;
-  s_r        : REAL;
-  c_r        : REAL;
-END_LOCAL;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.YPR_ROTATION' IN TYPEOF(rotation)
-  THEN
-    RETURN(rotation);
-  END_IF;
-  axis := normalise(rotation\rotation_about_direction.direction_of_axis);
-  angle := rotation\rotation_about_direction.rotation_angle;
-  IF (angle = 0.0)
-  THEN
-    RETURN([0.0,0.0,0.0]);
-  END_IF;
-  dx := axis.direction_ratios[1];
-  dy := axis.direction_ratios[2];
-  dz := axis.direction_ratios[3];
-  conv_angle := plane_angle_for_pair_in_radian(pair, angle);
-  IF NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(conv_angle))
-  THEN
-    RETURN(?);
-  END_IF;
-  ucf := angle / conv_angle;
-  s_a := SIN(conv_angle);
-  c_a := COS(conv_angle);
-  IF (dy = 0.0) AND (dx * dz = 0.0)
-  THEN
-    REPEAT WHILE (conv_angle <= -PI);
-      conv_angle := conv_angle + 2.0 * PI;
-    END_REPEAT;
-    REPEAT WHILE (conv_angle > PI);
-      conv_angle := conv_angle - 2.0 * PI;
-    END_REPEAT;
-    ya := ucf * conv_angle;
-    IF (conv_angle <> PI)
-    THEN
-      ra := -ya;
-    ELSE
-      ra := ya;
-    END_IF;
-    IF (dx <> 0.0)
-    THEN
-      IF (dx > 0.0)
-      THEN
-        RETURN([0.0,0.0,ya]);
-      ELSE
-        RETURN([0.0,0.0,ra]);
-      END_IF;
-    ELSE
-      IF (dz > 0.0)
-      THEN
-        RETURN([ya,0.0,0.0]);
-      ELSE
-        RETURN([ra,0.0,0.0]);
-      END_IF;
-    END_IF;
-  END_IF;
-  IF ((dy <> 0.0) AND (dx = 0.0) AND (dz = 0.0))
-  THEN
-    IF (c_a >= 0.0)
-    THEN
-      ya := 0.0;
-      ra := 0.0;
-    ELSE
-      ya := ucf * PI;
-      ra := ya;
-    END_IF;
-    pa := ucf * ATAN(s_a, ABS(c_a));
-    IF (dy < 0.0)
-    THEN
-      pa := -pa;
-    END_IF;
-    RETURN([ya,pa,ra]);
-  END_IF;
-  cm1 := 1.0 - c_a;
-  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]];
-  IF (ABS(rotmat[1][3]) = 1.0)
-  THEN
-    BEGIN  
-           IF (rotmat[1][3] = 1.0)
-           THEN
-             pa := 0.5 * PI;
-           ELSE
-             pa := -0.5 * PI;
-           END_IF;
-           ra := 0.0;
-           ya := ATAN(rotmat[2][1], rotmat[2][2]);
-           IF (rotmat[2][2] < 0.0)
-           THEN
-             IF ya <= 0.0
-             THEN
-               ya := ya + PI;
-             ELSE
-               ya := ya - PI;
-             END_IF;
-           END_IF;
-    END;
-  ELSE
-    BEGIN  
-           ya := ATAN(-rotmat[1][2], rotmat[1][1]);
-           IF (rotmat[1][1] < 0.0)
-           THEN
-             IF (ya <= 0.0)
-             THEN
-               ya := ya + PI;
-             ELSE
-               ya := ya - PI;
-             END_IF;
-           END_IF;
-           ra := ATAN(-rotmat[2][3], rotmat[3][3]);
-           IF (rotmat[3][3] < 0.0)
-           THEN
-             IF (ra <= 0.0)
-             THEN
-               ra := ra + PI;
-             ELSE
-               ra := ra - PI;
-             END_IF;
-           END_IF;
-           s_y := SIN(ya);
-           c_y := COS(ya);
-           s_r := SIN(ra);
-           c_r := COS(ra);
-           IF ((ABS(s_y) > ABS(c_y)) AND (ABS(s_y) > ABS(s_r)) AND (ABS(s_y) > ABS(c_r)))
-           THEN
-             cm1 := -rotmat[1][2] / s_y;
-           ELSE
-             IF ((ABS(c_y) > ABS(s_r)) AND (ABS(c_y) > ABS(c_r)))
-             THEN
-               cm1 := rotmat[1][1] / c_y;
-             ELSE
-               IF (ABS(s_r) > ABS(c_r))
-               THEN
-                 cm1 := -rotmat[2][3] / s_r;
-               ELSE
-                 cm1 := rotmat[3][3] / c_r;
-               END_IF;
-             END_IF;
-           END_IF;
-           pa := ATAN(rotmat[1][3], cm1);
-    END;
-  END_IF;
-  ya := ya * ucf;
-  pa := pa * ucf;
-  ra := ra * ucf;
-  RETURN([ya,pa,ra]);
-END_FUNCTION;
-
-FUNCTION convert_to_literal(val : maths_atom) : generic_literal;
-LOCAL
-  types : SET OF STRING := TYPEOF(val);
-END_LOCAL;
-  IF 'INTEGER' IN types
-  THEN
-    RETURN(make_int_literal(val));
-  END_IF;
-  IF 'REAL' IN types
-  THEN
-    RETURN(make_real_literal(val));
-  END_IF;
-  IF 'BOOLEAN' IN types
-  THEN
-    RETURN(make_boolean_literal(val));
-  END_IF;
-  IF 'STRING' IN types
-  THEN
-    RETURN(make_string_literal(val));
-  END_IF;
-  IF 'LOGICAL' IN types
-  THEN
-    RETURN(make_logical_literal(val));
-  END_IF;
-  IF 'BINARY' IN types
-  THEN
-    RETURN(make_binary_literal(val));
-  END_IF;
-  IF (schema_prefix + 'MATHS_ENUM_ATOM') IN types
-  THEN
-    RETURN(make_maths_enum_literal(val));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION convert_to_maths_function(func : maths_function_select) : maths_function;
-LOCAL
-  efenum : elementary_function_enumerators;
-  mthfun : maths_function;
-END_LOCAL;
-  IF (schema_prefix + 'MATHS_FUNCTION') IN TYPEOF(func)
-  THEN
-    mthfun := func;
-  ELSE
-    efenum := func;
-    mthfun := make_elementary_function(efenum);
-  END_IF;
-  RETURN(mthfun);
-END_FUNCTION;
-
-FUNCTION convert_to_operand(val : maths_value) : generic_expression;
-LOCAL
-  types : SET OF STRING := stripped_typeof(val);
-END_LOCAL;
-  IF 'GENERIC_EXPRESSION' IN types
-  THEN
-    RETURN(val);
-  END_IF;
-  IF 'MATHS_ATOM' IN types
-  THEN
-    RETURN(convert_to_literal(val));
-  END_IF;
-  IF 'ATOM_BASED_VALUE' IN types
-  THEN
-    RETURN(make_atom_based_literal(val));
-  END_IF;
-  IF 'MATHS_TUPLE' IN types
-  THEN
-    RETURN(make_maths_tuple_literal(val));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION convert_to_operands(values : AGGREGATE OF maths_value) : LIST OF generic_expression;
-LOCAL
-  operands : LIST OF generic_expression := [];
-  loc      : INTEGER                    := 0;
-END_LOCAL;
-  IF NOT EXISTS(values)
-  THEN
-    RETURN(?);
-  END_IF;
-  REPEAT i := LOINDEX(values) TO HIINDEX(values);
-    INSERT(operands, convert_to_operand(values[i]), loc);
-    loc := loc + 1;
-  END_REPEAT;
-  RETURN(operands);
-END_FUNCTION;
-
-FUNCTION convert_to_operands_prcmfn(srcdom : maths_space_or_function;
-                                    prepfun : LIST OF maths_function;
-                                    finfun : maths_function_select) : LIST [2 : ?] OF generic_expression;
-LOCAL
-  operands : LIST OF generic_expression := [];
-END_LOCAL;
-  INSERT(operands, srcdom, 0);
-  REPEAT i := 1 TO SIZEOF(prepfun);
-    INSERT(operands, prepfun[i], i);
-  END_REPEAT;
-  INSERT(operands, convert_to_maths_function(finfun), SIZEOF(prepfun) + 1);
-  RETURN(operands);
-END_FUNCTION;
-
-FUNCTION cross_product(arg1 : direction;
-                       arg2 : direction) : vector;
-LOCAL
-  mag    : REAL;
-  res    : direction;
-  v1     : LIST [3 : 3] OF REAL;
-  v2     : LIST [3 : 3] OF REAL;
-  result : vector;
-END_LOCAL;
-  IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.dim = 2))
-  THEN
-    RETURN(?);
-  ELSE
-    BEGIN  
-           v1 := normalise(arg1).direction_ratios;
-           v2 := normalise(arg2).direction_ratios;
-           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])]);
-           mag := 0.0;
-           REPEAT i := 1 TO 3;
-             mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
-           END_REPEAT;
-           IF (mag > 0.0)
-           THEN
-             result := dummy_gri || vector(res, SQRT(mag));
-           ELSE
-             result := dummy_gri || vector(arg1, 0.0);
-           END_IF;
-           RETURN(result);
-    END;
-  END_IF;
-END_FUNCTION;
-
-FUNCTION curve_weights_positive(b : rational_b_spline_curve) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 0 TO b.upper_index_on_control_points;
-    IF b.weights[i] <= 0.0
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION default_tolerance_table_cell_wr2(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF SIZEOF(agg) <= 5
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION default_tolerance_table_cell_wr3(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(QUERY(i
-                          <* agg
-                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                              TYPEOF(i)) AND
-                             (i\representation_item.name = 'significant number of digits')))) =
-             1) OR
-            ((SIZEOF(QUERY(i
-                           <* agg
-                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                               TYPEOF(i)) AND
-                              (i\representation_item.name = 'lower limit')))) =
-              1) AND
-             (SIZEOF(QUERY(i
-                           <* agg
-                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                               TYPEOF(i)) AND
-                              (i\representation_item.name = 'upper limit')))) =
-              1))
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION default_tolerance_table_cell_wr4(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(QUERY(i
-                          <* agg
-                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                              TYPEOF(i)) AND
-                             (i\representation_item.name = 'plus minus tolerance value')))) =
-             1) OR
-            ((SIZEOF(QUERY(i
-                           <* agg
-                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                               TYPEOF(i)) AND
-                              (i\representation_item.name = 'lower tolerance value')))) =
-              1) AND
-             (SIZEOF(QUERY(i
-                           <* agg
-                           | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                               TYPEOF(i)) AND
-                              (i\representation_item.name = 'upper tolerance value')))) =
-              1))
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION default_tolerance_table_cell_wr5(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(QUERY(i
-                          <* agg
-                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                             TYPEOF(i)))) <=
-             1) AND
-            (SIZEOF(QUERY(i
-                          <* agg
-                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                             TYPEOF(i)))) =
-             SIZEOF(QUERY(i
-                          <* agg
-                          | (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                              TYPEOF(i)) AND
-                             (i\representation_item.name = 'cell description')))))
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION definite_integral_check(domain : tuple_space;
-                                 vrblint : input_selector;
-                                 lowerinf : BOOLEAN;
-                                 upperinf : BOOLEAN) : BOOLEAN;
-LOCAL
-  domn : tuple_space         := domain;
-  fspc : maths_space;
-  dim  : nonnegative_integer;
-  k    : positive_integer;
-END_LOCAL;
-  IF (space_dimension(domain) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(domain)))
-  THEN
-    domn := factor1(domain);
-  END_IF;
-  dim := space_dimension(domn);
-  k := vrblint;
-  IF k > dim
-  THEN
-    RETURN(false);
-  END_IF;
-  fspc := factor_space(domn, k);
-  IF NOT ((schema_prefix + 'REAL_INTERVAL') IN TYPEOF(fspc))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF lowerinf AND min_exists(fspc)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF upperinf AND max_exists(fspc)
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION definite_integral_expr_check(operands : LIST [2 : ?] OF generic_expression;
-                                      lowerinf : BOOLEAN;
-                                      upperinf : BOOLEAN) : BOOLEAN;
-LOCAL
-  nops : INTEGER             := 2;
-  vspc : maths_space;
-  dim  : nonnegative_integer;
-  k    : positive_integer;
-  bspc : maths_space;
-END_LOCAL;
-  IF NOT lowerinf
-  THEN
-    nops := nops + 1;
-  END_IF;
-  IF NOT upperinf
-  THEN
-    nops := nops + 1;
-  END_IF;
-  IF SIZEOF(operands) <> nops
-  THEN
-    RETURN(false);
-  END_IF;
-  IF NOT ('GENERIC_VARIABLE' IN stripped_typeof(operands[2]))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF NOT has_values_space(operands[2])
-  THEN
-    RETURN(false);
-  END_IF;
-  vspc := values_space_of(operands[2]);
-  IF NOT ('REAL_INTERVAL' IN stripped_typeof(vspc))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF lowerinf
-  THEN
-    IF min_exists(vspc)
-    THEN
-      RETURN(false);
-    END_IF;
-    k := 3;
-  ELSE
-    IF NOT has_values_space(operands[3])
-    THEN
-      RETURN(false);
-    END_IF;
-    bspc := values_space_of(operands[3]);
-    IF NOT compatible_spaces(bspc, vspc)
-    THEN
-      RETURN(false);
-    END_IF;
-    k := 4;
-  END_IF;
-  IF upperinf
-  THEN
-    IF max_exists(vspc)
-    THEN
-      RETURN(false);
-    END_IF;
-  ELSE
-    IF NOT has_values_space(operands[k])
-    THEN
-      RETURN(false);
-    END_IF;
-    bspc := values_space_of(operands[k]);
-    IF NOT compatible_spaces(bspc, vspc)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION dependently_instantiated(set_of_input_instances : SET OF GENERIC : IGEN;
-                                  set_of_input_types : SET OF STRING;
-                                  previous_in_chain : LIST OF GENERIC : CGEN) : BOOLEAN;
-(* 'dependently_instantiated' To test whether all instances in the
-   input set_of_input_instances are referenced by independently
-   instantiable instances. If so, this function returns true.
-   Set_of_input_types includes the type strings for all input instances.
-   The instances in previous_in_chain are used to detect cyclic
-   references during recursive calls to this function. The parameter
-   lists already tested instances in a chain of references.
-    *)
-LOCAL
-  number_of_input_instances     : INTEGER;
-  number_of_referring_instances : INTEGER;
-  bag_of_referring_instances    : BAG OF GENERIC : IGEN  := [];
-  dependently_instantiated_flag : BOOLEAN;
-  previous_in_chain_plus        : LIST OF GENERIC : CGEN := [];
-  result                        : BOOLEAN                := true;
-  set_of_types                  : SET OF STRING          := [];
-END_LOCAL;
-  IF EXISTS(set_of_input_instances)
-  THEN
-    number_of_input_instances := SIZEOF(set_of_input_instances);
-    set_of_input_types := set_of_input_types + 'GENERIC';
-    REPEAT i := 1 TO number_of_input_instances;
-      bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
-      IF EXISTS(bag_of_referring_instances)
-      THEN
-        number_of_referring_instances := SIZEOF(bag_of_referring_instances);
-        dependently_instantiated_flag := false;
-        REPEAT j := 1 TO number_of_referring_instances;
-          set_of_types := TYPEOF(bag_of_referring_instances[j]);
-          IF set_of_types <= set_of_input_types
-          THEN
-            IF NOT (bag_of_referring_instances[j] IN previous_in_chain)
-            THEN
-              previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
-              IF dependently_instantiated([bag_of_referring_instances[j]], set_of_input_types, previous_in_chain_plus)
-              THEN
-                dependently_instantiated_flag := true;
-                ESCAPE;
-              ELSE
-                SKIP;
-              END_IF;
-            END_IF;
-          ELSE
-            dependently_instantiated_flag := true;
-            ESCAPE;
-          END_IF;
-        END_REPEAT;
-        IF NOT dependently_instantiated_flag
-        THEN
-          RETURN(false);
-        END_IF;
-      ELSE
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  ELSE
-    RETURN(false);
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION derive_angle(placement_1 : axis2_placement_3d;
-                      placement_2 : axis2_placement_3d) : plane_angle_measure;
-LOCAL
-  v1     : direction;
-  v2     : direction;
-  mag_v1 : REAL;
-  mag_v2 : REAL;
-  theta  : plane_angle_measure;
-END_LOCAL;
-  v1 := placement_1.p[1];
-  v2 := placement_2.p[1];
-  mag_v1 := SQRT((v1.direction_ratios[1] * v1.direction_ratios[1]) + (v1.direction_ratios[2] * v1.direction_ratios[2]));
-  mag_v2 := SQRT((v2.direction_ratios[1] * v2.direction_ratios[1]) + (v2.direction_ratios[2] * v2.direction_ratios[2]));
-  IF (mag_v1 = 0) OR (mag_v2 = 0)
-  THEN
-    theta := 0;
-    RETURN(theta);
-  END_IF;
-  theta := ACOS(((v1.direction_ratios[1] * v2.direction_ratios[1]) +
-                 (v1.direction_ratios[2] * v2.direction_ratios[2])) /
-                (mag_v1 * mag_v2));
-  RETURN(theta);
-END_FUNCTION;
-
-FUNCTION derive_definite_integral_domain(igrl : definite_integral_function) : tuple_space;
--- Internal utility function:
-FUNCTION process_product_space(spc : product_space;
-                               idx : INTEGER;
-                               prefix : INTEGER;
-                               vdomn : maths_space) : product_space;
-LOCAL
-  uspc    : uniform_product_space;
-  expnt   : INTEGER;
-  factors : LIST OF maths_space;
-END_LOCAL;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN TYPEOF(spc)
-  THEN
-    uspc := spc;
-    expnt := uspc.exponent + prefix;
-    IF idx <= uspc.exponent
-    THEN
-      expnt := expnt - 1;
-    END_IF;
-    IF expnt = 0
-    THEN
-      RETURN(make_listed_product_space([]));
-    ELSE
-      RETURN(make_uniform_product_space(uspc.base, expnt));
-    END_IF;
-  ELSE
-    factors := spc\listed_product_space.factors;
-    IF idx <= SIZEOF(factors)
-    THEN
-      REMOVE(factors, idx);
-    END_IF;
-    IF prefix > 0
-    THEN
-      INSERT(factors, vdomn, 0);
-      IF prefix > 1
-      THEN
-        INSERT(factors, vdomn, 0);
-      END_IF;
-    END_IF;
-    RETURN(make_listed_product_space(factors));
-  END_IF;
-END_FUNCTION;
-LOCAL
-  idomn  : tuple_space          := igrl.integrand.domain;
-  types  : SET OF STRING        := TYPEOF(idomn);
-  idx    : INTEGER              := igrl.variable_of_integration;
-  tupled : BOOLEAN              := bool(((space_dimension(idomn) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN types)));
-  prefix : INTEGER              := 0;
-  espc   : extended_tuple_space;
-  vdomn  : maths_space;
-END_LOCAL;
-  IF tupled
-  THEN
-    idomn := factor1(idomn);
-    types := TYPEOF(idomn);
-  END_IF;
-  IF igrl.lower_limit_neg_infinity
-  THEN
-    prefix := prefix + 1;
-  END_IF;
-  IF igrl.upper_limit_pos_infinity
-  THEN
-    prefix := prefix + 1;
-  END_IF;
-  vdomn := factor_space(idomn, idx);
-  IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN types
-  THEN
-    espc := idomn;
-    idomn := make_extended_tuple_space(process_product_space(espc.base, idx, prefix, vdomn), espc.extender);
-  ELSE
-    idomn := process_product_space(idomn, idx, prefix, vdomn);
-  END_IF;
-  IF tupled
-  THEN
-    RETURN(one_tuples_of(idomn));
-  ELSE
-    RETURN(idomn);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION derive_dimensional_exponents(x : unit) : dimensional_exponents;
-LOCAL
-  result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-END_LOCAL;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT' IN TYPEOF(x)
-  THEN
-    REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements);
-      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);
-      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);
-      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);
-      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);
-      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);
-      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);
-      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);
-    END_REPEAT;
-  ELSE
-    result := x\named_unit.dimensions;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION derive_elementary_function_domain(ef_val : elementary_function_enumerators) : tuple_space;
-  IF NOT EXISTS(ef_val)
-  THEN
-    RETURN(?);
-  END_IF;
-  CASE ef_val OF
-    ef_and : RETURN(make_extended_tuple_space(the_zero_tuple_space, the_logicals));
-    ef_or : RETURN(make_extended_tuple_space(the_zero_tuple_space, the_logicals));
-    ef_not : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_xor : RETURN(make_uniform_product_space(the_logicals, 2));
-    ef_negate_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_add_i : RETURN(the_integer_tuples);
-    ef_subtract_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_multiply_i : RETURN(the_integer_tuples);
-    ef_divide_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_mod_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_exponentiate_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_eq_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_ne_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_gt_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_lt_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_ge_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_le_i : RETURN(make_uniform_product_space(the_integers, 2));
-    ef_abs_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_if_i : RETURN(make_listed_product_space([the_logicals,the_integers,the_integers]));
-    ef_negate_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_reciprocal_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_add_r : RETURN(the_real_tuples);
-    ef_subtract_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_multiply_r : RETURN(the_real_tuples);
-    ef_divide_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_mod_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_exponentiate_r : RETURN(make_listed_product_space([the_nonnegative_reals,the_reals]));
-    ef_exponentiate_ri : RETURN(make_listed_product_space([the_reals,the_integers]));
-    ef_eq_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_ne_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_gt_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_lt_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_ge_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_le_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_abs_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_acos_r : RETURN(make_uniform_product_space(the_neg1_one_interval, 1));
-    ef_asin_r : RETURN(make_uniform_product_space(the_neg1_one_interval, 1));
-    ef_atan2_r : RETURN(make_uniform_product_space(the_reals, 2));
-    ef_cos_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_exp_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_ln_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_log2_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_log10_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_sin_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_sqrt_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_tan_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_if_r : RETURN(make_listed_product_space([the_logicals,the_reals,the_reals]));
-    ef_negate_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_reciprocal_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_add_c : RETURN(the_complex_tuples);
-    ef_subtract_c : RETURN(make_uniform_product_space(the_complex_numbers, 2));
-    ef_multiply_c : RETURN(the_complex_tuples);
-    ef_divide_c : RETURN(make_uniform_product_space(the_complex_numbers, 2));
-    ef_exponentiate_c : RETURN(make_uniform_product_space(the_complex_numbers, 2));
-    ef_exponentiate_ci : RETURN(make_listed_product_space([the_complex_numbers,the_integers]));
-    ef_eq_c : RETURN(make_uniform_product_space(the_complex_numbers, 2));
-    ef_ne_c : RETURN(make_uniform_product_space(the_complex_numbers, 2));
-    ef_conjugate_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_abs_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_arg_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_cos_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_exp_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_ln_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_sin_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_sqrt_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_tan_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_if_c : RETURN(make_listed_product_space([the_logicals,the_complex_numbers,the_complex_numbers]));
-    ef_subscript_s : RETURN(make_listed_product_space([the_strings,the_integers]));
-    ef_eq_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_ne_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_gt_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_lt_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_ge_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_le_s : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_subsequence_s : RETURN(make_listed_product_space([the_strings,the_integers,the_integers]));
-    ef_concat_s : RETURN(make_extended_tuple_space(the_zero_tuple_space, the_strings));
-    ef_size_s : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_format : RETURN(make_listed_product_space([the_numbers,the_strings]));
-    ef_value : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_like : RETURN(make_uniform_product_space(the_strings, 2));
-    ef_if_s : RETURN(make_listed_product_space([the_logicals,the_strings,the_strings]));
-    ef_subscript_b : RETURN(make_listed_product_space([the_binarys,the_integers]));
-    ef_eq_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_ne_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_gt_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_lt_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_ge_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_le_b : RETURN(make_uniform_product_space(the_binarys, 2));
-    ef_subsequence_b : RETURN(make_listed_product_space([the_binarys,the_integers,the_integers]));
-    ef_concat_b : RETURN(make_extended_tuple_space(the_zero_tuple_space, the_binarys));
-    ef_size_b : RETURN(make_uniform_product_space(the_binarys, 1));
-    ef_if_b : RETURN(make_listed_product_space([the_logicals,the_binarys,the_binarys]));
-    ef_subscript_t : RETURN(make_listed_product_space([the_tuples,the_integers]));
-    ef_eq_t : RETURN(make_uniform_product_space(the_tuples, 2));
-    ef_ne_t : RETURN(make_uniform_product_space(the_tuples, 2));
-    ef_concat_t : RETURN(make_extended_tuple_space(the_zero_tuple_space, the_tuples));
-    ef_size_t : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_entuple : RETURN(the_tuples);
-    ef_detuple : RETURN(make_uniform_product_space(the_generics, 1));
-    ef_insert : RETURN(make_listed_product_space([the_tuples,the_generics,the_integers]));
-    ef_remove : RETURN(make_listed_product_space([the_tuples,the_integers]));
-    ef_if_t : RETURN(make_listed_product_space([the_logicals,the_tuples,the_tuples]));
-    ef_sum_it : RETURN(make_uniform_product_space(the_integer_tuples, 1));
-    ef_product_it : RETURN(make_uniform_product_space(the_integer_tuples, 1));
-    ef_add_it : RETURN(make_extended_tuple_space(the_integer_tuples, the_integer_tuples));
-    ef_subtract_it : RETURN(make_uniform_product_space(the_integer_tuples, 2));
-    ef_scalar_mult_it : RETURN(make_listed_product_space([the_integers,the_integer_tuples]));
-    ef_dot_prod_it : RETURN(make_uniform_product_space(the_integer_tuples, 2));
-    ef_sum_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_product_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_add_rt : RETURN(make_extended_tuple_space(the_real_tuples, the_real_tuples));
-    ef_subtract_rt : RETURN(make_uniform_product_space(the_real_tuples, 2));
-    ef_scalar_mult_rt : RETURN(make_listed_product_space([the_reals,the_real_tuples]));
-    ef_dot_prod_rt : RETURN(make_uniform_product_space(the_real_tuples, 2));
-    ef_norm_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_sum_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_product_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_add_ct : RETURN(make_extended_tuple_space(the_complex_tuples, the_complex_tuples));
-    ef_subtract_ct : RETURN(make_uniform_product_space(the_complex_tuples, 2));
-    ef_scalar_mult_ct : RETURN(make_listed_product_space([the_complex_numbers,the_complex_tuples]));
-    ef_dot_prod_ct : RETURN(make_uniform_product_space(the_complex_tuples, 2));
-    ef_norm_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_if : RETURN(make_listed_product_space([the_logicals,the_generics,the_generics]));
-    ef_ensemble : RETURN(the_tuples);
-    ef_member_of : RETURN(make_listed_product_space([the_generics,the_maths_spaces]));
-    OTHERWISE: RETURN(?);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION derive_elementary_function_range(ef_val : elementary_function_enumerators) : tuple_space;
-  IF NOT EXISTS(ef_val)
-  THEN
-    RETURN(?);
-  END_IF;
-  CASE ef_val OF
-    ef_and : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_or : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_not : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_xor : RETURN(make_uniform_product_space(the_logicals, 2));
-    ef_negate_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_add_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_subtract_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_multiply_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_divide_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_mod_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_exponentiate_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_eq_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_gt_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_lt_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ge_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_le_i : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_abs_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_if_i : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_negate_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_reciprocal_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_add_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_subtract_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_multiply_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_divide_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_mod_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_exponentiate_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_exponentiate_ri : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_eq_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_gt_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_lt_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ge_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_le_r : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_abs_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_acos_r : RETURN(make_uniform_product_space(the_zero_pi_interval, 1));
-    ef_asin_r : RETURN(make_uniform_product_space(the_neghalfpi_halfpi_interval, 1));
-    ef_atan2_r : RETURN(make_uniform_product_space(the_negpi_pi_interval, 1));
-    ef_cos_r : RETURN(make_uniform_product_space(the_neg1_one_interval, 1));
-    ef_exp_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_ln_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_log2_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_log10_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_sin_r : RETURN(make_uniform_product_space(the_neg1_one_interval, 1));
-    ef_sqrt_r : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_tan_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_if_r : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_negate_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_reciprocal_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_add_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_subtract_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_multiply_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_divide_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_exponentiate_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_exponentiate_ci : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_eq_c : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_c : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_conjugate_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_abs_c : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_arg_c : RETURN(make_uniform_product_space(the_negpi_pi_interval, 1));
-    ef_cos_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_exp_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_ln_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_sin_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_sqrt_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_tan_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_if_c : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_subscript_s : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_eq_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_gt_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_lt_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ge_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_le_s : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_subsequence_s : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_concat_s : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_size_s : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_format : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_value : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_like : RETURN(make_uniform_product_space(the_booleans, 1));
-    ef_if_s : RETURN(make_uniform_product_space(the_strings, 1));
-    ef_subscript_b : RETURN(make_uniform_product_space(the_binarys, 1));
-    ef_eq_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_gt_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_lt_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ge_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_le_b : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_subsequence_b : RETURN(make_uniform_product_space(the_binarys, 1));
-    ef_concat_b : RETURN(make_uniform_product_space(the_binarys, 1));
-    ef_size_b : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_if_b : RETURN(make_uniform_product_space(the_binarys, 1));
-    ef_subscript_t : RETURN(make_uniform_product_space(the_generics, 1));
-    ef_eq_t : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_ne_t : RETURN(make_uniform_product_space(the_logicals, 1));
-    ef_concat_t : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_size_t : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_entuple : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_detuple : RETURN(the_tuples);
-    ef_insert : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_remove : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_if_t : RETURN(make_uniform_product_space(the_tuples, 1));
-    ef_sum_it : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_product_it : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_add_it : RETURN(make_uniform_product_space(the_integer_tuples, 1));
-    ef_subtract_it : RETURN(make_uniform_product_space(the_integer_tuples, 1));
-    ef_scalar_mult_it : RETURN(make_uniform_product_space(the_integer_tuples, 1));
-    ef_dot_prod_it : RETURN(make_uniform_product_space(the_integers, 1));
-    ef_sum_rt : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_product_rt : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_add_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_subtract_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_scalar_mult_rt : RETURN(make_uniform_product_space(the_real_tuples, 1));
-    ef_dot_prod_rt : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_norm_rt : RETURN(make_uniform_product_space(the_reals, 1));
-    ef_sum_ct : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_product_ct : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_add_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_subtract_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_scalar_mult_ct : RETURN(make_uniform_product_space(the_complex_tuples, 1));
-    ef_dot_prod_ct : RETURN(make_uniform_product_space(the_complex_numbers, 1));
-    ef_norm_ct : RETURN(make_uniform_product_space(the_nonnegative_reals, 1));
-    ef_if : RETURN(make_uniform_product_space(the_generics, 1));
-    ef_ensemble : RETURN(make_uniform_product_space(the_maths_spaces, 1));
-    ef_member_of : RETURN(make_uniform_product_space(the_logicals, 1));
-    OTHERWISE: RETURN(?);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION derive_finite_function_domain(pairs : SET [1 : ?] OF LIST [2 : 2] OF maths_value) : tuple_space;
-LOCAL
-  result : SET OF maths_value := [];
-END_LOCAL;
-  result := result + list_selected_components(pairs, 1);
-  RETURN(one_tuples_of(make_finite_space(result)));
-END_FUNCTION;
-
-FUNCTION derive_finite_function_range(pairs : SET [1 : ?] OF LIST [2 : 2] OF maths_value) : tuple_space;
-LOCAL
-  result : SET OF maths_value := [];
-END_LOCAL;
-  result := result + list_selected_components(pairs, 2);
-  RETURN(one_tuples_of(make_finite_space(result)));
-END_FUNCTION;
-
-FUNCTION derive_function_domain(func : maths_function) : tuple_space;
-LOCAL
-  typenames  : SET OF STRING                   := stripped_typeof(func);
-  tspace     : tuple_space                     := make_listed_product_space([]);
-  shape      : LIST OF positive_integer;
-  sidxs      : LIST OF INTEGER                 := [0];
-  itvl       : finite_integer_interval;
-  factors    : LIST OF finite_integer_interval := [];
-  is_uniform : BOOLEAN                         := true;
-END_LOCAL;
-  IF 'FINITE_FUNCTION' IN typenames
-  THEN
-    RETURN(derive_finite_function_domain(func\finite_function.pairs));
-  END_IF;
-  IF 'CONSTANT_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\constant_function.source_of_domain));
-  END_IF;
-  IF 'SELECTOR_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\selector_function.source_of_domain));
-  END_IF;
-  IF 'ELEMENTARY_FUNCTION' IN typenames
-  THEN
-    RETURN(derive_elementary_function_domain(func\elementary_function.func_id));
-  END_IF;
-  IF 'RESTRICTION_FUNCTION' IN typenames
-  THEN
-    RETURN(one_tuples_of(func\restriction_function.operand));
-  END_IF;
-  IF 'REPACKAGING_FUNCTION' IN typenames
-  THEN
-    IF func\repackaging_function.input_repack = ro_nochange
-    THEN
-      RETURN(func\repackaging_function.operand.domain);
-    END_IF;
-    IF func\repackaging_function.input_repack = ro_wrap_as_tuple
-    THEN
-      RETURN(factor1(func\repackaging_function.operand.domain));
-    END_IF;
-    IF func\repackaging_function.input_repack = ro_unwrap_tuple
-    THEN
-      RETURN(one_tuples_of(func\repackaging_function.operand.domain));
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF 'REINDEXED_ARRAY_FUNCTION' IN typenames
-  THEN
-    shape := shape_of_array(func\unary_generic_expression.operand);
-    sidxs := func\reindexed_array_function.starting_indices;
-    REPEAT i := 1 TO SIZEOF(shape);
-      itvl := make_finite_integer_interval(sidxs[i], sidxs[i] + shape[i] - 1);
-      INSERT(factors, itvl, i - 1);
-      IF shape[i] <> shape[1]
-      THEN
-        is_uniform := false;
-      END_IF;
-    END_REPEAT;
-    IF is_uniform
-    THEN
-      RETURN(make_uniform_product_space(factors[1], SIZEOF(shape)));
-    END_IF;
-    RETURN(make_listed_product_space(factors));
-  END_IF;
-  IF 'SERIES_COMPOSED_FUNCTION' IN typenames
-  THEN
-    RETURN(func\series_composed_function.operands[1].domain);
-  END_IF;
-  IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\parallel_composed_function.source_of_domain));
-  END_IF;
-  IF 'EXPLICIT_TABLE_FUNCTION' IN typenames
-  THEN
-    shape := func\explicit_table_function.shape;
-    sidxs[1] := func\explicit_table_function.index_base;
-    REPEAT i := 1 TO SIZEOF(shape);
-      itvl := make_finite_integer_interval(sidxs[1], sidxs[1] + shape[i] - 1);
-      INSERT(factors, itvl, i - 1);
-      IF shape[i] <> shape[1]
-      THEN
-        is_uniform := false;
-      END_IF;
-    END_REPEAT;
-    IF is_uniform
-    THEN
-      RETURN(make_uniform_product_space(factors[1], SIZEOF(shape)));
-    END_IF;
-    RETURN(make_listed_product_space(factors));
-  END_IF;
-  IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames
-  THEN
-    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])));
-  END_IF;
-  IF 'GENERAL_LINEAR_FUNCTION' IN typenames
-  THEN
-    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)));
-  END_IF;
-  IF 'B_SPLINE_BASIS' IN typenames
-  THEN
-    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)));
-  END_IF;
-  IF 'B_SPLINE_FUNCTION' IN typenames
-  THEN
-    REPEAT i := 1 TO SIZEOF(func\b_spline_function.basis);
-      tspace := assoc_product_space(tspace, func\b_spline_function.basis[i].domain);
-    END_REPEAT;
-    RETURN(one_tuples_of(tspace));
-  END_IF;
-  IF 'RATIONALIZE_FUNCTION' IN typenames
-  THEN
-    RETURN(func\rationalize_function.fun.domain);
-  END_IF;
-  IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames
-  THEN
-    RETURN(func\partial_derivative_function.derivand.domain);
-  END_IF;
-  IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames
-  THEN
-    RETURN(derive_definite_integral_domain(func));
-  END_IF;
-  IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames
-  THEN
-    REPEAT i := 1 TO SIZEOF(func\abstracted_expression_function.variables);
-      tspace := assoc_product_space(tspace,
-                                    one_tuples_of(values_space_of(func\abstracted_expression_function.variables[i])));
-    END_REPEAT;
-    RETURN(tspace);
-  END_IF;
-  IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames
-  THEN
-    RETURN(values_space_of(func\expression_denoted_function.expr)\function_space.domain_argument);
-  END_IF;
-  IF 'IMPORTED_POINT_FUNCTION' IN typenames
-  THEN
-    RETURN(one_tuples_of(make_listed_product_space([])));
-  END_IF;
-  IF 'IMPORTED_CURVE_FUNCTION' IN typenames
-  THEN
-    RETURN(func\imported_curve_function.parametric_domain);
-  END_IF;
-  IF 'IMPORTED_SURFACE_FUNCTION' IN typenames
-  THEN
-    RETURN(func\imported_surface_function.parametric_domain);
-  END_IF;
-  IF 'IMPORTED_VOLUME_FUNCTION' IN typenames
-  THEN
-    RETURN(func\imported_volume_function.parametric_domain);
-  END_IF;
-  IF 'APPLICATION_DEFINED_FUNCTION' IN typenames
-  THEN
-    RETURN(func\application_defined_function.explicit_domain);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION derive_function_range(func : maths_function) : tuple_space;
-LOCAL
-  typenames : SET OF STRING       := stripped_typeof(func);
-  tspace    : tuple_space         := make_listed_product_space([]);
-  m         : nonnegative_integer := 0;
-  n         : nonnegative_integer := 0;
-  temp      : INTEGER             := 0;
-END_LOCAL;
-  IF 'FINITE_FUNCTION' IN typenames
-  THEN
-    RETURN(derive_finite_function_range(func\finite_function.pairs));
-  END_IF;
-  IF 'CONSTANT_FUNCTION' IN typenames
-  THEN
-    RETURN(one_tuples_of(make_finite_space([func\constant_function.sole_output])));
-  END_IF;
-  IF 'SELECTOR_FUNCTION' IN typenames
-  THEN
-    tspace := func.domain;
-    IF (space_dimension(tspace) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(tspace))
-    THEN
-      tspace := factor1(tspace);
-    END_IF;
-    RETURN(one_tuples_of(factor_space(tspace, func\selector_function.selector)));
-  END_IF;
-  IF 'ELEMENTARY_FUNCTION' IN typenames
-  THEN
-    RETURN(derive_elementary_function_range(func\elementary_function.func_id));
-  END_IF;
-  IF 'RESTRICTION_FUNCTION' IN typenames
-  THEN
-    RETURN(one_tuples_of(func\restriction_function.operand));
-  END_IF;
-  IF 'REPACKAGING_FUNCTION' IN typenames
-  THEN
-    tspace := func\repackaging_function.operand.range;
-    IF func\repackaging_function.output_repack = ro_wrap_as_tuple
-    THEN
-      tspace := one_tuples_of(tspace);
-    END_IF;
-    IF func\repackaging_function.output_repack = ro_unwrap_tuple
-    THEN
-      tspace := factor1(tspace);
-    END_IF;
-    IF func\repackaging_function.selected_output > 0
-    THEN
-      tspace := one_tuples_of(factor_space(tspace, func\repackaging_function.selected_output));
-    END_IF;
-    RETURN(tspace);
-  END_IF;
-  IF 'REINDEXED_ARRAY_FUNCTION' IN typenames
-  THEN
-    RETURN(func\unary_generic_expression.operand\maths_function.range);
-  END_IF;
-  IF 'SERIES_COMPOSED_FUNCTION' IN typenames
-  THEN
-    RETURN(func\series_composed_function.operands[SIZEOF(func\series_composed_function.operands)].range);
-  END_IF;
-  IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames
-  THEN
-    RETURN(func\parallel_composed_function.final_function.range);
-  END_IF;
-  IF 'EXPLICIT_TABLE_FUNCTION' IN typenames
-  THEN
-    IF 'LISTED_REAL_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(the_reals));
-    END_IF;
-    IF 'LISTED_INTEGER_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(the_integers));
-    END_IF;
-    IF 'LISTED_LOGICAL_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(the_logicals));
-    END_IF;
-    IF 'LISTED_STRING_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(the_strings));
-    END_IF;
-    IF 'LISTED_COMPLEX_NUMBER_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(the_complex_numbers));
-    END_IF;
-    IF 'LISTED_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(func\listed_data.value_range));
-    END_IF;
-    IF 'EXTERNALLY_LISTED_DATA' IN typenames
-    THEN
-      RETURN(one_tuples_of(func\externally_listed_data.value_range));
-    END_IF;
-    IF 'LINEARIZED_TABLE_FUNCTION' IN typenames
-    THEN
-      RETURN(func\linearized_table_function.source.range);
-    END_IF;
-    IF 'BASIC_SPARSE_MATRIX' IN typenames
-    THEN
-      RETURN(func\basic_sparse_matrix.val.range);
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames
-  THEN
-    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])));
-  END_IF;
-  IF 'GENERAL_LINEAR_FUNCTION' IN typenames
-  THEN
-    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])));
-  END_IF;
-  IF 'B_SPLINE_BASIS' IN typenames
-  THEN
-    RETURN(one_tuples_of(make_uniform_product_space(the_reals, func\b_spline_basis.num_basis)));
-  END_IF;
-  IF 'B_SPLINE_FUNCTION' IN typenames
-  THEN
-    tspace := factor1(func\b_spline_function.coef.domain);
-    m := SIZEOF(func\b_spline_function.basis);
-    n := space_dimension(tspace);
-    IF m = n
-    THEN
-      RETURN(one_tuples_of(the_reals));
-    END_IF;
-    IF m = n - 1
-    THEN
-      RETURN(one_tuples_of(make_uniform_product_space(the_reals,
-                                                      factor_space(tspace, n)\finite_integer_interval.size)));
-    END_IF;
-    tspace := extract_factors(tspace, m + 1, n);
-    RETURN(one_tuples_of(make_function_space(sc_equal, tspace, sc_subspace,
-                                             number_superspace_of(func\b_spline_function.coef.range))));
-  END_IF;
-  IF 'RATIONALIZE_FUNCTION' IN typenames
-  THEN
-    tspace := factor1(func\rationalize_function.fun.range);
-    n := space_dimension(tspace);
-    RETURN(one_tuples_of(make_uniform_product_space(number_superspace_of(factor1(tspace)), n - 1)));
-  END_IF;
-  IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames
-  THEN
-    RETURN(drop_numeric_constraints(func\partial_derivative_function.derivand.range));
-  END_IF;
-  IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames
-  THEN
-    RETURN(drop_numeric_constraints(func\definite_integral_function.integrand.range));
-  END_IF;
-  IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames
-  THEN
-    RETURN(one_tuples_of(values_space_of(func\abstracted_expression_function.expr)));
-  END_IF;
-  IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames
-  THEN
-    RETURN(values_space_of(func\expression_denoted_function.expr)\function_space.range_argument);
-  END_IF;
-  IF 'IMPORTED_POINT_FUNCTION' IN typenames
-  THEN
-    temp := dimension_of(func\imported_point_function.geometry);
-    RETURN(one_tuples_of(make_uniform_product_space(the_reals, temp)));
-  END_IF;
-  IF 'IMPORTED_CURVE_FUNCTION' IN typenames
-  THEN
-    temp := dimension_of(func\imported_curve_function.geometry);
-    RETURN(one_tuples_of(make_uniform_product_space(the_reals, temp)));
-  END_IF;
-  IF 'IMPORTED_SURFACE_FUNCTION' IN typenames
-  THEN
-    temp := dimension_of(func\imported_surface_function.geometry);
-    RETURN(one_tuples_of(make_uniform_product_space(the_reals, temp)));
-  END_IF;
-  IF 'IMPORTED_VOLUME_FUNCTION' IN typenames
-  THEN
-    temp := dimension_of(func\imported_volume_function.geometry);
-    RETURN(one_tuples_of(make_uniform_product_space(the_reals, temp)));
-  END_IF;
-  IF 'APPLICATION_DEFINED_FUNCTION' IN typenames
-  THEN
-    RETURN(func\application_defined_function.explicit_range);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION dimension_of(item : geometric_representation_item) : dimension_count;
-LOCAL
-  x   : SET OF representation;
-  y   : representation_context;
-  dim : dimension_count;
-END_LOCAL;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item)
-  THEN
-    dim := SIZEOF(item\cartesian_point.coordinates);
-    RETURN(dim);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF(item)
-  THEN
-    dim := SIZEOF(item\direction.direction_ratios);
-    RETURN(dim);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(item)
-  THEN
-    dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
-    RETURN(dim);
-  END_IF;
-  x := using_representations(item);
-  IF (SIZEOF(x) > 0)
-  THEN
-    y := x[1].context_of_items;
-    dim := y\geometric_representation_context.coordinate_space_dimension;
-    RETURN(dim);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION dimensions_for_si_unit(n : si_unit_name) : dimensional_exponents;
-  CASE n OF
-    metre : RETURN(dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-    gram : RETURN(dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-    second : RETURN(dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0));
-    ampere : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0));
-    kelvin : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
-    mole : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0));
-    candela : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
-    radian : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-    steradian : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-    hertz : RETURN(dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
-    newton : RETURN(dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
-    pascal : RETURN(dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
-    joule : RETURN(dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
-    watt : RETURN(dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0));
-    coulomb : RETURN(dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0));
-    volt : RETURN(dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0));
-    farad : RETURN(dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0));
-    ohm : RETURN(dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0));
-    siemens : RETURN(dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0));
-    weber : RETURN(dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
-    tesla : RETURN(dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
-    henry : RETURN(dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0));
-    degree_celsius : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
-    lumen : RETURN(dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
-    lux : RETURN(dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
-    becquerel : RETURN(dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
-    gray : RETURN(dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
-    sievert : RETURN(dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
-    OTHERWISE: RETURN(?);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION domain_from(ref : maths_space_or_function) : tuple_space;
-LOCAL
-  typenames : SET OF STRING  := stripped_typeof(ref);
-  func      : maths_function;
-END_LOCAL;
-  IF NOT EXISTS(ref)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF 'TUPLE_SPACE' IN typenames
-  THEN
-    RETURN(ref);
-  END_IF;
-  IF 'MATHS_SPACE' IN typenames
-  THEN
-    RETURN(one_tuples_of(ref));
-  END_IF;
-  func := ref;
-  IF 'CONSTANT_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\constant_function.source_of_domain));
-  END_IF;
-  IF 'SELECTOR_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\selector_function.source_of_domain));
-  END_IF;
-  IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames
-  THEN
-    RETURN(domain_from(func\parallel_composed_function.source_of_domain));
-  END_IF;
-  RETURN(func.domain);
-END_FUNCTION;
-
-FUNCTION dot_count(str : STRING) : INTEGER;
-LOCAL
-  n : INTEGER := 0;
-END_LOCAL;
-  REPEAT i := 1 TO LENGTH(str);
-    IF str[i] = '.'
-    THEN
-      n := n + 1;
-    END_IF;
-  END_REPEAT;
-  RETURN(n);
-END_FUNCTION;
-
-FUNCTION dot_product(arg1 : direction;
-                     arg2 : direction) : REAL;
-LOCAL
-  scalar : REAL;
-  vec1   : direction;
-  vec2   : direction;
-  ndim   : INTEGER;
-END_LOCAL;
-  IF NOT EXISTS(arg1) OR NOT EXISTS(arg2)
-  THEN
-    scalar := ?;
-  ELSE
-    IF (arg1.dim <> arg2.dim)
-    THEN
-      scalar := ?;
-    ELSE
-      BEGIN  
-             vec1 := normalise(arg1);
-             vec2 := normalise(arg2);
-             ndim := arg1.dim;
-             scalar := 0.0;
-             REPEAT i := 1 TO ndim;
-               scalar := scalar + vec1.direction_ratios[i] * vec2.direction_ratios[i];
-             END_REPEAT;
-      END;
-    END_IF;
-  END_IF;
-  RETURN(scalar);
-END_FUNCTION;
-
-FUNCTION dotted_identifiers_syntax(str : STRING) : BOOLEAN;
-LOCAL
-  k : positive_integer;
-  m : positive_integer;
-END_LOCAL;
-  IF NOT EXISTS(str)
-  THEN
-    RETURN(false);
-  END_IF;
-  k := parse_express_identifier(str, 1);
-  IF k = 1
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT WHILE k <= LENGTH(str);
-    IF (str[k] <> '.') OR (k = LENGTH(str))
-    THEN
-      RETURN(false);
-    END_IF;
-    m := parse_express_identifier(str, k + 1);
-    IF m = k + 1
-    THEN
-      RETURN(false);
-    END_IF;
-    k := m;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION drop_numeric_constraints(spc : maths_space) : maths_space;
-LOCAL
-  typenames : SET OF STRING        := stripped_typeof(spc);
-  tspc      : listed_product_space;
-  factors   : LIST OF maths_space  := [];
-  xspc      : extended_tuple_space;
-END_LOCAL;
-  IF 'UNIFORM_PRODUCT_SPACE' IN typenames
-  THEN
-    RETURN(make_uniform_product_space(drop_numeric_constraints(spc\uniform_product_space.base),
-                                      spc\uniform_product_space.exponent));
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN typenames
-  THEN
-    tspc := spc;
-    REPEAT i := 1 TO SIZEOF(tspc.factors);
-      INSERT(factors, drop_numeric_constraints(tspc.factors[i]), i - 1);
-    END_REPEAT;
-    RETURN(make_listed_product_space(factors));
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN typenames
-  THEN
-    xspc := spc;
-    RETURN(make_extended_tuple_space(drop_numeric_constraints(xspc.base), drop_numeric_constraints(xspc.extender)));
-  END_IF;
-  IF subspace_of_es(spc, es_numbers)
-  THEN
-    RETURN(number_superspace_of(spc));
-  END_IF;
-  RETURN(spc);
-END_FUNCTION;
-
-FUNCTION duration_is_negative(duration : time_measure_with_unit) : BOOLEAN;
-  IF (duration\measure_with_unit.value_component < 0.0)
-  THEN
-    RETURN(true);
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION duration_is_positive(duration : time_measure_with_unit) : BOOLEAN;
-  IF (duration\measure_with_unit.value_component > 0.0)
-  THEN
-    RETURN(true);
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION edge_reversed(an_edge : edge) : oriented_edge;
-LOCAL
-  the_reverse : oriented_edge;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF(an_edge))
-  THEN
-    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));
-  ELSE
-    the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start) || oriented_edge(an_edge, false);
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION enclose_cregion_in_pregion(crgn : cartesian_complex_number_region;
-                                    centre : complex_number_literal) : polar_complex_number_region;
--- Find equivalent direction in range -PI < a <= PI.
-FUNCTION angle(a : REAL) : REAL;
-  REPEAT WHILE a > PI;
-    a := a - 2.0 * PI;
-  END_REPEAT;
-  REPEAT WHILE a <= -PI;
-    a := a + 2.0 * PI;
-  END_REPEAT;
-  RETURN(a);
-END_FUNCTION;
-FUNCTION strictly_in(z : REAL;
-                     zitv : real_interval) : LOGICAL;
-  RETURN((NOT min_exists(zitv) OR (z > real_min(zitv))) AND (NOT max_exists(zitv) OR (z < real_max(zitv))));
-END_FUNCTION;
-PROCEDURE angle_minmax(ab : REAL; a : REAL; a_in : BOOLEAN; VAR amin : REAL; VAR amax : REAL; VAR amin_in : BOOLEAN;
-                       VAR amax_in : BOOLEAN);
-  a := angle(a - ab);
-  IF amin = a
-  THEN
-    amin_in := amin_in OR a_in;
-  END_IF;
-  IF amin > a
-  THEN
-    amin := a;
-    amin_in := a_in;
-  END_IF;
-  IF amax = a
-  THEN
-    amax_in := amax_in OR a_in;
-  END_IF;
-  IF amax < a
-  THEN
-    amax := a;
-    amax_in := a_in;
-  END_IF;
-END_PROCEDURE;
-PROCEDURE range_max(r : REAL; incl : BOOLEAN; VAR rmax : REAL; VAR rmax_in : BOOLEAN);
-  IF rmax = r
-  THEN
-    rmax_in := rmax_in OR incl;
-  END_IF;
-  IF rmax < r
-  THEN
-    rmax := r;
-    rmax_in := incl;
-  END_IF;
-END_PROCEDURE;
-PROCEDURE range_min(r : REAL; incl : BOOLEAN; VAR rmin : REAL; VAR rmin_in : BOOLEAN);
-  IF rmin = r
-  THEN
-    rmin_in := rmin_in OR incl;
-  END_IF;
-  IF (rmin < 0.0) OR (rmin > r)
-  THEN
-    rmin := r;
-    rmin_in := incl;
-  END_IF;
-END_PROCEDURE;
-LOCAL
-  xitv        : real_interval;
-  yitv        : real_interval;
-  is_xmin     : BOOLEAN;
-  is_xmax     : BOOLEAN;
-  is_ymin     : BOOLEAN;
-  is_ymax     : BOOLEAN;
-  xmin        : REAL                 := 0.0;
-  xmax        : REAL                 := 0.0;
-  ymin        : REAL                 := 0.0;
-  ymax        : REAL                 := 0.0;
-  xc          : REAL                 := 0.0;
-  yc          : REAL                 := 0.0;
-  xmin_in     : BOOLEAN              := false;
-  xmax_in     : BOOLEAN              := false;
-  ymin_in     : BOOLEAN              := false;
-  ymax_in     : BOOLEAN              := false;
-  rmin        : REAL                 := -1.0;
-  rmax        : REAL                 := -1.0;
-  amin        : REAL                 := 4.0;
-  amax        : REAL                 := -4.0;
-  rmax_exists : BOOLEAN              := true;
-  outside     : BOOLEAN              := true;
-  rmin_in     : BOOLEAN              := false;
-  rmax_in     : BOOLEAN              := false;
-  amin_in     : BOOLEAN              := false;
-  amax_in     : BOOLEAN              := false;
-  ab          : REAL                 := 0.0;
-  a           : REAL                 := 0.0;
-  r           : REAL                 := 0.0;
-  incl        : BOOLEAN;
-  ritv        : real_interval;
-  aitv        : finite_real_interval;
-  minclo      : open_closed          := open;
-  maxclo      : open_closed          := open;
-END_LOCAL;
-  IF NOT EXISTS(crgn) OR NOT EXISTS(centre)
-  THEN
-    RETURN(?);
-  END_IF;
-  xitv := crgn.real_constraint;
-  yitv := crgn.imag_constraint;
-  xc := centre.real_part;
-  yc := centre.imag_part;
-  is_xmin := min_exists(xitv);
-  is_xmax := max_exists(xitv);
-  is_ymin := min_exists(yitv);
-  is_ymax := max_exists(yitv);
-  IF is_xmin
-  THEN
-    xmin := real_min(xitv);
-    xmin_in := min_included(xitv);
-  END_IF;
-  IF is_xmax
-  THEN
-    xmax := real_max(xitv);
-    xmax_in := max_included(xitv);
-  END_IF;
-  IF is_ymin
-  THEN
-    ymin := real_min(yitv);
-    ymin_in := min_included(yitv);
-  END_IF;
-  IF is_ymax
-  THEN
-    ymax := real_max(yitv);
-    ymax_in := max_included(yitv);
-  END_IF;
-  rmax_exists := is_xmin AND is_xmax AND is_ymin AND is_ymax;
-  IF is_xmin AND (xc <= xmin)
-  THEN
-    ab := 0.0;
-  ELSE
-    IF is_ymin AND (yc <= ymin)
-    THEN
-      ab := 0.5 * PI;
-    ELSE
-      IF is_ymax AND (yc >= ymax)
-      THEN
-        ab := -0.5 * PI;
-      ELSE
-        IF is_xmax AND (xc >= xmax)
-        THEN
-          ab := PI;
-        ELSE
-          outside := false;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  IF NOT outside AND NOT rmax_exists
-  THEN
-    RETURN(?);
-  END_IF;
-  IF is_xmin AND (xc <= xmin) AND strictly_in(yc, yitv)
-  THEN
-    rmin := xmin - xc;
-    rmin_in := xmin_in;
-  ELSE
-    IF is_ymin AND (yc <= ymin) AND strictly_in(xc, xitv)
-    THEN
-      rmin := ymin - yc;
-      rmin_in := ymin_in;
-    ELSE
-      IF is_ymax AND (yc >= ymax) AND strictly_in(xc, xitv)
-      THEN
-        rmin := yc - ymax;
-        rmin_in := ymax_in;
-      ELSE
-        IF is_xmax AND (xc >= xmax) AND strictly_in(yc, yitv)
-        THEN
-          rmin := xc - xmax;
-          rmin_in := xmax_in;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  IF is_xmin
-  THEN
-    IF is_ymin
-    THEN
-      r := SQRT((xmin - xc) ** 2 + (ymin - yc) ** 2);
-      incl := xmin_in AND ymin_in;
-      IF rmax_exists
-      THEN
-        range_max(r, incl, rmax, rmax_in);
-      END_IF;
-      IF outside
-      THEN
-        IF r > 0.0
-        THEN
-          range_min(r, incl, rmin, rmin_in);
-          a := angle(atan2(ymin - yc, xmin - xc) - ab);
-          IF xc = xmin
-          THEN
-            incl := xmin_in;
-          END_IF;
-          IF yc = ymin
-          THEN
-            incl := ymin_in;
-          END_IF;
-          angle_minmax(ab, a, incl, amin, amax, amin_in, amax_in);
-        ELSE
-          rmin := 0.0;
-          rmin_in := xmin_in AND ymin_in;
-          amin := angle(0.0 - ab);
-          amin_in := ymin_in;
-          amax := angle(0.5 * PI - ab);
-          amax_in := xmin_in;
-        END_IF;
-      END_IF;
-    ELSE
-      IF xc <= xmin
-      THEN
-        angle_minmax(ab, -0.5 * PI, (xc = xmin) AND xmin_in, amin, amax, amin_in, amax_in);
-      END_IF;
-    END_IF;
-    IF NOT is_ymax AND (xc <= xmin)
-    THEN
-      angle_minmax(ab, 0.5 * PI, (xc = xmin) AND xmin_in, amin, amax, amin_in, amax_in);
-    END_IF;
-  END_IF;
-  IF is_ymin
-  THEN
-    IF is_xmax
-    THEN
-      r := SQRT((xmax - xc) ** 2 + (ymin - yc) ** 2);
-      incl := xmax_in AND ymin_in;
-      IF rmax_exists
-      THEN
-        range_max(r, incl, rmax, rmax_in);
-      END_IF;
-      IF outside
-      THEN
-        IF r > 0.0
-        THEN
-          range_min(r, incl, rmin, rmin_in);
-          a := angle(atan2(ymin - yc, xmax - xc) - ab);
-          IF xc = xmax
-          THEN
-            incl := xmax_in;
-          END_IF;
-          IF yc = ymin
-          THEN
-            incl := ymin_in;
-          END_IF;
-          angle_minmax(ab, a, incl, amin, amax, amin_in, amax_in);
-        ELSE
-          rmin := 0.0;
-          rmin_in := xmax_in AND ymin_in;
-          amin := angle(0.5 * PI - ab);
-          amin_in := ymin_in;
-          amax := angle(PI - ab);
-          amax_in := xmax_in;
-        END_IF;
-      END_IF;
-    ELSE
-      IF yc <= ymin
-      THEN
-        angle_minmax(ab, 0.0, (yc = ymin) AND ymin_in, amin, amax, amin_in, amax_in);
-      END_IF;
-    END_IF;
-    IF NOT is_xmin AND (yc <= ymin)
-    THEN
-      angle_minmax(ab, PI, (yc = ymin) AND ymin_in, amin, amax, amin_in, amax_in);
-    END_IF;
-  END_IF;
-  IF is_xmax
-  THEN
-    IF is_ymax
-    THEN
-      r := SQRT((xmax - xc) ** 2 + (ymax - yc) ** 2);
-      incl := xmax_in AND ymax_in;
-      IF rmax_exists
-      THEN
-        range_max(r, incl, rmax, rmax_in);
-      END_IF;
-      IF outside
-      THEN
-        IF r > 0.0
-        THEN
-          range_min(r, incl, rmin, rmin_in);
-          a := angle(atan2(ymax - yc, xmax - xc) - ab);
-          IF xc = xmax
-          THEN
-            incl := xmax_in;
-          END_IF;
-          IF yc = ymax
-          THEN
-            incl := ymax_in;
-          END_IF;
-          angle_minmax(ab, a, incl, amin, amax, amin_in, amax_in);
-        ELSE
-          rmin := 0.0;
-          rmin_in := xmax_in AND ymax_in;
-          amin := angle(-PI - ab);
-          amin_in := ymax_in;
-          amax := angle(-0.5 * PI - ab);
-          amax_in := xmax_in;
-        END_IF;
-      END_IF;
-    ELSE
-      IF xc >= xmax
-      THEN
-        angle_minmax(ab, 0.5 * PI, (xc = xmax) AND xmax_in, amin, amax, amin_in, amax_in);
-      END_IF;
-    END_IF;
-    IF NOT is_ymin AND (xc >= xmax)
-    THEN
-      angle_minmax(ab, -0.5 * PI, (xc = xmax) AND xmax_in, amin, amax, amin_in, amax_in);
-    END_IF;
-  END_IF;
-  IF is_ymax
-  THEN
-    IF is_xmin
-    THEN
-      r := SQRT((xmin - xc) ** 2 + (ymax - yc) ** 2);
-      incl := xmin_in AND ymax_in;
-      IF rmax_exists
-      THEN
-        range_max(r, incl, rmax, rmax_in);
-      END_IF;
-      IF outside
-      THEN
-        IF r > 0.0
-        THEN
-          range_min(r, incl, rmin, rmin_in);
-          a := angle(atan2(ymax - yc, xmin - xc) - ab);
-          IF xc = xmin
-          THEN
-            incl := xmin_in;
-          END_IF;
-          IF yc = ymax
-          THEN
-            incl := ymax_in;
-          END_IF;
-          angle_minmax(ab, a, incl, amin, amax, amin_in, amax_in);
-        ELSE
-          rmin := 0.0;
-          rmin_in := xmin_in AND ymax_in;
-          amin := angle(0.5 * PI - ab);
-          amin_in := ymax_in;
-          amax := angle(PI - ab);
-          amax_in := xmin_in;
-        END_IF;
-      END_IF;
-    ELSE
-      IF yc >= ymax
-      THEN
-        angle_minmax(ab, PI, (yc = ymax) AND ymax_in, amin, amax, amin_in, amax_in);
-      END_IF;
-    END_IF;
-    IF NOT is_xmax AND (yc >= ymax)
-    THEN
-      angle_minmax(ab, 0.0, (yc = ymax) AND ymax_in, amin, amax, amin_in, amax_in);
-    END_IF;
-  END_IF;
-  IF outside
-  THEN
-    amin := angle(amin + ab);
-    IF amin = PI
-    THEN
-      amin := -PI;
-    END_IF;
-    amax := angle(amax + ab);
-    IF amax <= amin
-    THEN
-      amax := amax + 2.0 * PI;
-    END_IF;
-  ELSE
-    amin := -PI;
-    amin_in := false;
-    amax := PI;
-    amax_in := false;
-  END_IF;
-  IF amin_in
-  THEN
-    minclo := closed;
-  END_IF;
-  IF amax_in
-  THEN
-    maxclo := closed;
-  END_IF;
-  aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
-  minclo := open;
-  IF rmin_in
-  THEN
-    minclo := closed;
-  END_IF;
-  IF rmax_exists
-  THEN
-    maxclo := open;
-    IF rmax_in
-    THEN
-      maxclo := closed;
-    END_IF;
-    ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
-  ELSE
-    ritv := make_real_interval_from_min(rmin, minclo);
-  END_IF;
-  RETURN(make_polar_complex_number_region(centre, ritv, aitv));
-END_FUNCTION;
-
-FUNCTION enclose_pregion_in_cregion(prgn : polar_complex_number_region) : cartesian_complex_number_region;
-PROCEDURE nearest_good_direction(acart : REAL; aitv : finite_real_interval; VAR a : REAL; VAR a_in : BOOLEAN);
-  a := acart;
-  a_in := true;
-  IF a < aitv.min
-  THEN
-    IF a + 2.0 * PI < aitv.max
-    THEN
-      RETURN;
-    END_IF;
-    IF a + 2.0 * PI = aitv.max
-    THEN
-      a_in := max_included(aitv);
-      RETURN;
-    END_IF;
-  ELSE
-    IF a = aitv.min
-    THEN
-      a_in := min_included(aitv);
-      RETURN;
-    ELSE
-      IF a < aitv.max
-      THEN
-        RETURN;
-      ELSE
-        IF a = aitv.max
-        THEN
-          a_in := max_included(aitv);
-          RETURN;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  IF COS(acart - aitv.max) >= COS(acart - aitv.min)
-  THEN
-    a := aitv.max;
-    a_in := max_included(aitv);
-  ELSE
-    a := aitv.min;
-    a_in := min_included(aitv);
-  END_IF;
-END_PROCEDURE;
-LOCAL
-  xc          : REAL                 := 0.0;
-  yc          : REAL                 := 0.0;
-  xmin        : REAL                 := 0.0;
-  xmax        : REAL                 := 0.0;
-  ymin        : REAL                 := 0.0;
-  ymax        : REAL                 := 0.0;
-  ritv        : real_interval;
-  xitv        : real_interval;
-  yitv        : real_interval;
-  aitv        : finite_real_interval;
-  xmin_exists : BOOLEAN;
-  xmax_exists : BOOLEAN;
-  ymin_exists : BOOLEAN;
-  ymax_exists : BOOLEAN;
-  xmin_in     : BOOLEAN              := false;
-  xmax_in     : BOOLEAN              := false;
-  ymin_in     : BOOLEAN              := false;
-  ymax_in     : BOOLEAN              := false;
-  a           : REAL                 := 0.0;
-  r           : REAL                 := 0.0;
-  a_in        : BOOLEAN              := false;
-  min_clo     : open_closed          := open;
-  max_clo     : open_closed          := open;
-END_LOCAL;
-  IF NOT EXISTS(prgn)
-  THEN
-    RETURN(?);
-  END_IF;
-  xc := prgn.centre.real_part;
-  yc := prgn.centre.imag_part;
-  ritv := prgn.distance_constraint;
-  aitv := prgn.direction_constraint;
-  nearest_good_direction(PI, aitv, a, a_in);
-  IF COS(a) >= 0.0
-  THEN
-    xmin_exists := true;
-    xmin := xc + real_min(ritv) * COS(a);
-    xmin_in := a_in AND (min_included(ritv) OR (COS(a) = 0.0));
-  ELSE
-    IF max_exists(ritv)
-    THEN
-      xmin_exists := true;
-      xmin := xc + real_max(ritv) * COS(a);
-      xmin_in := a_in AND max_included(ritv);
-    ELSE
-      xmin_exists := false;
-    END_IF;
-  END_IF;
-  nearest_good_direction(0.0, aitv, a, a_in);
-  IF COS(a) <= 0.0
-  THEN
-    xmax_exists := true;
-    xmax := xc + real_min(ritv) * COS(a);
-    xmax_in := a_in AND (min_included(ritv) OR (COS(a) = 0.0));
-  ELSE
-    IF max_exists(ritv)
-    THEN
-      xmax_exists := true;
-      xmax := xc + real_max(ritv) * COS(a);
-      xmax_in := a_in AND max_included(ritv);
-    ELSE
-      xmax_exists := false;
-    END_IF;
-  END_IF;
-  nearest_good_direction(-0.5 * PI, aitv, a, a_in);
-  IF SIN(a) >= 0.0
-  THEN
-    ymin_exists := true;
-    ymin := yc + real_min(ritv) * SIN(a);
-    ymin_in := a_in AND (min_included(ritv) OR (SIN(a) = 0.0));
-  ELSE
-    IF max_exists(ritv)
-    THEN
-      ymin_exists := true;
-      ymin := yc + real_max(ritv) * SIN(a);
-      ymin_in := a_in AND max_included(ritv);
-    ELSE
-      ymin_exists := false;
-    END_IF;
-  END_IF;
-  nearest_good_direction(0.5 * PI, aitv, a, a_in);
-  IF SIN(a) <= 0.0
-  THEN
-    ymax_exists := true;
-    ymax := yc + real_min(ritv) * SIN(a);
-    ymax_in := a_in AND (min_included(ritv) OR (SIN(a) = 0.0));
-  ELSE
-    IF max_exists(ritv)
-    THEN
-      ymax_exists := true;
-      ymax := yc + real_max(ritv) * SIN(a);
-      ymax_in := a_in AND max_included(ritv);
-    ELSE
-      ymax_exists := false;
-    END_IF;
-  END_IF;
-  IF NOT (xmin_exists OR xmax_exists OR ymin_exists OR ymax_exists)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF xmin_exists
-  THEN
-    IF xmin_in
-    THEN
-      min_clo := closed;
-    ELSE
-      min_clo := open;
-    END_IF;
-    IF xmax_exists
-    THEN
-      IF xmax_in
-      THEN
-        max_clo := closed;
-      ELSE
-        max_clo := open;
-      END_IF;
-      xitv := make_finite_real_interval(xmin, min_clo, xmax, max_clo);
-    ELSE
-      xitv := make_real_interval_from_min(xmin, min_clo);
-    END_IF;
-  ELSE
-    IF xmax_exists
-    THEN
-      IF xmax_in
-      THEN
-        max_clo := closed;
-      ELSE
-        max_clo := open;
-      END_IF;
-      xitv := make_real_interval_to_max(xmax, max_clo);
-    ELSE
-      xitv := the_reals;
-    END_IF;
-  END_IF;
-  IF ymin_exists
-  THEN
-    IF ymin_in
-    THEN
-      min_clo := closed;
-    ELSE
-      min_clo := open;
-    END_IF;
-    IF ymax_exists
-    THEN
-      IF ymax_in
-      THEN
-        max_clo := closed;
-      ELSE
-        max_clo := open;
-      END_IF;
-      yitv := make_finite_real_interval(ymin, min_clo, ymax, max_clo);
-    ELSE
-      yitv := make_real_interval_from_min(ymin, min_clo);
-    END_IF;
-  ELSE
-    IF ymax_exists
-    THEN
-      IF ymax_in
-      THEN
-        max_clo := closed;
-      ELSE
-        max_clo := open;
-      END_IF;
-      yitv := make_real_interval_to_max(ymax, max_clo);
-    ELSE
-      yitv := the_reals;
-    END_IF;
-  END_IF;
-  RETURN(make_cartesian_complex_number_region(xitv, yitv));
-END_FUNCTION;
-
-FUNCTION enclose_pregion_in_pregion(prgn : polar_complex_number_region;
-                                    centre : complex_number_literal) : polar_complex_number_region;
--- Find equivalent direction in range -PI < a <= PI.
-FUNCTION angle(a : REAL) : REAL;
-  REPEAT WHILE a > PI;
-    a := a - 2.0 * PI;
-  END_REPEAT;
-  REPEAT WHILE a <= -PI;
-    a := a + 2.0 * PI;
-  END_REPEAT;
-  RETURN(a);
-END_FUNCTION;
-PROCEDURE angle_range(VAR amin : REAL; VAR amax : REAL);
-  amin := angle(amin);
-  IF amin = PI
-  THEN
-    amin := -PI;
-  END_IF;
-  amax := angle(amax);
-  IF amax <= amin
-  THEN
-    amax := amax + 2.0 * PI;
-  END_IF;
-END_PROCEDURE;
-FUNCTION strictly_in(a : REAL;
-                     aitv : finite_real_interval) : LOGICAL;
-  a := angle(a);
-  RETURN({aitv.min < a < aitv.max} OR {aitv.min < a + 2.0 * PI < aitv.max});
-END_FUNCTION;
-PROCEDURE find_aminmax(ab : REAL; a0 : REAL; a1 : REAL; a2 : REAL; a3 : REAL; in0 : BOOLEAN; in1 : BOOLEAN;
-                       in2 : BOOLEAN; in3 : BOOLEAN; VAR amin : REAL; VAR amax : REAL; VAR amin_in : BOOLEAN;
-                       VAR amax_in : BOOLEAN);
- LOCAL  
-        a : REAL;
- END_LOCAL;
-  amin := angle(a0 - ab);
-  amin_in := in0;
-  amax := amin;
-  amax_in := in0;
-  a := angle(a1 - ab);
-  IF a = amin
-  THEN
-    amin_in := amin_in OR in1;
-  END_IF;
-  IF a < amin
-  THEN
-    amin := a;
-    amin_in := in1;
-  END_IF;
-  IF a = amax
-  THEN
-    amax_in := amax_in OR in1;
-  END_IF;
-  IF a > amax
-  THEN
-    amax := a;
-    amax_in := in1;
-  END_IF;
-  a := angle(a2 - ab);
-  IF a = amin
-  THEN
-    amin_in := amin_in OR in2;
-  END_IF;
-  IF a < amin
-  THEN
-    amin := a;
-    amin_in := in2;
-  END_IF;
-  IF a = amax
-  THEN
-    amax_in := amax_in OR in2;
-  END_IF;
-  IF a > amax
-  THEN
-    amax := a;
-    amax_in := in2;
-  END_IF;
-  a := angle(a3 - ab);
-  IF a = amin
-  THEN
-    amin_in := amin_in OR in3;
-  END_IF;
-  IF a < amin
-  THEN
-    amin := a;
-    amin_in := in3;
-  END_IF;
-  IF a = amax
-  THEN
-    amax_in := amax_in OR in3;
-  END_IF;
-  IF a > amax
-  THEN
-    amax := a;
-    amax_in := in3;
-  END_IF;
-  amin := amin + ab;
-  amax := amax + ab;
-  angle_range(amin, amax);
-END_PROCEDURE;
-LOCAL
-  ritp    : real_interval;
-  ritv    : real_interval;
-  aitp    : finite_real_interval;
-  aitv    : finite_real_interval;
-  xp      : REAL                 := 0.0;
-  yp      : REAL                 := 0.0;
-  xc      : REAL                 := 0.0;
-  yc      : REAL                 := 0.0;
-  rmax    : REAL                 := 0.0;
-  rmin    : REAL                 := 0.0;
-  amin    : REAL                 := 0.0;
-  amax    : REAL                 := 0.0;
-  rc      : REAL                 := 0.0;
-  acp     : REAL                 := 0.0;
-  apc     : REAL                 := 0.0;
-  rmax_in : BOOLEAN              := false;
-  rmin_in : BOOLEAN              := false;
-  amin_in : BOOLEAN              := false;
-  amax_in : BOOLEAN              := false;
-  rmxp    : REAL                 := 0.0;
-  rmnp    : REAL                 := 0.0;
-  x       : REAL                 := 0.0;
-  y       : REAL                 := 0.0;
-  r       : REAL                 := 0.0;
-  a       : REAL                 := 0.0;
-  ab      : REAL                 := 0.0;
-  r0      : REAL                 := 0.0;
-  a0      : REAL                 := 0.0;
-  r1      : REAL                 := 0.0;
-  a1      : REAL                 := 0.0;
-  r2      : REAL                 := 0.0;
-  a2      : REAL                 := 0.0;
-  r3      : REAL                 := 0.0;
-  a3      : REAL                 := 0.0;
-  in0     : BOOLEAN              := false;
-  in1     : BOOLEAN              := false;
-  in2     : BOOLEAN              := false;
-  in3     : BOOLEAN              := false;
-  inn     : BOOLEAN              := false;
-  minclo  : open_closed          := open;
-  maxclo  : open_closed          := open;
-END_LOCAL;
-  IF NOT EXISTS(prgn) OR NOT EXISTS(centre)
-  THEN
-    RETURN(?);
-  END_IF;
-  xp := prgn.centre.real_part;
-  yp := prgn.centre.imag_part;
-  ritp := prgn.distance_constraint;
-  aitp := prgn.direction_constraint;
-  xc := centre.real_part;
-  yc := centre.imag_part;
-  IF (xc = xp) AND (yc = yp)
-  THEN
-    RETURN(prgn);
-  END_IF;
-  rc := SQRT((xp - xc) ** 2 + (yp - yc) ** 2);
-  acp := atan2(yp - yc, xp - xc);
-  apc := atan2(yc - yp, xc - xp);
-  rmnp := real_min(ritp);
-  IF max_exists(ritp)
-  THEN
-    rmxp := real_max(ritp);
-    IF aitp.max - aitp.min = 2.0 * PI
-    THEN
-      inn := NOT max_included(aitp);
-      a := angle(aitp.min);
-      rmax := rc + rmxp;
-      rmax_in := max_included(ritp);
-      IF inn AND (acp = a)
-      THEN
-        rmax_in := false;
-      END_IF;
-      IF rc > rmxp
-      THEN
-        a0 := ASIN(rmxp / rc);
-        amin := angle(acp - a0);
-        amin_in := max_included(ritp);
-        IF amin = PI
-        THEN
-          amin := -PI;
-        END_IF;
-        amax := angle(acp + a0);
-        amax_in := amin_in;
-        IF amax < amin
-        THEN
-          amax := amax + 2.0 * PI;
-        END_IF;
-        rmin := rc - rmxp;
-        rmin_in := amin_in;
-        IF inn
-        THEN
-          IF apc = a
-          THEN
-            rmin_in := false;
-          END_IF;
-          IF angle(amin + 0.5 * PI) = a
-          THEN
-            amin_in := false;
-          END_IF;
-          IF angle(amax - 0.5 * PI) = a
-          THEN
-            amax_in := false;
-          END_IF;
-        END_IF;
-      ELSE
-        IF rc = rmxp
-        THEN
-          amin := angle(acp - 0.5 * PI);
-          amin_in := false;
-          IF amin = PI
-          THEN
-            amin := -PI;
-          END_IF;
-          amax := angle(acp + 0.5 * PI);
-          amax_in := false;
-          IF amax < amin
-          THEN
-            amax := amax + 2.0 * PI;
-          END_IF;
-          rmin := 0.0;
-          rmin_in := max_included(ritp);
-          IF inn AND (apc = a)
-          THEN
-            rmin_in := false;
-          END_IF;
-        ELSE
-          IF rc > rmnp
-          THEN
-            IF inn AND (apc = a)
-            THEN
-              rmin := 0.0;
-              rmin_in := false;
-              amin := aitp.min;
-              amin_in := false;
-              amax := aitp.max;
-              amax_in := false;
-            ELSE
-              rmin := 0.0;
-              rmin_in := true;
-              amin := -PI;
-              amin_in := false;
-              amax := PI;
-              amax_in := true;
-            END_IF;
-          ELSE
-            rmin := rmnp - rc;
-            rmin_in := min_included(ritp);
-            amin := -PI;
-            amin_in := false;
-            amax := PI;
-            amax_in := true;
-            IF inn
-            THEN
-              IF apc = a
-              THEN
-                rmin_in := false;
-                amin := aitp.min;
-                amin_in := false;
-                amax := aitp.max;
-                amax_in := false;
-              ELSE
-                IF acp = a
-                THEN
-                  amin := aitp.min;
-                  amin_in := false;
-                  amax := aitp.max;
-                  amax_in := false;
-                END_IF;
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    ELSE
-      x := xp + rmxp * COS(aitp.min) - xc;
-      y := yp + rmxp * SIN(aitp.min) - yc;
-      r0 := SQRT(x ** 2 + y ** 2);
-      in0 := max_included(ritp) AND min_included(aitp);
-      IF r0 <> 0.0
-      THEN
-        a0 := atan2(y, x);
-      END_IF;
-      x := xp + rmxp * COS(aitp.max) - xc;
-      y := yp + rmxp * SIN(aitp.max) - yc;
-      r1 := SQRT(x ** 2 + y ** 2);
-      in1 := max_included(ritp) AND max_included(aitp);
-      IF r1 <> 0.0
-      THEN
-        a1 := atan2(y, x);
-      END_IF;
-      x := xp + rmnp * COS(aitp.max) - xc;
-      y := yp + rmnp * SIN(aitp.max) - yc;
-      r2 := SQRT(x ** 2 + y ** 2);
-      in2 := min_included(ritp) AND max_included(aitp);
-      IF r2 <> 0.0
-      THEN
-        a2 := atan2(y, x);
-      ELSE
-        a2 := a1;
-        in2 := in1;
-      END_IF;
-      IF r1 = 0.0
-      THEN
-        a1 := a2;
-        in1 := in2;
-      END_IF;
-      x := xp + rmnp * COS(aitp.min) - xc;
-      y := yp + rmnp * SIN(aitp.min) - yc;
-      r3 := SQRT(x ** 2 + y ** 2);
-      in3 := min_included(ritp) AND min_included(aitp);
-      IF r3 <> 0.0
-      THEN
-        a3 := atan2(y, x);
-      ELSE
-        a3 := a0;
-        in3 := in0;
-      END_IF;
-      IF r0 = 0.0
-      THEN
-        a0 := a3;
-        in0 := in3;
-      END_IF;
-      IF rmnp = 0.0
-      THEN
-        in2 := min_included(ritp);
-        in3 := in2;
-      END_IF;
-      IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min))
-      THEN
-        in0 := min_included(aitp);
-        in3 := in0;
-      ELSE
-        IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max))
-        THEN
-          in1 := max_included(aitp);
-          in2 := in1;
-        END_IF;
-      END_IF;
-      IF strictly_in(acp, aitp)
-      THEN
-        rmax := rc + rmxp;
-        rmax_in := max_included(ritp);
-      ELSE
-        rmax := r0;
-        rmax_in := in0;
-        IF rmax = r1
-        THEN
-          rmax_in := rmax_in OR in1;
-        END_IF;
-        IF rmax < r1
-        THEN
-          rmax := r1;
-          rmax_in := in1;
-        END_IF;
-        IF rmax = r2
-        THEN
-          rmax_in := rmax_in OR in2;
-        END_IF;
-        IF rmax < r2
-        THEN
-          rmax := r2;
-          rmax_in := in2;
-        END_IF;
-        IF rmax = r3
-        THEN
-          rmax_in := rmax_in OR in3;
-        END_IF;
-        IF rmax < r3
-        THEN
-          rmax := r3;
-          rmax_in := in3;
-        END_IF;
-      END_IF;
-      IF strictly_in(apc, aitp)
-      THEN
-        IF rc >= rmxp
-        THEN
-          rmin := rc - rmxp;
-          rmin_in := max_included(ritp);
-        ELSE
-          IF rc <= rmnp
-          THEN
-            rmin := rmnp - rc;
-            rmin_in := min_included(ritp);
-          ELSE
-            rmin := 0.0;
-            rmin_in := true;
-          END_IF;
-        END_IF;
-      ELSE
-        rmin := r0;
-        rmin_in := in0;
-        a := apc - aitp.min;
-        r := rc * COS(a);
-        IF {rmnp < r < rmxp}
-        THEN
-          rmin := rc * SIN(ABS(a));
-          rmin_in := min_included(aitp);
-        END_IF;
-        a := apc - aitp.max;
-        r := rc * COS(a);
-        IF {rmnp < r < rmxp}
-        THEN
-          r := rc * SIN(ABS(a));
-          inn := max_included(aitp);
-          IF r = rmin
-          THEN
-            rmin_in := rmin_in OR inn;
-          END_IF;
-          IF r < rmin
-          THEN
-            rmin := r;
-            rmin_in := inn;
-          END_IF;
-        END_IF;
-        IF r1 = rmin
-        THEN
-          rmin_in := rmin_in OR in1;
-        END_IF;
-        IF r1 < rmin
-        THEN
-          rmin := r1;
-          rmin_in := in1;
-        END_IF;
-        IF r2 = rmin
-        THEN
-          rmin_in := rmin_in OR in2;
-        END_IF;
-        IF r2 < rmin
-        THEN
-          rmin := r2;
-          rmin_in := in2;
-        END_IF;
-        IF r3 = rmin
-        THEN
-          rmin_in := rmin_in OR in3;
-        END_IF;
-        IF r3 < rmin
-        THEN
-          rmin := r3;
-          rmin_in := in3;
-        END_IF;
-      END_IF;
-      IF rc >= rmxp
-      THEN
-        ab := acp;
-        find_aminmax(ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in);
-        a := ACOS(rmxp / rc);
-        IF strictly_in(apc - a, aitp)
-        THEN
-          amin := ab - ASIN(rmxp / rc);
-          amin_in := max_included(ritp);
-        END_IF;
-        IF strictly_in(apc + a, aitp)
-        THEN
-          amax := ab + ASIN(rmxp / rc);
-          amax_in := max_included(ritp);
-        END_IF;
-        angle_range(amin, amax);
-      ELSE
-        IF rc > rmnp
-        THEN
-          ab := angle(0.5 * (aitp.min + aitp.max));
-          find_aminmax(ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in);
-        ELSE
-          ab := angle(0.5 * (aitp.min + aitp.max));
-          a0 := angle(a0 - ab);
-          a1 := angle(a1 - ab);
-          a2 := angle(a2 - ab);
-          a3 := angle(a3 - ab);
-          IF a3 > a2
-          THEN
-            a2 := a2 + 2.0 * PI;
-          END_IF;
-          IF a0 > a1
-          THEN
-            a0 := a0 + 2.0 * PI;
-          END_IF;
-          IF a3 < a0
-          THEN
-            amin := a3;
-            amin_in := in3;
-          ELSE
-            amin := a0;
-            amin_in := in0;
-          END_IF;
-          IF a2 > a1
-          THEN
-            amax := a2;
-            amax_in := in2;
-          ELSE
-            amax := a1;
-            amax_in := in1;
-          END_IF;
-          IF (amax - amin > 2.0 * PI) OR ((amax - amin = 2.0 * PI) AND (amin_in OR amax_in))
-          THEN
-            amin := -PI;
-            amin_in := false;
-            amax := PI;
-            amax_in := true;
-          ELSE
-            amin := amin + ab;
-            amax := amax + ab;
-            angle_range(amin, amax);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-    IF rmin_in
-    THEN
-      minclo := closed;
-    END_IF;
-    IF rmax_in
-    THEN
-      maxclo := closed;
-    END_IF;
-    ritv := make_finite_real_interval(rmin, minclo, rmax, maxclo);
-  ELSE
-    IF (rc > rmnp) AND strictly_in(apc, aitp)
-    THEN
-      RETURN(?);
-    END_IF;
-    IF aitp.max - aitp.min = 2.0 * PI
-    THEN
-      a := angle(aitp.min);
-      IF rc > rmnp
-      THEN
-        IF max_included(aitp)
-        THEN
-          RETURN(?);
-        END_IF;
-        rmin := 0.0;
-        rmin_in := false;
-        amin := aitp.min;
-        amin_in := false;
-        amax := aitp.max;
-        amax_in := false;
-      ELSE
-        rmin := rmnp - rc;
-        rmin_in := min_included(ritp);
-        amin := -PI;
-        amin_in := false;
-        amax := PI;
-        amax_in := true;
-        IF NOT max_included(aitp)
-        THEN
-          IF apc = a
-          THEN
-            rmin_in := false;
-            amin := aitp.min;
-            amin_in := false;
-            amax := aitp.max;
-            amax_in := false;
-          ELSE
-            IF acp = a
-            THEN
-              amin := aitp.min;
-              amin_in := false;
-              amax := aitp.max;
-              amax_in := false;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    ELSE
-      a0 := angle(aitp.min);
-      in0 := false;
-      a1 := angle(aitp.max);
-      in1 := false;
-      x := xp + rmnp * COS(aitp.max) - xc;
-      y := yp + rmnp * SIN(aitp.max) - yc;
-      r2 := SQRT(x ** 2 + y ** 2);
-      in2 := min_included(ritp) AND max_included(aitp);
-      IF r2 <> 0.0
-      THEN
-        a2 := atan2(y, x);
-      ELSE
-        a2 := a1;
-        in2 := in1;
-      END_IF;
-      x := xp + rmnp * COS(aitp.min) - xc;
-      y := yp + rmnp * SIN(aitp.min) - yc;
-      r3 := SQRT(x ** 2 + y ** 2);
-      in3 := min_included(ritp) AND min_included(aitp);
-      IF r3 <> 0.0
-      THEN
-        a3 := atan2(y, x);
-      ELSE
-        a3 := a0;
-        in3 := in0;
-      END_IF;
-      IF rmnp = 0.0
-      THEN
-        in2 := min_included(ritp);
-        in3 := in2;
-      END_IF;
-      IF (apc = angle(aitp.min)) OR (acp = angle(aitp.min))
-      THEN
-        in0 := min_included(aitp);
-        in3 := in0;
-      ELSE
-        IF (apc = angle(aitp.max)) OR (acp = angle(aitp.max))
-        THEN
-          in1 := max_included(aitp);
-          in2 := in1;
-        END_IF;
-      END_IF;
-      IF strictly_in(apc, aitp)
-      THEN
-        rmin := rmnp - rc;
-        rmin_in := min_included(ritp);
-      ELSE
-        rmin := r2;
-        rmin_in := in2;
-        a := apc - aitp.min;
-        r := rc * COS(a);
-        IF rmnp < r
-        THEN
-          rmin := rc * SIN(ABS(a));
-          rmin_in := min_included(aitp);
-        END_IF;
-        a := apc - aitp.max;
-        r := rc * COS(a);
-        IF rmnp < r
-        THEN
-          r := rc * SIN(ABS(a));
-          inn := max_included(aitp);
-          IF r = rmin
-          THEN
-            rmin_in := rmin_in OR inn;
-          END_IF;
-          IF r < rmin
-          THEN
-            rmin := r;
-            rmin_in := inn;
-          END_IF;
-        END_IF;
-        IF r3 = rmin
-        THEN
-          rmin_in := rmin_in OR in3;
-        END_IF;
-        IF r3 < rmin
-        THEN
-          rmin := r3;
-          rmin_in := in3;
-        END_IF;
-      END_IF;
-      ab := angle(0.5 * (aitp.min + aitp.max));
-      IF rc > rmnp
-      THEN
-        find_aminmax(ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in);
-      ELSE
-        a0 := angle(a0 - ab);
-        a1 := angle(a1 - ab);
-        a2 := angle(a2 - ab);
-        a3 := angle(a3 - ab);
-        IF a3 > a2
-        THEN
-          a2 := a2 + 2.0 * PI;
-        END_IF;
-        IF a0 > a1
-        THEN
-          a0 := a0 + 2.0 * PI;
-        END_IF;
-        IF a3 < a0
-        THEN
-          amin := a3;
-          amin_in := in3;
-        ELSE
-          amin := a0;
-          amin_in := in0;
-        END_IF;
-        IF a2 > a1
-        THEN
-          amax := a2;
-          amax_in := in2;
-        ELSE
-          amax := a1;
-          amax_in := in1;
-        END_IF;
-        IF (amax - amin > 2.0 * PI) OR ((amax - amin = 2.0 * PI) AND (amin_in OR amax_in))
-        THEN
-          amin := -PI;
-          amin_in := false;
-          amax := PI;
-          amax_in := true;
-          IF (rmin = 0.0) AND rmin_in
-          THEN
-            RETURN(?);
-          END_IF;
-        ELSE
-          amin := amin + ab;
-          amax := amax + ab;
-          angle_range(amin, amax);
-        END_IF;
-      END_IF;
-    END_IF;
-    IF rmin_in
-    THEN
-      minclo := closed;
-    END_IF;
-    ritv := make_real_interval_from_min(rmin, minclo);
-  END_IF;
-  minclo := open;
-  maxclo := open;
-  IF amin_in
-  THEN
-    minclo := closed;
-  END_IF;
-  IF amax_in
-  THEN
-    maxclo := closed;
-  END_IF;
-  aitv := make_finite_real_interval(amin, minclo, amax, maxclo);
-  RETURN(make_polar_complex_number_region(centre, ritv, aitv));
-END_FUNCTION;
-
-FUNCTION equal_cregion_pregion(crgn : cartesian_complex_number_region;
-                               prgn : polar_complex_number_region) : LOGICAL;
-LOCAL
-  arng : REAL;
-  amin : REAL;
-  xc   : REAL;
-  yc   : REAL;
-  aitv : real_interval;
-  xitv : real_interval;
-  yitv : real_interval;
-  c_in : BOOLEAN;
-END_LOCAL;
-  IF NOT EXISTS(crgn) OR NOT EXISTS(prgn)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF max_exists(prgn.distance_constraint)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF real_min(prgn.distance_constraint) <> 0.0
-  THEN
-    RETURN(false);
-  END_IF;
-  c_in := min_included(prgn.distance_constraint);
-  aitv := prgn.direction_constraint;
-  amin := aitv.min;
-  arng := aitv.max - amin;
-  xc := prgn.centre.real_part;
-  yc := prgn.centre.imag_part;
-  xitv := crgn.real_constraint;
-  yitv := crgn.imag_constraint;
-  IF arng = 0.5 * PI
-  THEN
-    IF amin = 0.0
-    THEN
-      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))));
-    END_IF;
-    IF amin = 0.5 * PI
-    THEN
-      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))));
-    END_IF;
-    IF amin = -PI
-    THEN
-      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))));
-    END_IF;
-    IF amin = -0.5 * PI
-    THEN
-      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))));
-    END_IF;
-  END_IF;
-  IF arng = PI
-  THEN
-    IF amin = 0.0
-    THEN
-      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))));
-    END_IF;
-    IF amin = 0.5 * PI
-    THEN
-      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))));
-    END_IF;
-    IF amin = -PI
-    THEN
-      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))));
-    END_IF;
-    IF amin = -0.5 * PI
-    THEN
-      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))));
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION equal_maths_functions(fun1 : maths_function;
-                               fun2 : maths_function) : LOGICAL;
-LOCAL
-  cum : LOGICAL;
-END_LOCAL;
-  IF fun1 = fun2
-  THEN
-    RETURN(true);
-  END_IF;
-  cum := equal_maths_spaces(fun1.domain, fun2.domain);
-  IF cum = false
-  THEN
-    RETURN(false);
-  END_IF;
-  cum := cum AND equal_maths_spaces(fun1.range, fun2.range);
-  IF cum = false
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(unknown);
-END_FUNCTION;
-
-FUNCTION equal_maths_spaces(spc1 : maths_space;
-                            spc2 : maths_space) : LOGICAL;
-LOCAL
-  spc1types : SET OF STRING       := stripped_typeof(spc1);
-  spc2types : SET OF STRING       := stripped_typeof(spc2);
-  set1      : SET OF maths_value;
-  set2      : SET OF maths_value;
-  cum       : LOGICAL             := true;
-  base      : maths_space;
-  expnt     : INTEGER;
-  factors   : LIST OF maths_space;
-  factors2  : LIST OF maths_space;
-  fs1       : function_space;
-  fs2       : function_space;
-  cum2      : LOGICAL;
-END_LOCAL;
-  IF spc1 = spc2
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'FINITE_SPACE' IN spc1types
-  THEN
-    set1 := spc1\finite_space.members;
-    IF 'FINITE_SPACE' IN spc2types
-    THEN
-      set2 := spc2\finite_space.members;
-      REPEAT i := 1 TO SIZEOF(set1);
-        cum := cum AND member_of(set1[i], spc2);
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      IF cum = true
-      THEN
-        REPEAT i := 1 TO SIZEOF(set2);
-          cum := cum AND member_of(set2[i], spc1);
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-      END_IF;
-      RETURN(cum);
-    END_IF;
-    IF 'FINITE_INTEGER_INTERVAL' IN spc2types
-    THEN
-      set2 := [];
-      REPEAT i := spc2\finite_integer_interval.min TO spc2\finite_integer_interval.max;
-        set2 := set2 + [i];
-      END_REPEAT;
-      RETURN(equal_maths_spaces(spc1, make_finite_space(set2)));
-    END_IF;
-  END_IF;
-  IF ('FINITE_INTEGER_INTERVAL' IN spc1types) AND ('FINITE_SPACE' IN spc2types)
-  THEN
-    set1 := [];
-    REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max;
-      set1 := set1 + [i];
-    END_REPEAT;
-    RETURN(equal_maths_spaces(make_finite_space(set1), spc2));
-  END_IF;
-  IF ('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc1types) AND ('POLAR_COMPLEX_NUMBER_REGION' IN spc2types)
-  THEN
-    RETURN(equal_cregion_pregion(spc1, spc2));
-  END_IF;
-  IF ('POLAR_COMPLEX_NUMBER_REGION' IN spc1types) AND ('CARTESIAN_COMPLEX_NUMBER_REGION' IN spc2types)
-  THEN
-    RETURN(equal_cregion_pregion(spc2, spc1));
-  END_IF;
-  IF 'UNIFORM_PRODUCT_SPACE' IN spc1types
-  THEN
-    base := spc1\uniform_product_space.base;
-    expnt := spc1\uniform_product_space.exponent;
-    IF 'UNIFORM_PRODUCT_SPACE' IN spc2types
-    THEN
-      IF expnt <> spc2\uniform_product_space.exponent
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(equal_maths_spaces(base, spc2\uniform_product_space.base));
-    END_IF;
-    IF 'LISTED_PRODUCT_SPACE' IN spc2types
-    THEN
-      factors := spc2\listed_product_space.factors;
-      IF expnt <> SIZEOF(factors)
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO SIZEOF(factors);
-        cum := cum AND equal_maths_spaces(base, factors[i]);
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(cum);
-    END_IF;
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN spc1types
-  THEN
-    factors := spc1\listed_product_space.factors;
-    IF 'UNIFORM_PRODUCT_SPACE' IN spc2types
-    THEN
-      IF spc2\uniform_product_space.exponent <> SIZEOF(factors)
-      THEN
-        RETURN(false);
-      END_IF;
-      base := spc2\uniform_product_space.base;
-      REPEAT i := 1 TO SIZEOF(factors);
-        cum := cum AND equal_maths_spaces(base, factors[i]);
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(cum);
-    END_IF;
-    IF 'LISTED_PRODUCT_SPACE' IN spc2types
-    THEN
-      factors2 := spc2\listed_product_space.factors;
-      IF SIZEOF(factors) <> SIZEOF(factors2)
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO SIZEOF(factors);
-        cum := cum AND equal_maths_spaces(factors[i], factors2[i]);
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(cum);
-    END_IF;
-  END_IF;
-  IF ('EXTENDED_TUPLE_SPACE' IN spc1types) AND ('EXTENDED_TUPLE_SPACE' IN spc2types)
-  THEN
-    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));
-  END_IF;
-  IF ('FUNCTION_SPACE' IN spc1types) AND ('FUNCTION_SPACE' IN spc2types)
-  THEN
-    fs1 := spc1;
-    fs2 := spc2;
-    IF fs1.domain_constraint <> fs2.domain_constraint
-    THEN
-      IF (fs1.domain_constraint = sc_equal) OR (fs2.domain_constraint = sc_equal)
-      THEN
-        RETURN(false);
-      END_IF;
-      IF (fs1.domain_constraint <> sc_subspace)
-      THEN
-        fs1 := spc2;
-        fs2 := spc1;
-      END_IF;
-      IF (fs1.domain_constraint <> sc_subspace) OR (fs2.domain_constraint <> sc_member)
-      THEN
-        RETURN(unknown);
-      END_IF;
-      IF any_space_satisfies(fs1.domain_constraint, fs1.domain_argument) <>
-         any_space_satisfies(fs2.domain_constraint, fs2.domain_argument)
-      THEN
-        RETURN(false);
-      END_IF;
-      IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.domain_argument))
-      THEN
-        RETURN(false);
-      END_IF;
-      IF SIZEOF(['FINITE_SPACE','FINITE_INTEGER_INTERVAL'] * stripped_typeof(fs1.domain_argument)) = 0
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(unknown);
-    END_IF;
-    cum := equal_maths_spaces(fs1.domain_argument, fs2.domain_argument);
-    IF cum = false
-    THEN
-      RETURN(false);
-    END_IF;
-    IF fs1.range_constraint <> fs2.range_constraint
-    THEN
-      IF (fs1.range_constraint = sc_equal) OR (fs2.range_constraint = sc_equal)
-      THEN
-        RETURN(false);
-      END_IF;
-      IF (fs1.range_constraint <> sc_subspace)
-      THEN
-        fs1 := spc2;
-        fs2 := spc1;
-      END_IF;
-      IF (fs1.range_constraint <> sc_subspace) OR (fs2.range_constraint <> sc_member)
-      THEN
-        RETURN(unknown);
-      END_IF;
-      IF any_space_satisfies(fs1.range_constraint, fs1.range_argument) <>
-         any_space_satisfies(fs2.range_constraint, fs2.range_argument)
-      THEN
-        RETURN(false);
-      END_IF;
-      IF NOT ('FINITE_SPACE' IN stripped_typeof(fs2.range_argument))
-      THEN
-        RETURN(false);
-      END_IF;
-      IF SIZEOF(['FINITE_SPACE','FINITE_INTEGER_INTERVAL'] * stripped_typeof(fs1.range_argument)) = 0
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(unknown);
-    END_IF;
-    cum := cum AND equal_maths_spaces(fs1.range_argument, fs2.range_argument);
-    RETURN(cum);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION equal_maths_values(val1 : maths_value;
-                            val2 : maths_value) : LOGICAL;
-FUNCTION mem_of_vs(val1 : maths_value;
-                   val2 : maths_value) : LOGICAL;
-  IF NOT has_values_space(val2)
-  THEN
-    RETURN(unknown);
-  END_IF;
-  IF NOT member_of(val1, values_space_of(val2))
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(unknown);
-END_FUNCTION;
-LOCAL
-  types1 : SET OF STRING;
-  types2 : SET OF STRING;
-  list1  : LIST OF maths_value;
-  list2  : LIST OF maths_value;
-  cum    : LOGICAL             := true;
-END_LOCAL;
-  IF NOT EXISTS(val1) OR NOT EXISTS(val2)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF val1 = val2
-  THEN
-    RETURN(true);
-  END_IF;
-  types1 := stripped_typeof(val1);
-  types2 := stripped_typeof(val2);
-  IF ('MATHS_ATOM' IN types1) OR ('COMPLEX_NUMBER_LITERAL' IN types1)
-  THEN
-    IF 'MATHS_ATOM' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'COMPLEX_NUMBER_LITERAL' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'LIST' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'MATHS_SPACE' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'MATHS_FUNCTION' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'GENERIC_EXPRESSION' IN types2
-    THEN
-      RETURN(mem_of_vs(val1, val2));
-    END_IF;
-    RETURN(unknown);
-  END_IF;
-  IF ('MATHS_ATOM' IN types2) OR ('COMPLEX_NUMBER_LITERAL' IN types2)
-  THEN
-    RETURN(equal_maths_values(val2, val1));
-  END_IF;
-  IF 'LIST' IN types1
-  THEN
-    IF 'LIST' IN types2
-    THEN
-      list1 := val1;
-      list2 := val2;
-      IF SIZEOF(list1) <> SIZEOF(list2)
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT i := 1 TO SIZEOF(list1);
-        cum := cum AND equal_maths_values(list1[i], list2[i]);
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(cum);
-    END_IF;
-    IF 'MATHS_SPACE' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'MATHS_FUNCTION' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'GENERIC_EXPRESSION' IN types2
-    THEN
-      RETURN(mem_of_vs(val1, val2));
-    END_IF;
-    RETURN(unknown);
-  END_IF;
-  IF 'LIST' IN types2
-  THEN
-    RETURN(equal_maths_values(val2, val1));
-  END_IF;
-  IF 'MATHS_SPACE' IN types1
-  THEN
-    IF 'MATHS_SPACE' IN types2
-    THEN
-      RETURN(equal_maths_spaces(val1, val2));
-    END_IF;
-    IF 'MATHS_FUNCTION' IN types2
-    THEN
-      RETURN(false);
-    END_IF;
-    IF 'GENERIC_EXPRESSION' IN types2
-    THEN
-      RETURN(mem_of_vs(val1, val2));
-    END_IF;
-    RETURN(unknown);
-  END_IF;
-  IF 'MATHS_SPACE' IN types2
-  THEN
-    RETURN(equal_maths_values(val2, val1));
-  END_IF;
-  IF 'MATHS_FUNCTION' IN types1
-  THEN
-    IF 'MATHS_FUNCTION' IN types2
-    THEN
-      RETURN(equal_maths_functions(val1, val2));
-    END_IF;
-    IF 'GENERIC_EXPRESSION' IN types2
-    THEN
-      RETURN(mem_of_vs(val1, val2));
-    END_IF;
-    RETURN(unknown);
-  END_IF;
-  IF 'MATHS_FUNCTION' IN types2
-  THEN
-    RETURN(equal_maths_values(val2, val1));
-  END_IF;
-  IF ('GENERIC_EXPRESSION' IN types1) AND ('GENERIC_EXPRESSION' IN types2)
-  THEN
-    IF NOT has_values_space(val1) OR NOT has_values_space(val2)
-    THEN
-      RETURN(unknown);
-    END_IF;
-    IF NOT compatible_spaces(values_space_of(val1), values_space_of(val2))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  RETURN(unknown);
-END_FUNCTION;
-
-FUNCTION es_subspace_of_es(es1 : elementary_space_enumerators;
-                           es2 : elementary_space_enumerators) : BOOLEAN;
-  IF NOT EXISTS(es1) OR NOT EXISTS(es2)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF es1 = es2
-  THEN
-    RETURN(true);
-  END_IF;
-  IF es2 = es_generics
-  THEN
-    RETURN(true);
-  END_IF;
-  IF (es1 = es_booleans) AND (es2 = es_logicals)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF (es2 = es_numbers) AND ((es1 = es_complex_numbers) OR (es1 = es_reals) OR (es1 = es_integers))
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION expression_is_constant(expr : generic_expression) : BOOLEAN;
-  RETURN(bool(SIZEOF(free_variables_of(expr)) = 0));
-END_FUNCTION;
-
-FUNCTION external_version_assignment_is_valid(aia : applied_external_identification_assignment) : BOOLEAN;
-LOCAL
-  item : external_identification_item;
-  role : identification_role;
-END_LOCAL;
-  role := aia.role;
-  IF role.name = 'version'
-  THEN
-    REPEAT i := LOINDEX(aia\applied_external_identification_assignment.items) TO HIINDEX(aia\applied_external_identification_assignment.items);
-      item := aia\applied_external_identification_assignment.items[i];
-      IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_GENERAL_PROPERTY'] *
-                 TYPEOF(item)) =
-          0)
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  ELSE
-    RETURN(true);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION extract_factors(tspace : tuple_space;
-                         m : INTEGER;
-                         n : INTEGER) : tuple_space;
-LOCAL
-  tsp : tuple_space := the_zero_tuple_space;
-END_LOCAL;
-  REPEAT i := m TO n;
-    tsp := assoc_product_space(tsp, factor_space(tspace, i));
-  END_REPEAT;
-  RETURN(tsp);
-END_FUNCTION;
-
-FUNCTION extremal_position_check(fun : linearized_table_function) : BOOLEAN;
-LOCAL
-  source_domain   : maths_space;
-  source_interval : finite_integer_interval;
-  index           : INTEGER                  := 1;
-  base            : INTEGER;
-  shape           : LIST OF positive_integer;
-  ndim            : positive_integer;
-  slo             : INTEGER;
-  shi             : INTEGER;
-  sublo           : LIST OF INTEGER          := [];
-  subhi           : LIST OF INTEGER          := [];
-END_LOCAL;
-  IF NOT EXISTS(fun)
-  THEN
-    RETURN(false);
-  END_IF;
-  source_domain := factor1(fun.source.domain);
-  IF (schema_prefix + 'TUPLE_SPACE') IN TYPEOF(source_domain)
-  THEN
-    source_domain := factor1(source_domain);
-  END_IF;
-  IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(source_domain))
-  THEN
-    RETURN(false);
-  END_IF;
-  source_interval := source_domain;
-  base := fun\explicit_table_function.index_base;
-  shape := fun\explicit_table_function.shape;
-  IF (schema_prefix + 'STANDARD_TABLE_FUNCTION') IN TYPEOF(fun)
-  THEN
-    REPEAT j := 1 TO SIZEOF(shape);
-      index := index * shape[j];
-    END_REPEAT;
-    index := fun.first + index - 1;
-    RETURN(bool({source_interval.min <= index <= source_interval.max}));
-  END_IF;
-  IF (schema_prefix + 'REGULAR_TABLE_FUNCTION') IN TYPEOF(fun)
-  THEN
-    ndim := SIZEOF(fun\explicit_table_function.shape);
-    REPEAT j := 1 TO ndim;
-      slo := base;
-      shi := base + shape[j] - 1;
-      IF fun\regular_table_function.increments[j] >= 0
-      THEN
-        INSERT(sublo, slo, j - 1);
-        INSERT(subhi, shi, j - 1);
-      ELSE
-        INSERT(sublo, shi, j - 1);
-        INSERT(subhi, slo, j - 1);
-      END_IF;
-    END_REPEAT;
-    index := regular_indexing(sublo, base, shape, fun\regular_table_function.increments, fun.first);
-    IF NOT ({source_interval.min <= index <= source_interval.max})
-    THEN
-      RETURN(false);
-    END_IF;
-    index := regular_indexing(subhi, base, shape, fun\regular_table_function.increments, fun.first);
-    IF NOT ({source_interval.min <= index <= source_interval.max})
-    THEN
-      RETURN(false);
-    END_IF;
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION face_bound_reversed(a_face_bound : face_bound) : face_bound;
-LOCAL
-  the_reverse : face_bound;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound))
-  THEN
-    the_reverse := dummy_tri || face_bound(a_face_bound\face_bound.bound, NOT (a_face_bound\face_bound.orientation)) ||
-                   face_outer_bound();
-  ELSE
-    the_reverse := dummy_tri || face_bound(a_face_bound.bound, NOT (a_face_bound.orientation));
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION face_reversed(a_face : face) : oriented_face;
-LOCAL
-  the_reverse : oriented_face;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF(a_face))
-  THEN
-    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));
-  ELSE
-    the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.bounds)) || oriented_face(a_face, false);
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION factor_space(tspace : tuple_space;
-                      idx : positive_integer) : maths_space;
-LOCAL
-  typenames : SET OF STRING := TYPEOF(tspace);
-END_LOCAL;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN typenames
-  THEN
-    IF idx <= tspace\uniform_product_space.exponent
-    THEN
-      RETURN(tspace\uniform_product_space.base);
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF (schema_prefix + 'LISTED_PRODUCT_SPACE') IN typenames
-  THEN
-    IF idx <= SIZEOF(tspace\listed_product_space.factors)
-    THEN
-      RETURN(tspace\listed_product_space.factors[idx]);
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN typenames
-  THEN
-    IF idx <= space_dimension(tspace\extended_tuple_space.base)
-    THEN
-      RETURN(factor_space(tspace\extended_tuple_space.base, idx));
-    END_IF;
-    RETURN(tspace\extended_tuple_space.extender);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION factor1(tspace : tuple_space) : maths_space;
-LOCAL
-  typenames : SET OF STRING := TYPEOF(tspace);
-END_LOCAL;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN typenames
-  THEN
-    RETURN(tspace\uniform_product_space.base);
-  END_IF;
-  IF (schema_prefix + 'LISTED_PRODUCT_SPACE') IN typenames
-  THEN
-    RETURN(tspace\listed_product_space.factors[1]);
-  END_IF;
-  IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN typenames
-  THEN
-    RETURN(factor1(tspace\extended_tuple_space.base));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION find_assembly_root(constituent : SET OF product_definition) : SET OF product_definition;
-LOCAL
-  local_relation  : SET OF assembly_component_usage := [];
-  local_relation2 : BAG OF assembly_component_usage := [];
-  local_parent    : SET OF product_definition       := [];
-  root            : SET OF product_definition;
-  i               : INTEGER                         := 0;
-  j               : INTEGER                         := 0;
-END_LOCAL;
-  IF ((SIZEOF(constituent) = 1) AND assembly_root(constituent[1]))
-  THEN
-    RETURN([constituent[1]]);
-  ELSE
-    IF (SIZEOF(constituent) = 0)
-    THEN
-      RETURN([]);
-    ELSE
-      REPEAT j := 1 TO HIINDEX(constituent);
-        local_relation2 := local_relation2 +
-                           QUERY(pdr
-                                 <* USEDIN(constituent[j],
-                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN
-                                   TYPEOF(pdr));
-      END_REPEAT;
-      local_relation := bag_to_set(local_relation2);
-      IF (SIZEOF(local_relation) = 0)
-      THEN
-        IF (SIZEOF(constituent) = 1)
-        THEN
-          RETURN([constituent[1]]);
-        ELSE
-          RETURN([]);
-        END_IF;
-      ELSE
-        REPEAT i := 1 TO HIINDEX(local_relation);
-          REPEAT j := 1 TO HIINDEX(constituent);
-            IF (local_relation[i].relating_product_definition <> constituent[j])
-            THEN
-              local_parent := local_parent + local_relation[i].relating_product_definition;
-            END_IF;
-          END_REPEAT;
-        END_REPEAT;
-        IF ((SIZEOF(local_parent) = 1) AND assembly_root(local_parent[1]))
-        THEN
-          RETURN([local_parent[1]]);
-        ELSE
-          IF (SIZEOF(local_parent) = 0)
-          THEN
-            RETURN([]);
-          ELSE
-            root := find_assembly_root(local_parent);
-            IF (SIZEOF(root) = 1)
-            THEN
-              RETURN(root);
-            ELSE
-              IF (SIZEOF(root) = 0)
-              THEN
-                RETURN([]);
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN([]);
-END_FUNCTION;
-
-FUNCTION find_representative_shape_representation_of_product_definition(item : product_definition) : shape_representation;
-LOCAL
-  local_s_r : SET OF shape_representation := [];
-END_LOCAL;
-  local_s_r := QUERY(z
-                     <* find_shape_representation_of_product_definition(item)
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-                       TYPEOF(z));
-  IF (SIZEOF(local_s_r) = 1)
-  THEN
-    RETURN(local_s_r[1]);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION find_representative_shape_representation_of_shape_aspect(item : shape_aspect) : shape_representation;
-LOCAL
-  local_s_r : SET OF shape_representation := [];
-END_LOCAL;
-  local_s_r := QUERY(z
-                     <* find_shape_representation_of_shape_aspect(item)
-                     | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-                       TYPEOF(z));
-  IF (SIZEOF(local_s_r) = 1)
-  THEN
-    RETURN(local_s_r[1]);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION find_shape_representation_of_product_definition(item : product_definition) : SET OF shape_representation;
-LOCAL
-  local_p_d_s  : SET OF product_definition_shape        := [];
-  local_p_d_s2 : BAG OF product_definition_shape        := [];
-  local_s_d_r  : SET OF shape_definition_representation := [];
-  local_s_d_r2 : BAG OF shape_definition_representation := [];
-  local_s_r    : SET OF shape_representation            := [];
-  i            : INTEGER;
-END_LOCAL;
-  local_p_d_s2 := local_p_d_s2 +
-                  QUERY(pd
-                        <* USEDIN(item,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd));
-  local_p_d_s := bag_to_set(local_p_d_s2);
-  REPEAT i := 1 TO HIINDEX(local_p_d_s);
-    local_s_d_r2 := local_s_d_r2 +
-                    QUERY(pdr
-                          <* USEDIN(local_p_d_s[i],
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                            TYPEOF(pdr));
-  END_REPEAT;
-  local_s_d_r := bag_to_set(local_s_d_r2);
-  REPEAT i := 1 TO HIINDEX(local_s_d_r);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
-        TYPEOF(local_s_d_r[i].used_representation))
-    THEN
-      local_s_r := local_s_r + local_s_d_r[i].used_representation;
-    END_IF;
-  END_REPEAT;
-  RETURN(local_s_r);
-END_FUNCTION;
-
-FUNCTION find_shape_representation_of_shape_aspect(item : shape_aspect) : SET OF shape_representation;
-LOCAL
-  local_p_d    : SET OF property_definition             := [];
-  local_s_d_r  : SET OF shape_definition_representation := [];
-  local_s_d_r2 : BAG OF shape_definition_representation := [];
-  local_s_r    : SET OF shape_representation            := [];
-  i            : INTEGER;
-END_LOCAL;
-  local_p_d := bag_to_set(USEDIN(item,
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
-  REPEAT i := 1 TO HIINDEX(local_p_d);
-    local_s_d_r2 := local_s_d_r2 +
-                    QUERY(pdr
-                          <* USEDIN(local_p_d[i],
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                          | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                            TYPEOF(pdr));
-  END_REPEAT;
-  local_s_d_r := bag_to_set(local_s_d_r2);
-  REPEAT i := 1 TO HIINDEX(local_s_d_r);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
-        TYPEOF(local_s_d_r[i].used_representation))
-    THEN
-      local_s_r := local_s_r + local_s_d_r[i].used_representation;
-    END_IF;
-  END_REPEAT;
-  RETURN(local_s_r);
-END_FUNCTION;
-
-FUNCTION first_proj_axis(z_axis : direction;
-                         arg : direction) : direction;
-LOCAL
-  x_axis : direction;
-  v      : direction;
-  z      : direction;
-  x_vec  : vector;
-END_LOCAL;
-  IF (NOT EXISTS(z_axis))
-  THEN
-    RETURN(?);
-  ELSE
-    z := normalise(z_axis);
-    IF NOT EXISTS(arg)
-    THEN
-      IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND (z.direction_ratios <> [-1.0,0.0,0.0]))
-      THEN
-        v := dummy_gri || direction([1.0,0.0,0.0]);
-      ELSE
-        v := dummy_gri || direction([0.0,1.0,0.0]);
-      END_IF;
-    ELSE
-      IF (arg.dim <> 3)
-      THEN
-        RETURN(?);
-      END_IF;
-      IF ((cross_product(arg, z).magnitude) = 0.0)
-      THEN
-        RETURN(?);
-      ELSE
-        v := normalise(arg);
-      END_IF;
-    END_IF;
-    x_vec := scalar_times_vector(dot_product(v, z), z);
-    x_axis := vector_difference(v, x_vec).orientation;
-    x_axis := normalise(x_axis);
-  END_IF;
-  RETURN(x_axis);
-END_FUNCTION;
-
-FUNCTION free_variables_of(expr : generic_expression) : SET OF generic_variable;
-LOCAL
-  typenames : SET OF STRING              := stripped_typeof(expr);
-  result    : SET OF generic_variable    := [];
-  exprs     : LIST OF generic_expression := [];
-END_LOCAL;
-  IF 'GENERIC_LITERAL' IN typenames
-  THEN
-    RETURN(result);
-  END_IF;
-  IF 'GENERIC_VARIABLE' IN typenames
-  THEN
-    result := result + expr;
-    RETURN(result);
-  END_IF;
-  IF 'QUANTIFIER_EXPRESSION' IN typenames
-  THEN
-    exprs := QUERY(ge
-                   <* expr\multiple_arity_generic_expression.operands
-                   | NOT (ge IN expr\quantifier_expression.variables));
-    REPEAT i := 1 TO SIZEOF(exprs);
-      result := result + free_variables_of(exprs[i]);
-    END_REPEAT;
-    REPEAT i := 1 TO SIZEOF(expr\quantifier_expression.variables);
-      result := result - expr\quantifier_expression.variables[i];
-    END_REPEAT;
-    RETURN(result);
-  END_IF;
-  IF 'UNARY_GENERIC_EXPRESSION' IN typenames
-  THEN
-    RETURN(free_variables_of(expr\unary_generic_expression.operand));
-  END_IF;
-  IF 'BINARY_GENERIC_EXPRESSION' IN typenames
-  THEN
-    result := free_variables_of(expr\binary_generic_expression.operands[1]);
-    RETURN(result + free_variables_of(expr\binary_generic_expression.operands[2]));
-  END_IF;
-  IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN typenames
-  THEN
-    REPEAT i := 1 TO SIZEOF(expr\multiple_arity_generic_expression.operands);
-      result := result + free_variables_of(expr\multiple_arity_generic_expression.operands[i]);
-    END_REPEAT;
-    RETURN(result);
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION function_applicability(func : maths_function_select;
-                                arguments : LIST [1 : ?] OF maths_value) : BOOLEAN;
-LOCAL
-  domain       : tuple_space        := convert_to_maths_function(func).domain;
-  domain_types : SET OF STRING      := TYPEOF(domain);
-  narg         : positive_integer   := SIZEOF(arguments);
-  arg          : generic_expression;
-END_LOCAL;
-  IF (schema_prefix + 'PRODUCT_SPACE') IN domain_types
-  THEN
-    IF space_dimension(domain) <> narg
-    THEN
-      RETURN(false);
-    END_IF;
-  ELSE
-    IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN domain_types
-    THEN
-      IF space_dimension(domain) > narg
-      THEN
-        RETURN(false);
-      END_IF;
-    ELSE
-      RETURN(false);
-    END_IF;
-  END_IF;
-  REPEAT i := 1 TO narg;
-    arg := convert_to_operand(arguments[i]);
-    IF NOT has_values_space(arg)
-    THEN
-      RETURN(false);
-    END_IF;
-    IF NOT compatible_spaces(factor_space(domain, i), values_space_of(arg))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION function_is_1d_array(func : maths_function) : BOOLEAN;
-LOCAL
-  temp : maths_space;
-END_LOCAL;
-  IF NOT EXISTS(func)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF space_dimension(func.domain) <> 1
-  THEN
-    RETURN(false);
-  END_IF;
-  temp := factor1(func.domain);
-  IF (schema_prefix + 'PRODUCT_SPACE') IN TYPEOF(temp)
-  THEN
-    IF space_dimension(temp) <> 1
-    THEN
-      RETURN(false);
-    END_IF;
-    temp := factor1(temp);
-  END_IF;
-  IF (schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp)
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION function_is_1d_table(func : maths_function) : BOOLEAN;
-LOCAL
-  temp : maths_space;
-  itvl : finite_integer_interval;
-END_LOCAL;
-  IF NOT EXISTS(func)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF space_dimension(func.domain) <> 1
-  THEN
-    RETURN(false);
-  END_IF;
-  temp := factor1(func.domain);
-  IF (schema_prefix + 'PRODUCT_SPACE') IN TYPEOF(temp)
-  THEN
-    IF space_dimension(temp) <> 1
-    THEN
-      RETURN(false);
-    END_IF;
-    temp := factor1(temp);
-  END_IF;
-  IF (schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp)
-  THEN
-    itvl := temp;
-    RETURN(bool((itvl.min = 0) OR (itvl.min = 1)));
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION function_is_2d_table(func : maths_function) : BOOLEAN;
-LOCAL
-  temp   : maths_space;
-  pspace : product_space;
-  itvl1  : finite_integer_interval;
-  itvl2  : finite_integer_interval;
-END_LOCAL;
-  IF NOT EXISTS(func)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF space_dimension(func.domain) <> 1
-  THEN
-    RETURN(false);
-  END_IF;
-  temp := factor1(func.domain);
-  IF NOT ('PRODUCT_SPACE' IN stripped_typeof(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  pspace := temp;
-  IF space_dimension(pspace) <> 2
-  THEN
-    RETURN(false);
-  END_IF;
-  temp := factor1(pspace);
-  IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  itvl1 := temp;
-  temp := factor_space(pspace, 2);
-  IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  itvl2 := temp;
-  RETURN(bool((itvl1.min = itvl2.min) AND ((itvl1.min = 0) OR (itvl1.min = 1))));
-END_FUNCTION;
-
-FUNCTION function_is_array(func : maths_function) : BOOLEAN;
-LOCAL
-  tspace : tuple_space;
-  temp   : maths_space;
-END_LOCAL;
-  IF NOT EXISTS(func)
-  THEN
-    RETURN(false);
-  END_IF;
-  tspace := func.domain;
-  IF (space_dimension(tspace) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(tspace)))
-  THEN
-    tspace := factor1(tspace);
-  END_IF;
-  IF NOT ((schema_prefix + 'PRODUCT_SPACE') IN TYPEOF(tspace))
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT i := 1 TO space_dimension(tspace);
-    temp := factor_space(tspace, i);
-    IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION function_is_table(func : maths_function) : BOOLEAN;
-LOCAL
-  tspace : tuple_space;
-  temp   : maths_space;
-  base   : INTEGER;
-END_LOCAL;
-  IF NOT EXISTS(func)
-  THEN
-    RETURN(false);
-  END_IF;
-  tspace := func.domain;
-  IF (space_dimension(tspace) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(tspace)))
-  THEN
-    tspace := factor1(tspace);
-  END_IF;
-  IF NOT ((schema_prefix + 'PRODUCT_SPACE') IN TYPEOF(tspace))
-  THEN
-    RETURN(false);
-  END_IF;
-  temp := factor1(tspace);
-  IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-  THEN
-    RETURN(false);
-  END_IF;
-  base := temp\finite_integer_interval.min;
-  IF (base <> 0) AND (base <> 1)
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT i := 2 TO space_dimension(tspace);
-    temp := factor_space(tspace, i);
-    IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-    THEN
-      RETURN(false);
-    END_IF;
-    IF temp\finite_integer_interval.min <> base
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION gbsf_check_curve(cv : representation_item) : BOOLEAN;
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
-            TYPEOF(cv)) >
-     1
-  THEN
-    RETURN(false);
-  END_IF;
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE'] *
-            TYPEOF(cv)) =
-     1
-  THEN
-    RETURN(true);
-  ELSE
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cv)) AND
-        (cv\b_spline_curve.self_intersect = false) OR
-        (cv\b_spline_curve.self_intersect = unknown))
-    THEN
-      RETURN(true);
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND
-          (cv\composite_curve.self_intersect = false) OR
-          (cv\composite_curve.self_intersect = unknown))
-      THEN
-        RETURN(SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0);
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
-        THEN
-          RETURN(gbsf_check_curve(cv\curve_replica.parent_curve));
-        ELSE
-          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
-              ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
-              (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                    TYPEOF(cv\offset_curve_3d.basis_curve))))
-          THEN
-            RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve));
-          ELSE
-            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(cv)
-            THEN
-              RETURN((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND
-                     (gbsf_check_surface(cv\pcurve.basis_surface)));
-            ELSE
-              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(cv)
-              THEN
-                IF (SIZEOF(cv\polyline.points) >= 3)
-                THEN
-                  RETURN(true);
-                END_IF;
-              ELSE
-                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv)
-                THEN
-                  IF gbsf_check_curve(cv\surface_curve.curve_3d)
-                  THEN
-                    REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
-                      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
-                         TYPEOF(cv\surface_curve.associated_geometry[i])
-                      THEN
-                        IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i])
-                        THEN
-                          RETURN(false);
-                        END_IF;
-                      ELSE
-                        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                           TYPEOF(cv\surface_curve.associated_geometry[i])
-                        THEN
-                          IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i])
-                          THEN
-                            RETURN(false);
-                          END_IF;
-                        END_IF;
-                      END_IF;
-                    END_REPEAT;
-                    RETURN(true);
-                  END_IF;
-                END_IF;
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION gbsf_check_point(pnt : point) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt)
-    THEN
-      RETURN(gbsf_check_curve(pnt\point_on_curve.basis_curve));
-    ELSE
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt)
-      THEN
-        RETURN(gbsf_check_surface(pnt\point_on_surface.basis_surface));
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt)
-        THEN
-          RETURN((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND
-                 (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface)));
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION gbsf_check_surface(sf : surface) : BOOLEAN;
-  IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND
-      (sf\b_spline_surface.self_intersect = false) OR
-      (sf\b_spline_surface.self_intersect = unknown))
-  THEN
-    RETURN(true);
-  ELSE
-    IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] *
-              TYPEOF(sf)) =
-       1
-    THEN
-      RETURN(true);
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND
-          (sf\offset_surface.self_intersect = false) OR
-          (sf\offset_surface.self_intersect = unknown))
-      THEN
-        RETURN(gbsf_check_surface(sf\offset_surface.basis_surface));
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf)
-        THEN
-          REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments);
-            REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]);
-              IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface))
-              THEN
-                RETURN(false);
-              END_IF;
-            END_REPEAT;
-          END_REPEAT;
-          RETURN(true);
-        ELSE
-          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf)
-          THEN
-            RETURN(gbsf_check_surface(sf\surface_replica.parent_surface));
-          ELSE
-            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf)
-            THEN
-              RETURN(gbsf_check_curve(sf\swept_surface.swept_curve));
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION geometric_dimensionalities_in_contexts(grcs : SET [1 : ?] OF geometric_representation_context) : INTEGER;
-LOCAL
-  grcs_1d : INTEGER := 0;
-  grcs_2d : INTEGER := 0;
-  grcs_3d : INTEGER := 0;
-END_LOCAL;
-  IF (SIZEOF(grcs) = 1)
-  THEN
-    RETURN(grcs[1]\geometric_representation_context.coordinate_space_dimension);
-  ELSE
-    REPEAT i := 1 TO HIINDEX(grcs);
-      IF (grcs[i]\geometric_representation_context.coordinate_space_dimension = 1)
-      THEN
-        grcs_1d := grcs_1d + 1;
-      ELSE
-        IF (grcs[i]\geometric_representation_context.coordinate_space_dimension = 2)
-        THEN
-          grcs_2d := grcs_2d + 1;
-        ELSE
-          IF (grcs[i]\geometric_representation_context.coordinate_space_dimension = 3)
-          THEN
-            grcs_3d := grcs_3d + 1;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF (grcs_1d + grcs_2d = 0)
-  THEN
-    RETURN(3);
-  ELSE
-    IF (grcs_1d + grcs_3d = 0)
-    THEN
-      RETURN(2);
-    ELSE
-      IF (grcs_2d + grcs_3d = 0)
-      THEN
-        RETURN(1);
-      ELSE
-        RETURN(0);
-      END_IF;
-    END_IF;
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_aggregate_id_value(obj : id_attribute_select) : identifier;
-LOCAL
-  aggregate_id_bag : BAG OF aggregate_id_attribute := (USEDIN(obj,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGGREGATE_ID_ATTRIBUTE.IDENTIFIED_ITEM'));
-END_LOCAL;
-  IF SIZEOF(aggregate_id_bag) = 1
-  THEN
-    RETURN(aggregate_id_bag[1].attribute_value);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_associated_mandatory_document_ids(pdc : product_definition_context) : SET OF STRING;
-LOCAL
-  result        : SET OF STRING                       := [];
-  adrs_raw      : SET OF applied_document_reference   := bag_to_set(USEDIN(pdc,
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS'));
-  adrs_filtered : SET OF applied_document_reference   := [];
-  ras           : SET OF role_association;
-  dpas          : SET OF document_product_association;
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(adrs_raw);
-    IF adrs_raw[i]\document_reference.role\object_role.name = 'mandatory'
-    THEN
-      adrs_filtered := adrs_filtered + adrs_raw[i];
-    END_IF;
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(adrs_filtered);
-    dpas := bag_to_set(USEDIN(adrs_filtered[i]\document_reference.assigned_document,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT'));
-    REPEAT j := 1 TO HIINDEX(dpas);
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_EQUIVALENCE' IN TYPEOF(dpas[j])
-      THEN
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN
-           TYPEOF(dpas[j]\document_product_association.related_product)
-        THEN
-          result := result +
-                    dpas[j]\document_product_association.related_product\product_definition_formation.of_product\product.id;
-        END_IF;
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF(dpas[j].related_product)
-        THEN
-          result := result + dpas[j]\document_product_association.related_product\product.id;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION get_basis_surface(c : curve_on_surface) : SET [0 : 2] OF surface;
-LOCAL
-  surfs : SET [0 : 2] OF surface;
-  n     : INTEGER;
-END_LOCAL;
-  surfs := [];
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(c)
-  THEN
-    surfs := [c\pcurve.basis_surface];
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(c)
-    THEN
-      n := SIZEOF(c\surface_curve.associated_geometry);
-      REPEAT i := 1 TO n;
-        surfs := surfs + associated_surface(c\surface_curve.associated_geometry[i]);
-      END_REPEAT;
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c)
-  THEN
-    n := SIZEOF(c\composite_curve.segments);
-    surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve);
-    IF n > 1
-    THEN
-      REPEAT i := 2 TO n;
-        surfs := surfs * get_basis_surface(c\composite_curve.segments[i].parent_curve);
-      END_REPEAT;
-    END_IF;
-  END_IF;
-  RETURN(surfs);
-END_FUNCTION;
-
-FUNCTION get_coordinate_values(source : tessellated_surface_item) : coordinates_list;
-LOCAL
-  coordinate_values : coordinates_list;
-  max               : INTEGER;
-END_LOCAL;
-  (* If source is of type tessellated_face its single coordinates_list is returned *)
-  CASE true OF
-    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
-    TYPEOF(source) : BEGIN  
-                            coordinate_values := source\tessellated_face.coordinates;
-                            RETURN(coordinate_values);
-    END;
-    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET' IN
-    TYPEOF(source) : BEGIN  
-                            coordinate_values := source\tessellated_surface_set.coordinates;
-                            RETURN(coordinate_values);
-    END;
-    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID' IN
-    TYPEOF(source) : BEGIN  
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
-                               TYPEOF(source\tessellated_solid.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_solid.items[1]\tessellated_face.coordinates;
-                            END_IF;
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
-                               TYPEOF(source\tessellated_solid.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_solid.items[1]\tessellated_edge.coordinates;
-                            END_IF;
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX' IN
-                               TYPEOF(source\tessellated_solid.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_solid.items[1]\tessellated_vertex.coordinates;
-                            END_IF;
-                            max := SIZEOF(source\tessellated_solid.items);
-                            IF max = 1
-                            THEN
-                              RETURN(coordinate_values);
-                            ELSE
-                              REPEAT i := 2 TO max;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
-                                   TYPEOF(source\tessellated_solid.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_solid.items[i]\tessellated_face.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
-                                   TYPEOF(source\tessellated_solid.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_solid.items[i]\tessellated_edge.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX' IN
-                                   TYPEOF(source\tessellated_solid.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_solid.items[i]\tessellated_vertex.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                              END_REPEAT;
-                              RETURN(coordinate_values);
-                            END_IF;
-    END;
-    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL' IN
-    TYPEOF(source) : BEGIN  
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
-                               TYPEOF(source\tessellated_shell.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_shell.items[1]\tessellated_face.coordinates;
-                            END_IF;
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
-                               TYPEOF(source\tessellated_shell.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_shell.items[1]\tessellated_edge.coordinates;
-                            END_IF;
-                            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX' IN
-                               TYPEOF(source\tessellated_shell.items[1])
-                            THEN
-                              coordinate_values := source\tessellated_shell.items[1]\tessellated_vertex.coordinates;
-                            END_IF;
-                            max := SIZEOF(source\tessellated_shell.items);
-                            IF max = 1
-                            THEN
-                              RETURN(coordinate_values);
-                            ELSE
-                              REPEAT i := 2 TO max;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_FACE' IN
-                                   TYPEOF(source\tessellated_shell.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_shell.items[i]\tessellated_face.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_EDGE' IN
-                                   TYPEOF(source\tessellated_shell.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_shell.items[i]\tessellated_edge.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_VERTEX' IN
-                                   TYPEOF(source\tessellated_shell.items[i])
-                                THEN
-                                  IF NOT (coordinate_values :=:
-                                          source\tessellated_shell.items[i]\tessellated_vertex.coordinates)
-                                  THEN
-                                    RETURN(?);
-                                  END_IF;
-                                END_IF;
-                              END_REPEAT;
-                              RETURN(coordinate_values);
-                            END_IF;
-    END;
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION get_descendant_occurrences(input : product_definition_occurrence) : SET [0 : ?] OF product_definition_specified_occurrence;
-LOCAL
-  result : SET OF product_definition_specified_occurrence := input.child_occurrences;
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(input.child_occurrences) BY 1;
-    result := result + get_descendant_occurrences(input.child_occurrences[i]);
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION get_description_value(obj : description_attribute_select) : text;
-LOCAL
-  description_bag : BAG OF description_attribute := (USEDIN(obj,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'));
-END_LOCAL;
-  IF SIZEOF(description_bag) = 1
-  THEN
-    RETURN(description_bag[1].attribute_value);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_directed_link(nodes : LIST OF representation;
-                           undirected_link : LIST OF chained_representation_link) : LIST OF representation_relationship;
-LOCAL
-  directed_link : LIST OF representation_relationship := [];
-END_LOCAL;
-  IF (SIZEOF(nodes) <> SIZEOF(undirected_link) + 1) OR (VALUE_UNIQUE(nodes) = false)
-  THEN
-    RETURN(?);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(undirected_link);
-    CASE true OF
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_CONTEXT' IN TYPEOF(undirected_link[i])) : BEGIN  
-                                                                                                                        IF ((nodes[i]\representation.context_of_items :=:
-                                                                                                                             undirected_link[i]) AND
-                                                                                                                            (nodes[i +
-                                                                                                                                   1]\representation.context_of_items :=:
-                                                                                                                             undirected_link[i]))
-                                                                                                                        THEN
-                                                                                                                          INSERT(directed_link,
-                                                                                                                                 representation_relationship('',
-                                                                                                                                                             '',
-                                                                                                                                                             nodes[i +
-                                                                                                                                                                   1],
-                                                                                                                                                             nodes[i]),
-                                                                                                                                 (i -
-                                                                                                                                  1));
-                                                                                                                        ELSE
-                                                                                                                          RETURN(?);
-                                                                                                                        END_IF;
-      END;
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN
-       TYPEOF(undirected_link[i])) : BEGIN  
-                                            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
-                                              INSERT(directed_link,
-                                                     representation_relationship('', '', nodes[i + 1], nodes[i]),
-                                                     (i - 1));
-                                            ELSE
-                                              RETURN(?);
-                                            END_IF;
-      END;
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(undirected_link[i])) : BEGIN  
-                                                                                                             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
-                                                                                                               INSERT(directed_link,
-                                                                                                                      representation_relationship('',
-                                                                                                                                                  '',
-                                                                                                                                                  nodes[i +
-                                                                                                                                                        1],
-                                                                                                                                                  nodes[i]),
-                                                                                                                      (i -
-                                                                                                                       1));
-                                                                                                             ELSE
-                                                                                                               RETURN(?);
-                                                                                                             END_IF;
-      END;
-      OTHERWISE: RETURN(?);
-    END_CASE;
-  END_REPEAT;
-  IF (VALUE_UNIQUE(directed_link) = false)
-  THEN
-    RETURN(?);
-  END_IF;
-  RETURN(directed_link);
-END_FUNCTION;
-
-FUNCTION get_id_value(obj : id_attribute_select) : identifier;
-LOCAL
-  id_bag : BAG OF id_attribute := (USEDIN(obj,
-                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ID_ATTRIBUTE.IDENTIFIED_ITEM'));
-END_LOCAL;
-  IF SIZEOF(id_bag) = 1
-  THEN
-    RETURN(id_bag[1].attribute_value);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_kinematic_joints_from_kinematic_loops(kls : SET OF kinematic_loop) : SET OF kinematic_joint;
-LOCAL
-  result : SET OF oriented_joint := [];
-END_LOCAL;
-  IF SIZEOF(kls) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(kls);
-      result := result + kls[i].edge_list;
-    END_REPEAT;
-  END_IF;
-  RETURN(get_kinematic_joints_from_oriented_joints(result));
-END_FUNCTION;
-
-FUNCTION get_kinematic_joints_from_oriented_joints(ors : SET OF oriented_joint) : SET OF kinematic_joint;
-LOCAL
-  result : SET OF kinematic_joint := [];
-END_LOCAL;
-  IF SIZEOF(ors) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(ors);
-      result := result + ors[i].edge_element;
-    END_REPEAT;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION get_name_value(obj : name_attribute_select) : label;
-LOCAL
-  name_bag : BAG OF name_attribute := (USEDIN(obj,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NAME_ATTRIBUTE.NAMED_ITEM'));
-END_LOCAL;
-  IF SIZEOF(name_bag) = 1
-  THEN
-    RETURN(name_bag[1].attribute_value);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_plane_of_implicit_geometry(ps : positioned_sketch) : plane;
-LOCAL
-  sb     : sketch_basis_select := ps.sketch_basis;
-  result : plane               := ?;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(sb))
-  THEN
-    result := sb\face_surface.face_geometry;
-  ELSE
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF(sb))
-    THEN
-      result := sb\curve_bounded_surface.basis_surface;
-    ELSE
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_CURVE_SELECT' IN TYPEOF(sb))
-      THEN
-        BEGIN  
-               IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN TYPEOF(sb))
-               THEN
-                 result := dummy_gri || surface() || elementary_surface(sb\conic.position) || plane();
-               END_IF;
-               IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(sb))
-               THEN
-                 BEGIN  
-                        result := get_plane_of_implicit_geometry(dummy_gri ||
-                                                                 positioned_sketch(sb\trimmed_curve.basis_curve, []));
-                 END;
-               END_IF;
-               IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(sb))
-               THEN
-                 result := sb\pcurve.basis_surface;
-               END_IF;
-               IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(sb))
-               THEN
-                 BEGIN  
-                        IF ((SIZEOF(sb\surface_curve.basis_surface) = 1) AND
-                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                             TYPEOF(sb\surface_curve.basis_surface[1])))
-                        THEN
-                          result := sb\surface_curve.basis_surface[1];
-                        ELSE
-                          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                               TYPEOF(sb\surface_curve.basis_surface[1])) AND
-                              ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                               TYPEOF(sb\surface_curve.basis_surface[2])))
-                          THEN
-                            result := ?;
-                          ELSE
-                            IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
-                                TYPEOF(sb\surface_curve.basis_surface[1]))
-                            THEN
-                              result := sb\surface_curve.basis_surface[1];
-                            ELSE
-                              result := sb\surface_curve.basis_surface[2];
-                            END_IF;
-                          END_IF;
-                        END_IF;
-                 END;
-               END_IF;
-        END;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION get_property_definition_representations(c_def_instance : characterized_definition) : SET OF property_definition_representation;
-LOCAL
-  pd_set  : SET OF property_definition                := [];
-  pdr_set : SET OF property_definition_representation := [];
-END_LOCAL;
-  pd_set := bag_to_set(USEDIN(c_def_instance,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
-  IF (SIZEOF(pd_set) < 1)
-  THEN
-    RETURN(pdr_set);
-  END_IF;
-  REPEAT i := 1 TO HIINDEX(pd_set);
-    pdr_set := pdr_set +
-               bag_to_set(USEDIN(pd_set[i],
-                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
-  END_REPEAT;
-  RETURN(pdr_set);
-END_FUNCTION;
-
-FUNCTION get_relative_direction_2points(cp1 : cartesian_point;
-                                        cp2 : cartesian_point) : direction;
-LOCAL
-  d1        : REAL;
-  d2        : REAL;
-  d3        : REAL;
-  magnitude : REAL;
-  result    : direction := ?;
-END_LOCAL;
-  IF ((cp1.dim <> 3) OR (cp2.dim <> 3))
-  THEN
-    RETURN(result);
-  ELSE
-    BEGIN  
-           d1 := cp2.coordinates[1] - cp1.coordinates[1];
-           d2 := cp2.coordinates[2] - cp1.coordinates[2];
-           d3 := cp2.coordinates[3] - cp1.coordinates[3];
-           magnitude := SQRT(d1 * d1 + d2 * d2 + d3 * d3);
-           IF (magnitude = 0)
-           THEN
-             RETURN(result);
-           END_IF;
-           result := dummy_gri || direction([d1,d2,d3]);
-    END;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION get_representations_for_items(input : SET OF founded_item_select) : SET OF representation;
-LOCAL
-  r_set : SET OF representation := [];
-END_LOCAL;
-  REPEAT i := LOINDEX(input) TO HIINDEX(input);
-    r_set := r_set + using_representations(input[i]);
-  END_REPEAT;
-  RETURN(r_set);
-END_FUNCTION;
-
-FUNCTION get_role(obj : role_select) : object_role;
-LOCAL
-  role_bag : BAG OF role_association := (USEDIN(obj,
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
-END_LOCAL;
-  IF SIZEOF(role_bag) = 1
-  THEN
-    RETURN(role_bag[1].role);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION get_root_shape_aspect(current : shape_aspect) : product_definition_shape;
-  REPEAT WHILE ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONSTITUENT_SHAPE_ASPECT' IN TYPEOF(current));
-    current := current.parent;
-  END_REPEAT;
-  RETURN(current.of_shape);
-END_FUNCTION;
-
-FUNCTION get_shape_aspect_property_definition_representations(s_a_instance : shape_aspect) : SET OF property_definition_representation;
-LOCAL
-  pd_set  : SET OF property_definition                := [];
-  pdr_set : SET OF property_definition_representation := [];
-END_LOCAL;
-  pd_set := bag_to_set(USEDIN(s_a_instance,
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
-  IF (SIZEOF(pd_set) < 1)
-  THEN
-    RETURN(pdr_set);
-  END_IF;
-  REPEAT i := 1 TO HIINDEX(pd_set);
-    pdr_set := pdr_set +
-               (QUERY(pdr
-                      <* USEDIN(pd_set[i],
-                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                      | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                        TYPEOF(pdr)));
-  END_REPEAT;
-  RETURN(pdr_set);
-END_FUNCTION;
-
-FUNCTION get_shape_aspects(c_def_instance : characterized_definition) : SET OF shape_aspect;
-LOCAL
-  pd_set  : SET OF product_definition_shape := [];
-  pdr_set : SET OF shape_aspect             := [];
-END_LOCAL;
-  pd_set := bag_to_set(QUERY(pd
-                             <* USEDIN(c_def_instance,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                             | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
-                               TYPEOF(pd)));
-  IF (SIZEOF(pd_set) < 1)
-  THEN
-    RETURN(pdr_set);
-  END_IF;
-  REPEAT i := 1 TO HIINDEX(pd_set);
-    pdr_set := pdr_set +
-               bag_to_set(USEDIN(pd_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'));
-  END_REPEAT;
-  RETURN(pdr_set);
-END_FUNCTION;
-
-FUNCTION has_values_space(expr : generic_expression) : BOOLEAN;
-LOCAL
-  typenames : SET OF STRING := stripped_typeof(expr);
-END_LOCAL;
-  IF 'EXPRESSION' IN typenames
-  THEN
-    RETURN(bool(('NUMERIC_EXPRESSION' IN typenames) OR ('STRING_EXPRESSION' IN typenames) OR
-                ('BOOLEAN_EXPRESSION' IN typenames)));
-  END_IF;
-  IF 'MATHS_FUNCTION' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'FUNCTION_APPLICATION' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'MATHS_SPACE' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'MATHS_VARIABLE' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'DEPENDENT_VARIABLE_DEFINITION' IN typenames
-  THEN
-    RETURN(has_values_space(expr\unary_generic_expression.operand));
-  END_IF;
-  IF 'COMPLEX_NUMBER_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'LOGICAL_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'BINARY_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'MATHS_ENUM_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'REAL_TUPLE_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'INTEGER_TUPLE_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'ATOM_BASED_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'MATHS_TUPLE_LITERAL' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION increasing_values_in_list(values : LIST [2 : ?] OF REAL) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-  limit  : INTEGER := SIZEOF(values);
-END_LOCAL;
-  REPEAT i := 2 TO limit;
-    IF values[i] <= values[i - 1]
-    THEN
-      result := false;
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION inspected_product_definition(dqir : data_quality_inspection_result_representation) : BAG OF product_definition;
-LOCAL
-  dqdr  : BAG OF data_quality_definition_representation_relationship := [];
-  pdqdr : BAG OF product_data_and_data_quality_relationship          := [];
-  pd    : BAG OF product_definition                                  := [];
-END_LOCAL;
-  dqdr := USEDIN(dqir,
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_DEFINITION_REPRESENTATION_RELATIONSHIP.USED_REPRESENTATION');
-  REPEAT i := 1 TO SIZEOF(dqdr);
-    pdqdr := USEDIN(dqdr[i].definition,
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DATA_AND_DATA_QUALITY_RELATIONSHIP.DATA_QUALITY');
-    REPEAT j := 1 TO SIZEOF(pdqdr);
-      pd := pd + pdqdr[j].product_data;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(pd);
-END_FUNCTION;
-
-FUNCTION invalidate_vrep_item(item : variational_representation_item) : BOOLEAN;
-LOCAL
-  reps : SET [1 : ?] OF representation                  := using_representations(item);
-  svri : SET [1 : ?] OF variational_representation_item;
-  iar  : instance_attribute_reference;
-  i    : INTEGER;
-  n    : INTEGER                                        := HIINDEX(reps);
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item))
-  THEN
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE' IN
-       TYPEOF(item\generic_variable.interpretation\environment.semantics)
-    THEN
-      BEGIN  
-             iar := item\generic_variable.interpretation\environment.semantics;
-             IF (reps <> using_representations(iar\instance_attribute_reference.owning_instance))
-             THEN
-               RETURN(true);
-             END_IF;
-      END;
-    ELSE
-      RETURN(true);
-    END_IF;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF(item))
-  THEN
-    BEGIN  
-           REPEAT i := 1 TO n;
-             svri := QUERY(q
-                           <* reps[i]\representation.items
-                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREE_FORM_CONSTRAINT' IN TYPEOF(q));
-             IF SIZEOF(QUERY(r
-                             <* svri
-                             | item IN
-                               (r\free_form_constraint.reference_elements +
-                                r\free_form_constraint.constrained_elements))) =
-                0
-             THEN
-               RETURN(true);
-             END_IF;
-           END_REPEAT;
-    END;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET' IN TYPEOF(item))
-  THEN
-    REPEAT i := 1 TO SIZEOF(item\fixed_instance_attribute_set.fixed_attributes);
-      IF (reps <>
-          using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]\instance_attribute_reference.owning_instance))
-      THEN
-        RETURN(true);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_CONSTRAINT' IN TYPEOF(item))
-  THEN
-    IF SIZEOF(QUERY(q
-                    <* (item\explicit_constraint.reference_elements + item\explicit_constraint.constrained_elements)
-                    | reps <> using_representations(q))) >
-       0
-    THEN
-      RETURN(true);
-    END_IF;
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item))
-  THEN
-    BEGIN  
-           REPEAT i := 1 TO n;
-             svri := QUERY(q
-                           <* reps[i]\representation.items
-                           | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_GEOMETRIC_CONSTRAINT' IN
-                             TYPEOF(q));
-             IF SIZEOF(QUERY(r <* svri | item IN r\explicit_geometric_constraint.reference_elements)) = 0
-             THEN
-               RETURN(true);
-             END_IF;
-           END_REPEAT;
-    END;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION is_acyclic(arg : generic_expression) : BOOLEAN;
-  RETURN(acyclic(arg, []));
-END_FUNCTION;
-
-FUNCTION is_int_expr(arg : numeric_expression) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_LITERAL' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(is_int_expr(arg\unary_numeric_expression.operand));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(is_int_expr(arg\unary_numeric_expression.operand));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINIMUM_FUNCTION' IN TYPEOF(arg))
-  THEN
-    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
-      IF NOT is_int_expr(arg\multiple_arity_numeric_expression.operands[i])
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(is_int_expr(arg\binary_numeric_expression.operands[1]) AND
-           is_int_expr(arg\binary_numeric_expression.operands[2]));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)
-  THEN
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_VALUE_FUNCTION' IN TYPEOF(arg)
-    THEN
-      RETURN(true);
-    ELSE
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION is_sql_mappable(arg : expression) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
-  THEN
-    RETURN(is_sql_mappable(arg\unary_numeric_expression.operand));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINIMUM_FUNCTION' IN TYPEOF(arg))
-  THEN
-    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
-      IF NOT is_sql_mappable(arg\multiple_arity_numeric_expression.operands[i])
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(is_sql_mappable(arg\binary_numeric_expression.operands[1]) AND
-           is_sql_mappable(arg\binary_numeric_expression.operands[2]));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NOT_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(is_sql_mappable(arg\unary_generic_expression.operand));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ODD_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.XOR_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AND_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OR_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.operands);
-      IF NOT is_sql_mappable(arg\multiple_arity_boolean_expression.operands[i])
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(is_sql_mappable(arg\binary_generic_expression.operands[1]) AND
-           is_sql_mappable(arg\binary_generic_expression.operands[2]));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_EQUAL' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS_EQUAL' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_NOT_EQUAL' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIKE_EXPRESSION' IN TYPEOF(arg))
-  THEN
-    RETURN(is_sql_mappable(arg\comparison_expression.operands[1]) AND
-           is_sql_mappable(arg\comparison_expression.operands[2]));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    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));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSTRING_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCAT_EXPRESSION' IN TYPEOF(arg)) OR
-     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORMAT_FUNCTION' IN TYPEOF(arg))
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION item_in_context(item : representation_item;
-                         cntxt : representation_context) : BOOLEAN;
-LOCAL
-  y : BAG OF representation_item;
-END_LOCAL;
-  IF SIZEOF(USEDIN(item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS') *
-            cntxt.representations_in_context) >
-     0
-  THEN
-    RETURN(true);
-  ELSE
-    y := QUERY(z
-               <* USEDIN(item, '')
-               | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z));
-    IF SIZEOF(y) > 0
-    THEN
-      REPEAT i := 1 TO HIINDEX(y);
-        IF item_in_context(y[i], cntxt)
-        THEN
-          RETURN(true);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION leap_year(year : year_number) : BOOLEAN;
-  IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0))
-  THEN
-    RETURN(true);
-  ELSE
-    RETURN(false);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION list_face_loops(f : face) : LIST [0 : ?] OF loop;
-LOCAL
-  loops : LIST [0 : ?] OF loop := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(f.bounds);
-    loops := loops + (f.bounds[i].bound);
-  END_REPEAT;
-  RETURN(loops);
-END_FUNCTION;
-
-FUNCTION list_of_topology_reversed(a_list : list_of_reversible_topology_item) : list_of_reversible_topology_item;
-LOCAL
-  the_reverse : list_of_reversible_topology_item;
-END_LOCAL;
-  the_reverse := [];
-  REPEAT i := 1 TO SIZEOF(a_list);
-    the_reverse := topology_reversed(a_list[i]) + the_reverse;
-  END_REPEAT;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION list_selected_components(aggr : AGGREGATE OF LIST OF maths_value;
-                                  k : positive_integer) : LIST OF maths_value;
-LOCAL
-  result : LIST OF maths_value := [];
-  j      : INTEGER             := 0;
-END_LOCAL;
-  REPEAT i := LOINDEX(aggr) TO HIINDEX(aggr);
-    IF k <= SIZEOF(aggr[i])
-    THEN
-      INSERT(result, aggr[i][k], j);
-      j := j + 1;
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION list_to_array(lis : LIST [0 : ?] OF GENERIC : T;
-                       low : INTEGER;
-                       u : INTEGER) : ARRAY [low : u] OF GENERIC : T;
-LOCAL
-  n   : INTEGER;
-  res : ARRAY [low : u] OF GENERIC : T;
-END_LOCAL;
-  n := SIZEOF(lis);
-  IF (n <> (u - low + 1))
-  THEN
-    RETURN(?);
-  ELSE
-    res := [lis[1]:n];
-    REPEAT i := 2 TO n;
-      res[low + i - 1] := lis[i];
-    END_REPEAT;
-    RETURN(res);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION list_to_set(l : LIST [0 : ?] OF GENERIC : T) : SET OF GENERIC : T;
-LOCAL
-  s : SET OF GENERIC : T := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(l);
-    s := s + l[i];
-  END_REPEAT;
-  RETURN(s);
-END_FUNCTION;
-
-FUNCTION make_array_of_array(lis : LIST [1 : ?] OF LIST [1 : ?] OF GENERIC : T;
-                             low1 : INTEGER;
-                             u1 : INTEGER;
-                             low2 : INTEGER;
-                             u2 : INTEGER) : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC : T;
-LOCAL
-  res : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC : T;
-END_LOCAL;
-  (* Check input dimensions for consistency *)
-  IF (u1 - low1 + 1) <> SIZEOF(lis)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF (u2 - low2 + 1) <> SIZEOF(lis[1])
-  THEN
-    RETURN(?);
-  END_IF;
-  (* Initialise res with values from lis[1] *)
-  res := [list_to_array(lis[1], low2, u2):(u1 - low1 + 1)];
-  REPEAT i := 2 TO HIINDEX(lis);
-    IF (u2 - low2 + 1) <> SIZEOF(lis[i])
-    THEN
-      RETURN(?);
-    END_IF;
-    res[low1 + i - 1] := list_to_array(lis[i], low2, u2);
-  END_REPEAT;
-  RETURN(res);
-END_FUNCTION;
-
-FUNCTION make_array_of_array_of_array(lis : LIST [1 : ?] OF LIST [1 : ?] OF LIST [1 : ?] OF GENERIC : T;
-                                      low1 : INTEGER;
-                                      u1 : INTEGER;
-                                      low2 : INTEGER;
-                                      u2 : INTEGER;
-                                      low3 : INTEGER;
-                                      u3 : INTEGER) : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF ARRAY [low3 : u3] OF GENERIC : T;
-LOCAL
-  res : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF ARRAY [low3 : u3] OF GENERIC : T;
-END_LOCAL;
-  (* Check input dimensions for consistency *)
-  IF (u1 - low1 + 1) <> SIZEOF(lis)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF (u2 - low2 + 1) <> SIZEOF(lis[1])
-  THEN
-    RETURN(?);
-  END_IF;
-  (* Initialise res with values from lis[1] *)
-  res := [make_array_of_array(lis[1], low2, u2, low3, u3):(u1 - low1 + 1)];
-  REPEAT i := 2 TO HIINDEX(lis);
-    IF (u2 - low2 + 1) <> SIZEOF(lis[i])
-    THEN
-      RETURN(?);
-    END_IF;
-    res[low1 + i - 1] := make_array_of_array(lis[i], low2, u2, low3, u3);
-  END_REPEAT;
-  RETURN(res);
-END_FUNCTION;
-
-FUNCTION make_atom_based_literal(lit_value : atom_based_value) : atom_based_literal;
-  RETURN(atom_based_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
-END_FUNCTION;
-
-FUNCTION make_binary_literal(lit_value : BINARY) : binary_literal;
-  RETURN(binary_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
-END_FUNCTION;
-
-FUNCTION make_boolean_literal(lit_value : BOOLEAN) : boolean_literal;
-  RETURN(boolean_literal(lit_value) || simple_boolean_expression() || boolean_expression() || expression() ||
-         generic_expression() || simple_generic_expression() || generic_literal());
-END_FUNCTION;
-
-FUNCTION make_cartesian_complex_number_region(real_constraint : real_interval;
-                                              imag_constraint : real_interval) : cartesian_complex_number_region;
-  RETURN(cartesian_complex_number_region(real_constraint, imag_constraint) || maths_space() || generic_expression() ||
-         generic_literal() || simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_complex_number_literal(rpart : REAL;
-                                     ipart : REAL) : complex_number_literal;
-  RETURN(complex_number_literal(rpart, ipart) || generic_literal() || simple_generic_expression() ||
-         generic_expression());
-END_FUNCTION;
-
-FUNCTION make_elementary_function(func_id : elementary_function_enumerators) : elementary_function;
-  RETURN(elementary_function(func_id) || maths_function() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_elementary_space(space_id : elementary_space_enumerators) : elementary_space;
-  RETURN(elementary_space(space_id) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_extended_tuple_space(base : tuple_space;
-                                   extender : maths_space) : extended_tuple_space;
-  RETURN(extended_tuple_space(base, extender) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_finite_integer_interval(min : INTEGER;
-                                      max : INTEGER) : finite_integer_interval;
-  RETURN(finite_integer_interval(min, max) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_finite_real_interval(min : REAL;
-                                   minclo : open_closed;
-                                   max : REAL;
-                                   maxclo : open_closed) : finite_real_interval;
-  RETURN(finite_real_interval(min, minclo, max, maxclo) || maths_space() || generic_expression() ||
-         generic_literal() || simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_finite_space(members : SET OF maths_value) : finite_space;
-  RETURN(finite_space(members) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_function_application(afunction : maths_function_select;
-                                   arguments : LIST [1 : ?] OF maths_value) : function_application;
-  RETURN(function_application(afunction, arguments) ||
-         multiple_arity_generic_expression(convert_to_maths_function(afunction) + convert_to_operands(arguments)) ||
-         generic_expression());
-END_FUNCTION;
-
-FUNCTION make_function_space(domain_constraint : space_constraint_type;
-                             domain_argument : maths_space;
-                             range_constraint : space_constraint_type;
-                             range_argument : maths_space) : function_space;
-  RETURN(function_space(domain_constraint, domain_argument, range_constraint, range_argument) || maths_space() ||
-         generic_expression() || generic_literal() || simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_int_literal(lit_value : INTEGER) : int_literal;
-  RETURN(int_literal() || literal_number(lit_value) || simple_numeric_expression() || numeric_expression() ||
-         expression() || generic_expression() || simple_generic_expression() || generic_literal());
-END_FUNCTION;
-
-FUNCTION make_listed_product_space(factors : LIST OF maths_space) : listed_product_space;
-  RETURN(listed_product_space(factors) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_logical_literal(lit_value : LOGICAL) : logical_literal;
-  RETURN(logical_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
-END_FUNCTION;
-
-FUNCTION make_maths_enum_literal(lit_value : maths_enum_atom) : maths_enum_literal;
-  RETURN(maths_enum_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
-END_FUNCTION;
-
-FUNCTION make_maths_tuple_literal(lit_value : LIST OF maths_value) : maths_tuple_literal;
-  RETURN(maths_tuple_literal(lit_value) || generic_literal() || simple_generic_expression() || generic_expression());
-END_FUNCTION;
-
-FUNCTION make_numeric_set(start : maths_number;
-                          delta : maths_number;
-                          incs : positive_integer) : SET [2 : ?] OF maths_number;
-LOCAL
-  i           : INTEGER;
-  numeric_set : SET [2 : ?] OF maths_number := [start,(start + delta)];
-END_LOCAL;
-  IF incs > 1
-  THEN
-    REPEAT i := 2 TO incs;
-      numeric_set := numeric_set + (start + (i * delta));
-    END_REPEAT;
-  END_IF;
-  RETURN(numeric_set);
-END_FUNCTION;
-
-FUNCTION make_parallel_composed_function(srcdom : maths_space_or_function;
-                                         prepfuncs : LIST [2 : ?] OF maths_function;
-                                         finfunc : maths_function_select) : parallel_composed_function;
-  RETURN(parallel_composed_function(srcdom, prepfuncs, finfunc) || maths_function() || generic_expression() ||
-         multiple_arity_generic_expression(convert_to_operands_prcmfn(srcdom, prepfuncs, finfunc)));
-END_FUNCTION;
-
-FUNCTION make_polar_complex_number_region(centre : complex_number_literal;
-                                          dis_constraint : real_interval;
-                                          dir_constraint : finite_real_interval) : polar_complex_number_region;
-  RETURN(polar_complex_number_region(centre, dis_constraint, dir_constraint) || maths_space() ||
-         generic_expression() || generic_literal() || simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_real_interval_from_min(min : REAL;
-                                     minclo : open_closed) : real_interval_from_min;
-  RETURN(real_interval_from_min(min, minclo) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_real_interval_to_max(max : REAL;
-                                   maxclo : open_closed) : real_interval_to_max;
-  RETURN(real_interval_to_max(max, maxclo) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION make_real_literal(lit_value : REAL) : real_literal;
-  RETURN(real_literal() || literal_number(lit_value) || simple_numeric_expression() || numeric_expression() ||
-         expression() || generic_expression() || simple_generic_expression() || generic_literal());
-END_FUNCTION;
-
-FUNCTION make_string_literal(lit_value : STRING) : string_literal;
-  RETURN(string_literal(lit_value) || simple_string_expression() || string_expression() || expression() ||
-         generic_expression() || simple_generic_expression() || generic_literal());
-END_FUNCTION;
-
-FUNCTION make_uniform_product_space(base : maths_space;
-                                    exponent : positive_integer) : uniform_product_space;
-  RETURN(uniform_product_space(base, exponent) || maths_space() || generic_expression() || generic_literal() ||
-         simple_generic_expression());
-END_FUNCTION;
-
-FUNCTION max_exists(spc : maths_space) : BOOLEAN;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  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)));
-END_FUNCTION;
-
-FUNCTION max_included(spc : maths_space) : BOOLEAN;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  IF ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN types) OR ((schema_prefix + 'INTEGER_INTERVAL_TO_MAX') IN types)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF ((schema_prefix + 'FINITE_REAL_INTERVAL') IN types)
-  THEN
-    RETURN(bool(spc\finite_real_interval.max_closure = closed));
-  END_IF;
-  IF ((schema_prefix + 'REAL_INTERVAL_TO_MAX') IN types)
-  THEN
-    RETURN(bool(spc\real_interval_to_max.max_closure = closed));
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION md_pmi_name_and_type_correlation(input : annotation_placeholder_occurrence) : BOOLEAN;
-LOCAL
-  pmi_role : STRING                                                    := input\annotation_placeholder_occurrence.item\representation_item.name;
-  dmiawps  : SET OF draughting_model_item_association_with_placeholder := input\annotation_placeholder_occurrence.the_draughting_model_item_association_with_placeholders;
-  v        : SET OF STRING                                             := [];
-END_LOCAL;
-  IF (SIZEOF(dmiawps) = 1)
-  THEN
-    v := TYPEOF(dmiawps[1]\draughting_model_item_association_with_placeholder.definition);
-  ELSE
-    RETURN(false);
-  END_IF;
-  IF NOT (pmi_role IN
-          ['angular dimension',
-           'angularity',
-           'circular runout',
-           'circularity',
-           'coaxiality',
-           'concentricity',
-           'curve dimension',
-           'cylindricity',
-           'datum',
-           'datum target',
-           'diameter dimension',
-           'flatness',
-           'general dimension',
-           'general note',
-           'general tolerance',
-           'label',
-           'linear dimension',
-           'note',
-           'ordinate dimension',
-           'parallelism',
-           'perpendicularity',
-           'position',
-           'profile of line',
-           'profile of surface',
-           'radial dimension',
-           'roundness',
-           'runout',
-           'straightness',
-           'surface roughness',
-           'symmetry',
-           'total runout'])
-  THEN
-    RETURN(?);
-  END_IF;
-  CASE pmi_role OF
-    'angular dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULAR_LOCATION' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'angularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULARITY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'circular runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'circularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'coaxiality' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COAXIALITY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'concentricity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCENTRICITY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'curve dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'cylindricity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICITY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'datum' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'datum target' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'diameter dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'flatness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLATNESS_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'general dimension' : IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE',
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION'] *
-                                     v) =
-                              1)
-    THEN
-      RETURN(true);
-    END_IF;
-    'general note' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'general tolerance' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'label' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'linear dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'note' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'ordinate dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'parallelism' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARALLELISM_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'perpendicularity' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERPENDICULARITY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'position' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'profile of line' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'profile of surface' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'radial dimension' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'roundness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'straightness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRAIGHTNESS_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'surface roughness' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'symmetry' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMMETRY_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    'total runout' : IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE' IN v
-    THEN
-      RETURN(true);
-    END_IF;
-    OTHERWISE: RETURN(false);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION md_valid_content_in_geometric_set_for_placeholder(input : geometric_set) : BOOLEAN;
-LOCAL
-  pass       : BOOLEAN                := true;
-  boxes      : BAG OF planar_box      := [];
-  texts      : BAG OF annotation_text := [];
-  placements : BAG OF placement       := [];
-  points     : BAG OF point           := [];
-END_LOCAL;
-  REPEAT i := LOINDEX(input\geometric_set.elements) TO HIINDEX(input\geometric_set.elements);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(input\geometric_set.elements[i])) AND
-       NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] *
-                   TYPEOF(input\geometric_set.elements[i])) =
-            1)
-    THEN
-      pass := false;
-    ELSE
-      points := points + input\geometric_set.elements[i];
-    END_IF;
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_BOX' IN TYPEOF(input\geometric_set.elements[i])
-    THEN
-      boxes := boxes + input\geometric_set.elements[i];
-    END_IF;
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN TYPEOF(input\geometric_set.elements[i])
-    THEN
-      texts := texts + input\geometric_set.elements[i];
-    END_IF;
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF(input\geometric_set.elements[i])
-    THEN
-      placements := placements + input\geometric_set.elements[i];
-    END_IF;
-  END_REPEAT;
-  IF SIZEOF(boxes) > 1
-  THEN
-    pass := false;
-  END_IF;
-  IF SIZEOF(texts) > 1
-  THEN
-    pass := false;
-  END_IF;
-  IF SIZEOF(points) < 1
-  THEN
-    pass := false;
-  END_IF;
-  IF SIZEOF(placements) <> 1
-  THEN
-    pass := false;
-  END_IF;
-  RETURN(pass);
-END_FUNCTION;
-
-FUNCTION member_of(val : GENERIC : G;
-                   spc : maths_space) : LOGICAL;
--- Trivial function introduced to avoid NIST Fedex compiler error
-FUNCTION fedex(val : AGGREGATE OF GENERIC : X;
-               i : INTEGER) : GENERIC : X;
-  RETURN(val[i]);
-END_FUNCTION;
-LOCAL
-  v         : maths_value            := simplify_maths_value(convert_to_maths_value(val));
-  vtypes    : SET OF STRING          := stripped_typeof(v);
-  s         : maths_space            := simplify_maths_space(spc);
-  stypes    : SET OF STRING          := stripped_typeof(s);
-  tmp_int   : INTEGER;
-  tmp_real  : REAL;
-  tmp_cmplx : complex_number_literal;
-  lgcl      : LOGICAL;
-  cum       : LOGICAL;
-  vspc      : maths_space;
-  sspc      : maths_space;
-  smem      : SET OF maths_value;
-  factors   : LIST OF maths_space;
-END_LOCAL;
-  IF NOT EXISTS(s)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF NOT EXISTS(v)
-  THEN
-    RETURN(s = the_generics);
-  END_IF;
-  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
-    IF has_values_space(v)
-    THEN
-      vspc := values_space_of(v);
-      IF subspace_of(vspc, s)
-      THEN
-        RETURN(true);
-      END_IF;
-      IF NOT compatible_spaces(vspc, s)
-      THEN
-        RETURN(false);
-      END_IF;
-      RETURN(unknown);
-    END_IF;
-    RETURN(unknown);
-  END_IF;
-  IF 'ELEMENTARY_SPACE' IN stypes
-  THEN
-    CASE s\elementary_space.space_id OF
-      es_numbers : RETURN(('NUMBER' IN vtypes) OR ('COMPLEX_NUMBER_LITERAL' IN vtypes));
-      es_complex_numbers : RETURN('COMPLEX_NUMBER_LITERAL' IN vtypes);
-      es_reals : RETURN(('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes));
-      es_integers : RETURN('INTEGER' IN vtypes);
-      es_logicals : RETURN('LOGICAL' IN vtypes);
-      es_booleans : RETURN('BOOLEAN' IN vtypes);
-      es_strings : RETURN('STRING' IN vtypes);
-      es_binarys : RETURN('BINARY' IN vtypes);
-      es_maths_spaces : RETURN('MATHS_SPACE' IN vtypes);
-      es_maths_functions : RETURN('MATHS_FUNCTION' IN vtypes);
-      es_generics : RETURN(true);
-    END_CASE;
-  END_IF;
-  IF 'FINITE_INTEGER_INTERVAL' IN stypes
-  THEN
-    IF 'INTEGER' IN vtypes
-    THEN
-      tmp_int := v;
-      RETURN({s\finite_integer_interval.min <= tmp_int <= s\finite_integer_interval.max});
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'INTEGER_INTERVAL_FROM_MIN' IN stypes
-  THEN
-    IF 'INTEGER' IN vtypes
-    THEN
-      tmp_int := v;
-      RETURN(s\integer_interval_from_min.min <= tmp_int);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'INTEGER_INTERVAL_TO_MAX' IN stypes
-  THEN
-    IF 'INTEGER' IN vtypes
-    THEN
-      tmp_int := v;
-      RETURN(tmp_int <= s\integer_interval_to_max.max);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FINITE_REAL_INTERVAL' IN stypes
-  THEN
-    IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes)
-    THEN
-      tmp_real := v;
-      IF s\finite_real_interval.min_closure = closed
-      THEN
-        IF s\finite_real_interval.max_closure = closed
-        THEN
-          RETURN({s\finite_real_interval.min <= tmp_real <= s\finite_real_interval.max});
-        ELSE
-          RETURN({s\finite_real_interval.min <= tmp_real < s\finite_real_interval.max});
-        END_IF;
-      ELSE
-        IF s\finite_real_interval.max_closure = closed
-        THEN
-          RETURN({s\finite_real_interval.min < tmp_real <= s\finite_real_interval.max});
-        ELSE
-          RETURN({s\finite_real_interval.min < tmp_real < s\finite_real_interval.max});
-        END_IF;
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'REAL_INTERVAL_FROM_MIN' IN stypes
-  THEN
-    IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes)
-    THEN
-      tmp_real := v;
-      IF s\real_interval_from_min.min_closure = closed
-      THEN
-        RETURN(s\real_interval_from_min.min <= tmp_real);
-      ELSE
-        RETURN(s\real_interval_from_min.min < tmp_real);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'REAL_INTERVAL_TO_MAX' IN stypes
-  THEN
-    IF ('REAL' IN vtypes) AND NOT ('INTEGER' IN vtypes)
-    THEN
-      tmp_real := v;
-      IF s\real_interval_to_max.max_closure = closed
-      THEN
-        RETURN(tmp_real <= s\real_interval_to_max.max);
-      ELSE
-        RETURN(tmp_real < s\real_interval_to_max.max);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN stypes
-  THEN
-    IF 'COMPLEX_NUMBER_LITERAL' IN vtypes
-    THEN
-      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));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'POLAR_COMPLEX_NUMBER_REGION' IN stypes
-  THEN
-    IF 'COMPLEX_NUMBER_LITERAL' IN vtypes
-    THEN
-      tmp_cmplx := v;
-      tmp_cmplx.real_part := tmp_cmplx.real_part - s\polar_complex_number_region.centre.real_part;
-      tmp_cmplx.imag_part := tmp_cmplx.imag_part - s\polar_complex_number_region.centre.imag_part;
-      tmp_real := SQRT(tmp_cmplx.real_part ** 2 + tmp_cmplx.imag_part ** 2);
-      IF NOT member_of(tmp_real, s\polar_complex_number_region.distance_constraint)
-      THEN
-        RETURN(false);
-      END_IF;
-      IF tmp_real = 0.0
-      THEN
-        RETURN(true);
-      END_IF;
-      tmp_real := atan2(tmp_cmplx.imag_part, tmp_cmplx.real_part);
-      RETURN(member_of(tmp_real, s\polar_complex_number_region.direction_constraint) OR
-             member_of(tmp_real + 2.0 * PI, s\polar_complex_number_region.direction_constraint));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FINITE_SPACE' IN stypes
-  THEN
-    smem := s\finite_space.members;
-    cum := false;
-    REPEAT i := 1 TO SIZEOF(smem);
-      cum := cum OR equal_maths_values(v, smem[i]);
-      IF cum = true
-      THEN
-        RETURN(true);
-      END_IF;
-    END_REPEAT;
-    RETURN(cum);
-  END_IF;
-  IF 'UNIFORM_PRODUCT_SPACE' IN stypes
-  THEN
-    IF 'LIST' IN vtypes
-    THEN
-      IF SIZEOF(v) = s\uniform_product_space.exponent
-      THEN
-        sspc := s\uniform_product_space.base;
-        cum := true;
-        REPEAT i := 1 TO SIZEOF(v);
-          cum := cum AND member_of(v[i], sspc);
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        RETURN(cum);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN stypes
-  THEN
-    IF 'LIST' IN vtypes
-    THEN
-      factors := s\listed_product_space.factors;
-      IF SIZEOF(v) = SIZEOF(factors)
-      THEN
-        cum := true;
-        REPEAT i := 1 TO SIZEOF(v);
-          cum := cum AND member_of(v[i], factors[i]);
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        RETURN(cum);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN stypes
-  THEN
-    IF 'LIST' IN vtypes
-    THEN
-      sspc := s\extended_tuple_space.base;
-      tmp_int := space_dimension(sspc);
-      IF SIZEOF(v) >= tmp_int
-      THEN
-        cum := true;
-        REPEAT i := 1 TO tmp_int;
-          cum := cum AND member_of(v[i], factor_space(sspc, i));
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        sspc := s\extended_tuple_space.extender;
-        REPEAT i := tmp_int + 1 TO SIZEOF(v);
-          cum := cum AND member_of(v[i], sspc);
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        RETURN(cum);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FUNCTION_SPACE' IN stypes
-  THEN
-    IF 'MATHS_FUNCTION' IN vtypes
-    THEN
-      vspc := v\maths_function.domain;
-      sspc := s\function_space.domain_argument;
-      CASE s\function_space.domain_constraint OF
-        sc_equal : cum := equal_maths_spaces(vspc, sspc);
-        sc_subspace : cum := subspace_of(vspc, sspc);
-        sc_member : cum := member_of(vspc, sspc);
-      END_CASE;
-      IF cum = false
-      THEN
-        RETURN(false);
-      END_IF;
-      vspc := v\maths_function.range;
-      sspc := s\function_space.range_argument;
-      CASE s\function_space.range_constraint OF
-        sc_equal : cum := cum AND equal_maths_spaces(vspc, sspc);
-        sc_subspace : cum := cum AND subspace_of(vspc, sspc);
-        sc_member : cum := cum AND member_of(vspc, sspc);
-      END_CASE;
-      RETURN(cum);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  RETURN(unknown);
-END_FUNCTION;
-
-FUNCTION min_exists(spc : maths_space) : BOOLEAN;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  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)));
-END_FUNCTION;
-
-FUNCTION min_included(spc : maths_space) : BOOLEAN;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  IF ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN types) OR ((schema_prefix + 'INTEGER_INTERVAL_FROM_MIN') IN types)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF ((schema_prefix + 'FINITE_REAL_INTERVAL') IN types)
-  THEN
-    RETURN(bool(spc\finite_real_interval.min_closure = closed));
-  END_IF;
-  IF ((schema_prefix + 'REAL_INTERVAL_FROM_MIN') IN types)
-  THEN
-    RETURN(bool(spc\real_interval_from_min.min_closure = closed));
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION mixed_loop_type_set(l : SET [0 : ?] OF loop) : LOGICAL;
-LOCAL
-  poly_loop_type : LOGICAL;
-END_LOCAL;
-  IF (SIZEOF(l) <= 1)
-  THEN
-    RETURN(false);
-  END_IF;
-  poly_loop_type := ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF(l[1]));
-  REPEAT i := 2 TO SIZEOF(l);
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type)
-    THEN
-      RETURN(true);
-    END_IF;
-  END_REPEAT;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION msb_shells(brep : manifold_solid_brep) : SET [1 : ?] OF closed_shell;
-LOCAL
-  return_set : SET [1 : ?] OF closed_shell := [brep.outer];
-END_LOCAL;
-  IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | msbtype LIKE '*BREP_WITH_VOIDS')) >= 1
-  THEN
-    return_set := return_set + brep\brep_with_voids.voids;
-  END_IF;
-  RETURN(return_set);
-END_FUNCTION;
-
-FUNCTION msf_curve_check(cv : representation_item) : BOOLEAN;
-(* This function varifies the validity of a curve in the context of a
-   manifold surface model. Representation_items are
-   valid input, however, they are supposed to be curves; otherwise
-   this function will return false.
-    *)
-(* complex subtypes of curve that are both bounded_curve and
-   oneof conic, curve_replica, line, or offset_curve_3d are not
-   valid
-    *)
-  (* This function varifies the validity of a curve in the context of a
-     manifold surface model. Representation_items are
-     valid input, however, they are supposed to be curves; otherwise
-     this function will return false.
-      *)
-  (* complex subtypes of curve that are both bounded_curve and
-     oneof conic, curve_replica, line, or offset_curve_3d are not
-     valid
-      *)
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
-            TYPEOF(cv)) >
-     1
-  THEN
-    RETURN(false);
-  END_IF;
-  (* b_spline_curves shall not self-intersect
-      *)
-  IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cv)) AND
-      (cv\b_spline_curve.self_intersect = false) OR
-      (cv\b_spline_curve.self_intersect = unknown))
-  THEN
-    RETURN(true);
-  ELSE
-    IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
-              TYPEOF(cv)) =
-       1
-    THEN
-      RETURN(true);
-    ELSE
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
-      THEN
-        RETURN(msf_curve_check(cv\curve_replica.parent_curve));
-      ELSE
-        IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
-            ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
-            (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                  TYPEOF(cv\offset_curve_3d.basis_curve))))
-        THEN
-          RETURN(msf_curve_check(cv\offset_curve_3d.basis_curve));
-        ELSE
-          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(cv)
-          THEN
-            RETURN((msf_curve_check(cv\pcurve.reference_to_curve\representation.items[1])) AND
-                   (msf_surface_check(cv\pcurve.basis_surface)));
-          ELSE
-            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv)
-            THEN
-              IF msf_curve_check(cv\surface_curve.curve_3d)
-              THEN
-                REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
-                  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
-                     TYPEOF(cv\surface_curve.associated_geometry[i])
-                  THEN
-                    IF NOT msf_surface_check(cv\surface_curve.associated_geometry[i])
-                    THEN
-                      RETURN(false);
-                    END_IF;
-                  ELSE
-                    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                       TYPEOF(cv\surface_curve.associated_geometry[i])
-                    THEN
-                      IF NOT msf_curve_check(cv\surface_curve.associated_geometry[i])
-                      THEN
-                        RETURN(false);
-                      END_IF;
-                    END_IF;
-                  END_IF;
-                END_REPEAT;
-                RETURN(true);
-              END_IF;
-            ELSE
-              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(cv)
-              THEN
-                IF (SIZEOF(cv\polyline.points) >= 3)
-                THEN
-                  RETURN(true);
-                END_IF;
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  (* FALSE is returned if the input parameter cv is not a valid curve.
-      *)
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION msf_surface_check(surf : surface) : BOOLEAN;
-(* This function varifies the validity of a surface in the
-   context of a manifold surface model.
-    *)
-(* elementary_surfaces are valid surface types
-    *)
-  (* This function varifies the validity of a surface in the
-     context of a manifold surface model.
-      *)
-  (* elementary_surfaces are valid surface types
-      *)
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf)
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(surf)
-    THEN
-      RETURN(msf_curve_check(surf\swept_surface.swept_curve));
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF(surf)) AND
-          (surf\offset_surface.self_intersect = false) OR
-          (surf\offset_surface.self_intersect = unknown))
-      THEN
-        RETURN(msf_surface_check(surf\offset_surface.basis_surface));
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf)
-        THEN
-          RETURN(msf_surface_check(surf\surface_replica.parent_surface));
-        ELSE
-          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND
-              (surf\b_spline_surface.self_intersect = false) OR
-              (surf\b_spline_surface.self_intersect = unknown))
-          THEN
-            RETURN(true);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION nmsf_curve_check(cv : representation_item) : BOOLEAN;
-(* This function varifies the validity of a curve in the context of a
-   non-manifold surface model. Representation_items are
-   valid input, however, they are supposed to be curves; otherwise
-   this function will return false.
-    *)
-(* complex subtypes of curve that are both bounded_curve and
-   oneof conic, curve_replica, line, or offset_curve_3d are not
-   valid
-    *)
-  (* This function varifies the validity of a curve in the context of a
-     non-manifold surface model. Representation_items are
-     valid input, however, they are supposed to be curves; otherwise
-     this function will return false.
-      *)
-  (* complex subtypes of curve that are both bounded_curve and
-     oneof conic, curve_replica, line, or offset_curve_3d are not
-     valid
-      *)
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D'] *
-            TYPEOF(cv)) >
-     1
-  THEN
-    RETURN(false);
-  ELSE
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cv)) AND
-        (cv\b_spline_curve.self_intersect = false) OR
-        (cv\b_spline_curve.self_intersect = unknown))
-    THEN
-      RETURN(true);
-    ELSE
-      IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'] *
-                TYPEOF(cv)) =
-         1
-      THEN
-        RETURN(true);
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv)
-        THEN
-          RETURN(nmsf_curve_check(cv\curve_replica.parent_curve));
-        ELSE
-          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
-              ((cv\offset_curve_3d.self_intersect = false) OR (cv\offset_curve_3d.self_intersect = unknown)) AND
-              (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN
-                    TYPEOF(cv\offset_curve_3d.basis_curve))))
-          THEN
-            RETURN(nmsf_curve_check(cv\offset_curve_3d.basis_curve));
-          ELSE
-            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(cv)
-            THEN
-              RETURN((nmsf_curve_check(cv\pcurve.reference_to_curve\representation.items[1])) AND
-                     (nmsf_surface_check(cv\pcurve.basis_surface)));
-            ELSE
-              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv)
-              THEN
-                IF nmsf_curve_check(cv\surface_curve.curve_3d)
-                THEN
-                  REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
-                    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
-                       TYPEOF(cv\surface_curve.associated_geometry[i])
-                    THEN
-                      IF NOT nmsf_surface_check(cv\surface_curve.associated_geometry[i])
-                      THEN
-                        RETURN(false);
-                      END_IF;
-                    ELSE
-                      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN
-                         TYPEOF(cv\surface_curve.associated_geometry[i])
-                      THEN
-                        IF NOT nmsf_curve_check(cv\surface_curve.associated_geometry[i])
-                        THEN
-                          RETURN(false);
-                        END_IF;
-                      END_IF;
-                    END_IF;
-                  END_REPEAT;
-                  RETURN(true);
-                END_IF;
-              ELSE
-                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF(cv)
-                THEN
-                  IF (SIZEOF(cv\polyline.points) >= 3)
-                  THEN
-                    RETURN(true);
-                  END_IF;
-                END_IF;
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  (* FALSE is returned if the input parameter cv is not a valid curve.
-      *)
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION nmsf_surface_check(surf : surface) : BOOLEAN;
-(* This function varifies the validity of a surface in the
-   context of a non-manifold surface model.
-    *)
-(* elementary_surfaces are valid surface types
-    *)
-  (* This function varifies the validity of a surface in the
-     context of a non-manifold surface model.
-      *)
-  (* elementary_surfaces are valid surface types
-      *)
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf)
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF(surf)
-    THEN
-      RETURN(nmsf_curve_check(surf\swept_surface.swept_curve));
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF(surf)) AND
-          (surf\offset_surface.self_intersect = false) OR
-          (surf\offset_surface.self_intersect = unknown))
-      THEN
-        RETURN(nmsf_surface_check(surf\offset_surface.basis_surface));
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf)
-        THEN
-          RETURN(nmsf_surface_check(surf\surface_replica.parent_surface));
-        ELSE
-          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND
-              (surf\b_spline_surface.self_intersect = false) OR
-              (surf\b_spline_surface.self_intersect = unknown))
-          THEN
-            RETURN(true);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION no_cyclic_domain_reference(ref : maths_space_or_function;
-                                    used : SET OF maths_function) : BOOLEAN;
-LOCAL
-  typenames : SET OF STRING  := TYPEOF(ref);
-  func      : maths_function;
-END_LOCAL;
-  IF (NOT EXISTS(ref)) OR (NOT EXISTS(used))
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (schema_prefix + 'MATHS_SPACE') IN typenames
-  THEN
-    RETURN(true);
-  END_IF;
-  func := ref;
-  IF func IN used
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (schema_prefix + 'CONSTANT_FUNCTION') IN typenames
-  THEN
-    RETURN(no_cyclic_domain_reference(func\constant_function.source_of_domain, used + [func]));
-  END_IF;
-  IF (schema_prefix + 'SELECTOR_FUNCTION') IN typenames
-  THEN
-    RETURN(no_cyclic_domain_reference(func\selector_function.source_of_domain, used + [func]));
-  END_IF;
-  IF (schema_prefix + 'PARALLEL_COMPOSED_FUNCTION') IN typenames
-  THEN
-    RETURN(no_cyclic_domain_reference(func\parallel_composed_function.source_of_domain, used + [func]));
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION no_cyclic_space_reference(spc : maths_space;
-                                   refs : SET OF maths_space) : BOOLEAN;
-LOCAL
-  types     : SET OF STRING;
-  refs_plus : SET OF maths_space;
-END_LOCAL;
-  IF (spc IN refs)
-  THEN
-    RETURN(false);
-  END_IF;
-  types := TYPEOF(spc);
-  refs_plus := refs + spc;
-  IF (schema_prefix + 'FINITE_SPACE') IN types
-  THEN
-    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));
-  END_IF;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN types
-  THEN
-    RETURN(no_cyclic_space_reference(spc\uniform_product_space.base, refs_plus));
-  END_IF;
-  IF (schema_prefix + 'LISTED_PRODUCT_SPACE') IN types
-  THEN
-    RETURN(bool(SIZEOF(QUERY(fac
-                             <* spc\listed_product_space.factors
-                             | NOT no_cyclic_space_reference(fac, refs_plus))) =
-                0));
-  END_IF;
-  IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN types
-  THEN
-    RETURN(no_cyclic_space_reference(spc\extended_tuple_space.base, refs_plus) AND
-           no_cyclic_space_reference(spc\extended_tuple_space.extender, refs_plus));
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION nondecreasing(lr : LIST OF REAL) : BOOLEAN;
-  IF NOT EXISTS(lr)
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT j := 2 TO SIZEOF(lr);
-    IF lr[j] < lr[j - 1]
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION normalise(arg : vector_or_direction) : vector_or_direction;
-LOCAL
-  ndim   : INTEGER;
-  v      : direction           := dummy_gri || direction([1.0,0.0,0.0]);
-  result : vector_or_direction;
-  vec    : vector              := dummy_gri || vector(v, 1.0);
-  mag    : REAL;
-END_LOCAL;
-  IF NOT EXISTS(arg)
-  THEN
-    result := ?;
-  ELSE
-    ndim := arg.dim;
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(arg)
-    THEN
-      BEGIN  
-             v := dummy_gri || direction(arg\vector.orientation.direction_ratios);
-             IF arg\vector.magnitude = 0.0
-             THEN
-               RETURN(?);
-             ELSE
-               vec := dummy_gri || vector(v, 1.0);
-             END_IF;
-      END;
-    ELSE
-      v := dummy_gri || direction(arg.direction_ratios);
-    END_IF;
-    mag := 0.0;
-    REPEAT i := 1 TO ndim;
-      mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
-    END_REPEAT;
-    IF mag > 0.0
-    THEN
-      mag := SQRT(mag);
-      REPEAT i := 1 TO ndim;
-        v.direction_ratios[i] := v.direction_ratios[i] / mag;
-      END_REPEAT;
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(arg)
-      THEN
-        vec.orientation := v;
-        result := vec;
-      ELSE
-        result := v;
-      END_IF;
-    ELSE
-      RETURN(?);
-    END_IF;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION number_superspace_of(spc : maths_space) : elementary_space;
-  IF subspace_of_es(spc, es_integers)
-  THEN
-    RETURN(the_integers);
-  END_IF;
-  IF subspace_of_es(spc, es_reals)
-  THEN
-    RETURN(the_reals);
-  END_IF;
-  IF subspace_of_es(spc, es_complex_numbers)
-  THEN
-    RETURN(the_complex_numbers);
-  END_IF;
-  IF subspace_of_es(spc, es_numbers)
-  THEN
-    RETURN(the_numbers);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION number_tuple_subspace_check(spc : maths_space) : LOGICAL;
-LOCAL
-  types   : SET OF STRING       := stripped_typeof(spc);
-  factors : LIST OF maths_space;
-  cum     : LOGICAL             := true;
-END_LOCAL;
-  IF 'UNIFORM_PRODUCT_SPACE' IN types
-  THEN
-    RETURN(subspace_of_es(spc\uniform_product_space.base, es_numbers));
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN types
-  THEN
-    factors := spc\listed_product_space.factors;
-    REPEAT i := 1 TO SIZEOF(factors);
-      cum := cum AND subspace_of_es(factors[i], es_numbers);
-    END_REPEAT;
-    RETURN(cum);
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN types
-  THEN
-    cum := subspace_of_es(spc\extended_tuple_space.extender, es_numbers);
-    cum := cum AND number_tuple_subspace_check(spc\extended_tuple_space.base);
-    RETURN(cum);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION one_tuples_of(spc : maths_space) : tuple_space;
-  RETURN(make_uniform_product_space(spc, 1));
-END_FUNCTION;
-
-FUNCTION open_path_based_inner_boundary(input : SET OF primitive_2d) : BOOLEAN;
-LOCAL
-  pass : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(input);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS' IN TYPEOF(input[i])) AND
-       (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' IN
-         TYPEOF(input[i]\mapped_item.mapping_source\representation_map.mapping_origin)) OR
-        (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-      pass := false;
-    END_IF;
-  END_REPEAT;
-  RETURN(pass);
-END_FUNCTION;
-
-FUNCTION open_shell_reversed(a_shell : open_shell) : oriented_open_shell;
-LOCAL
-  the_reverse : oriented_open_shell;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell))
-  THEN
-    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)));
-  ELSE
-    the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces) || open_shell() ||
-                   oriented_open_shell(a_shell, false);
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION orthogonal_complement(vec : direction) : direction;
-LOCAL
-  result : direction;
-END_LOCAL;
-  IF (vec.dim <> 2) OR NOT EXISTS(vec)
-  THEN
-    RETURN(?);
-  ELSE
-    result := dummy_gri || direction([-vec.direction_ratios[2],vec.direction_ratios[1]]);
-    RETURN(result);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION parallel_composed_function_composability_check(funcs : LIST OF maths_function;
-                                                        final : maths_function_select) : BOOLEAN;
-LOCAL
-  tplsp  : tuple_space    := the_zero_tuple_space;
-  finfun : maths_function := convert_to_maths_function(final);
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(funcs);
-    tplsp := assoc_product_space(tplsp, funcs[i].range);
-  END_REPEAT;
-  RETURN(compatible_spaces(tplsp, finfun.domain));
-END_FUNCTION;
-
-FUNCTION parallel_composed_function_domain_check(comdom : tuple_space;
-                                                 funcs : LIST OF maths_function) : BOOLEAN;
-  REPEAT i := 1 TO SIZEOF(funcs);
-    IF NOT (compatible_spaces(comdom, funcs[i].domain))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION parse_express_identifier(s : STRING;
-                                  i : positive_integer) : positive_integer;
-LOCAL
-  k : positive_integer;
-END_LOCAL;
-  k := i;
-  IF i <= LENGTH(s)
-  THEN
-    IF (s[i] LIKE '@')
-    THEN
-      REPEAT UNTIL (k > LENGTH(s)) OR ((s[k] <> '_') AND NOT (s[k] LIKE '@') AND NOT (s[k] LIKE '#'));
-        k := k + 1;
-      END_REPEAT;
-    END_IF;
-  END_IF;
-  RETURN(k);
-END_FUNCTION;
-
-FUNCTION partial_derivative_check(domain : tuple_space;
-                                  d_vars : LIST [1 : ?] OF input_selector) : BOOLEAN;
-LOCAL
-  domn : tuple_space := domain;
-  fspc : maths_space;
-  dim  : INTEGER;
-  k    : INTEGER;
-END_LOCAL;
-  IF (space_dimension(domain) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(domain)))
-  THEN
-    domn := factor1(domain);
-  END_IF;
-  dim := space_dimension(domn);
-  REPEAT i := 1 TO SIZEOF(d_vars);
-    k := d_vars[i];
-    IF k > dim
-    THEN
-      RETURN(false);
-    END_IF;
-    fspc := factor_space(domn, k);
-    IF (NOT subspace_of_es(fspc, es_reals)) AND (NOT subspace_of_es(fspc, es_complex_numbers))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION path_head_to_tail(a_path : path) : LOGICAL;
-LOCAL
-  n : INTEGER;
-  p : LOGICAL := true;
-END_LOCAL;
-  n := SIZEOF(a_path.edge_list);
-  REPEAT i := 2 TO n;
-    p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i].edge_start);
-  END_REPEAT;
-  RETURN(p);
-END_FUNCTION;
-
-FUNCTION path_reversed(a_path : path) : oriented_path;
-LOCAL
-  the_reverse : oriented_path;
-END_LOCAL;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(a_path))
-  THEN
-    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));
-  ELSE
-    the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.edge_list)) || oriented_path(a_path, false);
-  END_IF;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION plane_angle_for_pair_in_radian(pair : kinematic_pair;
-                                        angle : plane_angle_measure) : plane_angle_measure;
-LOCAL
-  converted_angle : plane_angle_measure           := angle;
-  link_rep        : kinematic_link_representation := representation_of_link(pair.joint.edge_start);
-  link_cntxt      : representation_context;
-  pa_units        : SET OF unit                   := [];
-  pau             : unit;
-END_LOCAL;
-  link_cntxt := link_rep\representation.context_of_items;
-  IF NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(link_cntxt))
-  THEN
-    RETURN(?);
-  END_IF;
-  pa_units := QUERY(unit
-                    <* link_cntxt\global_unit_assigned_context.units
-                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
-  IF SIZEOF(pa_units) <> 1
-  THEN
-    RETURN(?);
-  END_IF;
-  pau := pa_units[1];
-  IF (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF(pau)) AND
-          NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(pau)))
-  THEN
-    RETURN(?);
-  END_IF;
-  REPEAT WHILE ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(pau));
-    converted_angle := converted_angle * pau\conversion_based_unit.conversion_factor.value_component;
-    pau := pau\conversion_based_unit.conversion_factor.unit_component;
-    IF ((NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF(pau)) AND
-             NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF(pau))) OR
-        (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(pau))))
-    THEN
-      RETURN(?);
-    END_IF;
-  END_REPEAT;
-  IF (pau\si_unit.name <> si_unit_name.radian)
-  THEN
-    RETURN(?);
-  END_IF;
-  CASE pau\si_unit.prefix OF
-    si_prefix.exa : RETURN(1.E18 * converted_angle);
-    si_prefix.peta : RETURN(1.E15 * converted_angle);
-    si_prefix.tera : RETURN(1.E12 * converted_angle);
-    si_prefix.giga : RETURN(1.E9 * converted_angle);
-    si_prefix.mega : RETURN(1.E6 * converted_angle);
-    si_prefix.kilo : RETURN(1.E3 * converted_angle);
-    si_prefix.hecto : RETURN(1.E2 * converted_angle);
-    si_prefix.deca : RETURN(1.E1 * converted_angle);
-    si_prefix.deci : RETURN(1.E-1 * converted_angle);
-    si_prefix.centi : RETURN(1.E-2 * converted_angle);
-    si_prefix.milli : RETURN(1.E-3 * converted_angle);
-    si_prefix.micro : RETURN(1.E-6 * converted_angle);
-    si_prefix.nano : RETURN(1.E-9 * converted_angle);
-    si_prefix.pico : RETURN(1.E-12 * converted_angle);
-    si_prefix.femto : RETURN(1.E-15 * converted_angle);
-    si_prefix.atto : RETURN(1.E-18 * converted_angle);
-    OTHERWISE: RETURN(converted_angle);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION real_max(spc : maths_space) : REAL;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  IF ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN types)
-  THEN
-    RETURN(spc\finite_integer_interval.max);
-  END_IF;
-  IF ((schema_prefix + 'INTEGER_INTERVAL_TO_MAX') IN types)
-  THEN
-    RETURN(spc\integer_interval_to_max.max);
-  END_IF;
-  IF ((schema_prefix + 'FINITE_REAL_INTERVAL') IN types)
-  THEN
-    RETURN(spc\finite_real_interval.max);
-  END_IF;
-  IF ((schema_prefix + 'REAL_INTERVAL_TO_MAX') IN types)
-  THEN
-    RETURN(spc\real_interval_to_max.max);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION real_min(spc : maths_space) : REAL;
-LOCAL
-  types : SET OF STRING := TYPEOF(spc);
-END_LOCAL;
-  IF ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN types)
-  THEN
-    RETURN(spc\finite_integer_interval.min);
-  END_IF;
-  IF ((schema_prefix + 'INTEGER_INTERVAL_FROM_MIN') IN types)
-  THEN
-    RETURN(spc\integer_interval_from_min.min);
-  END_IF;
-  IF ((schema_prefix + 'FINITE_REAL_INTERVAL') IN types)
-  THEN
-    RETURN(spc\finite_real_interval.min);
-  END_IF;
-  IF ((schema_prefix + 'REAL_INTERVAL_FROM_MIN') IN types)
-  THEN
-    RETURN(spc\real_interval_from_min.min);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION regular_indexing(sub : LIST OF INTEGER;
-                          base : zero_or_one;
-                          shape : LIST [1 : ?] OF positive_integer;
-                          inc : LIST [1 : ?] OF INTEGER;
-                          first : INTEGER) : INTEGER;
-LOCAL
-  k     : INTEGER;
-  index : INTEGER;
-END_LOCAL;
-  IF NOT EXISTS(sub) OR NOT EXISTS(base) OR NOT EXISTS(shape) OR NOT EXISTS(inc) OR NOT EXISTS(first)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF (SIZEOF(sub) <> SIZEOF(inc)) OR (SIZEOF(sub) <> SIZEOF(shape))
-  THEN
-    RETURN(?);
-  END_IF;
-  index := first;
-  REPEAT j := 1 TO SIZEOF(sub);
-    IF NOT EXISTS(sub[j]) OR NOT EXISTS(inc[j])
-    THEN
-      RETURN(?);
-    END_IF;
-    k := sub[j] - base;
-    IF NOT ({0 <= k < shape[j]})
-    THEN
-      RETURN(?);
-    END_IF;
-    index := index + k * inc[j];
-  END_REPEAT;
-  RETURN(index);
-END_FUNCTION;
-
-FUNCTION relating_shape_representations_of_extreme_values(item : location_of_extreme_value_select) : SET OF shape_representation;
-LOCAL
-  results : SET OF shape_representation                                       := [];
-  exti    : SET OF extreme_instance                                           := [];
-  ii_ei   : SET OF instance_report_item_with_extreme_instances                := [];
-  sdiir   : SET OF shape_data_quality_inspection_instance_report              := [];
-  sdqr    : SET OF shape_data_quality_inspection_result_representation        := [];
-  sdisr   : SET OF shape_data_quality_inspected_shape_and_result_relationship := [];
-END_LOCAL;
-  exti := exti +
-          bag_to_set(USEDIN(item,
-                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTREME_INSTANCE.LOCATIONS_OF_EXTREME_VALUE'));
-  REPEAT i := 1 TO HIINDEX(exti);
-    ii_ei := ii_ei +
-             bag_to_set(USEDIN(exti[i],
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES.EXTREME_INSTANCES'));
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(ii_ei);
-    sdiir := sdiir +
-             bag_to_set(USEDIN(ii_ei[i],
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT.INSPECTED_INSTANCES'));
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(sdiir);
-    sdqr := sdqr +
-            QUERY(i1
-                  <* bag_to_set(USEDIN(sdiir[i].inspection_result,
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'))
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' IN
-                    TYPEOF(i1));
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(sdqr);
-    sdisr := sdisr +
-             bag_to_set(USEDIN(sdqr[i],
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.REP_2'));
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(sdisr);
-    results := results + sdisr[i].rep_1;
-  END_REPEAT;
-  RETURN(results);
-END_FUNCTION;
-
-FUNCTION remove_first(alist : LIST OF GENERIC : GEN) : LIST OF GENERIC : GEN;
-LOCAL
-  blist : LIST OF GENERIC : GEN := alist;
-END_LOCAL;
-  IF SIZEOF(blist) > 0
-  THEN
-    REMOVE(blist, 1);
-  END_IF;
-  RETURN(blist);
-END_FUNCTION;
-
-FUNCTION repackage(tspace : tuple_space;
-                   repckg : repackage_options) : tuple_space;
-  CASE repckg OF
-    ro_nochange : RETURN(tspace);
-    ro_wrap_as_tuple : RETURN(one_tuples_of(tspace));
-    ro_unwrap_tuple : RETURN(factor1(tspace));
-    OTHERWISE: RETURN(?);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION representation_of_link(link : kinematic_link) : kinematic_link_representation;
-(*
-   LOCAL
-   link_rep_rel : BAG OF kinematic_link_representation_relation;
-   END_LOCAL;
-
-   link_rep_rel := USEDIN (link, 'KINEMATIC_STRUCTURE_SCHEMA.'+
-   'KINEMATIC_LINK_REPRESENTATION_RELATION.'+
-   'TOPOLOGICAL_ASPECTS');
-   IF (SIZEOF (link_rep_rel) = 0) THEN
-   RETURN (?);
-   ELSE
-   RETURN (link_rep_rel[1].geometric_aspects);
-   END_IF;
-    *)
-  (*
-     LOCAL
-     link_rep_rel : BAG OF kinematic_link_representation_relation;
-     END_LOCAL;
-
-     link_rep_rel := USEDIN (link, 'KINEMATIC_STRUCTURE_SCHEMA.'+
-     'KINEMATIC_LINK_REPRESENTATION_RELATION.'+
-     'TOPOLOGICAL_ASPECTS');
-     IF (SIZEOF (link_rep_rel) = 0) THEN
-     RETURN (?);
-     ELSE
-     RETURN (link_rep_rel[1].geometric_aspects);
-     END_IF;
-      *)
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION same_side(plane_pts : LIST [3 : 3] OF cartesian_point;
-                   test_points : LIST [2 : ?] OF cartesian_point) : BOOLEAN;
-LOCAL
-  val1 : REAL;
-  val2 : REAL;
-  n    : INTEGER;
-END_LOCAL;
-  IF (plane_pts[1].dim = 2) OR (test_points[1].dim = 2)
-  THEN
-    RETURN(?);
-  END_IF;
-  n := SIZEOF(test_points);
-  val1 := above_plane(plane_pts[1], plane_pts[2], plane_pts[3], test_points[1]);
-  REPEAT i := 2 TO n;
-    val2 := above_plane(plane_pts[1], plane_pts[2], plane_pts[3], test_points[i]);
-    IF (val1 * val2 <= 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION scalar_times_vector(scalar : REAL;
-                             vec : vector_or_direction) : vector;
-LOCAL
-  v      : direction;
-  mag    : REAL;
-  result : vector;
-END_LOCAL;
-  IF NOT EXISTS(scalar) OR NOT EXISTS(vec)
-  THEN
-    RETURN(?);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(vec)
-    THEN
-      v := dummy_gri || direction(vec\vector.orientation.direction_ratios);
-      mag := scalar * vec\vector.magnitude;
-    ELSE
-      v := dummy_gri || direction(vec.direction_ratios);
-      mag := scalar;
-    END_IF;
-    IF (mag < 0.0)
-    THEN
-      REPEAT i := 1 TO SIZEOF(v.direction_ratios);
-        v.direction_ratios[i] := -v.direction_ratios[i];
-      END_REPEAT;
-      mag := -mag;
-    END_IF;
-    result := dummy_gri || vector(normalise(v), mag);
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION second_proj_axis(z_axis : direction;
-                          x_axis : direction;
-                          arg : direction) : direction;
-LOCAL
-  y_axis : vector;
-  v      : direction;
-  temp   : vector;
-END_LOCAL;
-  IF NOT EXISTS(arg)
-  THEN
-    v := dummy_gri || direction([0.0,1.0,0.0]);
-  ELSE
-    v := arg;
-  END_IF;
-  temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
-  y_axis := vector_difference(v, temp);
-  temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
-  y_axis := vector_difference(y_axis, temp);
-  y_axis := normalise(y_axis);
-  RETURN(y_axis.orientation);
-END_FUNCTION;
-
-FUNCTION set_of_topology_reversed(a_set : set_of_reversible_topology_item) : set_of_reversible_topology_item;
-LOCAL
-  the_reverse : set_of_reversible_topology_item;
-END_LOCAL;
-  the_reverse := [];
-  REPEAT i := 1 TO SIZEOF(a_set);
-    the_reverse := the_reverse + topology_reversed(a_set[i]);
-  END_REPEAT;
-  RETURN(the_reverse);
-END_FUNCTION;
-
-FUNCTION shape_of_array(func : maths_function) : LIST OF positive_integer;
-LOCAL
-  tspace : tuple_space;
-  temp   : maths_space;
-  result : LIST OF positive_integer := [];
-END_LOCAL;
-  IF (schema_prefix + 'EXPLICIT_TABLE_FUNCTION') IN TYPEOF(func)
-  THEN
-    RETURN(func\explicit_table_function.shape);
-  END_IF;
-  tspace := func.domain;
-  IF (space_dimension(tspace) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF(factor1(tspace)))
-  THEN
-    tspace := factor1(tspace);
-  END_IF;
-  REPEAT i := 1 TO space_dimension(tspace);
-    temp := factor_space(tspace, i);
-    IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF(temp))
-    THEN
-      RETURN(?);
-    END_IF;
-    INSERT(result, temp\finite_integer_interval.size, i - 1);
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION shell_reversed(a_shell : shell) : shell;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF(a_shell))
-  THEN
-    RETURN(open_shell_reversed(a_shell));
-  ELSE
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN TYPEOF(a_shell))
-    THEN
-      RETURN(closed_shell_reversed(a_shell));
-    ELSE
-      RETURN(?);
-    END_IF;
-  END_IF;
-END_FUNCTION;
-
-FUNCTION simplify_function_application(expr : function_application) : maths_value;
-FUNCTION ctmv(x : GENERIC : G) : maths_value;
-  RETURN(convert_to_maths_value(x));
-END_FUNCTION;
-PROCEDURE parts(c : complex_number_literal; VAR x : REAL; VAR y : REAL);
-  x := c.real_part;
-  y := c.imag_part;
-END_PROCEDURE;
-FUNCTION makec(x : REAL;
-               y : REAL) : complex_number_literal;
-  RETURN(make_complex_number_literal(x, y));
-END_FUNCTION;
-FUNCTION good_t(v : maths_value;
-                tn : STRING) : BOOLEAN;
-LOCAL
-  tpl : LIST OF maths_value;
-END_LOCAL;
-  IF 'LIST' IN TYPEOF(v)
-  THEN
-    tpl := v;
-    REPEAT i := 1 TO SIZEOF(tpl);
-      IF NOT (tn IN TYPEOF(tpl[i]))
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-CONSTANT
-  cnlit : STRING := schema_prefix + 'COMPLEX_NUMBER_LITERAL';
-END_CONSTANT;
-LOCAL
-  types         : SET OF STRING                              := stripped_typeof(expr.func);
-  ef_val        : elementary_function_enumerators;
-  is_elementary : BOOLEAN                                    := false;
-  v             : maths_value;
-  v1            : maths_value;
-  v2            : maths_value;
-  v3            : maths_value;
-  vlist         : LIST OF maths_value                        := [];
-  gexpr         : generic_expression;
-  pairs         : SET [1 : ?] OF LIST [2 : 2] OF maths_value;
-  boo           : BOOLEAN;
-  lgc           : LOGICAL;
-  cum           : LOGICAL;
-  j             : INTEGER;
-  k             : INTEGER;
-  n             : INTEGER;
-  p             : REAL;
-  q             : REAL;
-  r             : REAL;
-  s             : REAL;
-  t             : REAL;
-  u             : REAL;
-  str           : STRING;
-  st2           : STRING;
-  bin           : BINARY;
-  bi2           : BINARY;
-  tpl           : LIST OF maths_value;
-  tp2           : LIST OF maths_value;
-  mem           : SET OF maths_value                         := [];
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(expr.arguments);
-    v := simplify_maths_value(expr.arguments[i]);
-    INSERT(vlist, v, i - 1);
-  END_REPEAT;
-  IF SIZEOF(vlist) >= 1
-  THEN
-    v1 := vlist[1];
-  END_IF;
-  IF SIZEOF(vlist) >= 2
-  THEN
-    v2 := vlist[2];
-  END_IF;
-  IF SIZEOF(vlist) >= 3
-  THEN
-    v3 := vlist[3];
-  END_IF;
-  IF 'ELEMENTARY_FUNCTION_ENUMERATORS' IN types
-  THEN
-    ef_val := expr.func;
-    is_elementary := true;
-  END_IF;
-  IF 'ELEMENTARY_FUNCTION' IN types
-  THEN
-    ef_val := expr.func\elementary_function.func_id;
-    is_elementary := true;
-  END_IF;
-  IF is_elementary
-  THEN
-    CASE ef_val OF
-      ef_and : BEGIN  
-                      cum := true;
-                      REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                        IF 'LOGICAL' IN TYPEOF(vlist[i])
-                        THEN
-                          lgc := vlist[i];
-                          cum := cum AND lgc;
-                          IF lgc = false
-                          THEN
-                            RETURN(ctmv(false));
-                          END_IF;
-                          REMOVE(vlist, i);
-                        END_IF;
-                      END_REPEAT;
-                      IF SIZEOF(vlist) = 0
-                      THEN
-                        RETURN(ctmv(cum));
-                      END_IF;
-                      IF cum <> true
-                      THEN
-                        INSERT(vlist, ctmv(cum), 0);
-                      END_IF;
-                      IF SIZEOF(vlist) = 1
-                      THEN
-                        RETURN(vlist[1]);
-                      END_IF;
-      END;
-      ef_or : BEGIN  
-                     cum := false;
-                     REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                       IF 'LOGICAL' IN TYPEOF(vlist[i])
-                       THEN
-                         lgc := vlist[i];
-                         cum := cum OR lgc;
-                         IF lgc = true
-                         THEN
-                           RETURN(ctmv(true));
-                         END_IF;
-                         REMOVE(vlist, i);
-                       END_IF;
-                     END_REPEAT;
-                     IF SIZEOF(vlist) = 0
-                     THEN
-                       RETURN(ctmv(cum));
-                     END_IF;
-                     IF cum <> false
-                     THEN
-                       INSERT(vlist, ctmv(cum), 0);
-                     END_IF;
-                     IF SIZEOF(vlist) = 1
-                     THEN
-                       RETURN(vlist[1]);
-                     END_IF;
-      END;
-      ef_not : IF 'LOGICAL' IN TYPEOF(v1)
-      THEN
-        lgc := v1;
-        RETURN(ctmv(NOT lgc));
-      END_IF;
-      ef_xor : BEGIN  
-                      IF 'LOGICAL' IN TYPEOF(v1)
-                      THEN
-                        lgc := v1;
-                        IF 'LOGICAL' IN TYPEOF(v2)
-                        THEN
-                          cum := v2;
-                          RETURN(ctmv(lgc XOR cum));
-                        ELSE
-                          IF lgc = false
-                          THEN
-                            RETURN(ctmv(v2));
-                          ELSE
-                            IF lgc = unknown
-                            THEN
-                              RETURN(ctmv(unknown));
-                            ELSE
-                              RETURN(make_function_application(ef_not, [v2]));
-                            END_IF;
-                          END_IF;
-                        END_IF;
-                      ELSE
-                        IF 'LOGICAL' IN TYPEOF(v2)
-                        THEN
-                          lgc := v2;
-                          IF lgc = false
-                          THEN
-                            RETURN(ctmv(v1));
-                          ELSE
-                            IF lgc = unknown
-                            THEN
-                              RETURN(ctmv(unknown));
-                            ELSE
-                              RETURN(make_function_application(ef_not, [v1]));
-                            END_IF;
-                          END_IF;
-                        END_IF;
-                      END_IF;
-      END;
-      ef_negate_i : IF 'INTEGER' IN TYPEOF(v1)
-      THEN
-        j := v1;
-        RETURN(ctmv(-j));
-      END_IF;
-      ef_add_i : BEGIN  
-                        j := 0;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'INTEGER' IN TYPEOF(vlist[i])
-                          THEN
-                            k := vlist[i];
-                            j := j + k;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(j));
-                        END_IF;
-                        IF j <> 0
-                        THEN
-                          INSERT(vlist, ctmv(j), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_subtract_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j - k));
-      END_IF;
-      ef_multiply_i : BEGIN  
-                             j := 1;
-                             REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                               IF 'INTEGER' IN TYPEOF(vlist[i])
-                               THEN
-                                 k := vlist[i];
-                                 j := j * k;
-                                 REMOVE(vlist, i);
-                               END_IF;
-                             END_REPEAT;
-                             IF SIZEOF(vlist) = 0
-                             THEN
-                               RETURN(ctmv(j));
-                             END_IF;
-                             IF j <> 1
-                             THEN
-                               INSERT(vlist, ctmv(j), 0);
-                             END_IF;
-                             IF SIZEOF(vlist) = 1
-                             THEN
-                               RETURN(vlist[1]);
-                             END_IF;
-      END;
-      ef_divide_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j DIV k));
-      END_IF;
-      ef_mod_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j MOD k));
-      END_IF;
-      ef_exponentiate_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        n := 1;
-        REPEAT i := 1 TO ABS(k);
-          n := n * j;
-        END_REPEAT;
-        IF k < 0
-        THEN
-          n := 1 DIV n;
-        END_IF;
-        RETURN(ctmv(n));
-      END_IF;
-      ef_eq_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j = k));
-      END_IF;
-      ef_ne_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j <> k));
-      END_IF;
-      ef_gt_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j > k));
-      END_IF;
-      ef_lt_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j < k));
-      END_IF;
-      ef_ge_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j >= k));
-      END_IF;
-      ef_le_i : IF ('INTEGER' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        j := v1;
-        k := v2;
-        RETURN(ctmv(j <= k));
-      END_IF;
-      ef_abs_i : IF 'INTEGER' IN TYPEOF(v1)
-      THEN
-        j := v1;
-        RETURN(ctmv(ABS(j)));
-      END_IF;
-      ef_max_i : BEGIN  
-                        boo := false;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'INTEGER' IN TYPEOF(vlist[i])
-                          THEN
-                            IF boo
-                            THEN
-                              k := vlist[i];
-                              IF k > j
-                              THEN
-                                j := k;
-                              END_IF;
-                            ELSE
-                              j := vlist[i];
-                              boo := true;
-                            END_IF;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(j));
-                        END_IF;
-                        IF boo
-                        THEN
-                          INSERT(vlist, ctmv(j), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_min_i : BEGIN  
-                        boo := false;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'INTEGER' IN TYPEOF(vlist[i])
-                          THEN
-                            IF boo
-                            THEN
-                              k := vlist[i];
-                              IF k < j
-                              THEN
-                                j := k;
-                              END_IF;
-                            ELSE
-                              j := vlist[i];
-                              boo := true;
-                            END_IF;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(j));
-                        END_IF;
-                        IF boo
-                        THEN
-                          INSERT(vlist, ctmv(j), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_negate_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(-r));
-      END_IF;
-      ef_reciprocal_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(1.0 / r));
-      END_IF;
-      ef_add_r : BEGIN  
-                        r := 0.0;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'REAL' IN TYPEOF(vlist[i])
-                          THEN
-                            s := vlist[i];
-                            r := r + s;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(r));
-                        END_IF;
-                        IF r <> 0.0
-                        THEN
-                          INSERT(vlist, ctmv(r), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_subtract_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r - s));
-      END_IF;
-      ef_multiply_r : BEGIN  
-                             r := 1.0;
-                             REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                               IF 'REAL' IN TYPEOF(vlist[i])
-                               THEN
-                                 s := vlist[i];
-                                 r := r * s;
-                                 REMOVE(vlist, i);
-                               END_IF;
-                             END_REPEAT;
-                             IF SIZEOF(vlist) = 0
-                             THEN
-                               RETURN(ctmv(r));
-                             END_IF;
-                             IF r <> 1.0
-                             THEN
-                               INSERT(vlist, ctmv(r), 0);
-                             END_IF;
-                             IF SIZEOF(vlist) = 1
-                             THEN
-                               RETURN(vlist[1]);
-                             END_IF;
-      END;
-      ef_divide_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r / s));
-      END_IF;
-      ef_mod_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        t := r / s;
-        j := t DIV 1;
-        IF (t < 0.0) AND (j <> t)
-        THEN
-          j := j - 1;
-        END_IF;
-        RETURN(ctmv(r - j * s));
-      END_IF;
-      ef_exponentiate_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r ** s));
-      END_IF;
-      ef_exponentiate_ri : IF ('REAL' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        k := v2;
-        t := 1.0;
-        REPEAT i := 1 TO ABS(k);
-          t := t * r;
-        END_REPEAT;
-        IF k < 0
-        THEN
-          t := 1.0 / t;
-        END_IF;
-        RETURN(ctmv(t));
-      END_IF;
-      ef_eq_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r = s));
-      END_IF;
-      ef_ne_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r <> s));
-      END_IF;
-      ef_gt_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r > s));
-      END_IF;
-      ef_lt_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r < s));
-      END_IF;
-      ef_ge_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r >= s));
-      END_IF;
-      ef_le_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(r <= s));
-      END_IF;
-      ef_abs_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(ABS(r)));
-      END_IF;
-      ef_max_r : BEGIN  
-                        boo := false;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'REAL' IN TYPEOF(vlist[i])
-                          THEN
-                            IF boo
-                            THEN
-                              s := vlist[i];
-                              IF s > r
-                              THEN
-                                r := s;
-                              END_IF;
-                            ELSE
-                              r := vlist[i];
-                              boo := true;
-                            END_IF;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(r));
-                        END_IF;
-                        IF boo
-                        THEN
-                          INSERT(vlist, ctmv(r), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_min_r : BEGIN  
-                        boo := false;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF 'REAL' IN TYPEOF(vlist[i])
-                          THEN
-                            IF boo
-                            THEN
-                              s := vlist[i];
-                              IF s < r
-                              THEN
-                                r := s;
-                              END_IF;
-                            ELSE
-                              r := vlist[i];
-                              boo := true;
-                            END_IF;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(ctmv(r));
-                        END_IF;
-                        IF boo
-                        THEN
-                          INSERT(vlist, ctmv(r), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_acos_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(ACOS(r)));
-      END_IF;
-      ef_asin_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(ASIN(r)));
-      END_IF;
-      ef_atan2_r : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(ctmv(atan2(r, s)));
-      END_IF;
-      ef_cos_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(COS(r)));
-      END_IF;
-      ef_exp_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(EXP(r)));
-      END_IF;
-      ef_ln_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(LOG(r)));
-      END_IF;
-      ef_log2_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(LOG2(r)));
-      END_IF;
-      ef_log10_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(LOG10(r)));
-      END_IF;
-      ef_sin_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(SIN(r)));
-      END_IF;
-      ef_sqrt_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(SQRT(r)));
-      END_IF;
-      ef_tan_r : IF 'REAL' IN TYPEOF(v1)
-      THEN
-        r := v1;
-        RETURN(ctmv(TAN(r)));
-      END_IF;
-      ef_form_c : IF ('REAL' IN TYPEOF(v1)) AND ('REAL' IN TYPEOF(v2))
-      THEN
-        r := v1;
-        s := v2;
-        RETURN(makec(r, s));
-      END_IF;
-      ef_rpart_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        RETURN(ctmv(v1\complex_number_literal.real_part));
-      END_IF;
-      ef_ipart_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        RETURN(ctmv(v1\complex_number_literal.imag_part));
-      END_IF;
-      ef_negate_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(makec(-p, -q));
-      END_IF;
-      ef_reciprocal_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        t := p * p + q * q;
-        RETURN(makec(p / t, -q / t));
-      END_IF;
-      ef_add_c : BEGIN  
-                        p := 0.0;
-                        q := 0.0;
-                        REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                          IF cnlit IN TYPEOF(vlist[i])
-                          THEN
-                            parts(vlist[i], r, s);
-                            p := p + r;
-                            q := q + s;
-                            REMOVE(vlist, i);
-                          END_IF;
-                        END_REPEAT;
-                        IF SIZEOF(vlist) = 0
-                        THEN
-                          RETURN(makec(p, q));
-                        END_IF;
-                        IF p * p + q * q <> 0.0
-                        THEN
-                          INSERT(vlist, makec(p, q), 0);
-                        END_IF;
-                        IF SIZEOF(vlist) = 1
-                        THEN
-                          RETURN(vlist[1]);
-                        END_IF;
-      END;
-      ef_subtract_c : IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        parts(v2, r, s);
-        RETURN(makec(p - r, q - s));
-      END_IF;
-      ef_multiply_c : BEGIN  
-                             p := 1.0;
-                             q := 0.0;
-                             REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                               IF cnlit IN TYPEOF(vlist[i])
-                               THEN
-                                 parts(vlist[i], r, s);
-                                 p := p * r - q * s;
-                                 q := p * s + q * r;
-                                 REMOVE(vlist, i);
-                               END_IF;
-                             END_REPEAT;
-                             IF SIZEOF(vlist) = 0
-                             THEN
-                               RETURN(makec(p, q));
-                             END_IF;
-                             IF (p <> 1.0) OR (q <> 0.0)
-                             THEN
-                               INSERT(vlist, makec(p, q), 0);
-                             END_IF;
-                             IF SIZEOF(vlist) = 1
-                             THEN
-                               RETURN(vlist[1]);
-                             END_IF;
-      END;
-      ef_divide_c : IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        parts(v2, r, s);
-        t := r * r + s * s;
-        RETURN(makec((p * r + q * s) / t, (q * r - p * s) / t));
-      END_IF;
-      ef_exponentiate_c : IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        parts(v2, r, s);
-        t := 0.5 * LOG(p * p + q * q);
-        u := atan2(q, p);
-        p := r * t - s * u;
-        q := r * u + s * t;
-        r := EXP(p);
-        RETURN(makec(r * COS(q), r * SIN(q)));
-      END_IF;
-      ef_exponentiate_ci : IF (cnlit IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        k := v2;
-        r := 1.0;
-        s := 0.0;
-        REPEAT i := 1 TO ABS(k);
-          r := p * r - q * s;
-          s := p * s + q * r;
-        END_REPEAT;
-        IF k < 0
-        THEN
-          t := r * r + s * s;
-          r := r / t;
-          s := -s / t;
-        END_IF;
-        RETURN(makec(r, s));
-      END_IF;
-      ef_eq_c : IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        parts(v2, r, s);
-        RETURN(ctmv((p = r) AND (q = s)));
-      END_IF;
-      ef_ne_c : IF (cnlit IN TYPEOF(v1)) AND (cnlit IN TYPEOF(v2))
-      THEN
-        parts(v1, p, q);
-        parts(v2, r, s);
-        RETURN(ctmv((p <> r) OR (q <> s)));
-      END_IF;
-      ef_conjugate_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(makec(p, -q));
-      END_IF;
-      ef_abs_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(ctmv(SQRT(p * p + q * q)));
-      END_IF;
-      ef_arg_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(ctmv(atan2(q, p)));
-      END_IF;
-      ef_cos_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        t := 0.5 * EXP(-q);
-        u := 0.5 * EXP(q);
-        RETURN(makec((t + u) * COS(p), (t - u) * SIN(p)));
-      END_IF;
-      ef_exp_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(makec(EXP(p) * COS(q), EXP(p) * SIN(q)));
-      END_IF;
-      ef_ln_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        RETURN(makec(0.5 * LOG(p * p + q * q), atan2(q, p)));
-      END_IF;
-      ef_sin_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        t := 0.5 * EXP(-q);
-        u := 0.5 * EXP(q);
-        RETURN(makec((t + u) * SIN(p), (u - t) * COS(p)));
-      END_IF;
-      ef_sqrt_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        t := SQRT(SQRT(p * p + q * q));
-        u := 0.5 * atan2(q, p);
-        RETURN(makec(t * COS(u), t * SIN(u)));
-      END_IF;
-      ef_tan_c : IF cnlit IN TYPEOF(v1)
-      THEN
-        parts(v1, p, q);
-        t := EXP(2.0 * q) + EXP(-2.0 * q) + 2.0 * COS(2.0 * p);
-        RETURN(makec(2.0 * SIN(2.0 * p) / t, (EXP(-2.0 * q) - EXP(2.0 * q)) / t));
-      END_IF;
-      ef_subscript_s : IF ('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        k := v2;
-        RETURN(ctmv(str[k]));
-      END_IF;
-      ef_eq_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str = st2));
-      END_IF;
-      ef_ne_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str <> st2));
-      END_IF;
-      ef_gt_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str > st2));
-      END_IF;
-      ef_lt_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str < st2));
-      END_IF;
-      ef_ge_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str >= st2));
-      END_IF;
-      ef_le_s : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        str := v1;
-        st2 := v2;
-        RETURN(ctmv(str <= st2));
-      END_IF;
-      ef_subsequence_s : IF ('STRING' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) AND ('INTEGER' IN TYPEOF(v3))
-      THEN
-        str := v1;
-        j := v2;
-        k := v3;
-        RETURN(ctmv(str[j:k]));
-      END_IF;
-      ef_concat_s : BEGIN  
-                           str := '';
-                           REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                             IF 'STRING' IN TYPEOF(vlist[i])
-                             THEN
-                               st2 := vlist[i];
-                               str := str + st2;
-                               REMOVE(vlist, i);
-                             ELSE
-                               IF str <> ''
-                               THEN
-                                 INSERT(vlist, ctmv(str), i);
-                                 str := '';
-                               END_IF;
-                             END_IF;
-                           END_REPEAT;
-                           IF SIZEOF(vlist) = 0
-                           THEN
-                             RETURN(ctmv(str));
-                           END_IF;
-                           IF str <> ''
-                           THEN
-                             INSERT(vlist, ctmv(str), 0);
-                           END_IF;
-                           IF SIZEOF(vlist) = 1
-                           THEN
-                             RETURN(vlist[1]);
-                           END_IF;
-      END;
-      ef_size_s : IF 'STRING' IN TYPEOF(v1)
-      THEN
-        str := v1;
-        RETURN(ctmv(LENGTH(str)));
-      END_IF;
-      ef_format : IF ('NUMBER' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        RETURN(ctmv(FORMAT(v1, v2)));
-      END_IF;
-      ef_value : IF 'STRING' IN TYPEOF(v1)
-      THEN
-        str := v1;
-        RETURN(ctmv(VALUE(str)));
-      END_IF;
-      ef_like : IF ('STRING' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-      THEN
-        RETURN(ctmv(v1 LIKE v2));
-      END_IF;
-      ef_subscript_b : IF ('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        k := v2;
-        RETURN(ctmv(bin[k]));
-      END_IF;
-      ef_eq_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin = bi2));
-      END_IF;
-      ef_ne_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin <> bi2));
-      END_IF;
-      ef_gt_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin > bi2));
-      END_IF;
-      ef_lt_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin < bi2));
-      END_IF;
-      ef_ge_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin >= bi2));
-      END_IF;
-      ef_le_b : IF ('BINARY' IN TYPEOF(v1)) AND ('BINARY' IN TYPEOF(v2))
-      THEN
-        bin := v1;
-        bi2 := v2;
-        RETURN(ctmv(bin <= bi2));
-      END_IF;
-      ef_subsequence_b : IF ('BINARY' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2)) AND ('INTEGER' IN TYPEOF(v3))
-      THEN
-        bin := v1;
-        j := v2;
-        k := v3;
-        RETURN(ctmv(bin[j:k]));
-      END_IF;
-      ef_concat_b : BEGIN  
-                           boo := false;
-                           REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                             IF 'BINARY' IN TYPEOF(vlist[i])
-                             THEN
-                               IF boo
-                               THEN
-                                 bi2 := vlist[i];
-                                 bin := bin + bi2;
-                               ELSE
-                                 bin := vlist[i];
-                                 boo := true;
-                               END_IF;
-                               REMOVE(vlist, i);
-                             ELSE
-                               IF boo
-                               THEN
-                                 INSERT(vlist, ctmv(bin), i);
-                                 boo := false;
-                               END_IF;
-                             END_IF;
-                           END_REPEAT;
-                           IF SIZEOF(vlist) = 0
-                           THEN
-                             RETURN(ctmv(bin));
-                           END_IF;
-                           IF boo
-                           THEN
-                             INSERT(vlist, ctmv(bin), 0);
-                           END_IF;
-                           IF SIZEOF(vlist) = 1
-                           THEN
-                             RETURN(vlist[1]);
-                           END_IF;
-      END;
-      ef_size_b : IF 'BINARY' IN TYPEOF(v1)
-      THEN
-        bin := v1;
-        RETURN(ctmv(BLENGTH(bin)));
-      END_IF;
-      ef_subscript_t : IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        tpl := v1;
-        k := v2;
-        RETURN(ctmv(tpl[k]));
-      END_IF;
-      ef_eq_t : IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2))
-      THEN
-        lgc := equal_maths_values(v1, v2);
-        IF lgc <> unknown
-        THEN
-          RETURN(ctmv(lgc));
-        END_IF;
-      END_IF;
-      ef_ne_t : IF ('LIST' IN TYPEOF(v1)) AND ('LIST' IN TYPEOF(v2))
-      THEN
-        lgc := equal_maths_values(v1, v2);
-        IF lgc <> unknown
-        THEN
-          RETURN(ctmv(NOT lgc));
-        END_IF;
-      END_IF;
-      ef_concat_t : BEGIN  
-                           tpl := [];
-                           REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                             IF 'STRING' IN TYPEOF(vlist[i])
-                             THEN
-                               tp2 := vlist[i];
-                               tpl := tpl + tp2;
-                               REMOVE(vlist, i);
-                             ELSE
-                               IF SIZEOF(tpl) <> 0
-                               THEN
-                                 INSERT(vlist, ctmv(tpl), i);
-                                 tpl := [];
-                               END_IF;
-                             END_IF;
-                           END_REPEAT;
-                           IF SIZEOF(vlist) = 0
-                           THEN
-                             RETURN(ctmv(tpl));
-                           END_IF;
-                           IF SIZEOF(tpl) <> 0
-                           THEN
-                             INSERT(vlist, ctmv(tpl), 0);
-                           END_IF;
-                           IF SIZEOF(vlist) = 1
-                           THEN
-                             RETURN(vlist[1]);
-                           END_IF;
-      END;
-      ef_size_t : IF 'LIST' IN TYPEOF(v1)
-      THEN
-        tpl := v1;
-        RETURN(ctmv(SIZEOF(tpl)));
-      END_IF;
-      ef_entuple : RETURN(ctmv(vlist));
-      ef_detuple : IF 'LIST' IN TYPEOF(v1)
-      THEN
-        tpl := v1;
-        RETURN(ctmv(tpl[1]));
-      END_IF;
-      ef_insert : IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v3))
-      THEN
-        tpl := v1;
-        k := v3;
-        INSERT(tpl, v2, k);
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_remove : IF ('LIST' IN TYPEOF(v1)) AND ('INTEGER' IN TYPEOF(v2))
-      THEN
-        tpl := v1;
-        k := v2;
-        REMOVE(tpl, k);
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_sum_it : IF good_t(v1, 'INTEGER')
-      THEN
-        tpl := v1;
-        j := 0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          j := j + tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(j));
-      END_IF;
-      ef_product_it : IF good_t(v1, 'INTEGER')
-      THEN
-        tpl := v1;
-        j := 1;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          j := j * tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(j));
-      END_IF;
-      ef_add_it : BEGIN  
-                         boo := false;
-                         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                           IF good_t(vlist[i], 'INTEGER')
-                           THEN
-                             IF NOT boo
-                             THEN
-                               tpl := vlist[i];
-                               boo := true;
-                             ELSE
-                               tp2 := vlist[i];
-                               IF SIZEOF(tpl) <> SIZEOF(tp2)
-                               THEN
-                                 RETURN(?);
-                               END_IF;
-                               REPEAT l := 1 TO SIZEOF(tpl);
-                                 tpl[j] := tpl[j] + tp2[j];
-                               END_REPEAT;
-                             END_IF;
-                             REMOVE(vlist, i);
-                           END_IF;
-                         END_REPEAT;
-                         IF SIZEOF(vlist) = 0
-                         THEN
-                           RETURN(ctmv(tpl));
-                         END_IF;
-                         IF boo
-                         THEN
-                           INSERT(vlist, ctmv(tpl), 0);
-                         END_IF;
-                         IF SIZEOF(vlist) = 1
-                         THEN
-                           RETURN(vlist[1]);
-                         END_IF;
-      END;
-      ef_subtract_it : IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER')
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          tpl[i] := tpl[i] - tp2[i];
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_scalar_mult_it : IF ('INTEGER' IN TYPEOF(v1)) AND good_t(v2, 'INTEGER')
-      THEN
-        j := v1;
-        tpl := v2;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          tpl[i] := j * tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_dot_prod_it : IF good_t(v1, 'INTEGER') AND good_t(v2, 'INTEGER')
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        j := 0;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          j := j + tpl[i] * tp2[i];
-        END_REPEAT;
-        RETURN(ctmv(j));
-      END_IF;
-      ef_sum_rt : IF good_t(v1, 'REAL')
-      THEN
-        tpl := v1;
-        r := 0.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          r := r + tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(r));
-      END_IF;
-      ef_product_rt : IF good_t(v1, 'REAL')
-      THEN
-        tpl := v1;
-        r := 1.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          r := r * tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(r));
-      END_IF;
-      ef_add_rt : BEGIN  
-                         boo := false;
-                         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                           IF good_t(vlist[i], 'REAL')
-                           THEN
-                             IF NOT boo
-                             THEN
-                               tpl := vlist[i];
-                               boo := true;
-                             ELSE
-                               tp2 := vlist[i];
-                               IF SIZEOF(tpl) <> SIZEOF(tp2)
-                               THEN
-                                 RETURN(?);
-                               END_IF;
-                               REPEAT l := 1 TO SIZEOF(tpl);
-                                 tpl[j] := tpl[j] + tp2[j];
-                               END_REPEAT;
-                             END_IF;
-                             REMOVE(vlist, i);
-                           END_IF;
-                         END_REPEAT;
-                         IF SIZEOF(vlist) = 0
-                         THEN
-                           RETURN(ctmv(tpl));
-                         END_IF;
-                         IF boo
-                         THEN
-                           INSERT(vlist, ctmv(tpl), 0);
-                         END_IF;
-                         IF SIZEOF(vlist) = 1
-                         THEN
-                           RETURN(vlist[1]);
-                         END_IF;
-      END;
-      ef_subtract_rt : IF good_t(v1, 'REAL') AND good_t(v2, 'REAL')
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          tpl[i] := tpl[i] - tp2[i];
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_scalar_mult_rt : IF ('REAL' IN TYPEOF(v1)) AND good_t(v2, 'REAL')
-      THEN
-        r := v1;
-        tpl := v2;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          tpl[i] := r * tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_dot_prod_rt : IF good_t(v1, 'REAL') AND good_t(v2, 'REAL')
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        r := 0;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          r := r + tpl[i] * tp2[i];
-        END_REPEAT;
-        RETURN(ctmv(r));
-      END_IF;
-      ef_norm_rt : IF good_t(v1, 'REAL')
-      THEN
-        tpl := v1;
-        r := 0.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          r := r + tpl[i] * tpl[i];
-        END_REPEAT;
-        RETURN(ctmv(SQRT(r)));
-      END_IF;
-      ef_sum_ct : IF good_t(v1, cnlit)
-      THEN
-        tpl := v1;
-        p := 0.0;
-        q := 0.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], r, s);
-          p := p + r;
-          q := q + s;
-        END_REPEAT;
-        RETURN(makec(p, q));
-      END_IF;
-      ef_product_ct : IF good_t(v1, cnlit)
-      THEN
-        tpl := v1;
-        p := 1.0;
-        q := 0.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], r, s);
-          p := p * r - q * s;
-          q := p * s + q * r;
-        END_REPEAT;
-        RETURN(makec(p, q));
-      END_IF;
-      ef_add_ct : BEGIN  
-                         boo := false;
-                         REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-                           IF good_t(vlist[i], cnlit)
-                           THEN
-                             IF NOT boo
-                             THEN
-                               tpl := vlist[i];
-                               boo := true;
-                             ELSE
-                               tp2 := vlist[i];
-                               IF SIZEOF(tpl) <> SIZEOF(tp2)
-                               THEN
-                                 RETURN(?);
-                               END_IF;
-                               REPEAT l := 1 TO SIZEOF(tpl);
-                                 parts(tpl[j], p, q);
-                                 parts(tp2[j], r, s);
-                                 tpl[j] := makec(p + r, q + s);
-                               END_REPEAT;
-                             END_IF;
-                             REMOVE(vlist, i);
-                           END_IF;
-                         END_REPEAT;
-                         IF SIZEOF(vlist) = 0
-                         THEN
-                           RETURN(ctmv(tpl));
-                         END_IF;
-                         IF boo
-                         THEN
-                           INSERT(vlist, ctmv(tpl), 0);
-                         END_IF;
-                         IF SIZEOF(vlist) = 1
-                         THEN
-                           RETURN(vlist[1]);
-                         END_IF;
-      END;
-      ef_subtract_ct : IF good_t(v1, cnlit) AND good_t(v2, cnlit)
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], p, q);
-          parts(tp2[i], r, s);
-          tpl[i] := makec(p - r, q - s);
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_scalar_mult_ct : IF (cnlit IN TYPEOF(v1)) AND good_t(v2, cnlit)
-      THEN
-        parts(v1, p, q);
-        tpl := v2;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], r, s);
-          tpl[i] := makec(p * r - q * s, p * s + q * r);
-        END_REPEAT;
-        RETURN(ctmv(tpl));
-      END_IF;
-      ef_dot_prod_ct : IF good_t(v1, cnlit) AND good_t(v2, cnlit)
-      THEN
-        tpl := v1;
-        tp2 := v2;
-        t := 0.0;
-        u := 0.0;
-        IF SIZEOF(tpl) <> SIZEOF(tp2)
-        THEN
-          RETURN(?);
-        END_IF;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], p, q);
-          parts(tp2[i], r, s);
-          t := t + p * r + q * s;
-          u := u + q * r - p * s;
-        END_REPEAT;
-        RETURN(makec(t, u));
-      END_IF;
-      ef_norm_ct : IF good_t(v1, cnlit)
-      THEN
-        tpl := v1;
-        r := 0.0;
-        REPEAT i := 1 TO SIZEOF(tpl);
-          parts(tpl[i], p, q);
-          r := r + p * p + q * q;
-        END_REPEAT;
-        RETURN(ctmv(SQRT(r)));
-      END_IF;
-      ef_if, ef_if_i, ef_if_r, ef_if_c, ef_if_s, ef_if_b, ef_if_t : IF 'LOGICAL' IN TYPEOF(v1)
-      THEN
-        lgc := v1;
-        IF lgc
-        THEN
-          RETURN(v2);
-        ELSE
-          RETURN(v3);
-        END_IF;
-      END_IF;
-      ef_ensemble : RETURN(make_finite_space(mem + vlist));
-      ef_member_of : IF (schema_prefix + 'MATHS_SPACE') IN TYPEOF(v2)
-      THEN
-        lgc := member_of(v1, v2);
-        IF lgc <> unknown
-        THEN
-          RETURN(ctmv(lgc));
-        END_IF;
-      END_IF;
-    END_CASE;
-    RETURN(make_function_application(expr.func, vlist));
-  END_IF;
-  IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN types
-  THEN
-    gexpr := substitute(expr.func\abstracted_expression_function.expr, expr.func\quantifier_expression.variables,
-                        vlist);
-    RETURN(simplify_generic_expression(gexpr));
-  END_IF;
-  IF 'FINITE_FUNCTION' IN types
-  THEN
-    pairs := expr.func\finite_function.pairs;
-    REPEAT i := 1 TO SIZEOF(pairs);
-      IF equal_maths_values(vlist[1], pairs[i][1])
-      THEN
-        RETURN(simplify_maths_value(pairs[i][2]));
-      END_IF;
-    END_REPEAT;
-    RETURN(make_function_application(expr.func, vlist));
-  END_IF;
-  RETURN(expr);
-END_FUNCTION;
-
-FUNCTION simplify_generic_expression(expr : generic_expression) : maths_value;
-FUNCTION restore_unary(expr : unary_generic_expression;
-                       opnd : generic_expression) : generic_expression;
-  expr.operand := opnd;
-  RETURN(expr);
-END_FUNCTION;
-FUNCTION restore_binary(expr : binary_generic_expression;
-                        opd1 : generic_expression;
-                        opd2 : generic_expression) : generic_expression;
-  expr.operands[1] := opd1;
-  expr.operands[2] := opd2;
-  RETURN(expr);
-END_FUNCTION;
-FUNCTION restore_mulary(expr : multiple_arity_generic_expression;
-                        ops : LIST OF generic_expression) : generic_expression;
-  expr.operands := ops;
-  RETURN(expr);
-END_FUNCTION;
-FUNCTION make_number_literal(nmb : NUMBER) : generic_literal;
-  IF 'INTEGER' IN TYPEOF(nmb)
-  THEN
-    RETURN(make_int_literal(nmb));
-  END_IF;
-  RETURN(make_real_literal(nmb));
-END_FUNCTION;
-LOCAL
-  types  : SET OF STRING                      := stripped_typeof(expr);
-  v1     : maths_value;
-  v2     : maths_value;
-  vlist  : LIST OF maths_value                := [];
-  op1    : generic_expression;
-  op2    : generic_expression;
-  oplist : LIST OF generic_expression         := [];
-  opnds  : LIST [2 : ?] OF generic_expression;
-  n      : INTEGER;
-  m      : INTEGER;
-  finfun : maths_function_select;
-  boo    : BOOLEAN;
-  str    : STRING;
-  nmb    : NUMBER;
-END_LOCAL;
-  IF 'INT_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\int_literal.the_value));
-  END_IF;
-  IF 'REAL_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\real_literal.the_value));
-  END_IF;
-  IF 'BOOLEAN_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\boolean_literal.the_value));
-  END_IF;
-  IF 'STRING_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\string_literal.the_value));
-  END_IF;
-  IF 'COMPLEX_NUMBER_LITERAL' IN types
-  THEN
-    RETURN(expr);
-  END_IF;
-  IF 'LOGICAL_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\logical_literal.lit_value));
-  END_IF;
-  IF 'BINARY_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\binary_literal.lit_value));
-  END_IF;
-  IF 'MATHS_ENUM_LITERAL' IN types
-  THEN
-    RETURN(expr\maths_enum_literal.lit_value);
-  END_IF;
-  IF 'REAL_TUPLE_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\real_tuple_literal.lit_value));
-  END_IF;
-  IF 'INTEGER_TUPLE_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\integer_tuple_literal.lit_value));
-  END_IF;
-  IF 'ATOM_BASED_LITERAL' IN types
-  THEN
-    RETURN(expr\atom_based_literal.lit_value);
-  END_IF;
-  IF 'MATHS_TUPLE_LITERAL' IN types
-  THEN
-    RETURN(convert_to_maths_value(expr\maths_tuple_literal.lit_value));
-  END_IF;
-  IF 'MATHS_SPACE' IN types
-  THEN
-    RETURN(simplify_maths_space(expr));
-  END_IF;
-  IF 'FUNCTION_APPLICATION' IN types
-  THEN
-    RETURN(simplify_function_application(expr));
-  END_IF;
-  IF 'UNARY_GENERIC_EXPRESSION' IN types
-  THEN
-    v1 := simplify_generic_expression(expr\unary_generic_expression.operand);
-    op1 := convert_to_operand(v1);
-  END_IF;
-  IF 'BINARY_GENERIC_EXPRESSION' IN types
-  THEN
-    v1 := simplify_generic_expression(expr\binary_generic_expression.operands[1]);
-    op1 := convert_to_operand(v1);
-    v2 := simplify_generic_expression(expr\binary_generic_expression.operands[2]);
-    op2 := convert_to_operand(v2);
-  END_IF;
-  IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types
-  THEN
-    opnds := expr\multiple_arity_generic_expression.operands;
-    REPEAT i := 1 TO SIZEOF(opnds);
-      v1 := simplify_generic_expression(opnds[i]);
-      INSERT(vlist, v1, i - 1);
-      INSERT(oplist, convert_to_operand(v1), i - 1);
-    END_REPEAT;
-  END_IF;
-  IF 'PARALLEL_COMPOSED_FUNCTION' IN types
-  THEN
-    v1 := vlist[1];
-    n := SIZEOF(vlist);
-    finfun := vlist[n];
-    REMOVE(vlist, n);
-    REMOVE(vlist, 1);
-    RETURN(make_parallel_composed_function(v1, vlist, finfun));
-  END_IF;
-  IF ('ABS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(ABS(v1)));
-  END_IF;
-  IF ('ACOS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(ACOS(v1)));
-  END_IF;
-  IF 'AND_EXPRESSION' IN types
-  THEN
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'BOOLEAN' IN TYPEOF(vlist[i])
-      THEN
-        boo := vlist[i];
-        IF NOT boo
-        THEN
-          RETURN(convert_to_maths_value(false));
-        END_IF;
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(true));
-    END_IF;
-    IF SIZEOF(oplist) = 1
-    THEN
-      RETURN(oplist[1]);
-    END_IF;
-  END_IF;
-  IF ('ASIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(ASIN(v1)));
-  END_IF;
-  IF ('ATAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(ATAN(v1, v2)));
-  END_IF;
-  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
-    IF 'COMPARISON_EQUAL' IN types
-    THEN
-      boo := bool(v1 = v2);
-    ELSE
-      IF 'COMPARISON_GREATER' IN types
-      THEN
-        boo := bool(v1 > v2);
-      ELSE
-        IF 'COMPARISON_GREATER_EQUAL' IN types
-        THEN
-          boo := bool(v1 >= v2);
-        ELSE
-          IF 'COMPARISON_LESS' IN types
-          THEN
-            boo := bool(v1 < v2);
-          ELSE
-            IF 'COMPARISON_LESS_EQUAL' IN types
-            THEN
-              boo := bool(v1 <= v2);
-            ELSE
-              IF 'COMPARISON_NOT_EQUAL' IN types
-              THEN
-                boo := bool(v1 <> v2);
-              ELSE
-                IF 'LIKE_EXPRESSION' IN types
-                THEN
-                  boo := bool(v1 LIKE v2);
-                ELSE
-                  RETURN(?);
-                END_IF;
-              END_IF;
-            END_IF;
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-    RETURN(convert_to_maths_value(boo));
-  END_IF;
-  IF 'CONCAT_EXPRESSION' IN types
-  THEN
-    str := '';
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'STRING' IN TYPEOF(vlist[i])
-      THEN
-        str := vlist[i] + str;
-        REMOVE(oplist, i);
-      ELSE
-        IF LENGTH(str) > 0
-        THEN
-          INSERT(oplist, make_string_literal(str), i);
-          str := '';
-        END_IF;
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(str));
-    END_IF;
-    IF LENGTH(str) > 0
-    THEN
-      INSERT(oplist, make_string_literal(str), 0);
-    END_IF;
-    IF SIZEOF(oplist) = 1
-    THEN
-      RETURN(oplist[1]);
-    END_IF;
-  END_IF;
-  IF ('COS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(COS(v1)));
-  END_IF;
-  IF ('DIV_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 DIV v2));
-  END_IF;
-  IF 'EQUALS_EXPRESSION' IN types
-  THEN
-    opnds := expr\binary_generic_expression.operands;
-    RETURN(convert_to_maths_value(opnds[1] :=: opnds[2]));
-  END_IF;
-  IF ('EXP_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(EXP(v1)));
-  END_IF;
-  IF ('FORMAT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('STRING' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(FORMAT(v1, v2)));
-  END_IF;
-  IF ('INDEX_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    str := v1;
-    n := v2;
-    RETURN(convert_to_maths_value(str[n]));
-  END_IF;
-  IF ('INT_VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(VALUE(v1)));
-  END_IF;
-  IF 'INTERVAL_EXPRESSION' IN types
-  THEN
-    str := '';
-    IF 'NUMBER' IN TYPEOF(vlist[1])
-    THEN
-      str := 'NUMBER';
-    END_IF;
-    IF 'STRING' IN TYPEOF(vlist[1])
-    THEN
-      str := 'STRING';
-    END_IF;
-    IF 'BOOLEAN' IN TYPEOF(vlist[1])
-    THEN
-      str := 'BOOLEAN';
-    END_IF;
-    IF (LENGTH(str) > 0) AND (str IN TYPEOF(vlist[2])) AND (str IN TYPEOF(vlist[3]))
-    THEN
-      RETURN(convert_to_maths_value({vlist[1] <= vlist[2] <= vlist[3]}));
-    END_IF;
-  END_IF;
-  IF ('LENGTH_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(LENGTH(v1)));
-  END_IF;
-  IF ('LOG_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(LOG(v1)));
-  END_IF;
-  IF ('LOG10_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(LOG10(v1)));
-  END_IF;
-  IF ('LOG2_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(LOG2(v1)));
-  END_IF;
-  IF 'MAXIMUM_EXPRESSION' IN types
-  THEN
-    boo := false;
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'NUMBER' IN TYPEOF(vlist[i])
-      THEN
-        IF boo
-        THEN
-          IF nmb < vlist[i]
-          THEN
-            nmb := vlist[i];
-          END_IF;
-        ELSE
-          nmb := vlist[i];
-          boo := true;
-        END_IF;
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(nmb));
-    END_IF;
-    IF boo
-    THEN
-      INSERT(oplist, make_number_literal(nmb), 0);
-    END_IF;
-  END_IF;
-  IF 'MINIMUM_EXPRESSION' IN types
-  THEN
-    boo := false;
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'NUMBER' IN TYPEOF(vlist[i])
-      THEN
-        IF boo
-        THEN
-          IF nmb > vlist[i]
-          THEN
-            nmb := vlist[i];
-          END_IF;
-        ELSE
-          nmb := vlist[i];
-          boo := true;
-        END_IF;
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(nmb));
-    END_IF;
-    IF boo
-    THEN
-      INSERT(oplist, make_number_literal(nmb), 0);
-    END_IF;
-  END_IF;
-  IF ('MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 - v2));
-  END_IF;
-  IF ('MOD_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 MOD v2));
-  END_IF;
-  IF 'MULT_EXPRESSION' IN types
-  THEN
-    nmb := 1;
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'NUMBER' IN TYPEOF(vlist[i])
-      THEN
-        nmb := nmb * vlist[i];
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(nmb));
-    END_IF;
-    IF nmb <> 1
-    THEN
-      INSERT(oplist, make_number_literal(nmb), 0);
-    END_IF;
-    IF SIZEOF(oplist) = 1
-    THEN
-      RETURN(oplist[1]);
-    END_IF;
-  END_IF;
-  IF ('NOT_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1))
-  THEN
-    boo := v1;
-    RETURN(convert_to_maths_value(NOT (boo)));
-  END_IF;
-  IF ('ODD_EXPRESSION' IN types) AND ('INTEGER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(ODD(v1)));
-  END_IF;
-  IF 'OR_EXPRESSION' IN types
-  THEN
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'BOOLEAN' IN TYPEOF(vlist[i])
-      THEN
-        boo := vlist[i];
-        IF boo
-        THEN
-          RETURN(convert_to_maths_value(true));
-        END_IF;
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(false));
-    END_IF;
-    IF SIZEOF(oplist) = 1
-    THEN
-      RETURN(oplist[1]);
-    END_IF;
-  END_IF;
-  IF 'PLUS_EXPRESSION' IN types
-  THEN
-    nmb := 0;
-    REPEAT i := SIZEOF(vlist) TO 1 BY -1;
-      IF 'NUMBER' IN TYPEOF(vlist[i])
-      THEN
-        nmb := nmb + vlist[i];
-        REMOVE(oplist, i);
-      END_IF;
-    END_REPEAT;
-    IF SIZEOF(oplist) = 0
-    THEN
-      RETURN(convert_to_maths_value(nmb));
-    END_IF;
-    IF nmb <> 0
-    THEN
-      INSERT(oplist, make_number_literal(nmb), 0);
-    END_IF;
-    IF SIZEOF(oplist) = 1
-    THEN
-      RETURN(oplist[1]);
-    END_IF;
-  END_IF;
-  IF ('POWER_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 ** v2));
-  END_IF;
-  IF ('SIN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(SIN(v1)));
-  END_IF;
-  IF ('SLASH_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1)) AND ('NUMBER' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 / v2));
-  END_IF;
-  IF ('SQUARE_ROOT_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(SQRT(v1)));
-  END_IF;
-  IF ('SUBSTRING_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(vlist[1])) AND ('NUMBER' IN TYPEOF(vlist[2])) AND
-     ('NUMBER' IN TYPEOF(vlist[3]))
-  THEN
-    str := vlist[1];
-    n := vlist[2];
-    m := vlist[3];
-    RETURN(convert_to_maths_value(str[n:m]));
-  END_IF;
-  IF ('TAN_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(TAN(v1)));
-  END_IF;
-  IF ('UNARY_MINUS_EXPRESSION' IN types) AND ('NUMBER' IN TYPEOF(v1))
-  THEN
-    nmb := v1;
-    RETURN(convert_to_maths_value(-nmb));
-  END_IF;
-  IF ('VALUE_EXPRESSION' IN types) AND ('STRING' IN TYPEOF(v1))
-  THEN
-    RETURN(convert_to_maths_value(VALUE(v1)));
-  END_IF;
-  IF ('XOR_EXPRESSION' IN types) AND ('BOOLEAN' IN TYPEOF(v1)) AND ('BOOLEAN' IN TYPEOF(v2))
-  THEN
-    RETURN(convert_to_maths_value(v1 XOR v2));
-  END_IF;
-  IF 'UNARY_GENERIC_EXPRESSION' IN types
-  THEN
-    RETURN(restore_unary(expr, op1));
-  END_IF;
-  IF 'BINARY_GENERIC_EXPRESSION' IN types
-  THEN
-    RETURN(restore_binary(expr, op1, op2));
-  END_IF;
-  IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types
-  THEN
-    RETURN(restore_mulary(expr, oplist));
-  END_IF;
-  RETURN(expr);
-END_FUNCTION;
-
-FUNCTION simplify_maths_space(spc : maths_space) : maths_space;
-LOCAL
-  stypes   : SET OF STRING       := stripped_typeof(spc);
-  sset     : SET OF maths_value;
-  zset     : SET OF maths_value  := [];
-  zval     : maths_value;
-  zspc     : maths_space;
-  zallint  : BOOLEAN             := true;
-  zint     : INTEGER;
-  zmin     : INTEGER;
-  zmax     : INTEGER;
-  factors  : LIST OF maths_space;
-  zfactors : LIST OF maths_space := [];
-  rspc     : maths_space;
-END_LOCAL;
-  IF 'FINITE_SPACE' IN stypes
-  THEN
-    sset := spc\finite_space.members;
-    REPEAT i := 1 TO SIZEOF(sset);
-      zval := simplify_maths_value(sset[i]);
-      zset := zset + [zval];
-      IF zallint AND ('INTEGER' IN TYPEOF(zval))
-      THEN
-        zint := zval;
-        IF i = 1
-        THEN
-          zmin := zint;
-          zmax := zint;
-        ELSE
-          IF zint < zmin
-          THEN
-            zmin := zint;
-          END_IF;
-          IF zint > zmax
-          THEN
-            zmax := zint;
-          END_IF;
-        END_IF;
-      ELSE
-        zallint := false;
-      END_IF;
-    END_REPEAT;
-    IF zallint AND (SIZEOF(zset) = zmax - zmin + 1)
-    THEN
-      RETURN(make_finite_integer_interval(zmin, zmax));
-    END_IF;
-    RETURN(make_finite_space(zset));
-  END_IF;
-  IF 'UNIFORM_PRODUCT_SPACE' IN stypes
-  THEN
-    zspc := simplify_maths_space(spc\uniform_product_space.base);
-    RETURN(make_uniform_product_space(zspc, spc\uniform_product_space.exponent));
-  END_IF;
-  IF 'LISTED_PRODUCT_SPACE' IN stypes
-  THEN
-    factors := spc\listed_product_space.factors;
-    REPEAT i := 1 TO SIZEOF(factors);
-      INSERT(zfactors, simplify_maths_space(factors[i]), i - 1);
-    END_REPEAT;
-    RETURN(make_listed_product_space(zfactors));
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN stypes
-  THEN
-    zspc := simplify_maths_space(spc\extended_tuple_space.base);
-    rspc := simplify_maths_space(spc\extended_tuple_space.extender);
-    RETURN(make_extended_tuple_space(zspc, rspc));
-  END_IF;
-  IF 'FUNCTION_SPACE' IN stypes
-  THEN
-    zspc := simplify_maths_space(spc\function_space.domain_argument);
-    rspc := simplify_maths_space(spc\function_space.range_argument);
-    RETURN(make_function_space(spc\function_space.domain_constraint, zspc, spc\function_space.range_constraint, rspc));
-  END_IF;
-  RETURN(spc);
-END_FUNCTION;
-
-FUNCTION simplify_maths_value(val : maths_value) : maths_value;
-LOCAL
-  vtypes : SET OF STRING       := stripped_typeof(val);
-  vlist  : LIST OF maths_value;
-  nlist  : LIST OF maths_value := [];
-END_LOCAL;
-  IF 'GENERIC_EXPRESSION' IN vtypes
-  THEN
-    RETURN(simplify_generic_expression(val));
-  END_IF;
-  IF 'LIST' IN vtypes
-  THEN
-    vlist := val;
-    REPEAT i := 1 TO SIZEOF(vlist);
-      INSERT(nlist, simplify_maths_value(vlist[i]), i - 1);
-    END_REPEAT;
-    RETURN(convert_to_maths_value(nlist));
-  END_IF;
-  RETURN(val);
-END_FUNCTION;
-
-FUNCTION singleton_member_of(spc : maths_space) : maths_value;
-LOCAL
-  types : SET OF STRING := stripped_typeof(spc);
-END_LOCAL;
-  IF 'FINITE_SPACE' IN types
-  THEN
-    IF SIZEOF(spc\finite_space.members) = 1
-    THEN
-      RETURN(spc\finite_space.members[1]);
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF 'FINITE_INTEGER_INTERVAL' IN types
-  THEN
-    IF spc\finite_integer_interval.size = 1
-    THEN
-      RETURN(spc\finite_integer_interval.min);
-    END_IF;
-    RETURN(?);
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION sort_link_associations(aprr : SET [1 : ?] OF pair_representation_relationship;
-                                one_not_two : BOOLEAN) : SET OF kinematic_link_representation;
-LOCAL
-  result : SET OF kinematic_link_representation := [];
-END_LOCAL;
-  IF one_not_two
-  THEN
-    REPEAT i := 1 TO HIINDEX(aprr);
-      result := result + aprr[i].rep_1;
-    END_REPEAT;
-  ELSE
-    REPEAT i := 1 TO HIINDEX(aprr);
-      result := result + aprr[i].rep_2;
-    END_REPEAT;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION space_dimension(tspace : tuple_space) : nonnegative_integer;
-LOCAL
-  types : SET OF STRING := TYPEOF(tspace);
-END_LOCAL;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN types
-  THEN
-    RETURN(tspace\uniform_product_space.exponent);
-  END_IF;
-  IF (schema_prefix + 'LISTED_PRODUCT_SPACE') IN types
-  THEN
-    RETURN(SIZEOF(tspace\listed_product_space.factors));
-  END_IF;
-  IF (schema_prefix + 'EXTENDED_TUPLE_SPACE') IN types
-  THEN
-    RETURN(space_dimension(tspace\extended_tuple_space.base));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION space_is_continuum(space : maths_space) : BOOLEAN;
-LOCAL
-  typenames : SET OF STRING       := TYPEOF(space);
-  factors   : LIST OF maths_space;
-END_LOCAL;
-  IF NOT EXISTS(space)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF subspace_of_es(space, es_reals) OR subspace_of_es(space, es_complex_numbers)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF (schema_prefix + 'UNIFORM_PRODUCT_SPACE') IN typenames
-  THEN
-    RETURN(space_is_continuum(space\uniform_product_space.base));
-  END_IF;
-  IF (schema_prefix + 'LISTED_PRODUCT_SPACE') IN typenames
-  THEN
-    factors := space\listed_product_space.factors;
-    IF SIZEOF(factors) = 0
-    THEN
-      RETURN(false);
-    END_IF;
-    REPEAT i := 1 TO SIZEOF(factors);
-      IF NOT space_is_continuum(factors[i])
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(true);
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION space_is_singleton(spc : maths_space) : BOOLEAN;
-LOCAL
-  types : SET OF STRING := stripped_typeof(spc);
-END_LOCAL;
-  IF 'FINITE_SPACE' IN types
-  THEN
-    RETURN(bool(SIZEOF(spc\finite_space.members) = 1));
-  END_IF;
-  IF 'FINITE_INTEGER_INTERVAL' IN types
-  THEN
-    RETURN(bool(spc\finite_integer_interval.size = 1));
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION stripped_typeof(arg : GENERIC : G) : SET OF STRING;
-LOCAL
-  types  : SET OF STRING := TYPEOF(arg);
-  stypes : SET OF STRING := [];
-  n      : INTEGER       := LENGTH(schema_prefix);
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(types);
-    IF ((LENGTH(types[i]) > n) AND (types[i][1:n] = schema_prefix))
-    THEN
-      stypes := stypes + [types[i][n + 1:LENGTH(types[i])]];
-    ELSE
-      stypes := stypes + [types[i]];
-    END_IF;
-  END_REPEAT;
-  RETURN(stypes);
-END_FUNCTION;
-
-FUNCTION sts_get_general_datum_reference(input : datum_reference_element) : general_datum_reference;
-LOCAL
-  general_datum_reference_bag : BAG OF general_datum_reference := (USEDIN(input,
-                                                                          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_DATUM_REFERENCE.BASE'));
-END_LOCAL;
-  IF SIZEOF(general_datum_reference_bag) = 1
-  THEN
-    RETURN(general_datum_reference_bag[1]);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION sts_get_product_definition_shape(input : geometric_tolerance_target) : product_definition_shape;
-  CASE true OF
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN
-     TYPEOF(input)) : RETURN(input\shape_aspect_relationship.relating_shape_aspect\shape_aspect.of_shape);
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN
-     TYPEOF(input)) : RETURN(input\dimensional_size.applies_to\shape_aspect.of_shape);
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(input)) : RETURN(input);
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-     TYPEOF(input)) : RETURN(input\shape_aspect.of_shape);
-    OTHERWISE: RETURN(?);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION subspace_of(space1 : maths_space;
-                     space2 : maths_space) : LOGICAL;
-LOCAL
-  spc1   : maths_space                  := simplify_maths_space(space1);
-  spc2   : maths_space                  := simplify_maths_space(space2);
-  types1 : SET OF STRING                := stripped_typeof(spc1);
-  types2 : SET OF STRING                := stripped_typeof(spc2);
-  lgcl   : LOGICAL;
-  cum    : LOGICAL;
-  es_val : elementary_space_enumerators;
-  bnd1   : REAL;
-  bnd2   : REAL;
-  n      : INTEGER;
-  sp1    : maths_space;
-  sp2    : maths_space;
-  prgn1  : polar_complex_number_region;
-  prgn2  : polar_complex_number_region;
-  aitv   : finite_real_interval;
-END_LOCAL;
-  IF NOT EXISTS(spc1) OR NOT EXISTS(spc2)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF spc2 = the_generics
-  THEN
-    RETURN(true);
-  END_IF;
-  IF 'ELEMENTARY_SPACE' IN types1
-  THEN
-    IF NOT ('ELEMENTARY_SPACE' IN types2)
-    THEN
-      RETURN(false);
-    END_IF;
-    es_val := spc2\elementary_space.space_id;
-    IF spc1\elementary_space.space_id = es_val
-    THEN
-      RETURN(true);
-    END_IF;
-    CASE spc1\elementary_space.space_id OF
-      es_numbers : RETURN(false);
-      es_complex_numbers : RETURN(es_val = es_numbers);
-      es_reals : RETURN(es_val = es_numbers);
-      es_integers : RETURN(es_val = es_numbers);
-      es_logicals : RETURN(false);
-      es_booleans : RETURN(es_val = es_logicals);
-      es_strings : RETURN(false);
-      es_binarys : RETURN(false);
-      es_maths_spaces : RETURN(false);
-      es_maths_functions : RETURN(false);
-      es_generics : RETURN(false);
-    END_CASE;
-    RETURN(unknown);
-  END_IF;
-  IF 'FINITE_INTEGER_INTERVAL' IN types1
-  THEN
-    cum := true;
-    REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max;
-      cum := cum AND member_of(i, spc2);
-      IF cum = false
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(cum);
-  END_IF;
-  IF 'INTEGER_INTERVAL_FROM_MIN' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_integers));
-    END_IF;
-    IF 'INTEGER_INTERVAL_FROM_MIN' IN types2
-    THEN
-      RETURN(spc1\integer_interval_from_min.min >= spc2\integer_interval_from_min.min);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'INTEGER_INTERVAL_TO_MAX' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_integers));
-    END_IF;
-    IF 'INTEGER_INTERVAL_TO_MAX' IN types2
-    THEN
-      RETURN(spc1\integer_interval_to_max.max <= spc2\integer_interval_to_max.max);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FINITE_REAL_INTERVAL' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_reals));
-    END_IF;
-    IF ('FINITE_REAL_INTERVAL' IN types2) OR ('REAL_INTERVAL_FROM_MIN' IN types2) OR ('REAL_INTERVAL_TO_MAX' IN types2)
-    THEN
-      IF min_exists(spc2)
-      THEN
-        bnd1 := spc1\finite_real_interval.min;
-        bnd2 := real_min(spc2);
-        IF (bnd1 < bnd2) OR ((bnd1 = bnd2) AND min_included(spc1) AND NOT min_included(spc2))
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-      IF max_exists(spc2)
-      THEN
-        bnd1 := spc1\finite_real_interval.max;
-        bnd2 := real_max(spc2);
-        IF (bnd1 > bnd2) OR ((bnd1 = bnd2) AND max_included(spc1) AND NOT max_included(spc2))
-        THEN
-          RETURN(false);
-        END_IF;
-      END_IF;
-      RETURN(true);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'REAL_INTERVAL_FROM_MIN' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_reals));
-    END_IF;
-    IF 'REAL_INTERVAL_FROM_MIN' IN types2
-    THEN
-      bnd1 := spc1\real_interval_from_min.min;
-      bnd2 := spc2\real_interval_from_min.min;
-      RETURN((bnd2 < bnd1) OR ((bnd2 = bnd1) AND (min_included(spc2) OR NOT min_included(spc1))));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'REAL_INTERVAL_TO_MAX' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_reals));
-    END_IF;
-    IF 'REAL_INTERVAL_TO_MAX' IN types2
-    THEN
-      bnd1 := spc1\real_interval_to_max.max;
-      bnd2 := spc2\real_interval_to_max.max;
-      RETURN((bnd2 > bnd1) OR ((bnd2 = bnd1) AND (max_included(spc2) OR NOT max_included(spc1))));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_complex_numbers));
-    END_IF;
-    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2
-    THEN
-      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));
-    END_IF;
-    IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2
-    THEN
-      RETURN(subspace_of(enclose_cregion_in_pregion(spc1, spc2\polar_complex_number_region.centre), spc2));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'POLAR_COMPLEX_NUMBER_REGION' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      es_val := spc2\elementary_space.space_id;
-      RETURN((es_val = es_numbers) OR (es_val = es_complex_numbers));
-    END_IF;
-    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2
-    THEN
-      RETURN(subspace_of(enclose_pregion_in_cregion(spc1), spc2));
-    END_IF;
-    IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2
-    THEN
-      prgn1 := spc1;
-      prgn2 := spc2;
-      IF prgn1.centre = prgn2.centre
-      THEN
-        IF prgn2.direction_constraint.max > PI
-        THEN
-          aitv := make_finite_real_interval(-PI, open, prgn2.direction_constraint.max - 2.0 * PI,
-                                            prgn2.direction_constraint.max_closure);
-          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)));
-        ELSE
-          RETURN(subspace_of(prgn1.distance_constraint, prgn2.distance_constraint) AND
-                 subspace_of(prgn1.direction_constraint, prgn2.direction_constraint));
-        END_IF;
-      END_IF;
-      RETURN(subspace_of(enclose_pregion_in_pregion(prgn1, prgn2.centre), prgn2));
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FINITE_SPACE' IN types1
-  THEN
-    cum := true;
-    REPEAT i := 1 TO SIZEOF(spc1\finite_space.members);
-      cum := cum AND member_of(spc1\finite_space.members[i], spc2);
-      IF cum = false
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-    RETURN(cum);
-  END_IF;
-  IF 'PRODUCT_SPACE' IN types1
-  THEN
-    IF 'PRODUCT_SPACE' IN types2
-    THEN
-      IF space_dimension(spc1) = space_dimension(spc2)
-      THEN
-        cum := true;
-        REPEAT i := 1 TO space_dimension(spc1);
-          cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        RETURN(cum);
-      END_IF;
-    END_IF;
-    IF 'EXTENDED_TUPLE_SPACE' IN types2
-    THEN
-      IF space_dimension(spc1) >= space_dimension(spc2)
-      THEN
-        cum := true;
-        REPEAT i := 1 TO space_dimension(spc1);
-          cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
-          IF cum = false
-          THEN
-            RETURN(false);
-          END_IF;
-        END_REPEAT;
-        RETURN(cum);
-      END_IF;
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'EXTENDED_TUPLE_SPACE' IN types1
-  THEN
-    IF 'EXTENDED_TUPLE_SPACE' IN types2
-    THEN
-      n := space_dimension(spc1);
-      IF n < space_dimension(spc2)
-      THEN
-        n := space_dimension(spc2);
-      END_IF;
-      cum := true;
-      REPEAT i := 1 TO n + 1;
-        cum := cum AND subspace_of(factor_space(spc1, i), factor_space(spc2, i));
-        IF cum = false
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-      RETURN(cum);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  IF 'FUNCTION_SPACE' IN types1
-  THEN
-    IF 'ELEMENTARY_SPACE' IN types2
-    THEN
-      RETURN(spc2\elementary_space.space_id = es_maths_functions);
-    END_IF;
-    IF 'FUNCTION_SPACE' IN types2
-    THEN
-      cum := true;
-      sp1 := spc1\function_space.domain_argument;
-      sp2 := spc2\function_space.domain_argument;
-      CASE spc1\function_space.domain_constraint OF
-        sc_equal : BEGIN  
-                          CASE spc2\function_space.domain_constraint OF
-                            sc_equal : cum := cum AND equal_maths_spaces(sp1, sp2);
-                            sc_subspace : cum := cum AND subspace_of(sp1, sp2);
-                            sc_member : cum := cum AND member_of(sp1, sp2);
-                          END_CASE;
-        END;
-        sc_subspace : BEGIN  
-                             CASE spc2\function_space.domain_constraint OF
-                               sc_equal : RETURN(false);
-                               sc_subspace : cum := cum AND subspace_of(sp1, sp2);
-                               sc_member : BEGIN  
-                                                  IF NOT member_of(sp1, sp2)
-                                                  THEN
-                                                    RETURN(false);
-                                                  END_IF;
-                                                  cum := unknown;
-                               END;
-                             END_CASE;
-        END;
-        sc_member : BEGIN  
-                           CASE spc2\function_space.domain_constraint OF
-                             sc_equal : cum := cum AND space_is_singleton(sp1) AND
-                                               equal_maths_spaces(singleton_member_of(sp1), sp2);
-                             sc_subspace : BEGIN  
-                                                  IF NOT member_of(sp2, sp1)
-                                                  THEN
-                                                    RETURN(false);
-                                                  END_IF;
-                                                  cum := unknown;
-                             END;
-                             sc_member : cum := cum AND (subspace_of(sp1, sp2));
-                           END_CASE;
-        END;
-      END_CASE;
-      IF cum = false
-      THEN
-        RETURN(false);
-      END_IF;
-      sp1 := spc1\function_space.range_argument;
-      sp2 := spc2\function_space.range_argument;
-      CASE spc1\function_space.range_constraint OF
-        sc_equal : BEGIN  
-                          CASE spc2\function_space.range_constraint OF
-                            sc_equal : cum := cum AND equal_maths_spaces(sp1, sp2);
-                            sc_subspace : cum := cum AND subspace_of(sp1, sp2);
-                            sc_member : cum := cum AND member_of(sp1, sp2);
-                          END_CASE;
-        END;
-        sc_subspace : BEGIN  
-                             CASE spc2\function_space.domain_constraint OF
-                               sc_equal : RETURN(false);
-                               sc_subspace : cum := cum AND subspace_of(sp1, sp2);
-                               sc_member : BEGIN  
-                                                  IF NOT member_of(sp1, sp2)
-                                                  THEN
-                                                    RETURN(false);
-                                                  END_IF;
-                                                  cum := unknown;
-                               END;
-                             END_CASE;
-        END;
-        sc_member : BEGIN  
-                           CASE spc2\function_space.domain_constraint OF
-                             sc_equal : cum := cum AND space_is_singleton(sp1) AND
-                                               equal_maths_spaces(singleton_member_of(sp1), sp2);
-                             sc_subspace : BEGIN  
-                                                  IF NOT member_of(sp2, sp1)
-                                                  THEN
-                                                    RETURN(false);
-                                                  END_IF;
-                                                  cum := unknown;
-                             END;
-                             sc_member : cum := cum AND subspace_of(sp1, sp2);
-                           END_CASE;
-        END;
-      END_CASE;
-      RETURN(cum);
-    END_IF;
-    RETURN(false);
-  END_IF;
-  RETURN(unknown);
-END_FUNCTION;
-
-FUNCTION subspace_of_es(spc : maths_space;
-                        es : elementary_space_enumerators) : LOGICAL;
-LOCAL
-  types : SET OF STRING := stripped_typeof(spc);
-END_LOCAL;
-  IF NOT EXISTS(spc) OR NOT EXISTS(es)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF 'ELEMENTARY_SPACE' IN types
-  THEN
-    RETURN(es_subspace_of_es(spc\elementary_space.space_id, es));
-  END_IF;
-  IF 'FINITE_SPACE' IN types
-  THEN
-    RETURN(all_members_of_es(spc\finite_space.members, es));
-  END_IF;
-  CASE es OF
-    es_numbers : 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));
-    es_complex_numbers : RETURN(('CARTESIAN_COMPLEX_NUMBER_REGION' IN types) OR
-                                ('POLAR_COMPLEX_NUMBER_REGION' IN types));
-    es_reals : RETURN(('FINITE_REAL_INTERVAL' IN types) OR ('REAL_INTERVAL_FROM_MIN' IN types) OR
-                      ('REAL_INTERVAL_TO_MAX' IN types));
-    es_integers : RETURN(('FINITE_INTEGER_INTERVAL' IN types) OR ('INTEGER_INTERVAL_FROM_MIN' IN types) OR
-                         ('INTEGER_INTERVAL_TO_MAX' IN types));
-    es_logicals : RETURN(false);
-    es_booleans : RETURN(false);
-    es_strings : RETURN(false);
-    es_binarys : RETURN(false);
-    es_maths_spaces : RETURN(false);
-    es_maths_functions : RETURN('FUNCTION_SPACE' IN types);
-    es_generics : RETURN(true);
-  END_CASE;
-  RETURN(unknown);
-END_FUNCTION;
-
-FUNCTION substitute(expr : generic_expression;
-                    vars : LIST [1 : ?] OF generic_variable;
-                    vals : LIST [1 : ?] OF maths_value) : generic_expression;
-LOCAL
-  types  : SET OF STRING                  := stripped_typeof(expr);
-  opnds  : LIST OF generic_expression;
-  op1    : generic_expression;
-  op2    : generic_expression;
-  qvars  : LIST OF generic_variable;
-  srcdom : maths_space_or_function;
-  prpfun : LIST [1 : ?] OF maths_function;
-  finfun : maths_function_select;
-END_LOCAL;
-  IF SIZEOF(vars) <> SIZEOF(vals)
-  THEN
-    RETURN(?);
-  END_IF;
-  IF 'GENERIC_LITERAL' IN types
-  THEN
-    RETURN(expr);
-  END_IF;
-  IF 'GENERIC_VARIABLE' IN types
-  THEN
-    REPEAT i := 1 TO SIZEOF(vars);
-      IF expr :=: vars[i]
-      THEN
-        RETURN(vals[i]);
-      END_IF;
-    END_REPEAT;
-    RETURN(expr);
-  END_IF;
-  IF 'QUANTIFIER_EXPRESSION' IN types
-  THEN
-    qvars := expr\quantifier_expression.variables;
-    REPEAT i := SIZEOF(vars) TO 1 BY -1;
-      IF vars[i] IN qvars
-      THEN
-        REMOVE(vars, i);
-        REMOVE(vals, i);
-      END_IF;
-    END_REPEAT;
-    opnds := expr\multiple_arity_generic_expression.operands;
-    REPEAT i := 1 TO SIZEOF(opnds);
-      IF NOT (opnds[i] IN qvars)
-      THEN
-        expr\multiple_arity_generic_expression.operands[i] := substitute(opnds[i], vars, vals);
-      END_IF;
-    END_REPEAT;
-    RETURN(expr);
-  END_IF;
-  IF 'UNARY_GENERIC_EXPRESSION' IN types
-  THEN
-    op1 := expr\unary_generic_expression.operand;
-    expr\unary_generic_expression.operand := substitute(op1, vars, vals);
-  END_IF;
-  IF 'BINARY_GENERIC_EXPRESSION' IN types
-  THEN
-    op1 := expr\binary_generic_expression.operands[1];
-    expr\binary_generic_expression.operands[1] := substitute(op1, vars, vals);
-    op2 := expr\binary_generic_expression.operands[2];
-    expr\binary_generic_expression.operands[2] := substitute(op2, vars, vals);
-  END_IF;
-  IF 'PARALLEL_COMPOSED_FUNCTION' IN types
-  THEN
-    srcdom := expr\parallel_composed_function.source_of_domain;
-    prpfun := expr\parallel_composed_function.prep_functions;
-    finfun := expr\parallel_composed_function.final_function;
-    srcdom := substitute(srcdom, vars, vals);
-    REPEAT i := 1 TO SIZEOF(prpfun);
-      prpfun[i] := substitute(prpfun[i], vars, vals);
-    END_REPEAT;
-    IF 'MATHS_FUNCTION' IN stripped_typeof(finfun)
-    THEN
-      finfun := substitute(finfun, vars, vals);
-    END_IF;
-    RETURN(make_parallel_composed_function(srcdom, prpfun, finfun));
-  END_IF;
-  IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types
-  THEN
-    opnds := expr\multiple_arity_generic_expression.operands;
-    REPEAT i := 1 TO SIZEOF(opnds);
-      expr\multiple_arity_generic_expression.operands[i] := substitute(opnds[i], vars, vals);
-    END_REPEAT;
-  END_IF;
-  RETURN(expr);
-END_FUNCTION;
-
-FUNCTION surface_condition_correlation(pd : property_definition;
-                                       rep : representation) : LOGICAL;
-  CASE pd.name OF
-    'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' : RETURN(pd.name =
-                                                                                                                           rep.name);
-    OTHERWISE: RETURN(unknown);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION surface_weights_positive(b : rational_b_spline_surface) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 0 TO b.u_upper;
-    REPEAT j := 0 TO b.v_upper;
-      IF (b.weights[i][j] <= 0.0)
-      THEN
-        result := false;
-        RETURN(result);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION topology_reversed(an_item : reversible_topology) : reversible_topology;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE' IN TYPEOF(an_item))
-  THEN
-    RETURN(edge_reversed(an_item));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH' IN TYPEOF(an_item))
-  THEN
-    RETURN(path_reversed(an_item));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND' IN TYPEOF(an_item))
-  THEN
-    RETURN(face_bound_reversed(an_item));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' IN TYPEOF(an_item))
-  THEN
-    RETURN(face_reversed(an_item));
-  END_IF;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL' IN TYPEOF(an_item))
-  THEN
-    RETURN(shell_reversed(an_item));
-  END_IF;
-  IF ('SET' IN TYPEOF(an_item))
-  THEN
-    RETURN(set_of_topology_reversed(an_item));
-  END_IF;
-  IF ('LIST' IN TYPEOF(an_item))
-  THEN
-    RETURN(list_of_topology_reversed(an_item));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION type_check_function(the_type : GENERIC;
-                             sub_names : SET OF STRING;
-                             criterion : INTEGER) : LOGICAL;
-  IF ((NOT EXISTS(the_type)) OR (SIZEOF(sub_names) = 0))
-  THEN
-    RETURN(unknown);
-  ELSE
-    CASE criterion OF
-      0 : RETURN(SIZEOF(sub_names * TYPEOF(the_type)) > 0);
-      1 : RETURN(SIZEOF(sub_names * TYPEOF(the_type)) = 0);
-      2 : RETURN(SIZEOF(sub_names * TYPEOF(the_type)) = 1);
-      3 : RETURN(SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
-      OTHERWISE: RETURN(unknown);
-    END_CASE;
-  END_IF;
-END_FUNCTION;
-
-FUNCTION unambiguously_specified_multi_level_reference_designator(links : LIST [1 : ?] OF next_assembly_usage_occurrence) : BOOLEAN;
-  REPEAT i := 1 TO SIZEOF(links) - 1;
-    CASE true OF
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(links[i]\product_definition_relationship.related_product_definition)) AND
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(links[i + 1]\product_definition_relationship.relating_product_definition)) : BEGIN  
-                                                                                                  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,
-                                                                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                                    RETURN(false);
-                                                                                                  END_IF;
-      END;
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN
-       TYPEOF(links[i]\product_definition_relationship.related_product_definition)) AND
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN
-       TYPEOF(links[i + 1]\product_definition_relationship.relating_product_definition)) : BEGIN  
-                                                                                                  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,
-                                                                                                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-                                                                                                    RETURN(false);
-                                                                                                  END_IF;
-      END;
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN
-       TYPEOF(links[i]\product_definition_relationship.relating_product_definition)) AND
-      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-       TYPEOF(links[i]\product_definition_relationship.related_product_definition)) : RETURN(false);
-      OTHERWISE: RETURN(false);
-    END_CASE;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION unique_in_product_definition(item : representative_shape_representation) : BOOLEAN;
-LOCAL
-  local_p_d : SET OF product_definition   := [];
-  local_s_r : SET OF shape_representation := [];
-  i         : INTEGER;
-  j         : INTEGER;
-END_LOCAL;
-  local_p_d := using_product_definition_of_shape_representation(item);
-  IF (SIZEOF(local_p_d) <> 1)
-  THEN
-    RETURN(false);
-  ELSE
-    REPEAT i := 1 TO HIINDEX(local_p_d);
-      local_s_r := find_shape_representation_of_product_definition(local_p_d[i]);
-      REPEAT j := 1 TO HIINDEX(local_s_r);
-        IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-             TYPEOF(local_s_r[j])) AND
-            (local_s_r[j] :<>: item))
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION unique_in_shape_aspect(item : representative_shape_representation) : BOOLEAN;
-LOCAL
-  local_s_a : SET OF shape_aspect         := [];
-  local_s_r : SET OF shape_representation := [];
-  i         : INTEGER;
-  j         : INTEGER;
-END_LOCAL;
-  local_s_a := using_shape_aspect_of_shape_representation(item);
-  IF (SIZEOF(local_s_a) <> 1)
-  THEN
-    RETURN(false);
-  ELSE
-    REPEAT i := 1 TO HIINDEX(local_s_a);
-      local_s_r := find_shape_representation_of_shape_aspect(local_s_a[i]);
-      REPEAT j := 1 TO HIINDEX(local_s_r);
-        IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN
-             TYPEOF(local_s_r[j])) AND
-            (local_s_r[j] :<>: item))
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_REPEAT;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION used_variables(arg : generic_expression) : SET OF generic_variable;
-LOCAL
-  result : SET OF generic_variable := [];
-END_LOCAL;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_VARIABLE' IN TYPEOF(arg)
-  THEN
-    RETURN([arg]);
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(used_variables(arg\unary_generic_expression.operand));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    RETURN(used_variables(arg\binary_generic_expression.operands[1]) +
-           used_variables(arg\binary_generic_expression.operands[2]));
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg)
-  THEN
-    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_generic_expression.operands);
-      result := result + used_variables(arg\multiple_arity_generic_expression.operands[i]);
-    END_REPEAT;
-    RETURN(result);
-  END_IF;
-  RETURN([]);
-END_FUNCTION;
-
-FUNCTION using_items(item : founded_item_select;
-                     checked_items : SET OF founded_item_select) : SET OF founded_item_select;
-LOCAL
-  new_check_items : SET OF founded_item_select;
-  result_items    : SET OF founded_item_select;
-  next_items      : SET OF founded_item_select;
-END_LOCAL;
-  result_items := [];
-  new_check_items := checked_items + item;
-  next_items := QUERY(z
-                      <* bag_to_set(USEDIN(item, ''))
-                      | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR
-                        ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z)));
-  IF SIZEOF(next_items) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(next_items);
-      IF NOT (next_items[i] IN new_check_items)
-      THEN
-        result_items := result_items + next_items[i] + using_items(next_items[i], new_check_items);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(result_items);
-END_FUNCTION;
-
-FUNCTION using_product_definition_of_shape_aspect(item : shape_aspect) : product_definition;
-  IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(item.of_shape.definition))
-  THEN
-    RETURN(item.of_shape.definition);
-  ELSE
-    RETURN(?);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION using_product_definition_of_shape_representation(item : shape_representation) : SET OF product_definition;
-LOCAL
-  local_s_d_r : SET OF shape_definition_representation := [];
-  local_p_d   : SET OF product_definition              := [];
-  i           : INTEGER;
-END_LOCAL;
-  local_s_d_r := QUERY(i1
-                       <* bag_to_set(USEDIN(item,
-                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
-                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                         TYPEOF(i1));
-  REPEAT i := 1 TO HIINDEX(local_s_d_r);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN
-        TYPEOF(local_s_d_r[i]\property_definition_representation.definition))
-    THEN
-      IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-          TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition))
-      THEN
-        local_p_d := local_p_d +
-                     local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
-      END_IF;
-    END_IF;
-  END_REPEAT;
-  RETURN(local_p_d);
-END_FUNCTION;
-
-FUNCTION using_representation_with_mapping(item : representation_item) : SET OF representation;
-LOCAL
-  results                  : SET OF representation      := [];
-  local_results            : SET OF representation      := [];
-  local_representation_map : SET OF representation_map  := [];
-  intermediate_items       : SET OF representation_item := [];
-  i                        : INTEGER;
-  j                        : INTEGER;
-END_LOCAL;
-  local_results := QUERY(z
-                         <* using_representations(item)
-                         | SIZEOF(USEDIN(z,
-                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')) >
-                           0);
-  IF (SIZEOF(local_results) = 0)
-  THEN
-    RETURN([]);
-  ELSE
-    REPEAT i := 1 TO HIINDEX(local_results);
-      local_representation_map := local_representation_map +
-                                  bag_to_set(USEDIN(local_results[i],
-                                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
-    END_REPEAT;
-    REPEAT i := 1 TO HIINDEX(local_representation_map);
-      intermediate_items := intermediate_items +
-                            bag_to_set(USEDIN(local_representation_map[i],
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'));
-    END_REPEAT;
-    REPEAT j := 1 TO HIINDEX(intermediate_items);
-      results := results + bag_to_set(using_representation_with_mapping(intermediate_items[j]));
-    END_REPEAT;
-  END_IF;
-  RETURN(results);
-END_FUNCTION;
-
-FUNCTION using_representations(item : founded_item_select) : SET OF representation;
-LOCAL
-  results            : SET OF representation;
-  result_bag         : BAG OF representation;
-  intermediate_items : SET OF founded_item_select;
-END_LOCAL;
-  results := [];
-  result_bag := USEDIN(item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS');
-  IF SIZEOF(result_bag) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(result_bag);
-      results := results + result_bag[i];
-    END_REPEAT;
-  END_IF;
-  intermediate_items := using_items(item, []);
-  IF SIZEOF(intermediate_items) > 0
-  THEN
-    REPEAT i := 1 TO HIINDEX(intermediate_items);
-      result_bag := USEDIN(intermediate_items[i],
-                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS');
-      IF SIZEOF(result_bag) > 0
-      THEN
-        REPEAT j := 1 TO HIINDEX(result_bag);
-          results := results + result_bag[j];
-        END_REPEAT;
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  RETURN(results);
-END_FUNCTION;
-
-FUNCTION using_shape_aspect_of_shape_representation(item : shape_representation) : SET OF shape_aspect;
-LOCAL
-  local_s_d_r  : SET OF shape_definition_representation := [];
-  local_s_d_r2 : BAG OF shape_definition_representation := [];
-  local_s_a    : SET OF shape_aspect                    := [];
-  i            : INTEGER;
-END_LOCAL;
-  local_s_d_r2 := local_s_d_r2 +
-                  QUERY(pdr
-                        <* USEDIN(item,
-                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                        | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                          TYPEOF(pdr));
-  local_s_d_r := bag_to_set(local_s_d_r2);
-  REPEAT i := 1 TO HIINDEX(local_s_d_r);
-    IF ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN
-        TYPEOF(local_s_d_r[i]\property_definition_representation.definition\property_definition.definition))
-    THEN
-      local_s_a := local_s_a +
-                   local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
-    END_IF;
-  END_REPEAT;
-  RETURN(local_s_a);
-END_FUNCTION;
-
-FUNCTION valid_basis_curve_in_2d_wireframe(crv : curve) : BOOLEAN;
--- check for valid basic curve types
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'] *
-            TYPEOF(crv)) =
-     1
-  THEN
-    RETURN(true);
-  ELSE
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE') IN TYPEOF(crv))
-    THEN
-      IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARABOLA',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA'] *
-                TYPEOF(crv\trimmed_curve.basis_curve)) =
-         1
-      THEN
-        RETURN(true);
-      ELSE
-        RETURN(valid_basis_curve_in_2d_wireframe(crv\trimmed_curve.basis_curve));
-      END_IF;
-    ELSE
-      IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D') IN TYPEOF(crv))
-      THEN
-        RETURN(valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d.basis_curve));
-      ELSE
-        IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA') IN TYPEOF(crv))
-        THEN
-          RETURN(valid_basis_curve_in_2d_wireframe(crv\curve_replica.parent_curve));
-        ELSE
-          IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE') IN TYPEOF(crv))
-          THEN
-            RETURN(SIZEOF(QUERY(ccs
-                                <* crv\composite_curve.segments
-                                | NOT (valid_basis_curve_in_2d_wireframe(ccs.parent_curve)))) =
-                   0);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION valid_calendar_date(date : calendar_date) : LOGICAL;
-  CASE date.month_component OF
-    1 : RETURN({1 <= date.day_component <= 31});
-    2 : BEGIN  
-               IF (leap_year(date.year_component))
-               THEN
-                 RETURN({1 <= date.day_component <= 29});
-               ELSE
-                 RETURN({1 <= date.day_component <= 28});
-               END_IF;
-    END;
-    3 : RETURN({1 <= date.day_component <= 31});
-    4 : RETURN({1 <= date.day_component <= 30});
-    5 : RETURN({1 <= date.day_component <= 31});
-    6 : RETURN({1 <= date.day_component <= 30});
-    7 : RETURN({1 <= date.day_component <= 31});
-    8 : RETURN({1 <= date.day_component <= 31});
-    9 : RETURN({1 <= date.day_component <= 30});
-    10 : RETURN({1 <= date.day_component <= 31});
-    11 : RETURN({1 <= date.day_component <= 30});
-    12 : RETURN({1 <= date.day_component <= 31});
-  END_CASE;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION valid_csg_2d_primitives(input : csg_solid_2d) : BOOLEAN;
-  CASE true OF
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN
-     TYPEOF(input\csg_solid_2d.tree_root_expression)) : BEGIN  
-                                                               IF (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPLEX_AREA',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPTIC_AREA',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HALF_SPACE_2D',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY',
-                                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_AREA'] *
-                                                                          TYPEOF(input\csg_solid_2d.tree_root_expression)) >
-                                                                   0)
-                                                               THEN
-                                                                 RETURN(true);
-                                                               ELSE
-                                                                 RETURN(false);
-                                                               END_IF;
-    END;
-    ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_RESULT_2D' IN
-     TYPEOF(input\csg_solid_2d.tree_root_expression)) : 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));
-    OTHERWISE: RETURN(false);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION valid_datum_target_parameters(pdf : placed_datum_target_feature) : BOOLEAN;
-LOCAL
-  rep_set                   : SET OF representation := [];
-  parameter_representations : SET OF representation;
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(pdf.representation_associations);
-    rep_set := rep_set + pdf.representation_associations[i].used_representation;
-  END_REPEAT;
-  parameter_representations := QUERY(rep
-                                     <* rep_set
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
-                                        TYPEOF(rep)));
-  IF (SIZEOF(QUERY(srwp
-                   <* parameter_representations
-                   | (SIZEOF(QUERY(i
-                                   <* srwp.items
-                                   | (i.name = 'orientation') AND
-                                     ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF(i)))) =
-                      1))) <>
-      1)
-  THEN
-    RETURN(false);
-  END_IF;
-  CASE pdf\shape_aspect.description OF
-    'point' : RETURN(SIZEOF(QUERY(srwp <* parameter_representations | (SIZEOF(srwp.items) = 1))) = 1);
-    'circle', 'circular curve' : 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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                                TYPEOF(i)) =
-                                                                         2))) =
-                                                         1))) =
-                                         1));
-    'line' : RETURN(SIZEOF(QUERY(srwp
-                                 <* parameter_representations
-                                 | (SIZEOF(QUERY(i
-                                                 <* srwp.items
-                                                 | (i.name = 'target length') AND
-                                                   (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                           TYPEOF(i)) =
-                                                    2))) =
-                                    1))) =
-                    1);
-    'rectangle' : 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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
-                                                                 TYPEOF(i)) =
-                                                          2))) =
-                                          1))) =
-                          1));
-    OTHERWISE: RETURN(false);
-  END_CASE;
-END_FUNCTION;
-
-FUNCTION valid_geometrically_bounded_wf_curve(crv : curve) : BOOLEAN;
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'] *
-            TYPEOF(crv)) =
-     1
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF(crv)
-    THEN
-      IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARABOLA',
-                 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA'] *
-                TYPEOF(crv\trimmed_curve.basis_curve)) =
-         1
-      THEN
-        RETURN(true);
-      ELSE
-        RETURN(valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve));
-      END_IF;
-    ELSE
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(crv)
-      THEN
-        RETURN(valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve));
-      ELSE
-        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(crv)
-        THEN
-          RETURN(valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve));
-        ELSE
-          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(crv)
-          THEN
-            RETURN(SIZEOF(QUERY(ccs
-                                <* crv\composite_curve.segments
-                                | NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve))) =
-                   0);
-          END_IF;
-        END_IF;
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION valid_geometrically_bounded_wf_point(pnt : point) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt)
-    THEN
-      RETURN(valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve));
-    ELSE
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF(pnt)
-      THEN
-        RETURN(valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt));
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION valid_measure_value(m : measure_value) : BOOLEAN;
-  IF ('REAL' IN TYPEOF(m))
-  THEN
-    RETURN(m > 0.0);
-  ELSE
-    IF ('INTEGER' IN TYPEOF(m))
-    THEN
-      RETURN(m > 0);
-    ELSE
-      RETURN(true);
-    END_IF;
-  END_IF;
-END_FUNCTION;
-
-FUNCTION valid_selected_instance_representation(pd : product_definition_or_assembly_relationship) : LOGICAL;
-LOCAL
-  properties                          : SET OF property_definition                := bag_to_set(QUERY(prd
-                                                                                                      <* USEDIN(pd,
-                                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                                                                                      | (prd.name =
-                                                                                                         'occurrence selection')));
-  property_definition_representations : SET OF property_definition_representation := bag_to_set(QUERY(pdr
-                                                                                                      <* USEDIN(properties[1],
-                                                                                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                                                                      | (pdr.used_representation.name =
-                                                                                                         'selection criteria')));
-  selected_representation             : representation;
-END_LOCAL;
-  IF (SIZEOF(properties) <> 1)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (SIZEOF(property_definition_representations) <> 1)
-  THEN
-    RETURN(false);
-  END_IF;
-  selected_representation := property_definition_representations[1]\property_definition_representation.used_representation;
-  IF (SIZEOF(selected_representation\representation.items) < 1) OR
-     (SIZEOF(selected_representation\representation.items) > 2)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (SIZEOF(QUERY(i
-                   <* selected_representation\representation.items
-                   | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                             TYPEOF(i)) =
-                      1) AND
-                     (i.name = 'selection quantity'))) <>
-      1)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (SIZEOF(QUERY(i
-                   <* selected_representation\representation.items
-                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                      TYPEOF(i)) AND
-                     (i.name = 'selection control'))) >
-      1)
-  THEN
-    RETURN(false);
-  END_IF;
-  IF (SIZEOF(QUERY(i
-                   <* selected_representation\representation.items
-                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUALIFIED_REPRESENTATION_ITEM',
-                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE'] *
-                             TYPEOF(i)) =
-                      0))) >
-      0)
-  THEN
-    RETURN(false);
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION valid_time(time : local_time) : BOOLEAN;
-  IF EXISTS(time.second_component)
-  THEN
-    RETURN(EXISTS(time.minute_component));
-  ELSE
-    RETURN(true);
-  END_IF;
-END_FUNCTION;
-
-FUNCTION valid_units(m : measure_with_unit) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, -1.0, 4.0, 2.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component)
-  THEN
-    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_IF;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION valid_wireframe_edge_curve(crv : curve) : BOOLEAN;
-  IF SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
-             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'] *
-            TYPEOF(crv)) =
-     1
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF(crv)
-    THEN
-      RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
-    ELSE
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(crv)
-      THEN
-        RETURN(valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve));
-      END_IF;
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION valid_wireframe_vertex_point(pnt : point) : BOOLEAN;
-  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt)
-  THEN
-    RETURN(true);
-  ELSE
-    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF(pnt)
-    THEN
-      RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
-    END_IF;
-  END_IF;
-  RETURN(false);
-END_FUNCTION;
-
-FUNCTION validate_accuracy_types(ei : shape_data_quality_criterion;
-                                 type_list : BAG OF STRING) : LOGICAL;
-LOCAL
-  sdqca   : BAG OF shape_data_quality_criterion_and_accuracy_association := [];
-  sma     : BAG OF shape_measurement_accuracy                            := [];
-  sdqir   : SET OF shape_data_quality_inspection_result                  := [];
-  scraa   : BAG OF shape_inspection_result_accuracy_association          := [];
-  t_logic : BOOLEAN;
-END_LOCAL;
-  sdqca := USEDIN(ei,
-                  'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.SHAPE_DATA_QUALITY_CRITERION');
-  IF (SIZEOF(sdqca) <> 0)
-  THEN
-    REPEAT i := 1 TO SIZEOF(sdqca);
-      sma := sma + sdqca[i].required_specific_accuracy;
-    END_REPEAT;
-    IF (SIZEOF(type_list) < SIZEOF(sma))
-    THEN
-      RETURN(false);
-    END_IF;
-    REPEAT i := 1 TO SIZEOF(sma);
-      t_logic := false;
-      REPEAT j := 1 TO SIZEOF(type_list);
-        IF (type_list[j] IN value_limit_type(sma[i].range))
-        THEN
-          t_logic := true;
-          ESCAPE;
-        END_IF;
-      END_REPEAT;
-      IF (NOT (t_logic))
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_IF;
-  sdqir := QUERY(q
-                 <* bag_to_set(USEDIN(ei,
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
-  IF (SIZEOF(sdqir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    scraa := USEDIN(sdqir[i],
-                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.SHAPE_DATA_QUALITY_RESULT');
-    IF (SIZEOF(scraa) <> 0)
-    THEN
-      sma := [];
-      REPEAT j := 1 TO SIZEOF(scraa);
-        sma := sma + scraa[j].applied_specific_accuracy;
-      END_REPEAT;
-      IF (SIZEOF(type_list) < SIZEOF(sma))
-      THEN
-        RETURN(false);
-      END_IF;
-      REPEAT j := 1 TO SIZEOF(sma);
-        t_logic := false;
-        REPEAT k := 1 TO SIZEOF(type_list);
-          IF (type_list[k] IN value_limit_type(sma[j].range))
-          THEN
-            t_logic := true;
-            ESCAPE;
-          END_IF;
-        END_REPEAT;
-        IF (NOT (t_logic))
-        THEN
-          RETURN(false);
-        END_IF;
-      END_REPEAT;
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION validate_attribute_id(attid : attribute_identifier) : BOOLEAN;
-
-CONSTANT
-  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'];
-  numbers_etc : SET [15 : 15] OF STRING := ['0','1','2','3','4','5','6','7','8','9','_','[',']','.','\'];
-  valid_chars : SET [67 : 67] OF STRING := letters + numbers_etc;
-END_CONSTANT;
-LOCAL
-  id_length : INTEGER := LENGTH(attid);
-  id_valid  : BOOLEAN := true;
-  i         : INTEGER;
-END_LOCAL;
-  IF NOT (attid[1] IN letters)
-  THEN
-    id_valid := false;
-  END_IF;
-  REPEAT i := 2 TO id_length
-  WHILE id_valid = true;
-    IF NOT (attid[i] IN valid_chars)
-    THEN
-      id_valid := false;
-    END_IF;
-  END_REPEAT;
-  RETURN(id_valid);
-END_FUNCTION;
-
-FUNCTION validate_countersink_radii(cskhole : solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN;
-LOCAL
-  i       : INTEGER;
-  j       : INTEGER;
-  n       : INTEGER                 := 1 + cskhole\solid_with_stepped_round_hole.segments;
-  smaller : positive_length_measure;
-  larger  : positive_length_measure;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions);
-    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
-      RETURN(false);
-    ELSE
-      IF ((cskhole.conical_transitions[i].transition_number <> 1) AND
-          (cskhole.conical_transitions[i].transition_number <> n))
-      THEN
-        BEGIN  
-               j := cskhole.conical_transitions[i].transition_number;
-               IF cskhole\solid_with_stepped_round_hole.segment_radii[j] >
-                  cskhole\solid_with_stepped_round_hole.segment_radii[j - 1]
-               THEN
-                 BEGIN  
-                        IF (cskhole.conical_transitions[i].cone_apex_angle > 0)
-                        THEN
-                          RETURN(false);
-                        END_IF;
-                        larger := cskhole\solid_with_stepped_round_hole.segment_radii[j];
-                        smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
-                 END;
-               ELSE
-                 BEGIN  
-                        IF (cskhole.conical_transitions[i].cone_apex_angle < 0)
-                        THEN
-                          RETURN(false);
-                        END_IF;
-                        larger := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
-                        smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j];
-                 END;
-               END_IF;
-               IF ((cskhole.conical_transitions[i].cone_base_radius > larger) OR
-                   (cskhole.conical_transitions[i].cone_base_radius < smaller))
-               THEN
-                 RETURN(false);
-               END_IF;
-        END;
-      END_IF;
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION validate_ecdq_inspected_elements_type(ei : externally_conditioned_data_quality_criterion;
-                                               type_list : BAG OF STRING) : LOGICAL;
-LOCAL
-  sdqir       : SET OF externally_conditioned_data_quality_inspection_result               := [];
-  dir         : SET OF data_quality_inspection_instance_report                             := [];
-  sdiri       : SET OF externally_conditioned_data_quality_inspection_instance_report_item := [];
-  t_type_list : BAG OF STRING                                                              := [];
-END_LOCAL;
-  sdqir := QUERY(q
-                 <* bag_to_set(USEDIN(ei,
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' IN
-                   TYPEOF(q));
-  IF (SIZEOF(sdqir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    dir := dir +
-           QUERY(q
-                 <* bag_to_set(USEDIN(sdqir[i],
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
-                   TYPEOF(q));
-  END_REPEAT;
-  IF (SIZEOF(dir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(dir);
-    sdiri := sdiri +
-             QUERY(q
-                   <* dir[i].inspected_instances
-                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
-                     TYPEOF(q));
-  END_REPEAT;
-  IF (SIZEOF(sdiri) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdiri);
-    IF (SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list))
-    THEN
-      RETURN(false);
-    END_IF;
-    t_type_list := type_list;
-    REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
-      REPEAT k := 1 TO SIZEOF(t_type_list);
-        IF (t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]))
-        THEN
-          t_type_list := t_type_list - t_type_list[k];
-          ESCAPE;
-        END_IF;
-      END_REPEAT;
-    END_REPEAT;
-    IF (SIZEOF(t_type_list) > 0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION validate_inspected_elements_type(ei : shape_data_quality_criterion;
-                                          type_list : BAG OF STRING) : LOGICAL;
-LOCAL
-  sdqir       : SET OF shape_data_quality_inspection_result               := [];
-  sdir        : SET OF shape_data_quality_inspection_instance_report      := [];
-  sdiri       : SET OF shape_data_quality_inspection_instance_report_item := [];
-  t_type_list : BAG OF STRING                                             := [];
-END_LOCAL;
-  sdqir := QUERY(q
-                 <* bag_to_set(USEDIN(ei,
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
-  IF (SIZEOF(sdqir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    sdir := sdir +
-            QUERY(q
-                  <* bag_to_set(USEDIN(sdqir[i],
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  IF (SIZEOF(sdir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdir);
-    sdiri := sdiri +
-             QUERY(q
-                   <* sdir[i].inspected_instances
-                   | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
-                     TYPEOF(q));
-  END_REPEAT;
-  IF (SIZEOF(sdiri) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdiri);
-    IF (SIZEOF(sdiri[i].inspected_elements) <> SIZEOF(type_list))
-    THEN
-      RETURN(false);
-    END_IF;
-    t_type_list := type_list;
-    REPEAT j := 1 TO SIZEOF(sdiri[i].inspected_elements);
-      REPEAT k := 1 TO SIZEOF(t_type_list);
-        IF (t_type_list[k] IN TYPEOF(sdiri[i].inspected_elements[j]))
-        THEN
-          t_type_list := t_type_list - t_type_list[k];
-          ESCAPE;
-        END_IF;
-      END_REPEAT;
-    END_REPEAT;
-    IF (SIZEOF(t_type_list) > 0)
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION validate_locations_of_extreme_value_type(ei : shape_data_quality_criterion;
-                                                  type_list : BAG OF STRING) : LOGICAL;
-LOCAL
-  sdqir       : SET OF shape_data_quality_inspection_result          := [];
-  sdir        : SET OF shape_data_quality_inspection_instance_report := [];
-  sdei        : SET OF instance_report_item_with_extreme_instances   := [];
-  t_type_list : BAG OF STRING                                        := [];
-END_LOCAL;
-  sdqir := QUERY(q
-                 <* bag_to_set(USEDIN(ei,
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
-  IF (SIZEOF(sdqir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    sdir := sdir +
-            QUERY(q
-                  <* bag_to_set(USEDIN(sdqir[i],
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdir);
-    sdei := sdei +
-            QUERY(q
-                  <* sdir[i].inspected_instances
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  IF (SIZEOF(sdei) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  IF ((SIZEOF(type_list) = 0) AND (SIZEOF(sdei) <> 0))
-  THEN
-    RETURN(false);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdei);
-    REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
-      IF (SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value) <> SIZEOF(type_list))
-      THEN
-        RETURN(false);
-      END_IF;
-      t_type_list := type_list;
-      REPEAT k := 1 TO SIZEOF(sdei[i].extreme_instances[j].locations_of_extreme_value);
-        REPEAT l := 1 TO SIZEOF(t_type_list);
-          IF (t_type_list[l] IN TYPEOF(sdei[i].extreme_instances[j].locations_of_extreme_value[k]))
-          THEN
-            t_type_list := t_type_list - t_type_list[l];
-            ESCAPE;
-          END_IF;
-        END_REPEAT;
-      END_REPEAT;
-      IF (SIZEOF(t_type_list) > 0)
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION validate_measured_data_type(ei : shape_data_quality_criterion;
-                                     type_string : STRING) : LOGICAL;
-LOCAL
-  sdqir : SET OF shape_data_quality_inspection_result               := [];
-  sdcr  : SET OF shape_data_quality_inspection_criterion_report     := [];
-  sdir  : SET OF shape_data_quality_inspection_instance_report      := [];
-  sdii  : SET OF shape_data_quality_inspection_instance_report_item := [];
-  sdei  : BAG OF instance_report_item_with_extreme_instances        := [];
-END_LOCAL;
-  sdqir := QUERY(q
-                 <* bag_to_set(USEDIN(ei,
-                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_RESULT.CRITERION_INSPECTED'))
-                 | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_RESULT' IN TYPEOF(q));
-  IF (SIZEOF(sdqir) = 0)
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    sdcr := sdcr +
-            QUERY(q
-                  <* bag_to_set(USEDIN(sdqir[i],
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_CRITERION_REPORT' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdqir);
-    sdir := sdir +
-            QUERY(q
-                  <* bag_to_set(USEDIN(sdqir[i],
-                                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATA_QUALITY_INSPECTION_REPORT.INSPECTION_RESULT'))
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  IF ((SIZEOF(sdcr) = 0) AND (SIZEOF(sdir) = 0))
-  THEN
-    RETURN(true);
-  END_IF;
-  REPEAT i := 1 TO SIZEOF(sdir);
-    sdii := sdii +
-            QUERY(q
-                  <* sdir[i].inspected_instances
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdir);
-    sdei := sdei +
-            QUERY(q
-                  <* sdir[i].inspected_instances
-                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES' IN
-                    TYPEOF(q));
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdcr);
-    IF (NOT (type_string IN TYPEOF(sdcr[i].representative_measured_value)))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdii);
-    IF (NOT (type_string IN TYPEOF(sdii[i].measured_value)))
-    THEN
-      RETURN(false);
-    END_IF;
-  END_REPEAT;
-  REPEAT i := 1 TO SIZEOF(sdei);
-    REPEAT j := 1 TO SIZEOF(sdei[i].extreme_instances);
-      IF (NOT (type_string IN TYPEOF(sdei[i].extreme_instances[j].measured_value)))
-      THEN
-        RETURN(false);
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(true);
-END_FUNCTION;
-
-FUNCTION value_limit_type(iv : shape_data_quality_value_limit_type_select) : SET OF STRING;
-LOCAL
-  retval : SET OF STRING := [];
-END_LOCAL;
-  IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_RANGE') IN TYPEOF(iv))
-  THEN
-    retval := TYPEOF(iv\compound_representation_item.item_element[1].value_component);
-  END_IF;
-  IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DATA_QUALITY_VALUE_LIMIT') IN TYPEOF(iv))
-  THEN
-    IF (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_WITH_UNIT') IN TYPEOF(iv))
-    THEN
-      retval := TYPEOF(iv\measure_with_unit.value_component);
-    END_IF;
-  END_IF;
-  RETURN(retval);
-END_FUNCTION;
-
-FUNCTION value_range_aggregate_rep_item(agg : AGGREGATE OF representation_item) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(QUERY(i1
-                          <* agg
-                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                             TYPEOF(i1)))) =
-             6)
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION value_range_wr1(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(agg) = 2) AND
-            ((SIZEOF(QUERY(i1
-                           <* agg
-                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                              TYPEOF(i1)))) =
-              2) OR
-             (SIZEOF(QUERY(i2
-                           <* agg
-                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN
-                              TYPEOF(i2)))) =
-              2))
-         THEN
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION value_range_wr2(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         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
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION value_range_wr3(agg : compound_item_definition) : BOOLEAN;
-  BEGIN  
-         IF (SIZEOF(QUERY(i1
-                          <* agg
-                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                             TYPEOF(i1)) AND
-                            (SIZEOF(QUERY(i2
-                                          <* agg
-                                          | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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
-           RETURN(true);
-         ELSE
-           RETURN(false);
-         END_IF;
-  END;
-END_FUNCTION;
-
-FUNCTION values_space_of(expr : generic_expression) : maths_space;
-LOCAL
-  e_prefix  : STRING        := 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.';
-  typenames : SET OF STRING := TYPEOF(expr);
-END_LOCAL;
-  IF (schema_prefix + 'MATHS_VARIABLE') IN typenames
-  THEN
-    RETURN(expr\maths_variable.values_space);
-  END_IF;
-  IF (e_prefix + 'EXPRESSION') IN typenames
-  THEN
-    IF (e_prefix + 'NUMERIC_EXPRESSION') IN typenames
-    THEN
-      IF expr\numeric_expression.is_int
-      THEN
-        IF (e_prefix + 'INT_LITERAL') IN typenames
-        THEN
-          RETURN(make_finite_space([expr\int_literal.the_value]));
-        ELSE
-          RETURN(the_integers);
-        END_IF;
-      ELSE
-        IF (e_prefix + 'REAL_LITERAL') IN typenames
-        THEN
-          RETURN(make_finite_space([expr\real_literal.the_value]));
-        ELSE
-          RETURN(the_reals);
-        END_IF;
-      END_IF;
-    END_IF;
-    IF (e_prefix + 'BOOLEAN_EXPRESSION') IN typenames
-    THEN
-      IF (e_prefix + 'BOOLEAN_LITERAL') IN typenames
-      THEN
-        RETURN(make_finite_space([expr\boolean_literal.the_value]));
-      ELSE
-        RETURN(the_booleans);
-      END_IF;
-    END_IF;
-    IF (e_prefix + 'STRING_EXPRESSION') IN typenames
-    THEN
-      IF (e_prefix + 'STRING_LITERAL') IN typenames
-      THEN
-        RETURN(make_finite_space([expr\string_literal.the_value]));
-      ELSE
-        RETURN(the_strings);
-      END_IF;
-    END_IF;
-    RETURN(?);
-  END_IF;
-  IF (schema_prefix + 'MATHS_FUNCTION') IN typenames
-  THEN
-    IF expression_is_constant(expr)
-    THEN
-      RETURN(make_finite_space([expr]));
-    ELSE
-      RETURN(make_function_space(sc_equal, expr\maths_function.domain, sc_equal, expr\maths_function.range));
-    END_IF;
-  END_IF;
-  IF (schema_prefix + 'FUNCTION_APPLICATION') IN typenames
-  THEN
-    RETURN(expr\function_application.func.range);
-  END_IF;
-  IF (schema_prefix + 'MATHS_SPACE') IN typenames
-  THEN
-    IF expression_is_constant(expr)
-    THEN
-      RETURN(make_finite_space([expr]));
-    ELSE
-      RETURN(make_elementary_space(es_maths_spaces));
-    END_IF;
-  END_IF;
-  IF (schema_prefix + 'DEPENDENT_VARIABLE_DEFINITION') IN typenames
-  THEN
-    RETURN(values_space_of(expr\unary_generic_expression.operand));
-  END_IF;
-  IF (schema_prefix + 'COMPLEX_NUMBER_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr]));
-  END_IF;
-  IF (schema_prefix + 'LOGICAL_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\logical_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'BINARY_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\binary_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'MATHS_ENUM_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\maths_enum_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'REAL_TUPLE_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\real_tuple_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'INTEGER_TUPLE_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\integer_tuple_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'ATOM_BASED_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\atom_based_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'MATHS_TUPLE_LITERAL') IN typenames
-  THEN
-    RETURN(make_finite_space([expr\maths_tuple_literal.lit_value]));
-  END_IF;
-  IF (schema_prefix + 'PARTIAL_DERIVATIVE_EXPRESSION') IN typenames
-  THEN
-    RETURN(drop_numeric_constraints(values_space_of(expr\partial_derivative_expression.derivand)));
-  END_IF;
-  IF (schema_prefix + 'DEFINITE_INTEGRAL_EXPRESSION') IN typenames
-  THEN
-    RETURN(drop_numeric_constraints(values_space_of(expr\definite_integral_expression.integrand)));
-  END_IF;
-  RETURN(?);
-END_FUNCTION;
-
-FUNCTION vector_difference(arg1 : vector_or_direction;
-                           arg2 : vector_or_direction) : vector;
-LOCAL
-  result : vector;
-  res    : direction;
-  vec1   : direction;
-  vec2   : direction;
-  mag    : REAL;
-  mag1   : REAL;
-  mag2   : REAL;
-  ndim   : INTEGER;
-END_LOCAL;
-  IF ((NOT EXISTS(arg1)) OR (NOT EXISTS(arg2))) OR (arg1.dim <> arg2.dim)
-  THEN
-    RETURN(?);
-  ELSE
-    BEGIN  
-           IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(arg1)
-           THEN
-             mag1 := arg1\vector.magnitude;
-             vec1 := arg1\vector.orientation;
-           ELSE
-             mag1 := 1.0;
-             vec1 := arg1;
-           END_IF;
-           IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF(arg2)
-           THEN
-             mag2 := arg2\vector.magnitude;
-             vec2 := arg2\vector.orientation;
-           ELSE
-             mag2 := 1.0;
-             vec2 := arg2;
-           END_IF;
-           vec1 := normalise(vec1);
-           vec2 := normalise(vec2);
-           ndim := SIZEOF(vec1.direction_ratios);
-           mag := 0.0;
-           res := dummy_gri || direction(vec1.direction_ratios);
-           REPEAT i := 1 TO ndim;
-             res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] - mag2 * vec2.direction_ratios[i];
-             mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
-           END_REPEAT;
-           IF (mag > 0.0)
-           THEN
-             result := dummy_gri || vector(res, SQRT(mag));
-           ELSE
-             result := dummy_gri || vector(vec1, 0.0);
-           END_IF;
-    END;
-  END_IF;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION volume_weights_positive(b : rational_b_spline_volume) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 0 TO b.u_upper;
-    REPEAT j := 0 TO b.v_upper;
-      REPEAT k := 0 TO b.w_upper;
-        IF (b.weights[i][j][k] <= 0.0)
-        THEN
-          result := false;
-          RETURN(result);
-        END_IF;
-      END_REPEAT;
-    END_REPEAT;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION weights_positive(weights : LIST OF REAL) : BOOLEAN;
-LOCAL
-  result : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(weights);
-    IF weights[i] <= 0.0
-    THEN
-      result := false;
-      RETURN(result);
-    END_IF;
-  END_REPEAT;
-  RETURN(result);
-END_FUNCTION;
-
-FUNCTION ypr_index(ypr : ypr_enumeration) : INTEGER;
-  CASE ypr OF
-    yaw : RETURN(1);
-    pitch : RETURN(2);
-    roll : RETURN(3);
-  END_CASE;
-  RETURN(?);
-END_FUNCTION;
-
-RULE alternative_solution_requires_solution_definition FOR (product_definition_formation);
-LOCAL
-  solution_versions : SET OF product_definition_formation := [];
-END_LOCAL;
-  solution_versions := QUERY(pdf
-                             <* product_definition_formation
-                             | SIZEOF(QUERY(prpc
-                                            <* USEDIN(pdf.of_product,
-                                                      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                            | prpc.name = 'alternative solution')) =
-                               1);
-WHERE
-  WR1: SIZEOF(QUERY(pdf
-                    <* solution_versions
-                    | SIZEOF(QUERY(pd
-                                   <* USEDIN(pdf,
-                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
-                                   | pd.frame_of_reference.name = 'alternative definition')) <>
-                      1)) =
-       0;
-END_RULE;
-
-RULE ap242_application_protocol_definition_required FOR (application_context);
-WHERE
-  WR1: SIZEOF(QUERY(ac
-                    <* application_context
-                    | (SIZEOF(QUERY(apd
-                                    <* USEDIN(ac,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION')
-                                    | apd.application_interpreted_model_schema_name =
-                                      'ap242_managed_model_based_3d_engineering_mim_lf')) >
-                       0))) >
-       0;
-END_RULE;
-
-RULE breakdown_element_requires_product_definition FOR (product_definition_formation);
-WHERE
-  WR1: SIZEOF(QUERY(pdf
-                    <* product_definition_formation
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pdf.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'functionality')) =
-                       1) AND
-                      (SIZEOF(QUERY(pd
-                                    <* USEDIN(pdf,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
-                                    | pd.frame_of_reference.name = 'functional definition')) <
-                       1))) =
-       0;
-  WR2: SIZEOF(QUERY(pdf
-                    <* product_definition_formation
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pdf.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'conceptual design')) =
-                       1) AND
-                      (SIZEOF(QUERY(pd
-                                    <* USEDIN(pdf,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
-                                    | pd.frame_of_reference.name = 'conceptual definition')) <
-                       1))) =
-       0;
-END_RULE;
-
-RULE chamfer_offset_requires_faces FOR (chamfer_offset, property_definition_representation);
-WHERE
-  WR1: (SIZEOF(QUERY(co
-                     <* chamfer_offset
-                     | NOT (1 =
-                            SIZEOF(QUERY(pdr
-                                         <* property_definition_representation
-                                         | ((pdr\property_definition_representation.definition\property_definition.definition =
-                                             co) AND
-                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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);
-END_RULE;
-
-RULE chamfer_requires_faces FOR (chamfer, property_definition_representation);
-WHERE
-  WR1: (SIZEOF(QUERY(cf
-                     <* chamfer
-                     | NOT (1 =
-                            SIZEOF(QUERY(pdr
-                                         <* property_definition_representation
-                                         | ((pdr\property_definition_representation.definition\property_definition.definition =
-                                             cf) AND
-                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)) AND
-                                            (pdr.used_representation.name = 'chamfer face'))))))) =
-        0);
-END_RULE;
-
-RULE compatible_dimension FOR (cartesian_point, direction, geometric_representation_context);
-WHERE
-  WR1: check_geometric_dimension(cartesian_point, direction, geometric_representation_context);
-END_RULE;
-
-RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition,
-                                              next_assembly_usage_occurrence,
-                                              product_related_product_category);
-LOCAL
-  i     : INTEGER := 0;
-  j     : INTEGER := 0;
-  k     : INTEGER := 0;
-  dkuhr : LOGICAL := true;
-  nnauo : INTEGER := 0;
-  nprpc : INTEGER := 0;
-  rp    : product;
-END_LOCAL;
-  REPEAT i := LOINDEX(composite_assembly_sequence_definition) TO HIINDEX(composite_assembly_sequence_definition);
-    nnauo := 0;
-    REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
-      IF (composite_assembly_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition)
-      THEN
-        rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
-        nprpc := 0;
-        REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
-          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
-            nprpc := nprpc + 1;
-          END_IF;
-        END_REPEAT;
-        IF (nprpc = 1)
-        THEN
-          nnauo := nnauo + 1;
-        ELSE
-          dkuhr := false;
-          ESCAPE;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-    IF (dkuhr = false)
-    THEN
-      ESCAPE;
-    END_IF;
-    IF (nnauo = 0)
-    THEN
-      dkuhr := false;
-      ESCAPE;
-    END_IF;
-  END_REPEAT;
-WHERE
-  WR1: dkuhr;
-END_RULE;
-
-RULE consistent_uncertainty FOR (global_uncertainty_assigned_context,
-                                 qualified_representation_item,
-                                 uncertainty_assigned_representation);
-WHERE
-  WR1: SIZEOF(QUERY(guac
-                    <* global_uncertainty_assigned_context
-                    | SIZEOF(QUERY(u1
-                                   <* guac.uncertainty
-                                   | SIZEOF(QUERY(u2 <* guac.uncertainty | u2.name = u1.name)) > 1)) >
-                      0)) =
-       0;
-  WR2: SIZEOF(QUERY(uar
-                    <* uncertainty_assigned_representation
-                    | SIZEOF(QUERY(u1
-                                   <* uar.uncertainty
-                                   | SIZEOF(QUERY(u2 <* uar.uncertainty | u2.name = u1.name)) > 1)) >
-                      0)) =
-       0;
-  WR3: SIZEOF(QUERY(qri
-                    <* qualified_representation_item
-                    | SIZEOF(QUERY(u1
-                                   <* qri.qualifiers
-                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNCERTAINTY_QUALIFIER' IN
-                                      TYPEOF(u1)) AND
-                                     (SIZEOF(QUERY(u2
-                                                   <* qri.qualifiers
-                                                   | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNCERTAINTY_QUALIFIER' IN
-                                                      TYPEOF(u2)) AND
-                                                     (u2\uncertainty_qualifier.measure_name =
-                                                      u1\uncertainty_qualifier.measure_name))) >
-                                      1))) >
-                      0)) =
-       0;
-END_RULE;
-
-RULE constraint_definition_requires_constraint_category FOR (product_definition);
-LOCAL
-  constraint_definitions : SET OF product_definition := [];
-END_LOCAL;
-  constraint_definitions := QUERY(pd
-                                  <* product_definition
-                                  | (pd.frame_of_reference.name = 'design constraint definition'));
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* constraint_definitions
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pd.formation.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'requirement')) =
-                       0))) =
-       0;
-END_RULE;
-
-RULE design_constraint_requires_product_definition FOR (product_definition_formation);
-WHERE
-  WR1: SIZEOF(QUERY(pdf
-                    <* product_definition_formation
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pdf.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'requirement')) >
-                       0) AND
-                      (SIZEOF(QUERY(pd
-                                    <* USEDIN(pdf,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION')
-                                    | pd.frame_of_reference.name = 'design constraint definition')) <
-                       1))) =
-       0;
-END_RULE;
-
-RULE dimensioning_data_requires_document FOR (applied_document_reference,
-                                              product_definition_context_association,
-                                              role_association);
-LOCAL
-  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'))));
-  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')));
-  ra     : SET OF role_association                       := (QUERY(ra
-                                                                   <* role_association
-                                                                   | ra\role_association.role\object_role.name =
-                                                                     'dimensioning standard'));
-  ra1    : SET OF role_association                       := [];
-  pdpdca : SET OF product_definition                     := [];
-  pdadr  : SET OF product_definition                     := [];
-  pass   : BOOLEAN                                       := true;
-END_LOCAL;
-  REPEAT i := 1 TO HIINDEX(pdca);
-    pdpdca := pdpdca + pdca[i]\product_definition_context_association.definition;
-  END_REPEAT;
-  REPEAT i := 1 TO HIINDEX(adr);
-    ra1 := bag_to_set(USEDIN(adr[i],
-                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE'));
-    IF (ra1 * ra) <> ra1
-    THEN
-      pass := false;
-    END_IF;
-    REPEAT j := 1 TO HIINDEX(adr[i]\applied_document_reference.items);
-      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-         TYPEOF(adr[i]\applied_document_reference.items[j])
-      THEN
-        pdadr := pdadr + adr[i]\applied_document_reference.items[j];
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-WHERE
-  WR1: pass;
-  WR2: pdpdca = pdadr;
-END_RULE;
-
-RULE edge_round_requires_faces FOR (edge_round, property_definition_representation);
-WHERE
-  WR1: (0 =
-        SIZEOF(QUERY(er
-                     <* edge_round
-                     | NOT (1 =
-                            SIZEOF(QUERY(pdr
-                                         <* property_definition_representation
-                                         | ((pdr\property_definition_representation.definition\property_definition.definition =
-                                             er) AND
-                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)) AND
-                                            (pdr.used_representation.name = 'edge round face'))))))));
-  WR2: (SIZEOF(QUERY(er
-                     <* edge_round
-                     | NOT (1 =
-                            SIZEOF(QUERY(pdr
-                                         <* property_definition_representation
-                                         | ((pdr\property_definition_representation.definition\property_definition.definition =
-                                             er) AND
-                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)) AND
-                                            (pdr.used_representation.name = 'first face shape'))))))) =
-        0);
-  WR3: (SIZEOF(QUERY(er
-                     <* edge_round
-                     | NOT (1 =
-                            SIZEOF(QUERY(pdr
-                                         <* property_definition_representation
-                                         | ((pdr\property_definition_representation.definition\property_definition.definition =
-                                             er) AND
-                                            ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN
-                                             TYPEOF(pdr.used_representation)) AND
-                                            (pdr.used_representation.name = 'second face shape'))))))) =
-        0);
-END_RULE;
-
-RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment);
-WHERE
-  WR1: SIZEOF(QUERY(aia
-                    <* applied_external_identification_assignment
-                    | NOT external_version_assignment_is_valid(aia))) =
-       0;
-END_RULE;
-
-RULE material_for_coating_layer FOR (shape_aspect);
-LOCAL
-  coating_layers : SET OF shape_aspect := [];
-END_LOCAL;
-  coating_layers := QUERY(r <* shape_aspect | (r.name = 'coating layer'));
-WHERE
-  WR1: SIZEOF(QUERY(r
-                    <* coating_layers
-                    | SIZEOF(USEDIN(r,
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS')) <>
-                      1)) =
-       0;
-END_RULE;
-
-RULE non_uniform_zone_definition_constraint FOR (tolerance_zone_definition, tolerance_zone, tolerance_zone_form);
-LOCAL
-  tzf_set  : SET OF tolerance_zone_form       := QUERY(tzf
-                                                       <* tolerance_zone_form
-                                                       | tzf\tolerance_zone_form.name = 'non uniform');
-  nuzd_set : SET OF tolerance_zone_definition := QUERY(tzd
-                                                       <* tolerance_zone_definition
-                                                       | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_UNIFORM_ZONE_DEFINITION' IN
-                                                         TYPEOF(tzd));
-END_LOCAL;
-WHERE
-  WR1: QUERY(tzd <* nuzd_set | (tzd\tolerance_zone_definition.zone\tolerance_zone.form IN tzf_set)) = nuzd_set;
-END_RULE;
-
-RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property);
-LOCAL
-  known_sourced_properties : SET OF externally_defined_general_property;
-END_LOCAL;
-  known_sourced_properties := QUERY(edc
-                                    <* externally_defined_general_property
-                                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
-                                      TYPEOF(edc.source));
-WHERE
-  WR1: SIZEOF(QUERY(edgp
-                    <* known_sourced_properties
-                    | (SIZEOF(QUERY(edir
-                                    <* USEDIN(edgp,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM')
-                                    | (edir.name = 'name scope') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_CLASS' IN
-                                       TYPEOF(edir.related_item)) AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
-                                       TYPEOF(edir.related_item.source)))) <>
-                       1))) =
-       0;
-END_RULE;
-
-RULE plib_property_reference_requires_version FOR (externally_defined_general_property);
-LOCAL
-  plib_properties : SET OF externally_defined_general_property := [];
-END_LOCAL;
-  plib_properties := QUERY(edgp
-                           <* externally_defined_general_property
-                           | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN
-                              TYPEOF(edgp.source)) AND
-                             ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE.NAME' =
-                              'ISO 13584 library'));
-WHERE
-  WR1: SIZEOF(QUERY(edgp
-                    <* plib_properties
-                    | (SIZEOF(QUERY(edir
-                                    <* USEDIN(edgp,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS')
-                                    | (edir.role.name = 'version'))) <>
-                       1))) =
-       0;
-END_RULE;
-
-RULE ply_reference FOR (ply_laminate_sequence_definition,
-                        next_assembly_usage_occurrence,
-                        product_related_product_category);
-LOCAL
-  i     : INTEGER;
-  j     : INTEGER;
-  k     : INTEGER;
-  dkuhr : LOGICAL := true;
-  nnauo : INTEGER;
-  nprpc : INTEGER := 0;
-  rp    : product;
-END_LOCAL;
-  REPEAT i := LOINDEX(ply_laminate_sequence_definition) TO HIINDEX(ply_laminate_sequence_definition);
-    nnauo := 0;
-    REPEAT j := LOINDEX(next_assembly_usage_occurrence) TO HIINDEX(next_assembly_usage_occurrence);
-      IF (ply_laminate_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition)
-      THEN
-        rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
-        nprpc := 0;
-        REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
-          IF ((product_related_product_category[k].name = 'ply') AND
-              (rp IN product_related_product_category[k].products))
-          THEN
-            nprpc := nprpc + 1;
-          END_IF;
-        END_REPEAT;
-        IF (nprpc = 1)
-        THEN
-          nnauo := nnauo + 1;
-        ELSE
-          dkuhr := false;
-          ESCAPE;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-    IF (dkuhr = false)
-    THEN
-      ESCAPE;
-    END_IF;
-    IF (nnauo = 0)
-    THEN
-      dkuhr := false;
-      ESCAPE;
-    END_IF;
-  END_REPEAT;
-WHERE
-  WR1: dkuhr;
-END_RULE;
-
-RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option);
-LOCAL
-  i     : INTEGER;
-  j     : INTEGER;
-  k     : INTEGER;
-  kp    : INTEGER;
-  dkuhr : LOGICAL;
-  nmfuo : INTEGER;
-  nprpc : INTEGER := 0;
-  rp    : product;
-END_LOCAL;
-  dkuhr := true;
-  REPEAT kp := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
-    IF (product_related_product_category[kp].name = 'ply')
-    THEN
-      REPEAT i := LOINDEX(product_related_product_category[kp].products) TO HIINDEX(product_related_product_category[kp].products);
-        nmfuo := 0;
-        REPEAT j := LOINDEX(make_from_usage_option) TO HIINDEX(make_from_usage_option);
-          rp := make_from_usage_option[j].related_product_definition.formation.of_product;
-          IF (product_related_product_category[kp].products[i] = rp)
-          THEN
-            REPEAT k := LOINDEX(product_related_product_category) TO HIINDEX(product_related_product_category);
-              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
-                nprpc := nprpc + 1;
-              END_IF;
-            END_REPEAT;
-            IF (nprpc = 1)
-            THEN
-              nmfuo := nmfuo + 1;
-            ELSE
-              dkuhr := false;
-              ESCAPE;
-            END_IF;
-          END_IF;
-        END_REPEAT;
-        IF (dkuhr = false)
-        THEN
-          ESCAPE;
-        END_IF;
-        IF (nmfuo <> 1)
-        THEN
-          dkuhr := false;
-          ESCAPE;
-        END_IF;
-      END_REPEAT;
-    END_IF;
-  END_REPEAT;
-WHERE
-  WR1: dkuhr;
-END_RULE;
-
-RULE product_concept_feature_requires_category FOR (product_concept_feature);
-WHERE
-  WR1: SIZEOF(QUERY(pcf
-                    <* product_concept_feature
-                    | (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INCLUSION_PRODUCT_CONCEPT_FEATURE',
-                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE'] *
-                              TYPEOF(pcf)) =
-                       0) AND
-                      (SIZEOF(QUERY(aga
-                                    <* USEDIN(pcf,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_GROUP_ASSIGNMENT.ITEMS')
-                                    | (aga\group_assignment.role\object_role.name =
-                                       'specification category member') AND
-                                      ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
-                                       TYPEOF(aga.assigned_group)))) <>
-                       1))) =
-       0;
-END_RULE;
-
-RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* product_definition_relationship
-                    | (pdr.name = 'definition replacement') AND
-                      (SIZEOF(USEDIN(pdr,
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) =
-                       0))) =
-       0;
-END_RULE;
-
-RULE restrict_alternative_definition FOR (product_definition);
-LOCAL
-  solution_definitions : SET OF product_definition := [];
-END_LOCAL;
-  solution_definitions := QUERY(pd <* product_definition | (pd.frame_of_reference.name = 'alternative definition'));
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* solution_definitions
-                    | (SIZEOF(QUERY(pdr
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                                    | pdr.name = 'solution alternative definition')) <>
-                       1))) =
-       0;
-  WR2: SIZEOF(QUERY(pd <* solution_definitions | NOT (pd.name IN ['technical','supplier','technical supplier','']))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* solution_definitions
-                    | (pd.name IN ['supplier','technical supplier']) AND
-                      (SIZEOF(QUERY(aoa
-                                    <* USEDIN(pd.formation,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')
-                                    | aoa.role.name = 'supplier')) <>
-                       1))) =
-       0;
-END_RULE;
-
-RULE restrict_assembly_category FOR (product_definition);
-LOCAL
-  assembly_definitions : SET OF product_definition := [];
-END_LOCAL;
-  assembly_definitions := QUERY(pd
-                                <* product_definition
-                                | SIZEOF(QUERY(pdca
-                                               <* USEDIN(pd,
-                                                         'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
-                                               | pdca.frame_of_reference.name = 'assembly definition')) >
-                                  0);
-WHERE
-  WR1: SIZEOF(QUERY(pd <* assembly_definitions | NOT ('assembly' IN categories_of_product(pd.formation.of_product)))) =
-       0;
-END_RULE;
-
-RULE restrict_centre_of_mass_representation FOR (representation);
-WHERE
-  WR1: SIZEOF(QUERY(r
-                    <* representation
-                    | (r.name = 'centre of mass') AND
-                      ((SIZEOF(r.items) <> 1) OR
-                       (SIZEOF(QUERY(i
-                                     <* r.items
-                                     | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF(i)) AND
-                                       (i.name = 'centre point'))) <>
-                        1)))) =
-       0;
-END_RULE;
-
-RULE restrict_classification_assignments FOR (applied_classification_assignment);
-WHERE
-  WR1: SIZEOF(QUERY(aia <* applied_classification_assignment | NOT class_assignment_is_valid(aia))) = 0;
-END_RULE;
-
-RULE restrict_collection_category FOR (product_definition);
-LOCAL
-  collection_definitions : SET OF product_definition := [];
-END_LOCAL;
-  collection_definitions := QUERY(pd
-                                  <* product_definition
-                                  | SIZEOF(QUERY(pdca
-                                                 <* USEDIN(pd,
-                                                           'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
-                                                 | pdca.frame_of_reference.name = 'collection definition')) >
-                                    0);
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* collection_definitions
-                    | NOT ('collection' IN categories_of_product(pd.formation.of_product)))) =
-       0;
-END_RULE;
-
-RULE restrict_concept_feature_operator FOR (concept_feature_operator);
-WHERE
-  WR1: SIZEOF(QUERY(cfo <* concept_feature_operator | NOT (cfo.name IN ['and','or','oneof','not','implication']))) = 0;
-  WR2: SIZEOF(QUERY(cfo
-                    <* concept_feature_operator
-                    | (cfo.name = 'implication') AND
-                      (SIZEOF(QUERY(cfrwc
-                                    <* USEDIN(cfo,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR')
-                                    | SIZEOF(QUERY(ccf
-                                                   <* USEDIN(cfrwc,
-                                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDITIONAL_CONCEPT_FEATURE.CONDITION')
-                                                   | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN
-                                                          TYPEOF(ccf)))) >
-                                      0)) >
-                       0))) =
-       0;
-  WR3: SIZEOF(QUERY(cfo
-                    <* concept_feature_operator
-                    | (cfo.name = 'not') AND
-                      (SIZEOF(QUERY(cfrwc
-                                    <* USEDIN(cfo,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR')
-                                    | cfrwc.related_product_concept_feature :<>:
-                                      cfrwc.relating_product_concept_feature)) >
-                       0))) =
-       0;
-END_RULE;
-
-RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design);
-WHERE
-  WR1: SIZEOF(QUERY(cd
-                    <* configuration_design
-                    | (cd.name = 'functionality') AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-                            TYPEOF(cd.design)) OR
-                           (cd.design\product_definition.frame_of_reference.name <> 'functional definition')))) =
-       0;
-  WR2: SIZEOF(QUERY(cd
-                    <* configuration_design
-                    | (cd.name = 'realization') AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-                            TYPEOF(cd.design)) OR
-                           (cd.design\product_definition.frame_of_reference.name <> 'conceptual definition')))) =
-       0;
-  WR3: SIZEOF(QUERY(cd
-                    <* configuration_design
-                    | (cd.name IN ['functionality','realization']) AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CLASS' IN
-                            TYPEOF(cd.configuration.item_concept))))) =
-       0;
-END_RULE;
-
-RULE restrict_configuration_design_for_design_constraint FOR (configuration_design);
-WHERE
-  WR1: SIZEOF(QUERY(cd
-                    <* configuration_design
-                    | (cd.name = 'design constraint usage') AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
-                            TYPEOF(cd.design)) OR
-                           (cd.design\product_definition.frame_of_reference.name <>
-                            'design constraint definition')))) =
-       0;
-END_RULE;
-
-RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship);
-WHERE
-  WR1: SIZEOF(QUERY(gr
-                    <* group_relationship
-                    | (gr\group_relationship.name = 'class hierarchy') AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN
-                            TYPEOF(gr\group_relationship.related_group)) OR
-                           NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN
-                                TYPEOF(gr\group_relationship.relating_group))))) =
-       0;
-END_RULE;
-
-RULE restrict_group_relationship_for_specification_category FOR (group_relationship);
-WHERE
-  WR1: SIZEOF(QUERY(gr
-                    <* group_relationship
-                    | (gr.name = 'specification category hierarchy') AND
-                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
-                            TYPEOF(gr.related_group)) OR
-                           NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
-                                TYPEOF(gr.relating_group))))) =
-       0;
-END_RULE;
-
-RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment);
-WHERE
-  WR1: SIZEOF(QUERY(ala1
-                    <* attribute_language_assignment
-                    | SIZEOF(QUERY(it
-                                   <* ala1.items
-                                   | SIZEOF(QUERY(ala2
-                                                  <* USEDIN(it,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-END_RULE;
-
-RULE restrict_part_occurrence FOR (product_definition);
-LOCAL
-  part_occurrences : SET OF product_definition := QUERY(pd
-                                                        <* product_definition
-                                                        | (pd.frame_of_reference.name = 'part occurrence'));
-END_LOCAL;
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (NOT (pd.name IN
-                            ['single instance','selected instance','quantified instance','specified instance'])))) =
-       0;
-  WR2: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (SIZEOF(QUERY(pdr
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                                    | pdr.name = 'definition usage')) <>
-                       1) AND
-                      (SIZEOF(QUERY(cd
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.DESIGN')
-                                    | (cd.name = 'occurrence usage definition') AND
-                                      (NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_IDENTIFICATION' IN
-                                            TYPEOF(cd.configuration))))) <>
-                       1))) =
-       0;
-  WR3: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (SIZEOF(QUERY(cd
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')
-                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN
-                                       TYPEOF(cd)))) =
-                       0) AND
-                      (SIZEOF(USEDIN(pd,
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE')) =
-                       0))) =
-       0;
-  WR4: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (pd.name = 'selected instance') AND NOT valid_selected_instance_representation(pd))) =
-       0;
-  WR5: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (pd.name = 'quantified instance') AND
-                      (SIZEOF(QUERY(ppd
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION')
-                                    | (ppd.name = 'occurrence quantity') AND
-                                      (SIZEOF(QUERY(pdr
-                                                    <* USEDIN(ppd,
-                                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
-                                                    | (pdr.used_representation.name = 'quantity') AND
-                                                      (SIZEOF(pdr.used_representation.items) = 1) AND
-                                                      (SIZEOF(QUERY(i
-                                                                    <* pdr.used_representation.items
-                                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
-                                                                       TYPEOF(i)) AND
-                                                                      (i.name = 'quantity measure'))) =
-                                                       1))) =
-                                       1))) =
-                       0))) =
-       0;
-  WR6: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (pd.name = 'specified instance') AND
-                      (SIZEOF(QUERY(pdor
-                                    <* USEDIN(pd,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE')
-                                    | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN
-                                      TYPEOF(pdor.occurrence_usage))) =
-                       0))) =
-       0;
-END_RULE;
-
-RULE restrict_part_occurrence_category FOR (product_definition);
-LOCAL
-  part_occurrences : SET OF product_definition := QUERY(pd
-                                                        <* product_definition
-                                                        | (pd.frame_of_reference.name = 'part occurrence'));
-END_LOCAL;
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* part_occurrences
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pd.formation.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name IN ['part','raw material','tool'])) =
-                       0))) =
-       0;
-END_RULE;
-
-RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship);
-WHERE
-  WR1: 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;
-END_RULE;
-
-RULE restrict_product_definitions_for_collection FOR (product_definition_relationship);
-WHERE
-  WR1: 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,
-                                               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
-                                     | (pdca.role.name = 'part definition type') AND
-                                       (pdca.frame_of_reference.name = 'collection definition'))) =
-                        0)))) =
-       0;
-END_RULE;
-
-RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship);
-WHERE
-  WR1: 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;
-END_RULE;
-
-RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship);
-WHERE
-  WR1: 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;
-END_RULE;
-
-RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship);
-WHERE
-  WR1: 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;
-END_RULE;
-
-RULE restrict_representation_for_surface_condition FOR (property_definition_representation);
-WHERE
-  WR1: SIZEOF(QUERY(pdr
-                    <* property_definition_representation
-                    | NOT surface_condition_correlation(pdr.definition, pdr.used_representation))) =
-       0;
-END_RULE;
-
-RULE restrict_support_structure_category FOR (product_definition);
-LOCAL
-  support_structures : SET OF product_definition := [];
-END_LOCAL;
-  support_structures := QUERY(pd
-                              <* product_definition
-                              | (SIZEOF(QUERY(prpc
-                                              <* USEDIN(pd.formation.of_product,
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                              | prpc.name = 'additive manufacturing support structure')) <>
-                                 0));
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* support_structures
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pd.formation.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'part')) <>
-                       0))) =
-       0;
-END_RULE;
-
-RULE restrict_treatment_result FOR (representation);
-LOCAL
-  treatment_results : SET OF representation := [];
-END_LOCAL;
-  treatment_results := QUERY(r <* representation | (r.name = 'treatment result'));
-WHERE
-  WR1: (SIZEOF(QUERY(r <* treatment_results | (SIZEOF(r.items) > 2))) = 0) AND
-       (SIZEOF(QUERY(r
-                     <* treatment_results
-                     | (SIZEOF(QUERY(i
-                                     <* r.items
-                                     | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
-                                            TYPEOF(i)))) >
-                        0))) =
-        0);
-  WR2: SIZEOF(QUERY(r <* treatment_results | (SIZEOF(QUERY(i <* r.items | i.name = 'result')) = 0))) = 0;
-  WR3: SIZEOF(QUERY(r <* treatment_results | (SIZEOF(QUERY(i <* r.items | i.name = 'purpose')) > 1))) = 0;
-END_RULE;
-
-RULE selected_instance_usage_requires_representation FOR (assembly_component_usage);
-LOCAL
-  selected_instance_usages : SET OF assembly_component_usage := QUERY(acr
-                                                                      <* assembly_component_usage
-                                                                      | (acr.name = 'selected instance usage'));
-END_LOCAL;
-WHERE
-  WR1: SIZEOF(QUERY(acr <* selected_instance_usages | NOT valid_selected_instance_representation(acr))) = 0;
-END_RULE;
-
-RULE solution_definition_requires_solution_category FOR (product_definition);
-LOCAL
-  solution_definitions : SET OF product_definition := [];
-END_LOCAL;
-  solution_definitions := QUERY(pd <* product_definition | (pd.frame_of_reference.name = 'alternative definition'));
-WHERE
-  WR1: SIZEOF(QUERY(pd
-                    <* solution_definitions
-                    | (SIZEOF(QUERY(prpc
-                                    <* USEDIN(pd.formation.of_product,
-                                              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
-                                    | prpc.name = 'alternative solution')) =
-                       0))) =
-       0;
-END_RULE;
-
-RULE styled_curve FOR (styled_item);
-WHERE
-  WR1: SIZEOF(QUERY(si
-                    <* styled_item
-                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF(si.item)) AND
-                      (SIZEOF(QUERY(psa
-                                    <* si.styles
-                                    | (SIZEOF(QUERY(cs
-                                                    <* psa.styles
-                                                    | ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN
-                                                       TYPEOF(cs)))) >
-                                       0))) <>
-                       1))) =
-       0;
-END_RULE;
-
-RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance);
-WHERE
-  WR1: SIZEOF(QUERY(gt
-                    <* geometric_tolerance
-                    | NOT (type_check_function(gt,
-                                               ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULARITY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COAXIALITY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCENTRICITY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICITY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLATNESS_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARALLELISM_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERPENDICULARITY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRAIGHTNESS_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMMETRY_TOLERANCE',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE'],
-                                               2)))) =
-       0;
-END_RULE;
-
-RULE subtype_exclusiveness_representation_item FOR (representation_item);
-WHERE
-  WR1: SIZEOF(QUERY(cri
-                    <* representation_item
-                    | NOT (type_check_function(cri,
-                                               ['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM',
-                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM'],
-                                               3)))) =
-       0;
-END_RULE;
-
-RULE subtype_mandatory_shape_representation FOR (shape_representation);
-WHERE
-  WR1: SIZEOF(QUERY(sr
-                    <* shape_representation
-                    | NOT ((SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEVELED_SHEET_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHEET_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS',
-                                    'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION'] *
-                                   TYPEOF(sr)) =
-                            1) OR
-                           (SIZEOF(QUERY(it
-                                         <* sr\representation.items
-                                         | NOT ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
-                                                TYPEOF(it)))) =
-                            0) OR
-                           (SIZEOF(QUERY(sdr
-                                         <* QUERY(pdr
-                                                  <* USEDIN(sr,
-                                                            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
-                                                  | 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN
-                                                    TYPEOF(pdr))
-                                         | NOT (SIZEOF(['AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT',
-                                                        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP'] *
-                                                       TYPEOF(sdr.definition)) =
-                                                1))) =
-                            0)))) =
-       0;
-END_RULE;
-
-RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font);
-WHERE
-  WR1: SIZEOF(QUERY(pdtf
-                    <* pre_defined_text_font
-                    | SIZEOF(USEDIN(pdtf, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT')) = 0)) =
-       0;
-  WR2: SIZEOF(QUERY(edtf
-                    <* externally_defined_text_font
-                    | SIZEOF(USEDIN(edtf, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT')) = 0)) =
-       0;
-END_RULE;
-
-RULE tolerance_zone_form_name_constraint FOR (tolerance_zone_form);
-LOCAL
-  names : SET OF STRING := ['within a circle',
-                            'within a cylinder',
-                            'within a cone',
-                            'within a single complex surface',
-                            'within a sphere',
-                            'between two coaxial cylinders',
-                            'between two concentric circles',
-                            'between two equidistant curves',
-                            'between two equidistant complex lines or two parallel straight lines',
-                            'between two equidistant complex surfaces or two parallel planes',
-                            'between two equidistant surfaces',
-                            'between two non-equidistant complex lines or two non-parallel straight lines',
-                            'between two non-equidistant complex surfaces or two non-parallel planes',
-                            'between two parallel circles on a conical surface',
-                            'between two parallel circles of the same diameter',
-                            'non uniform',
-                            'cylindrical or circular',
-                            'spherical',
-                            'unknown'];
-  pass  : BOOLEAN       := true;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(tolerance_zone_form)
-  WHILE pass;
-    pass := (tolerance_zone_form[i].name IN names);
-  END_REPEAT;
-WHERE
-  WR1: pass;
-END_RULE;
-
-RULE transition_feature_on_part_boundary FOR (transition_feature);
-WHERE
-  WR1: SIZEOF(QUERY(tf <* transition_feature | NOT (tf.product_definitional))) = 0;
-END_RULE;
-
-RULE unique_datum_system FOR (datum_system);
-LOCAL
-  pass : BOOLEAN := true;
-END_LOCAL;
-  REPEAT i := 1 TO SIZEOF(datum_system);
-    REPEAT j := 1 TO SIZEOF(datum_system);
-      IF (i <> j)
-      THEN
-        IF datum_system[i]\datum_system.constituents = datum_system[j]\datum_system.constituents
-        THEN
-          pass := false;
-        END_IF;
-      END_IF;
-    END_REPEAT;
-  END_REPEAT;
-WHERE
-  WR1: pass;
-END_RULE;
-
-RULE unique_gdt_element_id_constraint FOR (product_definition_shape,
-                                           dimensional_location,
-                                           dimensional_size,
-                                           shape_aspect,
-                                           shape_aspect_relationship);
-LOCAL
-  bss  : BAG OF STRING                    := [];
-  ds   : SET OF dimensional_size          := QUERY(ds <* dimensional_size | EXISTS(ds\dimensional_size.id));
-  sa   : SET OF shape_aspect              := QUERY(sa <* shape_aspect | EXISTS(sa\shape_aspect.id));
-  sar  : SET OF shape_aspect_relationship := QUERY(sar
-                                                   <* shape_aspect_relationship
-                                                   | EXISTS(sar\shape_aspect_relationship.id));
-  ssa  : SET OF shape_aspect              := [];
-  pass : BOOLEAN                          := true;
-END_LOCAL;
-  REPEAT ii := 1 TO SIZEOF(product_definition_shape)
-  WHILE pass;
-    bss := [];
-    ssa := bag_to_set(USEDIN(product_definition_shape[ii],
-                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'));
-    REPEAT i := 1 TO SIZEOF(ds);
-      IF (ds[i]\dimensional_size.applies_to IN ssa)
-      THEN
-        bss := bss + ds[i]\dimensional_size.id;
-      END_IF;
-    END_REPEAT;
-    REPEAT i := 1 TO SIZEOF(sa);
-      IF (sa[i] IN ssa)
-      THEN
-        bss := bss + sa[i]\shape_aspect.id;
-      END_IF;
-    END_REPEAT;
-    REPEAT i := 1 TO SIZEOF(sar);
-      IF (sar[i]\shape_aspect_relationship.relating_shape_aspect IN ssa)
-      THEN
-        bss := bss + sar[i]\shape_aspect_relationship.id;
-      END_IF;
-    END_REPEAT;
-    IF (SIZEOF(bag_to_set(bss)) <> SIZEOF(bss))
-    THEN
-      pass := false;
-    END_IF;
-  END_REPEAT;
-WHERE
-  WR1: pass;
-END_RULE;
-
-RULE valid_product_and_manufacturing_information_view_contexts FOR (product_definition_context);
-LOCAL
-  design_view_contexts                                 : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.life_cycle_stage =
-                                                                                                      'design');
-  gdt_representation_view_contexts                     : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'geometrical dimensioning and tolerancing representation');
-  machining_feature_view_contexts                      : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'machining feature');
-  material_specification_view_contexts                 : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'material specification');
-  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');
-  model_based_view_contexts                            : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'model based product geometry');
-  process_state_view_contexts                          : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'process state');
-  surface_finish_view_contexts                         : SET OF product_definition_context := QUERY(pdc
-                                                                                                    <* product_definition_context
-                                                                                                    | pdc.frame_of_reference.application =
-                                                                                                      'surface finish');
-  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;
-  need_initial_model_based_view_contexts               : SET OF product_definition_context := gdt_representation_view_contexts +
-                                                                                              model_based_3d_annotation_presentation_view_contexts;
-END_LOCAL;
-WHERE
-  WR1: SIZEOF(gdt_representation_view_contexts * design_view_contexts) = SIZEOF(gdt_representation_view_contexts);
-  WR2: SIZEOF(machining_feature_view_contexts * design_view_contexts) = SIZEOF(machining_feature_view_contexts);
-  WR3: SIZEOF(material_specification_view_contexts * design_view_contexts) =
-       SIZEOF(material_specification_view_contexts);
-  WR4: SIZEOF(model_based_3d_annotation_presentation_view_contexts * design_view_contexts) =
-       SIZEOF(model_based_3d_annotation_presentation_view_contexts);
-  WR5: SIZEOF(model_based_view_contexts * design_view_contexts) = SIZEOF(model_based_view_contexts);
-  WR6: SIZEOF(process_state_view_contexts * design_view_contexts) = SIZEOF(process_state_view_contexts);
-  WR7: SIZEOF(surface_finish_view_contexts * design_view_contexts) = SIZEOF(surface_finish_view_contexts);
-  WR8: SIZEOF(QUERY(mbvc
-                    <* model_based_view_contexts
-                    | (SIZEOF(USEDIN(mbvc,
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE')) =
-                       0))) =
-       SIZEOF(model_based_view_contexts);
-  WR9: SIZEOF(QUERY(avc
-                    <* additional_view_contexts
-                    | (SIZEOF(USEDIN(avc,
-                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FRAME_OF_REFERENCE')) =
-                       0))) =
-       SIZEOF(additional_view_contexts);
-  WR10: SIZEOF(QUERY(nimbvc
-                     <* need_initial_model_based_view_contexts
-                     | NOT (SIZEOF(QUERY(pdca
-                                         <* USEDIN(nimbvc,
-                                                   'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.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;
-  WR11: SIZEOF(QUERY(gdt_pdc
-                     <* gdt_representation_view_contexts
-                     | SIZEOF(['ISO 1101','ASME Y14.5'] * get_associated_mandatory_document_ids(gdt_pdc)) = 0)) =
-        0;
-  WR12: 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;
-END_RULE;
-
-RULE validate_dependently_instantiable_entity_data_types FOR (aggregate_id_attribute,
-                                                              attribute_value_role,
-                                                              camera_model_d2,
-                                                              classification_assignment_relationship,
-                                                              concept_feature_relationship,
-                                                              concept_feature_relationship_with_condition,
-                                                              data_equivalence_assessment_specification,
-                                                              data_equivalence_criteria_representation,
-                                                              data_equivalence_criterion,
-                                                              data_equivalence_inspection_instance_report_item,
-                                                              data_equivalence_inspection_requirement,
-                                                              data_equivalence_inspection_result_representation,
-                                                              document_usage_constraint,
-                                                              edge_blended_solid,
-                                                              effectivity_context_role,
-                                                              event_occurrence_role,
-                                                              explicit_procedural_representation_item_relationship,
-                                                              founded_item,
-                                                              indirectly_selected_elements,
-                                                              location_representation_role,
-                                                              location_role,
-                                                              modified_solid_with_placed_configuration,
-                                                              one_direction_repeat_factor,
-                                                              organization_type_role,
-                                                              procedural_representation,
-                                                              procedural_representation_sequence,
-                                                              product_definition_effectivity,
-                                                              product_definition_relationship_relationship,
-                                                              runout_zone_orientation,
-                                                              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);
-LOCAL
-  number_of_input_instances : INTEGER;
-  previous_in_chain         : LIST OF GENERIC := [];
-  set_of_input_types        : SET OF STRING   := [];
-  all_instances             : SET OF GENERIC  := [];
-END_LOCAL;
-  all_instances := all_instances + aggregate_id_attribute;
-  all_instances := all_instances + attribute_value_role;
-  all_instances := all_instances + camera_model_d2;
-  all_instances := all_instances + classification_assignment_relationship;
-  all_instances := all_instances + concept_feature_relationship;
-  all_instances := all_instances + concept_feature_relationship_with_condition;
-  all_instances := all_instances + data_equivalence_assessment_specification;
-  all_instances := all_instances + data_equivalence_criteria_representation;
-  all_instances := all_instances + data_equivalence_criterion;
-  all_instances := all_instances + data_equivalence_inspection_instance_report_item;
-  all_instances := all_instances + data_equivalence_inspection_requirement;
-  all_instances := all_instances + data_equivalence_inspection_result_representation;
-  all_instances := all_instances + document_usage_constraint;
-  all_instances := all_instances + edge_blended_solid;
-  all_instances := all_instances + effectivity_context_role;
-  all_instances := all_instances + event_occurrence_role;
-  all_instances := all_instances + explicit_procedural_representation_item_relationship;
-  all_instances := all_instances + founded_item;
-  all_instances := all_instances + indirectly_selected_elements;
-  all_instances := all_instances + location_representation_role;
-  all_instances := all_instances + location_role;
-  all_instances := all_instances + modified_solid_with_placed_configuration;
-  all_instances := all_instances + one_direction_repeat_factor;
-  all_instances := all_instances + organization_type_role;
-  all_instances := all_instances + procedural_representation;
-  all_instances := all_instances + procedural_representation_sequence;
-  all_instances := all_instances + product_definition_effectivity;
-  all_instances := all_instances + product_definition_relationship_relationship;
-  all_instances := all_instances + runout_zone_orientation;
-  all_instances := all_instances + solid_with_depression;
-  all_instances := all_instances + solid_with_hole;
-  all_instances := all_instances + solid_with_pocket;
-  all_instances := all_instances + solid_with_protrusion;
-  all_instances := all_instances + solid_with_shape_element_pattern;
-  all_instances := all_instances + solid_with_slot;
-  all_instances := all_instances + swept_area_solid;
-  all_instances := all_instances + symbol_target;
-  all_instances := all_instances + two_direction_repeat_factor;
-  all_instances := all_instances + user_selected_elements;
-  ;
-  number_of_input_instances := SIZEOF(all_instances);
-  REPEAT i := 1 TO number_of_input_instances;
-    set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
-  END_REPEAT;
-WHERE
-  WR1: dependently_instantiated(all_instances, set_of_input_types, previous_in_chain);
-END_RULE;
-END_SCHEMA;
diff --git a/src/ExpToCasExe/expformat.l b/src/ExpToCasExe/expformat.l
deleted file mode 100644 (file)
index 797eeff..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-%{
-
-/* This LEX scanner is intended for formatting EXPRESS definitions */
-/* in order to allow comparison with other: */
-/* - remove comments */
-/* - remove all spaces */
-/* - insert a CR (\n) after each ';' */
-/* - insert a space after each word (identifier or number) */
-
-/************************************/
-/* Section 1                        */
-/* definitions                      */
-%}
-
-
-%x COMM
-
-KEYWORD    [A-Z_]+
-NAME       [a-z_][a-z0-9_]*
-NUMBER     [0-9]+
-SPACE      [ \t\n]
-SPC        {SPACE}+
-SP         {SPACE}*
-
-%{
-
-static int fun_level=0;
-
-/************************************/
-/* Section 2                        */
-/* parsing rules                    */
-%}
-
-%%
-
-"--".*               ; /* Eat line comments */
-"(*"                 BEGIN(COMM);
-<COMM>.|\n           ; /* Eat multiline comments */
-<COMM>"*)"           BEGIN(0);
-
-;                    printf ( ";\n" );
-[A-Za-z_0-9+-]+      printf ( "%s ", yytext );
-[ \t\n]+             ; /* condense spaces */
-
-%%
-
-/************************************/
-/* Section 3                        */
-/* calling and auxiliary procedures */
-
-int main ( void )
-{
-  yylex();
-}
-
-int yywrap(void) { return 1; }
diff --git a/src/ExpToCasExe/explist.l b/src/ExpToCasExe/explist.l
deleted file mode 100644 (file)
index 62a1120..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-%{
-
-/* This LEX scanner produces list of items included in the EXPRESS schema  */
-/* (TYPE, ENTITY, FUNCTION, RULE) */
-
-/************************************/
-/* Section 1                        */
-/* definitions                      */
-%}
-
-
-%x CONST, TYP, TYP1, ENT, ENT1, LIST, COMM, SKP, FUN, FUN1, RUL
-
-KEYWORD    [A-Z_]+
-NAME       [a-z_][a-z0-9_]*
-NUMBER     [0-9]+
-SPACE      [ \t\n]
-SPC        {SPACE}+
-SP         {SPACE}*
-
-%{
-
-static int fun_level=0;
-
-/************************************/
-/* Section 2                        */
-/* parsing rules                    */
-%}
-
-%%
-
-"--".*               ; /* Eat line comments */
-"(*"                 { printf ( "Starting multiline comment\n" ); BEGIN(COMM); }
-<COMM>.|\n           ; /* Eat multiline comments */
-<COMM>"*)"           { printf ( "End of multiline comment\n" ); BEGIN(0); }
-
-SCHEMA" "{NAME};     printf ( "Starting %s\n", yytext ); 
-END_SCHEMA;          printf ( "Schema finished\n" );
-
-TYPE                 { BEGIN(TYP); }
-<TYP>{NAME}          { printf ( "TYPE %s\n", yytext ); BEGIN(TYP1); }
-<TYP1>.|\n           ; /* eat any unrecognized data */
-<TYP,TYP1,SKP>END_TYPE  { printf ( "\n" ); BEGIN(0); }
-
-ENTITY               { BEGIN(ENT); }
-<ENT>{NAME}          { printf ( "ENTITY %s\n", yytext ); BEGIN(ENT1); }
-<ENT1>.|\n           ; /* eat any unrecognized data */
-<ENT,ENT1,SKP>END_ENTITY  BEGIN(0);
-
-<ENT,TYP>DERIVE      |
-<ENT,TYP>WHERE       BEGIN(SKP);
-<SKP>.|\n            ; /* eat contents of WHERE and DERIVE subclauses */
-
-<INITIAL,FUN1>^{SP}FUNCTION  { BEGIN(FUN); fun_level++; }
-<FUN>{NAME}          { printf ( "FUNCTION %s\n", yytext ); BEGIN(FUN1); }
-<FUN1>.|\n           ; /* eat contents of WHERE and DERIVE subclauses */
-<FUN,FUN1>END_FUNCTION  { fun_level--; if ( ! fun_level ) BEGIN(0); }
-
-RULE                 { BEGIN(RUL); }
-<RUL>{NAME}          { printf ( "RULE %s\n", yytext ); BEGIN(SKP); }
-<RUL,SKP>END_RULE        BEGIN(0);
-
-.|\n                 ; /* eat any unrecognized data */
-
-%%
-
-/************************************/
-/* Section 3                        */
-/* calling and auxiliary procedures */
-
-int main ( void )
-{
-  yylex();
-}
-
-int yywrap(void) { return 1; }
diff --git a/src/ExpToCasExe/expparse.cxx b/src/ExpToCasExe/expparse.cxx
deleted file mode 100644 (file)
index 2b28964..0000000
+++ /dev/null
@@ -1,1339 +0,0 @@
-
-# line 2 "Express.y"
-
-// Created:    Thu Oct 28 12:21:16 1999
-// Author:     Andrey BETENEV
-// Copyright (c) 1999-2020 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-/*****************************************************************************\
-
-This YACC parser implements parsing algorithm for EXPRESS -> CASCADE/XSTEP
-classes generator
-
-Input in the form of tokens is obtained from lexical analyser. Then, data 
-structure representing schema is created on the basis of grammar analysis.
-
-NOTE: The grammar currently implemented is not full. 
-FUNCTION, RULE and CONSTANT items, WHERE, INVERSE and DERIVE clauses 
-of TYPE and ENTITY items are not considered (ignored on the level of lexical 
-scanner). 
-SUPERTYPE and UNIQUE clauses of ENTITY item are recognized but ignored.
-Also, complex constructs such as using call to function in dimensions of 
-complex time or redefinition of inherited field are ignored.
-
-\*****************************************************************************/
-
-#include <TCollection_HAsciiString.hxx>
-#include <TColStd_HSequenceOfHAsciiString.hxx>
-#include <Express_HSequenceOfField.hxx>
-#include <Express_HSequenceOfItem.hxx>
-#include <Express_Field.hxx>
-#include <Express_Item.hxx>
-#include <Express_Enum.hxx>
-#include <Express_Alias.hxx>
-#include <Express_Select.hxx>
-#include <Express_Entity.hxx>
-#include <Express_Type.hxx>
-#include <Express_NamedType.hxx>
-#include <Express_PredefinedType.hxx>
-#include <Express_Number.hxx>
-#include <Express_Integer.hxx>
-#include <Express_Boolean.hxx>
-#include <Express_Logical.hxx>
-#include <Express_Real.hxx>
-#include <Express_String.hxx>
-#include <Express_ComplexType.hxx>
-#include <Express_Array.hxx>
-#include <Express_List.hxx>
-#include <Express_Set.hxx>
-#include <Express_Bag.hxx>
-#include <Express_Schema.hxx>
-#include <Express_Reference.hxx>
-#include <Express.hxx>
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable:4244)
-#pragma warning(disable:4274)
-#pragma warning(disable:4800)
-#endif
-#if defined(__clang__)
-#pragma GCC diagnostic ignored "-Wmissing-braces"
-#endif
-#if __cplusplus > 199711L
-#define register// Deprecated in C++11.
-#endif
-
-/************************************************/
-/* ERROR MESSAGE FUNCTION                       */
-
-/* external functions (from Express.l) */
-int ec_error ( char const *s, char const *text );
-int ec_curline ( void );
-
-#define yyerror ec_error
-void ec_error ( char const *s )
-{
-  printf ( "\nParse error at line %d: %s\n", ec_curline(), s );
-}
-
-/************************************************/
-/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
-
-static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist );
-static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq );
-static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static Express_Item *mkalias ( char *name, Express_Type *type );
-static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
-                                Express_HSequenceOfField *field, int isabstract );
-static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items);
-static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, TColStd_HSequenceOfHAsciiString *tlist2 );
-static Express_Type *mktstd ( int keyword );
-static Express_Type *mktname ( char *name );
-static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of );
-static Express_Field *mkfield ( char *name, Express_Type *type, int optional );
-static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq );
-
-
-# line 91 "Express.y"
-typedef union
-#ifdef __cplusplus
-       YYSTYPE
-#endif
- {
-  int num;
-  char *str;
-  TColStd_HSequenceOfHAsciiString *tlist;
-  Express_HSequenceOfField *flist;
-  Express_HSequenceOfItem *ilist;
-  Express_Field *field;
-  Express_Item *item;
-  Express_Type *type;
-  Express_Schema *schema;
-  Express_Reference *ref;
-} YYSTYPE;
-# define KSCHEM 257
-# define KENDS 258
-# define KTYP 259
-# define KENDT 260
-# define KENT 261
-# define KENDE 262
-# define KREF 263
-# define KFROM 264
-# define KSEL 265
-# define KENUM 266
-# define KLIST 267
-# define KARR 268
-# define KBAG 269
-# define KSET 270
-# define KOF 271
-# define KNUM 272
-# define KINT 273
-# define KDBL 274
-# define KSTR 275
-# define KLOG 276
-# define KBOOL 277
-# define KOPT 278
-# define KUNIQ 279
-# define KSELF 280
-# define KABSTR 281
-# define KSUBT 282
-# define KSPRT 283
-# define KANDOR 284
-# define K1OF 285
-# define KAND 286
-# define NUMBER 287
-# define NAME 288
-
-#ifdef __STDC__
-#include <stdlib.h>
-#include <string.h>
-#else
-#include <malloc.h>
-#include <memory.h>
-#endif
-
-#ifdef __cplusplus
-
-#ifndef yyerror
-       void yyerror(const char *);
-#endif
-
-#ifndef yylex
-#ifdef __EXTERN_C__
-       extern "C" { int yylex(void); }
-#else
-       int yylex(void);
-#endif
-#endif
-       int yyparse(void);
-
-#endif
-#define yyclearin yychar = -1
-#define yyerrok yyerrflag = 0
-extern int yychar;
-extern int yyerrflag;
-YYSTYPE yylval;
-YYSTYPE yyval;
-typedef int yytabelem;
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 150
-#endif
-#if YYMAXDEPTH > 0
-int yy_yys[YYMAXDEPTH], *yys = yy_yys;
-YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
-#else  /* user does initial allocation */
-int *yys;
-YYSTYPE *yyv;
-#endif
-static int yymaxdepth = YYMAXDEPTH;
-# define YYERRCODE 256
-
-# line 266 "Express.y"
-
-
-/************************************************/
-/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
-
-static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist )
-{
-  Express_Schema *sch = new Express_Schema ( name, ilist );
-  Express::Schema() = sch;
-  return sch;
-}
-
-static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq )
-{
-  if ( ! seq ) { 
-    seq = new Express_HSequenceOfItem;
-    seq->Append ( item );
-  }
-  else seq->Prepend ( item );
-  return seq;
-}
-
-static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  return new Express_Enum ( name, tlist );
-}
-
-static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  return new Express_Select ( name, tlist );
-}
-
-static Express_Item *mkalias ( char *name, Express_Type *type )
-{
-  return new Express_Alias ( name, type );
-}
-
-static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
-                                Express_HSequenceOfField *field, int isabstract )
-{
-  Express_Entity *ent = new Express_Entity ( name, inherit, field );
-  if ( isabstract ) ent->SetAbstractFlag ( Standard_True );
-  return ent;
-}
-
-static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items)
-{
-  return new Express_Reference ( name, items );
-}
-
-static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString ( name );
-  if ( tlist ) tlist->Prepend ( str );
-  else {
-    tlist = new TColStd_HSequenceOfHAsciiString;
-    tlist->Append ( str );
-  }
-  return tlist;
-}
-
-static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, 
-                                                  TColStd_HSequenceOfHAsciiString *tlist2 )
-{
-  if ( ! tlist1 ) return tlist2;
-  if ( ! tlist2 ) return tlist1;
-  for ( int i=1; i <= tlist2->Length(); i++ )
-    tlist1->Append ( tlist2->Value(i) );
-  return tlist1;
-}
-
-static Express_Type *mktstd ( int keyword )
-{
-  switch ( keyword ) {
-  case KINT : return new Express_Integer;
-  case KNUM : return new Express_Number;
-  case KDBL : return new Express_Real;
-  case KSTR : return new Express_String;
-  case KBOOL: return new Express_Boolean;
-  case KLOG : return new Express_Logical;
-  default   : ec_error ( "Predefined type not treated!", "" );
-              return NULL;
-  }
-}
-
-static Express_Type *mktname ( char *name )
-{
-  return new Express_NamedType ( name );
-}
-
-static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of )
-{
-  switch ( keyword ) {
-  case KLIST: return new Express_List  ( ilow, ihigh, of );
-  case KARR : return new Express_Array ( ilow, ihigh, of );
-  case KBAG : return new Express_Bag   ( ilow, ihigh, of );
-  case KSET : return new Express_Set   ( ilow, ihigh, of );
-  default   : ec_error ( "Complex type not treated!", "" );
-              return NULL;
-  }
-}
-
-static Express_Field *mkfield ( char *name, Express_Type *type, int optional )
-{
-  return new Express_Field ( name, type, optional );
-}
-
-static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq )
-{
-  if ( seq ) seq->Prepend ( field );
-  else {
-    seq = new Express_HSequenceOfField;
-    seq->Append ( field );
-  }
-  return seq;
-}
-
-/*******************************************************************/
-/* External interface to result of parsing */
-
-Handle(Express_Schema) ec_parse ( FILE *fin )
-{
-  extern FILE *yyin;
-  yyin = fin;
-  yyparse();
-  return Express::Schema();
-}
-
-/*******************************************************************/
-/* MAIN & co */
-
-/*
-void tlistfree ( struct tlist *list )
-{
-  if ( ! list ) return;
-  tlistfree ( list->next );
-  list->next = 0;
-  free ( list->str );
-  list->str = 0;
-}
-* /
-
-int printtlist ( struct ec_tlist *tl )
-{
-  int num=0;
-  while ( tl ) {
-    num++;
-    printf ( "%s\n", tl->name );
-    tl = tl->next;
-  }
-  return num;
-}
-
-int main ( void )
-{
-  int num = 0;
-  yyparse();
-
-  printf ( "\nFinished\n" );
-  if ( schema ) {
-    struct ec_item *it;
-    it = schema->items;
-    printf ( "\nSchema %s", schema->name );
-    printf ( "\nItems:" );
-    while ( it ) {
-      num++;
-      printf ( "\n%s", it->name );
-      it = it->next;
-    }
-//    num = printtlist ( res );
-    printf ( "\nTotal %d", num );
-  }
-
-//  tlistfree ( yylval.tlist );
-  return num;
-}
-*/
-static const yytabelem yyexca[] ={
--1, 1,
-       0, -1,
-       -2, 0,
-       };
-# define YYNPROD 67
-# define YYLAST 279
-static const yytabelem yyact[]={
-
-    23,    22,    35,    36,    38,    37,    65,    29,    28,    30,
-    31,    32,    33,    56,   117,   113,   106,    61,    16,    35,
-    36,    38,    37,    34,    29,    28,    30,    31,    32,    33,
-   139,   139,    15,    75,     3,   101,   145,    21,   162,   138,
-    34,    74,    78,    20,    93,    21,    40,   115,   135,   134,
-   133,   132,    52,    43,    42,   131,   110,    11,   158,    12,
-   102,    83,    62,    13,     2,    24,   144,   116,   104,   111,
-    92,    63,   124,   123,   122,   120,   152,    97,    50,    49,
-    48,    47,    70,    71,    18,    54,   153,   150,   149,   143,
-   140,   125,   119,   103,    86,    82,    77,    59,    51,    46,
-    17,     4,   129,   127,    96,    91,    90,    89,    87,   130,
-   163,   160,   151,    85,    60,    79,    39,   121,    84,    88,
-    67,    68,    69,    44,    45,    19,     5,    -1,     1,    72,
-     6,    10,     9,    14,     8,     7,    27,    26,    25,   112,
-    73,   114,    80,    81,     0,     0,    41,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    94,    95,    53,   105,
-    98,   107,   108,   109,    99,   100,     0,    58,     0,   118,
-     0,     0,     0,     0,     0,     0,    76,     0,     0,     0,
-   128,     0,   126,     0,     0,     0,   137,     0,     0,     0,
-     0,     0,     0,     0,     0,   141,   136,     0,   142,     0,
-   146,   147,   148,     0,     0,     0,     0,     0,     0,     0,
-   154,     0,   155,   156,   157,     0,     0,     0,     0,   161,
-   159,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    64,    66,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    57,     0,
-     0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    78 };
-static const yytabelem yypact[]={
-
-  -193,-10000000,  -254,    42,  -202,  -195,  -202,-10000000,-10000000,-10000000,
--10000000,  -256,  -270,    41,-10000000,    23,  -238,-10000000,  -265,  -236,
-  -246,  -217,  -218,    84,    40,-10000000,-10000000,-10000000,-10000000,-10000000,
--10000000,-10000000,-10000000,-10000000,-10000000,   -10,   -11,   -12,   -13,    39,
-  -219,  -236,   -27,    84,    38,  -271,  -198,   -57,   -57,   -57,
-   -57,  -247,    84,    37,  -242,    71,   -27,   -27,    36,  -199,
-    77,    69,    35,    50,-10000000,-10000000,    79,    49,    48,    47,
-  -235,-10000000,  -247,  -247,    46,   -15,-10000000,  -247,   -27,   -27,
-    -6,-10000000,  -200,    34,-10000000,  -271,-10000000,   -57,  -272,   -57,
-   -57,   -57,  -206,  -273,-10000000,-10000000,  -231,  -274,  -235,-10000000,
--10000000,-10000000,    33,-10000000,-10000000,   -18,    76,   -19,   -20,   -21,
-    32,-10000000,  -273,    45,  -248,-10000000,    44,    63,  -207,-10000000,
-  -220,-10000000,  -221,  -222,  -223,-10000000,-10000000,  -249,    31,  -248,
-  -274,    30,  -243,  -243,  -243,  -243,    29,    28,    68,   -16,
--10000000,    27,-10000000,-10000000,  -248,-10000000,  -248,  -248,  -248,-10000000,
--10000000,  -249,  -274,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,    67,
-  -250,-10000000,    66,  -250 };
-static const yytabelem yypgo[]={
-
-     0,    71,   141,    66,   125,    85,   140,    58,    68,   123,
-   139,    69,    70,   116,    67,    65,   138,   137,   136,   135,
-   134,   132,   131,   130,   126,   129,    83,    82,   128,   127 };
-static const yytabelem yyr1[]={
-
-     0,    28,    24,    24,    23,    23,    23,    23,    19,    20,
-    21,    22,    22,    29,     8,     8,     9,    15,    15,    15,
-    16,    16,    16,    16,    16,    16,    17,    18,    18,    18,
-    18,     1,     1,     1,     3,     3,    13,    13,     4,     4,
-     4,     5,     5,     5,     5,     5,    26,    26,    26,    26,
-    27,    27,    25,     6,    14,    14,     2,     2,    10,    10,
-    11,    11,    12,    12,     7,     7,     7 };
-static const yytabelem yyr2[]={
-
-     0,    13,     3,     5,     2,     2,     2,     3,    19,    17,
-    15,    19,    21,    11,     3,     7,     7,     2,     2,     3,
-     3,     3,     3,     3,     3,     3,     3,    19,    19,    19,
-    19,     3,     3,     9,     1,     3,     1,     7,     1,     3,
-     7,     3,     7,     7,     5,     7,     3,     5,     3,     5,
-     1,     3,    11,    13,     3,     7,     1,     3,     9,     9,
-     3,     5,     1,     5,     7,    11,     7 };
-static const yytabelem yychk[]={
-
--10000000,   -28,   257,   288,    59,   -24,   -23,   -19,   -20,   -21,
-   -22,   259,   261,   258,   -24,   288,   288,    59,    61,    -4,
-   281,   283,   266,   265,   -15,   -16,   -17,   -18,   273,   272,
-   274,   275,   276,   277,   288,   267,   268,   270,   269,   -13,
-   282,    -4,   271,   271,    -9,    40,    59,    91,    91,    91,
-    91,    59,   271,   -13,    -5,   288,    40,   285,    -9,    59,
-    -8,   288,   260,    -1,   287,    63,   288,    -1,    -1,    -1,
-   -27,   -26,   -25,    -6,   288,   280,    -9,    59,   284,    44,
-    -5,    -5,    59,   260,    41,    44,    59,    58,    40,    58,
-    58,    58,   -12,   279,   -26,   -26,    58,    92,   -27,    -5,
-    -5,    41,   260,    59,    -8,    -1,   288,    -1,    -1,    -1,
-   262,   -11,   -10,   288,    -2,   278,   -14,   288,   -12,    59,
-    93,    41,    93,    93,    93,    59,   -11,    58,   -15,    58,
-    46,   262,   271,   271,   271,   271,    -8,    -7,   288,   280,
-    59,   -15,   -14,    59,    -3,   279,    -3,    -3,    -3,    59,
-    59,    44,    92,    59,   -15,   -15,   -15,   -15,    -7,   -14,
-    44,    -7,   288,    44 };
-static const yytabelem yydef[]={
-
-     0,    -2,     0,     0,     0,     0,     2,     4,     5,     6,
-     7,     0,     0,     0,     3,     0,    38,     1,     0,    36,
-    38,    39,     0,     0,     0,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,     0,     0,     0,     0,     0,
-     0,    36,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    50,     0,     0,    40,    41,     0,     0,     0,     0,
-     0,    14,     0,     0,    31,    32,     0,     0,     0,     0,
-    62,    51,    46,    48,     0,     0,    37,    50,     0,     0,
-     0,    44,     0,     0,    16,     0,    10,     0,     0,     0,
-     0,     0,     0,     0,    47,    49,    56,     0,    62,    45,
-    43,    42,     0,     9,    15,     0,     0,     0,     0,     0,
-     0,    63,    60,     0,     0,    57,     0,    54,     0,     8,
-     0,    33,     0,     0,     0,    11,    61,     0,     0,     0,
-     0,     0,    34,    34,    34,    34,     0,     0,    14,     0,
-    52,     0,    55,    12,     0,    35,     0,     0,     0,    58,
-    59,     0,     0,    53,    27,    28,    29,    30,    66,    64,
-     0,    65,     0,     0 };
-typedef struct
-#ifdef __cplusplus
-       yytoktype
-#endif
-{ char *t_name; int t_val; } yytoktype;
-#ifndef YYDEBUG
-#      define YYDEBUG  0       /* don't allow debugging */
-#endif
-
-#if YYDEBUG
-
-yytoktype yytoks[] =
-{
-       "KSCHEM",       257,
-       "KENDS",        258,
-       "KTYP", 259,
-       "KENDT",        260,
-       "KENT", 261,
-       "KENDE",        262,
-       "KREF", 263,
-       "KFROM",        264,
-       "KSEL", 265,
-       "KENUM",        266,
-       "KLIST",        267,
-       "KARR", 268,
-       "KBAG", 269,
-       "KSET", 270,
-       "KOF",  271,
-       "KNUM", 272,
-       "KINT", 273,
-       "KDBL", 274,
-       "KSTR", 275,
-       "KLOG", 276,
-       "KBOOL",        277,
-       "KOPT", 278,
-       "KUNIQ",        279,
-       "KSELF",        280,
-       "KABSTR",       281,
-       "KSUBT",        282,
-       "KSPRT",        283,
-       "KANDOR",       284,
-       "K1OF", 285,
-       "KAND", 286,
-       "NUMBER",       287,
-       "NAME", 288,
-       ",",    44,
-       "-unknown-",    -1      /* ends search */
-};
-
-char * yyreds[] =
-{
-       "-no such reduction-",
-       "SCHEMA : KSCHEM NAME ';' ILIST KENDS ';'",
-       "ILIST : ITEM",
-       "ILIST : ITEM ILIST",
-       "ITEM : ENUM",
-       "ITEM : SELECT",
-       "ITEM : ALIAS",
-       "ITEM : ENTITY",
-       "ENUM : KTYP NAME '=' KENUM KOF TLIST1 ';' KENDT ';'",
-       "SELECT : KTYP NAME '=' KSEL TLIST1 ';' KENDT ';'",
-       "ALIAS : KTYP NAME '=' TYPE ';' KENDT ';'",
-       "ENTITY : KENT NAME SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';'",
-       "ENTITY : KENT NAME KABSTR SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';'",
-       "REFERENCE : KREF KFROM NAME TLIST1 ';'",
-       "TLIST : NAME",
-       "TLIST : NAME ',' TLIST",
-       "TLIST1 : '(' TLIST ')'",
-       "TYPE : TSTD",
-       "TYPE : TNAME",
-       "TYPE : TSET",
-       "TSTD : KINT",
-       "TSTD : KNUM",
-       "TSTD : KDBL",
-       "TSTD : KSTR",
-       "TSTD : KLOG",
-       "TSTD : KBOOL",
-       "TNAME : NAME",
-       "TSET : KLIST '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE",
-       "TSET : KARR '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE",
-       "TSET : KSET '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE",
-       "TSET : KBAG '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE",
-       "INDEX : NUMBER",
-       "INDEX : '?'",
-       "INDEX : NAME '(' NAME ')'",
-       "OPTUNI : /* empty */",
-       "OPTUNI : KUNIQ",
-       "SUBT : /* empty */",
-       "SUBT : KSUBT KOF TLIST1",
-       "SUPERT : /* empty */",
-       "SUPERT : KSPRT",
-       "SUPERT : KSPRT KOF SUPLST",
-       "SUPLST : NAME",
-       "SUPLST : '(' SUPLST ')'",
-       "SUPLST : NAME ',' SUPLST",
-       "SUPLST : K1OF SUPLST",
-       "SUPLST : SUPLST KANDOR SUPLST",
-       "FLIST : FIELD",
-       "FLIST : FIELD FLIST",
-       "FLIST : REDEF",
-       "FLIST : REDEF FLIST",
-       "FLIST1 : /* empty */",
-       "FLIST1 : FLIST",
-       "FIELD : NAME ':' OPTNL TYPE ';'",
-       "REDEF : KSELF '\\' SPECIF ':' TYPE ';'",
-       "SPECIF : NAME",
-       "SPECIF : NAME '.' SPECIF",
-       "OPTNL : /* empty */",
-       "OPTNL : KOPT",
-       "UNIQIT : NAME ':' TLIST ';'",
-       "UNIQIT : NAME ':' SPCLST ';'",
-       "UNIQLS : UNIQIT",
-       "UNIQLS : UNIQIT UNIQLS",
-       "UNIQUE : /* empty */",
-       "UNIQUE : KUNIQ UNIQLS",
-       "SPCLST : KSELF '\\' SPECIF",
-       "SPCLST : KSELF '\\' SPECIF ',' SPCLST",
-       "SPCLST : NAME ',' SPCLST",
-};
-#endif /* YYDEBUG */
-# line 1 "/usr/ccs/bin/yaccpar"
-/*
- * Copyright (c) 1993 by Sun Microsystems, Inc.
- */
-
-/*
-** Skeleton parser driver for yacc output
-*/
-
-/*
-** yacc user known macros and defines
-*/
-#define YYERROR                goto yyerrlab
-#define YYACCEPT       return(0)
-#define YYABORT                return(1)
-#define YYBACKUP( newtoken, newvalue )\
-{\
-       if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
-       {\
-               yyerror( "syntax error - cannot backup" );\
-               goto yyerrlab;\
-       }\
-       yychar = newtoken;\
-       yystate = *yyps;\
-       yylval = newvalue;\
-       goto yynewstate;\
-}
-#define YYRECOVERING() (!!yyerrflag)
-#define YYNEW(type)    malloc(sizeof(type) * yynewmax)
-#define YYCOPY(to, from, type) \
-       (type *) memcpy(to, (char *) from, yymaxdepth * sizeof (type))
-#define YYENLARGE( from, type) \
-       (type *) realloc((char *) from, yynewmax * sizeof(type))
-#ifndef YYDEBUG
-#      define YYDEBUG  1       /* make debugging available */
-#endif
-
-/*
-** user known globals
-*/
-int yydebug;                   /* set to 1 to get debugging */
-
-/*
-** driver internal defines
-*/
-#define YYFLAG         (-10000000)
-
-/*
-** global variables used by the parser
-*/
-YYSTYPE *yypv;                 /* top of value stack */
-int *yyps;                     /* top of state stack */
-
-int yystate;                   /* current state */
-int yytmp;                     /* extra var (lasts between blocks) */
-
-int yynerrs;                   /* number of errors */
-int yyerrflag;                 /* error recovery flag */
-int yychar;                    /* current input token number */
-
-
-
-#ifdef YYNMBCHARS
-#define YYLEX()                yycvtok(yylex())
-/*
-** yycvtok - return a token if i is a wchar_t value that exceeds 255.
-**     If i<255, i itself is the token.  If i>255 but the neither 
-**     of the 30th or 31st bit is on, i is already a token.
-*/
-#if defined(__STDC__) || defined(__cplusplus)
-int yycvtok(int i)
-#else
-int yycvtok(i) int i;
-#endif
-{
-       int first = 0;
-       int last = YYNMBCHARS - 1;
-       int mid;
-       wchar_t j;
-
-       if(i&0x60000000){/*Must convert to a token. */
-               if( yymbchars[last].character < i ){
-                       return i;/*Giving up*/
-               }
-               while ((last>=first)&&(first>=0)) {/*Binary search loop*/
-                       mid = (first+last)/2;
-                       j = yymbchars[mid].character;
-                       if( j==i ){/*Found*/ 
-                               return yymbchars[mid].tvalue;
-                       }else if( j<i ){
-                               first = mid + 1;
-                       }else{
-                               last = mid -1;
-                       }
-               }
-               /*No entry in the table.*/
-               return i;/* Giving up.*/
-       }else{/* i is already a token. */
-               return i;
-       }
-}
-#else/*!YYNMBCHARS*/
-#define YYLEX()                yylex()
-#endif/*!YYNMBCHARS*/
-
-/*
-** yyparse - return 0 if worked, 1 if syntax error not recovered from
-*/
-#if defined(__STDC__) || defined(__cplusplus)
-int yyparse(void)
-#else
-int yyparse()
-#endif
-{
-       register YYSTYPE *yypvt = 0;    /* top of value stack for $vars */
-
-#if defined(__cplusplus) || defined(lint)
-/*
-       hacks to please C++ and lint - goto's inside
-       switch should never be executed
-*/
-       static int __yaccpar_lint_hack__ = 0;
-       switch (__yaccpar_lint_hack__)
-       {
-               case 1: goto yyerrlab;
-               case 2: goto yynewstate;
-       }
-#endif
-
-       /*
-       ** Initialize externals - yyparse may be called more than once
-       */
-       yypv = &yyv[-1];
-       yyps = &yys[-1];
-       yystate = 0;
-       yytmp = 0;
-       yynerrs = 0;
-       yyerrflag = 0;
-       yychar = -1;
-
-#if YYMAXDEPTH <= 0
-       if (yymaxdepth <= 0)
-       {
-               if ((yymaxdepth = YYEXPAND(0)) <= 0)
-               {
-                       yyerror("yacc initialization error");
-                       YYABORT;
-               }
-       }
-#endif
-
-       {
-               register YYSTYPE *yy_pv;        /* top of value stack */
-               register int *yy_ps;            /* top of state stack */
-               register int yy_state;          /* current state */
-               register int  yy_n;             /* internal state number info */
-       goto yystack;   /* moved from 6 lines above to here to please C++ */
-
-               /*
-               ** get globals into registers.
-               ** branch to here only if YYBACKUP was called.
-               */
-       yynewstate:
-               yy_pv = yypv;
-               yy_ps = yyps;
-               yy_state = yystate;
-               goto yy_newstate;
-
-               /*
-               ** get globals into registers.
-               ** either we just started, or we just finished a reduction
-               */
-       yystack:
-               yy_pv = yypv;
-               yy_ps = yyps;
-               yy_state = yystate;
-
-               /*
-               ** top of for (;;) loop while no reductions done
-               */
-       yy_stack:
-               /*
-               ** put a state and value onto the stacks
-               */
-#if YYDEBUG
-               /*
-               ** if debugging, look up token value in list of value vs.
-               ** name pairs.  0 and negative (-1) are special values.
-               ** Note: linear search is used since time is not a real
-               ** consideration while debugging.
-               */
-               if ( yydebug )
-               {
-                       register int yy_i;
-
-                       printf( "State %d, token ", yy_state );
-                       if ( yychar == 0 )
-                               printf( "end-of-file\n" );
-                       else if ( yychar < 0 )
-                               printf( "-none-\n" );
-                       else
-                       {
-                               for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
-                                       yy_i++ )
-                               {
-                                       if ( yytoks[yy_i].t_val == yychar )
-                                               break;
-                               }
-                               printf( "%s\n", yytoks[yy_i].t_name );
-                       }
-               }
-#endif /* YYDEBUG */
-               if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
-               {
-                       /*
-                       ** reallocate and recover.  Note that pointers
-                       ** have to be reset, or bad things will happen
-                       */
-                       int yyps_index = (yy_ps - yys);
-                       int yypv_index = (yy_pv - yyv);
-                       int yypvt_index = (yypvt - yyv);
-                       int yynewmax;
-#ifdef YYEXPAND
-                       yynewmax = YYEXPAND(yymaxdepth);
-#else
-                       yynewmax = 2 * yymaxdepth;      /* double table size */
-                       if (yymaxdepth == YYMAXDEPTH)   /* first time growth */
-                       {
-                               char *newyys = (char *)YYNEW(int);
-                               char *newyyv = (char *)YYNEW(YYSTYPE);
-                               if (newyys != 0 && newyyv != 0)
-                               {
-                                       yys = YYCOPY(newyys, yys, int);
-                                       yyv = YYCOPY(newyyv, yyv, YYSTYPE);
-                               }
-                               else
-                                       yynewmax = 0;   /* failed */
-                       }
-                       else                            /* not first time */
-                       {
-                               yys = YYENLARGE(yys, int);
-                               yyv = YYENLARGE(yyv, YYSTYPE);
-                               if (yys == 0 || yyv == 0)
-                                       yynewmax = 0;   /* failed */
-                       }
-#endif
-                       if (yynewmax <= yymaxdepth)     /* tables not expanded */
-                       {
-                               yyerror( "yacc stack overflow" );
-                               YYABORT;
-                       }
-                       yymaxdepth = yynewmax;
-
-                       yy_ps = yys + yyps_index;
-                       yy_pv = yyv + yypv_index;
-                       yypvt = yyv + yypvt_index;
-               }
-               *yy_ps = yy_state;
-               *++yy_pv = yyval;
-
-               /*
-               ** we have a new state - find out what to do
-               */
-       yy_newstate:
-               if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
-                       goto yydefault;         /* simple state */
-#if YYDEBUG
-               /*
-               ** if debugging, need to mark whether new token grabbed
-               */
-               yytmp = yychar < 0;
-#endif
-               if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
-                       yychar = 0;             /* reached EOF */
-#if YYDEBUG
-               if ( yydebug && yytmp )
-               {
-                       register int yy_i;
-
-                       printf( "Received token " );
-                       if ( yychar == 0 )
-                               printf( "end-of-file\n" );
-                       else if ( yychar < 0 )
-                               printf( "-none-\n" );
-                       else
-                       {
-                               for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
-                                       yy_i++ )
-                               {
-                                       if ( yytoks[yy_i].t_val == yychar )
-                                               break;
-                               }
-                               printf( "%s\n", yytoks[yy_i].t_name );
-                       }
-               }
-#endif /* YYDEBUG */
-               if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
-                       goto yydefault;
-               if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )  /*valid shift*/
-               {
-                       yychar = -1;
-                       yyval = yylval;
-                       yy_state = yy_n;
-                       if ( yyerrflag > 0 )
-                               yyerrflag--;
-                       goto yy_stack;
-               }
-
-       yydefault:
-               if ( ( yy_n = yydef[ yy_state ] ) == -2 )
-               {
-#if YYDEBUG
-                       yytmp = yychar < 0;
-#endif
-                       if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
-                               yychar = 0;             /* reached EOF */
-#if YYDEBUG
-                       if ( yydebug && yytmp )
-                       {
-                               register int yy_i;
-
-                               printf( "Received token " );
-                               if ( yychar == 0 )
-                                       printf( "end-of-file\n" );
-                               else if ( yychar < 0 )
-                                       printf( "-none-\n" );
-                               else
-                               {
-                                       for ( yy_i = 0;
-                                               yytoks[yy_i].t_val >= 0;
-                                               yy_i++ )
-                                       {
-                                               if ( yytoks[yy_i].t_val
-                                                       == yychar )
-                                               {
-                                                       break;
-                                               }
-                                       }
-                                       printf( "%s\n", yytoks[yy_i].t_name );
-                               }
-                       }
-#endif /* YYDEBUG */
-                       /*
-                       ** look through exception table
-                       */
-                       {
-                               register const int *yyxi = yyexca;
-
-                               while ( ( *yyxi != -1 ) ||
-                                       ( yyxi[1] != yy_state ) )
-                               {
-                                       yyxi += 2;
-                               }
-                               while ( ( *(yyxi += 2) >= 0 ) &&
-                                       ( *yyxi != yychar ) )
-                                       ;
-                               if ( ( yy_n = yyxi[1] ) < 0 )
-                                       YYACCEPT;
-                       }
-               }
-
-               /*
-               ** check for syntax error
-               */
-               if ( yy_n == 0 )        /* have an error */
-               {
-                       /* no worry about speed here! */
-                       switch ( yyerrflag )
-                       {
-                       case 0:         /* new error */
-                               yyerror( "syntax error" );
-                               goto skip_init;
-                       yyerrlab:
-                               /*
-                               ** get globals into registers.
-                               ** we have a user generated syntax type error
-                               */
-                               yy_pv = yypv;
-                               yy_ps = yyps;
-                               yy_state = yystate;
-                       skip_init:
-                               yynerrs++;
-                               /* FALLTHRU */
-                       case 1:
-                       case 2:         /* incompletely recovered error */
-                                       /* try again... */
-                               yyerrflag = 3;
-                               /*
-                               ** find state where "error" is a legal
-                               ** shift action
-                               */
-                               while ( yy_ps >= yys )
-                               {
-                                       yy_n = yypact[ *yy_ps ] + YYERRCODE;
-                                       if ( yy_n >= 0 && yy_n < YYLAST &&
-                                               yychk[yyact[yy_n]] == YYERRCODE)                                        {
-                                               /*
-                                               ** simulate shift of "error"
-                                               */
-                                               yy_state = yyact[ yy_n ];
-                                               goto yy_stack;
-                                       }
-                                       /*
-                                       ** current state has no shift on
-                                       ** "error", pop stack
-                                       */
-#if YYDEBUG
-#      define _POP_ "Error recovery pops state %d, uncovers state %d\n"
-                                       if ( yydebug )
-                                               printf( _POP_, *yy_ps,
-                                                       yy_ps[-1] );
-#      undef _POP_
-#endif
-                                       yy_ps--;
-                                       yy_pv--;
-                               }
-                               /*
-                               ** there is no state on stack with "error" as
-                               ** a valid shift.  give up.
-                               */
-                               YYABORT;
-                       case 3:         /* no shift yet; eat a token */
-#if YYDEBUG
-                               /*
-                               ** if debugging, look up token in list of
-                               ** pairs.  0 and negative shouldn't occur,
-                               ** but since timing doesn't matter when
-                               ** debugging, it doesn't hurt to leave the
-                               ** tests here.
-                               */
-                               if ( yydebug )
-                               {
-                                       register int yy_i;
-
-                                       printf( "Error recovery discards " );
-                                       if ( yychar == 0 )
-                                               printf( "token end-of-file\n" );
-                                       else if ( yychar < 0 )
-                                               printf( "token -none-\n" );
-                                       else
-                                       {
-                                               for ( yy_i = 0;
-                                                       yytoks[yy_i].t_val >= 0;
-                                                       yy_i++ )
-                                               {
-                                                       if ( yytoks[yy_i].t_val
-                                                               == yychar )
-                                                       {
-                                                               break;
-                                                       }
-                                               }
-                                               printf( "token %s\n",
-                                                       yytoks[yy_i].t_name );
-                                       }
-                               }
-#endif /* YYDEBUG */
-                               if ( yychar == 0 )      /* reached EOF. quit */
-                                       YYABORT;
-                               yychar = -1;
-                               goto yy_newstate;
-                       }
-               }/* end if ( yy_n == 0 ) */
-               /*
-               ** reduction by production yy_n
-               ** put stack tops, etc. so things right after switch
-               */
-#if YYDEBUG
-               /*
-               ** if debugging, print the string that is the user's
-               ** specification of the reduction which is just about
-               ** to be done.
-               */
-               if ( yydebug )
-                       printf( "Reduce by (%d) \"%s\"\n",
-                               yy_n, yyreds[ yy_n ] );
-#endif
-               yytmp = yy_n;                   /* value to switch over */
-               yypvt = yy_pv;                  /* $vars top of value stack */
-               /*
-               ** Look in goto table for next state
-               ** Sorry about using yy_state here as temporary
-               ** register variable, but why not, if it works...
-               ** If yyr2[ yy_n ] doesn't have the low order bit
-               ** set, then there is no action to be done for
-               ** this reduction.  So, no saving & unsaving of
-               ** registers done.  The only difference between the
-               ** code just after the if and the body of the if is
-               ** the goto yy_stack in the body.  This way the test
-               ** can be made before the choice of what to do is needed.
-               */
-               {
-                       /* length of production doubled with extra bit */
-                       register int yy_len = yyr2[ yy_n ];
-
-                       if ( !( yy_len & 01 ) )
-                       {
-                               yy_len >>= 1;
-                               yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
-                               yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
-                                       *( yy_ps -= yy_len ) + 1;
-                               if ( yy_state >= YYLAST ||
-                                       yychk[ yy_state =
-                                       yyact[ yy_state ] ] != -yy_n )
-                               {
-                                       yy_state = yyact[ yypgo[ yy_n ] ];
-                               }
-                               goto yy_stack;
-                       }
-                       yy_len >>= 1;
-                       yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
-                       yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
-                               *( yy_ps -= yy_len ) + 1;
-                       if ( yy_state >= YYLAST ||
-                               yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
-                       {
-                               yy_state = yyact[ yypgo[ yy_n ] ];
-                       }
-               }
-                                       /* save until reenter driver code */
-               yystate = yy_state;
-               yyps = yy_ps;
-               yypv = yy_pv;
-       }
-       /*
-       ** code supplied by user is placed in this switch
-       */
-       switch( yytmp )
-       {
-               
-case 1:
-# line 164 "Express.y"
-{ yyval.schema = mkschema ( yypvt[-4].str, yypvt[-2].ilist ); /* Root: EXPRESS schema */ } break;
-case 2:
-# line 166 "Express.y"
-{ yyval.ilist = mkilist ( yypvt[-0].item, 0 ); /* list of items for schema */ } break;
-case 3:
-# line 167 "Express.y"
-{ yyval.ilist = mkilist ( yypvt[-1].item, yypvt[-0].ilist ); } break;
-case 7:
-# line 173 "Express.y"
-{ yyval.item = yypvt[-0].item; /* item of schema (type definition) */ } break;
-case 8:
-# line 174 "Express.y"
-{ yyval.item = mkenum ( yypvt[-7].str, yypvt[-3].tlist ); /* TYPE ENUMERATION definition */ } break;
-case 9:
-# line 176 "Express.y"
-{ yyval.item = mkselect ( yypvt[-6].str, yypvt[-3].tlist ); /* TYPE SELECT definition */ } break;
-case 10:
-# line 178 "Express.y"
-{ yyval.item = mkalias ( yypvt[-5].str, yypvt[-3].type ); /* TYPE '=' definition (alias) */ } break;
-case 11:
-# line 180 "Express.y"
-{ yyval.item = mkentity ( yypvt[-7].str, yypvt[-5].tlist, yypvt[-3].flist, 0 ); /* ENTITY definition */ } break;
-case 12:
-# line 181 "Express.y"
-{ yyval.item = mkentity ( yypvt[-8].str, yypvt[-5].tlist, yypvt[-3].flist, 1 ); /* ENTITY definition */ } break;
-case 13:
-# line 184 "Express.y"
-{ yyval.ref = mkrefs ( yypvt[-2].str, yypvt[-1].tlist ); /* REFERENCE FROM definition */ } break;
-case 14:
-# line 186 "Express.y"
-{ yyval.tlist = mktlist ( yypvt[-0].str, 0 ); /* list of (type) names */ } break;
-case 15:
-# line 187 "Express.y"
-{ yyval.tlist = mktlist ( yypvt[-2].str, yypvt[-0].tlist ); } break;
-case 16:
-# line 189 "Express.y"
-{ yyval.tlist = yypvt[-1].tlist; /* TLIST in brackets */ } break;
-case 19:
-# line 194 "Express.y"
-{ yyval.type = yypvt[-0].type; /* type, simple or complex */ } break;
-case 20:
-# line 196 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: INTEGER */ } break;
-case 21:
-# line 197 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: NUMBER */ } break;
-case 22:
-# line 198 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: REAL */ } break;
-case 23:
-# line 199 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: STRING */ } break;
-case 24:
-# line 200 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: LOGICAL */ } break;
-case 25:
-# line 201 "Express.y"
-{ yyval.type = mktstd ( yypvt[-0].num ); /* predefined type: BOOLEAN */ } break;
-case 26:
-# line 203 "Express.y"
-{ yyval.type = mktname ( yypvt[-0].str ); /* named type */ } break;
-case 27:
-# line 205 "Express.y"
-{ yyval.type = mktset ( yypvt[-8].num, yypvt[-6].num, yypvt[-4].num, yypvt[-0].type ); /* complex type: LIST */ } break;
-case 28:
-# line 206 "Express.y"
-{ yyval.type = mktset ( yypvt[-8].num, yypvt[-6].num, yypvt[-4].num, yypvt[-0].type ); /* complex type: ARRAY */ } break;
-case 29:
-# line 207 "Express.y"
-{ yyval.type = mktset ( yypvt[-8].num, yypvt[-6].num, yypvt[-4].num, yypvt[-0].type ); /* complex type: SET */ } break;
-case 30:
-# line 208 "Express.y"
-{ yyval.type = mktset ( yypvt[-8].num, yypvt[-6].num, yypvt[-4].num, yypvt[-0].type ); /* complex type: BAG */ } break;
-case 31:
-# line 210 "Express.y"
-{ yyval.num = yypvt[-0].num; /* index for array, set, bag, list range */ } break;
-case 32:
-# line 211 "Express.y"
-{ yyval.num = -1; /* undefined */ } break;
-case 33:
-# line 212 "Express.y"
-{yyval.num = -1; printf ( "Warning at line %d: index function %s(%s) ignored\n", ec_curline(), yypvt[-3].str, yypvt[-1].str ); /* some function.. */ } break;
-case 34:
-# line 214 "Express.y"
-{ yyval.num = 0; /* UNIQUE keyword for complex type definition */ } break;
-case 35:
-# line 215 "Express.y"
-{ yyval.num = 1; } break;
-case 36:
-# line 218 "Express.y"
-{ yyval.tlist = NULL; /* no subtype clause */ } break;
-case 37:
-# line 219 "Express.y"
-{ yyval.tlist = yypvt[-0].tlist;   /* subtype clause */ } break;
-case 38:
-# line 221 "Express.y"
-{ yyval.num = 0;  /* no supertype clause */ } break;
-case 39:
-# line 222 "Express.y"
-{ yyval.num = 0;  /* supertype clause (ignored) */ } break;
-case 40:
-# line 223 "Express.y"
-{ yyval.num = 0;  /* supertype clause (ignored) */ } break;
-case 41:
-# line 225 "Express.y"
-{ yyval.num = 0; /* simple list of supertypes */ } break;
-case 42:
-# line 226 "Express.y"
-{ yyval.num = 0; /* allow bracketing */ } break;
-case 43:
-# line 227 "Express.y"
-{ yyval.num = 0; /* ... */ } break;
-case 44:
-# line 228 "Express.y"
-{ yyval.num = 0; /* ONEOF construct */ } break;
-case 45:
-# line 229 "Express.y"
-{ yyval.num = 0; /* ANDOR construct */ } break;
-case 46:
-# line 232 "Express.y"
-{ yyval.flist = mkflist ( yypvt[-0].field, 0 ); /* list of fields of ENTITY item */ } break;
-case 47:
-# line 233 "Express.y"
-{ yyval.flist = mkflist ( yypvt[-1].field, yypvt[-0].flist ); } break;
-case 48:
-# line 234 "Express.y"
-{ yyval.flist = 0;  /* redefinition of inherited field, just skip */ } break;
-case 49:
-# line 235 "Express.y"
-{ yyval.flist = yypvt[-0].flist; /* ignore redefinition of inherited field, take trailing list */ } break;
-case 50:
-# line 237 "Express.y"
-{ yyval.flist = NULL; /* empty list of fields */ } break;
-case 51:
-# line 238 "Express.y"
-{ yyval.flist = yypvt[-0].flist;   /* or not empty.. just to fix reduce/reduce conflict */ } break;
-case 52:
-# line 240 "Express.y"
-{ yyval.field = mkfield ( yypvt[-4].str, yypvt[-1].type, yypvt[-2].num ); } break;
-case 53:
-# line 242 "Express.y"
-{ yyval.num = 0; printf ( "Warning at line %d: field redefinition ignored\n", ec_curline() ); /* redefinition of inherited field */ } break;
-case 54:
-# line 244 "Express.y"
-{ yyval.tlist = mktlist ( yypvt[-0].str, 0 ); /* inherited field specification */ } break;
-case 55:
-# line 245 "Express.y"
-{ yyval.tlist = mktlist ( yypvt[-2].str, yypvt[-0].tlist ); } break;
-case 56:
-# line 248 "Express.y"
-{ yyval.num = 0; } break;
-case 57:
-# line 249 "Express.y"
-{ yyval.num = 1; } break;
-case 58:
-# line 252 "Express.y"
-{ yyval.tlist = yypvt[-1].tlist;   /* UNIQUE statement */ } break;
-case 59:
-# line 253 "Express.y"
-{ yyval.tlist = NULL; /* UNIQUE statement */ } break;
-case 60:
-# line 255 "Express.y"
-{ yyval.tlist = NULL;    /* list of 1 UNIQUE statements */ } break;
-case 61:
-# line 256 "Express.y"
-{ yyval.tlist = mktlists ( yypvt[-1].tlist, yypvt[-0].tlist );/* list of UNIQUE statements */ } break;
-case 62:
-# line 258 "Express.y"
-{ yyval.tlist = NULL;    /* no UNIQUE clause in ENTITY */ } break;
-case 63:
-# line 259 "Express.y"
-{ yyval.tlist = yypvt[-0].tlist;      /* UNIQUE clause in ENTITY */ } break;
-case 64:
-# line 261 "Express.y"
-{ yyval.num = 0; /* list of specifications */ } break;
-case 65:
-# line 262 "Express.y"
-{ yyval.num = 0; } break;
-case 66:
-# line 263 "Express.y"
-{ yyval.num = 0; } break;
-# line 531 "/usr/ccs/bin/yaccpar"
-       }
-       goto yystack;           /* reset registers in driver code */
-}
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
diff --git a/src/ExpToCasExe/expparse.h b/src/ExpToCasExe/expparse.h
deleted file mode 100644 (file)
index d506fce..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// Created:    Mon Nov  1 12:50:27 1999
-// Author:     Andrey BETENEV
-// Copyright (c) 1999-2020 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-typedef union
-#ifdef __cplusplus
-       YYSTYPE
-#endif
- {
-  int num;
-  char *str;
-  TColStd_HSequenceOfHAsciiString *tlist;
-  Express_HSequenceOfField *flist;
-  Express_HSequenceOfItem *ilist;
-  Express_Field *field;
-  Express_Item *item;
-  Express_Type *type;
-  Express_Schema *schema;
-  Express_Reference *ref;
-} YYSTYPE;
-extern YYSTYPE yylval;
-# define KSCHEM 257
-# define KENDS 258
-# define KTYP 259
-# define KENDT 260
-# define KENT 261
-# define KENDE 262
-# define KREF 263
-# define KFROM 264
-# define KSEL 265
-# define KENUM 266
-# define KLIST 267
-# define KARR 268
-# define KBAG 269
-# define KSET 270
-# define KOF 271
-# define KNUM 272
-# define KINT 273
-# define KDBL 274
-# define KSTR 275
-# define KLOG 276
-# define KBOOL 277
-# define KOPT 278
-# define KUNIQ 279
-# define KSELF 280
-# define KABSTR 281
-# define KSUBT 282
-# define KSPRT 283
-# define KANDOR 284
-# define K1OF 285
-# define KAND 286
-# define NUMBER 287
-# define NAME 288
diff --git a/src/ExpToCasExe/expscan.cxx b/src/ExpToCasExe/expscan.cxx
deleted file mode 100644 (file)
index 14b934b..0000000
+++ /dev/null
@@ -1,2950 +0,0 @@
-// Created:    Mon Nov  1 12:50:27 1999
-// Author:     Andrey BETENEV
-// Copyright (c) 1999-2020 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <cstdint>
-
-#if defined(__clang__)
-#pragma GCC diagnostic ignored "-Wmissing-braces"
-#endif
-#if __cplusplus > 199711L
-#define register// Deprecated in C++11.
-#endif
-
-# define U(x) x
-# define NLSTATE yyprevious=YYNEWLINE
-# define BEGIN yybgin = yysvec + 1 +
-# define INITIAL 0
-# define YYLERR yysvec
-# define YYSTATE (yyestate-yysvec-1)
-# define YYOPTIM 1
-# ifndef YYLMAX 
-# define YYLMAX BUFSIZ
-# endif 
-#ifndef __cplusplus
-# define output(c) (void)putc(c,yyout)
-#else
-# define lex_output(c) (void)putc(c,yyout)
-#endif
-
-#if defined(__cplusplus) || defined(__STDC__)
-
-#if defined(__cplusplus) && defined(__EXTERN_C__)
-extern "C" {
-#endif
-       int yyback(int *, int);
-       int yyinput(void);
-       int yylook(void);
-       void yyoutput(int);
-       int yyracc(int);
-       int yyreject(void);
-       void yyunput(int);
-       int yylex(void);
-#ifdef YYLEX_E
-       void yywoutput(wchar_t);
-       wchar_t yywinput(void);
-#endif
-#ifndef yyless
-       int yyless(int);
-#endif
-#ifndef yywrap
-       int yywrap(void);
-#endif
-#ifdef LEXDEBUG
-       void allprint(char);
-       void sprint(char *);
-#endif
-#if defined(__cplusplus) && defined(__EXTERN_C__)
-}
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-//     void exit(int);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
-# define yymore() (yymorfg=1)
-#ifndef __cplusplus
-# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
-#else
-# define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
-#endif
-#define ECHO fprintf(yyout, "%s",yytext)
-# define REJECT { nstr = yyreject(); goto yyfussy;}
-int yyleng;
-#define YYISARRAY
-char yytext[YYLMAX];
-int yymorfg;
-extern char *yysptr, yysbuf[];
-int yytchar;
-FILE *yyin = {stdin}, *yyout = {stdout};
-extern int yylineno;
-struct yysvf { 
-       struct yywork *yystoff;
-       struct yysvf *yyother;
-       int *yystops;};
-struct yysvf *yyestate;
-extern struct yysvf yysvec[], *yybgin;
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning (disable:4244)
-#pragma warning (disable:4274)
-#pragma warning (disable:4706)
-#pragma warning (disable:4701)
-#endif
-
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wwrite-strings"
-#pragma GCC diagnostic ignored "-Wunused-variable"
-#endif
-
-# line 4 "exptocas.l"
-/* File:       exptocas.l                     */
-
-# line 5 "exptocas.l"
-/* Created:    Thu Oct 28 12:21:16 1999       */
-
-# line 6 "exptocas.l"
-/* Author:     Andrey BETENEV                 */
-
-# line 7 "exptocas.l"
-/*             <abv@doomox.nnov.matra-dtv.fr> */
-
-# line 8 "exptocas.l"
-/* Copyright:  Matra Datavision 1999          */
-
-
-# line 10 "exptocas.l"
-/*****************************************************************************\
-
-This LEX scanner is performs lexical analysis of EXPRESS schema file   
-for EXPRESS -> CASCADE/XSTEP classes generator                             
-
-On the stage of lexical scanner comments (single- and multi-line),         
-definitions of CONSTANT, FUNCTION, RULE items and clauses WHERE, INVERSE
-and DERIVE of TYPE amd ENTITY items are dismissed (ignored)         
-
-Then, keywords such as ENTITY, SUPERTYPE, SET etc., names of items         
-and special symbols are identified and returned to parser (yacc) as tokens 
-
-Also, error processing and current line number tracking functions are defined
-
-\*****************************************************************************/
-
-
-# line 26 "exptocas.l"
-/************************************/
-
-# line 27 "exptocas.l"
-/* Section 1                        */
-
-# line 28 "exptocas.l"
-/* definitions                      */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <TColStd_HSequenceOfHAsciiString.hxx>
-#include <Express_HSequenceOfField.hxx>
-#include <Express_HSequenceOfItem.hxx>
-#include <Express_Field.hxx>
-#include <Express_Item.hxx>
-#include <Express_Type.hxx>
-#include <Express_Schema.hxx>
-#include <Express_Reference.hxx>
-
-#include "expparse.h"       /* define tokens */
-
-
-# line 44 "exptocas.l"
-/* Auxiliary functions */
-
-static int fun_level=0;
-static int ec_linenum=1;
-static int ec_state = 0;
-
-int yywrap(void) { return 1; }
-
-int ec_curline ( void )
-{
-  return ec_linenum;
-}
-
-int ec_error ( char const *s, char const *text )
-{
-  printf ( "\nError at line %d: %s \"%s\"\n", ec_curline(), s, text );
-  return 0;
-}
-
-# define TYP 2
-# define ENT 4
-# define COMM 6
-# define SKP 8
-# define RULE 10
-# define FUN 12
-
-
-# line 73 "exptocas.l"
-/************************************/
-
-# line 74 "exptocas.l"
-/* Section 2                        */
-
-# line 75 "exptocas.l"
-/* parsing rules                    */
-# define YYNEWLINE 10
-int yylex(){
-int nstr = 0; extern int yyprevious;
-#ifdef __cplusplus
-/* to avoid CC and lint complaining yyfussy not being used ...*/
-static int __lex_hack = 0;
-if (__lex_hack) goto yyfussy;
-#endif
-while((nstr = yylook()) >= 0)
-yyfussy: switch(nstr){
-case 0:
-if(yywrap()) return(0); break;
-case 1:
-
-# line 79 "exptocas.l"
-              { /* Eat line comments */ }
-break;
-case 2:
-
-# line 80 "exptocas.l"
-                { ec_state = YYSTATE; BEGIN(COMM); }
-break;
-case 3:
-
-# line 81 "exptocas.l"
-             { /* Eat multiline comments */ }
-break;
-case 4:
-
-# line 82 "exptocas.l"
-          { BEGIN(ec_state); }
-break;
-case 5:
-
-# line 84 "exptocas.l"
-            { return yylval.num = KSCHEM; }
-break;
-case 6:
-
-# line 85 "exptocas.l"
-        { return yylval.num = KENDS; }
-break;
-case 7:
-
-# line 87 "exptocas.l"
-              { BEGIN(TYP); return yylval.num = KTYP; }
-break;
-case 8:
-
-# line 88 "exptocas.l"
- { BEGIN(0);   return yylval.num = KENDT; }
-break;
-case 9:
-
-# line 90 "exptocas.l"
-            { BEGIN(ENT); return yylval.num = KENT; }
-break;
-case 10:
-
-# line 91 "exptocas.l"
-{ BEGIN(0);  return yylval.num = KENDE; }
-break;
-case 11:
-
-# line 93 "exptocas.l"
-      case 12:
-
-# line 94 "exptocas.l"
-       case 13:
-
-# line 95 "exptocas.l"
-    { BEGIN(SKP); }
-break;
-case 14:
-
-# line 96 "exptocas.l"
-              { /* eat contents of WHERE and DERIVE subclauses of ENTITY and TYPE */ }
-break;
-case 15:
-
-# line 98 "exptocas.l"
-            { return yylval.num = KSEL; }
-break;
-case 16:
-
-# line 99 "exptocas.l"
-       { return yylval.num = KENUM; }
-break;
-case 17:
-
-# line 100 "exptocas.l"
-              { return yylval.num = KLIST; }
-break;
-case 18:
-
-# line 101 "exptocas.l"
-             { return yylval.num = KARR; }
-break;
-case 19:
-
-# line 102 "exptocas.l"
-               { return yylval.num = KSET; }
-break;
-case 20:
-
-# line 103 "exptocas.l"
-               { return yylval.num = KBAG; }
-break;
-case 21:
-
-# line 104 "exptocas.l"
-                { return yylval.num = KOF; }
-break;
-case 22:
-
-# line 106 "exptocas.l"
-            { return yylval.num = KNUM; }
-break;
-case 23:
-
-# line 107 "exptocas.l"
-           { return yylval.num = KINT; }
-break;
-case 24:
-
-# line 108 "exptocas.l"
-              { return yylval.num = KDBL; }
-break;
-case 25:
-
-# line 109 "exptocas.l"
-            { return yylval.num = KSTR; }
-break;
-case 26:
-
-# line 110 "exptocas.l"
-           { return yylval.num = KLOG; }
-break;
-case 27:
-
-# line 111 "exptocas.l"
-           { return yylval.num = KBOOL; }
-break;
-case 28:
-
-# line 113 "exptocas.l"
-          { return yylval.num = KOPT; }
-break;
-case 29:
-
-# line 114 "exptocas.l"
-            { return yylval.num = KUNIQ; }
-break;
-case 30:
-
-# line 115 "exptocas.l"
-              { return yylval.num = KSELF; }
-break;
-case 31:
-
-# line 117 "exptocas.l"
-          { return yylval.num = KABSTR; }
-break;
-case 32:
-
-# line 118 "exptocas.l"
-           { return yylval.num = KSUBT; }
-break;
-case 33:
-
-# line 119 "exptocas.l"
-         { return yylval.num = KSPRT; }
-break;
-case 34:
-
-# line 120 "exptocas.l"
-             { return yylval.num = KANDOR; }
-break;
-case 35:
-
-# line 121 "exptocas.l"
-             { return yylval.num = K1OF; }
-break;
-case 36:
-
-# line 122 "exptocas.l"
-               { return yylval.num = KAND; }
-break;
-case 37:
-
-# line 124 "exptocas.l"
-          { yylval.str = strdup ( yytext ); return NAME; }
-break;
-case 38:
-
-# line 126 "exptocas.l"
-    { yylval.str = strdup ( yytext ); return NAME; }
-break;
-case 39:
-
-# line 128 "exptocas.l"
-              { yylval.num = atoi ( yytext ); return NUMBER; }
-break;
-case 40:
-
-# line 129 "exptocas.l"
-{ return yylval.num = yytext[0]; }
-break;
-case 41:
-
-# line 131 "exptocas.l"
- { BEGIN(FUN); fun_level++; }
-break;
-case 42:
-
-# line 132 "exptocas.l"
-           { ec_state = YYSTATE; BEGIN(COMM); /* eat comments in functions */ }
-break;
-case 43:
-
-# line 133 "exptocas.l"
-         { /* Eat line comments in functions */ }
-break;
-case 44:
-
-# line 134 "exptocas.l"
-  { /* eat FUNCTIONs - skip IDs explicitly */ }
-break;
-case 45:
-
-# line 135 "exptocas.l"
-     { /* eat FUNCTIONs - skip strings explicitly */ }
-break;
-case 46:
-
-# line 136 "exptocas.l"
-              { /* eat FUNCTIONs - skip all other symbols in functions */ }
-break;
-case 47:
-
-# line 137 "exptocas.l"
-{ fun_level--; if ( ! fun_level ) BEGIN(0); }
-break;
-case 48:
-
-# line 139 "exptocas.l"
-              { BEGIN(RULE); /* eat RULEs */ }
-break;
-case 49:
-
-# line 140 "exptocas.l"
-             { /* eat RULEs */ }
-break;
-case 50:
-
-# line 141 "exptocas.l"
-   { BEGIN(0); }
-break;
-case 51:
-
-# line 143 "exptocas.l"
-{ /* eat CONSTANTs */
-                       char *s = yytext; /* but don't forget to count lines.. */
-                       while ( *s ) if ( *(s++) == '\n' ) ec_linenum++;
-                     }
-break;
-case 52:
-
-# line 148 "exptocas.l"
-              { /* eat spaces */ }
-break;
-case 53:
-
-# line 149 "exptocas.l"
-       { ec_error ( "unknown keyword ", yytext ); /* put unrecognized keywords to cerr */ }
-break;
-case 54:
-
-# line 150 "exptocas.l"
-                   { ec_error ( "unknown symbol ", yytext ); /* put unrecognized data to cerr */ }
-break;
-case 55:
-
-# line 152 "exptocas.l"
- { ec_linenum++; /* count lines */ }
-break;
-case -1:
-break;
-default:
-(void)fprintf(yyout,"bad switch yylook %d",nstr);
-} return(0); }
-/* end of yylex */
-
-# line 155 "exptocas.l"
-
-/************************************/
-/* Section 3                        */
-/* auxiliary procedures             */
-
-/*
-int main ( void )
-{
-  yylex();
-}
-*/
-int yyvstop[] = {
-0,
-
-44,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-54,
-0, 
-
-52,
-54,
-0, 
-
-55,
-0, 
-
-40,
-54,
-0, 
-
-40,
-54,
-0, 
-
-54,
-0, 
-
-39,
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-38,
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-53,
-54,
-0, 
-
-3,
-0, 
-
-3,
-0, 
-
-14,
-0, 
-
-14,
-0, 
-
-49,
-0, 
-
-49,
-0, 
-
-46,
-0, 
-
-46,
-0, 
-
-46,
-0, 
-
-46,
-0, 
-
-44,
-46,
-0, 
-
-44,
-46,
-0, 
-
-44,
-46,
-0, 
-
-52,
-0, 
-
-2,
-0, 
-
-1,
-0, 
-
-39,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-21,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-38,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-4,
-0, 
-
-45,
-0, 
-
-42,
-0, 
-
-43,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-36,
-53,
-0, 
-
-53,
-0, 
-
-20,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-19,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-37,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-17,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-24,
-53,
-0, 
-
-48,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-30,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-7,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-34,
-53,
-0, 
-
-18,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-35,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-13,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-9,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-22,
-53,
-0, 
-
-53,
-0, 
-
-5,
-53,
-0, 
-
-15,
-53,
-0, 
-
-25,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-29,
-53,
-0, 
-
-53,
-0, 
-
-12,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-27,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-23,
-53,
-0, 
-
-26,
-53,
-0, 
-
-53,
-0, 
-
-32,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-11,
-53,
-0, 
-
-44,
-0, 
-
-44,
-0, 
-
-31,
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-41,
-53,
-0, 
-
-28,
-53,
-0, 
-
-53,
-0, 
-
-8,
-53,
-0, 
-
-53,
-0, 
-
-8,
-0, 
-
-44,
-0, 
-
-41,
-44,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-33,
-53,
-0, 
-
-53,
-0, 
-
-50,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-6,
-53,
-0, 
-
-53,
-0, 
-
-10,
-53,
-0, 
-
-10,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-16,
-53,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-44,
-0, 
-
-53,
-0, 
-
-47,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-53,
-0, 
-
-51,
-0, 
-0};
-# define YYTYPE int
-struct yywork { YYTYPE verify, advance; } yycrank[] = {
-0,0,   0,0,    1,15,   0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    1,16,   1,17,   
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-16,55, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-1,15,  1,18,   1,19,   0,0,    
-0,0,   1,19,   1,20,   16,55,  
-0,0,   1,21,   0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-43,90, 8,43,   18,56,  1,19,   
-1,19,  20,57,  1,19,   50,95,  
-51,96, 0,0,    1,22,   1,23,   
-1,24,  1,25,   1,26,   1,27,   
-1,25,  1,25,   1,28,   1,25,   
-1,25,  1,29,   1,25,   1,30,   
-1,31,  1,25,   1,25,   1,32,   
-1,33,  1,34,   1,35,   1,25,   
-1,25,  1,25,   1,25,   1,25,   
-1,19,  10,45,  1,19,   45,91,  
-1,36,  47,92,  53,98,  91,132, 
-54,99, 2,19,   25,59,  25,59,  
-25,59, 25,59,  25,59,  25,59,  
-25,59, 25,59,  25,59,  25,59,  
-92,133,        98,134, 99,135, 132,166,        
-133,167,       134,168,        2,19,   2,19,   
-135,169,       2,19,   167,197,        168,198,        
-169,199,       1,15,   2,23,   2,24,   
-2,25,  2,26,   2,27,   2,25,   
-2,25,  2,28,   2,25,   2,25,   
-2,29,  2,25,   2,30,   2,31,   
-2,25,  2,25,   2,32,   2,33,   
-2,34,  2,35,   2,25,   2,25,   
-2,25,  2,25,   2,25,   2,19,   
-195,221,       2,19,   196,222,        197,223,        
-166,195,       198,224,        199,225,        221,240,        
-3,19,  39,59,  39,59,  39,59,  
-39,59, 39,59,  39,59,  39,59,  
-39,59, 39,59,  39,59,  166,196,        
-222,241,       223,242,        224,243,        225,244,        
-240,254,       3,19,   3,19,   241,255,        
-3,19,  242,256,        39,87,  243,257,        
-2,15,  3,23,   3,24,   3,25,   
-3,37,  3,25,   3,25,   3,25,   
-3,28,  3,25,   3,25,   3,29,   
-3,25,  3,30,   3,31,   3,25,   
-3,25,  3,32,   3,33,   3,34,   
-3,35,  3,25,   3,38,   3,25,   
-3,25,  3,25,   3,19,   244,258,        
-3,19,  254,265,        256,266,        257,267,        
-265,273,       267,274,        268,275,        4,19,   
-59,59, 59,59,  59,59,  59,59,  
-59,59, 59,59,  59,59,  59,59,  
-59,59, 59,59,  274,278,        275,279,        
-278,281,       279,282,        281,284,        282,285,        
-4,19,  4,19,   285,287,        4,19,   
-287,289,       289,291,        291,293,        3,15,   
-4,23,  4,24,   4,25,   4,37,   
-4,25,  4,25,   4,25,   4,28,   
-4,25,  4,25,   4,29,   4,25,   
-4,30,  4,31,   4,25,   4,25,   
-4,32,  4,33,   4,34,   4,35,   
-4,25,  4,38,   4,25,   4,25,   
-4,25,  4,19,   293,295,        4,19,   
-295,297,       297,299,        299,301,        0,0,    
-0,0,   0,0,    5,19,   61,59,  
-61,59, 61,59,  61,59,  61,59,  
-61,59, 61,59,  61,59,  61,59,  
-61,59, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    5,19,   
-5,19,  0,0,    5,19,   61,101, 
-0,0,   0,0,    4,15,   5,23,   
-5,24,  5,39,   5,40,   5,25,   
-5,25,  5,25,   5,41,   5,25,   
-5,25,  5,29,   5,25,   5,30,   
-5,31,  5,25,   5,25,   5,32,   
-5,33,  5,34,   5,35,   5,25,   
-5,38,  5,25,   5,25,   5,25,   
-5,19,  0,0,    5,19,   14,48,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   6,19,   72,59,  72,59,  
-72,59, 72,59,  72,59,  72,59,  
-72,59, 72,59,  72,59,  72,59,  
-14,48, 14,48,  0,0,    14,48,  
-0,0,   0,0,    6,19,   6,19,   
-0,0,   6,19,   0,0,    14,53,  
-14,54, 5,15,   6,23,   6,24,   
-6,39,  6,40,   6,25,   6,25,   
-6,25,  6,41,   6,25,   6,25,   
-6,29,  6,25,   6,30,   6,31,   
-6,25,  6,25,   6,32,   6,33,   
-6,34,  6,35,   6,25,   6,38,   
-6,25,  6,25,   6,25,   6,19,   
-7,42,  6,19,   0,0,    0,0,    
-0,0,   0,0,    0,0,    9,44,   
-7,42,  7,17,   0,0,    0,0,    
-0,0,   0,0,    11,46,  9,44,   
-9,17,  0,0,    0,0,    0,0,    
-0,0,   0,0,    11,46,  0,0,    
-0,0,   0,0,    14,48,  0,0,    
-0,0,   12,46,  0,0,    0,0,    
-6,15,  0,0,    0,0,    0,0,    
-0,0,   12,46,  7,42,   7,42,   
-0,0,   7,43,   0,0,    7,42,   
-7,42,  9,44,   9,44,   7,42,   
-0,0,   0,0,    9,44,   9,44,   
-11,46, 11,46,  9,44,   0,0,    
-0,0,   11,46,  11,46,  0,0,    
-0,0,   11,46,  0,0,    0,0,    
-7,42,  0,0,    0,0,    12,46,  
-12,46, 0,0,    0,0,    9,44,   
-12,46, 12,46,  0,0,    9,45,   
-12,46, 13,48,  11,46,  0,0,    
-0,0,   0,0,    11,47,  0,0,    
-0,0,   13,48,  13,17,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   12,46,  7,42,   0,0,    
-0,0,   12,47,  0,0,    0,0,    
-0,0,   9,44,   0,0,    0,0,    
-49,93, 0,0,    0,0,    0,0,    
-11,46, 0,0,    0,0,    0,0,    
-49,93, 49,93,  0,0,    13,49,  
-13,50, 13,48,  0,0,    0,0,    
-13,48, 13,51,  0,0,    12,46,  
-13,52, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    13,48,  13,48,  
-0,0,   13,48,  0,0,    0,0,    
-0,0,   13,52,  49,94,  49,93,  
-0,0,   13,53,  13,54,  49,93,  
-49,93, 0,0,    0,0,    49,93,  
-0,0,   0,0,    0,0,    21,58,  
-21,58, 21,58,  21,58,  21,58,  
-21,58, 21,58,  21,58,  21,58,  
-21,58, 0,0,    0,0,    0,0,    
-49,93, 0,0,    0,0,    13,52,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  49,93,  0,0,    
-13,48, 0,0,    21,59,  0,0,    
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  21,59,  21,59,  
-21,59, 21,59,  22,59,  22,59,  
-22,59, 22,59,  22,59,  22,59,  
-22,59, 22,59,  22,59,  22,59,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-22,60, 23,59,  23,59,  23,59,  
-23,59, 23,59,  23,59,  23,59,  
-23,59, 23,59,  23,59,  0,0,    
-22,61, 0,0,    0,0,    0,0,    
-22,62, 0,0,    23,63,  24,59,  
-24,59, 24,59,  24,59,  24,59,  
-24,59, 24,59,  24,59,  24,59,  
-24,59, 0,0,    0,0,    0,0,    
-23,64, 26,59,  26,59,  26,59,  
-26,59, 26,59,  26,59,  26,59,  
-26,59, 26,59,  26,59,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    24,65,  27,59,  
-27,59, 27,59,  27,59,  27,59,  
-27,59, 27,59,  27,59,  27,59,  
-27,59, 0,0,    0,0,    26,66,  
-28,59, 28,59,  28,59,  28,59,  
-28,59, 28,59,  28,59,  28,59,  
-28,59, 28,59,  29,59,  29,59,  
-29,59, 29,59,  29,59,  29,59,  
-29,59, 29,59,  29,59,  29,59,  
-0,0,   0,0,    0,0,    0,0,    
-27,67, 0,0,    0,0,    0,0,    
-0,0,   0,0,    28,68,  0,0,    
-0,0,   0,0,    0,0,    29,69,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   29,70,  30,59,  30,59,  
-30,59, 30,59,  30,59,  30,59,  
-30,59, 30,59,  30,59,  30,59,  
-31,59, 31,59,  31,59,  31,59,  
-31,59, 31,59,  31,59,  31,59,  
-31,59, 31,59,  32,59,  32,59,  
-32,59, 32,59,  32,59,  32,59,  
-32,59, 32,59,  32,59,  32,59,  
-0,0,   0,0,    31,72,  0,0,    
-0,0,   0,0,    0,0,    30,71,  
-0,0,   0,0,    31,73,  32,75,  
-31,74, 33,59,  33,59,  33,59,  
-33,59, 33,59,  33,59,  33,59,  
-33,59, 33,59,  33,59,  0,0,    
-0,0,   0,0,    0,0,    32,76,  
-0,0,   0,0,    0,0,    0,0,    
-33,77, 0,0,    33,78,  34,59,  
-34,59, 34,59,  34,59,  34,59,  
-34,59, 34,59,  34,59,  34,59,  
-34,59, 0,0,    0,0,    0,0,    
-0,0,   33,79,  33,80,  35,59,  
-35,59, 35,59,  35,59,  35,59,  
-35,59, 35,59,  35,59,  35,59,  
-35,59, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-34,81, 0,0,    0,0,    0,0,    
-0,0,   35,82,  0,0,    0,0,    
-0,0,   35,83,  63,59,  63,59,  
-63,59, 63,59,  63,59,  63,59,  
-63,59, 63,59,  63,59,  63,59,  
-83,126,        83,126, 83,126, 83,126, 
-83,126,        83,126, 83,126, 83,126, 
-83,126,        83,126, 0,0,    0,0,    
-36,84, 63,103, 36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-36,84, 36,84,  36,84,  36,84,  
-37,59, 37,59,  37,59,  37,59,  
-37,59, 37,59,  37,59,  37,59,  
-37,59, 37,59,  38,59,  38,59,  
-38,59, 38,59,  38,59,  38,59,  
-38,59, 38,59,  38,59,  38,59,  
-40,59, 40,59,  40,59,  40,59,  
-40,59, 40,59,  40,59,  40,59,  
-40,59, 40,59,  37,85,  0,0,    
-0,0,   0,0,    38,86,  41,59,  
-41,59, 41,59,  41,59,  41,59,  
-41,59, 41,59,  41,59,  41,59,  
-41,59, 0,0,    0,0,    0,0,    
-0,0,   0,0,    40,88,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 0,0,    0,0,    0,0,    
-0,0,   41,89,  0,0,    0,0,    
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  0,0,    0,0,    
-0,0,   0,0,    52,97,  0,0,    
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  52,97,  52,97,  
-52,97, 52,97,  57,57,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    57,57,  57,0,   
-60,59, 60,59,  60,59,  60,59,  
-60,59, 60,59,  60,59,  60,59,  
-60,59, 60,59,  62,59,  62,59,  
-62,59, 62,59,  62,59,  62,59,  
-62,59, 62,59,  62,59,  62,59,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-57,57, 57,57,  0,0,    0,0,    
-0,0,   57,57,  57,57,  60,100, 
-0,0,   57,57,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-62,102,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    57,57,  64,59,  
-64,59, 64,59,  64,59,  64,59,  
-64,59, 64,59,  64,59,  64,59,  
-64,59, 65,59,  65,59,  65,59,  
-65,59, 65,59,  65,59,  65,59,  
-65,59, 65,59,  65,59,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-57,57, 0,0,    64,104, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    65,105, 
-66,59, 66,59,  66,59,  66,59,  
-66,59, 66,59,  66,59,  66,59,  
-66,59, 66,59,  67,59,  67,59,  
-67,59, 67,59,  67,59,  67,59,  
-67,59, 67,59,  67,59,  67,59,  
-66,106,        68,59,  68,59,  68,59,  
-68,59, 68,59,  68,59,  68,59,  
-68,59, 68,59,  68,59,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-66,107,        66,108, 0,0,    0,0,    
-67,109,        69,59,  69,59,  69,59,  
-69,59, 69,59,  69,59,  69,59,  
-69,59, 69,59,  69,59,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   68,110, 70,59,  70,59,  
-70,59, 70,59,  70,59,  70,59,  
-70,59, 70,59,  70,59,  70,59,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-69,111,        0,0,    0,0,    0,0,    
-0,0,   70,112, 71,59,  71,59,  
-71,59, 71,59,  71,59,  71,59,  
-71,59, 71,59,  71,59,  71,59,  
-73,59, 73,59,  73,59,  73,59,  
-73,59, 73,59,  73,59,  73,59,  
-73,59, 73,59,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    71,113, 
-0,0,   73,114, 74,59,  74,59,  
-74,59, 74,59,  74,59,  74,59,  
-74,59, 74,59,  74,59,  74,59,  
-75,59, 75,59,  75,59,  75,59,  
-75,59, 75,59,  75,59,  75,59,  
-75,59, 75,59,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   75,116, 0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    74,115, 76,59,  
-76,59, 76,59,  76,59,  76,59,  
-76,59, 76,59,  76,59,  76,59,  
-76,59, 77,59,  77,59,  77,59,  
-77,59, 77,59,  77,59,  77,59,  
-77,59, 77,59,  77,59,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    76,117, 
-0,0,   0,0,    0,0,    0,0,    
-0,0,   77,118, 78,59,  78,59,  
-78,59, 78,59,  78,59,  78,59,  
-78,59, 78,59,  78,59,  78,59,  
-79,59, 79,59,  79,59,  79,59,  
-79,59, 79,59,  79,59,  79,59,  
-79,59, 79,59,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    78,119, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    78,120, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    79,121, 80,59,  
-80,59, 80,59,  80,59,  80,59,  
-80,59, 80,59,  80,59,  80,59,  
-80,59, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   80,122, 81,59,  81,59,  
-81,59, 81,59,  81,59,  81,59,  
-81,59, 81,59,  81,59,  81,59,  
-0,0,   0,0,    0,0,    80,123, 
-82,59, 82,59,  82,59,  82,59,  
-82,59, 82,59,  82,59,  82,59,  
-82,59, 82,59,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    81,124, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   82,125, 84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-86,59, 86,59,  86,59,  86,59,  
-86,59, 86,59,  86,59,  86,59,  
-86,59, 86,59,  102,59, 102,59, 
-102,59,        102,59, 102,59, 102,59, 
-102,59,        102,59, 102,59, 102,59, 
-0,0,   86,128, 0,0,    0,0,    
-0,0,   0,0,    0,0,    102,138,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   84,84,  0,0,    84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 84,84,  84,84,  84,84,  
-84,84, 85,59,  85,59,  85,59,  
-85,59, 85,59,  85,59,  85,59,  
-85,59, 85,59,  85,59,  87,59,  
-87,59, 87,59,  87,59,  87,59,  
-87,59, 87,59,  87,59,  87,59,  
-87,59, 85,127, 88,59,  88,59,  
-88,59, 88,59,  88,59,  88,59,  
-88,59, 88,59,  88,59,  88,59,  
-96,96, 0,0,    0,0,    0,0,    
-0,0,   85,107, 85,108, 0,0,    
-96,96, 96,0,   88,130, 0,0,    
-0,0,   87,129, 89,59,  89,59,  
-89,59, 89,59,  89,59,  89,59,  
-89,59, 89,59,  89,59,  89,59,  
-0,0,   0,0,    88,107, 88,108, 
-103,59,        103,59, 103,59, 103,59, 
-103,59,        103,59, 103,59, 103,59, 
-103,59,        103,59, 96,96,  96,96,  
-0,0,   0,0,    0,0,    96,96,  
-96,96, 0,0,    0,0,    96,96,  
-0,0,   0,0,    89,110, 0,0,    
-89,131,        100,59, 100,59, 100,59, 
-100,59,        100,59, 100,59, 100,59, 
-100,59,        100,59, 100,59, 0,0,    
-96,96, 101,59, 101,59, 101,59, 
-101,59,        101,59, 101,59, 101,59, 
-101,59,        101,59, 101,59, 104,59, 
-104,59,        104,59, 104,59, 104,59, 
-104,59,        104,59, 104,59, 104,59, 
-104,59,        0,0,    0,0,    0,0,    
-0,0,   100,136,        0,0,    0,0,    
-0,0,   0,0,    96,96,  0,0,    
-101,137,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    104,139,        
-105,59,        105,59, 105,59, 105,59, 
-105,59,        105,59, 105,59, 105,59, 
-105,59,        105,59, 106,59, 106,59, 
-106,59,        106,59, 106,59, 106,59, 
-106,59,        106,59, 106,59, 106,59, 
-107,59,        107,59, 107,59, 107,59, 
-107,59,        107,59, 107,59, 107,59, 
-107,59,        107,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    105,140,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   107,142,        108,59, 108,59, 
-108,59,        108,59, 108,59, 108,59, 
-108,59,        108,59, 108,59, 108,59, 
-0,0,   106,141,        109,59, 109,59, 
-109,59,        109,59, 109,59, 109,59, 
-109,59,        109,59, 109,59, 109,59, 
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    108,143,        
-0,0,   109,144,        110,59, 110,59, 
-110,59,        110,59, 110,59, 110,59, 
-110,59,        110,59, 110,59, 110,59, 
-111,59,        111,59, 111,59, 111,59, 
-111,59,        111,59, 111,59, 111,59, 
-111,59,        111,59, 0,0,    110,145,        
-112,59,        112,59, 112,59, 112,59, 
-112,59,        112,59, 112,59, 112,59, 
-112,59,        112,59, 113,59, 113,59, 
-113,59,        113,59, 113,59, 113,59, 
-113,59,        113,59, 113,59, 113,59, 
-0,0,   0,0,    0,0,    0,0,    
-111,146,       112,147,        0,0,    0,0,    
-113,148,       114,59, 114,59, 114,59, 
-114,59,        114,59, 114,59, 114,59, 
-114,59,        114,59, 114,59, 115,59, 
-115,59,        115,59, 115,59, 115,59, 
-115,59,        115,59, 115,59, 115,59, 
-115,59,        116,59, 116,59, 116,59, 
-116,59,        116,59, 116,59, 116,59, 
-116,59,        116,59, 116,59, 0,0,    
-114,149,       0,0,    0,0,    0,0,    
-115,150,       117,59, 117,59, 117,59, 
-117,59,        117,59, 117,59, 117,59, 
-117,59,        117,59, 117,59, 0,0,    
-0,0,   116,151,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    117,152,        118,59, 
-118,59,        118,59, 118,59, 118,59, 
-118,59,        118,59, 118,59, 118,59, 
-118,59,        119,59, 119,59, 119,59, 
-119,59,        119,59, 119,59, 119,59, 
-119,59,        119,59, 119,59, 0,0,    
-118,153,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    119,154,        119,155,        
-120,59,        120,59, 120,59, 120,59, 
-120,59,        120,59, 120,59, 120,59, 
-120,59,        120,59, 121,59, 121,59, 
-121,59,        121,59, 121,59, 121,59, 
-121,59,        121,59, 121,59, 121,59, 
-122,59,        122,59, 122,59, 122,59, 
-122,59,        122,59, 122,59, 122,59, 
-122,59,        122,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    121,156,        
-123,59,        123,59, 123,59, 123,59, 
-123,59,        123,59, 123,59, 123,59, 
-123,59,        123,59, 124,59, 124,59, 
-124,59,        124,59, 124,59, 124,59, 
-124,59,        124,59, 124,59, 124,59, 
-122,157,       123,158,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    124,159,        
-125,59,        125,59, 125,59, 125,59, 
-125,59,        125,59, 125,59, 125,59, 
-125,59,        125,59, 126,126,        126,126,        
-126,126,       126,126,        126,126,        126,126,        
-126,126,       126,126,        126,126,        126,126,        
-127,59,        127,59, 127,59, 127,59, 
-127,59,        127,59, 127,59, 127,59, 
-127,59,        127,59, 0,0,    0,0,    
-0,0,   125,160,        128,59, 128,59, 
-128,59,        128,59, 128,59, 128,59, 
-128,59,        128,59, 128,59, 128,59, 
-129,59,        129,59, 129,59, 129,59, 
-129,59,        129,59, 129,59, 129,59, 
-129,59,        129,59, 130,59, 130,59, 
-130,59,        130,59, 130,59, 130,59, 
-130,59,        130,59, 130,59, 130,59, 
-0,0,   0,0,    0,0,    127,161,        
-128,162,       129,163,        131,59, 131,59, 
-131,59,        131,59, 131,59, 131,59, 
-131,59,        131,59, 131,59, 131,59, 
-136,59,        136,59, 136,59, 136,59, 
-136,59,        136,59, 136,59, 136,59, 
-136,59,        136,59, 0,0,    131,165,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   130,164,        137,59, 137,59, 
-137,59,        137,59, 137,59, 137,59, 
-137,59,        137,59, 137,59, 137,59, 
-0,0,   0,0,    136,170,        138,59, 
-138,59,        138,59, 138,59, 138,59, 
-138,59,        138,59, 138,59, 138,59, 
-138,59,        139,59, 139,59, 139,59, 
-139,59,        139,59, 139,59, 139,59, 
-139,59,        139,59, 139,59, 0,0,    
-137,171,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    139,173,        0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-138,172,       140,59, 140,59, 140,59, 
-140,59,        140,59, 140,59, 140,59, 
-140,59,        140,59, 140,59, 141,59, 
-141,59,        141,59, 141,59, 141,59, 
-141,59,        141,59, 141,59, 141,59, 
-141,59,        142,59, 142,59, 142,59, 
-142,59,        142,59, 142,59, 142,59, 
-142,59,        142,59, 142,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   140,174,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    141,175,        143,59, 
-143,59,        143,59, 143,59, 143,59, 
-143,59,        143,59, 143,59, 143,59, 
-143,59,        142,176,        144,59, 144,59, 
-144,59,        144,59, 144,59, 144,59, 
-144,59,        144,59, 144,59, 144,59, 
-143,177,       145,59, 145,59, 145,59, 
-145,59,        145,59, 145,59, 145,59, 
-145,59,        145,59, 145,59, 146,59, 
-146,59,        146,59, 146,59, 146,59, 
-146,59,        146,59, 146,59, 146,59, 
-146,59,        0,0,    0,0,    0,0,    
-145,179,       0,0,    144,178,        147,59, 
-147,59,        147,59, 147,59, 147,59, 
-147,59,        147,59, 147,59, 147,59, 
-147,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    147,180,        148,59, 
-148,59,        148,59, 148,59, 148,59, 
-148,59,        148,59, 148,59, 148,59, 
-148,59,        149,59, 149,59, 149,59, 
-149,59,        149,59, 149,59, 149,59, 
-149,59,        149,59, 149,59, 0,0,    
-148,181,       150,59, 150,59, 150,59, 
-150,59,        150,59, 150,59, 150,59, 
-150,59,        150,59, 150,59, 149,182,        
-151,59,        151,59, 151,59, 151,59, 
-151,59,        151,59, 151,59, 151,59, 
-151,59,        151,59, 152,59, 152,59, 
-152,59,        152,59, 152,59, 152,59, 
-152,59,        152,59, 152,59, 152,59, 
-150,183,       153,59, 153,59, 153,59, 
-153,59,        153,59, 153,59, 153,59, 
-153,59,        153,59, 153,59, 0,0,    
-154,59,        154,59, 154,59, 154,59, 
-154,59,        154,59, 154,59, 154,59, 
-154,59,        154,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    153,184,        154,185,        
-155,59,        155,59, 155,59, 155,59, 
-155,59,        155,59, 155,59, 155,59, 
-155,59,        155,59, 156,59, 156,59, 
-156,59,        156,59, 156,59, 156,59, 
-156,59,        156,59, 156,59, 156,59, 
-157,59,        157,59, 157,59, 157,59, 
-157,59,        157,59, 157,59, 157,59, 
-157,59,        157,59, 158,59, 158,59, 
-158,59,        158,59, 158,59, 158,59, 
-158,59,        158,59, 158,59, 158,59, 
-156,186,       159,59, 159,59, 159,59, 
-159,59,        159,59, 159,59, 159,59, 
-159,59,        159,59, 159,59, 160,59, 
-160,59,        160,59, 160,59, 160,59, 
-160,59,        160,59, 160,59, 160,59, 
-160,59,        157,187,        0,0,    0,0,    
-158,188,       161,59, 161,59, 161,59, 
-161,59,        161,59, 161,59, 161,59, 
-161,59,        161,59, 161,59, 162,59, 
-162,59,        162,59, 162,59, 162,59, 
-162,59,        162,59, 162,59, 162,59, 
-162,59,        0,0,    0,0,    0,0,    
-160,189,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-162,191,       0,0,    0,0,    0,0,    
-161,175,       161,190,        163,59, 163,59, 
-163,59,        163,59, 163,59, 163,59, 
-163,59,        163,59, 163,59, 163,59, 
-164,59,        164,59, 164,59, 164,59, 
-164,59,        164,59, 164,59, 164,59, 
-164,59,        164,59, 165,59, 165,59, 
-165,59,        165,59, 165,59, 165,59, 
-165,59,        165,59, 165,59, 165,59, 
-0,0,   164,193,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-163,192,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    164,175,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-165,194,       170,59, 170,59, 170,59, 
-170,59,        170,59, 170,59, 170,59, 
-170,59,        170,59, 170,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    170,200,        171,59, 
-171,59,        171,59, 171,59, 171,59, 
-171,59,        171,59, 171,59, 171,59, 
-171,59,        172,59, 172,59, 172,59, 
-172,59,        172,59, 172,59, 172,59, 
-172,59,        172,59, 172,59, 173,59, 
-173,59,        173,59, 173,59, 173,59, 
-173,59,        173,59, 173,59, 173,59, 
-173,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-173,201,       174,59, 174,59, 174,59, 
-174,59,        174,59, 174,59, 174,59, 
-174,59,        174,59, 174,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    174,202,        175,59, 
-175,59,        175,59, 175,59, 175,59, 
-175,59,        175,59, 175,59, 175,59, 
-175,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    175,203,        176,59, 
-176,59,        176,59, 176,59, 176,59, 
-176,59,        176,59, 176,59, 176,59, 
-176,59,        177,59, 177,59, 177,59, 
-177,59,        177,59, 177,59, 177,59, 
-177,59,        177,59, 177,59, 178,59, 
-178,59,        178,59, 178,59, 178,59, 
-178,59,        178,59, 178,59, 178,59, 
-178,59,        179,59, 179,59, 179,59, 
-179,59,        179,59, 179,59, 179,59, 
-179,59,        179,59, 179,59, 0,0,    
-176,204,       0,0,    0,0,    177,205,        
-178,206,       0,0,    0,0,    0,0,    
-0,0,   0,0,    179,207,        180,59, 
-180,59,        180,59, 180,59, 180,59, 
-180,59,        180,59, 180,59, 180,59, 
-180,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-180,208,       181,59, 181,59, 181,59, 
-181,59,        181,59, 181,59, 181,59, 
-181,59,        181,59, 181,59, 182,59, 
-182,59,        182,59, 182,59, 182,59, 
-182,59,        182,59, 182,59, 182,59, 
-182,59,        183,59, 183,59, 183,59, 
-183,59,        183,59, 183,59, 183,59, 
-183,59,        183,59, 183,59, 0,0,    
-0,0,   0,0,    0,0,    181,209,        
-184,59,        184,59, 184,59, 184,59, 
-184,59,        184,59, 184,59, 184,59, 
-184,59,        184,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    183,210,        
-0,0,   184,211,        185,59, 185,59, 
-185,59,        185,59, 185,59, 185,59, 
-185,59,        185,59, 185,59, 185,59, 
-186,59,        186,59, 186,59, 186,59, 
-186,59,        186,59, 186,59, 186,59, 
-186,59,        186,59, 187,59, 187,59, 
-187,59,        187,59, 187,59, 187,59, 
-187,59,        187,59, 187,59, 187,59, 
-0,0,   0,0,    0,0,    186,213,        
-0,0,   0,0,    185,212,        188,59, 
-188,59,        188,59, 188,59, 188,59, 
-188,59,        188,59, 188,59, 188,59, 
-188,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    187,214,        189,59, 
-189,59,        189,59, 189,59, 189,59, 
-189,59,        189,59, 189,59, 189,59, 
-189,59,        190,59, 190,59, 190,59, 
-190,59,        190,59, 190,59, 190,59, 
-190,59,        190,59, 190,59, 188,215,        
-189,216,       191,59, 191,59, 191,59, 
-191,59,        191,59, 191,59, 191,59, 
-191,59,        191,59, 191,59, 192,59, 
-192,59,        192,59, 192,59, 192,59, 
-192,59,        192,59, 192,59, 192,59, 
-192,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    190,217,        0,0,    
-192,218,       193,59, 193,59, 193,59, 
-193,59,        193,59, 193,59, 193,59, 
-193,59,        193,59, 193,59, 194,59, 
-194,59,        194,59, 194,59, 194,59, 
-194,59,        194,59, 194,59, 194,59, 
-194,59,        200,59, 200,59, 200,59, 
-200,59,        200,59, 200,59, 200,59, 
-200,59,        200,59, 200,59, 193,219,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-200,226,       0,0,    0,0,    0,0,    
-0,0,   0,0,    194,220,        201,59, 
-201,59,        201,59, 201,59, 201,59, 
-201,59,        201,59, 201,59, 201,59, 
-201,59,        202,59, 202,59, 202,59, 
-202,59,        202,59, 202,59, 202,59, 
-202,59,        202,59, 202,59, 203,59, 
-203,59,        203,59, 203,59, 203,59, 
-203,59,        203,59, 203,59, 203,59, 
-203,59,        201,227,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    202,228,        
-0,0,   0,0,    0,0,    203,229,        
-204,59,        204,59, 204,59, 204,59, 
-204,59,        204,59, 204,59, 204,59, 
-204,59,        204,59, 205,59, 205,59, 
-205,59,        205,59, 205,59, 205,59, 
-205,59,        205,59, 205,59, 205,59, 
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    205,230,        
-206,59,        206,59, 206,59, 206,59, 
-206,59,        206,59, 206,59, 206,59, 
-206,59,        206,59, 207,59, 207,59, 
-207,59,        207,59, 207,59, 207,59, 
-207,59,        207,59, 207,59, 207,59, 
-208,59,        208,59, 208,59, 208,59, 
-208,59,        208,59, 208,59, 208,59, 
-208,59,        208,59, 0,0,    206,231,        
-209,59,        209,59, 209,59, 209,59, 
-209,59,        209,59, 209,59, 209,59, 
-209,59,        209,59, 0,0,    0,0,    
-207,232,       0,0,    0,0,    0,0,    
-208,233,       210,59, 210,59, 210,59, 
-210,59,        210,59, 210,59, 210,59, 
-210,59,        210,59, 210,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    210,234,        211,59, 
-211,59,        211,59, 211,59, 211,59, 
-211,59,        211,59, 211,59, 211,59, 
-211,59,        212,59, 212,59, 212,59, 
-212,59,        212,59, 212,59, 212,59, 
-212,59,        212,59, 212,59, 213,59, 
-213,59,        213,59, 213,59, 213,59, 
-213,59,        213,59, 213,59, 213,59, 
-213,59,        214,59, 214,59, 214,59, 
-214,59,        214,59, 214,59, 214,59, 
-214,59,        214,59, 214,59, 215,59, 
-215,59,        215,59, 215,59, 215,59, 
-215,59,        215,59, 215,59, 215,59, 
-215,59,        0,0,    214,235,        216,59, 
-216,59,        216,59, 216,59, 216,59, 
-216,59,        216,59, 216,59, 216,59, 
-216,59,        217,59, 217,59, 217,59, 
-217,59,        217,59, 217,59, 217,59, 
-217,59,        217,59, 217,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-215,236,       218,59, 218,59, 218,59, 
-218,59,        218,59, 218,59, 218,59, 
-218,59,        218,59, 218,59, 0,0,    
-0,0,   217,237,        219,59, 219,59, 
-219,59,        219,59, 219,59, 219,59, 
-219,59,        219,59, 219,59, 219,59, 
-220,59,        220,59, 220,59, 220,59, 
-220,59,        220,59, 220,59, 220,59, 
-220,59,        220,59, 226,59, 226,59, 
-226,59,        226,59, 226,59, 226,59, 
-226,59,        226,59, 226,59, 226,59, 
-0,0,   220,239,        0,0,    0,0,    
-0,0,   0,0,    219,238,        227,59, 
-227,59,        227,59, 227,59, 227,59, 
-227,59,        227,59, 227,59, 227,59, 
-227,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    226,245,        228,59, 
-228,59,        228,59, 228,59, 228,59, 
-228,59,        228,59, 228,59, 228,59, 
-228,59,        229,59, 229,59, 229,59, 
-229,59,        229,59, 229,59, 229,59, 
-229,59,        229,59, 229,59, 230,59, 
-230,59,        230,59, 230,59, 230,59, 
-230,59,        230,59, 230,59, 230,59, 
-230,59,        0,0,    229,247,        0,0,    
-0,0,   0,0,    0,0,    228,246,        
-231,59,        231,59, 231,59, 231,59, 
-231,59,        231,59, 231,59, 231,59, 
-231,59,        231,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    230,248,        
-232,59,        232,59, 232,59, 232,59, 
-232,59,        232,59, 232,59, 232,59, 
-232,59,        232,59, 231,249,        233,59, 
-233,59,        233,59, 233,59, 233,59, 
-233,59,        233,59, 233,59, 233,59, 
-233,59,        234,59, 234,59, 234,59, 
-234,59,        234,59, 234,59, 234,59, 
-234,59,        234,59, 234,59, 235,59, 
-235,59,        235,59, 235,59, 235,59, 
-235,59,        235,59, 235,59, 235,59, 
-235,59,        0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   234,250,        236,59, 236,59, 
-236,59,        236,59, 236,59, 236,59, 
-236,59,        236,59, 236,59, 236,59, 
-237,59,        237,59, 237,59, 237,59, 
-237,59,        237,59, 237,59, 237,59, 
-237,59,        237,59, 238,59, 238,59, 
-238,59,        238,59, 238,59, 238,59, 
-238,59,        238,59, 238,59, 238,59, 
-0,0,   237,252,        236,251,        239,59, 
-239,59,        239,59, 239,59, 239,59, 
-239,59,        239,59, 239,59, 239,59, 
-239,59,        246,259,        246,259,        238,253,        
-245,59,        245,59, 245,59, 245,59, 
-245,59,        245,59, 245,59, 245,59, 
-245,59,        245,59, 248,59, 248,59, 
-248,59,        248,59, 248,59, 248,59, 
-248,59,        248,59, 248,59, 248,59, 
-246,259,       0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    246,259,        
-246,259,       246,259,        0,0,    0,0,    
-0,0,   246,259,        0,0,    248,262,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,259,        246,259,        
-0,0,   246,259,        247,59, 247,59, 
-247,59,        247,59, 247,59, 247,59, 
-247,59,        247,59, 247,59, 247,59, 
-249,59,        249,59, 249,59, 249,59, 
-249,59,        249,59, 249,59, 249,59, 
-249,59,        249,59, 0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    247,261,        
-0,0,   0,0,    0,0,    246,260,        
-0,0,   246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        246,260,        
-246,260,       246,260,        246,260,        0,0,    
-246,259,       250,59, 250,59, 250,59, 
-250,59,        250,59, 250,59, 250,59, 
-250,59,        250,59, 250,59, 251,59, 
-251,59,        251,59, 251,59, 251,59, 
-251,59,        251,59, 251,59, 251,59, 
-251,59,        252,59, 252,59, 252,59, 
-252,59,        252,59, 252,59, 252,59, 
-252,59,        252,59, 252,59, 0,0,    
-251,263,       253,59, 253,59, 253,59, 
-253,59,        253,59, 253,59, 253,59, 
-253,59,        253,59, 253,59, 259,259,        
-259,259,       261,59, 261,59, 261,59, 
-261,59,        261,59, 261,59, 261,59, 
-261,59,        261,59, 261,59, 0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    261,270,        0,0,    
-0,0,   0,0,    259,259,        0,0,    
-0,0,   253,264,        0,0,    0,0,    
-0,0,   259,259,        259,259,        259,259,        
-0,0,   0,0,    0,0,    259,259,        
-0,0,   0,0,    259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        0,0,    259,259,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    259,268,        
-263,59,        263,59, 263,59, 263,59, 
-263,59,        263,59, 263,59, 263,59, 
-263,59,        263,59, 0,0,    0,0,    
-264,59,        264,59, 264,59, 264,59, 
-264,59,        264,59, 264,59, 264,59, 
-264,59,        264,59, 0,0,    0,0,    
-0,0,   259,259,        0,0,    259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       259,259,        259,259,        259,259,        
-259,259,       264,272,        259,259,        260,259,        
-260,259,       262,59, 262,59, 262,59, 
-262,59,        262,59, 262,59, 262,59, 
-262,59,        262,59, 262,59, 270,59, 
-270,59,        270,59, 270,59, 270,59, 
-270,59,        270,59, 270,59, 270,59, 
-270,59,        0,0,    260,259,        0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   260,259,        260,259,        260,259,        
-262,271,       0,0,    0,0,    260,259,        
-0,0,   0,0,    260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,259,       260,259,        0,0,    260,259,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    260,269,        
-272,59,        272,59, 272,59, 272,59, 
-272,59,        272,59, 272,59, 272,59, 
-272,59,        272,59, 277,59, 277,59, 
-277,59,        277,59, 277,59, 277,59, 
-277,59,        277,59, 277,59, 277,59, 
-0,0,   0,0,    0,0,    0,0,    
-0,0,   260,260,        0,0,    260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       260,260,        260,260,        260,260,        
-260,260,       0,0,    260,259,        269,59, 
-269,59,        269,59, 269,59, 269,59, 
-269,59,        269,59, 269,59, 269,59, 
-269,59,        271,59, 271,59, 271,59, 
-271,59,        271,59, 271,59, 271,59, 
-271,59,        271,59, 271,59, 280,59, 
-280,59,        280,59, 280,59, 280,59, 
-280,59,        280,59, 280,59, 280,59, 
-280,59,        269,276,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    271,277,        
-276,59,        276,59, 276,59, 276,59, 
-276,59,        276,59, 276,59, 276,59, 
-276,59,        276,59, 283,59, 283,59, 
-283,59,        283,59, 283,59, 283,59, 
-283,59,        283,59, 283,59, 283,59, 
-276,280,       0,0,    0,0,    0,0,    
-0,0,   0,0,    280,283,        0,0,    
-0,0,   283,286,        286,59, 286,59, 
-286,59,        286,59, 286,59, 286,59, 
-286,59,        286,59, 286,59, 286,59, 
-288,59,        288,59, 288,59, 288,59, 
-288,59,        288,59, 288,59, 288,59, 
-288,59,        288,59, 290,59, 290,59, 
-290,59,        290,59, 290,59, 290,59, 
-290,59,        290,59, 290,59, 290,59, 
-0,0,   286,288,        0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    288,290,        292,59, 
-292,59,        292,59, 292,59, 292,59, 
-292,59,        292,59, 292,59, 292,59, 
-292,59,        0,0,    0,0,    0,0,    
-0,0,   290,292,        294,59, 294,59, 
-294,59,        294,59, 294,59, 294,59, 
-294,59,        294,59, 294,59, 294,59, 
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    294,296,        
-0,0,   0,0,    0,0,    292,294,        
-296,59,        296,59, 296,59, 296,59, 
-296,59,        296,59, 296,59, 296,59, 
-296,59,        296,59, 298,59, 298,59, 
-298,59,        298,59, 298,59, 298,59, 
-298,59,        298,59, 298,59, 298,59, 
-300,59,        300,59, 300,59, 300,59, 
-300,59,        300,59, 300,59, 300,59, 
-300,59,        300,59, 296,298,        300,301,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    298,300,        0,0,    
-0,0};
-struct yysvf yysvec[] = {
-0,     0,      0,
-yycrank+-1,    0,              yyvstop+1,
-yycrank+-60,   yysvec+1,       yyvstop+3,
-yycrank+-119,  yysvec+1,       yyvstop+5,
-yycrank+-178,  yysvec+1,       yyvstop+7,
-yycrank+-237,  yysvec+1,       yyvstop+9,
-yycrank+-296,  yysvec+1,       yyvstop+11,
-yycrank+-387,  0,              0,      
-yycrank+-15,   yysvec+7,       0,      
-yycrank+-394,  0,              0,      
-yycrank+-24,   yysvec+9,       0,      
-yycrank+-401,  yysvec+9,       0,      
-yycrank+-416,  yysvec+9,       0,      
-yycrank+-464,  0,              0,      
-yycrank+-290,  yysvec+13,      0,      
-yycrank+0,     0,              yyvstop+13,
-yycrank+15,    0,              yyvstop+15,
-yycrank+0,     0,              yyvstop+18,
-yycrank+16,    0,              yyvstop+20,
-yycrank+0,     0,              yyvstop+23,
-yycrank+16,    0,              yyvstop+26,
-yycrank+495,   0,              yyvstop+28,
-yycrank+570,   yysvec+21,      yyvstop+32,
-yycrank+589,   yysvec+21,      yyvstop+35,
-yycrank+607,   yysvec+21,      yyvstop+38,
-yycrank+54,    yysvec+21,      yyvstop+41,
-yycrank+621,   yysvec+21,      yyvstop+44,
-yycrank+639,   yysvec+21,      yyvstop+47,
-yycrank+652,   yysvec+21,      yyvstop+50,
-yycrank+662,   yysvec+21,      yyvstop+53,
-yycrank+694,   yysvec+21,      yyvstop+56,
-yycrank+704,   yysvec+21,      yyvstop+59,
-yycrank+714,   yysvec+21,      yyvstop+62,
-yycrank+737,   yysvec+21,      yyvstop+65,
-yycrank+759,   yysvec+21,      yyvstop+68,
-yycrank+775,   yysvec+21,      yyvstop+71,
-yycrank+785,   yysvec+21,      yyvstop+74,
-yycrank+860,   yysvec+21,      yyvstop+78,
-yycrank+870,   yysvec+21,      yyvstop+81,
-yycrank+113,   yysvec+21,      yyvstop+84,
-yycrank+880,   yysvec+21,      yyvstop+87,
-yycrank+895,   yysvec+21,      yyvstop+90,
-yycrank+0,     0,              yyvstop+93,
-yycrank+15,    0,              yyvstop+95,
-yycrank+0,     0,              yyvstop+97,
-yycrank+17,    0,              yyvstop+99,
-yycrank+0,     0,              yyvstop+101,
-yycrank+19,    0,              yyvstop+103,
-yycrank+0,     0,              yyvstop+105,
-yycrank+-491,  0,              yyvstop+107,
-yycrank+21,    0,              yyvstop+109,
-yycrank+19,    0,              yyvstop+111,
-yycrank+911,   0,              yyvstop+113,
-yycrank+20,    yysvec+52,      yyvstop+116,
-yycrank+15,    yysvec+52,      yyvstop+119,
-yycrank+0,     yysvec+16,      yyvstop+122,
-yycrank+0,     0,              yyvstop+124,
-yycrank+-1033, 0,              yyvstop+126,
-yycrank+0,     yysvec+21,      yyvstop+128,
-yycrank+172,   yysvec+21,      yyvstop+131,
-yycrank+996,   yysvec+21,      yyvstop+133,
-yycrank+231,   yysvec+21,      yyvstop+135,
-yycrank+1006,  yysvec+21,      yyvstop+137,
-yycrank+810,   yysvec+21,      yyvstop+139,
-yycrank+1051,  yysvec+21,      yyvstop+141,
-yycrank+1061,  yysvec+21,      yyvstop+143,
-yycrank+1092,  yysvec+21,      yyvstop+145,
-yycrank+1102,  yysvec+21,      yyvstop+147,
-yycrank+1113,  yysvec+21,      yyvstop+149,
-yycrank+1133,  yysvec+21,      yyvstop+151,
-yycrank+1150,  yysvec+21,      yyvstop+153,
-yycrank+1174,  yysvec+21,      yyvstop+155,
-yycrank+290,   yysvec+21,      yyvstop+157,
-yycrank+1184,  yysvec+21,      yyvstop+160,
-yycrank+1206,  yysvec+21,      yyvstop+162,
-yycrank+1216,  yysvec+21,      yyvstop+164,
-yycrank+1243,  yysvec+21,      yyvstop+166,
-yycrank+1253,  yysvec+21,      yyvstop+168,
-yycrank+1278,  yysvec+21,      yyvstop+170,
-yycrank+1288,  yysvec+21,      yyvstop+172,
-yycrank+1323,  yysvec+21,      yyvstop+174,
-yycrank+1342,  yysvec+21,      yyvstop+176,
-yycrank+1356,  yysvec+21,      yyvstop+178,
-yycrank+820,   yysvec+21,      yyvstop+180,
-yycrank+1382,  yysvec+21,      yyvstop+182,
-yycrank+1457,  yysvec+21,      yyvstop+185,
-yycrank+1392,  yysvec+21,      yyvstop+187,
-yycrank+1467,  yysvec+21,      yyvstop+189,
-yycrank+1478,  yysvec+21,      yyvstop+191,
-yycrank+1502,  yysvec+21,      yyvstop+193,
-yycrank+0,     0,              yyvstop+195,
-yycrank+31,    0,              0,      
-yycrank+44,    0,              0,      
-yycrank+0,     yysvec+49,      0,      
-yycrank+0,     0,              yyvstop+197,
-yycrank+0,     0,              yyvstop+199,
-yycrank+-1535, 0,              yyvstop+201,
-yycrank+0,     yysvec+52,      yyvstop+203,
-yycrank+45,    yysvec+52,      yyvstop+205,
-yycrank+36,    yysvec+52,      yyvstop+207,
-yycrank+1541,  yysvec+21,      yyvstop+209,
-yycrank+1553,  yysvec+21,      yyvstop+211,
-yycrank+1402,  yysvec+21,      yyvstop+214,
-yycrank+1516,  yysvec+21,      yyvstop+216,
-yycrank+1563,  yysvec+21,      yyvstop+219,
-yycrank+1592,  yysvec+21,      yyvstop+221,
-yycrank+1602,  yysvec+21,      yyvstop+223,
-yycrank+1612,  yysvec+21,      yyvstop+225,
-yycrank+1638,  yysvec+21,      yyvstop+227,
-yycrank+1650,  yysvec+21,      yyvstop+229,
-yycrank+1670,  yysvec+21,      yyvstop+231,
-yycrank+1680,  yysvec+21,      yyvstop+233,
-yycrank+1692,  yysvec+21,      yyvstop+235,
-yycrank+1702,  yysvec+21,      yyvstop+237,
-yycrank+1721,  yysvec+21,      yyvstop+239,
-yycrank+1731,  yysvec+21,      yyvstop+241,
-yycrank+1741,  yysvec+21,      yyvstop+243,
-yycrank+1757,  yysvec+21,      yyvstop+245,
-yycrank+1779,  yysvec+21,      yyvstop+247,
-yycrank+1789,  yysvec+21,      yyvstop+249,
-yycrank+1812,  yysvec+21,      yyvstop+251,
-yycrank+1822,  yysvec+21,      yyvstop+254,
-yycrank+1832,  yysvec+21,      yyvstop+256,
-yycrank+1848,  yysvec+21,      yyvstop+258,
-yycrank+1858,  yysvec+21,      yyvstop+260,
-yycrank+1880,  yysvec+21,      yyvstop+262,
-yycrank+1890,  yysvec+21,      yyvstop+264,
-yycrank+1900,  yysvec+21,      yyvstop+267,
-yycrank+1914,  yysvec+21,      yyvstop+269,
-yycrank+1924,  yysvec+21,      yyvstop+271,
-yycrank+1934,  yysvec+21,      yyvstop+273,
-yycrank+1950,  yysvec+21,      yyvstop+275,
-yycrank+20,    0,              0,      
-yycrank+21,    0,              0,      
-yycrank+22,    yysvec+52,      yyvstop+277,
-yycrank+53,    yysvec+52,      yyvstop+279,
-yycrank+1960,  yysvec+21,      yyvstop+281,
-yycrank+1982,  yysvec+21,      yyvstop+283,
-yycrank+1995,  yysvec+21,      yyvstop+285,
-yycrank+2005,  yysvec+21,      yyvstop+287,
-yycrank+2037,  yysvec+21,      yyvstop+289,
-yycrank+2047,  yysvec+21,      yyvstop+291,
-yycrank+2057,  yysvec+21,      yyvstop+293,
-yycrank+2083,  yysvec+21,      yyvstop+295,
-yycrank+2094,  yysvec+21,      yyvstop+297,
-yycrank+2105,  yysvec+21,      yyvstop+299,
-yycrank+2115,  yysvec+21,      yyvstop+301,
-yycrank+2131,  yysvec+21,      yyvstop+304,
-yycrank+2151,  yysvec+21,      yyvstop+306,
-yycrank+2161,  yysvec+21,      yyvstop+308,
-yycrank+2173,  yysvec+21,      yyvstop+310,
-yycrank+2184,  yysvec+21,      yyvstop+312,
-yycrank+2194,  yysvec+21,      yyvstop+315,
-yycrank+2205,  yysvec+21,      yyvstop+318,
-yycrank+2216,  yysvec+21,      yyvstop+320,
-yycrank+2236,  yysvec+21,      yyvstop+322,
-yycrank+2246,  yysvec+21,      yyvstop+325,
-yycrank+2256,  yysvec+21,      yyvstop+327,
-yycrank+2266,  yysvec+21,      yyvstop+329,
-yycrank+2277,  yysvec+21,      yyvstop+331,
-yycrank+2287,  yysvec+21,      yyvstop+334,
-yycrank+2301,  yysvec+21,      yyvstop+336,
-yycrank+2311,  yysvec+21,      yyvstop+338,
-yycrank+2338,  yysvec+21,      yyvstop+340,
-yycrank+2348,  yysvec+21,      yyvstop+342,
-yycrank+2358,  yysvec+21,      yyvstop+344,
-yycrank+87,    0,              0,      
-yycrank+40,    0,              0,      
-yycrank+53,    yysvec+52,      yyvstop+346,
-yycrank+40,    yysvec+52,      yyvstop+348,
-yycrank+2393,  yysvec+21,      yyvstop+350,
-yycrank+2411,  yysvec+21,      yyvstop+352,
-yycrank+2421,  yysvec+21,      yyvstop+355,
-yycrank+2431,  yysvec+21,      yyvstop+358,
-yycrank+2449,  yysvec+21,      yyvstop+360,
-yycrank+2467,  yysvec+21,      yyvstop+362,
-yycrank+2487,  yysvec+21,      yyvstop+364,
-yycrank+2497,  yysvec+21,      yyvstop+366,
-yycrank+2507,  yysvec+21,      yyvstop+368,
-yycrank+2517,  yysvec+21,      yyvstop+370,
-yycrank+2539,  yysvec+21,      yyvstop+372,
-yycrank+2557,  yysvec+21,      yyvstop+374,
-yycrank+2567,  yysvec+21,      yyvstop+376,
-yycrank+2577,  yysvec+21,      yyvstop+379,
-yycrank+2592,  yysvec+21,      yyvstop+381,
-yycrank+2610,  yysvec+21,      yyvstop+383,
-yycrank+2620,  yysvec+21,      yyvstop+385,
-yycrank+2630,  yysvec+21,      yyvstop+387,
-yycrank+2647,  yysvec+21,      yyvstop+389,
-yycrank+2663,  yysvec+21,      yyvstop+391,
-yycrank+2673,  yysvec+21,      yyvstop+393,
-yycrank+2685,  yysvec+21,      yyvstop+395,
-yycrank+2695,  yysvec+21,      yyvstop+398,
-yycrank+2717,  yysvec+21,      yyvstop+400,
-yycrank+2727,  yysvec+21,      yyvstop+402,
-yycrank+74,    0,              0,      
-yycrank+65,    0,              0,      
-yycrank+70,    0,              0,      
-yycrank+72,    yysvec+52,      yyvstop+404,
-yycrank+85,    yysvec+52,      yyvstop+406,
-yycrank+2737,  yysvec+21,      yyvstop+408,
-yycrank+2763,  yysvec+21,      yyvstop+410,
-yycrank+2773,  yysvec+21,      yyvstop+412,
-yycrank+2783,  yysvec+21,      yyvstop+414,
-yycrank+2808,  yysvec+21,      yyvstop+416,
-yycrank+2818,  yysvec+21,      yyvstop+419,
-yycrank+2836,  yysvec+21,      yyvstop+421,
-yycrank+2846,  yysvec+21,      yyvstop+423,
-yycrank+2856,  yysvec+21,      yyvstop+425,
-yycrank+2868,  yysvec+21,      yyvstop+427,
-yycrank+2885,  yysvec+21,      yyvstop+430,
-yycrank+2903,  yysvec+21,      yyvstop+432,
-yycrank+2913,  yysvec+21,      yyvstop+435,
-yycrank+2923,  yysvec+21,      yyvstop+438,
-yycrank+2933,  yysvec+21,      yyvstop+441,
-yycrank+2943,  yysvec+21,      yyvstop+443,
-yycrank+2955,  yysvec+21,      yyvstop+445,
-yycrank+2965,  yysvec+21,      yyvstop+448,
-yycrank+2985,  yysvec+21,      yyvstop+450,
-yycrank+2998,  yysvec+21,      yyvstop+453,
-yycrank+3008,  yysvec+21,      yyvstop+455,
-yycrank+75,    0,              0,      
-yycrank+92,    0,              0,      
-yycrank+97,    0,              0,      
-yycrank+96,    yysvec+52,      yyvstop+457,
-yycrank+96,    yysvec+52,      yyvstop+459,
-yycrank+3018,  yysvec+21,      yyvstop+461,
-yycrank+3035,  yysvec+21,      yyvstop+463,
-yycrank+3055,  yysvec+21,      yyvstop+466,
-yycrank+3065,  yysvec+21,      yyvstop+468,
-yycrank+3075,  yysvec+21,      yyvstop+470,
-yycrank+3092,  yysvec+21,      yyvstop+472,
-yycrank+3112,  yysvec+21,      yyvstop+474,
-yycrank+3123,  yysvec+21,      yyvstop+477,
-yycrank+3133,  yysvec+21,      yyvstop+480,
-yycrank+3143,  yysvec+21,      yyvstop+482,
-yycrank+3162,  yysvec+21,      yyvstop+485,
-yycrank+3172,  yysvec+21,      yyvstop+487,
-yycrank+3182,  yysvec+21,      yyvstop+489,
-yycrank+3195,  yysvec+21,      yyvstop+491,
-yycrank+103,   0,              0,      
-yycrank+110,   0,              0,      
-yycrank+112,   0,              0,      
-yycrank+116,   yysvec+52,      yyvstop+494,
-yycrank+133,   yysvec+52,      yyvstop+496,
-yycrank+3208,  yysvec+21,      yyvstop+498,
-yycrank+3244,  yysvec+21,      yyvstop+501,
-yycrank+3258,  yysvec+21,      yyvstop+503,
-yycrank+3218,  yysvec+21,      yyvstop+505,
-yycrank+3268,  yysvec+21,      yyvstop+507,
-yycrank+3321,  yysvec+21,      yyvstop+510,
-yycrank+3331,  yysvec+21,      yyvstop+513,
-yycrank+3341,  yysvec+21,      yyvstop+515,
-yycrank+3353,  yysvec+21,      yyvstop+518,
-yycrank+129,   0,              0,      
-yycrank+0,     0,              yyvstop+520,
-yycrank+155,   0,              0,      
-yycrank+131,   yysvec+52,      yyvstop+522,
-yycrank+0,     yysvec+52,      yyvstop+524,
-yycrank+3402,  0,              0,      
-yycrank+3518,  yysvec+21,      yyvstop+527,
-yycrank+3365,  yysvec+21,      yyvstop+529,
-yycrank+3481,  yysvec+21,      yyvstop+531,
-yycrank+3424,  yysvec+21,      yyvstop+533,
-yycrank+3436,  yysvec+21,      yyvstop+536,
-yycrank+127,   0,              0,      
-yycrank+0,     0,              yyvstop+538,
-yycrank+144,   yysvec+52,      yyvstop+540,
-yycrank+140,   0,              0,      
-yycrank+3595,  yysvec+21,      yyvstop+542,
-yycrank+3491,  yysvec+21,      yyvstop+544,
-yycrank+3605,  yysvec+21,      yyvstop+547,
-yycrank+3540,  yysvec+21,      yyvstop+549,
-yycrank+0,     0,              yyvstop+552,
-yycrank+151,   yysvec+52,      yyvstop+554,
-yycrank+163,   0,              0,      
-yycrank+3636,  yysvec+21,      yyvstop+556,
-yycrank+3550,  yysvec+21,      yyvstop+558,
-yycrank+154,   yysvec+52,      yyvstop+561,
-yycrank+138,   0,              0,      
-yycrank+3615,  yysvec+21,      yyvstop+563,
-yycrank+175,   yysvec+52,      yyvstop+565,
-yycrank+168,   0,              0,      
-yycrank+3646,  yysvec+21,      yyvstop+567,
-yycrank+0,     0,              yyvstop+569,
-yycrank+159,   0,              0,      
-yycrank+3666,  yysvec+21,      yyvstop+571,
-yycrank+162,   0,              0,      
-yycrank+3676,  yysvec+21,      yyvstop+573,
-yycrank+158,   0,              0,      
-yycrank+3686,  yysvec+21,      yyvstop+575,
-yycrank+158,   0,              0,      
-yycrank+3707,  yysvec+21,      yyvstop+577,
-yycrank+205,   0,              0,      
-yycrank+3722,  yysvec+21,      yyvstop+579,
-yycrank+194,   0,              0,      
-yycrank+3744,  yysvec+21,      yyvstop+581,
-yycrank+189,   0,              0,      
-yycrank+3754,  yysvec+21,      yyvstop+583,
-yycrank+215,   0,              0,      
-yycrank+3764,  yysvec+21,      yyvstop+585,
-yycrank+0,     0,              yyvstop+587,
-0,     0,      0};
-struct yywork *yytop = yycrank+3838;
-struct yysvf *yybgin = yysvec+1;
-char yymatch[] = {
-  0,   1,   1,   1,   1,   1,   1,   1, 
-  1,   9,  10,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  9,   1,   1,   1,   1,   1,   1,  39, 
- 40,  40,   1,   1,  44,  45,  44,   1, 
- 48,  48,  48,  48,  48,  48,  48,  48, 
- 48,  48,  40,  40,   1,  40,   1,  44, 
-  1,  65,  65,  65,  65,  65,  65,  65, 
- 65,  65,  65,  65,  65,  65,  65,  65, 
- 65,  65,  65,  65,  65,  65,  65,  65, 
- 65,  65,  65,   1,  44,   1,   1,  95, 
-  1,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,   1,  45,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-0};
-char yyextra[] = {
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0};
-/*     Copyright (c) 1989 AT&T */
-/*       All Rights Reserved   */
-
-/*     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T     */
-/*     The copyright notice above does not evidence any        */
-/*     actual or intended publication of such source code.     */
-
-int yylineno =1;
-# define YYU(x) x
-# define NLSTATE yyprevious=YYNEWLINE
-struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
-char yysbuf[YYLMAX];
-char *yysptr = yysbuf;
-int *yyfnd;
-extern struct yysvf *yyestate;
-int yyprevious = YYNEWLINE;
-#if defined(__cplusplus) || defined(__STDC__)
-int yylook(void)
-#else
-yylook()
-#endif
-{
-       register struct yysvf *yystate, **lsp;
-       register struct yywork *yyt;
-       struct yysvf *yyz;
-       int yych, yyfirst;
-       struct yywork *yyr;
-# ifdef LEXDEBUG
-       int debug;
-# endif
-       char *yylastch;
-       /* start off machines */
-# ifdef LEXDEBUG
-       debug = 0;
-# endif
-       yyfirst=1;
-       if (!yymorfg)
-               yylastch = yytext;
-       else {
-               yymorfg=0;
-               yylastch = yytext+yyleng;
-               }
-       for(;;){
-               lsp = yylstate;
-               yyestate = yystate = yybgin;
-               if (yyprevious==YYNEWLINE) yystate++;
-               for (;;){
-# ifdef LEXDEBUG
-                       if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
-# endif
-                       yyt = yystate->yystoff;
-                       if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
-                               yyz = yystate->yyother;
-                               if(yyz == 0)break;
-                               if(yyz->yystoff == yycrank)break;
-                               }
-#ifndef __cplusplus
-                       *yylastch++ = yych = input();
-#else
-                       *yylastch++ = yych = lex_input();
-#endif
-#ifdef YYISARRAY
-                       if(yylastch > &yytext[YYLMAX]) {
-                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                               exit(1);
-                       }
-#else
-                       if (yylastch >= &yytext[ yytextsz ]) {
-                               int     x = yylastch - yytext;
-
-                               yytextsz += YYTEXTSZINC;
-                               if (yytext == yy_tbuf) {
-                                   yytext = (char *) malloc(yytextsz);
-                                   memcpy(yytext, yy_tbuf, sizeof (yy_tbuf));
-                               }
-                               else
-                                   yytext = (char *) realloc(yytext, yytextsz);
-                               if (!yytext) {
-                                   fprintf(yyout,
-                                       "Cannot realloc yytext\n");
-                                   exit(1);
-                               }
-                               yylastch = yytext + x;
-                       }
-#endif
-                       yyfirst=0;
-               tryagain:
-# ifdef LEXDEBUG
-                       if(debug){
-                               fprintf(yyout,"char ");
-                               allprint(yych);
-                               putchar('\n');
-                               }
-# endif
-                       yyr = yyt;
-                       if ( (intptr_t)yyt > (intptr_t)yycrank){
-                               yyt = yyr + yych;
-                               if (yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transitions */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               }
-# ifdef YYOPTIM
-                       else if((intptr_t)yyt < (intptr_t)yycrank) {            /* r < yycrank */
-                               yyt = yyr = yycrank+(yycrank-yyt);
-# ifdef LEXDEBUG
-                               if(debug)fprintf(yyout,"compressed state\n");
-# endif
-                               yyt = yyt + yych;
-                               if(yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transitions */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               yyt = yyr + YYU(yymatch[yych]);
-# ifdef LEXDEBUG
-                               if(debug){
-                                       fprintf(yyout,"try fall back character ");
-                                       allprint(YYU(yymatch[yych]));
-                                       putchar('\n');
-                                       }
-# endif
-                               if(yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transition */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               }
-                       if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
-# ifdef LEXDEBUG
-                               if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
-# endif
-                               goto tryagain;
-                               }
-# endif
-                       else
-                               {unput(*--yylastch);break;}
-               contin:
-# ifdef LEXDEBUG
-                       if(debug){
-                               fprintf(yyout,"state %d char ",yystate-yysvec-1);
-                               allprint(yych);
-                               putchar('\n');
-                               }
-# endif
-                       ;
-                       }
-# ifdef LEXDEBUG
-               if(debug){
-                       fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
-                       allprint(yych);
-                       putchar('\n');
-                       }
-# endif
-               while (lsp-- > yylstate){
-                       *yylastch-- = 0;
-                       if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
-                               yyolsp = lsp;
-                               if(yyextra[*yyfnd]){            /* must backup */
-                                       while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
-                                               lsp--;
-                                               unput(*yylastch--);
-                                               }
-                                       }
-                               yyprevious = YYU(*yylastch);
-                               yylsp = lsp;
-                               yyleng = yylastch-yytext+1;
-                               yytext[yyleng] = 0;
-# ifdef LEXDEBUG
-                               if(debug){
-                                       fprintf(yyout,"\nmatch ");
-                                       sprint(yytext);
-                                       fprintf(yyout," action %d\n",*yyfnd);
-                                       }
-# endif
-                               return(*yyfnd++);
-                               }
-                       unput(*yylastch);
-                       }
-               if (yytext[0] == 0  /* && feof(yyin) */)
-                       {
-                       yysptr=yysbuf;
-                       return(0);
-                       }
-#ifndef __cplusplus
-               yyprevious = yytext[0] = input();
-               if (yyprevious>0)
-                       output(yyprevious);
-#else
-               yyprevious = yytext[0] = lex_input();
-               if (yyprevious>0)
-                       lex_output(yyprevious);
-#endif
-               yylastch=yytext;
-# ifdef LEXDEBUG
-               if(debug)putchar('\n');
-# endif
-               }
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-int yyback(int *p, int m)
-#else
-yyback(p, m)
-       int *p;
-#endif
-{
-       if (p==0) return(0);
-       while (*p) {
-               if (*p++ == m)
-                       return(1);
-       }
-       return(0);
-}
-       /* the following are only used in the lex library */
-#if defined(__cplusplus) || defined(__STDC__)
-int yyinput(void)
-#else
-yyinput()
-#endif
-{
-#ifndef __cplusplus
-       return(input());
-#else
-       return(lex_input());
-#endif
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-void yyoutput(int c)
-#else
-yyoutput(c)
-  int c; 
-#endif
-{
-#ifndef __cplusplus
-       output(c);
-#else
-       lex_output(c);
-#endif
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-void yyunput(int c)
-#else
-yyunput(c)
-   int c; 
-#endif
-{
-       unput(c);
-       }
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
diff --git a/src/ExpToCasExe/exptocas.h b/src/ExpToCasExe/exptocas.h
deleted file mode 100644 (file)
index 26d783f..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-// Created:    Mon Nov  1 12:50:27 1999
-// Author:     Andrey BETENEV
-// Copyright (c) 1999-2020 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef EXPCAS_H
-#define EXPCAS_H
-
-#include <stdio.h>
-
-#define EC_VERSION       "2.0"
-
-struct ec_schema {       /* definition of schema */
-  char *name;            /* name */
-  struct ec_item *items; /* list of items */
-  int num;               /* total amount of items */
-  struct ec_item **array;/* array of items (indexed view of list) */
-};
-
-enum ecitem {            /* kind of schema item */
-  ECIT_ENUM,             /* TYPE ENUMERATION */
-  ECIT_SEL,              /* TYPE SELECT */
-  ECIT_ALIAS,            /* TYPE as alias */
-  ECIT_ENT               /* ENTITY */
-};
-
-struct ec_item {         /* definition of schema item */
-  char *name;            /* item (class) name */
-  char *package;         /* package name */
-  enum ecitem kind;      /* kind of item */
-  struct ec_type *alias; /* aliased type for ALIAS */
-  struct ec_tlist *types;/* supertypes for ENTITY and list for SELECT and ENUMERATION */
-  struct ec_field *field;/* fields for ENTITY */
-  struct ec_item *next;  /* pointer to next item */
-};
-
-struct ec_tlist {        /* list of (type) names, for TYPE SELECT & ENUMERATION */
-  char *name;
-  struct ec_tlist *next;
-};
-
-enum ectype {            /* Types: */
-  ECTYP_INT,             /* predefined type INTEGER */
-  ECTYP_NUM,             /* predefined type NUMBER */
-  ECTYP_DBL,             /* predefined type REAL */
-  ECTYP_STR,             /* predefined type STRING */
-  ECTYP_LOG,             /* predefined type LOGICAL */
-  ECTYP_BOOL,            /* predefined type BOOLEAN */
-  ECTYP_NAME,            /* named type (name of item in schema) */
-  ECTYP_LIST,            /* LIST [] complex type */
-  ECTYP_ARR,             /* ARRAY [] complex type */
-  ECTYP_SET,             /* SET [] complex type */
-  ECTYP_BAG              /* BAG [] complex type */
-};
-
-struct ec_type {         /* identification of type, either simple or complex */
-  enum ectype kind;      /* kind of the type */
-  char *name;            /* name for named type */
-  int index[2];          /* start and end indices (or -1 if not defined) for complex types */
-  struct ec_type *elem;  /* type of complex type elements */
-};
-
-struct ec_field {        /* field of ENTITY item */
-  char *name;            /* field name */
-  struct ec_type *type;  /* field type */
-  int optional;          /* flag */
-  struct ec_field *next; /* pointer to next field */
-};
-
-/*int yylex ( void );*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern FILE *yyin;
-
-int yyparse ( void );
-int yyerror ( char *str );
-
-/* Functions for creating schema representation structures */
-struct ec_schema *mkschema ( char *name, struct ec_item *ilist );
-struct ec_item *mkenum     ( char *name, struct ec_tlist *tlist );
-struct ec_item *mkselect   ( char *name, struct ec_tlist *tlist );
-struct ec_item *mkalias    ( char *name, struct ec_type *to );
-struct ec_item *mkentity   ( char *name, struct ec_tlist *inherit, struct ec_field *fields );
-struct ec_tlist *mktlist   ( char *name );
-struct ec_type *mktstd     ( int keyword );
-struct ec_type *mktname    ( char *name );
-struct ec_type *mktset     ( int keyword, int ilow, int ihigh, struct ec_type *of );
-struct ec_field *mkfield   ( char *name, struct ec_type *type, int optional );
-
-/* Error reporting functions */
-int ec_error ( char const *s, char const *text );
-int ec_curline ( void );
-
-/* Access to result of parsing */
-char *ec_schemaname ( void );           /* returns name of schema */
-int ec_nbitems ( void );                /* returns number of items in schema */
-struct ec_item *ec_getitem ( int num ); /* returns item by index */
-void ec_free ( void );                  /* frees all structures */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/ExpToCasExe/exptocas.l b/src/ExpToCasExe/exptocas.l
deleted file mode 100644 (file)
index 06daf7c..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-%{
-
-/* Created:    Thu Oct 28 12:21:16 1999
-/* Author:     Andrey BETENEV
-/* Copyright (c) 1999-2020 OPEN CASCADE SAS
-/*
-/* This file is part of Open CASCADE Technology software library.
-/*
-/* This library is free software; you can redistribute it and/or modify it under
-/* the terms of the GNU Lesser General Public License version 2.1 as published
-/* by the Free Software Foundation, with special exception defined in the file
-/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-/* distribution for complete text of the license and disclaimer of any warranty.
-/*
-/* Alternatively, this file may be used under the terms of Open CASCADE
-/* commercial license or contractual agreement.
-
-/*****************************************************************************\
-
-This LEX scanner is performs lexical analysis of EXPRESS schema file   
-for EXPRESS -> CASCADE/XSTEP classes generator                             
-
-On the stage of lexical scanner comments (single- and multi-line),         
-definitions of CONSTANT, FUNCTION, RULE items and clauses WHERE, INVERSE
-and DERIVE of TYPE amd ENTITY items are dismissed (ignored)         
-
-Then, keywords such as ENTITY, SUPERTYPE, SET etc., names of items         
-and special symbols are identified and returned to parser (yacc) as tokens 
-
-Also, error processing and current line number tracking functions are defined
-
-\*****************************************************************************/
-
-/************************************/
-/* Section 1                        */
-/* definitions                      */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <TColStd_HSequenceOfHAsciiString.hxx>
-#include <Express_HSequenceOfField.hxx>
-#include <Express_HSequenceOfItem.hxx>
-#include <Express_Field.hxx>
-#include <Express_Item.hxx>
-#include <Express_Type.hxx>
-#include <Express_Schema.hxx>
-#include <Express_Reference.hxx>
-
-#include "expparse.h"       /* define tokens */
-
-/* Auxiliary functions */
-
-static int fun_level=0;
-static int ec_linenum=1;
-static int ec_state = 0;
-
-int yywrap(void) { return 1; }
-
-int ec_curline ( void )
-{
-  return ec_linenum;
-}
-
-int ec_error ( char const *s, char const *text )
-{
-  printf ( "\nError at line %d: %s \"%s\"\n", ec_curline(), s, text );
-  return 0;
-}
-
-%}
-
-%s TYP ENT
-%x COMM SKP RULE FUN
-
-%a 4000
-%o 6000
-
-%{
-
-/************************************/
-/* Section 2                        */
-/* parsing rules                    */
-%}
-
-%%
-
-"--".*               { /* Eat line comments */ }
-"(*"                 { ec_state = YYSTATE; BEGIN(COMM); }
-<COMM>.              { /* Eat multiline comments */ }
-<COMM>"*)"           { BEGIN(ec_state); }
-
-"SCHEMA"             { return yylval.num = KSCHEM; }
-"END_SCHEMA"         { return yylval.num = KENDS; }
-
-"TYPE"               { BEGIN(TYP); return yylval.num = KTYP; }
-<TYP,SKP>"END_TYPE"  { BEGIN(0);   return yylval.num = KENDT; }
-
-"ENTITY"             { BEGIN(ENT); return yylval.num = KENT; }
-<ENT,SKP>"END_ENTITY" { BEGIN(0);  return yylval.num = KENDE; }
-
-<ENT>"INVERSE"       |
-<ENT>"DERIVE"        |
-<ENT,TYP>"WHERE"     { BEGIN(SKP); }
-<SKP>.               { /* eat contents of WHERE and DERIVE subclauses of ENTITY and TYPE */ }
-
-"SELECT"             { return yylval.num = KSEL; }
-"ENUMERATION"        { return yylval.num = KENUM; }
-"LIST"               { return yylval.num = KLIST; }
-"ARRAY"              { return yylval.num = KARR; }
-"SET"                { return yylval.num = KSET; }
-"BAG"                { return yylval.num = KBAG; }
-"OF"                 { return yylval.num = KOF; }
-
-"NUMBER"             { return yylval.num = KNUM; }
-"INTEGER"            { return yylval.num = KINT; }
-"REAL"               { return yylval.num = KDBL; }
-"STRING"             { return yylval.num = KSTR; }
-"LOGICAL"            { return yylval.num = KLOG; }
-"BOOLEAN"            { return yylval.num = KBOOL; }
-
-"OPTIONAL"           { return yylval.num = KOPT; }
-"UNIQUE"             { return yylval.num = KUNIQ; }
-"SELF"               { return yylval.num = KSELF; }
-
-"ABSTRACT"           { return yylval.num = KABSTR; }
-"SUBTYPE"            { return yylval.num = KSUBT; }
-"SUPERTYPE"          { return yylval.num = KSPRT; }
-"ANDOR"              { return yylval.num = KANDOR; }
-"ONEOF"              { return yylval.num = K1OF; }
-"AND"                { return yylval.num = KAND; }
-
-"UR"[0-9]+           { yylval.str = strdup ( yytext ); return NAME; }
-
-[a-z_][a-z_0-9]*     { yylval.str = strdup ( yytext ); return NAME; }
-
-[0-9]+               { yylval.num = atoi ( yytext ); return NUMBER; }
-[,=();?:.\\]|"["|"]" { return yylval.num = yytext[0]; }
-
-<INITIAL,FUN>"FUNCTION"  { BEGIN(FUN); fun_level++; }
-<FUN>"(*"            { ec_state = YYSTATE; BEGIN(COMM); /* eat comments in functions */ }
-<FUN>"--".*          { /* Eat line comments in functions */ }
-<FUN>[A-Za-z_0-9]*   { /* eat FUNCTIONs - skip IDs explicitly */ }
-<FUN>\'[^\']*\'      { /* eat FUNCTIONs - skip strings explicitly */ }
-<FUN>.               { /* eat FUNCTIONs - skip all other symbols in functions */ }
-<FUN>"END_FUNCTION;" { fun_level--; if ( ! fun_level ) BEGIN(0); }
-
-"RULE"               { BEGIN(RULE); /* eat RULEs */ }
-<RULE>.              { /* eat RULEs */ }
-<RULE>"END_RULE;"    { BEGIN(0); }
-
-"CONSTANT"[ \t\na-z_0-9:=;'()|-]+"END_CONSTANT;" { /* eat CONSTANTs */
-                       char *s = yytext; /* but don't forget to count lines.. */
-                       while ( *s ) if ( *(s++) == '\n' ) ec_linenum++;
-                     }
-
-[ \t]+               { /* eat spaces */ }
-[A-Za-z0-9_]+        { ec_error ( "unknown keyword ", yytext ); /* put unrecognized keywords to cerr */ }
-.                    { ec_error ( "unknown symbol ", yytext ); /* put unrecognized data to cerr */ }
-
-<INITIAL,COMM,SKP,RULE,ENT,TYP,FUN>\n  { ec_linenum++; /* count lines */ }
-
-%%
-
-/************************************/
-/* Section 3                        */
-/* auxiliary procedures             */
-
-/*
-int main ( void )
-{
-  yylex();
-}
-*/
diff --git a/src/ExpToCasExe/exptocas.lex b/src/ExpToCasExe/exptocas.lex
new file mode 100644 (file)
index 0000000..711286d
--- /dev/null
@@ -0,0 +1,196 @@
+%{
+
+/* Created:    Thu Oct 28 12:21:16 1999
+/* Author:     Andrey BETENEV
+/* Copyright (c) 1999-2020 OPEN CASCADE SAS
+/*
+/* This file is part of Open CASCADE Technology software library.
+/*
+/* This library is free software; you can redistribute it and/or modify it under
+/* the terms of the GNU Lesser General Public License version 2.1 as published
+/* by the Free Software Foundation, with special exception defined in the file
+/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+/* distribution for complete text of the license and disclaimer of any warranty.
+/*
+/* Alternatively, this file may be used under the terms of Open CASCADE
+/* commercial license or contractual agreement.
+
+/*****************************************************************************\
+
+This LEX scanner is performs lexical analysis of EXPRESS schema file   
+for EXPRESS -> CASCADE/XSTEP classes generator                             
+
+On the stage of lexical scanner comments (single- and multi-line),         
+definitions of CONSTANT, FUNCTION, RULE items and clauses WHERE, INVERSE
+and DERIVE of TYPE amd ENTITY items are dismissed (ignored)         
+
+Then, keywords such as ENTITY, SUPERTYPE, SET etc., names of items         
+and special symbols are identified and returned to parser (yacc) as tokens 
+
+Also, error processing and current line number tracking functions are defined
+
+\*****************************************************************************/
+
+/************************************/
+/* Section 1                        */
+/* definitions                      */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <TColStd_HSequenceOfHAsciiString.hxx>
+#include <Express_HSequenceOfField.hxx>
+#include <Express_HSequenceOfItem.hxx>
+#include <Express_Field.hxx>
+#include <Express_Item.hxx>
+#include <Express_Type.hxx>
+#include <Express_Schema.hxx>
+#include <Express_Reference.hxx>
+
+#include "exptocas.tab.hxx"       /* define tokens */
+
+/* Auxiliary functions */
+
+static int fun_level=0;
+static int ec_linenum=1;
+static int ec_state = 0;
+
+int yywrap(void) { return 1; }
+
+int ec_curline ( void )
+{
+  return ec_linenum;
+}
+
+int ec_error ( char *s, char *text )
+{
+  printf ( "\nError at line %d: %s \"%s\"\n", ec_curline(), s, text );
+  return 0;
+}
+
+%}
+
+/*
+    c++                 generate C++ parser class
+*/
+%option c++
+%option noyywrap
+%option yyclass="exptocas::scanner"
+%option debug
+
+%s TYP ENT
+%x COMM SKP RULE FUN
+
+%a 4000
+%o 6000
+
+%{
+
+// Tell flex which function to define
+#ifdef  YY_DECL
+# undef YY_DECL
+#endif
+#define YY_DECL int exptocas::scanner::lex (exptocas::parser::semantic_type* yylval)
+
+typedef exptocas::parser::token token;
+
+/************************************/
+/* Section 2                        */
+/* parsing rules                    */
+%}
+
+%%
+
+"--".*               { /* Eat line comments */ }
+"(*"                 { ec_state = YYSTATE; BEGIN(COMM); }
+<COMM>.              { /* Eat multiline comments */ }
+<COMM>"*)"           { BEGIN(ec_state); }
+
+"SCHEMA"             { return yylval->num = token::KSCHEM; }
+"END_SCHEMA"         { return yylval->num = token::KENDS; }
+
+"TYPE"               { BEGIN(TYP); return yylval->num = token::KTYP; }
+<TYP,SKP>"END_TYPE"  { BEGIN(0);   return yylval->num = token::KENDT; }
+
+"ENTITY"             { BEGIN(ENT); return yylval->num = token::KENT; }
+<ENT,SKP>"END_ENTITY" { BEGIN(0);  return yylval->num = token::KENDE; }
+
+<ENT>"INVERSE"       |
+<ENT>"DERIVE"        |
+<ENT,TYP>"WHERE"     { BEGIN(SKP); }
+<SKP>.               { /* eat contents of WHERE and DERIVE subclauses of ENTITY and TYPE */ }
+
+"SELECT"             { return yylval->num = token::KSEL; }
+"ENUMERATION"        { return yylval->num = token::KENUM; }
+"LIST"               { return yylval->num = token::KLIST; }
+"ARRAY"              { return yylval->num = token::KARR; }
+"SET"                { return yylval->num = token::KSET; }
+"BAG"                { return yylval->num = token::KBAG; }
+"OF"                 { return yylval->num = token::KOF; }
+
+"NUMBER"             { return yylval->num = token::KNUM; }
+"INTEGER"            { return yylval->num = token::KINT; }
+"REAL"               { return yylval->num = token::KDBL; }
+"STRING"             { return yylval->num = token::KSTR; }
+"LOGICAL"            { return yylval->num = token::KLOG; }
+"BOOLEAN"            { return yylval->num = token::KBOOL; }
+
+"OPTIONAL"           { return yylval->num = token::KOPT; }
+"UNIQUE"             { return yylval->num = token::KUNIQ; }
+"SELF"               { return yylval->num = token::KSELF; }
+
+"ABSTRACT"           { return yylval->num = token::KABSTR; }
+"SUBTYPE"            { return yylval->num = token::KSUBT; }
+"SUPERTYPE"          { return yylval->num = token::KSPRT; }
+"ANDOR"              { return yylval->num = token::KANDOR; }
+"ONEOF"              { return yylval->num = token::K1OF; }
+"AND"                { return yylval->num = token::KAND; }
+
+"UR"[0-9]+           { yylval->str = strdup ( yytext ); return token::NAME; }
+
+[a-z_][a-z_0-9]*     { yylval->str = strdup ( yytext ); return token::NAME; }
+
+[0-9]+               { yylval->num = atoi ( yytext ); return token::NUMBER; }
+[,=();?:.\\]|"["|"]" { return yylval->num = yytext[0]; }
+
+<INITIAL,FUN>"FUNCTION"  { BEGIN(FUN); fun_level++; }
+<FUN>"(*"            { ec_state = YYSTATE; BEGIN(COMM); /* eat comments in functions */ }
+<FUN>"--".*          { /* Eat line comments in functions */ }
+<FUN>[A-Za-z_0-9]*   { /* eat FUNCTIONs - skip IDs explicitly */ }
+<FUN>\'[^\']*\'      { /* eat FUNCTIONs - skip strings explicitly */ }
+<FUN>.               { /* eat FUNCTIONs - skip all other symbols in functions */ }
+<FUN>"END_FUNCTION;" { fun_level--; if ( ! fun_level ) BEGIN(0); }
+
+"RULE"               { BEGIN(RULE); /* eat RULEs */ }
+<RULE>.              { /* eat RULEs */ }
+<RULE>"END_RULE;"    { BEGIN(0); }
+
+"CONSTANT"[ \t\na-z_0-9:=;'()|-]+"END_CONSTANT;" { /* eat CONSTANTs */
+                       char *s = yytext; /* but don't forget to count lines.. */
+                       while ( *s ) if ( *(s++) == '\n' ) ec_linenum++;
+                     }
+
+[ \t]+               { /* eat spaces */ }
+[A-Za-z0-9_]+        { ec_error ( "unknown keyword ", yytext ); /* put unrecognized keywords to cerr */ }
+.                    { ec_error ( "unknown symbol ", yytext ); /* put unrecognized data to cerr */ }
+
+<INITIAL,COMM,SKP,RULE,ENT,TYP,FUN>\n  { ec_linenum++; /* count lines */ }
+
+%%
+
+/************************************/
+/* Section 3                        */
+/* auxiliary procedures             */
+
+exptocas::scanner::scanner(std::istream* in, std::ostream* out)
+    : exptocasFlexLexer(in, out)
+{
+}
+
+/*
+int main ( void )
+{
+  yylex();
+}
+*/
+
diff --git a/src/ExpToCasExe/exptocas.tab.cxx b/src/ExpToCasExe/exptocas.tab.cxx
new file mode 100644 (file)
index 0000000..8238f35
--- /dev/null
@@ -0,0 +1,1573 @@
+// A Bison parser, made by GNU Bison 3.7.1.
+
+// Skeleton implementation for Bison LALR(1) parsers in C++
+
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+// especially those whose name start with YY_ or yy_.  They are
+// private implementation details that can be changed or removed.
+
+
+// Take the name prefix into account.
+#define yylex   exptocaslex
+
+// First part of user prologue.
+
+
+/* Created:    Thu Oct 28 12:21:16 1999
+/* Author:     Andrey BETENEV
+/* Copyright (c) 1999-2020 OPEN CASCADE SAS
+/*
+/* This file is part of Open CASCADE Technology software library.
+/*
+/* This library is free software; you can redistribute it and/or modify it under
+/* the terms of the GNU Lesser General Public License version 2.1 as published
+/* by the Free Software Foundation, with special exception defined in the file
+/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+/* distribution for complete text of the license and disclaimer of any warranty.
+/*
+/* Alternatively, this file may be used under the terms of Open CASCADE
+/* commercial license or contractual agreement.
+
+/*****************************************************************************\
+
+This YACC parser implements parsing algorithm for EXPRESS -> CASCADE/XSTEP
+classes generator
+
+Input in the form of tokens is obtained from lexical analyser. Then, data 
+structure representing schema is created on the basis of grammar analysis.
+
+NOTE: The grammar currently implemented is not full. 
+FUNCTION, RULE and CONSTANT items, WHERE, INVERSE and DERIVE clauses 
+of TYPE and ENTITY items are not considered (ignored on the level of lexical 
+scanner). 
+SUPERTYPE and UNIQUE clauses of ENTITY item are recognized but ignored.
+Also, complex constructs such as using call to function in dimensions of 
+complex time or redefinition of inherited field are ignored.
+
+\*****************************************************************************/
+
+#include <OSD_OpenFile.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TColStd_HSequenceOfHAsciiString.hxx>
+#include <Express_HSequenceOfField.hxx>
+#include <Express_HSequenceOfItem.hxx>
+#include <Express_Field.hxx>
+#include <Express_Item.hxx>
+#include <Express_Enum.hxx>
+#include <Express_Alias.hxx>
+#include <Express_Select.hxx>
+#include <Express_Entity.hxx>
+#include <Express_Type.hxx>
+#include <Express_NamedType.hxx>
+#include <Express_PredefinedType.hxx>
+#include <Express_Number.hxx>
+#include <Express_Integer.hxx>
+#include <Express_Boolean.hxx>
+#include <Express_Logical.hxx>
+#include <Express_Real.hxx>
+#include <Express_String.hxx>
+#include <Express_ComplexType.hxx>
+#include <Express_Array.hxx>
+#include <Express_List.hxx>
+#include <Express_Set.hxx>
+#include <Express_Bag.hxx>
+#include <Express_Schema.hxx>
+#include <Express_Reference.hxx>
+#include <Express.hxx>
+
+/************************************************/
+/* ERROR MESSAGE FUNCTION                       */
+
+/* external functions (from exptocas.l) */
+int ec_error ( char *s, char *text );
+int ec_curline ( void );
+
+//int yyerror ( char *s )
+//{
+//  printf ( "\nParse error at line %d: %s\n", ec_curline(), s );
+//  return 0;
+//}
+
+/************************************************/
+/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
+
+static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist );
+static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq );
+static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static Express_Item *mkalias ( char *name, Express_Type *type );
+static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
+                                Express_HSequenceOfField *field, int isabstract );
+static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items);
+static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, TColStd_HSequenceOfHAsciiString *tlist2 );
+static Express_Type *mktstd ( int keyword );
+static Express_Type *mktname ( char *name );
+static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of );
+static Express_Field *mkfield ( char *name, Express_Type *type, int optional );
+static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq );
+
+
+
+
+#include "exptocas.tab.hxx"
+
+
+// Unqualified %code blocks.
+
+#undef yylex
+#define yylex scanner->lex
+
+
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+#  define YY_EXCEPTIONS 0
+# else
+#  define YY_EXCEPTIONS 1
+# endif
+#endif
+
+
+
+// Enable debugging if requested.
+#if YYDEBUG
+
+// A pseudo ostream that takes yydebug_ into account.
+# define YYCDEBUG if (yydebug_) (*yycdebug_)
+
+# define YY_SYMBOL_PRINT(Title, Symbol)         \
+  do {                                          \
+    if (yydebug_)                               \
+    {                                           \
+      *yycdebug_ << Title << ' ';               \
+      yy_print_ (*yycdebug_, Symbol);           \
+      *yycdebug_ << '\n';                       \
+    }                                           \
+  } while (false)
+
+# define YY_REDUCE_PRINT(Rule)          \
+  do {                                  \
+    if (yydebug_)                       \
+      yy_reduce_print_ (Rule);          \
+  } while (false)
+
+# define YY_STACK_PRINT()               \
+  do {                                  \
+    if (yydebug_)                       \
+      yy_stack_print_ ();                \
+  } while (false)
+
+#else // !YYDEBUG
+
+# define YYCDEBUG if (false) std::cerr
+# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
+# define YY_STACK_PRINT()                static_cast<void> (0)
+
+#endif // !YYDEBUG
+
+#define yyerrok         (yyerrstatus_ = 0)
+#define yyclearin       (yyla.clear ())
+
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+#define YYRECOVERING()  (!!yyerrstatus_)
+
+namespace exptocas {
+
+  /// Build a parser object.
+  parser::parser (exptocas::scanner* scanner_yyarg)
+#if YYDEBUG
+    : yydebug_ (false),
+      yycdebug_ (&std::cerr),
+#else
+    :
+#endif
+      scanner (scanner_yyarg)
+  {}
+
+  parser::~parser ()
+  {}
+
+  parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+  {}
+
+  /*---------------.
+  | symbol kinds.  |
+  `---------------*/
+
+  // basic_symbol.
+  template <typename Base>
+  parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+    : Base (that)
+    , value (that.value)
+  {}
+
+
+  /// Constructor for valueless symbols.
+  template <typename Base>
+  parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t)
+    : Base (t)
+    , value ()
+  {}
+
+  template <typename Base>
+  parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (semantic_type) v)
+    : Base (t)
+    , value (YY_MOVE (v))
+  {}
+
+  template <typename Base>
+  parser::symbol_kind_type
+  parser::basic_symbol<Base>::type_get () const YY_NOEXCEPT
+  {
+    return this->kind ();
+  }
+
+  template <typename Base>
+  bool
+  parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  {
+    return this->kind () == symbol_kind::S_YYEMPTY;
+  }
+
+  template <typename Base>
+  void
+  parser::basic_symbol<Base>::move (basic_symbol& s)
+  {
+    super_type::move (s);
+    value = YY_MOVE (s.value);
+  }
+
+  // by_kind.
+  parser::by_kind::by_kind ()
+    : kind_ (symbol_kind::S_YYEMPTY)
+  {}
+
+#if 201103L <= YY_CPLUSPLUS
+  parser::by_kind::by_kind (by_kind&& that)
+    : kind_ (that.kind_)
+  {
+    that.clear ();
+  }
+#endif
+
+  parser::by_kind::by_kind (const by_kind& that)
+    : kind_ (that.kind_)
+  {}
+
+  parser::by_kind::by_kind (token_kind_type t)
+    : kind_ (yytranslate_ (t))
+  {}
+
+  void
+  parser::by_kind::clear ()
+  {
+    kind_ = symbol_kind::S_YYEMPTY;
+  }
+
+  void
+  parser::by_kind::move (by_kind& that)
+  {
+    kind_ = that.kind_;
+    that.clear ();
+  }
+
+  parser::symbol_kind_type
+  parser::by_kind::kind () const YY_NOEXCEPT
+  {
+    return kind_;
+  }
+
+  parser::symbol_kind_type
+  parser::by_kind::type_get () const YY_NOEXCEPT
+  {
+    return this->kind ();
+  }
+
+
+  // by_state.
+  parser::by_state::by_state () YY_NOEXCEPT
+    : state (empty_state)
+  {}
+
+  parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+    : state (that.state)
+  {}
+
+  void
+  parser::by_state::clear () YY_NOEXCEPT
+  {
+    state = empty_state;
+  }
+
+  void
+  parser::by_state::move (by_state& that)
+  {
+    state = that.state;
+    that.clear ();
+  }
+
+  parser::by_state::by_state (state_type s) YY_NOEXCEPT
+    : state (s)
+  {}
+
+  parser::symbol_kind_type
+  parser::by_state::kind () const YY_NOEXCEPT
+  {
+    if (state == empty_state)
+      return symbol_kind::S_YYEMPTY;
+    else
+      return YY_CAST (symbol_kind_type, yystos_[+state]);
+  }
+
+  parser::stack_symbol_type::stack_symbol_type ()
+  {}
+
+  parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
+    : super_type (YY_MOVE (that.state), YY_MOVE (that.value))
+  {
+#if 201103L <= YY_CPLUSPLUS
+    // that is emptied.
+    that.state = empty_state;
+#endif
+  }
+
+  parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
+    : super_type (s, YY_MOVE (that.value))
+  {
+    // that is emptied.
+    that.kind_ = symbol_kind::S_YYEMPTY;
+  }
+
+#if YY_CPLUSPLUS < 201103L
+  parser::stack_symbol_type&
+  parser::stack_symbol_type::operator= (const stack_symbol_type& that)
+  {
+    state = that.state;
+    value = that.value;
+    return *this;
+  }
+
+  parser::stack_symbol_type&
+  parser::stack_symbol_type::operator= (stack_symbol_type& that)
+  {
+    state = that.state;
+    value = that.value;
+    // that is emptied.
+    that.state = empty_state;
+    return *this;
+  }
+#endif
+
+  template <typename Base>
+  void
+  parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
+  {
+    if (yymsg)
+      YY_SYMBOL_PRINT (yymsg, yysym);
+
+    // User destructor.
+    YYUSE (yysym.kind ());
+  }
+
+#if YYDEBUG
+  template <typename Base>
+  void
+  parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
+  {
+    std::ostream& yyoutput = yyo;
+    YYUSE (yyoutput);
+    if (yysym.empty ())
+      yyo << "empty symbol";
+    else
+      {
+        symbol_kind_type yykind = yysym.kind ();
+        yyo << (yykind < YYNTOKENS ? "token" : "nterm")
+            << ' ' << yysym.name () << " (";
+        YYUSE (yykind);
+        yyo << ')';
+      }
+  }
+#endif
+
+  void
+  parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
+  {
+    if (m)
+      YY_SYMBOL_PRINT (m, sym);
+    yystack_.push (YY_MOVE (sym));
+  }
+
+  void
+  parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
+  {
+#if 201103L <= YY_CPLUSPLUS
+    yypush_ (m, stack_symbol_type (s, std::move (sym)));
+#else
+    stack_symbol_type ss (s, sym);
+    yypush_ (m, ss);
+#endif
+  }
+
+  void
+  parser::yypop_ (int n)
+  {
+    yystack_.pop (n);
+  }
+
+#if YYDEBUG
+  std::ostream&
+  parser::debug_stream () const
+  {
+    return *yycdebug_;
+  }
+
+  void
+  parser::set_debug_stream (std::ostream& o)
+  {
+    yycdebug_ = &o;
+  }
+
+
+  parser::debug_level_type
+  parser::debug_level () const
+  {
+    return yydebug_;
+  }
+
+  void
+  parser::set_debug_level (debug_level_type l)
+  {
+    yydebug_ = l;
+  }
+#endif // YYDEBUG
+
+  parser::state_type
+  parser::yy_lr_goto_state_ (state_type yystate, int yysym)
+  {
+    int yyr = yypgoto_[yysym - YYNTOKENS] + yystate;
+    if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
+      return yytable_[yyr];
+    else
+      return yydefgoto_[yysym - YYNTOKENS];
+  }
+
+  bool
+  parser::yy_pact_value_is_default_ (int yyvalue)
+  {
+    return yyvalue == yypact_ninf_;
+  }
+
+  bool
+  parser::yy_table_value_is_error_ (int yyvalue)
+  {
+    return yyvalue == yytable_ninf_;
+  }
+
+  int
+  parser::operator() ()
+  {
+    return parse ();
+  }
+
+  int
+  parser::parse ()
+  {
+    int yyn;
+    /// Length of the RHS of the rule being reduced.
+    int yylen = 0;
+
+    // Error handling.
+    int yynerrs_ = 0;
+    int yyerrstatus_ = 0;
+
+    /// The lookahead symbol.
+    symbol_type yyla;
+
+    /// The return value of parse ().
+    int yyresult;
+
+#if YY_EXCEPTIONS
+    try
+#endif // YY_EXCEPTIONS
+      {
+    YYCDEBUG << "Starting parse\n";
+
+
+    /* Initialize the stack.  The initial state will be set in
+       yynewstate, since the latter expects the semantical and the
+       location values to have been already stored, initialize these
+       stacks with a primary value.  */
+    yystack_.clear ();
+    yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
+
+  /*-----------------------------------------------.
+  | yynewstate -- push a new symbol on the stack.  |
+  `-----------------------------------------------*/
+  yynewstate:
+    YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n';
+    YY_STACK_PRINT ();
+
+    // Accept?
+    if (yystack_[0].state == yyfinal_)
+      YYACCEPT;
+
+    goto yybackup;
+
+
+  /*-----------.
+  | yybackup.  |
+  `-----------*/
+  yybackup:
+    // Try to take a decision without lookahead.
+    yyn = yypact_[+yystack_[0].state];
+    if (yy_pact_value_is_default_ (yyn))
+      goto yydefault;
+
+    // Read a lookahead token.
+    if (yyla.empty ())
+      {
+        YYCDEBUG << "Reading a token\n";
+#if YY_EXCEPTIONS
+        try
+#endif // YY_EXCEPTIONS
+          {
+            yyla.kind_ = yytranslate_ (yylex (&yyla.value));
+          }
+#if YY_EXCEPTIONS
+        catch (const syntax_error& yyexc)
+          {
+            YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
+            error (yyexc);
+            goto yyerrlab1;
+          }
+#endif // YY_EXCEPTIONS
+      }
+    YY_SYMBOL_PRINT ("Next token is", yyla);
+
+    if (yyla.kind () == symbol_kind::S_YYerror)
+    {
+      // The scanner already issued an error message, process directly
+      // to error recovery.  But do not keep the error token as
+      // lookahead, it is too special and may lead us to an endless
+      // loop in error recovery. */
+      yyla.kind_ = symbol_kind::S_YYUNDEF;
+      goto yyerrlab1;
+    }
+
+    /* If the proper action on seeing token YYLA.TYPE is to reduce or
+       to detect an error, take that action.  */
+    yyn += yyla.kind ();
+    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
+      {
+        goto yydefault;
+      }
+
+    // Reduce or error.
+    yyn = yytable_[yyn];
+    if (yyn <= 0)
+      {
+        if (yy_table_value_is_error_ (yyn))
+          goto yyerrlab;
+        yyn = -yyn;
+        goto yyreduce;
+      }
+
+    // Count tokens shifted since error; after three, turn off error status.
+    if (yyerrstatus_)
+      --yyerrstatus_;
+
+    // Shift the lookahead token.
+    yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
+    goto yynewstate;
+
+
+  /*-----------------------------------------------------------.
+  | yydefault -- do the default action for the current state.  |
+  `-----------------------------------------------------------*/
+  yydefault:
+    yyn = yydefact_[+yystack_[0].state];
+    if (yyn == 0)
+      goto yyerrlab;
+    goto yyreduce;
+
+
+  /*-----------------------------.
+  | yyreduce -- do a reduction.  |
+  `-----------------------------*/
+  yyreduce:
+    yylen = yyr2_[yyn];
+    {
+      stack_symbol_type yylhs;
+      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+      /* If YYLEN is nonzero, implement the default value of the
+         action: '$$ = $1'.  Otherwise, use the top of the stack.
+
+         Otherwise, the following line sets YYLHS.VALUE to garbage.
+         This behavior is undocumented and Bison users should not rely
+         upon it.  */
+      if (yylen)
+        yylhs.value = yystack_[yylen - 1].value;
+      else
+        yylhs.value = yystack_[0].value;
+
+
+      // Perform the reduction.
+      YY_REDUCE_PRINT (yyn);
+#if YY_EXCEPTIONS
+      try
+#endif // YY_EXCEPTIONS
+        {
+          switch (yyn)
+            {
+  case 2: // SCHEMA: KSCHEM NAME ';' ILIST KENDS ';'
+                                        { (yylhs.value.schema) = mkschema ( (yystack_[4].value.str), (yystack_[2].value.ilist) ); /* Root: EXPRESS schema */ }
+    break;
+
+  case 3: // ILIST: ITEM
+                         { (yylhs.value.ilist) = mkilist ( (yystack_[0].value.item), 0 ); /* list of items for schema */ }
+    break;
+
+  case 4: // ILIST: ITEM ILIST
+                         { (yylhs.value.ilist) = mkilist ( (yystack_[1].value.item), (yystack_[0].value.ilist) ); }
+    break;
+
+  case 5: // ITEM: ENUM
+        { (yylhs.value.item) = (yystack_[0].value.item); }
+    break;
+
+  case 6: // ITEM: SELECT
+        { (yylhs.value.item) = (yystack_[0].value.item); }
+    break;
+
+  case 7: // ITEM: ALIAS
+        { (yylhs.value.item) = (yystack_[0].value.item); }
+    break;
+
+  case 8: // ITEM: ENTITY
+                         { (yylhs.value.item) = (yystack_[0].value.item); /* item of schema (type definition) */ }
+    break;
+
+  case 9: // ENUM: KTYP NAME '=' KENUM KOF TLIST1 ';' KENDT ';'
+                                                     { (yylhs.value.item) = mkenum ( (yystack_[7].value.str), (yystack_[3].value.tlist) ); /* TYPE ENUMERATION definition */ }
+    break;
+
+  case 10: // SELECT: KTYP NAME '=' KSEL TLIST1 ';' KENDT ';'
+                                                { (yylhs.value.item) = mkselect ( (yystack_[6].value.str), (yystack_[3].value.tlist) ); /* TYPE SELECT definition */ }
+    break;
+
+  case 11: // ALIAS: KTYP NAME '=' TYPE ';' KENDT ';'
+                                         { (yylhs.value.item) = mkalias ( (yystack_[5].value.str), (yystack_[3].value.type) ); /* TYPE '=' definition (alias) */ }
+    break;
+
+  case 12: // ENTITY: KENT NAME SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';'
+                                                                 { (yylhs.value.item) = mkentity ( (yystack_[7].value.str), (yystack_[5].value.tlist), (yystack_[3].value.flist), 0 ); /* ENTITY definition */ }
+    break;
+
+  case 13: // ENTITY: KENT NAME KABSTR SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';'
+                                                                 { (yylhs.value.item) = mkentity ( (yystack_[8].value.str), (yystack_[5].value.tlist), (yystack_[3].value.flist), 1 ); /* ENTITY definition */ }
+    break;
+
+  case 14: // TLIST: NAME
+                         { (yylhs.value.tlist) = mktlist ( (yystack_[0].value.str), 0 ); /* list of (type) names */ }
+    break;
+
+  case 15: // TLIST: NAME ',' TLIST
+                         { (yylhs.value.tlist) = mktlist ( (yystack_[2].value.str), (yystack_[0].value.tlist) ); }
+    break;
+
+  case 16: // TLIST1: '(' TLIST ')'
+                         { (yylhs.value.tlist) = (yystack_[1].value.tlist); /* TLIST in brackets */ }
+    break;
+
+  case 17: // TYPE: TSTD
+        { (yylhs.value.type) = (yystack_[0].value.type); }
+    break;
+
+  case 18: // TYPE: TNAME
+        { (yylhs.value.type) = (yystack_[0].value.type); }
+    break;
+
+  case 19: // TYPE: TSET
+                         { (yylhs.value.type) = (yystack_[0].value.type); /* type, simple or complex */ }
+    break;
+
+  case 20: // TSTD: KINT
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: INTEGER */ }
+    break;
+
+  case 21: // TSTD: KNUM
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: NUMBER */ }
+    break;
+
+  case 22: // TSTD: KDBL
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: REAL */ }
+    break;
+
+  case 23: // TSTD: KSTR
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: STRING */ }
+    break;
+
+  case 24: // TSTD: KLOG
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: LOGICAL */ }
+    break;
+
+  case 25: // TSTD: KBOOL
+                         { (yylhs.value.type) = mktstd ( (yystack_[0].value.num) ); /* predefined type: BOOLEAN */ }
+    break;
+
+  case 26: // TNAME: NAME
+                         { (yylhs.value.type) = mktname ( (yystack_[0].value.str) ); /* named type */ }
+    break;
+
+  case 27: // TSET: KLIST '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE
+                                                      { (yylhs.value.type) = mktset ( (yystack_[8].value.num), (yystack_[6].value.num), (yystack_[4].value.num), (yystack_[0].value.type) ); /* complex type: LIST */ }
+    break;
+
+  case 28: // TSET: KARR '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE
+                                                      { (yylhs.value.type) = mktset ( (yystack_[8].value.num), (yystack_[6].value.num), (yystack_[4].value.num), (yystack_[0].value.type) ); /* complex type: ARRAY */ }
+    break;
+
+  case 29: // TSET: KSET '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE
+                                                      { (yylhs.value.type) = mktset ( (yystack_[8].value.num), (yystack_[6].value.num), (yystack_[4].value.num), (yystack_[0].value.type) ); /* complex type: SET */ }
+    break;
+
+  case 30: // TSET: KBAG '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE
+                                                      { (yylhs.value.type) = mktset ( (yystack_[8].value.num), (yystack_[6].value.num), (yystack_[4].value.num), (yystack_[0].value.type) ); /* complex type: BAG */ }
+    break;
+
+  case 31: // INDEX: NUMBER
+                         { (yylhs.value.num) = (yystack_[0].value.num); /* index for array, set, bag, list range */ }
+    break;
+
+  case 32: // INDEX: '?'
+                         { (yylhs.value.num) = -1; /* undefined */ }
+    break;
+
+  case 33: // INDEX: NAME '(' NAME ')'
+                          {(yylhs.value.num) = -1; printf ( "Warning at line %d: index function %s(%s) ignored\n", ec_curline(), (yystack_[3].value.str), (yystack_[1].value.str) ); /* some function.. */ }
+    break;
+
+  case 34: // OPTUNI: %empty
+                         { (yylhs.value.num) = 0; /* UNIQUE keyword for complex type definition */ }
+    break;
+
+  case 35: // OPTUNI: KUNIQ
+                         { (yylhs.value.num) = 1; }
+    break;
+
+  case 36: // SUBT: %empty
+                         { (yylhs.value.tlist) = NULL; /* no subtype clause */ }
+    break;
+
+  case 37: // SUBT: KSUBT KOF TLIST1
+                         { (yylhs.value.tlist) = (yystack_[0].value.tlist);   /* subtype clause */ }
+    break;
+
+  case 38: // SUPERT: %empty
+                         { (yylhs.value.num) = 0;  /* no supertype clause */ }
+    break;
+
+  case 39: // SUPERT: KSPRT
+                         { (yylhs.value.num) = 0;  /* supertype clause (ignored) */ }
+    break;
+
+  case 40: // SUPERT: KSPRT KOF SUPLST
+                         { (yylhs.value.num) = 0;  /* supertype clause (ignored) */ }
+    break;
+
+  case 41: // SUPLST: NAME
+                         { (yylhs.value.num) = 0; /* simple list of supertypes */ }
+    break;
+
+  case 42: // SUPLST: '(' SUPLST ')'
+                         { (yylhs.value.num) = 0; /* allow bracketing */ }
+    break;
+
+  case 43: // SUPLST: NAME ',' SUPLST
+                         { (yylhs.value.num) = 0; /* ... */ }
+    break;
+
+  case 44: // SUPLST: K1OF SUPLST
+                         { (yylhs.value.num) = 0; /* ONEOF construct */ }
+    break;
+
+  case 45: // SUPLST: SUPLST KANDOR SUPLST
+                             { (yylhs.value.num) = 0; /* ANDOR construct */ }
+    break;
+
+  case 46: // FLIST: FIELD
+                         { (yylhs.value.flist) = mkflist ( (yystack_[0].value.field), 0 ); /* list of fields of ENTITY item */ }
+    break;
+
+  case 47: // FLIST: FIELD FLIST
+                         { (yylhs.value.flist) = mkflist ( (yystack_[1].value.field), (yystack_[0].value.flist) ); }
+    break;
+
+  case 48: // FLIST: REDEF
+                         { (yylhs.value.flist) = 0;  /* redefinition of inherited field, just skip */ }
+    break;
+
+  case 49: // FLIST: REDEF FLIST
+                         { (yylhs.value.flist) = (yystack_[0].value.flist); /* ignore redefinition of inherited field, take trailing list */ }
+    break;
+
+  case 50: // FLIST1: %empty
+                         { (yylhs.value.flist) = NULL; /* empty list of fields */ }
+    break;
+
+  case 51: // FLIST1: FLIST
+                         { (yylhs.value.flist) = (yystack_[0].value.flist);   /* or not empty.. just to fix reduce/reduce conflict */ }
+    break;
+
+  case 52: // FIELD: NAME ':' OPTNL TYPE ';'
+                                { (yylhs.value.field) = mkfield ( (yystack_[4].value.str), (yystack_[1].value.type), (yystack_[2].value.num) ); }
+    break;
+
+  case 53: // REDEF: KSELF '\\' SPECIF ':' TYPE ';'
+                                       { (yylhs.value.num) = NULL; printf ( "Warning at line %d: field redefinition ignored\n", ec_curline() ); /* redefinition of inherited field */ }
+    break;
+
+  case 54: // SPECIF: NAME
+                         { (yylhs.value.tlist) = mktlist ( (yystack_[0].value.str), 0 ); /* inherited field specification */ }
+    break;
+
+  case 55: // SPECIF: NAME '.' SPECIF
+                         { (yylhs.value.tlist) = mktlist ( (yystack_[2].value.str), (yystack_[0].value.tlist) ); }
+    break;
+
+  case 56: // OPTNL: %empty
+                         { (yylhs.value.num) = 0; }
+    break;
+
+  case 57: // OPTNL: KOPT
+                         { (yylhs.value.num) = 1; }
+    break;
+
+  case 58: // UNIQIT: NAME ':' TLIST ';'
+                            { (yylhs.value.tlist) = (yystack_[1].value.tlist);   /* UNIQUE statement */ }
+    break;
+
+  case 59: // UNIQIT: NAME ':' SPCLST ';'
+                            { (yylhs.value.tlist) = NULL; /* UNIQUE statement */ }
+    break;
+
+  case 60: // UNIQLS: UNIQIT
+                         { (yylhs.value.tlist) = NULL;    /* list of 1 UNIQUE statements */ }
+    break;
+
+  case 61: // UNIQLS: UNIQIT UNIQLS
+                         { (yylhs.value.tlist) = mktlists ( (yystack_[1].value.tlist), (yystack_[0].value.tlist) );/* list of UNIQUE statements */ }
+    break;
+
+  case 62: // UNIQUE: %empty
+                         { (yylhs.value.tlist) = NULL;    /* no UNIQUE clause in ENTITY */ }
+    break;
+
+  case 63: // UNIQUE: KUNIQ UNIQLS
+                         { (yylhs.value.tlist) = (yystack_[0].value.tlist);      /* UNIQUE clause in ENTITY */ }
+    break;
+
+  case 64: // SPCLST: KSELF '\\' SPECIF
+                               { (yylhs.value.num) = 0; /* list of specifications */ }
+    break;
+
+  case 65: // SPCLST: KSELF '\\' SPECIF ',' SPCLST
+                                     { (yylhs.value.num) = 0; }
+    break;
+
+  case 66: // SPCLST: NAME ',' SPCLST
+                               { (yylhs.value.num) = 0; }
+    break;
+
+
+
+            default:
+              break;
+            }
+        }
+#if YY_EXCEPTIONS
+      catch (const syntax_error& yyexc)
+        {
+          YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
+          error (yyexc);
+          YYERROR;
+        }
+#endif // YY_EXCEPTIONS
+      YY_SYMBOL_PRINT ("-> $$ =", yylhs);
+      yypop_ (yylen);
+      yylen = 0;
+
+      // Shift the result of the reduction.
+      yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
+    }
+    goto yynewstate;
+
+
+  /*--------------------------------------.
+  | yyerrlab -- here on detecting error.  |
+  `--------------------------------------*/
+  yyerrlab:
+    // If not already recovering from an error, report this error.
+    if (!yyerrstatus_)
+      {
+        ++yynerrs_;
+        std::string msg = YY_("syntax error");
+        error (YY_MOVE (msg));
+      }
+
+
+    if (yyerrstatus_ == 3)
+      {
+        /* If just tried and failed to reuse lookahead token after an
+           error, discard it.  */
+
+        // Return failure if at end of input.
+        if (yyla.kind () == symbol_kind::S_YYEOF)
+          YYABORT;
+        else if (!yyla.empty ())
+          {
+            yy_destroy_ ("Error: discarding", yyla);
+            yyla.clear ();
+          }
+      }
+
+    // Else will try to reuse lookahead token after shifting the error token.
+    goto yyerrlab1;
+
+
+  /*---------------------------------------------------.
+  | yyerrorlab -- error raised explicitly by YYERROR.  |
+  `---------------------------------------------------*/
+  yyerrorlab:
+    /* Pacify compilers when the user code never invokes YYERROR and
+       the label yyerrorlab therefore never appears in user code.  */
+    if (false)
+      YYERROR;
+
+    /* Do not reclaim the symbols of the rule whose action triggered
+       this YYERROR.  */
+    yypop_ (yylen);
+    yylen = 0;
+    YY_STACK_PRINT ();
+    goto yyerrlab1;
+
+
+  /*-------------------------------------------------------------.
+  | yyerrlab1 -- common code for both syntax error and YYERROR.  |
+  `-------------------------------------------------------------*/
+  yyerrlab1:
+    yyerrstatus_ = 3;   // Each real token shifted decrements this.
+    // Pop stack until we find a state that shifts the error token.
+    for (;;)
+      {
+        yyn = yypact_[+yystack_[0].state];
+        if (!yy_pact_value_is_default_ (yyn))
+          {
+            yyn += symbol_kind::S_YYerror;
+            if (0 <= yyn && yyn <= yylast_
+                && yycheck_[yyn] == symbol_kind::S_YYerror)
+              {
+                yyn = yytable_[yyn];
+                if (0 < yyn)
+                  break;
+              }
+          }
+
+        // Pop the current state because it cannot handle the error token.
+        if (yystack_.size () == 1)
+          YYABORT;
+
+        yy_destroy_ ("Error: popping", yystack_[0]);
+        yypop_ ();
+        YY_STACK_PRINT ();
+      }
+    {
+      stack_symbol_type error_token;
+
+
+      // Shift the error token.
+      error_token.state = state_type (yyn);
+      yypush_ ("Shifting", YY_MOVE (error_token));
+    }
+    goto yynewstate;
+
+
+  /*-------------------------------------.
+  | yyacceptlab -- YYACCEPT comes here.  |
+  `-------------------------------------*/
+  yyacceptlab:
+    yyresult = 0;
+    goto yyreturn;
+
+
+  /*-----------------------------------.
+  | yyabortlab -- YYABORT comes here.  |
+  `-----------------------------------*/
+  yyabortlab:
+    yyresult = 1;
+    goto yyreturn;
+
+
+  /*-----------------------------------------------------.
+  | yyreturn -- parsing is finished, return the result.  |
+  `-----------------------------------------------------*/
+  yyreturn:
+    if (!yyla.empty ())
+      yy_destroy_ ("Cleanup: discarding lookahead", yyla);
+
+    /* Do not reclaim the symbols of the rule whose action triggered
+       this YYABORT or YYACCEPT.  */
+    yypop_ (yylen);
+    YY_STACK_PRINT ();
+    while (1 < yystack_.size ())
+      {
+        yy_destroy_ ("Cleanup: popping", yystack_[0]);
+        yypop_ ();
+      }
+
+    return yyresult;
+  }
+#if YY_EXCEPTIONS
+    catch (...)
+      {
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+        // Do not try to display the values of the reclaimed symbols,
+        // as their printers might throw an exception.
+        if (!yyla.empty ())
+          yy_destroy_ (YY_NULLPTR, yyla);
+
+        while (1 < yystack_.size ())
+          {
+            yy_destroy_ (YY_NULLPTR, yystack_[0]);
+            yypop_ ();
+          }
+        throw;
+      }
+#endif // YY_EXCEPTIONS
+  }
+
+  void
+  parser::error (const syntax_error& yyexc)
+  {
+    error (yyexc.what ());
+  }
+
+#if YYDEBUG || 0
+  const char *
+  parser::symbol_name (symbol_kind_type yysymbol)
+  {
+    return yytname_[yysymbol];
+  }
+#endif // #if YYDEBUG || 0
+
+
+
+
+
+  const signed char parser::yypact_ninf_ = -123;
+
+  const signed char parser::yytable_ninf_ = -1;
+
+  const signed char
+  parser::yypact_[] =
+  {
+      28,    -2,    49,    23,  -123,    21,    37,    38,    58,    21,
+    -123,  -123,  -123,  -123,    41,    36,    43,  -123,     0,    51,
+      64,    54,  -123,    45,    67,    47,    48,    50,    52,  -123,
+    -123,  -123,  -123,  -123,  -123,  -123,    53,  -123,  -123,  -123,
+      54,    39,    68,    55,    59,    60,    45,    24,    24,    24,
+      24,    88,    61,    39,    63,    39,    65,    45,    30,    66,
+      69,    93,    70,  -123,    62,  -123,    71,    72,    73,    74,
+      75,    30,  -123,    39,    -6,    39,  -123,    76,    77,  -123,
+      78,    30,    30,    59,  -123,    80,    96,    83,    24,    24,
+      24,    24,  -123,    78,  -123,  -123,  -123,    85,    81,    87,
+      99,  -123,  -123,  -123,  -123,    86,    84,    82,    89,    90,
+      91,   101,    92,    94,  -123,    32,    95,    87,  -123,    98,
+    -123,  -123,   108,   109,   110,   111,   102,    85,    32,   103,
+      34,  -123,  -123,    79,    79,    79,    79,  -123,  -123,   104,
+    -123,    97,   107,   112,   113,  -123,    32,    32,    32,    32,
+    -123,    85,    34,  -123,  -123,  -123,  -123,  -123,  -123,   115,
+    -123,    35,   116,  -123,    35
+  };
+
+  const signed char
+  parser::yydefact_[] =
+  {
+       0,     0,     0,     0,     1,     0,     0,     0,     0,     3,
+       5,     6,     7,     8,     0,    38,     0,     4,     0,    38,
+      39,    36,     2,     0,     0,     0,     0,     0,     0,    21,
+      20,    22,    23,    24,    25,    26,     0,    17,    18,    19,
+      36,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    41,     0,    40,     0,    50,    14,
+       0,     0,     0,    31,     0,    32,     0,     0,     0,     0,
+       0,    50,    44,     0,     0,     0,    37,     0,     0,    51,
+      62,    46,    48,     0,    16,     0,     0,     0,     0,     0,
+       0,     0,    11,    62,    43,    42,    45,     0,    56,     0,
+       0,    47,    49,    15,    10,     0,     0,     0,     0,     0,
+       0,     0,    54,     0,    57,     0,     0,    60,    63,     0,
+       9,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    61,    12,    34,    34,    34,    34,    13,    55,     0,
+      52,     0,    14,     0,     0,    35,     0,     0,     0,     0,
+      53,     0,     0,    58,    59,    27,    28,    30,    29,    64,
+      66,     0,     0,    65,     0
+  };
+
+  const signed char
+  parser::yypgoto_[] =
+  {
+    -123,  -123,   120,  -123,  -123,  -123,  -123,  -123,   -44,   -17,
+    -111,  -123,  -123,  -123,   -47,   -60,   105,   124,   -48,   -72,
+     100,  -123,  -123,  -121,  -123,  -123,    -7,   106,  -122
+  };
+
+  const short
+  parser::yydefgoto_[] =
+  {
+      -1,     2,     8,     9,    10,    11,    12,    13,   103,    45,
+      36,    37,    38,    39,    66,   146,    43,    21,    56,    79,
+      80,    81,    82,   113,   115,   117,   118,   100,   160
+  };
+
+  const unsigned char
+  parser::yytable_[] =
+  {
+      60,    67,    68,    69,   129,    72,   138,    74,   144,   101,
+     102,    23,    24,    25,    26,    27,    28,   139,    29,    30,
+      31,    32,    33,    34,    75,    94,     6,    96,     7,    62,
+     159,     1,     3,    95,    35,   155,   156,   157,   158,   163,
+      76,   107,   108,   109,   110,    25,    26,    27,    28,     4,
+      29,    30,    31,    32,    33,    34,    77,    63,    64,     5,
+     141,   141,    16,    19,    78,    20,    35,    65,   142,   162,
+      53,    14,    15,    54,   147,   148,   149,    55,    18,    22,
+      20,    41,    42,    44,    46,    57,   143,    47,    48,    51,
+      49,    58,    50,    59,    70,    75,    61,    71,    73,    85,
+      87,    83,   105,    99,   145,   114,    86,   119,    84,   126,
+     131,    92,    88,    89,    90,    91,   104,   106,    98,   112,
+      97,   116,   120,   121,   122,   133,   134,   135,   136,    17,
+       0,   123,   124,   125,   132,   128,   130,   127,   137,   140,
+     150,   151,   152,    40,     0,    52,     0,     0,   153,   154,
+     161,   164,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    93,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   111
+  };
+
+  const short
+  parser::yycheck_[] =
+  {
+      44,    48,    49,    50,   115,    53,   127,    55,   130,    81,
+      82,    11,    12,    13,    14,    15,    16,   128,    18,    19,
+      20,    21,    22,    23,    30,    73,     5,    75,     7,    46,
+     151,     3,    34,    39,    34,   146,   147,   148,   149,   161,
+      57,    88,    89,    90,    91,    13,    14,    15,    16,     0,
+      18,    19,    20,    21,    22,    23,    26,    33,    34,    36,
+      26,    26,     4,    27,    34,    29,    34,    43,    34,    34,
+      31,    34,    34,    34,   134,   135,   136,    38,    37,    36,
+      29,    17,    28,    38,    17,    17,   130,    40,    40,    36,
+      40,    36,    40,    34,     6,    30,    36,    36,    35,     6,
+      38,    35,     6,    25,    25,    24,    36,     8,    39,     8,
+     117,    36,    41,    41,    41,    41,    36,    34,    41,    34,
+      44,    34,    36,    39,    42,    17,    17,    17,    17,     9,
+      -1,    42,    42,    42,    36,    41,    41,    45,    36,    36,
+      36,    44,    35,    19,    -1,    40,    -1,    -1,    36,    36,
+      35,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93
+  };
+
+  const signed char
+  parser::yystos_[] =
+  {
+       0,     3,    47,    34,     0,    36,     5,     7,    48,    49,
+      50,    51,    52,    53,    34,    34,     4,    48,    37,    27,
+      29,    63,    36,    11,    12,    13,    14,    15,    16,    18,
+      19,    20,    21,    22,    23,    34,    56,    57,    58,    59,
+      63,    17,    28,    62,    38,    55,    17,    40,    40,    40,
+      40,    36,    62,    31,    34,    38,    64,    17,    36,    34,
+      54,    36,    55,    33,    34,    43,    60,    60,    60,    60,
+       6,    36,    64,    35,    64,    30,    55,    26,    34,    65,
+      66,    67,    68,    35,    39,     6,    36,    38,    41,    41,
+      41,    41,    36,    66,    64,    39,    64,    44,    41,    25,
+      73,    65,    65,    54,    36,     6,    34,    60,    60,    60,
+      60,    73,    34,    69,    24,    70,    34,    71,    72,     8,
+      36,    39,    42,    42,    42,    42,     8,    45,    41,    56,
+      41,    72,    36,    17,    17,    17,    17,    36,    69,    56,
+      36,    26,    34,    54,    74,    25,    61,    61,    61,    61,
+      36,    44,    35,    36,    36,    56,    56,    56,    56,    69,
+      74,    35,    34,    74,    35
+  };
+
+  const signed char
+  parser::yyr1_[] =
+  {
+       0,    46,    47,    48,    48,    49,    49,    49,    49,    50,
+      51,    52,    53,    53,    54,    54,    55,    56,    56,    56,
+      57,    57,    57,    57,    57,    57,    58,    59,    59,    59,
+      59,    60,    60,    60,    61,    61,    62,    62,    63,    63,
+      63,    64,    64,    64,    64,    64,    65,    65,    65,    65,
+      66,    66,    67,    68,    69,    69,    70,    70,    71,    71,
+      72,    72,    73,    73,    74,    74,    74
+  };
+
+  const signed char
+  parser::yyr2_[] =
+  {
+       0,     2,     6,     1,     2,     1,     1,     1,     1,     9,
+       8,     7,     9,    10,     1,     3,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     9,     9,     9,
+       9,     1,     1,     4,     0,     1,     0,     3,     0,     1,
+       3,     1,     3,     3,     2,     3,     1,     2,     1,     2,
+       0,     1,     5,     6,     1,     3,     0,     1,     4,     4,
+       1,     2,     0,     2,     3,     5,     3
+  };
+
+
+#if YYDEBUG
+  // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+  // First, the terminals, then, starting at \a YYNTOKENS, nonterminals.
+  const char*
+  const parser::yytname_[] =
+  {
+  "\"end of file\"", "error", "\"invalid token\"", "KSCHEM", "KENDS",
+  "KTYP", "KENDT", "KENT", "KENDE", "KREF", "KFROM", "KSEL", "KENUM",
+  "KLIST", "KARR", "KBAG", "KSET", "KOF", "KNUM", "KINT", "KDBL", "KSTR",
+  "KLOG", "KBOOL", "KOPT", "KUNIQ", "KSELF", "KABSTR", "KSUBT", "KSPRT",
+  "KANDOR", "K1OF", "KAND", "NUMBER", "NAME", "','", "';'", "'='", "'('",
+  "')'", "'['", "':'", "']'", "'?'", "'\\\\'", "'.'", "$accept", "SCHEMA",
+  "ILIST", "ITEM", "ENUM", "SELECT", "ALIAS", "ENTITY", "TLIST", "TLIST1",
+  "TYPE", "TSTD", "TNAME", "TSET", "INDEX", "OPTUNI", "SUBT", "SUPERT",
+  "SUPLST", "FLIST", "FLIST1", "FIELD", "REDEF", "SPECIF", "OPTNL",
+  "UNIQIT", "UNIQLS", "UNIQUE", "SPCLST", YY_NULLPTR
+  };
+#endif
+
+
+#if YYDEBUG
+  const short
+  parser::yyrline_[] =
+  {
+       0,   212,   212,   214,   215,   218,   219,   220,   221,   222,
+     224,   226,   228,   229,   234,   235,   237,   240,   241,   242,
+     244,   245,   246,   247,   248,   249,   251,   253,   254,   255,
+     256,   258,   259,   260,   262,   263,   266,   267,   269,   270,
+     271,   273,   274,   275,   276,   277,   280,   281,   282,   283,
+     285,   286,   288,   290,   292,   293,   296,   297,   300,   301,
+     303,   304,   306,   307,   309,   310,   311
+  };
+
+  void
+  parser::yy_stack_print_ () const
+  {
+    *yycdebug_ << "Stack now";
+    for (stack_type::const_iterator
+           i = yystack_.begin (),
+           i_end = yystack_.end ();
+         i != i_end; ++i)
+      *yycdebug_ << ' ' << int (i->state);
+    *yycdebug_ << '\n';
+  }
+
+  void
+  parser::yy_reduce_print_ (int yyrule) const
+  {
+    int yylno = yyrline_[yyrule];
+    int yynrhs = yyr2_[yyrule];
+    // Print the symbols being reduced, and their result.
+    *yycdebug_ << "Reducing stack by rule " << yyrule - 1
+               << " (line " << yylno << "):\n";
+    // The symbols being reduced.
+    for (int yyi = 0; yyi < yynrhs; yyi++)
+      YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
+                       yystack_[(yynrhs) - (yyi + 1)]);
+  }
+#endif // YYDEBUG
+
+  parser::symbol_kind_type
+  parser::yytranslate_ (int t)
+  {
+    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+    // TOKEN-NUM as returned by yylex.
+    static
+    const signed char
+    translate_table[] =
+    {
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      38,    39,     2,     2,    35,     2,    45,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    41,    36,
+       2,    37,     2,    43,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    40,    44,    42,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34
+    };
+    // Last valid token kind.
+    const int code_max = 289;
+
+    if (t <= 0)
+      return symbol_kind::S_YYEOF;
+    else if (t <= code_max)
+      return YY_CAST (symbol_kind_type, translate_table[t]);
+    else
+      return symbol_kind::S_YYUNDEF;
+  }
+
+} // exptocas
+
+
+
+/************************************************/
+/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
+
+static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist )
+{
+  Express_Schema *sch = new Express_Schema ( name, ilist );
+  Express::Schema() = sch;
+  return sch;
+}
+
+static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq )
+{
+  if ( ! seq ) { 
+    seq = new Express_HSequenceOfItem;
+    seq->Append ( item );
+  }
+  else seq->Prepend ( item );
+  return seq;
+}
+
+static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  return new Express_Enum ( name, tlist );
+}
+
+static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  return new Express_Select ( name, tlist );
+}
+
+static Express_Item *mkalias ( char *name, Express_Type *type )
+{
+  return new Express_Alias ( name, type );
+}
+
+static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
+                                Express_HSequenceOfField *field, int isabstract )
+{
+  Express_Entity *ent = new Express_Entity ( name, inherit, field );
+  if ( isabstract ) ent->SetAbstractFlag ( Standard_True );
+  return ent;
+}
+
+static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items)
+{
+  return new Express_Reference ( name, items );
+}
+
+static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString ( name );
+  if ( tlist ) tlist->Prepend ( str );
+  else {
+    tlist = new TColStd_HSequenceOfHAsciiString;
+    tlist->Append ( str );
+  }
+  return tlist;
+}
+
+static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, 
+                                                  TColStd_HSequenceOfHAsciiString *tlist2 )
+{
+  if ( ! tlist1 ) return tlist2;
+  if ( ! tlist2 ) return tlist1;
+  for ( int i=1; i <= tlist2->Length(); i++ )
+    tlist1->Append ( tlist2->Value(i) );
+  return tlist1;
+}
+
+static Express_Type *mktstd ( int keyword )
+{
+  switch ( keyword ) {
+  case exptocas::parser::token::KINT : return new Express_Integer;
+  case exptocas::parser::token::KNUM : return new Express_Number;
+  case exptocas::parser::token::KDBL : return new Express_Real;
+  case exptocas::parser::token::KSTR : return new Express_String;
+  case exptocas::parser::token::KBOOL: return new Express_Boolean;
+  case exptocas::parser::token::KLOG : return new Express_Logical;
+  default   : ec_error ( "Predefined type not treated!", "" );
+              return NULL;
+  }
+}
+
+static Express_Type *mktname ( char *name )
+{
+  return new Express_NamedType ( name );
+}
+
+static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of )
+{
+  switch ( keyword ) {
+  case exptocas::parser::token::KLIST: return new Express_List  ( ilow, ihigh, of );
+  case exptocas::parser::token::KARR : return new Express_Array ( ilow, ihigh, of );
+  case exptocas::parser::token::KBAG : return new Express_Bag   ( ilow, ihigh, of );
+  case exptocas::parser::token::KSET : return new Express_Set   ( ilow, ihigh, of );
+  default   : ec_error ( "Complex type not treated!", "" );
+              return NULL;
+  }
+}
+
+static Express_Field *mkfield ( char *name, Express_Type *type, int optional )
+{
+  return new Express_Field ( name, type, optional );
+}
+
+static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq )
+{
+  if ( seq ) seq->Prepend ( field );
+  else {
+    seq = new Express_HSequenceOfField;
+    seq->Append ( field );
+  }
+  return seq;
+}
+
+/*******************************************************************/
+/* External interface to result of parsing */
+
+Handle(Express_Schema) ec_parse(const char* theFileName)
+{
+  std::ifstream aFileStream;
+  OSD_OpenStream(aFileStream, theFileName, std::ios_base::in | std::ios_base::binary);
+  exptocas::scanner aScanner(&aFileStream);
+  aScanner.yyrestart(aFileStream);
+  // uncomment next string for debug of parser
+  //aScanner.set_debug(1);
+  exptocas::parser aParser(&aScanner);
+  aParser.parse();
+  return Express::Schema();
+}
+
+/*******************************************************************/
+/* MAIN & co */
+
+/*
+void tlistfree ( struct tlist *list )
+{
+  if ( ! list ) return;
+  tlistfree ( list->next );
+  list->next = 0;
+  free ( list->str );
+  list->str = 0;
+}
+* /
+
+int printtlist ( struct ec_tlist *tl )
+{
+  int num=0;
+  while ( tl ) {
+    num++;
+    printf ( "%s\n", tl->name );
+    tl = tl->next;
+  }
+  return num;
+}
+
+int main ( void )
+{
+  int num = 0;
+  yyparse();
+
+  printf ( "\nFinished\n" );
+  if ( schema ) {
+    struct ec_item *it;
+    it = schema->items;
+    printf ( "\nSchema %s", schema->name );
+    printf ( "\nItems:" );
+    while ( it ) {
+      num++;
+      printf ( "\n%s", it->name );
+      it = it->next;
+    }
+//    num = printtlist ( res );
+    printf ( "\nTotal %d", num );
+  }
+
+/*  tlistfree ( yylval.tlist ); * /
+  return num;
+}
+*/
+
+void exptocas::parser::error(const std::string& s)
+{
+  printf("\nParse error at line %d: %s\n", scanner->lineno(), s.c_str());
+}
+
diff --git a/src/ExpToCasExe/exptocas.tab.hxx b/src/ExpToCasExe/exptocas.tab.hxx
new file mode 100644 (file)
index 0000000..be2edf3
--- /dev/null
@@ -0,0 +1,876 @@
+// A Bison parser, made by GNU Bison 3.7.1.
+
+// Skeleton interface for Bison LALR(1) parsers in C++
+
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+
+/**
+ ** \file ExpToCasExe/exptocas.tab.hxx
+ ** Define the exptocas::parser class.
+ */
+
+// C++ LALR(1) parser skeleton written by Akim Demaille.
+
+// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+// especially those whose name start with YY_ or yy_.  They are
+// private implementation details that can be changed or removed.
+
+#ifndef YY_EXPTOCAS_EXPTOCASEXE_EXPTOCAS_TAB_HXX_INCLUDED
+# define YY_EXPTOCAS_EXPTOCASEXE_EXPTOCAS_TAB_HXX_INCLUDED
+// "%code requires" blocks.
+
+namespace exptocas {
+  class scanner;
+};
+
+
+
+# include <cstdlib> // std::abort
+# include <iostream>
+# include <stdexcept>
+# include <string>
+# include <vector>
+
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
+// Support move semantics when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_MOVE           std::move
+# define YY_MOVE_OR_COPY   move
+# define YY_MOVE_REF(Type) Type&&
+# define YY_RVREF(Type)    Type&&
+# define YY_COPY(Type)     Type
+#else
+# define YY_MOVE
+# define YY_MOVE_OR_COPY   copy
+# define YY_MOVE_REF(Type) Type&
+# define YY_RVREF(Type)    const Type&
+# define YY_COPY(Type)     const Type&
+#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
+
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
+#  endif
+# endif
+
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+
+namespace exptocas {
+
+
+
+
+  /// A Bison parser.
+  class parser
+  {
+  public:
+#ifndef YYSTYPE
+    /// Symbol semantic values.
+    union semantic_type
+    {
+
+  int num;
+  char *str;
+  TColStd_HSequenceOfHAsciiString *tlist;
+  Express_HSequenceOfField *flist;
+  Express_HSequenceOfItem *ilist;
+  Express_Field *field;
+  Express_Item *item;
+  Express_Type *type;
+  Express_Schema *schema;
+  Express_Reference *ref;
+
+
+    };
+#else
+    typedef YYSTYPE semantic_type;
+#endif
+
+    /// Syntax errors thrown from user actions.
+    struct syntax_error : std::runtime_error
+    {
+      syntax_error (const std::string& m)
+        : std::runtime_error (m)
+      {}
+
+      syntax_error (const syntax_error& s)
+        : std::runtime_error (s.what ())
+      {}
+
+      ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+    };
+
+    /// Token kinds.
+    struct token
+    {
+      enum token_kind_type
+      {
+        YYEMPTY = -2,
+    YYEOF = 0,                     // "end of file"
+    YYerror = 256,                 // error
+    YYUNDEF = 257,                 // "invalid token"
+    KSCHEM = 258,                  // KSCHEM
+    KENDS = 259,                   // KENDS
+    KTYP = 260,                    // KTYP
+    KENDT = 261,                   // KENDT
+    KENT = 262,                    // KENT
+    KENDE = 263,                   // KENDE
+    KREF = 264,                    // KREF
+    KFROM = 265,                   // KFROM
+    KSEL = 266,                    // KSEL
+    KENUM = 267,                   // KENUM
+    KLIST = 268,                   // KLIST
+    KARR = 269,                    // KARR
+    KBAG = 270,                    // KBAG
+    KSET = 271,                    // KSET
+    KOF = 272,                     // KOF
+    KNUM = 273,                    // KNUM
+    KINT = 274,                    // KINT
+    KDBL = 275,                    // KDBL
+    KSTR = 276,                    // KSTR
+    KLOG = 277,                    // KLOG
+    KBOOL = 278,                   // KBOOL
+    KOPT = 279,                    // KOPT
+    KUNIQ = 280,                   // KUNIQ
+    KSELF = 281,                   // KSELF
+    KABSTR = 282,                  // KABSTR
+    KSUBT = 283,                   // KSUBT
+    KSPRT = 284,                   // KSPRT
+    KANDOR = 285,                  // KANDOR
+    K1OF = 286,                    // K1OF
+    KAND = 287,                    // KAND
+    NUMBER = 288,                  // NUMBER
+    NAME = 289                     // NAME
+      };
+      /// Backward compatibility alias (Bison 3.6).
+      typedef token_kind_type yytokentype;
+    };
+
+    /// Token kind, as returned by yylex.
+    typedef token::yytokentype token_kind_type;
+
+    /// Backward compatibility alias (Bison 3.6).
+    typedef token_kind_type token_type;
+
+    /// Symbol kinds.
+    struct symbol_kind
+    {
+      enum symbol_kind_type
+      {
+        YYNTOKENS = 46, ///< Number of tokens.
+        S_YYEMPTY = -2,
+        S_YYEOF = 0,                             // "end of file"
+        S_YYerror = 1,                           // error
+        S_YYUNDEF = 2,                           // "invalid token"
+        S_KSCHEM = 3,                            // KSCHEM
+        S_KENDS = 4,                             // KENDS
+        S_KTYP = 5,                              // KTYP
+        S_KENDT = 6,                             // KENDT
+        S_KENT = 7,                              // KENT
+        S_KENDE = 8,                             // KENDE
+        S_KREF = 9,                              // KREF
+        S_KFROM = 10,                            // KFROM
+        S_KSEL = 11,                             // KSEL
+        S_KENUM = 12,                            // KENUM
+        S_KLIST = 13,                            // KLIST
+        S_KARR = 14,                             // KARR
+        S_KBAG = 15,                             // KBAG
+        S_KSET = 16,                             // KSET
+        S_KOF = 17,                              // KOF
+        S_KNUM = 18,                             // KNUM
+        S_KINT = 19,                             // KINT
+        S_KDBL = 20,                             // KDBL
+        S_KSTR = 21,                             // KSTR
+        S_KLOG = 22,                             // KLOG
+        S_KBOOL = 23,                            // KBOOL
+        S_KOPT = 24,                             // KOPT
+        S_KUNIQ = 25,                            // KUNIQ
+        S_KSELF = 26,                            // KSELF
+        S_KABSTR = 27,                           // KABSTR
+        S_KSUBT = 28,                            // KSUBT
+        S_KSPRT = 29,                            // KSPRT
+        S_KANDOR = 30,                           // KANDOR
+        S_K1OF = 31,                             // K1OF
+        S_KAND = 32,                             // KAND
+        S_NUMBER = 33,                           // NUMBER
+        S_NAME = 34,                             // NAME
+        S_35_ = 35,                              // ','
+        S_36_ = 36,                              // ';'
+        S_37_ = 37,                              // '='
+        S_38_ = 38,                              // '('
+        S_39_ = 39,                              // ')'
+        S_40_ = 40,                              // '['
+        S_41_ = 41,                              // ':'
+        S_42_ = 42,                              // ']'
+        S_43_ = 43,                              // '?'
+        S_44_ = 44,                              // '\\'
+        S_45_ = 45,                              // '.'
+        S_YYACCEPT = 46,                         // $accept
+        S_SCHEMA = 47,                           // SCHEMA
+        S_ILIST = 48,                            // ILIST
+        S_ITEM = 49,                             // ITEM
+        S_ENUM = 50,                             // ENUM
+        S_SELECT = 51,                           // SELECT
+        S_ALIAS = 52,                            // ALIAS
+        S_ENTITY = 53,                           // ENTITY
+        S_TLIST = 54,                            // TLIST
+        S_TLIST1 = 55,                           // TLIST1
+        S_TYPE = 56,                             // TYPE
+        S_TSTD = 57,                             // TSTD
+        S_TNAME = 58,                            // TNAME
+        S_TSET = 59,                             // TSET
+        S_INDEX = 60,                            // INDEX
+        S_OPTUNI = 61,                           // OPTUNI
+        S_SUBT = 62,                             // SUBT
+        S_SUPERT = 63,                           // SUPERT
+        S_SUPLST = 64,                           // SUPLST
+        S_FLIST = 65,                            // FLIST
+        S_FLIST1 = 66,                           // FLIST1
+        S_FIELD = 67,                            // FIELD
+        S_REDEF = 68,                            // REDEF
+        S_SPECIF = 69,                           // SPECIF
+        S_OPTNL = 70,                            // OPTNL
+        S_UNIQIT = 71,                           // UNIQIT
+        S_UNIQLS = 72,                           // UNIQLS
+        S_UNIQUE = 73,                           // UNIQUE
+        S_SPCLST = 74                            // SPCLST
+      };
+    };
+
+    /// (Internal) symbol kind.
+    typedef symbol_kind::symbol_kind_type symbol_kind_type;
+
+    /// The number of tokens.
+    static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS;
+
+    /// A complete symbol.
+    ///
+    /// Expects its Base type to provide access to the symbol kind
+    /// via kind ().
+    ///
+    /// Provide access to semantic value.
+    template <typename Base>
+    struct basic_symbol : Base
+    {
+      /// Alias to Base.
+      typedef Base super_type;
+
+      /// Default constructor.
+      basic_symbol ()
+        : value ()
+      {}
+
+#if 201103L <= YY_CPLUSPLUS
+      /// Move constructor.
+      basic_symbol (basic_symbol&& that)
+        : Base (std::move (that))
+        , value (std::move (that.value))
+      {}
+#endif
+
+      /// Copy constructor.
+      basic_symbol (const basic_symbol& that);
+      /// Constructor for valueless symbols.
+      basic_symbol (typename Base::kind_type t);
+
+      /// Constructor for symbols with semantic value.
+      basic_symbol (typename Base::kind_type t,
+                    YY_RVREF (semantic_type) v);
+
+      /// Destroy the symbol.
+      ~basic_symbol ()
+      {
+        clear ();
+      }
+
+      /// Destroy contents, and record that is empty.
+      void clear ()
+      {
+        Base::clear ();
+      }
+
+#if YYDEBUG || 0
+      /// The user-facing name of this symbol.
+      const char *name () const YY_NOEXCEPT
+      {
+        return parser::symbol_name (this->kind ());
+      }
+#endif // #if YYDEBUG || 0
+
+
+      /// Backward compatibility (Bison 3.6).
+      symbol_kind_type type_get () const YY_NOEXCEPT;
+
+      /// Whether empty.
+      bool empty () const YY_NOEXCEPT;
+
+      /// Destructive move, \a s is emptied into this.
+      void move (basic_symbol& s);
+
+      /// The semantic value.
+      semantic_type value;
+
+    private:
+#if YY_CPLUSPLUS < 201103L
+      /// Assignment operator.
+      basic_symbol& operator= (const basic_symbol& that);
+#endif
+    };
+
+    /// Type access provider for token (enum) based symbols.
+    struct by_kind
+    {
+      /// Default constructor.
+      by_kind ();
+
+#if 201103L <= YY_CPLUSPLUS
+      /// Move constructor.
+      by_kind (by_kind&& that);
+#endif
+
+      /// Copy constructor.
+      by_kind (const by_kind& that);
+
+      /// The symbol kind as needed by the constructor.
+      typedef token_kind_type kind_type;
+
+      /// Constructor from (external) token numbers.
+      by_kind (kind_type t);
+
+      /// Record that this symbol is empty.
+      void clear ();
+
+      /// Steal the symbol kind from \a that.
+      void move (by_kind& that);
+
+      /// The (internal) type number (corresponding to \a type).
+      /// \a empty when empty.
+      symbol_kind_type kind () const YY_NOEXCEPT;
+
+      /// Backward compatibility (Bison 3.6).
+      symbol_kind_type type_get () const YY_NOEXCEPT;
+
+      /// The symbol kind.
+      /// \a S_YYEMPTY when empty.
+      symbol_kind_type kind_;
+    };
+
+    /// Backward compatibility for a private implementation detail (Bison 3.6).
+    typedef by_kind by_type;
+
+    /// "External" symbols: returned by the scanner.
+    struct symbol_type : basic_symbol<by_kind>
+    {};
+
+    /// Build a parser object.
+    parser (exptocas::scanner* scanner_yyarg);
+    virtual ~parser ();
+
+#if 201103L <= YY_CPLUSPLUS
+    /// Non copyable.
+    parser (const parser&) = delete;
+    /// Non copyable.
+    parser& operator= (const parser&) = delete;
+#endif
+
+    /// Parse.  An alias for parse ().
+    /// \returns  0 iff parsing succeeded.
+    int operator() ();
+
+    /// Parse.
+    /// \returns  0 iff parsing succeeded.
+    virtual int parse ();
+
+#if YYDEBUG
+    /// The current debugging stream.
+    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging stream.
+    void set_debug_stream (std::ostream &);
+
+    /// Type for debugging levels.
+    typedef int debug_level_type;
+    /// The current debugging level.
+    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging level.
+    void set_debug_level (debug_level_type l);
+#endif
+
+    /// Report a syntax error.
+    /// \param msg    a description of the syntax error.
+    virtual void error (const std::string& msg);
+
+    /// Report a syntax error.
+    void error (const syntax_error& err);
+
+#if YYDEBUG || 0
+    /// The user-facing name of the symbol whose (internal) number is
+    /// YYSYMBOL.  No bounds checking.
+    static const char *symbol_name (symbol_kind_type yysymbol);
+#endif // #if YYDEBUG || 0
+
+
+
+
+  private:
+#if YY_CPLUSPLUS < 201103L
+    /// Non copyable.
+    parser (const parser&);
+    /// Non copyable.
+    parser& operator= (const parser&);
+#endif
+
+
+    /// Stored state numbers (used for stacks).
+    typedef unsigned char state_type;
+
+    /// Compute post-reduction state.
+    /// \param yystate   the current state
+    /// \param yysym     the nonterminal to push on the stack
+    static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+
+    /// Whether the given \c yypact_ value indicates a defaulted state.
+    /// \param yyvalue   the value to check
+    static bool yy_pact_value_is_default_ (int yyvalue);
+
+    /// Whether the given \c yytable_ value indicates a syntax error.
+    /// \param yyvalue   the value to check
+    static bool yy_table_value_is_error_ (int yyvalue);
+
+    static const signed char yypact_ninf_;
+    static const signed char yytable_ninf_;
+
+    /// Convert a scanner token kind \a t to a symbol kind.
+    /// In theory \a t should be a token_kind_type, but character literals
+    /// are valid, yet not members of the token_type enum.
+    static symbol_kind_type yytranslate_ (int t);
+
+#if YYDEBUG || 0
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
+#endif // #if YYDEBUG || 0
+
+
+    // Tables.
+    // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    // STATE-NUM.
+    static const signed char yypact_[];
+
+    // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+    // Performed when YYTABLE does not specify something else to do.  Zero
+    // means the default is an error.
+    static const signed char yydefact_[];
+
+    // YYPGOTO[NTERM-NUM].
+    static const signed char yypgoto_[];
+
+    // YYDEFGOTO[NTERM-NUM].
+    static const short yydefgoto_[];
+
+    // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+    // positive, shift that token.  If negative, reduce the rule whose
+    // number is the opposite.  If YYTABLE_NINF, syntax error.
+    static const unsigned char yytable_[];
+
+    static const short yycheck_[];
+
+    // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    // symbol of state STATE-NUM.
+    static const signed char yystos_[];
+
+    // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+    static const signed char yyr1_[];
+
+    // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+    static const signed char yyr2_[];
+
+
+#if YYDEBUG
+    // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+    static const short yyrline_[];
+    /// Report on the debug stream that the rule \a r is going to be reduced.
+    virtual void yy_reduce_print_ (int r) const;
+    /// Print the state stack on the debug stream.
+    virtual void yy_stack_print_ () const;
+
+    /// Debugging level.
+    int yydebug_;
+    /// Debug stream.
+    std::ostream* yycdebug_;
+
+    /// \brief Display a symbol kind, value and location.
+    /// \param yyo    The output stream.
+    /// \param yysym  The symbol.
+    template <typename Base>
+    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
+
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg     Why this token is reclaimed.
+    ///                  If null, print nothing.
+    /// \param yysym     The symbol.
+    template <typename Base>
+    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+
+  private:
+    /// Type access provider for state based symbols.
+    struct by_state
+    {
+      /// Default constructor.
+      by_state () YY_NOEXCEPT;
+
+      /// The symbol kind as needed by the constructor.
+      typedef state_type kind_type;
+
+      /// Constructor.
+      by_state (kind_type s) YY_NOEXCEPT;
+
+      /// Copy constructor.
+      by_state (const by_state& that) YY_NOEXCEPT;
+
+      /// Record that this symbol is empty.
+      void clear () YY_NOEXCEPT;
+
+      /// Steal the symbol kind from \a that.
+      void move (by_state& that);
+
+      /// The symbol kind (corresponding to \a state).
+      /// \a symbol_kind::S_YYEMPTY when empty.
+      symbol_kind_type kind () const YY_NOEXCEPT;
+
+      /// The state number used to denote an empty symbol.
+      /// We use the initial state, as it does not have a value.
+      enum { empty_state = 0 };
+
+      /// The state.
+      /// \a empty when empty.
+      state_type state;
+    };
+
+    /// "Internal" symbol: element of the stack.
+    struct stack_symbol_type : basic_symbol<by_state>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_state> super_type;
+      /// Construct an empty symbol.
+      stack_symbol_type ();
+      /// Move or copy construction.
+      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+      /// Steal the contents from \a sym to build this.
+      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+      /// Assignment, needed by push_back by some old implementations.
+      /// Moves the contents of that.
+      stack_symbol_type& operator= (stack_symbol_type& that);
+
+      /// Assignment, needed by push_back by other implementations.
+      /// Needed by some other old implementations.
+      stack_symbol_type& operator= (const stack_symbol_type& that);
+#endif
+    };
+
+    /// A stack with random access from its top.
+    template <typename T, typename S = std::vector<T> >
+    class stack
+    {
+    public:
+      // Hide our reversed order.
+      typedef typename S::iterator iterator;
+      typedef typename S::const_iterator const_iterator;
+      typedef typename S::size_type size_type;
+      typedef typename std::ptrdiff_t index_type;
+
+      stack (size_type n = 200)
+        : seq_ (n)
+      {}
+
+#if 201103L <= YY_CPLUSPLUS
+      /// Non copyable.
+      stack (const stack&) = delete;
+      /// Non copyable.
+      stack& operator= (const stack&) = delete;
+#endif
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      const T&
+      operator[] (index_type i) const
+      {
+        return seq_[size_type (size () - 1 - i)];
+      }
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      T&
+      operator[] (index_type i)
+      {
+        return seq_[size_type (size () - 1 - i)];
+      }
+
+      /// Steal the contents of \a t.
+      ///
+      /// Close to move-semantics.
+      void
+      push (YY_MOVE_REF (T) t)
+      {
+        seq_.push_back (T ());
+        operator[] (0).move (t);
+      }
+
+      /// Pop elements from the stack.
+      void
+      pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
+      {
+        for (; 0 < n; --n)
+          seq_.pop_back ();
+      }
+
+      /// Pop all elements from the stack.
+      void
+      clear () YY_NOEXCEPT
+      {
+        seq_.clear ();
+      }
+
+      /// Number of elements on the stack.
+      index_type
+      size () const YY_NOEXCEPT
+      {
+        return index_type (seq_.size ());
+      }
+
+      /// Iterator on top of the stack (going downwards).
+      const_iterator
+      begin () const YY_NOEXCEPT
+      {
+        return seq_.begin ();
+      }
+
+      /// Bottom of the stack.
+      const_iterator
+      end () const YY_NOEXCEPT
+      {
+        return seq_.end ();
+      }
+
+      /// Present a slice of the top of a stack.
+      class slice
+      {
+      public:
+        slice (const stack& stack, index_type range)
+          : stack_ (stack)
+          , range_ (range)
+        {}
+
+        const T&
+        operator[] (index_type i) const
+        {
+          return stack_[range_ - i];
+        }
+
+      private:
+        const stack& stack_;
+        index_type range_;
+      };
+
+    private:
+#if YY_CPLUSPLUS < 201103L
+      /// Non copyable.
+      stack (const stack&);
+      /// Non copyable.
+      stack& operator= (const stack&);
+#endif
+      /// The wrapped container.
+      S seq_;
+    };
+
+
+    /// Stack type.
+    typedef stack<stack_symbol_type> stack_type;
+
+    /// The stack.
+    stack_type yystack_;
+
+    /// Push a new state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param sym  the symbol
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+
+    /// Push a new look ahead token on the state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the state
+    /// \param sym  the symbol (for its value and location).
+    /// \warning the contents of \a sym.value is stolen.
+    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+
+    /// Pop \a n symbols from the stack.
+    void yypop_ (int n = 1);
+
+    /// Constants.
+    enum
+    {
+      yylast_ = 199,     ///< Last index in yytable_.
+      yynnts_ = 29,  ///< Number of nonterminal symbols.
+      yyfinal_ = 4 ///< Termination state number.
+    };
+
+
+    // User arguments.
+    exptocas::scanner* scanner;
+
+  };
+
+
+} // exptocas
+
+
+// "%code provides" blocks.
+
+#if !defined(yyFlexLexer) && !defined(FlexLexerOnce)
+#define yyFlexLexer exptocasFlexLexer
+#include "FlexLexer.h"
+#endif
+namespace exptocas {
+    // To feed data back to bison, the yylex method needs yylval and
+    // yylloc parameters. Since the exptocasFlexLexer class is defined in the
+    // system header <FlexLexer.h> the signature of its yylex() method
+    // can not be changed anymore. This makes it necessary to derive a
+    // scanner class that provides a method with the desired signature:
+    class scanner : public exptocasFlexLexer
+    {
+    public:
+      explicit scanner(std::istream* in = 0, std::ostream* out = 0);
+
+      int lex(exptocas::parser::semantic_type* yylval);
+    };
+};
+
+
+
+#endif // !YY_EXPTOCAS_EXPTOCASEXE_EXPTOCAS_TAB_HXX_INCLUDED
diff --git a/src/ExpToCasExe/exptocas.y b/src/ExpToCasExe/exptocas.y
deleted file mode 100644 (file)
index a342009..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-%{
-
-/* Created:    Thu Oct 28 12:21:16 1999
-/* Author:     Andrey BETENEV
-/* Copyright (c) 1999-2020 OPEN CASCADE SAS
-/*
-/* This file is part of Open CASCADE Technology software library.
-/*
-/* This library is free software; you can redistribute it and/or modify it under
-/* the terms of the GNU Lesser General Public License version 2.1 as published
-/* by the Free Software Foundation, with special exception defined in the file
-/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-/* distribution for complete text of the license and disclaimer of any warranty.
-/*
-/* Alternatively, this file may be used under the terms of Open CASCADE
-/* commercial license or contractual agreement.
-
-/*****************************************************************************\
-
-This YACC parser implements parsing algorithm for EXPRESS -> CASCADE/XSTEP
-classes generator
-
-Input in the form of tokens is obtained from lexical analyser. Then, data 
-structure representing schema is created on the basis of grammar analysis.
-
-NOTE: The grammar currently implemented is not full. 
-FUNCTION, RULE and CONSTANT items, WHERE, INVERSE and DERIVE clauses 
-of TYPE and ENTITY items are not considered (ignored on the level of lexical 
-scanner). 
-SUPERTYPE and UNIQUE clauses of ENTITY item are recognized but ignored.
-Also, complex constructs such as using call to function in dimensions of 
-complex time or redefinition of inherited field are ignored.
-
-\*****************************************************************************/
-
-#include <TCollection_HAsciiString.hxx>
-#include <TColStd_HSequenceOfHAsciiString.hxx>
-#include <Express_HSequenceOfField.hxx>
-#include <Express_HSequenceOfItem.hxx>
-#include <Express_Field.hxx>
-#include <Express_Item.hxx>
-#include <Express_Enum.hxx>
-#include <Express_Alias.hxx>
-#include <Express_Select.hxx>
-#include <Express_Entity.hxx>
-#include <Express_Type.hxx>
-#include <Express_NamedType.hxx>
-#include <Express_PredefinedType.hxx>
-#include <Express_Number.hxx>
-#include <Express_Integer.hxx>
-#include <Express_Boolean.hxx>
-#include <Express_Logical.hxx>
-#include <Express_Real.hxx>
-#include <Express_String.hxx>
-#include <Express_ComplexType.hxx>
-#include <Express_Array.hxx>
-#include <Express_List.hxx>
-#include <Express_Set.hxx>
-#include <Express_Bag.hxx>
-#include <Express_Schema.hxx>
-#include <Express_Reference.hxx>
-#include <Express.hxx>
-
-/************************************************/
-/* ERROR MESSAGE FUNCTION                       */
-
-/* external functions (from exptocas.l) */
-int ec_error ( char *s, char *text );
-int ec_curline ( void );
-
-int yyerror ( char *s )
-{
-  printf ( "\nParse error at line %d: %s\n", ec_curline(), s );
-  return 0;
-}
-
-/************************************************/
-/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
-
-static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist );
-static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq );
-static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static Express_Item *mkalias ( char *name, Express_Type *type );
-static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
-                                Express_HSequenceOfField *field, int isabstract );
-static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items);
-static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
-static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, TColStd_HSequenceOfHAsciiString *tlist2 );
-static Express_Type *mktstd ( int keyword );
-static Express_Type *mktname ( char *name );
-static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of );
-static Express_Field *mkfield ( char *name, Express_Type *type, int optional );
-static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq );
-
-%}
-
-  /* Definition of possible types of expressions */
-%union {
-  int num;
-  char *str;
-  TColStd_HSequenceOfHAsciiString *tlist;
-  Express_HSequenceOfField *flist;
-  Express_HSequenceOfItem *ilist;
-  Express_Field *field;
-  Express_Item *item;
-  Express_Type *type;
-  Express_Schema *schema;
-  Express_Reference *ref;
-}
-
-  /* Definition of keywords */
-
-%token <num> KSCHEM  /* SCHEMA keyword */
-%token <num> KENDS   /* END_SCHEMA keyword */
-%token <num> KTYP    /* TYPE keyword */
-%token <num> KENDT   /* END_TYPE keyword */
-%token <num> KENT    /* ENTITY keyword */
-%token <num> KENDE   /* END_ENTITY keyword */
-%token <num> KREF    /* REFERENCE keyword */
-%token <num> KFROM   /* FROM keyword */
-
-%token <num> KSEL    /* SELECT keyword */
-%token <num> KENUM   /* ENUMERATION keyword */
-%token <num> KLIST   /* LIST keyword */
-%token <num> KARR    /* ARRAY keyword */
-%token <num> KBAG    /* BAG keyword */
-%token <num> KSET    /* SET keyword */
-%token <num> KOF     /* OF keyword */
-
-%token <num> KNUM    /* NUMBER keyword */
-%token <num> KINT    /* INTEGER keyword */
-%token <num> KDBL    /* REAL keyword */
-%token <num> KSTR    /* STRING keyword */
-%token <num> KLOG    /* LOGICAL keyword */
-%token <num> KBOOL   /* BOOLEAN keyword */
-
-%token <num> KOPT    /* OPTIONAL keyword */
-%token <num> KUNIQ   /* UNIQUE keyword */
-%token <num> KSELF   /* SELF keyword */
-
-%token <num> KABSTR  /* ABSTRACT keyword */
-%token <num> KSUBT   /* SUBTYPE keyword */
-%token <num> KSPRT   /* SUPERTYPE keyword */
-%left  <num> KANDOR  /* ANDOR keyword (%left is for eliminating shift/reduce conflict on SUPLST) */
-%left  <num> K1OF    /* ONEOF keyword */
-%token <num> KAND    /* AND keyword */
-
-%token <num> NUMBER  /* integer value */
-%token <str> NAME    /* name of type or entity */
-
-%left ','            /* to eliminate shift/reduce conflict in SUPERTYPE */
-
-  /* Definition of expressions and their types */
-
-%type <num>    INDEX OPTNL OPTUNI SUPERT SUPLST REDEF SPCLST
-%type <tlist>  TLIST TLIST1 UNIQIT UNIQLS UNIQUE SUBT SPECIF
-%type <type>   TYPE TSTD TNAME TSET 
-%type <item>   ENUM SELECT ALIAS ENTITY ITEM
-%type <ilist>  ILIST
-%type <field>  FIELD
-%type <flist>  FLIST FLIST1
-%type <schema> SCHEMA
-%type <ref>    REFERENCE
-
-%%
-
-  /************************************************/
-  /*  Definition of parsing rules (expressions)   */
-  /************************************************/
-
-SCHEMA: KSCHEM NAME ';' ILIST KENDS ';' { $$ = mkschema ( $2, $4 ); /* Root: EXPRESS schema */ }
-      ;
-ILIST : ITEM             { $$ = mkilist ( $1, 0 ); /* list of items for schema */ }
-      | ITEM ILIST       { $$ = mkilist ( $1, $2 ); }
-      ;
-
-ITEM  : ENUM
-      | SELECT
-      | ALIAS
-      | ENTITY           { $$ = $1; /* item of schema (type definition) */ }
-ENUM  : KTYP NAME '=' KENUM KOF TLIST1 ';' KENDT ';' { $$ = mkenum ( $2, $6 ); /* TYPE ENUMERATION definition */ }
-      ;
-SELECT: KTYP NAME '=' KSEL TLIST1 ';' KENDT ';' { $$ = mkselect ( $2, $5 ); /* TYPE SELECT definition */ }
-      ;
-ALIAS : KTYP NAME '=' TYPE ';' KENDT ';' { $$ = mkalias ( $2, $4 ); /* TYPE '=' definition (alias) */ }
-      ;
-ENTITY: KENT NAME        SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';' { $$ = mkentity ( $2, $4, $6, 0 ); /* ENTITY definition */ }
-      | KENT NAME KABSTR SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';' { $$ = mkentity ( $2, $5, $7, 1 ); /* ENTITY definition */ }
-      ;
-
-REFERENCE: KREF KFROM NAME TLIST1 ';' { $$ = mkrefs ( $3, $4 ); /* REFERENCE FROM definition */ }
-
-TLIST : NAME             { $$ = mktlist ( $1, 0 ); /* list of (type) names */ }
-      | NAME ',' TLIST   { $$ = mktlist ( $1, $3 ); }
-      ;
-TLIST1: '(' TLIST ')'    { $$ = $2; /* TLIST in brackets */ }
-      ;
-
-TYPE  : TSTD
-      | TNAME
-      | TSET             { $$ = $1; /* type, simple or complex */ }
-      ;
-TSTD  : KINT             { $$ = mktstd ( $1 ); /* predefined type: INTEGER */ }
-      | KNUM             { $$ = mktstd ( $1 ); /* predefined type: NUMBER */ }
-      | KDBL             { $$ = mktstd ( $1 ); /* predefined type: REAL */ }
-      | KSTR             { $$ = mktstd ( $1 ); /* predefined type: STRING */ }
-      | KLOG             { $$ = mktstd ( $1 ); /* predefined type: LOGICAL */ }
-      | KBOOL            { $$ = mktstd ( $1 ); /* predefined type: BOOLEAN */ }
-      ;                  
-TNAME : NAME             { $$ = mktname ( $1 ); /* named type */ }
-      ;
-TSET  : KLIST '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: LIST */ }
-      | KARR  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: ARRAY */ }
-      | KSET  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: SET */ }
-      | KBAG  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: BAG */ }
-      ;
-INDEX : NUMBER           { $$ = $1; /* index for array, set, bag, list range */ }
-      | '?'              { $$ = -1; /* undefined */ }
-      | NAME '(' NAME ')' {$$ = -1; printf ( "Warning at line %d: index function %s(%s) ignored\n", ec_curline(), $1, $3 ); /* some function.. */ }
-      ;
-OPTUNI: /* empty */      { $$ = 0; /* UNIQUE keyword for complex type definition */ }
-      | KUNIQ            { $$ = 1; }
-      ;
-
-SUBT  : /* empty */      { $$ = NULL; /* no subtype clause */ }
-      | KSUBT KOF TLIST1 { $$ = $3;   /* subtype clause */ }
-      ;
-SUPERT: /* empty */      { $$ = 0;  /* no supertype clause */ }
-      | KSPRT            { $$ = 0;  /* supertype clause (ignored) */ }
-      | KSPRT KOF SUPLST { $$ = 0;  /* supertype clause (ignored) */ }
-      ;
-SUPLST: NAME             { $$ = 0; /* simple list of supertypes */ }
-      | '(' SUPLST ')'   { $$ = 0; /* allow bracketing */ }
-      | NAME ',' SUPLST  { $$ = 0; /* ... */ }
-      | K1OF SUPLST      { $$ = 0; /* ONEOF construct */ }
-      | SUPLST KANDOR SUPLST { $$ = 0; /* ANDOR construct */ }
-      ;
-
-FLIST : FIELD            { $$ = mkflist ( $1, 0 ); /* list of fields of ENTITY item */ }
-      | FIELD FLIST      { $$ = mkflist ( $1, $2 ); }
-      | REDEF            { $$ = 0;  /* redefinition of inherited field, just skip */ }
-      | REDEF FLIST      { $$ = $2; /* ignore redefinition of inherited field, take trailing list */ }
-      ;
-FLIST1: /* empty */      { $$ = NULL; /* empty list of fields */ }
-      | FLIST            { $$ = $1;   /* or not empty.. just to fix reduce/reduce conflict */ }
-      ;
-FIELD : NAME ':' OPTNL TYPE ';' { $$ = mkfield ( $1, $4, $3 ); }
-      ;
-REDEF : KSELF '\\' SPECIF ':' TYPE ';' { $$ = NULL; printf ( "Warning at line %d: field redefinition ignored\n", ec_curline() ); /* redefinition of inherited field */ }
-      ;
-SPECIF: NAME             { $$ = mktlist ( $1, 0 ); /* inherited field specification */ } 
-      | NAME '.' SPECIF  { $$ = mktlist ( $1, $3 ); }
-      ;
-
-OPTNL : /* empty */      { $$ = 0; }
-      | KOPT             { $$ = 1; }
-      ;
-
-UNIQIT: NAME ':' TLIST ';'  { $$ = $3;   /* UNIQUE statement */ }
-      | NAME ':' SPCLST ';' { $$ = NULL; /* UNIQUE statement */ }
-      ;
-UNIQLS: UNIQIT           { $$ = NULL;    /* list of 1 UNIQUE statements */ }
-      | UNIQIT UNIQLS    { $$ = mktlists ( $1, $2 );/* list of UNIQUE statements */ }
-      ;
-UNIQUE: /* empty */      { $$ = NULL;    /* no UNIQUE clause in ENTITY */ }
-      | KUNIQ UNIQLS     { $$ = $2;      /* UNIQUE clause in ENTITY */ }
-      ;
-SPCLST: KSELF '\\' SPECIF      { $$ = 0; /* list of specifications */ }
-      | KSELF '\\' SPECIF ',' SPCLST { $$ = 0; }
-      | NAME ',' SPCLST        { $$ = 0; }
-      ;
-
-%%
-
-/************************************************/
-/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
-
-static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist )
-{
-  Express_Schema *sch = new Express_Schema ( name, ilist );
-  Express::Schema() = sch;
-  return sch;
-}
-
-static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq )
-{
-  if ( ! seq ) { 
-    seq = new Express_HSequenceOfItem;
-    seq->Append ( item );
-  }
-  else seq->Prepend ( item );
-  return seq;
-}
-
-static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  return new Express_Enum ( name, tlist );
-}
-
-static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  return new Express_Select ( name, tlist );
-}
-
-static Express_Item *mkalias ( char *name, Express_Type *type )
-{
-  return new Express_Alias ( name, type );
-}
-
-static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
-                                Express_HSequenceOfField *field, int isabstract )
-{
-  Express_Entity *ent = new Express_Entity ( name, inherit, field );
-  if ( isabstract ) ent->SetAbstractFlag ( Standard_True );
-  return ent;
-}
-
-static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items)
-{
-  return new Express_Reference ( name, items );
-}
-
-static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
-{
-  Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString ( name );
-  if ( tlist ) tlist->Prepend ( str );
-  else {
-    tlist = new TColStd_HSequenceOfHAsciiString;
-    tlist->Append ( str );
-  }
-  return tlist;
-}
-
-static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, 
-                                                  TColStd_HSequenceOfHAsciiString *tlist2 )
-{
-  if ( ! tlist1 ) return tlist2;
-  if ( ! tlist2 ) return tlist1;
-  for ( int i=1; i <= tlist2->Length(); i++ )
-    tlist1->Append ( tlist2->Value(i) );
-  return tlist1;
-}
-
-static Express_Type *mktstd ( int keyword )
-{
-  switch ( keyword ) {
-  case KINT : return new Express_Integer;
-  case KNUM : return new Express_Number;
-  case KDBL : return new Express_Real;
-  case KSTR : return new Express_String;
-  case KBOOL: return new Express_Boolean;
-  case KLOG : return new Express_Logical;
-  default   : ec_error ( "Predefined type not treated!", "" );
-              return NULL;
-  }
-}
-
-static Express_Type *mktname ( char *name )
-{
-  return new Express_NamedType ( name );
-}
-
-static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of )
-{
-  switch ( keyword ) {
-  case KLIST: return new Express_List  ( ilow, ihigh, of );
-  case KARR : return new Express_Array ( ilow, ihigh, of );
-  case KBAG : return new Express_Bag   ( ilow, ihigh, of );
-  case KSET : return new Express_Set   ( ilow, ihigh, of );
-  default   : ec_error ( "Complex type not treated!", "" );
-              return NULL;
-  }
-}
-
-static Express_Field *mkfield ( char *name, Express_Type *type, int optional )
-{
-  return new Express_Field ( name, type, optional );
-}
-
-static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq )
-{
-  if ( seq ) seq->Prepend ( field );
-  else {
-    seq = new Express_HSequenceOfField;
-    seq->Append ( field );
-  }
-  return seq;
-}
-
-/*******************************************************************/
-/* External interface to result of parsing */
-
-Handle(Express_Schema) ec_parse ( FILE *fin )
-{
-  extern FILE *yyin;
-  yyin = fin;
-  yyparse();
-  return Express::Schema();
-}
-
-/*******************************************************************/
-/* MAIN & co */
-
-/*
-void tlistfree ( struct tlist *list )
-{
-  if ( ! list ) return;
-  tlistfree ( list->next );
-  list->next = 0;
-  free ( list->str );
-  list->str = 0;
-}
-* /
-
-int printtlist ( struct ec_tlist *tl )
-{
-  int num=0;
-  while ( tl ) {
-    num++;
-    printf ( "%s\n", tl->name );
-    tl = tl->next;
-  }
-  return num;
-}
-
-int main ( void )
-{
-  int num = 0;
-  yyparse();
-
-  printf ( "\nFinished\n" );
-  if ( schema ) {
-    struct ec_item *it;
-    it = schema->items;
-    printf ( "\nSchema %s", schema->name );
-    printf ( "\nItems:" );
-    while ( it ) {
-      num++;
-      printf ( "\n%s", it->name );
-      it = it->next;
-    }
-//    num = printtlist ( res );
-    printf ( "\nTotal %d", num );
-  }
-
-/*  tlistfree ( yylval.tlist ); * /
-  return num;
-}
-*/
diff --git a/src/ExpToCasExe/exptocas.yacc b/src/ExpToCasExe/exptocas.yacc
new file mode 100644 (file)
index 0000000..2d69ec3
--- /dev/null
@@ -0,0 +1,501 @@
+%{
+
+/* Created:    Thu Oct 28 12:21:16 1999
+/* Author:     Andrey BETENEV
+/* Copyright (c) 1999-2020 OPEN CASCADE SAS
+/*
+/* This file is part of Open CASCADE Technology software library.
+/*
+/* This library is free software; you can redistribute it and/or modify it under
+/* the terms of the GNU Lesser General Public License version 2.1 as published
+/* by the Free Software Foundation, with special exception defined in the file
+/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+/* distribution for complete text of the license and disclaimer of any warranty.
+/*
+/* Alternatively, this file may be used under the terms of Open CASCADE
+/* commercial license or contractual agreement.
+
+/*****************************************************************************\
+
+This YACC parser implements parsing algorithm for EXPRESS -> CASCADE/XSTEP
+classes generator
+
+Input in the form of tokens is obtained from lexical analyser. Then, data 
+structure representing schema is created on the basis of grammar analysis.
+
+NOTE: The grammar currently implemented is not full. 
+FUNCTION, RULE and CONSTANT items, WHERE, INVERSE and DERIVE clauses 
+of TYPE and ENTITY items are not considered (ignored on the level of lexical 
+scanner). 
+SUPERTYPE and UNIQUE clauses of ENTITY item are recognized but ignored.
+Also, complex constructs such as using call to function in dimensions of 
+complex time or redefinition of inherited field are ignored.
+
+\*****************************************************************************/
+
+#include <OSD_OpenFile.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TColStd_HSequenceOfHAsciiString.hxx>
+#include <Express_HSequenceOfField.hxx>
+#include <Express_HSequenceOfItem.hxx>
+#include <Express_Field.hxx>
+#include <Express_Item.hxx>
+#include <Express_Enum.hxx>
+#include <Express_Alias.hxx>
+#include <Express_Select.hxx>
+#include <Express_Entity.hxx>
+#include <Express_Type.hxx>
+#include <Express_NamedType.hxx>
+#include <Express_PredefinedType.hxx>
+#include <Express_Number.hxx>
+#include <Express_Integer.hxx>
+#include <Express_Boolean.hxx>
+#include <Express_Logical.hxx>
+#include <Express_Real.hxx>
+#include <Express_String.hxx>
+#include <Express_ComplexType.hxx>
+#include <Express_Array.hxx>
+#include <Express_List.hxx>
+#include <Express_Set.hxx>
+#include <Express_Bag.hxx>
+#include <Express_Schema.hxx>
+#include <Express_Reference.hxx>
+#include <Express.hxx>
+
+/************************************************/
+/* ERROR MESSAGE FUNCTION                       */
+
+/* external functions (from exptocas.l) */
+int ec_error ( char *s, char *text );
+int ec_curline ( void );
+
+//int yyerror ( char *s )
+//{
+//  printf ( "\nParse error at line %d: %s\n", ec_curline(), s );
+//  return 0;
+//}
+
+/************************************************/
+/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
+
+static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist );
+static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq );
+static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static Express_Item *mkalias ( char *name, Express_Type *type );
+static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
+                                Express_HSequenceOfField *field, int isabstract );
+static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items);
+static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist );
+static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, TColStd_HSequenceOfHAsciiString *tlist2 );
+static Express_Type *mktstd ( int keyword );
+static Express_Type *mktname ( char *name );
+static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of );
+static Express_Field *mkfield ( char *name, Express_Type *type, int optional );
+static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq );
+
+%}
+
+%language "C++"
+
+%debug
+%require "3.2"
+
+%parse-param  {exptocas::scanner* scanner}
+
+%code requires {
+namespace exptocas {
+  class scanner;
+};
+}
+
+%code provides {
+#if !defined(yyFlexLexer) && !defined(FlexLexerOnce)
+#define yyFlexLexer exptocasFlexLexer
+#include "FlexLexer.h"
+#endif
+namespace exptocas {
+    // To feed data back to bison, the yylex method needs yylval and
+    // yylloc parameters. Since the exptocasFlexLexer class is defined in the
+    // system header <FlexLexer.h> the signature of its yylex() method
+    // can not be changed anymore. This makes it necessary to derive a
+    // scanner class that provides a method with the desired signature:
+    class scanner : public exptocasFlexLexer
+    {
+    public:
+      explicit scanner(std::istream* in = 0, std::ostream* out = 0);
+
+      int lex(exptocas::parser::semantic_type* yylval);
+    };
+};
+}
+
+%code {
+#undef yylex
+#define yylex scanner->lex
+}
+
+/* Definition of possible types of expressions */
+%union {
+  int num;
+  char *str;
+  TColStd_HSequenceOfHAsciiString *tlist;
+  Express_HSequenceOfField *flist;
+  Express_HSequenceOfItem *ilist;
+  Express_Field *field;
+  Express_Item *item;
+  Express_Type *type;
+  Express_Schema *schema;
+  Express_Reference *ref;
+}
+
+/* Definition of keywords */
+
+%token <num> KSCHEM  /* SCHEMA keyword */
+%token <num> KENDS   /* END_SCHEMA keyword */
+%token <num> KTYP    /* TYPE keyword */
+%token <num> KENDT   /* END_TYPE keyword */
+%token <num> KENT    /* ENTITY keyword */
+%token <num> KENDE   /* END_ENTITY keyword */
+%token <num> KREF    /* REFERENCE keyword */
+%token <num> KFROM   /* FROM keyword */
+
+%token <num> KSEL    /* SELECT keyword */
+%token <num> KENUM   /* ENUMERATION keyword */
+%token <num> KLIST   /* LIST keyword */
+%token <num> KARR    /* ARRAY keyword */
+%token <num> KBAG    /* BAG keyword */
+%token <num> KSET    /* SET keyword */
+%token <num> KOF     /* OF keyword */
+
+%token <num> KNUM    /* NUMBER keyword */
+%token <num> KINT    /* INTEGER keyword */
+%token <num> KDBL    /* REAL keyword */
+%token <num> KSTR    /* STRING keyword */
+%token <num> KLOG    /* LOGICAL keyword */
+%token <num> KBOOL   /* BOOLEAN keyword */
+
+%token <num> KOPT    /* OPTIONAL keyword */
+%token <num> KUNIQ   /* UNIQUE keyword */
+%token <num> KSELF   /* SELF keyword */
+
+%token <num> KABSTR  /* ABSTRACT keyword */
+%token <num> KSUBT   /* SUBTYPE keyword */
+%token <num> KSPRT   /* SUPERTYPE keyword */
+%left  <num> KANDOR  /* ANDOR keyword (%left is for eliminating shift/reduce conflict on SUPLST) */
+%left  <num> K1OF    /* ONEOF keyword */
+%token <num> KAND    /* AND keyword */
+
+%token <num> NUMBER  /* integer value */
+%token <str> NAME    /* name of type or entity */
+
+%left ','            /* to eliminate shift/reduce conflict in SUPERTYPE */
+
+  /* Definition of expressions and their types */
+
+%type <num>    INDEX OPTNL OPTUNI SUPERT SUPLST REDEF SPCLST
+%type <tlist>  TLIST TLIST1 UNIQIT UNIQLS UNIQUE SUBT SPECIF
+%type <type>   TYPE TSTD TNAME TSET 
+%type <item>   ENUM SELECT ALIAS ENTITY ITEM
+%type <ilist>  ILIST
+%type <field>  FIELD
+%type <flist>  FLIST FLIST1
+%type <schema> SCHEMA
+%type <ref>    REFERENCE
+
+%%
+
+  /************************************************/
+  /*  Definition of parsing rules (expressions)   */
+  /************************************************/
+
+SCHEMA: KSCHEM NAME ';' ILIST KENDS ';' { $$ = mkschema ( $2, $4 ); /* Root: EXPRESS schema */ }
+      ;
+ILIST : ITEM             { $$ = mkilist ( $1, 0 ); /* list of items for schema */ }
+      | ITEM ILIST       { $$ = mkilist ( $1, $2 ); }
+      ;
+
+ITEM  : ENUM
+      | SELECT
+      | ALIAS
+      | ENTITY           { $$ = $1; /* item of schema (type definition) */ }
+ENUM  : KTYP NAME '=' KENUM KOF TLIST1 ';' KENDT ';' { $$ = mkenum ( $2, $6 ); /* TYPE ENUMERATION definition */ }
+      ;
+SELECT: KTYP NAME '=' KSEL TLIST1 ';' KENDT ';' { $$ = mkselect ( $2, $5 ); /* TYPE SELECT definition */ }
+      ;
+ALIAS : KTYP NAME '=' TYPE ';' KENDT ';' { $$ = mkalias ( $2, $4 ); /* TYPE '=' definition (alias) */ }
+      ;
+ENTITY: KENT NAME        SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';' { $$ = mkentity ( $2, $4, $6, 0 ); /* ENTITY definition */ }
+      | KENT NAME KABSTR SUPERT SUBT ';' FLIST1 UNIQUE KENDE ';' { $$ = mkentity ( $2, $5, $7, 1 ); /* ENTITY definition */ }
+      ;
+
+REFERENCE: KREF KFROM NAME TLIST1 ';' { $$ = mkrefs ( $3, $4 ); /* REFERENCE FROM definition */ }
+
+TLIST : NAME             { $$ = mktlist ( $1, 0 ); /* list of (type) names */ }
+      | NAME ',' TLIST   { $$ = mktlist ( $1, $3 ); }
+      ;
+TLIST1: '(' TLIST ')'    { $$ = $2; /* TLIST in brackets */ }
+      ;
+
+TYPE  : TSTD
+      | TNAME
+      | TSET             { $$ = $1; /* type, simple or complex */ }
+      ;
+TSTD  : KINT             { $$ = mktstd ( $1 ); /* predefined type: INTEGER */ }
+      | KNUM             { $$ = mktstd ( $1 ); /* predefined type: NUMBER */ }
+      | KDBL             { $$ = mktstd ( $1 ); /* predefined type: REAL */ }
+      | KSTR             { $$ = mktstd ( $1 ); /* predefined type: STRING */ }
+      | KLOG             { $$ = mktstd ( $1 ); /* predefined type: LOGICAL */ }
+      | KBOOL            { $$ = mktstd ( $1 ); /* predefined type: BOOLEAN */ }
+      ;                  
+TNAME : NAME             { $$ = mktname ( $1 ); /* named type */ }
+      ;
+TSET  : KLIST '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: LIST */ }
+      | KARR  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: ARRAY */ }
+      | KSET  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: SET */ }
+      | KBAG  '[' INDEX ':' INDEX ']' KOF OPTUNI TYPE { $$ = mktset ( $1, $3, $5, $9 ); /* complex type: BAG */ }
+      ;
+INDEX : NUMBER           { $$ = $1; /* index for array, set, bag, list range */ }
+      | '?'              { $$ = -1; /* undefined */ }
+      | NAME '(' NAME ')' {$$ = -1; printf ( "Warning at line %d: index function %s(%s) ignored\n", ec_curline(), $1, $3 ); /* some function.. */ }
+      ;
+OPTUNI: /* empty */      { $$ = 0; /* UNIQUE keyword for complex type definition */ }
+      | KUNIQ            { $$ = 1; }
+      ;
+
+SUBT  : /* empty */      { $$ = NULL; /* no subtype clause */ }
+      | KSUBT KOF TLIST1 { $$ = $3;   /* subtype clause */ }
+      ;
+SUPERT: /* empty */      { $$ = 0;  /* no supertype clause */ }
+      | KSPRT            { $$ = 0;  /* supertype clause (ignored) */ }
+      | KSPRT KOF SUPLST { $$ = 0;  /* supertype clause (ignored) */ }
+      ;
+SUPLST: NAME             { $$ = 0; /* simple list of supertypes */ }
+      | '(' SUPLST ')'   { $$ = 0; /* allow bracketing */ }
+      | NAME ',' SUPLST  { $$ = 0; /* ... */ }
+      | K1OF SUPLST      { $$ = 0; /* ONEOF construct */ }
+      | SUPLST KANDOR SUPLST { $$ = 0; /* ANDOR construct */ }
+      ;
+
+FLIST : FIELD            { $$ = mkflist ( $1, 0 ); /* list of fields of ENTITY item */ }
+      | FIELD FLIST      { $$ = mkflist ( $1, $2 ); }
+      | REDEF            { $$ = 0;  /* redefinition of inherited field, just skip */ }
+      | REDEF FLIST      { $$ = $2; /* ignore redefinition of inherited field, take trailing list */ }
+      ;
+FLIST1: /* empty */      { $$ = NULL; /* empty list of fields */ }
+      | FLIST            { $$ = $1;   /* or not empty.. just to fix reduce/reduce conflict */ }
+      ;
+FIELD : NAME ':' OPTNL TYPE ';' { $$ = mkfield ( $1, $4, $3 ); }
+      ;
+REDEF : KSELF '\\' SPECIF ':' TYPE ';' { $$ = NULL; printf ( "Warning at line %d: field redefinition ignored\n", ec_curline() ); /* redefinition of inherited field */ }
+      ;
+SPECIF: NAME             { $$ = mktlist ( $1, 0 ); /* inherited field specification */ } 
+      | NAME '.' SPECIF  { $$ = mktlist ( $1, $3 ); }
+      ;
+
+OPTNL : /* empty */      { $$ = 0; }
+      | KOPT             { $$ = 1; }
+      ;
+
+UNIQIT: NAME ':' TLIST ';'  { $$ = $3;   /* UNIQUE statement */ }
+      | NAME ':' SPCLST ';' { $$ = NULL; /* UNIQUE statement */ }
+      ;
+UNIQLS: UNIQIT           { $$ = NULL;    /* list of 1 UNIQUE statements */ }
+      | UNIQIT UNIQLS    { $$ = mktlists ( $1, $2 );/* list of UNIQUE statements */ }
+      ;
+UNIQUE: /* empty */      { $$ = NULL;    /* no UNIQUE clause in ENTITY */ }
+      | KUNIQ UNIQLS     { $$ = $2;      /* UNIQUE clause in ENTITY */ }
+      ;
+SPCLST: KSELF '\\' SPECIF      { $$ = 0; /* list of specifications */ }
+      | KSELF '\\' SPECIF ',' SPCLST { $$ = 0; }
+      | NAME ',' SPCLST        { $$ = 0; }
+      ;
+
+%%
+
+/************************************************/
+/* FUNCTIONS FOR CREATING SCHEMA REPRESENTATION */
+
+static Express_Schema *mkschema ( char *name, Express_HSequenceOfItem *ilist )
+{
+  Express_Schema *sch = new Express_Schema ( name, ilist );
+  Express::Schema() = sch;
+  return sch;
+}
+
+static Express_HSequenceOfItem *mkilist ( Express_Item *item, Express_HSequenceOfItem *seq )
+{
+  if ( ! seq ) { 
+    seq = new Express_HSequenceOfItem;
+    seq->Append ( item );
+  }
+  else seq->Prepend ( item );
+  return seq;
+}
+
+static Express_Item *mkenum ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  return new Express_Enum ( name, tlist );
+}
+
+static Express_Item *mkselect ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  return new Express_Select ( name, tlist );
+}
+
+static Express_Item *mkalias ( char *name, Express_Type *type )
+{
+  return new Express_Alias ( name, type );
+}
+
+static Express_Item *mkentity ( char *name, TColStd_HSequenceOfHAsciiString *inherit,
+                                Express_HSequenceOfField *field, int isabstract )
+{
+  Express_Entity *ent = new Express_Entity ( name, inherit, field );
+  if ( isabstract ) ent->SetAbstractFlag ( Standard_True );
+  return ent;
+}
+
+static Express_Reference *mkrefs ( char *name, TColStd_HSequenceOfHAsciiString *items)
+{
+  return new Express_Reference ( name, items );
+}
+
+static TColStd_HSequenceOfHAsciiString *mktlist ( char *name, TColStd_HSequenceOfHAsciiString *tlist )
+{
+  Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString ( name );
+  if ( tlist ) tlist->Prepend ( str );
+  else {
+    tlist = new TColStd_HSequenceOfHAsciiString;
+    tlist->Append ( str );
+  }
+  return tlist;
+}
+
+static TColStd_HSequenceOfHAsciiString *mktlists ( TColStd_HSequenceOfHAsciiString *tlist1, 
+                                                  TColStd_HSequenceOfHAsciiString *tlist2 )
+{
+  if ( ! tlist1 ) return tlist2;
+  if ( ! tlist2 ) return tlist1;
+  for ( int i=1; i <= tlist2->Length(); i++ )
+    tlist1->Append ( tlist2->Value(i) );
+  return tlist1;
+}
+
+static Express_Type *mktstd ( int keyword )
+{
+  switch ( keyword ) {
+  case exptocas::parser::token::KINT : return new Express_Integer;
+  case exptocas::parser::token::KNUM : return new Express_Number;
+  case exptocas::parser::token::KDBL : return new Express_Real;
+  case exptocas::parser::token::KSTR : return new Express_String;
+  case exptocas::parser::token::KBOOL: return new Express_Boolean;
+  case exptocas::parser::token::KLOG : return new Express_Logical;
+  default   : ec_error ( "Predefined type not treated!", "" );
+              return NULL;
+  }
+}
+
+static Express_Type *mktname ( char *name )
+{
+  return new Express_NamedType ( name );
+}
+
+static Express_Type *mktset ( int keyword, int ilow, int ihigh, Express_Type *of )
+{
+  switch ( keyword ) {
+  case exptocas::parser::token::KLIST: return new Express_List  ( ilow, ihigh, of );
+  case exptocas::parser::token::KARR : return new Express_Array ( ilow, ihigh, of );
+  case exptocas::parser::token::KBAG : return new Express_Bag   ( ilow, ihigh, of );
+  case exptocas::parser::token::KSET : return new Express_Set   ( ilow, ihigh, of );
+  default   : ec_error ( "Complex type not treated!", "" );
+              return NULL;
+  }
+}
+
+static Express_Field *mkfield ( char *name, Express_Type *type, int optional )
+{
+  return new Express_Field ( name, type, optional );
+}
+
+static Express_HSequenceOfField *mkflist ( Express_Field *field, Express_HSequenceOfField *seq )
+{
+  if ( seq ) seq->Prepend ( field );
+  else {
+    seq = new Express_HSequenceOfField;
+    seq->Append ( field );
+  }
+  return seq;
+}
+
+/*******************************************************************/
+/* External interface to result of parsing */
+
+Handle(Express_Schema) ec_parse(const char* theFileName)
+{
+  std::ifstream aFileStream;
+  OSD_OpenStream(aFileStream, theFileName, std::ios_base::in | std::ios_base::binary);
+  exptocas::scanner aScanner(&aFileStream);
+  aScanner.yyrestart(aFileStream);
+  // uncomment next string for debug of parser
+  //aScanner.set_debug(1);
+  exptocas::parser aParser(&aScanner);
+  aParser.parse();
+  return Express::Schema();
+}
+
+/*******************************************************************/
+/* MAIN & co */
+
+/*
+void tlistfree ( struct tlist *list )
+{
+  if ( ! list ) return;
+  tlistfree ( list->next );
+  list->next = 0;
+  free ( list->str );
+  list->str = 0;
+}
+* /
+
+int printtlist ( struct ec_tlist *tl )
+{
+  int num=0;
+  while ( tl ) {
+    num++;
+    printf ( "%s\n", tl->name );
+    tl = tl->next;
+  }
+  return num;
+}
+
+int main ( void )
+{
+  int num = 0;
+  yyparse();
+
+  printf ( "\nFinished\n" );
+  if ( schema ) {
+    struct ec_item *it;
+    it = schema->items;
+    printf ( "\nSchema %s", schema->name );
+    printf ( "\nItems:" );
+    while ( it ) {
+      num++;
+      printf ( "\n%s", it->name );
+      it = it->next;
+    }
+//    num = printtlist ( res );
+    printf ( "\nTotal %d", num );
+  }
+
+/*  tlistfree ( yylval.tlist ); * /
+  return num;
+}
+*/
+
+void exptocas::parser::error(const std::string& s)
+{
+  printf("\nParse error at line %d: %s\n", scanner->lineno(), s.c_str());
+}
+
diff --git a/src/ExpToCasExe/lex.exptocas.cxx b/src/ExpToCasExe/lex.exptocas.cxx
new file mode 100644 (file)
index 0000000..3341ba6
--- /dev/null
@@ -0,0 +1,2416 @@
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+/* %not-for-header */
+/* %if-c-only */
+/* %if-not-reentrant */
+/* %endif */
+/* %endif */
+/* %ok-for-header */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* %if-c++-only */
+    /* The c++ scanner is a mess. The FlexLexer.h header file relies on the
+     * following macro. This is required in order to pass the c++-multiple-scanners
+     * test in the regression suite. We get reports that it breaks inheritance.
+     * We will address this in a future release of flex, or omit the C++ scanner
+     * altogether.
+     */
+    #define yyFlexLexer exptocasFlexLexer
+/* %endif */
+
+/* %if-c-only */
+/* %endif */
+
+#ifdef yyalloc
+#define exptocasalloc_ALREADY_DEFINED
+#else
+#define yyalloc exptocasalloc
+#endif
+
+#ifdef yyrealloc
+#define exptocasrealloc_ALREADY_DEFINED
+#else
+#define yyrealloc exptocasrealloc
+#endif
+
+#ifdef yyfree
+#define exptocasfree_ALREADY_DEFINED
+#else
+#define yyfree exptocasfree
+#endif
+
+/* %if-c-only */
+/* %endif */
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+/* %if-c-only */
+/* %endif */
+
+/* %if-tables-serialization */
+/* %endif */
+/* end standard C headers. */
+
+/* %if-c-or-c++ */
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX               (~(size_t)0)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* %endif */
+
+/* begin standard C++ headers. */
+/* %if-c++-only */
+#include <iostream>
+#include <errno.h>
+#include <cstdlib>
+#include <cstdio>
+#include <cstring>
+/* end standard C++ headers. */
+/* %endif */
+
+/* TODO: this is always defined, so inline it */
+#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
+#else
+#define yynoreturn
+#endif
+
+/* %not-for-header */
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+/* %ok-for-header */
+
+/* %not-for-header */
+/* Promotes a possibly negative, possibly signed char to an
+ *   integer in range [0..255] for use as an array index.
+ */
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+/* %ok-for-header */
+
+/* %if-reentrant */
+/* %endif */
+
+/* %if-not-reentrant */
+
+/* %endif */
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin  )
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+/* %if-not-reentrant */
+extern int yyleng;
+/* %endif */
+
+/* %if-c-only */
+/* %if-not-reentrant */
+/* %endif */
+/* %endif */
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+    
+    #define YY_LESS_LINENO(n)
+    #define YY_LINENO_REWIND_TO(ptr)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               *yy_cp = (yy_hold_char); \
+               YY_RESTORE_YY_MORE_OFFSET \
+               (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+       {
+/* %if-c-only */
+/* %endif */
+
+/* %if-c++-only */
+       std::streambuf* yy_input_file;
+/* %endif */
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       int yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+
+       };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* %if-c-only Standard (non-C++) definition */
+/* %not-for-header */
+/* %if-not-reentrant */
+/* %endif */
+/* %ok-for-header */
+
+/* %endif */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* %if-c-only Standard (non-C++) definition */
+/* %if-not-reentrant */
+/* %not-for-header */
+/* %ok-for-header */
+
+/* %endif */
+/* %endif */
+
+void *yyalloc ( yy_size_t  );
+void *yyrealloc ( void *, yy_size_t  );
+void yyfree ( void *  );
+
+#define yy_new_buffer yy_create_buffer
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){ \
+        yyensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+       }
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){\
+        yyensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+       }
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
+/* Begin user sect3 */
+#define YY_SKIP_YYWRAP
+
+#define FLEX_DEBUG
+typedef flex_uint8_t YY_CHAR;
+
+#define yytext_ptr yytext
+#define YY_INTERACTIVE
+
+#include <FlexLexer.h>
+
+int yyFlexLexer::yywrap() { return 1; }
+int yyFlexLexer::yylex()
+       {
+       LexerError( "yyFlexLexer::yylex invoked but %option yyclass used" );
+       return 0;
+       }
+
+#define YY_DECL int exptocas::scanner::yylex()
+
+/* %% [1.5] DFA */
+
+/* %if-c-only Standard (non-C++) definition */
+/* %endif */
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       (yytext_ptr) = yy_bp; \
+/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
+       yyleng = (int) (yy_cp - yy_bp); \
+       (yy_hold_char) = *yy_cp; \
+       *yy_cp = '\0'; \
+/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
+       (yy_c_buf_p) = yy_cp;
+/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
+#define YY_NUM_RULES 56
+#define YY_END_OF_BUFFER 57
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+       {
+       flex_int32_t yy_verify;
+       flex_int32_t yy_nxt;
+       };
+static const flex_int16_t yy_accept[306] =
+    {   0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   44,   44,   57,   54,   52,   55,   40,   40,
+       54,   39,   53,   53,   53,   53,   53,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   38,   53,   53,   53,
+       53,   53,    3,    3,   14,   14,   49,   49,   46,   46,
+       46,   46,   44,   44,   44,   52,    2,    1,   39,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       53,   53,   21,   53,   53,   53,   53,   53,   53,   53,
+       53,   53,   53,   53,   38,   53,   53,   53,   53,   53,
+        4,    0,    0,    0,   45,   42,   43,   44,   44,   44,
+
+        1,   53,   36,   53,   20,   53,   53,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       53,   19,   53,   53,   53,   53,   53,   37,   53,   53,
+       53,   53,   53,    0,    0,   43,   44,   44,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   17,   53,
+       53,   53,   53,   24,   48,   53,   53,   30,   53,   53,
+       53,    7,   53,   53,   53,   53,   53,   53,    0,    0,
+       44,   44,   53,   34,   18,   53,   53,   53,   53,   53,
+       53,   53,   53,   53,   35,   53,   53,   53,   53,   53,
+       53,   53,   53,   13,   53,   53,   53,    0,    0,    0,
+
+       44,   44,   53,   53,   53,   53,    9,   53,   53,   53,
+       53,   22,   53,    5,   15,   25,   53,   53,   29,   53,
+       12,   53,   53,    0,    0,    0,   44,   44,   53,   27,
+       53,   53,   53,   53,   23,   26,   53,   32,   53,   53,
+       53,   11,    0,    0,    0,   44,   44,   31,   53,   53,
+       53,   41,   28,   53,    8,   53,    0,    8,    0,   44,
+       41,    0,   53,   53,   53,   33,   53,    0,   50,   44,
+        0,   53,    6,   53,   10,   10,   44,    0,   53,   16,
+       44,    0,   53,   44,    0,   53,   47,    0,   53,    0,
+       53,    0,   53,    0,   53,    0,   53,    0,   53,    0,
+
+       53,    0,   53,   51,    0
+    } ;
+
+static const YY_CHAR yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    1,    1,    1,    1,    1,    4,    5,
+        6,    7,    1,    8,    9,    8,    1,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   11,   12,    1,
+       11,    1,    8,    1,   13,   14,   15,   16,   17,   18,
+       19,   20,   21,   22,   22,   23,   24,   25,   26,   27,
+       28,   29,   30,   31,   32,   33,   34,   22,   35,   22,
+       36,    8,   37,    1,   38,    1,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,    1,   40,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static const YY_CHAR yy_meta[41] =
+    {   0,
+        1,    2,    3,    2,    2,    2,    1,    1,    2,    4,
+        2,    2,    5,    5,    5,    5,    4,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    1,    1,    4,    4,    2
+    } ;
+
+static const flex_int16_t yy_base[316] =
+    {   0,
+        0,    0,   24,   26,   29,   35,   52,   54,   45,   51,
+       61,   62,   79,  119,  412,  413,  409,  413,  403,  413,
+      400,  398,   75,   79,  381,    0,  381,  373,  379,   45,
+      371,   49,   76,   86,  367,   48,   60,  376,  380,  382,
+      373,  372,  413,  390,  413,  370,  413,  369,  413,  389,
+      385,  382,    0,  365,  357,  386,  413,    0,  377,    0,
+      356,  369,  355,  364,  356,  356,   78,  355,  348,  348,
+      358,  352,    0,  358,  343,  360,  349,  351,   83,  341,
+      115,  342,  347,  357,  101,  116,  349,  336,  118,  102,
+      413,  348,  347,  358,  413,  413,    0,    0,  345,  335,
+
+        0,  328,  332,  344,    0,  333,  325,  316,  332,  328,
+      336,  333,  318,  327,  333,  320,  324,  321,  326,  325,
+       95,    0,  320,  309,  322,  321,  309,  326,  297,  305,
+      312,  294,  314,  292,  291,    0,  290,  312,  297,  296,
+      289,  306,  291,  291,  289,  302,  287,  298,    0,  301,
+      298,  296,  287,    0,    0,  288,  296,    0,  285,  274,
+      279,    0,  275,  113,  289,  272,  121,  275,  129,  274,
+      284,  270,  287,    0,    0,  286,  285,  282,  261,  266,
+      273,  276,  279,  262,    0,  265,  276,  257,  268,  259,
+      254,  267,  248,    0,  265,  256,  250,  254,  243,  245,
+
+      244,  254,  259,  248,  247,  251,    0,  257,  243,  239,
+      244,    0,  253,    0,    0,    0,  248,  229,    0,  236,
+        0,  231,  244,  229,  232,  235,  232,  230,  224,    0,
+      223,  236,  221,  226,    0,    0,  227,    0,  222,  231,
+      226,    0,  225,  228,  227,  228,  217,    0,  159,  212,
+      210,    0,    0,  179,    0,  164,  163,  413,  181,  161,
+        0,  174,  173,  176,  162,    0,  152,  151,  413,  164,
+      159,  158,    0,  157,    0,  413,  155,  164,  163,    0,
+      153,  139,  138,  163,  159,  158,  413,  146,  141,  141,
+      133,  127,  124,  122,  121,  132,  128,   82,   77,   64,
+
+       44,   60,   37,  413,  413,  199,  204,  209,  214,  216,
+      221,  223,  228,  233,  237
+    } ;
+
+static const flex_int16_t yy_def[316] =
+    {   0,
+      305,    1,    1,    1,    1,    1,  306,  306,  307,  307,
+      308,  308,  309,  309,  305,  305,  305,  305,  305,  305,
+      305,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  305,  305,  305,  305,  305,  305,  305,  311,
+      305,  305,  312,  312,  312,  305,  305,  313,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      305,  305,  305,  311,  305,  305,  314,  312,  312,  312,
+
+      313,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  305,  305,  314,  312,  312,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  305,  305,
+      312,  312,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  305,  305,  305,
+
+      312,  312,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  305,  305,  305,  312,  312,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  305,  305,  305,  312,  312,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  305,  305,  305,  312,
+      312,  315,  249,  310,  310,  310,  310,  305,  305,  312,
+      305,  310,  310,  310,  310,  305,  312,  305,  310,  310,
+      312,  305,  310,  312,  305,  310,  305,  305,  310,  305,
+      310,  305,  310,  305,  310,  305,  310,  305,  310,  305,
+
+      310,  305,  310,  305,    0,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305
+    } ;
+
+static const flex_int16_t yy_nxt[454] =
+    {   0,
+       16,   17,   18,   16,   19,   20,   16,   20,   21,   22,
+       20,   20,   23,   24,   25,   26,   27,   28,   26,   26,
+       29,   26,   30,   26,   31,   32,   26,   26,   33,   34,
+       35,   36,   26,   26,   26,   20,   20,   37,   37,   16,
+       38,   26,   38,   26,   40,   41,   26,   18,  304,   42,
+       40,   41,   26,   18,   18,   42,   18,   39,   44,   39,
+       44,   46,   39,   18,   18,   70,   73,   46,   39,   85,
+       71,  304,   83,   74,  303,   75,   84,   48,   48,   49,
+       49,   18,   50,   51,   49,   49,   49,   52,   61,   49,
+       49,   64,   76,  108,  302,   54,   55,   85,   85,   62,
+
+       78,  301,   79,   63,   65,  121,  300,   77,  109,  110,
+       85,  157,  158,  122,   49,   49,   80,   81,   49,   49,
+       49,   18,   50,   51,   49,   49,   49,   52,  124,   49,
+       49,  129,  112,  132,  133,   54,   55,  196,   85,   85,
+      299,  125,  178,  193,  298,  198,  109,  110,  109,  110,
+      178,  297,  296,  295,   49,   49,  294,  293,   49,  199,
+      262,  262,  262,  262,  262,  292,  291,  262,  263,  262,
+      262,  290,  289,  288,  287,  286,  285,  284,  283,  282,
+      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  269,  268,  267,  266,  263,  263,  262,   43,
+
+       43,   43,   43,   43,   45,   45,   45,   45,   45,   47,
+       47,   47,   47,   47,   53,   53,   53,   53,   53,   60,
+       60,   94,   94,   94,   94,   94,   98,   98,  101,  101,
+      265,  101,  101,  136,  136,  264,  136,  136,  262,  262,
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
+      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
+      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
+      222,  221,  220,  219,  218,  217,  216,  215,  214,  213,
+      212,  211,  210,  209,  208,  207,  206,  205,  204,  203,
+
+      202,  201,  200,  197,  195,  194,  192,  191,  190,  189,
+      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
+      178,  177,  176,  175,  174,  173,  172,  171,  170,  169,
+      168,  167,  166,  165,  164,  128,  163,  162,  161,  160,
+      159,  156,  155,  154,  153,  152,  151,  150,  149,  148,
+      147,  146,  145,  144,  143,  142,  141,  140,  139,  138,
+      137,   95,  135,  134,  131,  130,  128,  127,  126,  123,
+      120,  119,  118,  117,  116,  115,  114,  113,  112,  111,
+      107,  106,  105,  104,  103,  102,   59,   56,  100,   99,
+       97,   96,   95,   93,   92,   91,   90,   89,   88,   87,
+
+       86,   82,   72,   69,   68,   67,   66,   59,   58,   57,
+       56,  305,   15,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305
+    } ;
+
+static const flex_int16_t yy_chk[454] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        3,    3,    4,    4,    5,    5,    5,    9,  303,    5,
+        6,    6,    6,   10,    7,    6,    8,    3,    7,    4,
+        8,    9,    5,   11,   12,   30,   32,   10,    6,   37,
+       30,  302,   36,   32,  301,   32,   36,   11,   12,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   23,   13,
+       13,   24,   33,   67,  300,   13,   13,   37,   37,   23,
+
+       34,  299,   34,   23,   24,   79,  298,   33,   67,   67,
+       85,  121,  121,   79,   13,   13,   34,   34,   13,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   81,   14,
+       14,   86,   90,   89,   90,   14,   14,  167,   85,   85,
+      297,   81,  164,  164,  296,  169,   86,   86,   89,   89,
+      167,  295,  294,  293,   14,   14,  292,  291,   14,  169,
+      249,  249,  249,  249,  249,  290,  289,  249,  249,  249,
+      249,  288,  286,  285,  284,  283,  282,  281,  279,  278,
+      277,  274,  272,  271,  270,  268,  267,  265,  264,  263,
+      262,  260,  259,  257,  256,  254,  249,  249,  249,  306,
+
+      306,  306,  306,  306,  307,  307,  307,  307,  307,  308,
+      308,  308,  308,  308,  309,  309,  309,  309,  309,  310,
+      310,  311,  311,  311,  311,  311,  312,  312,  313,  313,
+      251,  313,  313,  314,  314,  250,  314,  314,  315,  315,
+      315,  247,  246,  245,  244,  243,  241,  240,  239,  237,
+      234,  233,  232,  231,  229,  228,  227,  226,  225,  224,
+      223,  222,  220,  218,  217,  213,  211,  210,  209,  208,
+      206,  205,  204,  203,  202,  201,  200,  199,  198,  197,
+      196,  195,  193,  192,  191,  190,  189,  188,  187,  186,
+      184,  183,  182,  181,  180,  179,  178,  177,  176,  173,
+
+      172,  171,  170,  168,  166,  165,  163,  161,  160,  159,
+      157,  156,  153,  152,  151,  150,  148,  147,  146,  145,
+      144,  143,  142,  141,  140,  139,  138,  137,  135,  134,
+      133,  132,  131,  130,  129,  128,  127,  126,  125,  124,
+      123,  120,  119,  118,  117,  116,  115,  114,  113,  112,
+      111,  110,  109,  108,  107,  106,  104,  103,  102,  100,
+       99,   94,   93,   92,   88,   87,   84,   83,   82,   80,
+       78,   77,   76,   75,   74,   72,   71,   70,   69,   68,
+       66,   65,   64,   63,   62,   61,   59,   56,   55,   54,
+       52,   51,   50,   48,   46,   44,   42,   41,   40,   39,
+
+       38,   35,   31,   29,   28,   27,   25,   22,   21,   19,
+       17,   15,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305
+    } ;
+
+static const flex_int16_t yy_rule_linenum[56] =
+    {   0,
+      104,  105,  106,  107,  109,  110,  112,  113,  115,  116,
+      118,  119,  120,  121,  123,  124,  125,  126,  127,  128,
+      129,  131,  132,  133,  134,  135,  136,  138,  139,  140,
+      142,  143,  144,  145,  146,  147,  149,  151,  153,  154,
+      156,  157,  158,  159,  160,  161,  162,  164,  165,  166,
+      168,  173,  174,  175,  177
+    } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+
+/* Created:    Thu Oct 28 12:21:16 1999
+/* Author:     Andrey BETENEV
+/* Copyright (c) 1999-2020 OPEN CASCADE SAS
+/*
+/* This file is part of Open CASCADE Technology software library.
+/*
+/* This library is free software; you can redistribute it and/or modify it under
+/* the terms of the GNU Lesser General Public License version 2.1 as published
+/* by the Free Software Foundation, with special exception defined in the file
+/* OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+/* distribution for complete text of the license and disclaimer of any warranty.
+/*
+/* Alternatively, this file may be used under the terms of Open CASCADE
+/* commercial license or contractual agreement.
+
+/*****************************************************************************\
+
+This LEX scanner is performs lexical analysis of EXPRESS schema file   
+for EXPRESS -> CASCADE/XSTEP classes generator                             
+
+On the stage of lexical scanner comments (single- and multi-line),         
+definitions of CONSTANT, FUNCTION, RULE items and clauses WHERE, INVERSE
+and DERIVE of TYPE amd ENTITY items are dismissed (ignored)         
+
+Then, keywords such as ENTITY, SUPERTYPE, SET etc., names of items         
+and special symbols are identified and returned to parser (yacc) as tokens 
+
+Also, error processing and current line number tracking functions are defined
+
+\*****************************************************************************/
+
+/************************************/
+/* Section 1                        */
+/* definitions                      */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <TColStd_HSequenceOfHAsciiString.hxx>
+#include <Express_HSequenceOfField.hxx>
+#include <Express_HSequenceOfItem.hxx>
+#include <Express_Field.hxx>
+#include <Express_Item.hxx>
+#include <Express_Type.hxx>
+#include <Express_Schema.hxx>
+#include <Express_Reference.hxx>
+
+#include "exptocas.tab.hxx"       /* define tokens */
+
+/* Auxiliary functions */
+
+static int fun_level=0;
+static int ec_linenum=1;
+static int ec_state = 0;
+
+int yywrap(void) { return 1; }
+
+int ec_curline ( void )
+{
+  return ec_linenum;
+}
+
+int ec_error ( char *s, char *text )
+{
+  printf ( "\nError at line %d: %s \"%s\"\n", ec_curline(), s, text );
+  return 0;
+}
+
+/*
+    c++                 generate C++ parser class
+*/
+
+// Tell flex which function to define
+#ifdef  YY_DECL
+# undef YY_DECL
+#endif
+#define YY_DECL int exptocas::scanner::lex (exptocas::parser::semantic_type* yylval)
+
+typedef exptocas::parser::token token;
+
+/************************************/
+/* Section 2                        */
+/* parsing rules                    */
+
+#define INITIAL 0
+#define TYP 1
+#define ENT 2
+#define COMM 3
+#define SKP 4
+#define RULE 5
+#define FUN 6
+
+/*windows compatibility case*/
+#include <io.h>
+#define isatty _isatty
+#define fileno _fileno
+    
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* %if-c-only Reentrant structure and macros (non-C++). */
+/* %if-reentrant */
+/* %if-c-only */
+/* %endif */
+/* %if-reentrant */
+/* %endif */
+/* %endif End reentrant structures and macros. */
+/* %if-bison-bridge */
+/* %endif */
+/* %not-for-header */
+/* %ok-for-header */
+
+/* %endif */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy ( char *, const char *, int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen ( const char * );
+#endif
+
+#ifndef YY_NO_INPUT
+/* %if-c-only Standard (non-C++) definition */
+/* %not-for-header */
+/* %ok-for-header */
+
+/* %endif */
+#endif
+
+/* %if-c-only */
+/* %endif */
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* %if-c-only Standard (non-C++) definition */
+/* %endif */
+/* %if-c++-only C++ definition */
+#define ECHO LexerOutput( yytext, yyleng )
+/* %endif */
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
+\
+/* %if-c++-only C++ definition \ */\
+       if ( (int)(result = LexerInput( (char *) buf, max_size )) < 0 ) \
+               YY_FATAL_ERROR( "input in flex scanner failed" );
+/* %endif */
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+#define YY_FATAL_ERROR(msg) LexerError( msg )
+/* %endif */
+#endif
+
+/* %if-tables-serialization structures and prototypes */
+/* %not-for-header */
+/* %ok-for-header */
+
+/* %not-for-header */
+/* %tables-yydmap generated elements */
+/* %endif */
+/* end tables serialization structures and prototypes */
+
+/* %ok-for-header */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+/* %if-c-only Standard (non-C++) definition */
+/* %endif */
+/* %if-c++-only C++ definition */
+#define YY_DECL int yyFlexLexer::yylex()
+/* %endif */
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK /*LINTED*/break;
+#endif
+
+/* %% [6.0] YY_RULE_SETUP definition goes here */
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+/* %not-for-header */
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+       yy_state_type yy_current_state;
+       char *yy_cp, *yy_bp;
+       int yy_act;
+    
+       if ( !(yy_init) )
+               {
+               (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! (yy_start) )
+                       (yy_start) = 1; /* first start state */
+
+               if ( ! yyin )
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+                       yyin.rdbuf(std::cin.rdbuf());
+/* %endif */
+
+               if ( ! yyout )
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+                       yyout.rdbuf(std::cout.rdbuf());
+/* %endif */
+
+               if ( ! YY_CURRENT_BUFFER ) {
+                       yyensure_buffer_stack ();
+                       YY_CURRENT_BUFFER_LVALUE =
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
+               }
+
+               yy_load_buffer_state(  );
+               }
+
+       {
+/* %% [7.0] user's declarations go here */
+
+       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
+               {
+/* %% [8.0] yymore()-related code goes here */
+               yy_cp = (yy_c_buf_p);
+
+               /* Support of yytext. */
+               *yy_cp = (yy_hold_char);
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+/* %% [9.0] code to set up and find next match goes here */
+               yy_current_state = (yy_start);
+yy_match:
+               do
+                       {
+                       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+                       if ( yy_accept[yy_current_state] )
+                               {
+                               (yy_last_accepting_state) = yy_current_state;
+                               (yy_last_accepting_cpos) = yy_cp;
+                               }
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 306 )
+                                       yy_c = yy_meta[yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+                       ++yy_cp;
+                       }
+               while ( yy_base[yy_current_state] != 413 );
+
+yy_find_action:
+/* %% [10.0] code to find the action number goes here */
+               yy_act = yy_accept[yy_current_state];
+               if ( yy_act == 0 )
+                       { /* have to back up */
+                       yy_cp = (yy_last_accepting_cpos);
+                       yy_current_state = (yy_last_accepting_state);
+                       yy_act = yy_accept[yy_current_state];
+                       }
+
+               YY_DO_BEFORE_ACTION;
+
+/* %% [11.0] code for yylineno update goes here */
+
+do_action:     /* This label is used only to access EOF actions. */
+
+/* %% [12.0] debug code goes here */
+               if ( yy_flex_debug )
+                       {
+                       if ( yy_act == 0 )
+                               std::cerr << "--scanner backing up\n";
+                       else if ( yy_act < 56 )
+                               std::cerr << "--accepting rule at line " << yy_rule_linenum[yy_act] <<
+                                        "(\"" << yytext << "\")\n";
+                       else if ( yy_act == 56 )
+                               std::cerr << "--accepting default rule (\"" << yytext << "\")\n";
+                       else if ( yy_act == 57 )
+                               std::cerr << "--(end of buffer or a NUL)\n";
+                       else
+                               std::cerr << "--EOF (start condition " << YY_START << ")\n";
+                       }
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+/* %% [13.0] actions go here */
+                       case 0: /* must back up */
+                       /* undo the effects of YY_DO_BEFORE_ACTION */
+                       *yy_cp = (yy_hold_char);
+                       yy_cp = (yy_last_accepting_cpos);
+                       yy_current_state = (yy_last_accepting_state);
+                       goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+{ /* Eat line comments */ }
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+{ ec_state = YYSTATE; BEGIN(COMM); }
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+{ /* Eat multiline comments */ }
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+{ BEGIN(ec_state); }
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+{ return yylval->num = token::KSCHEM; }
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+{ return yylval->num = token::KENDS; }
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+{ BEGIN(TYP); return yylval->num = token::KTYP; }
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+{ BEGIN(0);   return yylval->num = token::KENDT; }
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+{ BEGIN(ENT); return yylval->num = token::KENT; }
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+{ BEGIN(0);  return yylval->num = token::KENDE; }
+       YY_BREAK
+case 11:
+case 12:
+case 13:
+YY_RULE_SETUP
+{ BEGIN(SKP); }
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+{ /* eat contents of WHERE and DERIVE subclauses of ENTITY and TYPE */ }
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+{ return yylval->num = token::KSEL; }
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+{ return yylval->num = token::KENUM; }
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+{ return yylval->num = token::KLIST; }
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+{ return yylval->num = token::KARR; }
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+{ return yylval->num = token::KSET; }
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+{ return yylval->num = token::KBAG; }
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+{ return yylval->num = token::KOF; }
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+{ return yylval->num = token::KNUM; }
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+{ return yylval->num = token::KINT; }
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+{ return yylval->num = token::KDBL; }
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+{ return yylval->num = token::KSTR; }
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+{ return yylval->num = token::KLOG; }
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+{ return yylval->num = token::KBOOL; }
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+{ return yylval->num = token::KOPT; }
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+{ return yylval->num = token::KUNIQ; }
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+{ return yylval->num = token::KSELF; }
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+{ return yylval->num = token::KABSTR; }
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+{ return yylval->num = token::KSUBT; }
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+{ return yylval->num = token::KSPRT; }
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+{ return yylval->num = token::KANDOR; }
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+{ return yylval->num = token::K1OF; }
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+{ return yylval->num = token::KAND; }
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+{ yylval->str = strdup ( yytext ); return token::NAME; }
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+{ yylval->str = strdup ( yytext ); return token::NAME; }
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+{ yylval->num = atoi ( yytext ); return token::NUMBER; }
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+{ return yylval->num = yytext[0]; }
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+{ BEGIN(FUN); fun_level++; }
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+{ ec_state = YYSTATE; BEGIN(COMM); /* eat comments in functions */ }
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+{ /* Eat line comments in functions */ }
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+{ /* eat FUNCTIONs - skip IDs explicitly */ }
+       YY_BREAK
+case 45:
+/* rule 45 can match eol */
+YY_RULE_SETUP
+{ /* eat FUNCTIONs - skip strings explicitly */ }
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+{ /* eat FUNCTIONs - skip all other symbols in functions */ }
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+{ fun_level--; if ( ! fun_level ) BEGIN(0); }
+       YY_BREAK
+case 48:
+YY_RULE_SETUP
+{ BEGIN(RULE); /* eat RULEs */ }
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+{ /* eat RULEs */ }
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+{ BEGIN(0); }
+       YY_BREAK
+case 51:
+/* rule 51 can match eol */
+YY_RULE_SETUP
+{ /* eat CONSTANTs */
+                       char *s = yytext; /* but don't forget to count lines.. */
+                       while ( *s ) if ( *(s++) == '\n' ) ec_linenum++;
+                     }
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+{ /* eat spaces */ }
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+{ ec_error ( "unknown keyword ", yytext ); /* put unrecognized keywords to cerr */ }
+       YY_BREAK
+case 54:
+YY_RULE_SETUP
+{ ec_error ( "unknown symbol ", yytext ); /* put unrecognized data to cerr */ }
+       YY_BREAK
+case 55:
+/* rule 55 can match eol */
+YY_RULE_SETUP
+{ ec_linenum++; /* count lines */ }
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+ECHO;
+       YY_BREAK
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(TYP):
+case YY_STATE_EOF(ENT):
+case YY_STATE_EOF(COMM):
+case YY_STATE_EOF(SKP):
+case YY_STATE_EOF(RULE):
+case YY_STATE_EOF(FUN):
+       yyterminate();
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = (yy_hold_char);
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between YY_CURRENT_BUFFER and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin.rdbuf();
+/* %endif */
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state(  );
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++(yy_c_buf_p);
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
+                               yy_cp = (yy_c_buf_p);
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer(  ) )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               (yy_did_buffer_switch_on_eof) = 0;
+
+                               if ( yywrap(  ) )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               (yy_c_buf_p) =
+                                       (yytext_ptr) + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               (yy_c_buf_p) =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+       } /* end of user's declarations */
+} /* end of yylex */
+/* %ok-for-header */
+
+/* %if-c++-only */
+/* %not-for-header */
+/* The contents of this function are C++ specific, so the () macro is not used.
+ * This constructor simply maintains backward compatibility.
+ * DEPRECATED
+ */
+yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ):
+       yyin(arg_yyin ? arg_yyin->rdbuf() : std::cin.rdbuf()),
+       yyout(arg_yyout ? arg_yyout->rdbuf() : std::cout.rdbuf())
+{
+       ctor_common();
+}
+
+/* The contents of this function are C++ specific, so the () macro is not used.
+ */
+yyFlexLexer::yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ):
+       yyin(arg_yyin.rdbuf()),
+       yyout(arg_yyout.rdbuf())
+{
+       ctor_common();
+}
+
+/* The contents of this function are C++ specific, so the () macro is not used.
+ */
+void yyFlexLexer::ctor_common()
+{
+       yy_c_buf_p = 0;
+       yy_init = 0;
+       yy_start = 0;
+       yy_flex_debug = 0;
+       yylineno = 1;   // this will only get updated if %option yylineno
+
+       yy_did_buffer_switch_on_eof = 0;
+
+       yy_looking_for_trail_begin = 0;
+       yy_more_flag = 0;
+       yy_more_len = 0;
+       yy_more_offset = yy_prev_more_offset = 0;
+
+       yy_start_stack_ptr = yy_start_stack_depth = 0;
+       yy_start_stack = NULL;
+
+       yy_buffer_stack = NULL;
+       yy_buffer_stack_top = 0;
+       yy_buffer_stack_max = 0;
+
+       yy_state_buf = 0;
+
+}
+
+/* The contents of this function are C++ specific, so the () macro is not used.
+ */
+yyFlexLexer::~yyFlexLexer()
+{
+       delete [] yy_state_buf;
+       yyfree( yy_start_stack  );
+       yy_delete_buffer( YY_CURRENT_BUFFER );
+       yyfree( yy_buffer_stack  );
+}
+
+/* The contents of this function are C++ specific, so the () macro is not used.
+ */
+void yyFlexLexer::switch_streams( std::istream& new_in, std::ostream& new_out )
+{
+       // was if( new_in )
+       yy_delete_buffer( YY_CURRENT_BUFFER );
+       yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE  ) );
+
+       // was if( new_out )
+       yyout.rdbuf(new_out.rdbuf());
+}
+
+/* The contents of this function are C++ specific, so the () macro is not used.
+ */
+void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
+{
+       if( ! new_in ) {
+               new_in = &yyin;
+       }
+
+       if ( ! new_out ) {
+               new_out = &yyout;
+       }
+
+       switch_streams(*new_in, *new_out);
+}
+
+#ifdef YY_INTERACTIVE
+int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )
+#else
+int yyFlexLexer::LexerInput( char* buf, int max_size )
+#endif
+{
+       if ( yyin.eof() || yyin.fail() )
+               return 0;
+
+#ifdef YY_INTERACTIVE
+       yyin.get( buf[0] );
+
+       if ( yyin.eof() )
+               return 0;
+
+       if ( yyin.bad() )
+               return -1;
+
+       return 1;
+
+#else
+       (void) yyin.read( buf, max_size );
+
+       if ( yyin.bad() )
+               return -1;
+       else
+               return yyin.gcount();
+#endif
+}
+
+void yyFlexLexer::LexerOutput( const char* buf, int size )
+{
+       (void) yyout.write( buf, size );
+}
+/* %ok-for-header */
+
+/* %endif */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+int yyFlexLexer::yy_get_next_buffer()
+/* %endif */
+{
+       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       char *source = (yytext_ptr);
+       int number_to_move, i;
+       int ret_val;
+
+       if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+       else
+               {
+                       int num_to_read =
+                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+                       int yy_c_buf_p_offset =
+                               (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yyrealloc( (void *) b->yy_ch_buf,
+                                                        (yy_size_t) (b->yy_buf_size + 2)  );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = NULL;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+                                               number_to_move - 1;
+
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+                       (yy_n_chars), num_to_read );
+
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       if ( (yy_n_chars) == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart( yyin  );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+               /* Extend the array by 50%, plus the number we really need. */
+               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+               /* "- 2" to take care of EOB's */
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
+       }
+
+       (yy_n_chars) += number_to_move;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+       (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+       return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+/* %if-c-only */
+/* %not-for-header */
+/* %endif */
+/* %if-c++-only */
+    yy_state_type yyFlexLexer::yy_get_previous_state()
+/* %endif */
+{
+       yy_state_type yy_current_state;
+       char *yy_cp;
+    
+/* %% [15.0] code to get the start state into yy_current_state goes here */
+       yy_current_state = (yy_start);
+
+       for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+               {
+/* %% [16.0] code to find the next state goes here */
+               YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               if ( yy_accept[yy_current_state] )
+                       {
+                       (yy_last_accepting_state) = yy_current_state;
+                       (yy_last_accepting_cpos) = yy_cp;
+                       }
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 306 )
+                               yy_c = yy_meta[yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+               }
+
+       return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )
+/* %endif */
+{
+       int yy_is_jam;
+    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
+       char *yy_cp = (yy_c_buf_p);
+
+       YY_CHAR yy_c = 1;
+       if ( yy_accept[yy_current_state] )
+               {
+               (yy_last_accepting_state) = yy_current_state;
+               (yy_last_accepting_cpos) = yy_cp;
+               }
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 306 )
+                       yy_c = yy_meta[yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+       yy_is_jam = (yy_current_state == 305);
+
+               return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_UNPUT
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yyunput( int c, char* yy_bp)
+/* %endif */
+{
+       char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+       /* undo effects of setting up yytext */
+       *yy_cp = (yy_hold_char);
+
+       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               int number_to_move = (yy_n_chars) + 2;
+               char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+                                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+               char *source =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+               while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+                       (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+               if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+/* %% [18.0] update yylineno here */
+
+       (yytext_ptr) = yy_bp;
+       (yy_hold_char) = *yy_cp;
+       (yy_c_buf_p) = yy_cp;
+}
+/* %if-c-only */
+/* %endif */
+#endif
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    int yyFlexLexer::yyinput()
+/* %endif */
+{
+       int c;
+    
+       *(yy_c_buf_p) = (yy_hold_char);
+
+       if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       /* This was really a NUL. */
+                       *(yy_c_buf_p) = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
+                       ++(yy_c_buf_p);
+
+                       switch ( yy_get_next_buffer(  ) )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /*FALLTHROUGH*/
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap(  ) )
+                                               return 0;
+
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       (yy_c_buf_p) = (yytext_ptr) + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
+       *(yy_c_buf_p) = '\0';   /* preserve yytext */
+       (yy_hold_char) = *++(yy_c_buf_p);
+
+/* %% [19.0] update BOL and yylineno */
+
+       return c;
+}
+/* %if-c-only */
+/* %endif */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yyrestart( std::istream& input_file )
+/* %endif */
+{
+    
+       if ( ! YY_CURRENT_BUFFER ){
+        yyensure_buffer_stack ();
+               YY_CURRENT_BUFFER_LVALUE =
+            yy_create_buffer( yyin, YY_BUF_SIZE );
+       }
+
+       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
+       yy_load_buffer_state(  );
+}
+
+/* %if-c++-only */
+/** Delegate to the new version that takes an istream reference.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+void yyFlexLexer::yyrestart( std::istream* input_file )
+{
+       if( ! input_file ) {
+               input_file = &yyin;
+       }
+       yyrestart( *input_file );
+}
+/* %endif */
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+/* %endif */
+{
+    
+       /* TODO. We should be able to replace this entire function body
+        * with
+        *              yypop_buffer_state();
+        *              yypush_buffer_state(new_buffer);
+     */
+       yyensure_buffer_stack ();
+       if ( YY_CURRENT_BUFFER == new_buffer )
+               return;
+
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+       yy_load_buffer_state(  );
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_load_buffer_state()
+/* %endif */
+{
+       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+       (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+       yyin.rdbuf(YY_CURRENT_BUFFER_LVALUE->yy_input_file);
+/* %endif */
+       (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream& file, int size )
+/* %endif */
+{
+       YY_BUFFER_STATE b;
+    
+       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer( b, file );
+
+       return b;
+}
+
+/* %if-c++-only */
+/** Delegate creation of buffers to the new version that takes an istream reference.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+       YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
+{
+       return yy_create_buffer( *file, size );
+}
+/* %endif */
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * 
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )
+/* %endif */
+{
+    
+       if ( ! b )
+               return;
+
+       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yyfree( (void *) b->yy_ch_buf  );
+
+       yyfree( (void *) b  );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream& file )
+/* %endif */
+
+{
+       int oerrno = errno;
+    
+       yy_flush_buffer( b );
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+       b->yy_input_file = file.rdbuf();
+/* %endif */
+       b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+       b->yy_is_interactive = 0;
+/* %endif */
+       errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )
+/* %endif */
+{
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == YY_CURRENT_BUFFER )
+               yy_load_buffer_state(  );
+}
+
+/* %if-c-or-c++ */
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)
+/* %endif */
+{
+       if (new_buffer == NULL)
+               return;
+
+       yyensure_buffer_stack();
+
+       /* This block is copied from yy_switch_to_buffer. */
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       /* Only push if top exists. Otherwise, replace top. */
+       if (YY_CURRENT_BUFFER)
+               (yy_buffer_stack_top)++;
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+       /* copied from yy_switch_to_buffer. */
+       yy_load_buffer_state(  );
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+/* %endif */
+
+/* %if-c-or-c++ */
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+void yyFlexLexer::yypop_buffer_state (void)
+/* %endif */
+{
+       if (!YY_CURRENT_BUFFER)
+               return;
+
+       yy_delete_buffer(YY_CURRENT_BUFFER );
+       YY_CURRENT_BUFFER_LVALUE = NULL;
+       if ((yy_buffer_stack_top) > 0)
+               --(yy_buffer_stack_top);
+
+       if (YY_CURRENT_BUFFER) {
+               yy_load_buffer_state(  );
+               (yy_did_buffer_switch_on_eof) = 1;
+       }
+}
+/* %endif */
+
+/* %if-c-or-c++ */
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+void yyFlexLexer::yyensure_buffer_stack(void)
+/* %endif */
+{
+       yy_size_t num_to_alloc;
+    
+       if (!(yy_buffer_stack)) {
+
+               /* First allocation is just for 2 elements, since we don't know if this
+                * scanner will even need a stack. We use 2 instead of 1 to avoid an
+                * immediate realloc on the next call.
+         */
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+               memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+               (yy_buffer_stack_max) = num_to_alloc;
+               (yy_buffer_stack_top) = 0;
+               return;
+       }
+
+       if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+               /* Increase the buffer to prepare for a possible push. */
+               yy_size_t grow_size = 8 /* arbitrary grow size */;
+
+               num_to_alloc = (yy_buffer_stack_max) + grow_size;
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+                                                               ((yy_buffer_stack),
+                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+               /* zero only the new slots.*/
+               memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+               (yy_buffer_stack_max) = num_to_alloc;
+       }
+}
+/* %endif */
+
+/* %if-c-only */
+/* %endif */
+
+/* %if-c-only */
+/* %endif */
+
+/* %if-c-only */
+/* %endif */
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_push_state( int _new_state )
+/* %endif */
+{
+       if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
+               {
+               yy_size_t new_size;
+
+               (yy_start_stack_depth) += YY_START_STACK_INCR;
+               new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
+
+               if ( ! (yy_start_stack) )
+                       (yy_start_stack) = (int *) yyalloc( new_size  );
+
+               else
+                       (yy_start_stack) = (int *) yyrealloc(
+                                       (void *) (yy_start_stack), new_size  );
+
+               if ( ! (yy_start_stack) )
+                       YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
+               }
+
+       (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
+
+       BEGIN(_new_state);
+}
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    void yyFlexLexer::yy_pop_state()
+/* %endif */
+{
+       if ( --(yy_start_stack_ptr) < 0 )
+               YY_FATAL_ERROR( "start-condition stack underflow" );
+
+       BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
+}
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+    int yyFlexLexer::yy_top_state()
+/* %endif */
+{
+       return (yy_start_stack)[(yy_start_stack_ptr) - 1];
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+/* %if-c-only */
+/* %endif */
+/* %if-c++-only */
+void yyFlexLexer::LexerError( const char* msg )
+{
+       std::cerr << msg << std::endl;
+       exit( YY_EXIT_FAILURE );
+}
+/* %endif */
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               yytext[yyleng] = (yy_hold_char); \
+               (yy_c_buf_p) = yytext + yyless_macro_arg; \
+               (yy_hold_char) = *(yy_c_buf_p); \
+               *(yy_c_buf_p) = '\0'; \
+               yyleng = yyless_macro_arg; \
+               } \
+       while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/* %if-c-only */
+/* %if-reentrant */
+/* %endif */
+/* %if-reentrant */
+/* %endif */
+/* %endif */
+
+/* %if-reentrant */
+/* %if-bison-bridge */
+/* %endif */
+/* %endif if-c-only */
+
+/* %if-c-only */
+/* %endif */
+
+/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
+/* %if-reentrant */
+/* %endif */
+/* %endif */
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, const char * s2, int n )
+{
+               
+       int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (const char * s )
+{
+       int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+}
+#endif
+
+void *yyalloc (yy_size_t  size )
+{
+                       return malloc(size);
+}
+
+void *yyrealloc  (void * ptr, yy_size_t  size )
+{
+               
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return realloc(ptr, size);
+}
+
+void yyfree (void * ptr )
+{
+                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+}
+
+/* %if-tables-serialization definitions */
+/* %define-yytables   The name for this specific scanner's tables. */
+#define YYTABLES_NAME "yytables"
+/* %endif */
+
+/* %ok-for-header */
+
+/************************************/
+/* Section 3                        */
+/* auxiliary procedures             */
+
+exptocas::scanner::scanner(std::istream* in, std::ostream* out)
+    : exptocasFlexLexer(in, out)
+{
+}
+
+/*
+int main ( void )
+{
+  yylex();
+}
+*/
+
diff --git a/src/ExpToCasExe/lex.yy.c b/src/ExpToCasExe/lex.yy.c
deleted file mode 100644 (file)
index 4e9b828..0000000
+++ /dev/null
@@ -1,1023 +0,0 @@
-// Created:    Mon Nov  1 12:50:27 1999
-// Author:     Andrey BETENEV
-// Copyright (c) 1999-2020 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#include <stdio.h>
-#include <stdlib.h>
-# define U(x) x
-# define NLSTATE yyprevious=YYNEWLINE
-# define BEGIN yybgin = yysvec + 1 +
-# define INITIAL 0
-# define YYLERR yysvec
-# define YYSTATE (yyestate-yysvec-1)
-# define YYOPTIM 1
-# ifndef YYLMAX 
-# define YYLMAX BUFSIZ
-# endif 
-#ifndef __cplusplus
-# define output(c) (void)putc(c,yyout)
-#else
-# define lex_output(c) (void)putc(c,yyout)
-#endif
-
-#if defined(__cplusplus) || defined(__STDC__)
-
-#if defined(__cplusplus) && defined(__EXTERN_C__)
-extern "C" {
-#endif
-       int yyback(int *, int);
-       int yyinput(void);
-       int yylook(void);
-       void yyoutput(int);
-       int yyracc(int);
-       int yyreject(void);
-       void yyunput(int);
-       int yylex(void);
-#ifdef YYLEX_E
-       void yywoutput(wchar_t);
-       wchar_t yywinput(void);
-#endif
-#ifndef yyless
-       int yyless(int);
-#endif
-#ifndef yywrap
-       int yywrap(void);
-#endif
-#ifdef LEXDEBUG
-       void allprint(char);
-       void sprint(char *);
-#endif
-#if defined(__cplusplus) && defined(__EXTERN_C__)
-}
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-       void exit(int);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
-# define yymore() (yymorfg=1)
-#ifndef __cplusplus
-# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
-#else
-# define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
-#endif
-#define ECHO fprintf(yyout, "%s",yytext)
-# define REJECT { nstr = yyreject(); goto yyfussy;}
-int yyleng;
-#define YYISARRAY
-char yytext[YYLMAX];
-int yymorfg;
-extern char *yysptr, yysbuf[];
-int yytchar;
-FILE *yyin = {stdin}, *yyout = {stdout};
-extern int yylineno;
-struct yysvf { 
-       struct yywork *yystoff;
-       struct yysvf *yyother;
-       int *yystops;};
-struct yysvf *yyestate;
-extern struct yysvf yysvec[], *yybgin;
-
-
-# line 4 "explist.l"
-/* This LEX scanner produces list of items included in the EXPRESS schema  */
-
-# line 5 "explist.l"
-/* (TYPE, ENTITY, FUNCTION, RULE) */
-
-
-# line 7 "explist.l"
-/************************************/
-
-# line 8 "explist.l"
-/* Section 1                        */
-
-# line 9 "explist.l"
-/* definitions                      */
-# define CONST 2
-# define TYP 4
-# define TYP1 6
-# define ENT 8
-# define ENT1 10
-# define LIST 12
-# define COMM 14
-# define SKP 16
-# define FUN 18
-# define FUN1 20
-# define RUL 22
-
-static int fun_level=0;
-
-
-# line 26 "explist.l"
-/************************************/
-
-# line 27 "explist.l"
-/* Section 2                        */
-
-# line 28 "explist.l"
-/* parsing rules                    */
-# define YYNEWLINE 10
-yylex(){
-int nstr; extern int yyprevious;
-#ifdef __cplusplus
-/* to avoid CC and lint complaining yyfussy not being used ...*/
-static int __lex_hack = 0;
-if (__lex_hack) goto yyfussy;
-#endif
-while((nstr = yylook()) >= 0)
-yyfussy: switch(nstr){
-case 0:
-if(yywrap()) return(0); break;
-case 1:
-
-# line 32 "explist.l"
-              ;
-break;
-case 2:
-
-# line 33 "explist.l"
-                { printf ( "Starting multiline comment\n" ); BEGIN(COMM); }
-break;
-case 3:
-
-# line 34 "explist.l"
-          ;
-break;
-case 4:
-
-# line 35 "explist.l"
-          { printf ( "End of multiline comment\n" ); BEGIN(0); }
-break;
-case 5:
-
-# line 37 "explist.l"
-    printf ( "Starting %s\n", yytext );
-break;
-case 6:
-
-# line 38 "explist.l"
-         printf ( "Schema finished\n" );
-break;
-case 7:
-
-# line 40 "explist.l"
-                { BEGIN(TYP); }
-break;
-case 8:
-
-# line 41 "explist.l"
-         { printf ( "TYPE %s\n", yytext ); BEGIN(TYP1); }
-break;
-case 9:
-
-# line 42 "explist.l"
-          ;
-break;
-case 10:
-
-# line 43 "explist.l"
- { printf ( "\n" ); BEGIN(0); }
-break;
-case 11:
-
-# line 45 "explist.l"
-              { BEGIN(ENT); }
-break;
-case 12:
-
-# line 46 "explist.l"
-         { printf ( "ENTITY %s\n", yytext ); BEGIN(ENT1); }
-break;
-case 13:
-
-# line 47 "explist.l"
-          ;
-break;
-case 14:
-
-# line 48 "explist.l"
- BEGIN(0);
-break;
-case 15:
-
-# line 50 "explist.l"
-     case 16:
-
-# line 51 "explist.l"
-      BEGIN(SKP);
-break;
-case 17:
-
-# line 52 "explist.l"
-           ;
-break;
-case 18:
-
-# line 54 "explist.l"
- { BEGIN(FUN); fun_level++; }
-break;
-case 19:
-
-# line 55 "explist.l"
-         { printf ( "FUNCTION %s\n", yytext ); BEGIN(FUN1); }
-break;
-case 20:
-
-# line 56 "explist.l"
-          ;
-break;
-case 21:
-
-# line 57 "explist.l"
- { fun_level--; if ( ! fun_level ) BEGIN(0); }
-break;
-case 22:
-
-# line 59 "explist.l"
-                { BEGIN(RUL); }
-break;
-case 23:
-
-# line 60 "explist.l"
-         { printf ( "RULE %s\n", yytext ); BEGIN(SKP); }
-break;
-case 24:
-
-# line 61 "explist.l"
-       BEGIN(0);
-break;
-case 25:
-
-# line 63 "explist.l"
-                ;
-break;
-case -1:
-break;
-default:
-(void)fprintf(yyout,"bad switch yylook %d",nstr);
-} return(0); }
-/* end of yylex */
-
-# line 66 "explist.l"
-
-/************************************/
-/* Section 3                        */
-/* calling and auxiliary procedures */
-
-int main ( void )
-{
-  yylex();
-}
-
-int yywrap(void) { return 1; }
-int yyvstop[] = {
-0,
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-25,
-0, 
-
-8,
-0, 
-
-9,
-0, 
-
-9,
-0, 
-
-12,
-0, 
-
-13,
-0, 
-
-13,
-0, 
-
-3,
-0, 
-
-3,
-0, 
-
-17,
-0, 
-
-17,
-0, 
-
-19,
-0, 
-
-20,
-0, 
-
-20,
-0, 
-
-20,
-0, 
-
-20,
-0, 
-
-23,
-0, 
-
-2,
-0, 
-
-1,
-0, 
-
-4,
-0, 
-
-22,
-0, 
-
-7,
-0, 
-
-16,
-0, 
-
-11,
-0, 
-
-15,
-0, 
-
-18,
-0, 
-
-10,
-0, 
-
-24,
-0, 
-
-5,
-0, 
-
-14,
-0, 
-
-6,
-0, 
-
-21,
-0, 
-0};
-# define YYTYPE unsigned char
-struct yywork { YYTYPE verify, advance; } yycrank[] = {
-0,0,   0,0,    1,25,   0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    1,25,   1,25,   
-0,0,   0,0,    2,32,   2,32,   
-0,0,   0,0,    22,52,  22,52,  
-32,62, 32,62,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   1,26,   111,119,        32,62,  
-0,0,   2,26,   1,27,   0,0,    
-45,69, 1,25,   2,27,   16,45,  
-15,44, 26,56,  27,57,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-15,44, 15,44,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    1,28,   5,34,   
-5,35,  8,39,   2,28,   2,33,   
-12,43, 18,47,  22,51,  22,53,  
-30,60, 32,63,  34,65,  1,29,   
-1,30,  1,31,   7,38,   2,29,   
-2,30,  2,31,   5,36,   28,58,  
-29,59, 15,45,  7,38,   7,38,   
-1,25,  31,61,  5,37,   15,44,  
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   5,37,   5,37,   
-5,37,  5,37,   33,64,  35,66,  
-36,67, 40,68,  47,70,  48,71,  
-54,72, 7,38,   58,73,  59,75,  
-60,76, 61,77,  64,78,  65,79,  
-66,80, 67,81,  68,82,  70,83,  
-71,84, 72,85,  15,44,  73,86,  
-74,87, 75,88,  58,74,  76,89,  
-77,90, 9,40,   7,39,   78,91,  
-79,92, 80,93,  81,94,  82,95,  
-83,96, 84,97,  85,98,  86,99,  
-87,100,        89,101, 91,102, 92,103, 
-57,57, 93,104, 94,105, 95,106, 
-97,108,        98,107, 99,109, 100,110,        
-57,57, 57,0,   101,111,        9,41,   
-7,38,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   9,41,   
-9,41,  9,41,   9,41,   10,40,  
-102,112,       103,113,        104,114,        106,115,        
-107,116,       96,106, 11,42,  57,57,  
-17,46, 108,117,        109,118,        112,120,        
-114,121,       115,122,        11,42,  11,42,  
-17,46, 17,46,  96,107, 116,123,        
-96,104,        117,124,        118,125,        120,127,        
-121,128,       10,41,  122,129,        10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 10,41,  10,41,  10,41,  
-10,41, 11,42,  57,57,  17,46,  
-123,130,       124,131,        125,132,        126,126,        
-126,126,       126,126,        126,126,        126,126,        
-126,126,       126,126,        126,126,        126,126,        
-126,126,       129,134,        126,133,        131,135,        
-132,136,       134,137,        11,43,  19,48,  
-17,47, 135,138,        136,139,        138,140,        
-140,141,       0,0,    21,50,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    21,50,  21,50,  
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-11,42, 19,49,  17,46,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 19,49,  19,49,  19,49,  
-19,49, 21,50,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   23,54,  21,51,  0,0,    
-0,0,   0,0,    0,0,    0,0,    
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    23,55,  
-21,50, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  23,55,  
-23,55, 23,55,  23,55,  37,37,  
-0,0,   37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  37,37,  
-37,37, 37,37,  37,37,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    41,41,  0,0,    
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  41,41,  41,41,  
-41,41, 41,41,  49,49,  0,0,    
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  49,49,  49,49,  
-49,49, 49,49,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-119,126,       0,0,    119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-119,126,       119,126,        119,126,        119,126,        
-0,0,   0,0,    0,0,    0,0,    
-0,0,   0,0,    0,0,    0,0,    
-0,0,   55,55,  0,0,    55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 55,55,  55,55,  55,55,  
-55,55, 0,0,    0,0,    0,0,    
-0,0};
-struct yysvf yysvec[] = {
-0,     0,      0,
-yycrank+-1,    0,              0,      
-yycrank+-5,    yysvec+1,       0,      
-yycrank+0,     0,              0,      
-yycrank+0,     0,              0,      
-yycrank+3,     0,              0,      
-yycrank+0,     yysvec+5,       0,      
-yycrank+-85,   0,              0,      
-yycrank+-4,    yysvec+7,       0,      
-yycrank+84,    yysvec+5,       0,      
-yycrank+138,   yysvec+5,       0,      
-yycrank+-213,  0,              0,      
-yycrank+-7,    yysvec+11,      0,      
-yycrank+0,     0,              0,      
-yycrank+0,     0,              0,      
-yycrank+-51,   0,              0,      
-yycrank+-9,    yysvec+15,      0,      
-yycrank+-215,  0,              0,      
-yycrank+-8,    yysvec+17,      0,      
-yycrank+214,   0,              0,      
-yycrank+0,     yysvec+19,      0,      
-yycrank+-289,  0,              0,      
-yycrank+-9,    yysvec+21,      0,      
-yycrank+288,   0,              0,      
-yycrank+0,     yysvec+23,      0,      
-yycrank+0,     0,              yyvstop+1,
-yycrank+11,    0,              yyvstop+3,
-yycrank+9,     0,              yyvstop+5,
-yycrank+13,    0,              yyvstop+7,
-yycrank+7,     0,              yyvstop+9,
-yycrank+13,    0,              yyvstop+11,
-yycrank+8,     0,              yyvstop+13,
-yycrank+11,    0,              yyvstop+15,
-yycrank+41,    0,              yyvstop+17,
-yycrank+13,    0,              0,      
-yycrank+49,    0,              0,      
-yycrank+56,    0,              0,      
-yycrank+316,   0,              yyvstop+19,
-yycrank+0,     0,              yyvstop+21,
-yycrank+0,     yysvec+35,      yyvstop+23,
-yycrank+51,    0,              0,      
-yycrank+391,   0,              yyvstop+25,
-yycrank+0,     0,              yyvstop+27,
-yycrank+0,     yysvec+40,      yyvstop+29,
-yycrank+0,     0,              yyvstop+31,
-yycrank+7,     0,              yyvstop+33,
-yycrank+0,     0,              yyvstop+35,
-yycrank+52,    0,              yyvstop+37,
-yycrank+53,    0,              0,      
-yycrank+419,   0,              yyvstop+39,
-yycrank+0,     0,              yyvstop+41,
-yycrank+0,     yysvec+48,      yyvstop+43,
-yycrank+0,     yysvec+32,      yyvstop+45,
-yycrank+0,     yysvec+33,      yyvstop+47,
-yycrank+54,    0,              0,      
-yycrank+494,   0,              yyvstop+49,
-yycrank+0,     0,              yyvstop+51,
-yycrank+-167,  0,              yyvstop+53,
-yycrank+66,    0,              0,      
-yycrank+59,    0,              0,      
-yycrank+64,    0,              0,      
-yycrank+57,    0,              0,      
-yycrank+0,     yysvec+32,      0,      
-yycrank+0,     yysvec+33,      0,      
-yycrank+60,    0,              0,      
-yycrank+57,    0,              0,      
-yycrank+72,    0,              0,      
-yycrank+72,    0,              0,      
-yycrank+74,    0,              0,      
-yycrank+0,     0,              yyvstop+55,
-yycrank+75,    0,              0,      
-yycrank+76,    0,              0,      
-yycrank+77,    0,              0,      
-yycrank+52,    0,              0,      
-yycrank+75,    0,              0,      
-yycrank+80,    0,              0,      
-yycrank+82,    0,              0,      
-yycrank+83,    0,              0,      
-yycrank+88,    0,              0,      
-yycrank+83,    0,              0,      
-yycrank+62,    0,              0,      
-yycrank+76,    0,              0,      
-yycrank+64,    0,              0,      
-yycrank+65,    0,              0,      
-yycrank+66,    0,              0,      
-yycrank+67,    0,              0,      
-yycrank+80,    0,              0,      
-yycrank+80,    0,              0,      
-yycrank+0,     0,              yyvstop+57,
-yycrank+88,    0,              0,      
-yycrank+0,     0,              yyvstop+59,
-yycrank+82,    0,              0,      
-yycrank+81,    0,              0,      
-yycrank+85,    0,              0,      
-yycrank+101,   0,              0,      
-yycrank+102,   0,              0,      
-yycrank+144,   0,              0,      
-yycrank+102,   0,              0,      
-yycrank+91,    0,              0,      
-yycrank+107,   0,              0,      
-yycrank+86,    0,              0,      
-yycrank+113,   0,              0,      
-yycrank+135,   0,              0,      
-yycrank+140,   0,              0,      
-yycrank+121,   0,              0,      
-yycrank+0,     0,              yyvstop+61,
-yycrank+133,   0,              0,      
-yycrank+127,   0,              0,      
-yycrank+132,   0,              0,      
-yycrank+146,   0,              0,      
-yycrank+0,     0,              yyvstop+63,
-yycrank+10,    0,              0,      
-yycrank+140,   0,              0,      
-yycrank+0,     0,              yyvstop+65,
-yycrank+140,   0,              0,      
-yycrank+137,   0,              0,      
-yycrank+151,   0,              0,      
-yycrank+151,   0,              0,      
-yycrank+161,   0,              0,      
-yycrank+457,   0,              0,      
-yycrank+153,   0,              0,      
-yycrank+163,   0,              0,      
-yycrank+161,   0,              0,      
-yycrank+195,   0,              0,      
-yycrank+198,   0,              0,      
-yycrank+189,   0,              0,      
-yycrank+219,   yysvec+119,     0,      
-yycrank+0,     0,              yyvstop+67,
-yycrank+0,     0,              yyvstop+69,
-yycrank+193,   0,              0,      
-yycrank+0,     0,              yyvstop+71,
-yycrank+195,   0,              0,      
-yycrank+215,   0,              0,      
-yycrank+0,     0,              yyvstop+73,
-yycrank+192,   0,              0,      
-yycrank+212,   0,              0,      
-yycrank+227,   0,              0,      
-yycrank+0,     0,              yyvstop+75,
-yycrank+208,   0,              0,      
-yycrank+0,     0,              yyvstop+77,
-yycrank+210,   0,              0,      
-yycrank+0,     0,              yyvstop+79,
-0,     0,      0};
-struct yywork *yytop = yycrank+616;
-struct yysvf *yybgin = yysvec+1;
-char yymatch[] = {
-  0,   1,   1,   1,   1,   1,   1,   1, 
-  1,   9,  10,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  9,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
- 48,  48,  48,  48,  48,  48,  48,  48, 
- 48,  48,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,  95, 
-  1,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-  1,   1,   1,   1,   1,   1,   1,   1, 
-0};
-char yyextra[] = {
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,
-0};
-/*     Copyright (c) 1989 AT&T */
-/*       All Rights Reserved   */
-
-/*     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T     */
-/*     The copyright notice above does not evidence any        */
-/*     actual or intended publication of such source code.     */
-
-#pragma ident  "@(#)ncform     6.11    97/01/06 SMI"
-
-int yylineno =1;
-# define YYU(x) x
-# define NLSTATE yyprevious=YYNEWLINE
-struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
-char yysbuf[YYLMAX];
-char *yysptr = yysbuf;
-int *yyfnd;
-extern struct yysvf *yyestate;
-int yyprevious = YYNEWLINE;
-#if defined(__cplusplus) || defined(__STDC__)
-int yylook(void)
-#else
-yylook()
-#endif
-{
-       register struct yysvf *yystate, **lsp;
-       register struct yywork *yyt;
-       struct yysvf *yyz;
-       int yych, yyfirst;
-       struct yywork *yyr;
-# ifdef LEXDEBUG
-       int debug;
-# endif
-       char *yylastch;
-       /* start off machines */
-# ifdef LEXDEBUG
-       debug = 0;
-# endif
-       yyfirst=1;
-       if (!yymorfg)
-               yylastch = yytext;
-       else {
-               yymorfg=0;
-               yylastch = yytext+yyleng;
-               }
-       for(;;){
-               lsp = yylstate;
-               yyestate = yystate = yybgin;
-               if (yyprevious==YYNEWLINE) yystate++;
-               for (;;){
-# ifdef LEXDEBUG
-                       if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
-# endif
-                       yyt = yystate->yystoff;
-                       if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
-                               yyz = yystate->yyother;
-                               if(yyz == 0)break;
-                               if(yyz->yystoff == yycrank)break;
-                               }
-#ifndef __cplusplus
-                       *yylastch++ = yych = input();
-#else
-                       *yylastch++ = yych = lex_input();
-#endif
-#ifdef YYISARRAY
-                       if(yylastch > &yytext[YYLMAX]) {
-                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                               exit(1);
-                       }
-#else
-                       if (yylastch >= &yytext[ yytextsz ]) {
-                               int     x = yylastch - yytext;
-
-                               yytextsz += YYTEXTSZINC;
-                               if (yytext == yy_tbuf) {
-                                   yytext = (char *) malloc(yytextsz);
-                                   memcpy(yytext, yy_tbuf, sizeof (yy_tbuf));
-                               }
-                               else
-                                   yytext = (char *) realloc(yytext, yytextsz);
-                               if (!yytext) {
-                                   fprintf(yyout,
-                                       "Cannot realloc yytext\n");
-                                   exit(1);
-                               }
-                               yylastch = yytext + x;
-                       }
-#endif
-                       yyfirst=0;
-               tryagain:
-# ifdef LEXDEBUG
-                       if(debug){
-                               fprintf(yyout,"char ");
-                               allprint(yych);
-                               putchar('\n');
-                               }
-# endif
-                       yyr = yyt;
-                       if ( (int)yyt > (int)yycrank){
-                               yyt = yyr + yych;
-                               if (yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transitions */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               }
-# ifdef YYOPTIM
-                       else if((int)yyt < (int)yycrank) {              /* r < yycrank */
-                               yyt = yyr = yycrank+(yycrank-yyt);
-# ifdef LEXDEBUG
-                               if(debug)fprintf(yyout,"compressed state\n");
-# endif
-                               yyt = yyt + yych;
-                               if(yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transitions */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               yyt = yyr + YYU(yymatch[yych]);
-# ifdef LEXDEBUG
-                               if(debug){
-                                       fprintf(yyout,"try fall back character ");
-                                       allprint(YYU(yymatch[yych]));
-                                       putchar('\n');
-                                       }
-# endif
-                               if(yyt <= yytop && yyt->verify+yysvec == yystate){
-                                       if(yyt->advance+yysvec == YYLERR)       /* error transition */
-                                               {unput(*--yylastch);break;}
-                                       *lsp++ = yystate = yyt->advance+yysvec;
-                                       if(lsp > &yylstate[YYLMAX]) {
-                                               fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
-                                               exit(1);
-                                       }
-                                       goto contin;
-                                       }
-                               }
-                       if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
-# ifdef LEXDEBUG
-                               if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
-# endif
-                               goto tryagain;
-                               }
-# endif
-                       else
-                               {unput(*--yylastch);break;}
-               contin:
-# ifdef LEXDEBUG
-                       if(debug){
-                               fprintf(yyout,"state %d char ",yystate-yysvec-1);
-                               allprint(yych);
-                               putchar('\n');
-                               }
-# endif
-                       ;
-                       }
-# ifdef LEXDEBUG
-               if(debug){
-                       fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
-                       allprint(yych);
-                       putchar('\n');
-                       }
-# endif
-               while (lsp-- > yylstate){
-                       *yylastch-- = 0;
-                       if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
-                               yyolsp = lsp;
-                               if(yyextra[*yyfnd]){            /* must backup */
-                                       while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
-                                               lsp--;
-                                               unput(*yylastch--);
-                                               }
-                                       }
-                               yyprevious = YYU(*yylastch);
-                               yylsp = lsp;
-                               yyleng = yylastch-yytext+1;
-                               yytext[yyleng] = 0;
-# ifdef LEXDEBUG
-                               if(debug){
-                                       fprintf(yyout,"\nmatch ");
-                                       sprint(yytext);
-                                       fprintf(yyout," action %d\n",*yyfnd);
-                                       }
-# endif
-                               return(*yyfnd++);
-                               }
-                       unput(*yylastch);
-                       }
-               if (yytext[0] == 0  /* && feof(yyin) */)
-                       {
-                       yysptr=yysbuf;
-                       return(0);
-                       }
-#ifndef __cplusplus
-               yyprevious = yytext[0] = input();
-               if (yyprevious>0)
-                       output(yyprevious);
-#else
-               yyprevious = yytext[0] = lex_input();
-               if (yyprevious>0)
-                       lex_output(yyprevious);
-#endif
-               yylastch=yytext;
-# ifdef LEXDEBUG
-               if(debug)putchar('\n');
-# endif
-               }
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-int yyback(int *p, int m)
-#else
-yyback(p, m)
-       int *p;
-#endif
-{
-       if (p==0) return(0);
-       while (*p) {
-               if (*p++ == m)
-                       return(1);
-       }
-       return(0);
-}
-       /* the following are only used in the lex library */
-#if defined(__cplusplus) || defined(__STDC__)
-int yyinput(void)
-#else
-yyinput()
-#endif
-{
-#ifndef __cplusplus
-       return(input());
-#else
-       return(lex_input());
-#endif
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-void yyoutput(int c)
-#else
-yyoutput(c)
-  int c; 
-#endif
-{
-#ifndef __cplusplus
-       output(c);
-#else
-       lex_output(c);
-#endif
-       }
-#if defined(__cplusplus) || defined(__STDC__)
-void yyunput(int c)
-#else
-yyunput(c)
-   int c; 
-#endif
-{
-       unput(c);
-       }
diff --git a/src/ExpToCasExe/mkexpformat b/src/ExpToCasExe/mkexpformat
deleted file mode 100644 (file)
index 2c3fc8e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-lex expformat.l
-cc lex.yy.c -o expformat
diff --git a/src/ExpToCasExe/mkexplist b/src/ExpToCasExe/mkexplist
deleted file mode 100644 (file)
index 6c8826a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-lex explist.l
-cc lex.yy.c -o explist
diff --git a/src/ExpToCasExe/mkparser b/src/ExpToCasExe/mkparser
deleted file mode 100644 (file)
index 255bd74..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-rm -f yy.tab.c y.tab.h expparse.cxx expparse.h
-#yacc -v -d exptocas.y
-yacc -d exptocas.y
-mv y.tab.c expparse.cxx
-mv y.tab.h expparse.h
diff --git a/src/ExpToCasExe/mkscanner b/src/ExpToCasExe/mkscanner
deleted file mode 100644 (file)
index bfcefb4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-lex -t exptocas.l >expscan.cxx
diff --git a/src/ExpToCasExe/occt_existed_step_entities.lst b/src/ExpToCasExe/occt_existed_step_entities.lst
new file mode 100644 (file)
index 0000000..0472a22
--- /dev/null
@@ -0,0 +1,784 @@
+# Last update 03.04.2020
+#===============================================
+#             package StepAP203
+#===============================================
+ApprovedItem StepAP203
+CcDesignApproval StepAP203
+CcDesignCertification StepAP203
+CcDesignContract StepAP203
+CcDesignDateAndTimeAssignment StepAP203
+CcDesignPersonAndOrganizationAssignment StepAP203
+CcDesignSecurityClassification StepAP203
+CcDesignSpecificationReference StepAP203
+CertifiedItem StepAP203
+Change StepAP203
+ChangeRequest StepAP203
+ChangeRequestItem StepAP203
+ClassifiedItem StepAP203
+ContractedItem StepAP203
+DateTimeItem StepAP203
+PersonOrganizationItem StepAP203
+SpecifiedItem StepAP203
+StartRequest StepAP203
+StartRequestItem StepAP203
+StartWork StepAP203
+WorkItem StepAP203
+
+#===============================================
+#             package StepAP214
+#===============================================
+AppliedApprovalAssignment StepAP214
+AppliedDateAndTimeAssignment StepAP214
+AppliedDateAssignment StepAP214
+AppliedDocumentReference StepAP214
+AppliedExternalIdentificationAssignment StepAP214
+AppliedGroupAssignment StepAP214
+AppliedOrganizationAssignment StepAP214
+AppliedPersonAndOrganizationAssignment StepAP214
+AppliedPresentedItem StepAP214
+AppliedSecurityClassificationAssignment StepAP214
+ApprovalItem StepAP214
+AutoDesignActualDateAndTimeAssignment StepAP214
+AutoDesignActualDateAssignment StepAP214
+AutoDesignApprovalAssignment StepAP214
+AutoDesignDateAndPersonAssignment StepAP214
+AutoDesignDateAndPersonItem StepAP214
+AutoDesignDateAndTimeItem StepAP214
+AutoDesignDatedItem StepAP214
+AutoDesignDocumentReference StepAP214
+AutoDesignGeneralOrgItem StepAP214
+AutoDesignGroupAssignment StepAP214
+AutoDesignGroupedItem StepAP214
+AutoDesignNominalDateAndTimeAssignment StepAP214
+AutoDesignNominalDateAssignment StepAP214
+AutoDesignOrganizationAssignment StepAP214
+AutoDesignOrganizationItem StepAP214
+AutoDesignPersonAndOrganizationAssignment StepAP214
+AutoDesignPresentedItem StepAP214
+AutoDesignPresentedItemSelect StepAP214
+AutoDesignReferencingItem StepAP214
+AutoDesignSecurityClassificationAssignment StepAP214
+Class StepAP214
+DateAndTimeItem StepAP214
+DateItem StepAP214
+DocumentReferenceItem StepAP214
+ExternalIdentificationItem StepAP214
+ExternallyDefinedClass StepAP214
+ExternallyDefinedGeneralProperty StepAP214
+GroupItem StepAP214
+OrganizationItem StepAP214
+PersonAndOrganizationItem StepAP214
+PresentedItemSelect StepAP214
+Protocol StepAP214
+RepItemGroup StepAP214
+SecurityClassificationItem StepAP214
+
+#===============================================
+#             package StepAP242
+#===============================================
+DraughtingModelItemAssociation StepAP242
+GeometricItemSpecificUsage StepAP242
+IdAttribute StepAP242
+IdAttributeSelect StepAP242
+ItemIdentifiedRepresentationUsage StepAP242
+ItemIdentifiedRepresentationUsageDefinition StepAP242
+
+#===============================================
+#             package StepBasic
+#===============================================
+Action StepBasic
+ActionAssignment StepBasic
+ActionMethod StepBasic
+ActionRequestAssignment StepBasic
+ActionRequestSolution StepBasic
+Address StepBasic
+ApplicationContext StepBasic
+ApplicationContextElement StepBasic
+ApplicationProtocolDefinition StepBasic
+Approval StepBasic
+ApprovalAssignment StepBasic
+ApprovalDateTime StepBasic
+ApprovalPersonOrganization StepBasic
+ApprovalRelationship StepBasic
+ApprovalRole StepBasic
+ApprovalStatus StepBasic
+AreaUnit StepBasic
+CalendarDate StepBasic
+Certification StepBasic
+CertificationAssignment StepBasic
+CertificationType StepBasic
+CharacterizedObject StepBasic
+Contract StepBasic
+ContractAssignment StepBasic
+ContractType StepBasic
+ConversionBasedUnit StepBasic
+ConversionBasedUnitAndAreaUnit StepBasic
+ConversionBasedUnitAndLengthUnit StepBasic
+ConversionBasedUnitAndMassUnit StepBasic
+ConversionBasedUnitAndPlaneAngleUnit StepBasic
+ConversionBasedUnitAndRatioUnit StepBasic
+ConversionBasedUnitAndSolidAngleUnit StepBasic
+ConversionBasedUnitAndTimeUnit StepBasic
+ConversionBasedUnitAndVolumeUnit StepBasic
+CoordinatedUniversalTimeOffset StepBasic
+Date StepBasic
+DateAndTime StepBasic
+DateAndTimeAssignment StepBasic
+DateAssignment StepBasic
+DateRole StepBasic
+DateTimeRole StepBasic
+DateTimeSelect StepBasic
+DerivedUnit StepBasic
+DerivedUnitElement StepBasic
+DesignContext StepBasic
+DigitalDocument StepBasic
+DimensionalExponents StepBasic
+Document StepBasic
+DocumentFile StepBasic
+DocumentProductAssociation StepBasic
+DocumentProductEquivalence StepBasic
+DocumentReference StepBasic
+DocumentRelationship StepBasic
+DocumentRepresentationType StepBasic
+DocumentType StepBasic
+DocumentUsageConstraint StepBasic
+Effectivity StepBasic
+EffectivityAssignment StepBasic
+EulerAngles StepBasic
+ExternalIdentificationAssignment StepBasic
+ExternallyDefinedItem StepBasic
+ExternalSource StepBasic
+GeneralProperty StepBasic
+Group StepBasic
+GroupAssignment StepBasic
+GroupRelationship StepBasic
+IdentificationAssignment StepBasic
+IdentificationRole StepBasic
+LengthMeasureWithUnit StepBasic
+LengthUnit StepBasic
+LocalTime StepBasic
+MassMeasureWithUnit StepBasic
+MassUnit StepBasic
+MeasureValueMember StepBasic
+MeasureWithUnit StepBasic
+MechanicalContext StepBasic
+NameAssignment StepBasic
+NamedUnit StepBasic
+ObjectRole StepBasic
+OrdinalDate StepBasic
+Organization StepBasic
+OrganizationalAddress StepBasic
+OrganizationAssignment StepBasic
+OrganizationRole StepBasic
+Person StepBasic
+PersonalAddress StepBasic
+PersonAndOrganization StepBasic
+PersonAndOrganizationAssignment StepBasic
+PersonAndOrganizationRole StepBasic
+PersonOrganizationSelect StepBasic
+PhysicallyModeledProductDefinition StepBasic
+PlaneAngleMeasureWithUnit StepBasic
+PlaneAngleUnit StepBasic
+Product StepBasic
+ProductCategory StepBasic
+ProductCategoryRelationship StepBasic
+ProductConceptContext StepBasic
+ProductContext StepBasic
+ProductDefinition StepBasic
+ProductDefinitionContext StepBasic
+ProductDefinitionEffectivity StepBasic
+ProductDefinitionFormation StepBasic
+ProductDefinitionFormationRelationship StepBasic
+ProductDefinitionFormationWithSpecifiedSource StepBasic
+ProductDefinitionOrReference StepBasic
+ProductDefinitionReference StepBasic
+ProductDefinitionReferenceWithLocalRepresentation StepBasic
+ProductDefinitionRelationship StepBasic
+ProductDefinitionWithAssociatedDocuments StepBasic
+ProductOrFormationOrDefinition StepBasic
+ProductRelatedProductCategory StepBasic
+ProductType StepBasic
+RatioMeasureWithUnit StepBasic
+RatioUnit StepBasic
+RoleAssociation StepBasic
+RoleSelect StepBasic
+SecurityClassification StepBasic
+SecurityClassificationAssignment StepBasic
+SecurityClassificationLevel StepBasic
+SiUnit StepBasic
+SiUnitAndAreaUnit StepBasic
+SiUnitAndLengthUnit StepBasic
+SiUnitAndMassUnit StepBasic
+SiUnitAndPlaneAngleUnit StepBasic
+SiUnitAndRatioUnit StepBasic
+SiUnitAndSolidAngleUnit StepBasic
+SiUnitAndThermodynamicTemperatureUnit StepBasic
+SiUnitAndTimeUnit StepBasic
+SiUnitAndVolumeUnit StepBasic
+SizeMember StepBasic
+SizeSelect StepBasic
+SolidAngleMeasureWithUnit StepBasic
+SolidAngleUnit StepBasic
+SourceItem StepBasic
+ThermodynamicTemperatureUnit StepBasic
+TimeMeasureWithUnit StepBasic
+TimeUnit StepBasic
+UncertaintyMeasureWithUnit StepBasic
+Unit StepBasic
+VersionedActionRequest StepBasic
+VolumeUnit StepBasic
+WeekOfYearAndDayDate StepBasic
+
+#===============================================
+#             package StepDimTol
+#===============================================
+AngularityTolerance StepDimTol
+CircularRunoutTolerance StepDimTol
+CoaxialityTolerance StepDimTol
+CommonDatum StepDimTol
+ConcentricityTolerance StepDimTol
+CylindricityTolerance StepDimTol
+Datum StepDimTol
+DatumFeature StepDimTol
+DatumOrCommonDatum StepDimTol
+DatumReference StepDimTol
+DatumReferenceCompartment StepDimTol
+DatumReferenceElement StepDimTol
+DatumReferenceModifier StepDimTol
+DatumReferenceModifierWithValue StepDimTol
+DatumSystem StepDimTol
+DatumSystemOrReference StepDimTol
+DatumTarget StepDimTol
+FlatnessTolerance StepDimTol
+GeneralDatumReference StepDimTol
+GeometricTolerance StepDimTol
+GeometricToleranceRelationship StepDimTol
+GeometricToleranceTarget StepDimTol
+GeometricToleranceWithDatumReference StepDimTol
+GeometricToleranceWithDefinedAreaUnit StepDimTol
+GeometricToleranceWithDefinedUnit StepDimTol
+GeometricToleranceWithMaximumTolerance StepDimTol
+GeometricToleranceWithModifiers StepDimTol
+GeoTolAndGeoTolWthDatRef StepDimTol
+GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol StepDimTol
+GeoTolAndGeoTolWthDatRefAndGeoTolWthMod StepDimTol
+GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol StepDimTol
+GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol StepDimTol
+GeoTolAndGeoTolWthMaxTol StepDimTol
+GeoTolAndGeoTolWthMod StepDimTol
+LineProfileTolerance StepDimTol
+ModifiedGeometricTolerance StepDimTol
+NonUniformZoneDefinition StepDimTol
+ParallelismTolerance StepDimTol
+PerpendicularityTolerance StepDimTol
+PlacedDatumTargetFeature StepDimTol
+PositionTolerance StepDimTol
+ProjectedZoneDefinition StepDimTol
+RoundnessTolerance StepDimTol
+RunoutZoneDefinition StepDimTol
+RunoutZoneOrientation StepDimTol
+ShapeToleranceSelect StepDimTol
+SimpleDatumReferenceModifierMember StepDimTol
+StraightnessTolerance StepDimTol
+SurfaceProfileTolerance StepDimTol
+SymmetryTolerance StepDimTol
+ToleranceZone StepDimTol
+ToleranceZoneDefinition StepDimTol
+ToleranceZoneForm StepDimTol
+ToleranceZoneTarget StepDimTol
+TotalRunoutTolerance StepDimTol
+UnequallyDisposedGeometricTolerance StepDimTol
+
+#===============================================
+#             package StepElement
+#===============================================
+AnalysisItemWithinRepresentation StepElement
+Curve3dElementDescriptor StepElement
+CurveElementEndReleasePacket StepElement
+CurveElementFreedom StepElement
+CurveElementFreedomMember StepElement
+CurveElementPurpose StepElement
+CurveElementPurposeMember StepElement
+CurveElementSectionDefinition StepElement
+CurveElementSectionDerivedDefinitions StepElement
+ElementAspect StepElement
+ElementAspectMember StepElement
+ElementDescriptor StepElement
+ElementMaterial StepElement
+MeasureOrUnspecifiedValue StepElement
+MeasureOrUnspecifiedValueMember StepElement
+Surface3dElementDescriptor StepElement
+SurfaceElementProperty StepElement
+SurfaceElementPurpose StepElement
+SurfaceElementPurposeMember StepElement
+SurfaceSection StepElement
+SurfaceSectionField StepElement
+SurfaceSectionFieldConstant StepElement
+SurfaceSectionFieldVarying StepElement
+UniformSurfaceSection StepElement
+Volume3dElementDescriptor StepElement
+VolumeElementPurpose StepElement
+VolumeElementPurposeMember StepElement
+
+#===============================================
+#             package StepFEA
+#===============================================
+AlignedCurve3dElementCoordinateSystem StepFEA
+AlignedSurface3dElementCoordinateSystem StepFEA
+ArbitraryVolume3dElementCoordinateSystem StepFEA
+ConstantSurface3dElementCoordinateSystem StepFEA
+Curve3dElementProperty StepFEA
+Curve3dElementRepresentation StepFEA
+CurveElementEndCoordinateSystem StepFEA
+CurveElementEndOffset StepFEA
+CurveElementEndRelease StepFEA
+CurveElementInterval StepFEA
+CurveElementIntervalConstant StepFEA
+CurveElementIntervalLinearlyVarying StepFEA
+CurveElementLocation StepFEA
+DegreeOfFreedom StepFEA
+DegreeOfFreedomMember StepFEA
+DummyNode StepFEA
+ElementGeometricRelationship StepFEA
+ElementGroup StepFEA
+ElementOrElementGroup StepFEA
+ElementRepresentation StepFEA
+FeaAreaDensity StepFEA
+FeaAxis2Placement3d StepFEA
+FeaCurveSectionGeometricRelationship StepFEA
+FeaGroup StepFEA
+FeaLinearElasticity StepFEA
+FeaMassDensity StepFEA
+FeaMaterialPropertyRepresentation StepFEA
+FeaMaterialPropertyRepresentationItem StepFEA
+FeaModel StepFEA
+FeaModel3d StepFEA
+FeaModelDefinition StepFEA
+FeaMoistureAbsorption StepFEA
+FeaParametricPoint StepFEA
+FeaRepresentationItem StepFEA
+FeaSecantCoefficientOfLinearThermalExpansion StepFEA
+FeaShellBendingStiffness StepFEA
+FeaShellMembraneBendingCouplingStiffness StepFEA
+FeaShellMembraneStiffness StepFEA
+FeaShellShearStiffness StepFEA
+FeaSurfaceSectionGeometricRelationship StepFEA
+FeaTangentialCoefficientOfLinearThermalExpansion StepFEA
+FreedomAndCoefficient StepFEA
+FreedomsList StepFEA
+GeometricNode StepFEA
+Node StepFEA
+NodeDefinition StepFEA
+NodeGroup StepFEA
+NodeRepresentation StepFEA
+NodeSet StepFEA
+NodeWithSolutionCoordinateSystem StepFEA
+NodeWithVector StepFEA
+ParametricCurve3dElementCoordinateDirection StepFEA
+ParametricCurve3dElementCoordinateSystem StepFEA
+ParametricSurface3dElementCoordinateSystem StepFEA
+Surface3dElementRepresentation StepFEA
+SymmetricTensor22d StepFEA
+SymmetricTensor23d StepFEA
+SymmetricTensor23dMember StepFEA
+SymmetricTensor42d StepFEA
+SymmetricTensor43d StepFEA
+SymmetricTensor43dMember StepFEA
+Volume3dElementRepresentation StepFEA
+
+#===============================================
+#             package StepGeom
+#===============================================
+Axis1Placement StepGeom
+Axis2Placement StepGeom
+Axis2Placement2d StepGeom
+Axis2Placement3d StepGeom
+BezierCurve StepGeom
+BezierCurveAndRationalBSplineCurve StepGeom
+BezierSurface StepGeom
+BezierSurfaceAndRationalBSplineSurface StepGeom
+BoundaryCurve StepGeom
+BoundedCurve StepGeom
+BoundedSurface StepGeom
+BSplineCurve StepGeom
+BSplineCurveWithKnots StepGeom
+BSplineCurveWithKnotsAndRationalBSplineCurve StepGeom
+BSplineSurface StepGeom
+BSplineSurfaceWithKnots StepGeom
+BSplineSurfaceWithKnotsAndRationalBSplineSurface StepGeom
+CartesianPoint StepGeom
+CartesianTransformationOperator StepGeom
+CartesianTransformationOperator2d StepGeom
+CartesianTransformationOperator3d StepGeom
+Circle StepGeom
+CompositeCurve StepGeom
+CompositeCurveOnSurface StepGeom
+CompositeCurveSegment StepGeom
+Conic StepGeom
+ConicalSurface StepGeom
+Curve StepGeom
+CurveBoundedSurface StepGeom
+CurveOnSurface StepGeom
+CurveReplica StepGeom
+CylindricalSurface StepGeom
+DegeneratePcurve StepGeom
+DegenerateToroidalSurface StepGeom
+Direction StepGeom
+ElementarySurface StepGeom
+Ellipse StepGeom
+EvaluatedDegeneratePcurve StepGeom
+GeometricRepresentationContext StepGeom
+GeometricRepresentationContextAndGlobalUnitAssignedContext StepGeom
+GeometricRepresentationContextAndParametricRepresentationContext StepGeom
+GeometricRepresentationItem StepGeom
+GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx StepGeom
+Hyperbola StepGeom
+IntersectionCurve StepGeom
+Line StepGeom
+OffsetCurve3d StepGeom
+OffsetSurface StepGeom
+OrientedSurface StepGeom
+OuterBoundaryCurve StepGeom
+Parabola StepGeom
+Pcurve StepGeom
+PcurveOrSurface StepGeom
+Placement StepGeom
+Plane StepGeom
+Point StepGeom
+PointOnCurve StepGeom
+PointOnSurface StepGeom
+PointReplica StepGeom
+Polyline StepGeom
+QuasiUniformCurve StepGeom
+QuasiUniformCurveAndRationalBSplineCurve StepGeom
+QuasiUniformSurface StepGeom
+QuasiUniformSurfaceAndRationalBSplineSurface StepGeom
+RationalBSplineCurve StepGeom
+RationalBSplineSurface StepGeom
+RectangularCompositeSurface StepGeom
+RectangularTrimmedSurface StepGeom
+ReparametrisedCompositeCurveSegment StepGeom
+SeamCurve StepGeom
+SphericalSurface StepGeom
+Surface StepGeom
+SurfaceBoundary StepGeom
+SurfaceCurveAndBoundedCurve StepGeom
+SurfaceOfLinearExtrusion StepGeom
+SurfaceOfRevolution StepGeom
+SurfacePatch StepGeom
+SurfaceReplica StepGeom
+SweptSurface StepGeom
+ToroidalSurface StepGeom
+TrimmedCurve StepGeom
+TrimmingMember StepGeom
+TrimmingSelect StepGeom
+UniformCurve StepGeom
+UniformCurveAndRationalBSplineCurve StepGeom
+UniformSurface StepGeom
+UniformSurfaceAndRationalBSplineSurface StepGeom
+Vector StepGeom
+VectorOrDirection StepGeom
+
+#===============================================
+#             package StepRepr
+#===============================================
+AllAroundShapeAspect StepRepr
+Apex StepRepr
+AssemblyComponentUsage StepRepr
+AssemblyComponentUsageSubstitute StepRepr
+BetweenShapeAspect StepRepr
+CentreOfSymmetry StepRepr
+CharacterizedDefinition StepRepr
+CharacterizedRepresentation StepRepr
+CompGroupShAspAndCompShAspAndDatumFeatAndShAsp StepRepr
+CompositeGroupShapeAspect StepRepr
+CompositeShapeAspect StepRepr
+CompoundRepresentationItem StepRepr
+CompShAspAndDatumFeatAndShAsp StepRepr
+ConfigurationDesign StepRepr
+ConfigurationDesignItem StepRepr
+ConfigurationEffectivity StepRepr
+ConfigurationItem StepRepr
+ConstructiveGeometryRepresentation StepRepr
+ConstructiveGeometryRepresentationRelationship StepRepr
+ContinuosShapeAspect StepRepr
+DataEnvironment StepRepr
+DefinitionalRepresentation StepRepr
+DerivedShapeAspect StepRepr
+DescriptiveRepresentationItem StepRepr
+Extension StepRepr
+ExternallyDefinedRepresentation StepRepr
+FeatureForDatumTargetRelationship StepRepr
+FunctionallyDefinedTransformation StepRepr
+GeometricAlignment StepRepr
+GlobalUncertaintyAssignedContext StepRepr
+GlobalUnitAssignedContext StepRepr
+IntegerRepresentationItem StepRepr
+ItemDefinedTransformation StepRepr
+MakeFromUsageOption StepRepr
+MappedItem StepRepr
+MaterialDesignation StepRepr
+MaterialProperty StepRepr
+MaterialPropertyRepresentation StepRepr
+MeasureRepresentationItem StepRepr
+NextAssemblyUsageOccurrence StepRepr
+ParallelOffset StepRepr
+ParametricRepresentationContext StepRepr
+PerpendicularTo StepRepr
+ProductConcept StepRepr
+ProductDefinitionShape StepRepr
+ProductDefinitionUsage StepRepr
+PromissoryUsageOccurrence StepRepr
+PropertyDefinition StepRepr
+PropertyDefinitionRelationship StepRepr
+PropertyDefinitionRepresentation StepRepr
+QuantifiedAssemblyComponentUsage StepRepr
+Representation StepRepr
+RepresentationContext StepRepr
+RepresentationItem StepRepr
+RepresentationMap StepRepr
+RepresentationRelationship StepRepr
+RepresentationRelationshipWithTransformation StepRepr
+RepresentedDefinition StepRepr
+ReprItemAndLengthMeasureWithUnit StepRepr
+ReprItemAndLengthMeasureWithUnitAndQRI StepRepr
+ReprItemAndMeasureWithUnit StepRepr
+ReprItemAndMeasureWithUnitAndQRI StepRepr
+ReprItemAndPlaneAngleMeasureWithUnit StepRepr
+ReprItemAndPlaneAngleMeasureWithUnitAndQRI StepRepr
+ShapeAspect StepRepr
+ShapeAspectDerivingRelationship StepRepr
+ShapeAspectRelationship StepRepr
+ShapeAspectTransition StepRepr
+ShapeDefinition StepRepr
+ShapeRepresentationRelationship StepRepr
+ShapeRepresentationRelationshipWithTransformation StepRepr
+SpecifiedHigherUsageOccurrence StepRepr
+StructuralResponseProperty StepRepr
+StructuralResponsePropertyDefinitionRepresentation StepRepr
+SuppliedPartRelationship StepRepr
+Tangent StepRepr
+Transformation StepRepr
+ValueRange StepRepr
+ValueRepresentationItem StepRepr
+
+#===============================================
+#             package StepShape
+#===============================================
+AdvancedBrepShapeRepresentation StepShape
+AdvancedFace StepShape
+AngularLocation StepShape
+AngularSize StepShape
+Block StepShape
+BooleanOperand StepShape
+BooleanResult StepShape
+BoxDomain StepShape
+BoxedHalfSpace StepShape
+BrepWithVoids StepShape
+ClosedShell StepShape
+CompoundShapeRepresentation StepShape
+ConnectedEdgeSet StepShape
+ConnectedFaceSet StepShape
+ConnectedFaceShapeRepresentation StepShape
+ConnectedFaceSubSet StepShape
+ContextDependentShapeRepresentation StepShape
+CsgPrimitive StepShape
+CsgSelect StepShape
+CsgShapeRepresentation StepShape
+CsgSolid StepShape
+DefinitionalRepresentationAndShapeRepresentation StepShape
+DimensionalCharacteristic StepShape
+DimensionalCharacteristicRepresentation StepShape
+DimensionalLocation StepShape
+DimensionalLocationWithPath StepShape
+DimensionalSize StepShape
+DimensionalSizeWithPath StepShape
+DirectedDimensionalLocation StepShape
+Edge StepShape
+EdgeBasedWireframeModel StepShape
+EdgeBasedWireframeShapeRepresentation StepShape
+EdgeCurve StepShape
+EdgeLoop StepShape
+ExtrudedAreaSolid StepShape
+ExtrudedFaceSolid StepShape
+Face StepShape
+FaceBasedSurfaceModel StepShape
+FaceBound StepShape
+FaceOuterBound StepShape
+FaceSurface StepShape
+FacetedBrep StepShape
+FacetedBrepAndBrepWithVoids StepShape
+FacetedBrepShapeRepresentation StepShape
+GeometricallyBoundedSurfaceShapeRepresentation StepShape
+GeometricallyBoundedWireframeShapeRepresentation StepShape
+GeometricCurveSet StepShape
+GeometricSet StepShape
+GeometricSetSelect StepShape
+HalfSpaceSolid StepShape
+LimitsAndFits StepShape
+Loop StepShape
+LoopAndPath StepShape
+ManifoldSolidBrep StepShape
+ManifoldSurfaceShapeRepresentation StepShape
+MeasureQualification StepShape
+MeasureRepresentationItemAndQualifiedRepresentationItem StepShape
+NonManifoldSurfaceShapeRepresentation StepShape
+OpenShell StepShape
+OrientedClosedShell StepShape
+OrientedEdge StepShape
+OrientedFace StepShape
+OrientedOpenShell StepShape
+OrientedPath StepShape
+Path StepShape
+PlusMinusTolerance StepShape
+PointRepresentation StepShape
+PolyLoop StepShape
+PrecisionQualifier StepShape
+QualifiedRepresentationItem StepShape
+ReversibleTopologyItem StepShape
+RevolvedAreaSolid StepShape
+RevolvedFaceSolid StepShape
+RightAngularWedge StepShape
+RightCircularCone StepShape
+RightCircularCylinder StepShape
+SeamEdge StepShape
+ShapeDefinitionRepresentation StepShape
+ShapeDimensionRepresentation StepShape
+ShapeDimensionRepresentationItem StepShape
+ShapeRepresentation StepShape
+ShapeRepresentationWithParameters StepShape
+Shell StepShape
+ShellBasedSurfaceModel StepShape
+SolidModel StepShape
+SolidReplica StepShape
+Sphere StepShape
+Subedge StepShape
+Subface StepShape
+SurfaceModel StepShape
+SweptAreaSolid StepShape
+SweptFaceSolid StepShape
+ToleranceMethodDefinition StepShape
+ToleranceValue StepShape
+TopologicalRepresentationItem StepShape
+Torus StepShape
+TransitionalShapeRepresentation StepShape
+TypeQualifier StepShape
+ValueFormatTypeQualifier StepShape
+ValueQualifier StepShape
+Vertex StepShape
+VertexLoop StepShape
+VertexPoint StepShape
+
+#===============================================
+#             package StepVisual
+#===============================================
+AnnotationCurveOccurrence StepVisual
+AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem StepVisual
+AnnotationFillArea StepVisual
+AnnotationFillAreaOccurrence StepVisual
+AnnotationOccurrence StepVisual
+AnnotationPlane StepVisual
+AnnotationPlaneElement StepVisual
+AnnotationText StepVisual
+AnnotationTextOccurrence StepVisual
+AreaInSet StepVisual
+AreaOrView StepVisual
+BackgroundColour StepVisual
+BoxCharacteristicSelect StepVisual
+CameraImage StepVisual
+CameraImage2dWithScale StepVisual
+CameraImage3dWithScale StepVisual
+CameraModel StepVisual
+CameraModelD2 StepVisual
+CameraModelD3 StepVisual
+CameraModelD3MultiClipping StepVisual
+CameraModelD3MultiClippingInterectionSelect StepVisual
+CameraModelD3MultiClippingIntersection StepVisual
+CameraModelD3MultiClippingUnion StepVisual
+CameraModelD3MultiClippingUnionSelect StepVisual
+CameraUsage StepVisual
+CharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation StepVisual
+Colour StepVisual
+ColourRgb StepVisual
+ColourSpecification StepVisual
+CompositeText StepVisual
+CompositeTextWithExtent StepVisual
+ContextDependentInvisibility StepVisual
+ContextDependentOverRidingStyledItem StepVisual
+CurveStyle StepVisual
+CurveStyleFont StepVisual
+CurveStyleFontPattern StepVisual
+CurveStyleFontSelect StepVisual
+DirectionCountSelect StepVisual
+DraughtingAnnotationOccurrence StepVisual
+DraughtingCallout StepVisual
+DraughtingCalloutElement StepVisual
+DraughtingModel StepVisual
+DraughtingPreDefinedColour StepVisual
+DraughtingPreDefinedCurveFont StepVisual
+ExternallyDefinedCurveFont StepVisual
+ExternallyDefinedTextFont StepVisual
+FillAreaStyle StepVisual
+FillAreaStyleColour StepVisual
+FillStyleSelect StepVisual
+FontSelect StepVisual
+Invisibility StepVisual
+InvisibilityContext StepVisual
+InvisibleItem StepVisual
+LayeredItem StepVisual
+MarkerMember StepVisual
+MarkerSelect StepVisual
+MechanicalDesignGeometricPresentationArea StepVisual
+MechanicalDesignGeometricPresentationRepresentation StepVisual
+NullStyleMember StepVisual
+OverRidingStyledItem StepVisual
+PlanarBox StepVisual
+PlanarExtent StepVisual
+PointStyle StepVisual
+PreDefinedColour StepVisual
+PreDefinedCurveFont StepVisual
+PreDefinedItem StepVisual
+PreDefinedTextFont StepVisual
+PresentationArea StepVisual
+PresentationLayerAssignment StepVisual
+PresentationLayerUsage StepVisual
+PresentationRepresentation StepVisual
+PresentationRepresentationSelect StepVisual
+PresentationSet StepVisual
+PresentationSize StepVisual
+PresentationSizeAssignmentSelect StepVisual
+PresentationStyleAssignment StepVisual
+PresentationStyleByContext StepVisual
+PresentationStyleSelect StepVisual
+PresentationView StepVisual
+PresentedItem StepVisual
+PresentedItemRepresentation StepVisual
+StyleContextSelect StepVisual
+StyledItem StepVisual
+StyledItemTarget StepVisual
+SurfaceSideStyle StepVisual
+SurfaceStyleBoundary StepVisual
+SurfaceStyleControlGrid StepVisual
+SurfaceStyleElementSelect StepVisual
+SurfaceStyleFillArea StepVisual
+SurfaceStyleParameterLine StepVisual
+SurfaceStyleSegmentationCurve StepVisual
+SurfaceStyleSilhouette StepVisual
+SurfaceStyleUsage StepVisual
+Template StepVisual
+TemplateInstance StepVisual
+TextLiteral StepVisual
+TextOrCharacter StepVisual
+TextStyle StepVisual
+TextStyleForDefinedFont StepVisual
+TextStyleWithBoxCharacteristics StepVisual
+ViewVolume StepVisual
+TessellatedAnnotationOccurrence StepVisual
+TessellatedItem StepVisual
+TessellatedGeometricSet StepVisual
+TessellatedCurveSet StepVisual
+CoordinatesList StepVisual
+SurfaceStyleTransparent StepVisual
+SurfaceStyleReflectanceAmbient StepVisual
+SurfaceStyleRendering StepVisual
+SurfaceStyleRenderingWithProperties StepVisual
diff --git a/src/ExpToCasExe/occt_step_entities.lst b/src/ExpToCasExe/occt_step_entities.lst
deleted file mode 100644 (file)
index 0472a22..0000000
+++ /dev/null
@@ -1,784 +0,0 @@
-# Last update 03.04.2020
-#===============================================
-#             package StepAP203
-#===============================================
-ApprovedItem StepAP203
-CcDesignApproval StepAP203
-CcDesignCertification StepAP203
-CcDesignContract StepAP203
-CcDesignDateAndTimeAssignment StepAP203
-CcDesignPersonAndOrganizationAssignment StepAP203
-CcDesignSecurityClassification StepAP203
-CcDesignSpecificationReference StepAP203
-CertifiedItem StepAP203
-Change StepAP203
-ChangeRequest StepAP203
-ChangeRequestItem StepAP203
-ClassifiedItem StepAP203
-ContractedItem StepAP203
-DateTimeItem StepAP203
-PersonOrganizationItem StepAP203
-SpecifiedItem StepAP203
-StartRequest StepAP203
-StartRequestItem StepAP203
-StartWork StepAP203
-WorkItem StepAP203
-
-#===============================================
-#             package StepAP214
-#===============================================
-AppliedApprovalAssignment StepAP214
-AppliedDateAndTimeAssignment StepAP214
-AppliedDateAssignment StepAP214
-AppliedDocumentReference StepAP214
-AppliedExternalIdentificationAssignment StepAP214
-AppliedGroupAssignment StepAP214
-AppliedOrganizationAssignment StepAP214
-AppliedPersonAndOrganizationAssignment StepAP214
-AppliedPresentedItem StepAP214
-AppliedSecurityClassificationAssignment StepAP214
-ApprovalItem StepAP214
-AutoDesignActualDateAndTimeAssignment StepAP214
-AutoDesignActualDateAssignment StepAP214
-AutoDesignApprovalAssignment StepAP214
-AutoDesignDateAndPersonAssignment StepAP214
-AutoDesignDateAndPersonItem StepAP214
-AutoDesignDateAndTimeItem StepAP214
-AutoDesignDatedItem StepAP214
-AutoDesignDocumentReference StepAP214
-AutoDesignGeneralOrgItem StepAP214
-AutoDesignGroupAssignment StepAP214
-AutoDesignGroupedItem StepAP214
-AutoDesignNominalDateAndTimeAssignment StepAP214
-AutoDesignNominalDateAssignment StepAP214
-AutoDesignOrganizationAssignment StepAP214
-AutoDesignOrganizationItem StepAP214
-AutoDesignPersonAndOrganizationAssignment StepAP214
-AutoDesignPresentedItem StepAP214
-AutoDesignPresentedItemSelect StepAP214
-AutoDesignReferencingItem StepAP214
-AutoDesignSecurityClassificationAssignment StepAP214
-Class StepAP214
-DateAndTimeItem StepAP214
-DateItem StepAP214
-DocumentReferenceItem StepAP214
-ExternalIdentificationItem StepAP214
-ExternallyDefinedClass StepAP214
-ExternallyDefinedGeneralProperty StepAP214
-GroupItem StepAP214
-OrganizationItem StepAP214
-PersonAndOrganizationItem StepAP214
-PresentedItemSelect StepAP214
-Protocol StepAP214
-RepItemGroup StepAP214
-SecurityClassificationItem StepAP214
-
-#===============================================
-#             package StepAP242
-#===============================================
-DraughtingModelItemAssociation StepAP242
-GeometricItemSpecificUsage StepAP242
-IdAttribute StepAP242
-IdAttributeSelect StepAP242
-ItemIdentifiedRepresentationUsage StepAP242
-ItemIdentifiedRepresentationUsageDefinition StepAP242
-
-#===============================================
-#             package StepBasic
-#===============================================
-Action StepBasic
-ActionAssignment StepBasic
-ActionMethod StepBasic
-ActionRequestAssignment StepBasic
-ActionRequestSolution StepBasic
-Address StepBasic
-ApplicationContext StepBasic
-ApplicationContextElement StepBasic
-ApplicationProtocolDefinition StepBasic
-Approval StepBasic
-ApprovalAssignment StepBasic
-ApprovalDateTime StepBasic
-ApprovalPersonOrganization StepBasic
-ApprovalRelationship StepBasic
-ApprovalRole StepBasic
-ApprovalStatus StepBasic
-AreaUnit StepBasic
-CalendarDate StepBasic
-Certification StepBasic
-CertificationAssignment StepBasic
-CertificationType StepBasic
-CharacterizedObject StepBasic
-Contract StepBasic
-ContractAssignment StepBasic
-ContractType StepBasic
-ConversionBasedUnit StepBasic
-ConversionBasedUnitAndAreaUnit StepBasic
-ConversionBasedUnitAndLengthUnit StepBasic
-ConversionBasedUnitAndMassUnit StepBasic
-ConversionBasedUnitAndPlaneAngleUnit StepBasic
-ConversionBasedUnitAndRatioUnit StepBasic
-ConversionBasedUnitAndSolidAngleUnit StepBasic
-ConversionBasedUnitAndTimeUnit StepBasic
-ConversionBasedUnitAndVolumeUnit StepBasic
-CoordinatedUniversalTimeOffset StepBasic
-Date StepBasic
-DateAndTime StepBasic
-DateAndTimeAssignment StepBasic
-DateAssignment StepBasic
-DateRole StepBasic
-DateTimeRole StepBasic
-DateTimeSelect StepBasic
-DerivedUnit StepBasic
-DerivedUnitElement StepBasic
-DesignContext StepBasic
-DigitalDocument StepBasic
-DimensionalExponents StepBasic
-Document StepBasic
-DocumentFile StepBasic
-DocumentProductAssociation StepBasic
-DocumentProductEquivalence StepBasic
-DocumentReference StepBasic
-DocumentRelationship StepBasic
-DocumentRepresentationType StepBasic
-DocumentType StepBasic
-DocumentUsageConstraint StepBasic
-Effectivity StepBasic
-EffectivityAssignment StepBasic
-EulerAngles StepBasic
-ExternalIdentificationAssignment StepBasic
-ExternallyDefinedItem StepBasic
-ExternalSource StepBasic
-GeneralProperty StepBasic
-Group StepBasic
-GroupAssignment StepBasic
-GroupRelationship StepBasic
-IdentificationAssignment StepBasic
-IdentificationRole StepBasic
-LengthMeasureWithUnit StepBasic
-LengthUnit StepBasic
-LocalTime StepBasic
-MassMeasureWithUnit StepBasic
-MassUnit StepBasic
-MeasureValueMember StepBasic
-MeasureWithUnit StepBasic
-MechanicalContext StepBasic
-NameAssignment StepBasic
-NamedUnit StepBasic
-ObjectRole StepBasic
-OrdinalDate StepBasic
-Organization StepBasic
-OrganizationalAddress StepBasic
-OrganizationAssignment StepBasic
-OrganizationRole StepBasic
-Person StepBasic
-PersonalAddress StepBasic
-PersonAndOrganization StepBasic
-PersonAndOrganizationAssignment StepBasic
-PersonAndOrganizationRole StepBasic
-PersonOrganizationSelect StepBasic
-PhysicallyModeledProductDefinition StepBasic
-PlaneAngleMeasureWithUnit StepBasic
-PlaneAngleUnit StepBasic
-Product StepBasic
-ProductCategory StepBasic
-ProductCategoryRelationship StepBasic
-ProductConceptContext StepBasic
-ProductContext StepBasic
-ProductDefinition StepBasic
-ProductDefinitionContext StepBasic
-ProductDefinitionEffectivity StepBasic
-ProductDefinitionFormation StepBasic
-ProductDefinitionFormationRelationship StepBasic
-ProductDefinitionFormationWithSpecifiedSource StepBasic
-ProductDefinitionOrReference StepBasic
-ProductDefinitionReference StepBasic
-ProductDefinitionReferenceWithLocalRepresentation StepBasic
-ProductDefinitionRelationship StepBasic
-ProductDefinitionWithAssociatedDocuments StepBasic
-ProductOrFormationOrDefinition StepBasic
-ProductRelatedProductCategory StepBasic
-ProductType StepBasic
-RatioMeasureWithUnit StepBasic
-RatioUnit StepBasic
-RoleAssociation StepBasic
-RoleSelect StepBasic
-SecurityClassification StepBasic
-SecurityClassificationAssignment StepBasic
-SecurityClassificationLevel StepBasic
-SiUnit StepBasic
-SiUnitAndAreaUnit StepBasic
-SiUnitAndLengthUnit StepBasic
-SiUnitAndMassUnit StepBasic
-SiUnitAndPlaneAngleUnit StepBasic
-SiUnitAndRatioUnit StepBasic
-SiUnitAndSolidAngleUnit StepBasic
-SiUnitAndThermodynamicTemperatureUnit StepBasic
-SiUnitAndTimeUnit StepBasic
-SiUnitAndVolumeUnit StepBasic
-SizeMember StepBasic
-SizeSelect StepBasic
-SolidAngleMeasureWithUnit StepBasic
-SolidAngleUnit StepBasic
-SourceItem StepBasic
-ThermodynamicTemperatureUnit StepBasic
-TimeMeasureWithUnit StepBasic
-TimeUnit StepBasic
-UncertaintyMeasureWithUnit StepBasic
-Unit StepBasic
-VersionedActionRequest StepBasic
-VolumeUnit StepBasic
-WeekOfYearAndDayDate StepBasic
-
-#===============================================
-#             package StepDimTol
-#===============================================
-AngularityTolerance StepDimTol
-CircularRunoutTolerance StepDimTol
-CoaxialityTolerance StepDimTol
-CommonDatum StepDimTol
-ConcentricityTolerance StepDimTol
-CylindricityTolerance StepDimTol
-Datum StepDimTol
-DatumFeature StepDimTol
-DatumOrCommonDatum StepDimTol
-DatumReference StepDimTol
-DatumReferenceCompartment StepDimTol
-DatumReferenceElement StepDimTol
-DatumReferenceModifier StepDimTol
-DatumReferenceModifierWithValue StepDimTol
-DatumSystem StepDimTol
-DatumSystemOrReference StepDimTol
-DatumTarget StepDimTol
-FlatnessTolerance StepDimTol
-GeneralDatumReference StepDimTol
-GeometricTolerance StepDimTol
-GeometricToleranceRelationship StepDimTol
-GeometricToleranceTarget StepDimTol
-GeometricToleranceWithDatumReference StepDimTol
-GeometricToleranceWithDefinedAreaUnit StepDimTol
-GeometricToleranceWithDefinedUnit StepDimTol
-GeometricToleranceWithMaximumTolerance StepDimTol
-GeometricToleranceWithModifiers StepDimTol
-GeoTolAndGeoTolWthDatRef StepDimTol
-GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol StepDimTol
-GeoTolAndGeoTolWthDatRefAndGeoTolWthMod StepDimTol
-GeoTolAndGeoTolWthDatRefAndModGeoTolAndPosTol StepDimTol
-GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol StepDimTol
-GeoTolAndGeoTolWthMaxTol StepDimTol
-GeoTolAndGeoTolWthMod StepDimTol
-LineProfileTolerance StepDimTol
-ModifiedGeometricTolerance StepDimTol
-NonUniformZoneDefinition StepDimTol
-ParallelismTolerance StepDimTol
-PerpendicularityTolerance StepDimTol
-PlacedDatumTargetFeature StepDimTol
-PositionTolerance StepDimTol
-ProjectedZoneDefinition StepDimTol
-RoundnessTolerance StepDimTol
-RunoutZoneDefinition StepDimTol
-RunoutZoneOrientation StepDimTol
-ShapeToleranceSelect StepDimTol
-SimpleDatumReferenceModifierMember StepDimTol
-StraightnessTolerance StepDimTol
-SurfaceProfileTolerance StepDimTol
-SymmetryTolerance StepDimTol
-ToleranceZone StepDimTol
-ToleranceZoneDefinition StepDimTol
-ToleranceZoneForm StepDimTol
-ToleranceZoneTarget StepDimTol
-TotalRunoutTolerance StepDimTol
-UnequallyDisposedGeometricTolerance StepDimTol
-
-#===============================================
-#             package StepElement
-#===============================================
-AnalysisItemWithinRepresentation StepElement
-Curve3dElementDescriptor StepElement
-CurveElementEndReleasePacket StepElement
-CurveElementFreedom StepElement
-CurveElementFreedomMember StepElement
-CurveElementPurpose StepElement
-CurveElementPurposeMember StepElement
-CurveElementSectionDefinition StepElement
-CurveElementSectionDerivedDefinitions StepElement
-ElementAspect StepElement
-ElementAspectMember StepElement
-ElementDescriptor StepElement
-ElementMaterial StepElement
-MeasureOrUnspecifiedValue StepElement
-MeasureOrUnspecifiedValueMember StepElement
-Surface3dElementDescriptor StepElement
-SurfaceElementProperty StepElement
-SurfaceElementPurpose StepElement
-SurfaceElementPurposeMember StepElement
-SurfaceSection StepElement
-SurfaceSectionField StepElement
-SurfaceSectionFieldConstant StepElement
-SurfaceSectionFieldVarying StepElement
-UniformSurfaceSection StepElement
-Volume3dElementDescriptor StepElement
-VolumeElementPurpose StepElement
-VolumeElementPurposeMember StepElement
-
-#===============================================
-#             package StepFEA
-#===============================================
-AlignedCurve3dElementCoordinateSystem StepFEA
-AlignedSurface3dElementCoordinateSystem StepFEA
-ArbitraryVolume3dElementCoordinateSystem StepFEA
-ConstantSurface3dElementCoordinateSystem StepFEA
-Curve3dElementProperty StepFEA
-Curve3dElementRepresentation StepFEA
-CurveElementEndCoordinateSystem StepFEA
-CurveElementEndOffset StepFEA
-CurveElementEndRelease StepFEA
-CurveElementInterval StepFEA
-CurveElementIntervalConstant StepFEA
-CurveElementIntervalLinearlyVarying StepFEA
-CurveElementLocation StepFEA
-DegreeOfFreedom StepFEA
-DegreeOfFreedomMember StepFEA
-DummyNode StepFEA
-ElementGeometricRelationship StepFEA
-ElementGroup StepFEA
-ElementOrElementGroup StepFEA
-ElementRepresentation StepFEA
-FeaAreaDensity StepFEA
-FeaAxis2Placement3d StepFEA
-FeaCurveSectionGeometricRelationship StepFEA
-FeaGroup StepFEA
-FeaLinearElasticity StepFEA
-FeaMassDensity StepFEA
-FeaMaterialPropertyRepresentation StepFEA
-FeaMaterialPropertyRepresentationItem StepFEA
-FeaModel StepFEA
-FeaModel3d StepFEA
-FeaModelDefinition StepFEA
-FeaMoistureAbsorption StepFEA
-FeaParametricPoint StepFEA
-FeaRepresentationItem StepFEA
-FeaSecantCoefficientOfLinearThermalExpansion StepFEA
-FeaShellBendingStiffness StepFEA
-FeaShellMembraneBendingCouplingStiffness StepFEA
-FeaShellMembraneStiffness StepFEA
-FeaShellShearStiffness StepFEA
-FeaSurfaceSectionGeometricRelationship StepFEA
-FeaTangentialCoefficientOfLinearThermalExpansion StepFEA
-FreedomAndCoefficient StepFEA
-FreedomsList StepFEA
-GeometricNode StepFEA
-Node StepFEA
-NodeDefinition StepFEA
-NodeGroup StepFEA
-NodeRepresentation StepFEA
-NodeSet StepFEA
-NodeWithSolutionCoordinateSystem StepFEA
-NodeWithVector StepFEA
-ParametricCurve3dElementCoordinateDirection StepFEA
-ParametricCurve3dElementCoordinateSystem StepFEA
-ParametricSurface3dElementCoordinateSystem StepFEA
-Surface3dElementRepresentation StepFEA
-SymmetricTensor22d StepFEA
-SymmetricTensor23d StepFEA
-SymmetricTensor23dMember StepFEA
-SymmetricTensor42d StepFEA
-SymmetricTensor43d StepFEA
-SymmetricTensor43dMember StepFEA
-Volume3dElementRepresentation StepFEA
-
-#===============================================
-#             package StepGeom
-#===============================================
-Axis1Placement StepGeom
-Axis2Placement StepGeom
-Axis2Placement2d StepGeom
-Axis2Placement3d StepGeom
-BezierCurve StepGeom
-BezierCurveAndRationalBSplineCurve StepGeom
-BezierSurface StepGeom
-BezierSurfaceAndRationalBSplineSurface StepGeom
-BoundaryCurve StepGeom
-BoundedCurve StepGeom
-BoundedSurface StepGeom
-BSplineCurve StepGeom
-BSplineCurveWithKnots StepGeom
-BSplineCurveWithKnotsAndRationalBSplineCurve StepGeom
-BSplineSurface StepGeom
-BSplineSurfaceWithKnots StepGeom
-BSplineSurfaceWithKnotsAndRationalBSplineSurface StepGeom
-CartesianPoint StepGeom
-CartesianTransformationOperator StepGeom
-CartesianTransformationOperator2d StepGeom
-CartesianTransformationOperator3d StepGeom
-Circle StepGeom
-CompositeCurve StepGeom
-CompositeCurveOnSurface StepGeom
-CompositeCurveSegment StepGeom
-Conic StepGeom
-ConicalSurface StepGeom
-Curve StepGeom
-CurveBoundedSurface StepGeom
-CurveOnSurface StepGeom
-CurveReplica StepGeom
-CylindricalSurface StepGeom
-DegeneratePcurve StepGeom
-DegenerateToroidalSurface StepGeom
-Direction StepGeom
-ElementarySurface StepGeom
-Ellipse StepGeom
-EvaluatedDegeneratePcurve StepGeom
-GeometricRepresentationContext StepGeom
-GeometricRepresentationContextAndGlobalUnitAssignedContext StepGeom
-GeometricRepresentationContextAndParametricRepresentationContext StepGeom
-GeometricRepresentationItem StepGeom
-GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx StepGeom
-Hyperbola StepGeom
-IntersectionCurve StepGeom
-Line StepGeom
-OffsetCurve3d StepGeom
-OffsetSurface StepGeom
-OrientedSurface StepGeom
-OuterBoundaryCurve StepGeom
-Parabola StepGeom
-Pcurve StepGeom
-PcurveOrSurface StepGeom
-Placement StepGeom
-Plane StepGeom
-Point StepGeom
-PointOnCurve StepGeom
-PointOnSurface StepGeom
-PointReplica StepGeom
-Polyline StepGeom
-QuasiUniformCurve StepGeom
-QuasiUniformCurveAndRationalBSplineCurve StepGeom
-QuasiUniformSurface StepGeom
-QuasiUniformSurfaceAndRationalBSplineSurface StepGeom
-RationalBSplineCurve StepGeom
-RationalBSplineSurface StepGeom
-RectangularCompositeSurface StepGeom
-RectangularTrimmedSurface StepGeom
-ReparametrisedCompositeCurveSegment StepGeom
-SeamCurve StepGeom
-SphericalSurface StepGeom
-Surface StepGeom
-SurfaceBoundary StepGeom
-SurfaceCurveAndBoundedCurve StepGeom
-SurfaceOfLinearExtrusion StepGeom
-SurfaceOfRevolution StepGeom
-SurfacePatch StepGeom
-SurfaceReplica StepGeom
-SweptSurface StepGeom
-ToroidalSurface StepGeom
-TrimmedCurve StepGeom
-TrimmingMember StepGeom
-TrimmingSelect StepGeom
-UniformCurve StepGeom
-UniformCurveAndRationalBSplineCurve StepGeom
-UniformSurface StepGeom
-UniformSurfaceAndRationalBSplineSurface StepGeom
-Vector StepGeom
-VectorOrDirection StepGeom
-
-#===============================================
-#             package StepRepr
-#===============================================
-AllAroundShapeAspect StepRepr
-Apex StepRepr
-AssemblyComponentUsage StepRepr
-AssemblyComponentUsageSubstitute StepRepr
-BetweenShapeAspect StepRepr
-CentreOfSymmetry StepRepr
-CharacterizedDefinition StepRepr
-CharacterizedRepresentation StepRepr
-CompGroupShAspAndCompShAspAndDatumFeatAndShAsp StepRepr
-CompositeGroupShapeAspect StepRepr
-CompositeShapeAspect StepRepr
-CompoundRepresentationItem StepRepr
-CompShAspAndDatumFeatAndShAsp StepRepr
-ConfigurationDesign StepRepr
-ConfigurationDesignItem StepRepr
-ConfigurationEffectivity StepRepr
-ConfigurationItem StepRepr
-ConstructiveGeometryRepresentation StepRepr
-ConstructiveGeometryRepresentationRelationship StepRepr
-ContinuosShapeAspect StepRepr
-DataEnvironment StepRepr
-DefinitionalRepresentation StepRepr
-DerivedShapeAspect StepRepr
-DescriptiveRepresentationItem StepRepr
-Extension StepRepr
-ExternallyDefinedRepresentation StepRepr
-FeatureForDatumTargetRelationship StepRepr
-FunctionallyDefinedTransformation StepRepr
-GeometricAlignment StepRepr
-GlobalUncertaintyAssignedContext StepRepr
-GlobalUnitAssignedContext StepRepr
-IntegerRepresentationItem StepRepr
-ItemDefinedTransformation StepRepr
-MakeFromUsageOption StepRepr
-MappedItem StepRepr
-MaterialDesignation StepRepr
-MaterialProperty StepRepr
-MaterialPropertyRepresentation StepRepr
-MeasureRepresentationItem StepRepr
-NextAssemblyUsageOccurrence StepRepr
-ParallelOffset StepRepr
-ParametricRepresentationContext StepRepr
-PerpendicularTo StepRepr
-ProductConcept StepRepr
-ProductDefinitionShape StepRepr
-ProductDefinitionUsage StepRepr
-PromissoryUsageOccurrence StepRepr
-PropertyDefinition StepRepr
-PropertyDefinitionRelationship StepRepr
-PropertyDefinitionRepresentation StepRepr
-QuantifiedAssemblyComponentUsage StepRepr
-Representation StepRepr
-RepresentationContext StepRepr
-RepresentationItem StepRepr
-RepresentationMap StepRepr
-RepresentationRelationship StepRepr
-RepresentationRelationshipWithTransformation StepRepr
-RepresentedDefinition StepRepr
-ReprItemAndLengthMeasureWithUnit StepRepr
-ReprItemAndLengthMeasureWithUnitAndQRI StepRepr
-ReprItemAndMeasureWithUnit StepRepr
-ReprItemAndMeasureWithUnitAndQRI StepRepr
-ReprItemAndPlaneAngleMeasureWithUnit StepRepr
-ReprItemAndPlaneAngleMeasureWithUnitAndQRI StepRepr
-ShapeAspect StepRepr
-ShapeAspectDerivingRelationship StepRepr
-ShapeAspectRelationship StepRepr
-ShapeAspectTransition StepRepr
-ShapeDefinition StepRepr
-ShapeRepresentationRelationship StepRepr
-ShapeRepresentationRelationshipWithTransformation StepRepr
-SpecifiedHigherUsageOccurrence StepRepr
-StructuralResponseProperty StepRepr
-StructuralResponsePropertyDefinitionRepresentation StepRepr
-SuppliedPartRelationship StepRepr
-Tangent StepRepr
-Transformation StepRepr
-ValueRange StepRepr
-ValueRepresentationItem StepRepr
-
-#===============================================
-#             package StepShape
-#===============================================
-AdvancedBrepShapeRepresentation StepShape
-AdvancedFace StepShape
-AngularLocation StepShape
-AngularSize StepShape
-Block StepShape
-BooleanOperand StepShape
-BooleanResult StepShape
-BoxDomain StepShape
-BoxedHalfSpace StepShape
-BrepWithVoids StepShape
-ClosedShell StepShape
-CompoundShapeRepresentation StepShape
-ConnectedEdgeSet StepShape
-ConnectedFaceSet StepShape
-ConnectedFaceShapeRepresentation StepShape
-ConnectedFaceSubSet StepShape
-ContextDependentShapeRepresentation StepShape
-CsgPrimitive StepShape
-CsgSelect StepShape
-CsgShapeRepresentation StepShape
-CsgSolid StepShape
-DefinitionalRepresentationAndShapeRepresentation StepShape
-DimensionalCharacteristic StepShape
-DimensionalCharacteristicRepresentation StepShape
-DimensionalLocation StepShape
-DimensionalLocationWithPath StepShape
-DimensionalSize StepShape
-DimensionalSizeWithPath StepShape
-DirectedDimensionalLocation StepShape
-Edge StepShape
-EdgeBasedWireframeModel StepShape
-EdgeBasedWireframeShapeRepresentation StepShape
-EdgeCurve StepShape
-EdgeLoop StepShape
-ExtrudedAreaSolid StepShape
-ExtrudedFaceSolid StepShape
-Face StepShape
-FaceBasedSurfaceModel StepShape
-FaceBound StepShape
-FaceOuterBound StepShape
-FaceSurface StepShape
-FacetedBrep StepShape
-FacetedBrepAndBrepWithVoids StepShape
-FacetedBrepShapeRepresentation StepShape
-GeometricallyBoundedSurfaceShapeRepresentation StepShape
-GeometricallyBoundedWireframeShapeRepresentation StepShape
-GeometricCurveSet StepShape
-GeometricSet StepShape
-GeometricSetSelect StepShape
-HalfSpaceSolid StepShape
-LimitsAndFits StepShape
-Loop StepShape
-LoopAndPath StepShape
-ManifoldSolidBrep StepShape
-ManifoldSurfaceShapeRepresentation StepShape
-MeasureQualification StepShape
-MeasureRepresentationItemAndQualifiedRepresentationItem StepShape
-NonManifoldSurfaceShapeRepresentation StepShape
-OpenShell StepShape
-OrientedClosedShell StepShape
-OrientedEdge StepShape
-OrientedFace StepShape
-OrientedOpenShell StepShape
-OrientedPath StepShape
-Path StepShape
-PlusMinusTolerance StepShape
-PointRepresentation StepShape
-PolyLoop StepShape
-PrecisionQualifier StepShape
-QualifiedRepresentationItem StepShape
-ReversibleTopologyItem StepShape
-RevolvedAreaSolid StepShape
-RevolvedFaceSolid StepShape
-RightAngularWedge StepShape
-RightCircularCone StepShape
-RightCircularCylinder StepShape
-SeamEdge StepShape
-ShapeDefinitionRepresentation StepShape
-ShapeDimensionRepresentation StepShape
-ShapeDimensionRepresentationItem StepShape
-ShapeRepresentation StepShape
-ShapeRepresentationWithParameters StepShape
-Shell StepShape
-ShellBasedSurfaceModel StepShape
-SolidModel StepShape
-SolidReplica StepShape
-Sphere StepShape
-Subedge StepShape
-Subface StepShape
-SurfaceModel StepShape
-SweptAreaSolid StepShape
-SweptFaceSolid StepShape
-ToleranceMethodDefinition StepShape
-ToleranceValue StepShape
-TopologicalRepresentationItem StepShape
-Torus StepShape
-TransitionalShapeRepresentation StepShape
-TypeQualifier StepShape
-ValueFormatTypeQualifier StepShape
-ValueQualifier StepShape
-Vertex StepShape
-VertexLoop StepShape
-VertexPoint StepShape
-
-#===============================================
-#             package StepVisual
-#===============================================
-AnnotationCurveOccurrence StepVisual
-AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem StepVisual
-AnnotationFillArea StepVisual
-AnnotationFillAreaOccurrence StepVisual
-AnnotationOccurrence StepVisual
-AnnotationPlane StepVisual
-AnnotationPlaneElement StepVisual
-AnnotationText StepVisual
-AnnotationTextOccurrence StepVisual
-AreaInSet StepVisual
-AreaOrView StepVisual
-BackgroundColour StepVisual
-BoxCharacteristicSelect StepVisual
-CameraImage StepVisual
-CameraImage2dWithScale StepVisual
-CameraImage3dWithScale StepVisual
-CameraModel StepVisual
-CameraModelD2 StepVisual
-CameraModelD3 StepVisual
-CameraModelD3MultiClipping StepVisual
-CameraModelD3MultiClippingInterectionSelect StepVisual
-CameraModelD3MultiClippingIntersection StepVisual
-CameraModelD3MultiClippingUnion StepVisual
-CameraModelD3MultiClippingUnionSelect StepVisual
-CameraUsage StepVisual
-CharacterizedObjectAndCharacterizedRepresentationAndDraughtingModelAndRepresentation StepVisual
-Colour StepVisual
-ColourRgb StepVisual
-ColourSpecification StepVisual
-CompositeText StepVisual
-CompositeTextWithExtent StepVisual
-ContextDependentInvisibility StepVisual
-ContextDependentOverRidingStyledItem StepVisual
-CurveStyle StepVisual
-CurveStyleFont StepVisual
-CurveStyleFontPattern StepVisual
-CurveStyleFontSelect StepVisual
-DirectionCountSelect StepVisual
-DraughtingAnnotationOccurrence StepVisual
-DraughtingCallout StepVisual
-DraughtingCalloutElement StepVisual
-DraughtingModel StepVisual
-DraughtingPreDefinedColour StepVisual
-DraughtingPreDefinedCurveFont StepVisual
-ExternallyDefinedCurveFont StepVisual
-ExternallyDefinedTextFont StepVisual
-FillAreaStyle StepVisual
-FillAreaStyleColour StepVisual
-FillStyleSelect StepVisual
-FontSelect StepVisual
-Invisibility StepVisual
-InvisibilityContext StepVisual
-InvisibleItem StepVisual
-LayeredItem StepVisual
-MarkerMember StepVisual
-MarkerSelect StepVisual
-MechanicalDesignGeometricPresentationArea StepVisual
-MechanicalDesignGeometricPresentationRepresentation StepVisual
-NullStyleMember StepVisual
-OverRidingStyledItem StepVisual
-PlanarBox StepVisual
-PlanarExtent StepVisual
-PointStyle StepVisual
-PreDefinedColour StepVisual
-PreDefinedCurveFont StepVisual
-PreDefinedItem StepVisual
-PreDefinedTextFont StepVisual
-PresentationArea StepVisual
-PresentationLayerAssignment StepVisual
-PresentationLayerUsage StepVisual
-PresentationRepresentation StepVisual
-PresentationRepresentationSelect StepVisual
-PresentationSet StepVisual
-PresentationSize StepVisual
-PresentationSizeAssignmentSelect StepVisual
-PresentationStyleAssignment StepVisual
-PresentationStyleByContext StepVisual
-PresentationStyleSelect StepVisual
-PresentationView StepVisual
-PresentedItem StepVisual
-PresentedItemRepresentation StepVisual
-StyleContextSelect StepVisual
-StyledItem StepVisual
-StyledItemTarget StepVisual
-SurfaceSideStyle StepVisual
-SurfaceStyleBoundary StepVisual
-SurfaceStyleControlGrid StepVisual
-SurfaceStyleElementSelect StepVisual
-SurfaceStyleFillArea StepVisual
-SurfaceStyleParameterLine StepVisual
-SurfaceStyleSegmentationCurve StepVisual
-SurfaceStyleSilhouette StepVisual
-SurfaceStyleUsage StepVisual
-Template StepVisual
-TemplateInstance StepVisual
-TextLiteral StepVisual
-TextOrCharacter StepVisual
-TextStyle StepVisual
-TextStyleForDefinedFont StepVisual
-TextStyleWithBoxCharacteristics StepVisual
-ViewVolume StepVisual
-TessellatedAnnotationOccurrence StepVisual
-TessellatedItem StepVisual
-TessellatedGeometricSet StepVisual
-TessellatedCurveSet StepVisual
-CoordinatesList StepVisual
-SurfaceStyleTransparent StepVisual
-SurfaceStyleReflectanceAmbient StepVisual
-SurfaceStyleRendering StepVisual
-SurfaceStyleRenderingWithProperties StepVisual
index 10ed6240482e5934403005be1cd3504328872f0f..6a39a4ee6d5b72e6b1b3b51bd6d8f62e792e8c09 100644 (file)
 This is an auxiliary tool to generate code for implementation of new STEP entities into OCCT.
 
+This tool contains from two packages: ExpToCasExe and Express(+TKExpress)
+
+Package Express contains classes for all needed items from STEP schema.
+
+Package ExpToCasExe is a base package for generation;
+This packages includes following files:
+  exptocas.lex
+  exptocas.yacc
+  exptocas.tab.cxx
+  exptocas.tab.hxx
+  ExpToCasExe.cxx
+  EXTERNLIB
+  FILES
+  FlexLexer.h
+  lex.exptocas.cxx
+  occt_existed_step_entities.lst
+
+Files exptocas.lex, exptocas.yacc and ExpToCasExe.cxx are a base files for generator.
+Files exptocas.tab.cxx, exptocas.tab.hxx, lex.exptocas.cxx and FlexLexer.h are a result
+of generation from files exptocas.lex and exptocas.yac.
+Result of building will be executable file ExpToCasExe.exe.
+
+WARNING: It is not recommended to modify files exptocas.tab.cxx, exptocas.tab.hxx, lex.exptocas.cxx
+and FlexLexer.h manually.
+
+!!!NOTE: It is strongly prohibited to commit manually changed files exptocas.tab.cxx, exptocas.tab.hxx,
+lex.exptocas.cxx and FlexLexer.h.
+
+File occt_existed_step_entities.lst contains list of STEP entities implemented in OCC at this moment.
+
+
 Example how to run ExpToCas tool:
-ExpToCasExe.exe schemaAP000.exp to_add.lst occt_step_entities.lst N
+
+    ExpToCasExe.exe schema.exp new_entities.lst occt_existed_step_entities.lst N
 
 where
-* schemaAP000.exp - STEP schema, some lines in can be not parsed, just delete them.
-ap242.exp - cleaned schema for AP242 edition 2.
-* to_add.lst  - list of necessary entities, each line should be like this "ShapeAspect StepRepr".
-* occt_step_entities.lst - list of already implemented entities, please update the file after each generation.
-* N - a first index for entity registration (files StepAP214_Protocol.cxx, RWStepAP214_GeneralModule.cxx,RWStepAP214_ReadWriteModule.cxx)
+  * schema.exp - STEP schema
+  * new_entities.lst - list of entities which we have to generate,
+                       each line should be like this "ClassName PackageName"
+                       (see example in the file occt_existed_step_entities.lst).
+  * occt_existed_step_entities.lst - list of already implemented STEP entities
+  * N - a first index for entity registration
+        (value of it you can recieve after analyse of files StepAP214_Protocol.cxx,
+         RWStepAP214_GeneralModule.cxx, RWStepAP214_ReadWriteModule.cxx)
+
+!!!NOTE: It is strongly recommended to update file occt_existed_step_entities.lst
+         after each generation and not to forget to change date of updation in the
+         first line of this file.
 
 The result of generation consists of several folders:
-* two folders for each package for which new entities was generated.
-* a folder Registration with *.txt files with code to copy into common files (see description of last parameter).
\ No newline at end of file
+  * two folders ("PackageName" and "RWPackageName") for each package for which new entities was generated.
+  * a folder "Registration" with *.txt files with code to copy into common files (see description of last parameter).
+
+
+For generation it is easy to copy to separate directory following files:
+ - ExpToCasExe.exe, TKernel.dll, TKExpress.dll, tbb.dll and tbbmalloc.dll from OCC
+ - STEP schema (schema.exp)
+ - occt_existed_step_entities.lst from package occt/src/ExpToCasExe
+ - file with needed entities new_entities.lst
+and from this directoty execute command:
+ ExpToCasExe.exe schema.exp new_entities.lst occt_existed_step_entities.lst N
+
+NOTE:
+Some of STEP schemes may be not fully corresponded to rules which set in our generator.
+If during generation we recieve a message about syntaxis error you can try to edit schema
+file in order to avoid it. Such approach is reasonable if number of errors is small.
+If there are many errors we have to change existed rules (for debug parser process you can
+uncomment string "//aScanner.set_debug(1);" in the file exptocas.yacc).
+
+NOTE:
+Please, take into account that most of existed entities was generated many years ago.
+Some of them can be not corresonded to last versions of schemes.
+For example we haven`t classes for entity:
+  ENTITY founded_item
+    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)));
+  DERIVE
+    users : SET [0 : ?] OF founded_item_select := using_items(SELF, []);
+  WHERE
+    WR1: SIZEOF(users) > 0;
+    WR2: NOT (SELF IN users);
+  END_ENTITY;
+But some of existed entities (for example - composite_curve_segment) must be inherited from
+this missing entity (at present such existed entities are  inherited from Standard_Transient):
+  ENTITY composite_curve_segment
+  SUBTYPE OF (founded_item);
+    transition : transition_code;
+    same_sense : BOOLEAN;
+    parent_curve : curve;
+  INVERSE
+    using_curves : BAG[1:?] OF composite_curve FOR segments;
+  WHERE
+    wr1 : ('AUTOMOTIVE_DESIGN.BOUNDED_CURVE' IN TYPEOF(parent_curve));
+  END_ENTITY;  -- 10303-42: geometry_schema 
+
+
+
+
index 799bf4ad2c3b950bb021a0f607e8387feb649b2d..58c24f0d9559c18a8569f46b09b39304558a4407 100644 (file)
@@ -1,2 +1 @@
 TKernel
-CSF_TBB
\ No newline at end of file