So I coded the "combinatorial type" stuff up in Mathematica also, letting me ask it things like region["<>"] --> v[1] < v[2] region["<<>>"] --> v[2] < v[3] && 3 + v[2]/(-v[2] + v[3]) <= If[v[2] <= v[1], Infinity, (2*v[2] - 1*v[1])/(v[2] - v[1])] && 3 + v[2]/(-v[2] + v[3]) <= If[v[4] <= v[3], Infinity, (4*v[4] - 3*v[3])/(v[4] - v[3])] && v[1] < v[4] Then integrating Boole[region[type]] over the appropriate-dimensional unit cube gives me probability["<>"] --> 1/2 probability["<<>>"] --> 5/24 - Log[2] + (9/16) Log[3] probability["<><>"] --> 1/6 + Log[2] - (9/16) Log[3] So I tried the same for the simplest situation I could think of on 6 bullets: take the combinatorial type "<<<>>>", where there's only one possible time-order in which the collisions can occur, and restrict it to one linear ordering of the velocities, so I can pre-resolve all those If[]s that depend on whether some pair of bullets would eventually meet: r = Simplify[region["<<<>>>"], v[1] < v[2] < v[3] < v[4] < v[5] < v[6]] --> v[1]*(2*v[3] - 3*v[4]) <= v[2]*(v[3] - 2*v[4]) && v[3]*(v[2] + v[4]) <= 2*v[2]*v[4] && v[4]*(v[3] + v[5]) >= 2*v[3]*v[5] && v[4]*v[5] + 3*v[3]*v[6] <= 2*(v[3]*v[5] + v[4]*v[6]) && v[2]*(v[1] + 3*v[5]) <= 4*v[1]*v[5] && v[2]*(-3*v[5] + 4*v[6]) <= v[5]*v[6] Integrate[Boole[r], {v[1],0,1},{v[2],v[1],1},{v[3],v[2],1},{v[4],v[3],1},{v[5],v[4],1},{v[6],v[5],1}] The Mma computation blows up -- I just let it get to around 22GB of RAM, at which point it started swapping and brought my machine to its knees. Anyone have a better idea of how to figure out the probability that 6 bullets from David's gun all annihilate each other? --Michael -- Forewarned is worth an octopus in the bush.