public static boolean aSubsumesB(RuleItem a, RuleItem b){

    if(!a.consequence().equals(b.consequence()))
      return false;
    if(a.accuracy() < b.accuracy())
      return false;
    for(int k = 0; k < ((a.premise()).items()).length;k++){
      if((a.premise()).itemAt(k) != (b.premise()).itemAt(k)){
	if(((a.premise()).itemAt(k) != -1 && (b.premise()).itemAt(k) != -1) || (b.premise()).itemAt(k) == -1)
	  return false;
      }
      /*if(a.m_consequence.m_items[k] != b.m_consequence.m_items[k]){
            if((a.m_consequence.m_items[k] != -1 && b.m_consequence.m_items[k] != -1) || a.m_consequence.m_items[k] == -1)
                return false;
        }*/
    }
    return true;

  }