Instances[] split = computeSimpleStats(j, data, stats);
Instances[] split = computeSimpleStats(j, data, stats, null);
  public double minDataDLIfDeleted(int index, double expFPRate,				   boolean checkErr){    //System.out.println("!!!Enter without: ");    double[] rulesetStat = new double[6]; // Stats of ruleset if deleted    int more = m_Ruleset.size() - 1 - index; // How many rules after?    FastVector indexPlus = new FastVector(more); // Their stats	    // 0...(index-1) are OK	    for(int j=0; j<index; j++){      // Covered stats are cumulative      rulesetStat[0] += ((double[])m_SimpleStats.elementAt(j))[0];      rulesetStat[2] += ((double[])m_SimpleStats.elementAt(j))[2];      rulesetStat[4] += ((double[])m_SimpleStats.elementAt(j))[4];    }	    // Recount data from index+1    Instances data = (index == 0) ?        m_Data : ((Instances[])m_Filtered.elementAt(index-1))[1];	    //System.out.println("!!!without: " + data.sumOfWeights());    for(int j=(index+1); j<m_Ruleset.size(); j++){      double[] stats = new double[6];      Instances[] split = computeSimpleStats(j, data, stats);      indexPlus.addElement(stats);      rulesetStat[0] += stats[0];      rulesetStat[2] += stats[2];      rulesetStat[4] += stats[4];	         data = split[1];    }    // Uncovered stats are those of the last rule    if(more > 0){      rulesetStat[1] = ((double[])indexPlus.lastElement())[1];      rulesetStat[3] = ((double[])indexPlus.lastElement())[3];      rulesetStat[5] = ((double[])indexPlus.lastElement())[5];    }    else if(index > 0){      rulesetStat[1] = 	((double[])m_SimpleStats.elementAt(index-1))[1];      rulesetStat[3] =	((double[])m_SimpleStats.elementAt(index-1))[3];      rulesetStat[5] = 	((double[])m_SimpleStats.elementAt(index-1))[5];    }	    else{ // Null coverage      rulesetStat[1] = ((double[])m_SimpleStats.elementAt(0))[0] +	((double[])m_SimpleStats.elementAt(0))[1];      rulesetStat[3] = ((double[])m_SimpleStats.elementAt(0))[3] +	((double[])m_SimpleStats.elementAt(0))[4];      rulesetStat[5] = ((double[])m_SimpleStats.elementAt(0))[2] +	((double[])m_SimpleStats.elementAt(0))[5];	        }	    // Potential     double potential = 0;    for(int k=index+1; k<m_Ruleset.size(); k++){      double[] ruleStat = (double[])indexPlus.elementAt(k-index-1);      double ifDeleted = potential(k, expFPRate, rulesetStat, 				   ruleStat, checkErr);      if(!Double.isNaN(ifDeleted))	potential += ifDeleted;    }    // Data DL of the ruleset without the rule    // Note that ruleset stats has already been updated to reflect     // deletion if any potential		    double dataDLWithout = dataDL(expFPRate, rulesetStat[0], 				  rulesetStat[1], rulesetStat[4], 				  rulesetStat[5]);    //System.out.println("!!!without: "+dataDLWithout + " |potential: "+    //		   potential);    // Why subtract potential again?  To reflect change of theory DL??    return (dataDLWithout - potential);  }    