(* SCHEMA material_property_definition_schema; *)
FUNCTION acyclic_property_definition_relationship
(relation : property_definition_relationship;
relatives : SET [1:?] OF property_definition;
specific_relation : STRING) : LOGICAL;
LOCAL
x : SET OF property_definition_relationship;
END_LOCAL;
IF relation.relating_property_definition IN
relatives THEN
RETURN (FALSE);
END_IF; -- IN is based in instance equality
x := QUERY (pd <* bag_to_set (USEDIN
(relation.relating_property_definition,
'MATERIAL_PROPERTY_DEFINITION_SCHEMA.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATED_PROPERTY_DEFINITION')) |
specific_relation IN TYPEOF (pd));
REPEAT I := 1 TO HIINDEX(x); -- pre-checked loop
IF NOT acyclic_property_definition_relationship
(x[i],
relatives + relation.relating_property_definition,
specific_relation) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION; -- acyclic_property_definition_relationship
[Top Level Definitions] [Exit]
Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:13:58-04:00