Overview Schemas Index

VARIATIONAL_REPRESENTATION_SCHEMA (jsdai.SVariational_representation_schema)


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  ('PARAMETERIZATION_SCHEMA.BOUND_VARIATIONAL_PARAMETER' IN  TYPEOF(item))
  THEN
    IF  'PARAMETERIZATION_SCHEMA.INSTANCE_ATTRIBUTE_REFERENCE' 
      IN  TYPEOF(item\generic_variable.interpretation.semantics)
    THEN
      BEGIN
        iar := item\generic_variable.interpretation.semantics;
        IF  (reps <> using_representations(iar.owning_instance))
        THEN
          RETURN(TRUE);
        END_IF;
      END;
    ELSE RETURN(TRUE); -- parameter NOT attached TO  an instance attribute
    END_IF;
  END_IF;

  IF  ('PARAMETERIZATION_SCHEMA.UNBOUND_VARIATIONAL_PARAMETER' IN  TYPEOF(item))
  THEN
    BEGIN  
      REPEAT  i := 1 TO  n;
        svri := QUERY(q <* reps[i].items | 
          'EXPLICIT_CONSTRAINT_SCHEMA.FREE_FORM_CONSTRAINT' IN  TYPEOF(q));
        IF  SIZEOF(QUERY(r <* svri | 
          item IN  (r.reference_elements + r.constrained_elements))) = 0
        THEN 
          RETURN(TRUE);
        END_IF;
      END_REPEAT;
    END;
  END_IF;

  IF  ('PARAMETERIZATION_SCHEMA.FIXED_INSTANCE_ATTRIBUTE_SET' 
    IN  TYPEOF(item))
  THEN
    REPEAT  i := 1 TO  SIZEOF(item.fixed_attributes);
      IF  (reps <> using_representations(item.fixed_attributes[i]))
      THEN
        RETURN(TRUE);
      END_IF;
    END_REPEAT;
  END_IF;

  IF  ('EXPLICIT_CONSTRAINT_SCHEMA.EXPLICIT_CONSTRAINT' IN  TYPEOF(item))
  THEN
    IF  SIZEOF(QUERY(q <* 
      (item.reference_elements + item.constrained_elements) |
      reps <> using_representations(q))) > 0
    THEN
      RETURN(TRUE);
    END_IF;
  END_IF;

  IF  ('VARIATIONAL_REPRESENTATION_SCHEMA.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN  TYPEOF(item))
  THEN
    BEGIN 
      REPEAT i := 1 TO n;
        svri := QUERY(q <* reps[i].items | 
          'EXPLICIT_GEOMETRIC_CONSTRAINT_SCHEMA.EXPLICIT_GEOMETRIC_CONSTRAINT' IN  TYPEOF(q));
        IF SIZEOF(QUERY(r <* svri | 
          item IN r.reference_elements)) = 0
        THEN
          RETURN(TRUE);
        END_IF;
      END_REPEAT;
    END;
  END_IF;

  RETURN(FALSE);

END_FUNCTION; -- invalidate_vrep_item

public class FInvalidate_vrep_item
          public static Value run(SdaiContext _context, Value item)