2.4. actual_disposition: which plan is the agent's
Apodictic.actual_disposition {agent : World.Agent} {t : World.Time} {s : Stock World agent t} : AllocationDisposition s → PropApodictic.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.
Apodictic.Stock (F : ActionFrame) (agent : F.Agent) (t : F.Time) : TypeApodictic.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.
Constructor
Apodictic.Stock.mkFields
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.
Apodictic.AllocationDisposition {F : ActionFrame} {agent : F.Agent} {t : F.Time} (s : Stock F agent t) : TypeApodictic.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.
Constructor
Apodictic.AllocationDisposition.mkFields
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 X⊢ False
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 n⊢ 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)⊢ 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 = n⊢ False
let A' : CountDisposition s :=
{ wouldServe := fun m => if m = n then S' else A.wouldServe m
serves_subset := by 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 = n⊢ ∀ (n_1 : ℕ), ∀ e ∈ if n_1 = n then S' else A.wouldServe n_1, e ∈ s.serves
intro m x hx 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 = nm:ℕx:World.Endhx:x ∈ if m = n then S' else A.wouldServe m⊢ x ∈ s.serves
by_cases hm : m = n pos 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 = nm:ℕx:World.Endhx:x ∈ if m = n then S' else A.wouldServe mhm:m = n⊢ x ∈ s.servesneg 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 = nm:ℕx:World.Endhx:x ∈ if m = n then S' else A.wouldServe mhm:¬m = n⊢ x ∈ s.serves
· pos 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 = nm:ℕx:World.Endhx:x ∈ if m = n then S' else A.wouldServe mhm:m = n⊢ x ∈ s.serves simp only [hm, if_true] at hx pos 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 = nm:ℕx:World.Endhm:m = nhx:x ∈ S'⊢ x ∈ s.serves
rcases Finset.mem_insert.mp hx with h | h pos.inl 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 = nm:ℕx:World.Endhm:m = nhx:x ∈ S'h:x = e'⊢ x ∈ s.servespos.inr 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 = nm:ℕx:World.Endhm:m = nhx:x ∈ S'h:x ∈ S.erase e⊢ x ∈ s.serves
· pos.inl 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 = nm:ℕx:World.Endhm:m = nhx:x ∈ S'h:x = e'⊢ x ∈ s.serves exact h ▸ he's All goals completed! 🐙
· pos.inr 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 = nm:ℕx:World.Endhm:m = nhx:x ∈ S'h:x ∈ S.erase e⊢ x ∈ s.serves exact A.serves_subset n x (Finset.mem_of_mem_erase h) All goals completed! 🐙
· neg 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 = nm:ℕx:World.Endhx:x ∈ if m = n then S' else A.wouldServe mhm:¬m = n⊢ x ∈ s.serves simp only [hm, if_false] at hx neg 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 = nm:ℕx:World.Endhm:¬m = nhx:x ∈ A.wouldServe m⊢ x ∈ s.serves
exact A.serves_subset m x hx All goals completed! 🐙
card_eq := by 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 = n⊢ ∀ n_1 ≤ s.units.card, (if n_1 = n then S' else A.wouldServe n_1).card = n_1
intro m hm 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 = nm:ℕhm:m ≤ s.units.card⊢ (if m = n then S' else A.wouldServe m).card = m
by_cases h : m = n pos 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 = nm:ℕhm:m ≤ s.units.cardh:m = n⊢ (if m = n then S' else A.wouldServe m).card = mneg 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 = nm:ℕhm:m ≤ s.units.cardh:¬m = n⊢ (if m = n then S' else A.wouldServe m).card = m
· pos 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 = nm:ℕhm:m ≤ s.units.cardh:m = n⊢ (if m = n then S' else A.wouldServe m).card = m simp only [h, if_true] pos 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 = nm:ℕhm:m ≤ s.units.cardh:m = n⊢ S'.card = n; exact hcard' All goals completed! 🐙
· neg 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 = nm:ℕhm:m ≤ s.units.cardh:¬m = n⊢ (if m = n then S' else A.wouldServe m).card = m simp only [h, if_false] neg 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 = nm:ℕhm:m ≤ s.units.cardh:¬m = n⊢ (A.wouldServe m).card = m; exact A.card_eq m hm All goals completed! 🐙 } 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
have hA'n : A'.wouldServe n = S' := by simp [A'] 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
have h1 := swap_dominance_all A n hn e he e' he's hne 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
have he'S' : e' ∈ A'.wouldServe n := by
rw [hA'n 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}))⊢ e' ∈ S'] 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}))⊢ e' ∈ S'; exact Finset.mem_insert_self e' _ 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 n⊢ False
have hes : e ∈ s.serves := A.serves_subset n e he 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.serves⊢ False
have heS' : e ∉ A'.wouldServe n := by
rw [hA'n 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.serves⊢ e ∉ S'] 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.serves⊢ e ∉ S'; intro h 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.servesh:e ∈ S'⊢ False
rcases Finset.mem_insert.mp h with h | h inl 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.servesh✝:e ∈ S'h:e = e'⊢ Falseinr 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.servesh✝:e ∈ S'h:e ∈ S.erase e⊢ False
· inl 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.servesh✝:e ∈ S'h:e = e'⊢ False exact hee' h All goals completed! 🐙
· inr 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.servesh✝:e ∈ S'h:e ∈ S.erase e⊢ False exact (Finset.mem_erase.mp h).1 rfl 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 n⊢ False
have h2 := swap_dominance_all A' n hn e' he'S' e hes heS' 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
rw [hA'n 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] at h2 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
have hX : (↑S' : Set World.End) =
insert e' ((↑S : Set World.End) \ {e}) := by
simp [S'] 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
have hY : insert e ((↑S' : Set World.End) \ {e'}) =
(↑S : Set World.End) := by
ext x 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})x:World.End⊢ x ∈ insert e (↑S' \ {e'}) ↔ x ∈ ↑S
simp only [S', Finset.coe_insert, Finset.coe_erase, Set.mem_insert_iff,
Set.mem_sdiff, Set.mem_singleton_iff, Finset.mem_coe] 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})x:World.End⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' ↔ x ∈ S
constructor mp 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})x:World.End⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' → x ∈ Smpr 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})x:World.End⊢ x ∈ S → x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e'
· mp 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})x:World.End⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' → x ∈ S rintro (rfl | ⟨(rfl | ⟨hxS, _⟩), hxe'⟩) mp.inl agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:ℕhn:n ≤ s.units.carde':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 nx:World.Endhe:x ∈ A.wouldServe nS':Finset World.End := insert e' (S.erase x)hee':x ≠ 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) \ {x}))he'S':e' ∈ A'.wouldServe nhes:x ∈ s.servesheS':x ∉ A'.wouldServe nh2:World.Prefers agent t (↑S') (insert x (↑S' \ {e'}))hX:↑S' = insert e' (↑S \ {x})⊢ x ∈ Smp.inr.inl agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:ℕhn:n ≤ s.units.carde:World.Endhe: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 nhes:e ∈ s.servesx:World.Endhe's:x ∈ s.serveshne:x ∉ A.wouldServe nS':Finset World.End := insert x (S.erase e)hee':e ≠ xhcard':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 x (↑(A.wouldServe n) \ {e}))he'S':x ∈ A'.wouldServe nheS':e ∉ A'.wouldServe nh2:World.Prefers agent t (↑S') (insert e (↑S' \ {x}))hX:↑S' = insert x (↑S \ {e})hxe':¬x = x⊢ x ∈ Smp.inr.inr 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})x:World.Endhxe':¬x = e'hxS:x ∈ Sright✝:¬x = e⊢ x ∈ S
· mp.inl agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:ℕhn:n ≤ s.units.carde':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 nx:World.Endhe:x ∈ A.wouldServe nS':Finset World.End := insert e' (S.erase x)hee':x ≠ 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) \ {x}))he'S':e' ∈ A'.wouldServe nhes:x ∈ s.servesheS':x ∉ A'.wouldServe nh2:World.Prefers agent t (↑S') (insert x (↑S' \ {e'}))hX:↑S' = insert e' (↑S \ {x})⊢ x ∈ S exact he All goals completed! 🐙
· mp.inr.inl agent:World.Agentt:World.Times:Stock World agent tA:CountDisposition sn:ℕhn:n ≤ s.units.carde:World.Endhe: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 nhes:e ∈ s.servesx:World.Endhe's:x ∈ s.serveshne:x ∉ A.wouldServe nS':Finset World.End := insert x (S.erase e)hee':e ≠ xhcard':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 x (↑(A.wouldServe n) \ {e}))he'S':x ∈ A'.wouldServe nheS':e ∉ A'.wouldServe nh2:World.Prefers agent t (↑S') (insert e (↑S' \ {x}))hX:↑S' = insert x (↑S \ {e})hxe':¬x = x⊢ x ∈ S exact absurd rfl hxe' All goals completed! 🐙
· mp.inr.inr 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})x:World.Endhxe':¬x = e'hxS:x ∈ Sright✝:¬x = e⊢ x ∈ S exact hxS All goals completed! 🐙
· mpr 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})x:World.End⊢ x ∈ S → x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' intro hxS mpr 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})x:World.EndhxS:x ∈ S⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e'
by_cases hxe : x = e pos 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})x:World.EndhxS:x ∈ Shxe:x = e⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e'neg 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})x:World.EndhxS:x ∈ Shxe:¬x = e⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e'
· pos 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})x:World.EndhxS:x ∈ Shxe:x = e⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' exact Or.inl hxe All goals completed! 🐙
· neg 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})x:World.EndhxS:x ∈ Shxe:¬x = e⊢ x = e ∨ (x = e' ∨ x ∈ S ∧ ¬x = e) ∧ ¬x = e' refine Or.inr ⟨Or.inr ⟨hxS, hxe⟩, ?_⟩ neg 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})x:World.EndhxS:x ∈ Shxe:¬x = e⊢ ¬x = e'
intro h neg 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})x:World.EndhxS:x ∈ Shxe:¬x = eh:x = e'⊢ False; exact hne (h ▸ hxS) 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'}) = ↑S⊢ False
rw [hY, 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' ↑ShX:↑S' = insert e' (↑S \ {e})hY:insert e (↑S' \ {e'}) = ↑S⊢ False hX 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'}) = ↑S⊢ False] at h2 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'}) = ↑S⊢ False
rw [show (↑S : Set World.End) = ↑(A.wouldServe n) from rfl 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'}) = ↑S⊢ False] at h1 h2 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'}) = ↑S⊢ False
exact hasym _ _ h1 h2 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.