001 package aima.logic.fol.inference; 002 003 import java.util.List; 004 005 import aima.logic.fol.inference.proof.Proof; 006 007 /** 008 * @author Ciaran O'Reilly 009 * 010 */ 011 public interface InferenceResult { 012 /** 013 * 014 * @return true, if the query is not entailed from the premises. This just 015 * means the query is not entailed, the query itself may be true. 016 */ 017 boolean isPossiblyFalse(); 018 019 /** 020 * 021 * @return true, if the query is entailed from the premises (Note: can get 022 * partial results if the original query contains variables 023 * indicating that there can possibly be more than 1 proof/bindings 024 * for the query, see: isPartialResultDueToTimeout()). 025 */ 026 boolean isTrue(); 027 028 /** 029 * 030 * @return true, if the inference procedure ran for a length of time and 031 * found no proof one way or the other before it timed out. 032 */ 033 boolean isUnknownDueToTimeout(); 034 035 /** 036 * 037 * @return true, if the inference procedure found a proof for a query 038 * containing variables (i.e. possibly more than 1 proof can be 039 * returned) and the inference procedure was still looking for other 040 * possible answers before it timed out. 041 */ 042 boolean isPartialResultDueToTimeout(); 043 044 /** 045 * 046 * @return a list of 0 or more proofs (multiple proofs can be returned if 047 * the original query contains variables). 048 */ 049 List<Proof> getProofs(); 050 }