In the spirit of Galileo’s empiricismβ€”which has been described as the last resortof a failed mathematician β€”we present Parabellum, a program for simulatingand quantifying the outcomes of military strategies.As mathematical fundamentalists attempt to solve many-body versions ofSchrΓΆdinger’s equation, grappling with the curse of dimensionality in Hilbertspaces and the measurement problem’s non-Markovian open quantum system,this program already now addresses two of reality’s most persistent and pernicious shortcomings: its apparent single-threadedness and its ambiguity.Regarding ambiguity; it has been said that facts speak for themselves withoverwhelming precision [1]. This is only exactly one third true: 1) facts dospeak for themselves, 2) with precision, but 3) not overwhelmingly so. Forexample, the French military disaster (or perhaps rather the Viet Minh militarysuccess) that was the fifty-six day siege known as the battle of Điện BiΓͺn Phα»§,was preceded by a world soaked in facts, all speaking for themselves, but nonewith the ferocity that posterity has now brought them. The French had builttheir fortress on the red earth of a valley encircled by jungleβ€”jungle pregnantwith subtle facts of the Viet Minh’s presence. The French named their outpostsafter women; Beatrice, Gabrielle, Dominiqueβ€”this one was called CΓ©line. TheViet Minh came in the night and the rain, ghosts in sandals, hauling artilleryup slopes where no European gunner would think a gun could go. In the night,the French watched the dark green hills erupt with blood red fire. As the daysand weeks progressed, the French reinforcements would continue, their birdsof steel containing reports and gliding above a terrain both discretely emittingthe same fact: landing here is death. The airstrip would became a graveyardfor Dakota transports, the night sky made starless with shrapnel and tracer,parachutes blooming in the nightβ€”some men landed alive, some did not. Thewounded call out in French, in Vietnamese, and in the guttural language of thedying. On May 7, 1954, the last French radio message crackled out: β€œThe enemyis everywhere. The situation is very grave” [2].Regarding the single threadedness: Whether one (conservatively) subscribesto the Copenhagen Interpretation of quantum mechanicsβ€”where observationcollapses countless possible threads into a single, actual oneβ€”or (more fashionably) the Many-Worlds Interpretation [3], with its endlessly bifurcatingthreads of reality, weβ€”whatever we might refer toβ€”inhabit just one suchthread. Be it the only one or one among uncountably many, our experienceremains irrevocably confined to a single, linear trajectory.How 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 [4], 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]J. Conrad, Typhoon. United Kingdom: Pall Mall Magazine, 1902.[2]P. W. Shull, β€œThe Battle of Dien Bien Phu: Strategic, Operational and Tactical Failure:,” Fort Belvoir, VA, Apr. 1999. doi: 10.21236/ADA363910.[3]J. L. Borges, β€œThe Garden of Forking Paths,” Ficciones. Grove Press, NewYork, 1962.[4]R. L. Schilling, Measures, Integrals and Martingales, 2nd ed. Cambridge:Cambridge university press, 2017.