<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def construct_difference(self, parent, excluded, name=None, fp=None):
 """Construct geometry from ``parent`` without the regions in ``excluded`` and optionally write to filepath ``fp``. ``excluded`` must be an iterable of location strings (not face ids)."""

        assert parent in self.locations, "Can't find location {}".format(parent)
        for location in excluded:
            assert location in self.locations, "Can't find location {}".format(location)
        included = set(self.data[parent]).difference(
            reduce(set.union, [set(self.data[loc]) for loc in excluded])
        )
        geom = _union(included)
        if fp:
            self.write_geoms_to_file(fp, [geom], [name] if name else None)
            return fp
        else:
            return geom