001    package aima.logic.fol.inference.proof;
002    
003    import java.util.List;
004    import java.util.Map;
005    
006    import aima.logic.fol.parsing.ast.Term;
007    import aima.logic.fol.parsing.ast.Variable;
008    
009    /**
010     * @author Ciaran O'Reilly
011     * 
012     */
013    public interface Proof {
014            /**
015             * 
016             * @return A list of proof steps that show how an answer was derived.
017             */
018            List<ProofStep> getSteps();
019    
020            /**
021             * 
022             * @return a Map of bindings for any variables that were in the original
023             *         query. Will be an empty Map if no variables existed in the
024             *         original query.
025             */
026            Map<Variable, Term> getAnswerBindings();
027    
028            /**
029             * 
030             * @param updatedBindings
031             *            allows for the bindings to be renamed. Note: should not be
032             *            used for any other reason.
033             */
034            void replaceAnswerBindings(Map<Variable, Term> updatedBindings);
035    }