apodictic machine-checked praxeology

2.4. actual_disposition: which plan is the agent's🔗

🔗axiom
Apodictic.actual_disposition {agent : World.Agent} {t : World.Time} {s : Stock World agent t} : AllocationDisposition s Prop
Apodictic.actual_disposition {agent : World.Agent} {t : World.Time} {s : Stock World agent t} : AllocationDisposition s Prop

The agent's actual disposition — which allocation plan is the one the agent would follow. AllocationDisposition s is a type, inhabited by every function from sub-stock to served ends that meets the bookkeeping conditions; this predicate names the agent's own plan, so that an axiom can be restricted to it instead of speaking of every conceivable plan.

Source: tacit. Rothbard's argument presupposes ONE value scale and ONE allocation per actor ("the" marginal unit, "the" least urgent want, MES pp. 24–27); the tradition never contemplates rival plans for the same actor because it never quantifies over plans.

Status: our-reconstruction. Opaque, Prop-valued, on the receipt. It asserts a fact of the matter about WHICH plan is the agent's.

Does not say: that such a plan exists for every stock, or that it is unique. On Nozick's subjunctive account of preference the subjunctive may be undetermined (1977, p. 373), so whether a complete counterfactual table exists is left open. Theorems about dispositions take actual_disposition A as a hypothesis.

The disposition it applies to is the counterfactual allocation plan, a new primitive beyond action, adopted 2026-08-02 because a single actual allocation cannot discriminate among the ends it serves: they are all inside the chosen package.

🔗structure
Apodictic.Stock (F : ActionFrame) (agent : F.Agent) (t : F.Time) : Type
Apodictic.Stock (F : ActionFrame) (agent : F.Agent) (t : F.Time) : Type

A stock of a good, for one agent at one time: finitely many unit-means the agent believes equally serviceable. Homogeneity is serviceability-homogeneity: each unit is believed to conduce to exactly the ends in serves — a BELIEF notion, not a preference notion. No indifference between units is asserted anywhere, so the strict-only Prefers stands and Rothbard's denial that indifference is demonstrable in action is not contradicted. Whether serviceability-homogeneity suffices for the law — Nozick (1977, p. 371) says the law needs indifference — stays checkable rather than assumed away.

What a unit IS is not fixed here: units lists whatever enters the action as one thing. Rothbard: the law holds "regardless of the size of the unit considered. The size of the unit will be the one that enters into concrete human action" (MES p. 28) — pairs of horses are a different stock with a "new and shorter scale of ends", and a good that "cannot be divided into homogeneous units for purposes of action" is a stock of one unit.

Apodictic.Stock.mk
units : Finset F.Means

The units of the good on hand.

serves : Set F.End

The ends this good is serviceable for, by the agent's lights.

homog :  u  self.units,  (e : F.End), F.Believes agent t u e  e  self.serves

Equal serviceability: every unit is believed serviceable for exactly serves.

🔗structure
Apodictic.AllocationDisposition {F : ActionFrame} {agent : F.Agent} {t : F.Time} (s : Stock F agent t) : Type
Apodictic.AllocationDisposition {F : ActionFrame} {agent : F.Agent} {t : F.Time} (s : Stock F agent t) : Type

The agent's counterfactual allocation disposition over a stock: for each sub-stock U — each set of units the agent might have — the ends the agent would serve with exactly those units, at the stock's single time. A NEW PRIMITIVE beyond Action, because a single actual allocation action cannot discriminate among the served ends (they are all inside the chosen package); whatever the law of marginal utility rests on, it is not actual action alone.

Indexed by WHICH units, not how many: that the plan depends only on the count is interchangeability of units, and it is not built in — it is the named condition Homogeneous, hypothesized where a theorem needs it.

Field-shape commitment (audit): card_eq is the one-unit-per-end idealization — with the units U (within the stock on hand), exactly as many ends would be served as there are units; units are not split, pooled, or left idle. Rothbard: "each unit of means is capable of serving one of the ends" — "We assume for simplicity" (MES p. 26). The definitional shape is our-reconstruction.

Apodictic.AllocationDisposition.mk
wouldServe : Finset F.Means  Finset F.End

With exactly the units U, the ends that would be served.

serves_subset :  (U : Finset F.Means),  e  self.wouldServe U, e  s.serves

Allocation only to ends the good is believed serviceable for.

card_eq :  U  s.units, (self.wouldServe U).card = U.card

One unit, one end; no idle units — within the actual stock.

One commitment hides in a field shape here, where the receipt cannot see it: card_eq is Rothbard's "we assume for simplicity" (p. 26), one unit, one end, no idle units. A second used to. Until 2026-09-05 the plan was indexed by the number of units, which enforced interchangeability silently; that encoding is restated here because the crash below happened in it, and its replacement is the subject of the units section.

