human
Here's a good function header given the following:
I wrote the below code

    def _pgroup_of_double(polyh, ordered_faces, pgroup):
        n = len(ordered_faces[0])
        fmap = dict(zip(ordered_faces, range(len(ordered_faces))))
        flat_faces = flatten(ordered_faces)
        new_pgroup = []
        for (i, p) in enumerate(pgroup):
            h = polyh.copy()
            h.rotate(p)
            c = h.corners
            reorder = unflatten([c[j] for j in flat_faces], n)
            reorder = [tuple(map(as_int, minlex(f, directed=False, is_set=True))) for f in reorder]
            new_pgroup.append(Perm([fmap[f] for f in reorder]))
        return new_pgroup
    tetrahedron_faces = [(0, 1, 2), (0, 2, 3), (0, 3, 1), (1, 2, 3)]
    _t_pgroup = [Perm([[1, 2, 3], [0]]), Perm([[0, 1, 2], [3]]), Perm([[0, 3, 2], [1]]), Perm([[0, 3, 1], [2]]), Perm([[0, 1], [2, 3]]), Perm([[0, 2], [1, 3]]), Perm([[0, 3], [1, 2]])]
    tetrahedron = Polyhedron(range(4), tetrahedron_faces, _t_pgroup)
    cube_faces = [(0, 1, 2, 3), (0, 1, 5, 4), (1, 2, 6, 5), (2, 3, 7, 6), (0, 3, 7, 4), (4, 5, 6, 7)]
    _c_pgroup = [Perm(p) for p in [[1, 2, 3, 0, 5, 6, 7, 4], [4, 0, 3, 7, 5, 1, 2, 6], [4, 5, 1, 0, 7, 6, 2, 3], [1, 0, 4, 5, 2, 3, 7, 6], [6, 2, 1, 5, 7, 3, 0, 4], [6, 7, 3, 2, 5, 4, 0, 1], [3, 7, 4, 0, 2, 6, 5, 1], [4, 7, 6, 5, 0, 3, 2, 1], [6, 5, 4, 7, 2, 1, 0, 3], [0, 3, 7, 4, 1, 2, 6, 5], [5, 1, 0, 4, 6, 2, 3, 7], [5, 6, 2, 1, 4, 7, 3, 0], [7, 4, 0, 3, 6, 5, 1, 2]]]
    cube = Polyhedron(range(8), cube_faces, _c_pgroup)
    octahedron_faces = [(0, 1, 2), (0, 2, 3), (0, 3, 4), (0, 1, 4), (1, 2, 5), (2, 3, 5), (3, 4, 5), (1, 4, 5)]
    octahedron = Polyhedron(range(6), octahedron_faces, _pgroup_of_double(cube, cube_faces, _c_pgroup))
    dodecahedron_faces = [(0, 1, 2, 3, 4), (0, 1, 6, 10, 5), (1, 2, 7, 11, 6), (2, 3, 8, 12, 7), (3, 4, 9, 13, 8), (0, 4, 9, 14, 5), (5, 10, 16, 15, 14), (6, 10, 16, 17, 11), (7, 11, 17, 18, 12), (8, 12, 18, 19, 13), (9, 13, 19, 15, 14), (15, 16, 17, 18, 19)]
    def _string_to_perm(s):
        rv = [Perm(range(20))]
        p = None
        for si in s:
            if (si...

What's a good function header?
assistant
#Here's a good function header.

def _pgroup_calcs():