/* Copyright 2008, 2009, 2010 by the Oxford University Computing Laboratory This file is part of HermiT. HermiT is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. HermiT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with HermiT. If not, see <http://www.gnu.org/licenses/>. */ package org.semanticweb.HermiT.monitor; import org.semanticweb.HermiT.model.AnnotatedEquality; import org.semanticweb.HermiT.model.DataRange; import org.semanticweb.HermiT.model.ExistentialConcept; import org.semanticweb.HermiT.tableau.BranchingPoint; import org.semanticweb.HermiT.tableau.DLClauseEvaluator; import org.semanticweb.HermiT.tableau.DatatypeManager; import org.semanticweb.HermiT.tableau.GroundDisjunction; import org.semanticweb.HermiT.tableau.Node; import org.semanticweb.HermiT.tableau.ReasoningTaskDescription; import org.semanticweb.HermiT.tableau.Tableau; public interface TableauMonitor { void setTableau(Tableau tableau); void isSatisfiableStarted(ReasoningTaskDescription reasoningTaskDescription); void isSatisfiableFinished(ReasoningTaskDescription reasoningTaskDescription,boolean result); void tableauCleared(); void saturateStarted(); void saturateFinished(boolean modelFound); void iterationStarted(); void iterationFinished(); void dlClauseMatchedStarted(DLClauseEvaluator dlClauseEvaluator,int dlClauseIndex); void dlClauseMatchedFinished(DLClauseEvaluator dlClauseEvaluator,int dlClauseIndex); void addFactStarted(Object[] tuple,boolean isCore); void addFactFinished(Object[] tuple,boolean isCore,boolean factAdded); void mergeStarted(Node mergeFrom,Node mergeInto); void nodePruned(Node node); void mergeFactStarted(Node mergeFrom,Node mergeInto,Object[] sourceTuple,Object[] targetTuple); void mergeFactFinished(Node mergeFrom,Node mergeInto,Object[] sourceTuple,Object[] targetTuple); void mergeFinished(Node mergeFrom,Node mergeInto); void clashDetectionStarted(Object[]... tuples); void clashDetectionFinished(Object[]... tuples); void clashDetected(); void backtrackToStarted(BranchingPoint newCurrentBrancingPoint); void tupleRemoved(Object[] tuple); void backtrackToFinished(BranchingPoint newCurrentBrancingPoint); void groundDisjunctionDerived(GroundDisjunction groundDisjunction); void processGroundDisjunctionStarted(GroundDisjunction groundDisjunction); void groundDisjunctionSatisfied(GroundDisjunction groundDisjunction); void processGroundDisjunctionFinished(GroundDisjunction groundDisjunction); void disjunctProcessingStarted(GroundDisjunction groundDisjunction,int disjunct); void disjunctProcessingFinished(GroundDisjunction groundDisjunction,int disjunct); void pushBranchingPointStarted(BranchingPoint branchingPoint); void pushBranchingPointFinished(BranchingPoint branchingPoint); void startNextBranchingPointStarted(BranchingPoint branchingPoint); void startNextBranchingPointFinished(BranchingPoint branchingPoint); void existentialExpansionStarted(ExistentialConcept existentialConcept,Node forNode); void existentialExpansionFinished(ExistentialConcept existentialConcept,Node forNode); void existentialSatisfied(ExistentialConcept existentialConcept,Node forNode); void nominalIntorductionStarted(Node rootNode,Node treeNode,AnnotatedEquality annotatedEquality,Node argument1,Node argument2); void nominalIntorductionFinished(Node rootNode,Node treeNode,AnnotatedEquality annotatedEquality,Node argument1,Node argument2); void descriptionGraphCheckingStarted(int graphIndex1,int tupleIndex1,int position1,int graphIndex2,int tupleIndex2,int position2); void descriptionGraphCheckingFinished(int graphIndex1,int tupleIndex1,int position1,int graphIndex2,int tupleIndex2,int position2); void nodeCreated(Node node); void nodeDestroyed(Node node); void unknownDatatypeRestrictionDetectionStarted(DataRange dataRange1,Node node1,DataRange dataRange2,Node node2); void unknownDatatypeRestrictionDetectionFinished(DataRange dataRange1,Node node1,DataRange dataRange2,Node node2); void datatypeCheckingStarted(); void datatypeCheckingFinished(boolean result); void datatypeConjunctionCheckingStarted(DatatypeManager.DConjunction conjunction); void datatypeConjunctionCheckingFinished(DatatypeManager.DConjunction conjunction,boolean result); void blockingValidationStarted(); void blockingValidationFinished(int noInvalidlyBlocked); void possibleInstanceIsInstance(); void possibleInstanceIsNotInstance(); }