Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/SenSocialChoice/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 29.4.2026 mit Größe 9 kB image not shown  

Quelle  RPRs.thy

  Sprache: Isabelle
 

(*
 * Rational Preference Relations (RPRs).
 * (C)opyright Peter Gammie, peteg42 at gmail.com, commenced July 2006.
 * License: BSD
 *)


(*<*)
theory RPRs

imports FSext

begin
(*>*)

(* **************************************** *)

sectionPreliminaries

text

  auxiliary concepts defined here are standard cite"Routley:79" and "Sen:70a" and "Taylor:2005". Throughout we make use of a fixed set @{term "A"} of
 , drawn from some arbitrary type @{typ "'a"} of suitable
 . Taylor cite"Taylor:2005" terms this set an \emph{agenda}. Similarly
  have a type @{typ "'i"} of individuals and a population @{term "Is"}.

 


(* **************************************** *)

subsectionRational Preference Relations (RPRs)

text

  for rational preference relations (RPRs), which represent
  or strict preference amongst some set of alternatives. These
  also called \emph{weak orders} or (ambiguously) \emph{ballots}.

  Isabelle's standard ordering operators and lemmas are
 -based, and as introducing new types is painful and we need several
  per type, we need to repeat some things.

 


type_synonym 'a RPR = "('a * 'a) set"

abbreviation rpr_eq_syntax :: "'a ==> 'a RPR ==> 'a ==> bool" (_ _ [5010005150where
  "x y == (x, y) r"

definition indifferent_pref :: "'a ==> 'a RPR ==> 'a ==> bool" (_ _ [5010005150where
  "x y (x y y x)"

lemma indifferent_prefI[intro]: "[ x y; y x ] ==> x y"
  unfolding indifferent_pref_def by simp

lemma indifferent_prefD[dest]: "x y ==> x y y x"
  unfolding indifferent_pref_def by simp

definition strict_pref :: "'a ==> 'a RPR ==> 'a ==> bool" (_ _ [5010005150where
  "x y (x y ¬(y x))"

lemma strict_pref_def_irrefl[simp]: "¬ (x x)" unfolding strict_pref_def by blast

lemma strict_prefI[intro]: "[ x y; ¬(y x) ] ==> x y"
  unfolding strict_pref_def by simp

text

 , @{term "x y"} would be written $xRy$,
 {term "x y"} as $xIy$ and @{term "x
  y"} as $xPy$, where the relation $r$ is implicit, and
  are indexed by subscripting.

 


text

 emph{Complete} means that every pair of distinct alternatives is
 . The "distinct" part is a matter of taste, as it makes sense to
  an alternative as as good as itself. Here I take reflexivity
 .

 


definition complete :: "'a set ==> 'a RPR ==> bool" where
  "complete A r (x A. y A - {x}. x y y x)"

lemma completeI[intro]:
  "(x y. [ x A; y A; x y ] ==> x y y x) ==> complete A r"
  unfolding complete_def by auto

lemma completeD[dest]:
  "[ complete A r; x A; y A; x y ] ==> x y y x"
  unfolding complete_def by auto

lemma complete_less_not: "[ complete A r; hasw [x,y] A; ¬ x y ] ==> y x"
  unfolding complete_def strict_pref_def by auto

lemma complete_indiff_not: "[ complete A r; hasw [x,y] A; ¬ x y ] ==> x y y x"
  unfolding complete_def indifferent_pref_def strict_pref_def by auto

lemma complete_exh:
  assumes "complete A r"
      and "hasw [x,y] A"
  obtains (xPy) "x y"
    | (yPx) "y x"
    | (xIy) "x y"
  using assms unfolding complete_def strict_pref_def indifferent_pref_def by auto

text

  the standard @{term "refl"}. Also define \emph{irreflexivity}
  to how @{term "refl"} is defined in the standard library.

 


declare refl_onI[intro] refl_onD[dest]

lemma complete_refl_on:
  "[ complete A r; refl_on A r; x A; y A ] ==> x y y x"
  unfolding complete_def by auto

definition irrefl :: "'a set ==> 'a RPR ==> bool" where
  "irrefl A r r A × A (x A. ¬ x x)"

lemma irreflI[intro]: "[ r A × A; x. x A ==> ¬ x x ] ==> irrefl A r"
  unfolding irrefl_def by simp

lemma irreflD[dest]: "[ irrefl A r; (x, y) r ] ==> hasw [x,y] A"
  unfolding irrefl_def by auto

lemma irreflD'[dest]:
  "[ irrefl A r; r {} ] ==> x y. hasw [x,y] A (x, y) r"
  unfolding irrefl_def by auto

textRational preference relations, also known as weak orders and (I
 ) complete pre-orders.


definition rpr :: "'a set ==> 'a RPR ==> bool" where
  "rpr A r complete A r r A × A refl_on A r trans r"

lemma rprI[intro]: "[ complete A r; r A × A; refl_on A r; trans r ] ==> rpr A r"
  unfolding rpr_def by simp

lemma rprD: "rpr A r ==> complete A r refl_on A r trans r"
  unfolding rpr_def by simp

lemma rpr_in_set[dest]: "[ rpr A r; x y ] ==> {x,y} A"
  unfolding rpr_def refl_on_def by auto

lemma rpr_refl[dest]: "[ rpr A r; x A ] ==> x x"
  unfolding rpr_def by blast

lemma rpr_less_not: "[ rpr A r; hasw [x,y] A; ¬ x y ] ==> y x"
  unfolding rpr_def by (auto simp add: complete_less_not)

lemma rpr_less_imp_le[simp]: "[ x y ] ==> x y"
  unfolding strict_pref_def by simp

lemma rpr_less_imp_neq[simp]: "[ x y ] ==> x y"
  unfolding strict_pref_def by blast

lemma rpr_less_trans[trans]: "[ x y; y z; rpr A r ] ==> x z"
  unfolding rpr_def strict_pref_def trans_def by blast

lemma rpr_le_trans[trans]: "[ x y; y z; rpr A r ] ==> x z"
  unfolding rpr_def trans_def by blast

lemma rpr_le_less_trans[trans]: "[ x y; y z; rpr A r ] ==> x z"
  unfolding rpr_def strict_pref_def trans_def by blast

lemma rpr_less_le_trans[trans]: "[ x y; y z; rpr A r ] ==> x z"
  unfolding rpr_def strict_pref_def trans_def by blast

lemma rpr_complete: "[ rpr A r; x A; y A ] ==> x y y x"
  unfolding rpr_def by (blast dest: complete_refl_on)

(* **************************************** *)

subsectionProfiles

text A \emph{profile} (also termed a collection of \emph{ballots}) maps
  individual to an RPR for that individual.


type_synonym ('a, 'i) Profile = "'i ==> 'a RPR"

definition profile :: "'a set ==> 'i set ==> ('a, 'i) Profile ==> bool" where
  "profile A Is P Is {} (i Is. rpr A (P i))"

lemma profileI[intro]: "[ i. i Is ==> rpr A (P i); Is {} ] ==> profile A Is P"
  unfolding profile_def by simp

lemma profile_rprD[dest]: "[ profile A Is P; i Is ] ==> rpr A (P i)"
  unfolding profile_def by simp

lemma profile_non_empty: "profile A Is P ==> Is {}"
  unfolding profile_def by simp

(*<*)
end
(*>*)

Messung V0.5 in Prozent
C=90 H=97 G=93

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.