/-- SUPERSEDED (2026-09-05): the disposition indexed by how many units, not which. Interchangeability of units is a type shape here, invisible to the receipt. -/ structure CountDisposition {agent : World.Agent} {t : World.Time} (s : Stock World agent t) where wouldServe : Finset World.End serves_subset : n, e wouldServe n, e s.serves card_eq : n s.units.card, (wouldServe n).card = n

2.4.1. Rejected: swap dominance over every plan🔗

The evening of 2026-09-04 the human asked, of the then-new swap_dominance, "is there something I might be missing?" There was. The axiom was stated for every structure of the disposition type, and given one plan, rivals are definable. Here is that axiom, restated in the document:

/-- REJECTED (2026-09-04): swap dominance for EVERY disposition, not the agent's. Identical to that day's library axiom minus `hA`, over the count-indexed disposition of the time. -/ axiom swap_dominance_all {agent : World.Agent} {t : World.Time} {s : Stock World agent t} (A : CountDisposition s) (n : ) (hn : n s.units.card) : e A.wouldServe n, e' s.serves, e' A.wouldServe n World.Prefers agent t ((A.wouldServe n)) (insert e' (((A.wouldServe n) : Set World.End) \ {e}))

Take any plan with a served end e and a serviceable unserved e' at some supply. Build the rival plan identical except that at that supply it serves the swap. The axiom applied to the plan says the original bundle is preferred to the swap; applied to the rival it says the swap is preferred to the original. With asymmetry of preference, False. The classical lemmas in this proof do the bookkeeping for the rival plan and are irrelevant to the point, which is model-theoretic: no model with asymmetric preference satisfies the axiom once one stock has a unit and two serviceable ends.

theorem swap_dominance_all_clash {agent : World.Agent} {t : World.Time} {s : Stock World agent t} (A : CountDisposition s) (n : ) (hn : n s.units.card) (e : World.End) (he : e A.wouldServe n) (e' : World.End) (he's : e' s.serves) (hne : e' A.wouldServe n) (hasym : X Y : Set World.End, World.Prefers agent t X Y ¬ World.Prefers agent t Y X) : False := agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XFalse classical agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (↑(A'.wouldServe n)) (insert e ((A'.wouldServe n) \ {e'}))False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (↑S') (insert e (S' \ {e'}))False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (↑S') (insert e (S' \ {e'}))hX:S' = insert e' (S \ {e})False agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (↑S') (insert e (S' \ {e'}))hX:S' = insert e' (S \ {e})hY:insert e (S' \ {e'}) = SFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (insert e' (S \ {e})) ShX:S' = insert e' (S \ {e})hY:insert e (S' \ {e'}) = SFalse agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:hn:n s.units.carde:World.Endhe:e A.wouldServe ne':World.Endhe's:e' s.serveshne:e' A.wouldServe nhasym: (X Y : Set World.End), World.Prefers agent t X Y ¬World.Prefers agent t Y XS:Finset World.End := A.wouldServe nS':Finset World.End := insert e' (S.erase e)hee':e e'hcard':S'.card = nA':CountDisposition s := { wouldServe := fun m => if m = n then S' else A.wouldServe m, serves_subset := , card_eq := }hA'n:A'.wouldServe n = S'h1:World.Prefers agent t (↑(A.wouldServe n)) (insert e' ((A.wouldServe n) \ {e}))he'S':e' A'.wouldServe nhes:e s.servesheS':e A'.wouldServe nh2:World.Prefers agent t (insert e' ((A.wouldServe n) \ {e})) (A.wouldServe n)hX:S' = insert e' (S \ {e})hY:insert e (S' \ {e'}) = SFalse All goals completed! 🐙

The base was still consistent that day, because Prefers has no properties yet and the everything-true model satisfies anything positive. But strict preference has been the intended reading since the first day, and the day asymmetry entered, the base would have gone inconsistent. The failure has the same shape as the frame crash above, one level down: a universal claim over a definable type, refuted by a rival instance. World is opaque, but a disposition over World is an ordinary structure.

Two fixes were possible. A data axiom handing over the disposition for every stock would assert that every agent has a complete counterfactual table for every good, which is more than anyone has argued. The opaque predicate asserts only that there is a fact about which plan is the agent's, and the axiom is restricted to it. With the restriction in place, the rival plan has no proof of actual_disposition to hand the axiom, and the refutation no longer elaborates. The consistency section shows the fixed axiom has a model with asymmetric preference.