A Public-Goods Game

TheoryGuru applications

Load Economicreasoning package only if it is not already loaded

If[Length@Names["PLTools`*"]<10,
Get["http://economicreasoning.com"]]

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

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

Notes

n identical consumers have preferences over private and public consumption.

Each make a voluntary contribution to public consumption, taking as given the contributions of the others.

Setup

mrs[private_,public_]:=((Derivative[0,1][u][private,public])/(Derivative[1,0][u][private,public]))

public=n*contrib;

NashEquilibrium=mrs[income-contrib, public]==1;

StableEquilibrium=Derivative[1,0][mrs][income-contrib, public]-n Derivative[0,1][mrs][income-contrib, public]>0;

Publicisnormal=Derivative[1,0][mrs][income-contrib, public]>0;

Privateisnormal=Derivative[0,1][mrs][income-contrib, public]<0;

QuasilinearPrivate={Derivative[1,0][mrs][income-contrib, public]==0,
Derivative[1,1][u][income-contrib, public]==0,
Derivative[0,2][u][income-contrib, public]<0};

QuasilinearPublic={Derivative[0,1][mrs][income-contrib, public]==0,
Derivative[1,1][u][income-contrib, public]==0,
Derivative[2,0][u][income-contrib, public]<0};

SignConditions={n≥1,contrib>0,
Derivative[1,0][u][income-contrib, public]>0,
Derivative[0,1][u][income-contrib, public]>0,QuasiConcaveFunctionQ[u,{income-contrib, public},strictly->True]};

Logical possibilities for income effects and stability

TheoryGuru[SignConditions[[3;;-1]],
Publicisnormal||Privateisnormal||QuasilinearPrivate||QuasilinearPublic]

TheoryGuru[{SignConditions[[1]],Publicisnormal,Privateisnormal},
StableEquilibrium]

TheoryGuru[{SignConditions,
QuasilinearPrivate||QuasilinearPublic},
StableEquilibrium,
keepall->True]

TheoryGuru[{SignConditions,
Not@StableEquilibrium},
Not@Publicisnormal||Not@Privateisnormal,
keepall->True]

Comparative statics for number of participants n

Formulas

TheoryGuru[{Dt[NashEquilibrium,n],Dt[income,n]==0,
StableEquilibrium},
Dt[contrib,n]==((contrib Derivative[0,1][mrs][income-contrib, public])/(Derivative[1,0][mrs][income-contrib, public]-n Derivative[0,1][mrs][income-contrib, public]))&&
Dt[public,n]==((contrib Derivative[1,0][mrs][income-contrib, public])/(Derivative[1,0][mrs][income-contrib, public]-n Derivative[0,1][mrs][income-contrib, public]))]

Quasilinear special case

TheoryGuru[{Dt[NashEquilibrium,n],Dt[income,n]==0,
QuasilinearPrivate,SignConditions},
Dt[contrib,n]<0&&
Dt[public,n]==0]

The sign of the total-contribution impact is the same sign as income effects on public-good demand

TheoryOverlap[{Dt[NashEquilibrium,n],Dt[income,n]==0,
SignConditions,StableEquilibrium},
Publicisnormal,
Dt[public,n]>0]

TheoryGuru[{Dt[NashEquilibrium,n],Dt[income,n]==0,
SignConditions,StableEquilibrium},
SameSign[Dt[public,n],
Derivative[1,0][mrs][income-contrib, public]]]

Column[MostRecentAssumption,Spacings->1]

The sign of the per-capita-contribution impact is the opposite sign as income effects on consumption demand

TheoryOverlap[{Dt[NashEquilibrium,n],Dt[income,n]==0,
SignConditions,StableEquilibrium},
Privateisnormal,
Dt[contrib,n]<0]

TheoryGuru[{Dt[NashEquilibrium,n],Dt[income,n]==0,
SignConditions,StableEquilibrium},
SameSign[Dt[contrib,n],
Derivative[0,1][mrs][income-contrib, public]]]

Variable interpretations