The Generalized Law of Demand

TheoryGuru applications

Load Economicreasoning package only if it is not already loaded

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

Notes

p and p’ are each a price vector.
q[u,p] is the vector of Hicksian demands corresponding to utility/output u.

In the Wolfram Language, x.y refers to the tensor DOT PRODUCT, NOT scalar multiplication.  For TheoryGuru purposes, tensor means vector, so that the result of x.y is a scalar.

Setup

revealedpreference={p.q[u,p]≤p.q[u,p'](* q[u,p] is cost minimizing for p *),
p'.q[u,p']≤p'.q[u,p](* q[u,p'] is cost minimizing for p' *)};

This holds for any number of goods (i.e., regardless of the lengths of the vectors).
This holds even if:
	• preferences are not convex,
	• demand functions are not continuous,
	• more than one price is changing, and
	• the price changes are not marginal

Result

TheoryGuru[revealedpreference,
(p'-p).(q[u,p']-q[u,p])≤0]

If p and p’ are the same except for the ith price, then this result just says that the own substitution effect is negative for good i.

Variable interpretations

This notation could be compressed, because the demand function arguments are effectively just indices

TheoryGuru[{p.q≤p.q',p'.q'≤p'.q},
(p'-p).(q'-q)≤0]

q (q’) denotes the quantity vector that minimizes expenditure at price vector p (p’), respectively.