001    package com.hammurapi.reasoning.spi;
002    
003    /**
004     * Fact which supersedes another fact.
005     * The superseding fact contains all the information which the superseded
006     * fact contains and  can be used in place of the superseded fact. 
007     * e.g. Male("John", "Smith") supersedes Person("John", "Smith")
008     * Facts can implement this interface or be converted/adapted to the interface.
009     * @author Pavel Vlasov
010     *
011     */
012    public interface Superseder {
013            
014            /**
015             * @param subFact
016             * @return true if this fact supersedes subFact and can replace the subFact
017             * in the knowledge base.
018             */
019            boolean supersedes(Object subFact);
020    
021    }