Returns True iff the values in this list can be entailed by the other
        list (ie, this list is a prefix of the other)

def is_entailed_by(self, other):
        """
        Returns True iff the values in this list can be entailed by the other
        list (ie, this list is a prefix of the other)
        """
        other = ListCell.coerce(other)
        if other.size() < self.size():
            # other is bigger, can't be entailed
            return False
        if self.value is None:
            # list is empty
            return True

        # see if any values in the shorter list are contradictory or 
        # unequal
        for i, oval in enumerate(other.value):
            if i == len(self.value):
                break

            if hasattr(self.value[i], 'is_entailed_by') and \
                   not self.value[i].is_entailed_by(oval):
                # compare cells
                return False 
            elif self.value[i] != oval:
                return False 
        return True