Documentation

EconCSLib.Foundation.Preference

EconCSLib.Foundation.Preference #

Abstract interfaces for agent preferences, shared across the library.

Mathlib already provides Preorder (reflexive + transitive) and LinearOrder (total + antisymmetric + decidable). This file adds domain-specific vocabulary on top, without fixing a specific representation.

The library uses two complementary interfaces:

Design #

Main definitions #

References #

Relation-level vocabulary #

def strict {A : Type u_1} (R : AAProp) (a b : A) :

Strict preference derived from a weak preference relation.

Equations
Instances For
    def indiff {A : Type u_1} (R : AAProp) (a b : A) :

    Indifference derived from a weak preference relation.

    Equations
    Instances For
      theorem strict_transitive {A : Type u_1} {R : AAProp} (h : Transitive R) :

      Derived strict preference is transitive when the weak relation is transitive.

      Indifference and strict preference #

      def Indifferent {A : Type u_1} [Preorder A] (a b : A) :

      Two outcomes are indifferent under a preorder: abba. In a PartialOrder this implies a = b; in a general Preorder it does not. [MSZ 2.5]

      Equations
      Instances For
        theorem Indifferent.refl {A : Type u_1} [Preorder A] (a : A) :

        Indifference is reflexive.

        theorem Indifferent.symm {A : Type u_1} [Preorder A] {a b : A} (h : Indifferent a b) :

        Indifference is symmetric.

        theorem Indifferent.trans {A : Type u_1} [Preorder A] {a b c : A} (h₁ : Indifferent a b) (h₂ : Indifferent b c) :

        Indifference is transitive.

        @[reducible, inline]
        abbrev StrictlyPreferred {A : Type u_1} [Preorder A] (a b : A) :

        Strict preference is just < from the preorder. [MSZ 2.5]

        Equations
        Instances For
          theorem StrictlyPreferred.asymm {A : Type u_1} [Preorder A] {a b : A} (h : StrictlyPreferred a b) :

          Strict preference is asymmetric: ab → ¬(b ≻ a). [MSZ Ex 2.1(a)]

          theorem StrictlyPreferred.trans {A : Type u_1} [Preorder A] {a b c : A} (h₁ : StrictlyPreferred a b) (h₂ : StrictlyPreferred b c) :

          Strict preference is transitive. [MSZ Ex 2.1(a)]

          theorem StrictlyPreferred.irrefl {A : Type u_1} [Preorder A] (a : A) :

          Strict preference is irreflexive. [MSZ Ex 2.1(a)]

          Total preorder #

          class TotalPreorder (A : Type u_1) extends Preorder A :
          Type u_1

          A total preorder: a preorder where is total (complete). This is weaker than LinearOrder — it does NOT require antisymmetry or decidable equality. Two distinct elements can be indifferent.

          This is the appropriate notion for weak preferences in utility theory and matching theory. [MSZ 2.1–2.4]

          Instances
            theorem TotalPreorder.comparable {A : Type u_1} [TotalPreorder A] (a b : A) :
            a b b a

            In a total preorder, any two elements are comparable.

            @[implicit_reducible, instance 100]

            Every LinearOrder is a TotalPreorder.

            Equations

            Bundled preferences #

            class IsPreference {A : Type u_1} (R : AAProp) :

            A weak preference relation is admissible if it is reflexive, transitive, and total.

            Instances
              structure Pref (A : Type u_1) :
              Type u_1

              A bundled weak preference relation.

              Use this interface when several agents may rank the same outcome type differently. Use [TotalPreorder A] when the outcome type carries one relevant ambient preference order.

              Instances For
                @[implicit_reducible]
                instance instCoeFunPrefForallForallProp {A : Type u_1} :
                CoeFun (Pref A) fun (x : Pref A) => AAProp
                Equations
                def Pref.lt {A : Type u_1} (p : Pref A) (a b : A) :

                p.lt a b: outcome a is strictly preferred to b under preference p.

                Equations
                Instances For
                  def Pref.indifferent {A : Type u_1} (p : Pref A) (a b : A) :

                  p.indiff a b: outcomes a and b are indifferent under preference p.

                  Equations
                  Instances For
                    def Pref.ofTotalPreorder {A : Type u_1} (r : TotalPreorder A) :

                    Bundle an explicit total preorder as a preference.

                    Equations
                    Instances For
                      def Pref.ofLinearOrder {A : Type u_1} (r : LinearOrder A) :

                      Bundle an explicit linear order as a preference.

                      Equations
                      Instances For
                        def PrefProfile (N : Type u_1) (A : Type u_2) :
                        Type (max u_1 u_2)

                        A preference profile assigns each agent a bundled preference.

                        Equations
                        Instances For

                          Utility representation #

                          structure RepresentsPreference {A : Type u_1} {V : Type u_2} [Preorder A] [Preorder V] (u : AV) :

                          A utility function u : AV represents the preference on A if abu au b. [MSZ 2.7]

                          • le_iff (a b : A) : a b u a u b

                            The representation property: ab ↔ u(a) ≤ u(b).

                          Instances For
                            theorem RepresentsPreference.lt_iff {A : Type u_1} {V : Type u_2} [Preorder A] [Preorder V] {u : AV} (h : RepresentsPreference u) (a b : A) :
                            a < b u a < u b

                            A utility representation preserves strict preference.

                            theorem RepresentsPreference.indifferent_iff {A : Type u_1} {V : Type u_2} [Preorder A] [Preorder V] {u : AV} (h : RepresentsPreference u) (a b : A) :
                            Indifferent a b Indifferent (u a) (u b)

                            A utility representation preserves indifference.

                            Preference relation axioms (vNM) #

                            General axioms for preference relations, stated for an arbitrary binary relation. Lottery-specific axioms (Independence, Continuity) are in Utility.VNMAxioms.

                            def VNM.Completeness {A : Type u_1} (pref : AAProp) :

                            Completeness: every pair is comparable.

                            Equations
                            Instances For
                              def VNM.Transitivity {A : Type u_1} (pref : AAProp) :

                              Transitivity: preference chains compose.

                              Equations
                              Instances For