code: public Graph<Attribute>[] createIDS(Graph<AttributeOccurrence>[] idp) {
          int p;
          int i;
          Graph<Attribute>[] ids;
          AttributeOccurrence left;
          AttributeOccurrence right;
          EdgeIterator<AttributeOccurrence> iter;
  
          ids = new Graph[symbols.last() + 1];
          for (i = 0; i < ids.length; i++) {
              ids[i] = new Graph<Attribute>();
          }
          for (p = 0; p < idp.length; p++) {
              iter = idp[p].edges();
              while (iter.step()) {
                  left = iter.left();
                  right = iter.right();
                  if (left.sameSymbolOccurrence(right)) {
                      ids[left.attr.symbol].addEdge(left.attr, right.attr);
                  }
              }
          }
          return ids;
      }
docs: Computes "induced dependencies between attributes of symbols" IDS (Definition 3).
  
  @return Array indexed by symbols; relation with pairs of attributes.