def has_proper_concept(edge):
    """Check if the concept either is a proper edge, or contains one."""
    if edge.is_atom():
        return edge.type()[:2] == 'cp'
    else:
        for subedge in edge[1:]:
            if has_proper_concept(subedge):
                return True
        return False