def test_superexpansion_revision(self):
        bb = self.belief_base
        bb2 = BeliefBase(self.belief_base.beliefs,
                         selection_function=select_largest_set)
        phi = self.p
        xi = self.q

        # Phi is not a member of Belief Base
        bb.revise(Belief(And(phi, xi)))

        bb2.revise(Belief(phi))
        bb2.expand(Belief(xi))

        assert bb.beliefs.issubset(bb2.beliefs)
    def test_extensionality_revision(self):
        bb = self.belief_base
        bb2 = BeliefBase(self.belief_base.beliefs,
                         selection_function=select_largest_set)
        phi = Or(self.p, self.q)
        xi = Or(self.p, self.q)

        # Phi is not a member of Belief Base
        if not entails({}, Biconditional(phi, xi)):
            assert False

        bb.revise(Belief(phi))
        bb2.revise(Belief(xi))

        assert bb == bb2
    def test_subexpansion_revision(self):
        bb = self.belief_base
        bb2 = BeliefBase(self.belief_base.beliefs,
                         selection_function=select_largest_set)
        phi = self.p
        xi = self.q

        # Phi is not a member of Belief Base
        bb.revise(Belief(phi))

        if entails(bb.get_clauses(), Not(xi)):
            assert False

        bb.expand(Belief(xi))
        bb2.revise(Belief(And(phi, xi)))

        assert bb.beliefs.issubset(bb2.beliefs)