// Path: src/main/java/org/semanticweb/owl/explanation/api/ExplanationProgressMonitor.java
// public interface ExplanationProgressMonitor<E> {
// 
//     /**
//      * Called by explanation generators that support progress monitors.  This is
//      * called when a new explanation is found for an entailment when searching for
//      * multiple explanations.
//      *
//      * @param generator            The explanation generator that found the explanation
//      * @param explanation          The explanation that was found
//      *                             for the entailment or <code>false</code> if the explanation generator should stop finding explanations
//      *                             at the next opportunity.
//      * @param allFoundExplanations All of the explanations found so far for the specified entailment
//      */
//     void foundExplanation(ExplanationGenerator<E> generator, Explanation<E> explanation, Set<Explanation<E>> allFoundExplanations);
// 
//     /**
//      * The explanation generator will periodically check to see if it should continue finding explanations by calling
//      * this method.
//      *
//      * @return <code>true</code> if the explanation generator should cancel the explanation finding process or <code>false</code>
//      *         if the explanation generator should continue.
//      */
//     boolean isCancelled();
// }


import org.semanticweb.owl.explanation.api.ExplanationProgressMonitor;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.util.AxiomSubjectProvider;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
package org.semanticweb.owl.explanation.impl.blackbox;



/**
 * Author: Matthew Horridge<br>
 * The University of Manchester<br>
 * Bio-Health Informatics Group<br>
 * Date: 13/01/2011
 */
public class OrderedDivideAndConquerStrategy implements ContractionStrategy {

    private DivideAndConquerContractionStrategy delegate = new DivideAndConquerContractionStrategy();

    private int count = 0;

// Path: src/main/java/org/semanticweb/owl/explanation/api/ExplanationProgressMonitor.java
// public interface ExplanationProgressMonitor<E> {
// 
//     /**
//      * Called by explanation generators that support progress monitors.  This is
//      * called when a new explanation is found for an entailment when searching for
//      * multiple explanations.
//      *
//      * @param generator            The explanation generator that found the explanation
//      * @param explanation          The explanation that was found
//      *                             for the entailment or <code>false</code> if the explanation generator should stop finding explanations
//      *                             at the next opportunity.
//      * @param allFoundExplanations All of the explanations found so far for the specified entailment
//      */
//     void foundExplanation(ExplanationGenerator<E> generator, Explanation<E> explanation, Set<Explanation<E>> allFoundExplanations);
// 
//     /**
//      * The explanation generator will periodically check to see if it should continue finding explanations by calling
//      * this method.
//      *
//      * @return <code>true</code> if the explanation generator should cancel the explanation finding process or <code>false</code>
//      *         if the explanation generator should continue.
//      */
//     boolean isCancelled();
// }


// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/OrderedDivideAndConquerStrategy.java
import org.semanticweb.owl.explanation.api.ExplanationProgressMonitor;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.util.AxiomSubjectProvider;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;

package org.semanticweb.owl.explanation.impl.blackbox;



/**
 * Author: Matthew Horridge<br>
 * The University of Manchester<br>
 * Bio-Health Informatics Group<br>
 * Date: 13/01/2011
 */
public class OrderedDivideAndConquerStrategy implements ContractionStrategy {

    private DivideAndConquerContractionStrategy delegate = new DivideAndConquerContractionStrategy();

    private int count = 0;

    public Set<OWLAxiom> doPruning(Set<OWLAxiom> axioms, EntailmentChecker checker, ExplanationProgressMonitor<?> progressMonitor) {