Is an Equilibrium Unique?  Why or why not?

TheoryGuru applications

Background

To query uniqueness,
(i) use the equilibrium conditions to define an equilibrium (Subscript[v, 1]) ((Subscript[v, 1]) could be a list, aka vector),
(ii) use the same conditions to define (Subscript[v, 2]) as an equilibrium,
(iii) ask TheoryGuru if (Subscript[v, 1]) is the same as (Subscript[v, 2]) (for scalars, this is simply (Subscript[v, 1])==(Subscript[v, 2]); see GlobalOptimumofConcaveFunction.nb (pdf here) for vectors).

If True, then the equilibrium is unique.

Alternatively, assume that (Subscript[v, 1]) is not the same as (Subscript[v, 2]).  That will be a contradictory assumption if and only if the equilibrium is unique.

If TheoryGuru’s answer to (Subscript[v, 1])==(Subscript[v, 2]) is “True for some, False for Others,” then TheorySufficient and TheoryExtra can be used to yield conditions that guarantee a unique equilibrium.

Setup

Get@"http://economicreasoning.com"

SetOptions[TheoryGuru,keepall->True];

Load other tools by clicking on extras and/or evaluating below

If[Not@MemberQ[$ContextPath,"OtherTools`"],
Get["http://othertools.economicreasoning.com"]]

Definitions for supply-demand example

DemandSlopesDown=(d[(Subscript[p, 2])]-d[(Subscript[p, 1])])((Subscript[p, 2])-(Subscript[p, 1]))<0∨d[(Subscript[p, 2])]-d[(Subscript[p, 1])]==0==(Subscript[p, 2])-(Subscript[p, 1]);

SupplySlopesUp=(s[(Subscript[p, 2])]-s[(Subscript[p, 1])])((Subscript[p, 2])-(Subscript[p, 1]))>0∨s[(Subscript[p, 2])]-s[(Subscript[p, 1])]==0==(Subscript[p, 2])-(Subscript[p, 1]);

Equilibrium[p_]:=d[p]==s[p]

UniqueEquilibrium=(Subscript[p, 1])==(Subscript[p, 2]);

MultipleEquilibria=Not[UniqueEquilibrium];

These are unnecessary but keep the examples realistic

signconditions={(Subscript[p, 1])>0,(Subscript[p, 2])>0,d[(Subscript[p, 1])]>0,d[(Subscript[p, 2])]>0,s[(Subscript[p, 1])]>0,s[(Subscript[p, 2])]>0};

Text interpretations of key inequalities

rtext={Simplify@LogicalExpand[DemandSlopesDown∧SupplySlopesUp]->"\"Demand slopes down and supply slopes up.\"",
Simplify@LogicalExpand[Not@DemandSlopesDown∨Not@SupplySlopesUp]->"\"Demand slopes up or supply slopes down\" (sic)",
MultipleEquilibria->"Multiple equilibria.",
UniqueEquilibrium->"Unique equilibrium"};

Supply-Demand Results

Demand slopes down by itself is consistent with MultipleEquilibrium

TheoryGuru[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2]),DemandSlopesDown,
signconditions},
UniqueEquilibrium]

TheoryEmpty[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2]),DemandSlopesDown,
signconditions,MultipleEquilibria}]

TheoryInstance[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2]),DemandSlopesDown,
signconditions},
MultipleEquilibria]

But MultipleEquilibrium requires either demand sloping up or supply sloping down (sic).

TheoryGuru[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2]),DemandSlopesDown,SupplySlopesUp},
UniqueEquilibrium]

Simplify@TheoryOverlap[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2])},
DemandSlopesDown∧SupplySlopesUp,
UniqueEquilibrium]/.rtext

Simplify@TheoryOverlap[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2])},
Not@DemandSlopesDown∨Not@SupplySlopesUp,
MultipleEquilibria]/.rtext

