Basically it's a "swept volume" problem, which is still a research topic and isn't available as a general function in any CAD on the market today : you'd want to make a sweep of the tool volume along its path (very hard in the general case), then subtract this body from the part body (easy).
For "simple" cases, such as tool with axial symmetry (mill) moving along a simple XYZ trajectory, you could create multiple sweeps (to avoid self-intersection problems) along the path using either the mill profile sketch or a projection of its silhouette on planes orthogonal to the trajectory, then add the tool volume itself at trajectory corners to obtain a swept volume. (I wrote a macro that helps doing this for a customer for an engraving problem ...)
The solution used in CAM simulation typically uses "voxels" : space is divided in very tiny cubes, smaller than a pixel on screen. Each voxel has a value to describe void (0), tool(1) or part (2). As you move the tool, part voxels are replaced by tool voxels, which become void once the tool has moved away. An algorithm called "marching cubes" is used to represent smooth surfaces in screen resolution, but internally, there is no way to obtain a geometrically precise, smooth surface as required by a CAD program.
I tried a combined approach on SolidWorks by subtracting the tool volume to the part at each tiny step of the trajectory. It works, but creates a colossal number of jigsaw looking tiny faces resulting in huge and unusable files...