687In the spirit of Galileo’s empiricism—which has been described as “the lastresort of the failed mathematician”—we present Parabellum [1], a program forsimulating and quantifying the outcomes of military engagements. As mathematical fundamentalists scribble away, attempting to find increasingly refinedanalytical solutions to the sub-problems of strategy, Parabellum already nowaddresses two of reality’s most persistent and pernicious shortcomings: a)single-threadedness, and b) ambiguity. With Parabellum, we (the authors,funded by the Swiss Federal Department of Defence) address both throughparallelization.Setting multiple digital twins [2] of the battlefield—each with their slightvariations in initial conditions—in concurrent motion, the Parabellum operatormight compute statistics over the various trajectories, so as to estimate thetruth and importance of any proposition. Indeed, it has been said that “factsspeak for themselves with overwhelming precision” [3], but, without Parabellum, this is only exactly two thirds true: 1) facts do speak for themselves, 2)with precision, but 3) rarely overwhelmingly so. As in the case of a subtly unfairdie where one might gauge the true distribution of outcomes by recordingmultiple rolls thereof.ĐIỆN BIÊN PHỦAs an anecdote on the dangers of ambiguity, take the French military disaster(or perhaps rather the Viet Minh military success) that was the fifty-six daysiege known as the Battle of Điện Biên Phủ. It was preceded by a world soakedin facts, all speaking for themselves, but in subtle ways—not with the ferocitythat posterity since brought them. The French had built their fortress on thered earth of the Phủ valley, encircled by a jungle pregnant with subtle factsof the Viet Minh. The French named their outposts after women; Beatrice,Gabrielle, Dominique—this one: Céline. The Viet Minh came in the night and therain, ghosts in sandals, hauling artillery up slopes where no European gunnerwould think a gun could go. In the night, the French watched the dark greenhills erupt in fire. As the days and weeks progressed, the French reinforcementswould continue, their birds of steel containing reports and gliding above aterrain within both where embedded the same message: “to land here is todie”. Indeed, the airstrip would become a graveyard of various French Dakotatransporters. The night sky made starless with shrapnel and tracer, parachutesblooming in the night—some men landed alive, some did not. The wounded callout in French, in Vietnamese, and in the guttural language of the dying. On May7, 1954, the last French radio message crackled out: “L’ennemi est partout. Lasituation est très grave” [4].THE GARDEN OF FORKING PATHSHow is one then to reason probabilistically about future—potential or eventual—outcomes under such ambiguous circumstances? From an information theoretical point of view, where does one locate the French error at Céline?Parabellum, viewed in a vacuum, is thus a potentially parallelizable worldawaiting that which acts. Appendix A shows an example of single and paraleltrajectories. Recalling that counting is the bedrock of probability [5], Parabellum proposes the following procedure:1.Create 𝑛 simplified facsimiles of the reality about which one wishes to reason2.Set these in concurrent motion, recording 𝑡𝑖={(𝑠0,𝑎0),,(𝑠𝑚,𝑎𝑚)}3.Compute statistics over {𝑡1,,𝑡𝑛} to divine the value of strategy 𝜋(𝑠)𝑎Each process can be thought of as consisting of a world (yielding states 𝑠) andthat which operates within it (yielding actions 𝑎).A | CODEfrom jax import random, vmap, laximport parabellum as pbrng, key = random.split(random.PRNG(0))env, scene = pb.env.init_fn({"place": "Điên Biên Phù"})Load in jax programs and parabellum, and declare global varaiblesdef action_fn(rng): coord = random.normal(rng, (env.num_units, 2)) shoot = random.bernoulli(rng, 0.5, shape=(env.num_units,)) return pb.types.Action(coord=coord, shoot=shoot)Function for taking random actiondef step_fn(state, rng): action = action_fn(rng) obs, state = env.step(rng, scene, state, action) return state, (state, action)Function for taking steps in a scan.rngs = random.split(rng, (n_steps, n_sims))Random numbers for simualtions, and parallel simulationsobs, state = env.reset(rngs[0][0], scene)state, seq = lax.scan(step, state, rngs[0])Running 𝑛 trajectories in parallel, we merely use vmap:obs, state = vmap(env.reset, in_axes=(0, None))(rngs[0], scene)state, seq = lax.scan(vmap(step), state, rngs)REFERENCES[1]T. Anne et al., “Harnessing Language for Coordination: A Framework andBenchmark for LLM-Driven Multi-Agent Control,” IEEE Transactions onGames, pp. 1–25, 2025, doi: 10.1109/TG.2025.3564042.[2]U.S. Department of Defense, Office of the Deputy Assistant Secretary ofDefense for Systems Engineering, “Digital Engineering Strategy,” Washington, DC, Jun. 2018.[3]J. Conrad, Typhoon. United Kingdom: Pall Mall Magazine, 1902.[4]P. W. Shull, “The Battle of Dien Bien Phu: Strategic, Operational and Tactical Failure:,” Fort Belvoir, VA, Apr. 1999. doi: 10.21236/ADA363910.[5]R. L. Schilling, Measures, Integrals and Martingales, 2nd ed. Cambridge:Cambridge university press, 2017.