Use TheorySufficient to discover a supply-curve restriction that is sufficient to guarantee a unique equilibrium

TheorySufficient[{Equilibrium@(Subscript[p, 1]),Equilibrium@(Subscript[p, 2]),DemandSlopesDown,
signconditions},
UniqueEquilibrium,
{s[(Subscript[p, 1])],s[(Subscript[p, 2])],(Subscript[p, 1]),(Subscript[p, 2])}]

If one curve is concave and the other is convex, then there can be two equilibria but not three

ThreeEquilibria=MultipleEquilibria∧(Subscript[p, 3])≠(Subscript[p, 1])∧(Subscript[p, 3])≠(Subscript[p, 2])

TheoryGuru[{Equilibrium/@{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},
GloballyConcaveFunction[d,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
GloballyConvexFunction[s,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
MultipleEquilibria},

Not[ThreeEquilibria]]

TheoryGuru[{Equilibrium/@{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},
GloballyConcaveFunction[s,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
GloballyConvexFunction[d,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
MultipleEquilibria},

Not[ThreeEquilibria]]

TheoryGuru[{Equilibrium/@{(Subscript[p, 1]),(Subscript[p, 2])},
GloballyConcaveFunction[d,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
GloballyConvexFunction[s,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
MultipleEquilibria},

(Subscript[p, 3])==(Subscript[p, 1])∨(Subscript[p, 3])==(Subscript[p, 2])∨Not@Equilibrium@(Subscript[p, 3])]

TheoryGuru[{Equilibrium/@{(Subscript[p, 1]),(Subscript[p, 2])},
GloballyConcaveFunction[s,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
GloballyConvexFunction[d,{(Subscript[p, 1]),(Subscript[p, 2]),(Subscript[p, 3])},strictly->True],
MultipleEquilibria},

(Subscript[p, 3])==(Subscript[p, 1])∨(Subscript[p, 3])==(Subscript[p, 2])∨Not@Equilibrium@(Subscript[p, 3])]

Look “under the hood” at the Tarski formula automatically assembled by TheoryGuru

Column[MostRecentAssumption,Spacings->1]

Variable interpretations

Laffer Curve Results

See also LafferCurveSurprises.nb (pdf here)

Setup

basicassumptions={0<(Subscript[τ, L])≤(Subscript[τ, H])<1,(Subscript[w, L])>0,(Subscript[w, H])>0,(Subscript[n, L])>0,(Subscript[n, H])>0,(Subscript[c, L])>0,(Subscript[c, H])>0,
SameSign[(Subscript[c, L])-(Subscript[c, H]),(Subscript[n, L])-(Subscript[n, H])],SameSign[(Subscript[w, H])-(Subscript[w, L]),(Subscript[n, L])-(Subscript[n, H])],((Subscript[n, L])-(Subscript[n, H]))(Subscript[w, L])≤(Subscript[c, L])-(Subscript[c, H])≤((Subscript[n, L])-(Subscript[n, H]))(Subscript[w, H]),
(Subscript[u, L])>(Subscript[u, Lb])∨(Subscript[n, L])==(Subscript[n, H]),SameSign[(Subscript[u, Lb])-(Subscript[u, H]),(Subscript[c, Lb])-(Subscript[c, H])],(Subscript[c, L])-(Subscript[c, Lb])==((Subscript[n, L])-(Subscript[n, H]))(1-(Subscript[τ, L]))(Subscript[w, L]),
(Subscript[u, H])>(Subscript[u, Hb])∨(Subscript[n, L])==(Subscript[n, H]),SameSign[(Subscript[u, Hb])-(Subscript[u, L]),(Subscript[c, Hb])-(Subscript[c, L])],(Subscript[c, H])-(Subscript[c, Hb])==((Subscript[n, H])-(Subscript[n, L]))(1-(Subscript[τ, H]))(Subscript[w, H])};

mrsassumptions={((Subscript[n, L])==(Subscript[n, H])∧(Subscript[c, L])==(Subscript[c, H]))\[Implies]((Subscript[m, L])==(Subscript[m, H]))
(* m is the marginal rate of substitution, which is a function of c and n *),
(Subscript[m, L])==(1-(Subscript[τ, L]))(Subscript[w, L]),(Subscript[m, H])==(1-(Subscript[τ, H]))(Subscript[w, H])};

equalrevenue=(Subscript[τ, L])(Subscript[n, L])(Subscript[w, L])==(Subscript[τ, H])(Subscript[n, H])(Subscript[w, H]);

ldemandiselastic=((Subscript[w, L])(Subscript[n, L])-(Subscript[w, H])(Subscript[n, H]))((Subscript[n, L])-(Subscript[n, H]))≥ 0;

bothnormalgoods=SameSign[(Subscript[m, L])-(Subscript[m, H]),(Subscript[n, L])-(Subscript[n, H])];

There is only one policy that can support a given amount of labor as an equilibrium

TheoryGuru[{basicassumptions[[3;;10]],mrsassumptions,
(Subscript[n, L])==(Subscript[n, H])},
(Subscript[τ, L])==(Subscript[τ, H])∧(Subscript[c, L])==(Subscript[c, H])∧equalrevenue]

TheoryOverlap[{basicassumptions[[3;;10]],mrsassumptions},
(Subscript[n, L])==(Subscript[n, H]),
(Subscript[τ, L])==(Subscript[τ, H])∧(Subscript[c, L])==(Subscript[c, H])∧equalrevenue]

TheoryOverlap[{basicassumptions[[3;;10]],mrsassumptions},
(Subscript[c, L])==(Subscript[c, H]),
(Subscript[τ, L])==(Subscript[τ, H])∧(Subscript[n, L])==(Subscript[n, H])∧equalrevenue]

More than one equilibrium allocation is consistent with the same revenue

TheoryGuru[{basicassumptions[[1;;10]],(Subscript[τ, L])<(Subscript[τ, H]),
equalrevenue},
(Subscript[n, L])≠(Subscript[n, H])∧(Subscript[c, L])≠(Subscript[c, H])]

The low tax may produce less labor, but this can be ruled out by assuming that both goods are normal

TheoryOverlap[{basicassumptions[[1;;10]],mrsassumptions,(Subscript[τ, L])<(Subscript[τ, H]),equalrevenue},
(Subscript[n, L])>(Subscript[n, H]),
bothnormalgoods]

... or by assuming that labor demand is elastic

TheoryOverlap[{basicassumptions[[1;;10]],(Subscript[τ, L])<(Subscript[τ, H]),equalrevenue},
(Subscript[n, L])>(Subscript[n, H]),
ldemandiselastic]

TheoryGuru[{basicassumptions[[1;;10]],mrsassumptions,(Subscript[τ, L])<(Subscript[τ, H]),equalrevenue,Not@bothnormalgoods,(Subscript[n, L])<(Subscript[n, H])},
Not@ldemandiselastic]

TheoryGuru[{basicassumptions[[1;;10]],mrsassumptions,(Subscript[τ, L])<(Subscript[τ, H]),equalrevenue,(Subscript[n, L])<(Subscript[n, H])},
Not@bothnormalgoods∧Not@ldemandiselastic]

More than one equilibrium revenue amount is consistent with the same tax rate, but this can be ruled out by assuming that both goods are normal

TheoryGuru[{basicassumptions[[1;;10]],mrsassumptions,(Subscript[τ, L])==(Subscript[τ, H]),Not@equalrevenue},
Not@bothnormalgoods]

i.e., when both goods are normal, there is a unique mapping from tax rate to revenue

TheoryGuru[{basicassumptions[[1;;10]],mrsassumptions,(Subscript[τ, L])==(Subscript[τ, H])},
equalrevenue∨Not@bothnormalgoods]

Variable interpretations