Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/HOL/ex/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 8 kB image not shown  

Quelle  Set_Theory.thy   Sprache: Isabelle

 
(*  Title:      HOL/ex/Set_Theory.thy
    Author:     Tobias Nipkow and Lawrence C Paulson
    Copyright   1991  University of Cambridge
*)


section Set Theory examples: Cantor's Theorem, Schröder-Bernstein Theorem, etc.\

theory Set_Theory
imports Main
begin

text
  These two are cited in Benzmueller and Kohlhase's system description
  of LEO, CADE-15, 1998 (pages 139-143) as theorems LEO could not
  prove.


lemma "(X = Y \ Z) =
    (Y  X  Z  X  (V. Y  V  Z  V  X  V))"
  by blast

lemma "(X = Y \ Z) =
    (X  Y  X  Z  (V. V  Y  V  Z  V  X))"
  by blast

text 
  Trivial example of term synthesis: apparently hard for some provers!


schematic_goal "a \ b \ a \ ?X \ b \ ?X"
  by blast


subsection Examples for the blast paper

lemma "(\x \ C. f x \ g x) = \(f ` C) \ \(g ` C)"
  🍋 Union-image, called Un_Union_image in Main HOL
  by blast

lemma "(\x \ C. f x \ g x) = \(f ` C) \ \(g ` C)"
  🍋 Inter-image, called Int_Inter_image in Main HOL
  by blast

lemma singleton_example_1:
     "\S::'a set set. \x \ S. \y \ S. x \ y \ \z. S \ {z}"
  by blast

lemma singleton_example_2:
     "\x \ S. \S \ x \ \z. S \ {z}"
  🍋 Variant of the problem above.
  by blast

lemma "\!x. f (g x) = x \ \!y. g (f y) = y"
  🍋 A unique fixpoint theorem --- fast/best/meson all fail.
  by metis


subsection Cantor's Theorem: There is no surjection from a set to its powerset\

lemma cantor1: "\ (\f:: 'a \ 'a set. \S. \x. f x = S)"
  🍋 Requires best-first search because it is undirectional.
  by best

schematic_goal "\f:: 'a \ 'a set. \x. f x \ ?S f"
  🍋 This form displays the diagonal term.
  by best

schematic_goal "?S \ range (f :: 'a \ 'a set)"
  🍋 This form exploits the set constructs.
  by (rule notI, erule rangeE, best)

schematic_goal "?S \ range (f :: 'a \ 'a set)"
  🍋 Or just this!
  by best


subsection The Schröder-Bernstein Theorem

lemma decomposition: 
  obtains X where "X = - (g ` (- (f ` X)))"
  using lfp_unfold [OF monoI, of "\X. - g ` (- f ` X)"]
  by blast

theorem Schroeder_Bernstein:
  fixes f :: "'a \ 'b" and g :: "'b \ 'a"
  assumes "inj f" "inj g"
  obtains h:: "'a \ 'b" where "inj h" "surj h"
proof (rule decomposition)
  fix X
  assume X: "X = - (g ` (- (f ` X)))"
  let ?h = "\z. if z \ X then f z else inv g z"
  show thesis
  proof
    have "inj_on (inv g) (-X)"
      by (metis X inj g bij_betw_def double_complement inj_imp_bij_betw_inv)
    with inj f show "inj ?h"
      unfolding inj_on_def by (metis Compl_iff X inj g imageI image_inv_f_f)
    show "surj ?h"
      using inj g X image_iff surj_def by fastforce
  qed
qed

subsection A simple party theorem

text\emph{At any party there are two people who know the same
number of people}. Provided the party consists of at least two people
and the knows relation is symmetric. Knowing yourself does not count
--- otherwise knows needs to be reflexive. (From Freek Wiedijk's talk
at TPHOLs 2007.)

