Documentation

LeanPool.AiyagariEquilibrium.Distribution.Feller

The agent distribution: state space and Markov operator #

Step one towards a stationary agent distribution for the income fluctuation problem.

The compact state space #

The model is posed with state space ℝ × Z, but a distribution has to live somewhere compact -- Prokhorov's theorem, which supplies the compactness of the space of probability measures, needs a compact underlying space. The household never leaves [0, assetCap] × Z, so that is where the distribution lives, and State is that region as a space in its own right rather than as a subset of a larger one.

Taking it as a subtype is forced. A subset of ℝ × Z would not be a compact space, and the earlier concavity work could not use a subtype because it is not a module over ℝ. Both choices are right in their own place: concavity needs the linear structure of the ambient space, the distribution needs compactness of the region.

The Markov operator #

markovOp h s is the expected value of h at next period's state, given that the household is at s today and follows its optimal policy. The content of the definition is that it lands in the bounded continuous functions again:

Feller is what will make the induced map on probability measures continuous, and continuity of that map is what a fixed point argument needs.

The operator on measures #

push μ is where the distribution μ is a period later. It is assembled from Measure.withDensity and Measure.map rather than from Measure.bind: Mathlib has lintegral_bind but no Bochner integral_bind, whereas both of the former have their Bochner lemmas, and it is the Bochner integral that the weak topology is stated with.

integral_push is the duality ∫ h d(push μ) = ∫ (markovOp h) dμ, and it is what makes the whole thing work: weak convergence is tested against bounded continuous functions, so weak continuity of push reduces immediately to markovOp h being one.

@[reducible, inline]
abbrev LeanEconomics.IncomeFluctuation.State {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (_P : IncomeFluctuation Z assetFloor assetCap) :
Type u_1

The compact region the agent distribution lives on: assets in [0, assetCap] paired with an income state.

Equations
Instances For
    instance LeanEconomics.IncomeFluctuation.instCompactSpaceState {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) :
    def LeanEconomics.IncomeFluctuation.incl {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) :

    The region, read back as a state of the original model.

    Equations
    Instances For
      theorem LeanEconomics.IncomeFluctuation.continuous_incl {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) :
      theorem LeanEconomics.IncomeFluctuation.incl_mem {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) :
      (P.incl s).1 ∈ Set.Icc assetFloor assetCap
      noncomputable def LeanEconomics.IncomeFluctuation.nextAssets {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) :
      ↑(Set.Icc assetFloor assetCap)

      Next period's assets under the optimal policy, as a point of the region.

      Equations
      Instances For
        noncomputable def LeanEconomics.IncomeFluctuation.nextState {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) (z' : Z) :

        Next period's state if the income shock z' occurs.

        Equations
        Instances For
          theorem LeanEconomics.IncomeFluctuation.continuous_nextAssets {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) :

          The policy moves the household continuously within the region. This is the Feller input, and it is exactly what the concavity and uniqueness development bought.

          theorem LeanEconomics.IncomeFluctuation.continuous_nextState {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (z' : Z) :
          Continuous fun (s : P.State) => P.nextState s z'
          noncomputable def LeanEconomics.IncomeFluctuation.prob {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) (z' : Z) :

          The probability of moving to income state z', as a function of today's state.

          Equations
          Instances For
            theorem LeanEconomics.IncomeFluctuation.prob_nonneg {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) (z' : Z) :
            0 ≤ P.prob s z'
            theorem LeanEconomics.IncomeFluctuation.prob_sum {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) :
            ∑ z' : Z, P.prob s z' = 1
            theorem LeanEconomics.IncomeFluctuation.continuous_prob {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (z' : Z) :
            Continuous fun (s : P.State) => P.prob s z'
            noncomputable def LeanEconomics.IncomeFluctuation.markovFn {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (h : BoundedContinuousFunction P.State ℝ) (s : P.State) :

            The expected value of h next period, as a bare function.

            Equations
            Instances For
              theorem LeanEconomics.IncomeFluctuation.abs_markovFn_le {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (h : BoundedContinuousFunction P.State ℝ) (s : P.State) :
              noncomputable def LeanEconomics.IncomeFluctuation.markovOp {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (h : BoundedContinuousFunction P.State ℝ) :

              The Markov operator. markovOp h is the expected value of h next period. That it is again bounded and continuous is the Feller property.

              Equations
              Instances For
                @[simp]
                theorem LeanEconomics.IncomeFluctuation.markovOp_apply {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (h : BoundedContinuousFunction P.State ℝ) (s : P.State) :
                (P.markovOp h) s = ∑ z' : Z, P.prob s z' * h (P.nextState s z')
                theorem LeanEconomics.IncomeFluctuation.markovOp_mono {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) {h k : BoundedContinuousFunction P.State ℝ} (hk : ⇑h ≤ ⇑k) :
                ⇑(P.markovOp h) ≤ ⇑(P.markovOp k)

                The operator is monotone: a larger payoff tomorrow is worth more today.

                The operator is unital: a constant payoff is worth its own value. This is ∑ prob = 1, and it is what will make the induced map send probability measures to probability measures.

                The operator on measures #

                noncomputable def LeanEconomics.IncomeFluctuation.dens {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (z' : Z) (s : P.State) :

                The reweighting density for shock z', as an ℝ≥0-valued function.

                Equations
                Instances For
                  theorem LeanEconomics.IncomeFluctuation.measurable_dens {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) [MeasurableSpace Z] [BorelSpace Z] (z' : Z) :
                  @[simp]
                  theorem LeanEconomics.IncomeFluctuation.coe_dens {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (z' : Z) (s : P.State) :
                  ↑(P.dens z' s) = P.prob s z'
                  theorem LeanEconomics.IncomeFluctuation.sum_dens {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) :
                  ∑ z' : Z, ↑(P.dens z' s) = 1
                  noncomputable def LeanEconomics.IncomeFluctuation.push {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) [MeasurableSpace Z] (μ : MeasureTheory.Measure P.State) :

                  One period of the agent distribution's motion. Each income state z' reweights the distribution by the probability of moving there and pushes it along the policy.

                  Equations
                  Instances For
                    theorem LeanEconomics.IncomeFluctuation.measurable_nextState {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) [MeasurableSpace Z] [BorelSpace Z] (z' : Z) :
                    Measurable fun (s : P.State) => P.nextState s z'

                    push preserves total mass, because the transition probabilities sum to one.

                    theorem LeanEconomics.IncomeFluctuation.prob_le_one {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) (s : P.State) (z' : Z) :
                    P.prob s z' ≤ 1

                    Each transition probability is at most one.

                    Duality. The integral of h against tomorrow's distribution is the integral of the expected value of h against today's. This is the bridge between the two operators, and it is what turns the Feller property into weak continuity.

                    The agent distribution operator, on probability measures.

                    Equations
                    Instances For
                      @[simp]
                      theorem LeanEconomics.IncomeFluctuation.coe_pushProb {Z : Type u_1} [Fintype Z] [Nonempty Z] [TopologicalSpace Z] [DiscreteTopology Z] {assetFloor assetCap : ℝ} (P : IncomeFluctuation Z assetFloor assetCap) [MeasurableSpace Z] [BorelSpace Z] (μ : MeasureTheory.ProbabilityMeasure P.State) :
                      ↑(P.pushProb μ) = P.push ↑μ

                      The distribution operator is weakly continuous. This is the Feller property in the form a fixed point argument needs, and it falls straight out of the duality: weak convergence is tested against bounded continuous functions, and markovOp h is one.

                      A stationary agent distribution is a fixed point of the operator.

                      Equations
                      Instances For