Two lists are contradictory if the shorter one is not a prefix of the
        other. (Very strict definition -- could be generalized to subsequence)

def is_contradictory(self, other):
        """
        Two lists are contradictory if the shorter one is not a prefix of the
        other. (Very strict definition -- could be generalized to subsequence)
        """
        if other.size() > self.size():
            return other.is_contradictory(self)
        # ensure self is bigger or equal size
        if other.size() == 0:
            # empty lists are fine
            return False
        
        # see if any values in the shorter list are contradictory or 
        # unequal
        for i, oval in enumerate(other.value):
            if hasattr(self.value[i], 'is_contradictory') and \
                    self.value[i].is_contradictory(oval):
                # allow comparing cells
                return True
            elif self.value[i] != oval:
                return True
        return False