lemma equal_number_of_acquaintances:
assumes "Domain R <= A" and "sym R" and "card A \ 2"
shows "\ inj_on (%a. card(R `` {a} - {a})) A"
proof -
  let ?N = "%a. card(R `` {a} - {a})"
  let ?n = "card A"
  have "finite A" using card A  2 by(auto intro:ccontr)
  have 0: "R `` A <= A" using sym R Domain R <= A
    unfolding Domain_unfold sym_def by blast
  have h: "\a\A. R `` {a} <= A" using 0 by blast
  hence 1: "\a\A. finite(R `` {a})" using finite A
    by(blast intro: finite_subset)
  have sub: "?N ` A <= {0..
  proof -
    have "\a\A. R `` {a} - {a} < A" using h by blast
    thus ?thesis using psubset_card_mono[OF finite Aby auto
  qed
  show "~ inj_on ?N A" (is "~ ?I")
  proof
    assume ?I
    hence "?n = card(?N ` A)" by(rule card_image[symmetric])
    with sub finite A have 2[simp]: "?N ` A = {0..
      using subset_card_intvl_is_intvl[of _ 0] by(auto)
    have "0 \ ?N ` A" and "?n - 1 \ ?N ` A"  using card A  2 by simp+
    then obtain a b where ab: "a\A" "b\A" and Na: "?N a = 0" and Nb: "?N b = ?n - 1"
      by (auto simp del: 2)
    have "a \ b" using Na Nb card A  2 by auto
    have "R `` {a} - {a} = {}" by (metis 1 Na ab card_eq_0_iff finite_Diff)
    hence "b \ R `` {a}" using ab by blast
    hence "a \ R `` {b}" by (metis Image_singleton_iff assms(2) sym_def)
    hence 3: "R `` {b} - {b} <= A - {a,b}" using 0 ab by blast
    have 4: "finite (A - {a,b})" using finite A by simp
    have "?N b <= ?n - 2" using ab ab finite A card_mono[OF 4 3] by simp
    then show False using Nb card A   2 by arith
  qed
qed

text 
  From W. W. Bledsoe and Guohui Feng, SET-VAR. JAR 11 (3), 1993, pages
  293-314.

  Isabelle can prove the easy examples without any special mechanisms,
  but it can't prove the hard ones.


lemma "\A. (\x \ A. x \ (0::int))"
  🍋 Example 1, page 295.
  by force

lemma "D \ F \ \G. \A \ G. \B \ F. A \ B"
  🍋 Example 2.
  by force

lemma "P a \ \A. (\x \ A. P x) \ (\y. y \ A)"
  🍋 Example 3.
  by force

lemma "a < b \ b < (c::int) \ \A. a \ A \ b \ A \ c \ A"
  🍋 Example 4.
  by auto 🍋 slow

lemma "P (f b) \ \s A. (\x \ A. P x) \ f s \ A"
  🍋 Example 5, page 298.
  by force

lemma "P (f b) \ \s A. (\x \ A. P x) \ f s \ A"
  🍋 Example 6.
  by force

lemma "\A. a \ A"
  🍋 Example 7.
  by force

lemma "(\u v. u < (0::int) \ u \ \v\)
     (A::int set. -2  A & (y. y  A))"
  🍋 Example 8 needs a small hint.
  by force
    🍋 not blast, which can't simplify \-2 < 0\\

text Example 9 omitted (requires the reals).

text The paper has no Example 10!

lemma "(\A. 0 \ A \ (\x \ A. Suc x \ A) \ n \ A) \
  P 0  (x. P x  P (Suc x))  P n"
  🍋 Example 11: needs a hint.
by(metis nat.induct)

lemma
  "(\A. (0, 0) \ A \ (\x y. (x, y) \ A \ (Suc x, Suc y) \ A) \ (n, m) \ A)
     P n  P m"
  🍋 Example 12.
  by auto

lemma
  "(\x. (\u. x = 2 * u) = (\ (\v. Suc x = 2 * v))) \
    (A. x. (x  A) = (Suc x  A))"
  🍋 Example EO1: typo in article, and with the obvious fix it seems
      to require arithmetic reasoning. 2024-06-19: now trivial for sledgehammer (LCP)
  by (metis even_Suc mem_Collect_eq)

end

Messung V0.5
C=97 H=97 G=96

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© 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.