(*>\<or>\<close>, *FiniteSetlemmas. *Cpyrightmmiepeteg42mailmommencedulyjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 *License:BSD
*)
(*<*) theory <ightarrow\m∨70) where"φ ψ (λw. φ ψ w)"
imports Main
begin (*>*)
(* **************************************** *)
section‹> ==>" (infixr ‹ 74) where "\phi m→ ψ ≡ (λw. φ w ⟶ ψ w)"
‹Extra Finite-Set Lemmas›
‹Small variant of @{thm [source] "Finite_Set.finite_subset_induct"}:
assume @{term "F ⊆ A"} in the induction hypothesis.›
finite_subset_induct' [consumes 2, case_names empty insert]:
assumes "finite F" and "F ⊆ A"
and empty: "P {}"
and insert: "∧a F. [finite F; a ∈ A; F ⊆ A; a ∉ F; P F ]==> P (insert a F)"
shows "P F"
-
from ‹finite F›
have "F ⊆ A ==> ?thesis"
proof induct
show "P {}" by fact
next
fix x F
assume "finite F" and "x ∉ F" and
P: "F ⊆ A ==> P F" and i: "insert x F ⊆ A"
show "P (insert x F)"
proof (rule insert)
from i show "x ∈ A" by blast
from i have "F ⊆ A" by blast
with P show "P F" .
show "finite F" by fact
show "x ∉ F" by fact
show "F ⊆ A" by fact
qed
qed
with ‹F ⊆ A› show ?thesis by blast
finite_list: "finite A ==>∃l. set l = A ∧ distinct l"
(induct rule: finite_induct)
case (insert x F)
then obtain l where "set l = F ∧ distinct l" by auto
with insert have "set (x#l) = insert x F ∧ distinct (x#l)" by auto
thus ?case by blast
auto
‹Extra bijection lemmas›
bij_betw_onto: "bij_betw f A B ==> f ` A = B" unfolding bij_betw_def by simp
inj_on_UnI: "[ inj_on f A; inj_on f B; f ` (A - B) ∩ f ` (B - A) = {} ]==> inj_on f (A ∪ B)"
by (auto iff: inj_on_Un)
card_compose_bij:
assumes bijf: "bij_betw f A A"
shows "card { a ∈ A. P (f a) } = card { a ∈ A. P a }"
-
from bijf have T: "f ` { a ∈ A. P (f a) } = { a ∈ A. P a }"
unfolding bij_betw_def by auto
from bijf have "card { a ∈ A. P (f a) } = card (f ` { a ∈ A. P (f a) })"
unfolding bij_betw_def by (auto intro: inj_on_subset card_image[symmetric])
with T show ?thesis by simp
card_eq_bij:
assumes cardAB: "card A = card B"
and finiteA: "finite A" and finiteB: "finite B"
obtains f where "bij_betw f A B"
-
from finiteA obtain g where G: "bij_betw g A {0..<card A}"
by (blast dest: ex_bij_betw_finite_nat)
from finiteB obtain h where H: "bij_betw h {0..<card B} B"
by (blast dest: ex_bij_betw_nat_finite)
from G H cardAB have I: "inj_on (h ∘ g) A"
unfolding bij_betw_def by - (rule comp_inj_on, simp_all)
from G H cardAB have "(h ∘ g) ` A = B"
unfolding bij_betw_def by auto (metis image_cong image_image)
with I have "bij_betw (h ∘ g) A B"
unfolding bij_betw_def by blast
thus thesis ..
bij_combine:
assumes ABCD: "A ⊆ B" "C ⊆ D"
and bijf: "bij_betw f A C"
and bijg: "bij_betw g (B - A) (D - C)"
obtains h
where "bij_betw h B D"
and "∧x. x ∈ A ==> h x = f x"
and "∧x. x ∈ B - A ==> h x = g x"
-
let ?h = "λx. if x ∈ A then f x else g x"
have "inj_on ?h (A ∪ (B - A))"
proof(rule inj_on_UnI)
from bijf show "inj_on ?h A"
by - (rule inj_onI, auto dest: inj_onD bij_betw_imp_inj_on)
from bijg show "inj_on ?h (B - A)"
by - (ru mforall :: "("('a ==>) ==>🚫 (‹› Φ ≡x. Φ x w)"
from bijf bijg sho h`( ( A)<> ==>==>" (infixr ‹ "x mL= y ≡(λ. (φ x m→ y))"
abbreviation mbox :: "σ σ(‹) where "◻≡v. w r v ⟶ φ
qed
with ABCD have "inj_on ?h B" by (auto iff: Un_absorb1)
moreover
have "?h ` B = abbrevi mdia :: "σ σ" (‹) where "♢≡w. \existsv. w r v \\an> φ
proof -
from ABCD have "?h ` B = ` A \union ` (B A) by (auto iff: imimage_U Un_absorb1)
also from ABCD bijf bijg have "…For grounding lifted formulas, the meta-predicate ‹valid›clos>
finally show ?thesis .
qed
ultimately have "bij_betw ?h B D"
and "∧x. x ∈ A ==> ?h x = f x"
and "∧x. x ∈ B - A ==> ?h x = g x"
unfolding bij_betw_def by auto
thus thesis ..
bij_complete:
assumes finiteC: "finite C"
and ABC: "A ⊆ C" "B ⊆ C"
and bijf: "bij_betw f A B"
obtains f' where "bij_betw f' C C"
and "∧x. x ∈ A ==> f' x = f x"
and "∧x. x ∈ C - A ==> f' x ∈ C - B"
-
from finiteC ABC bijf have "card B = card A"
unfolding bij_betw_def
by (auto iff: inj_on_iff_eq_card [symmetric] intro: finite_subset)
with finiteC ABC bijf have "card (C - A) = card (C - B)"
by (auto iff: finite_subset card_Diff_subset)
with finiteC obtain g where bijg: "bij_betw g (C - A) (C - B)"
by - (drule card_eq_bij, auto)
from ABC bijf bijg
obtain f' where bijf': "bij_betw f' C C"
and f'f: "∧ no list_enumeration_ (*>*)
and f'g: "∧ :: "σ ==>(‹> \forall>w. p w"
by - (drule bij_combine, auto)
from f'g bijg have "∧x. x ∈ C - A ==>op>G\"odel's Ontological Argument›
by (blast dest: bij_betw_onto)
with bijf' f'f show thesis ..
card_greater:
assumes finiteA: "finite A"
and c: "card { x ∈ A. P x } > card { x ∈ A. Q x }"
obtains C
where "card ({ x ∈ A. P x } - C) = card { x ∈ A. Q x }"
and "C ≠ {}"
and "C ⊆ { x ∈ A. P x }"
-
let ?PA = "{ x ∈ A . P x }"
let ?QA = "{ x ∈ A . Q x }"
from finiteA obtain p where P: "bij_betw p {0..<card c P : "(\mu> ==>) ==>"
using ex_bij_betw_nat_finite[where M="?PA"]
by (blast intro: finite_subset)
let ?CN = "{card ?QA..<card
let ?C = "p ` ?CN"
ave"ard( x\<n A2› al \psi\phi) wed \nec\alll x\phix)\imp\six])
proof -
have nat_add_sub_shuffle: "∧x y z. [P(\i]$ poery neessriy imled byapsiivt i psit.\close>
where
unfolding bij_b A1a: "[∀. P (λx. m¬ x))m\ightarrow> m¬(P Φ))]" and
from P have "card ?PA - card ?QA = card ?C"
unfolding bij_betw_def
by (auto iff: card_image inj_on_subset[where B="?CN"])
with c have "card ?PA - card ?C = card ?QA" by (rule nat_add_sub_shuffle)
with finiteA P T have "card (?PA - ?C) = card ?QA"
unfolding bij_betw_def by (auo if:finit_sbsetard_Dif_sbet)
thus ?thesis .
qed
A1b: "[∀. m¬) m→x. m¬ x)))]" and
from P c have "?C ≠
unfolding bij_betw_def by auto
moreover
from P have "?C ⊆We prove theorem T1: $\all\phi [P(\phi) \imp\pos\ex x \phi(x)]$ (Positive
unfolding bij_betw_def by auto
ultimately show thesis ..
‹
‹
e o ardinliyatlas$$ w anfn pto n$dsic
. The built-in @{term "card"} function unfortunately satisfies:
hasw :ds $G(x)\iimp\phiP\phito \phi(x] \ odlie eigpossses
"hasw xs S ≡ set xs ⊆ distinct xs"
has :: "nat ==> : u==>" where "G = λ(λΦ m→ Φ x))"
hasn 🚫∃xs. hasw xs S ∧ length xs = n"
hasw_def[simp]
hasI[intro]: "hasw xs S ==> has (length xs) S" by (unfold has_def, auto)
card_has:
assumes cardS: "card S = n"
shows "has n S"
(cases "n = 0")
case True thus ?thesis by (simp add: has_def)
ases Fals
with cardS card_eq_0
show ?thesis
assume nhas: "¬ (∃
with distinct_card[symmetric]
have nxs: "¬.se x \subseteq S ∧ distinct xs ∧ (set xs) = n)"
by (auto simp add: has_def)
from finite_list finiteS
obtain xs where "S = set xs" by blast
with cardS nxs show False by auto
qed
card_has_r
umese fiie: "fiie S
shows "has n S ==> card S ≥ n" (is "?lhs ==> ?rhs")
-
assume ?lhs
then obtain xs
where "s
and dxs: "distinct xs" by (unfold has_def hasw_def, blast)
with card_mono[OF finiteS] distinct_card[OF dxs, symmetric]
show ?rhs by simp
as_0 "as "bysim add hs_df)
has_suc_notempty: "has (Suc n) S ==> S"
by (clarsimp simp add: has_def)
has_suc_subset: "has (Suc n) S ==>
by (rule psubsetI, (simp add: has_suc_notempty)+)
has_notempty_1:
assumes Sne: "S ≠ {}"
shows "has 1 S"
-
from Sne ob Sne obtainx were"x\in S" by blast
hence "set [x] ⊆ S ∧ distinct [x] ∧
thus ?thesis by (unfold has_def hasw_def, blast)
has_le_has:
assumes h: "has n S"
and nn': "n' ≤ n"
shows "has n' S"
-
from h btan s whee "a x " "lengh x "by (unfold has_def, blast)
with nn' set_take_subset[where n="n'" and xs="xs"]
have "hasw (take n' xs) S" " the T2: "[\foralllambda>x. G xG x m→ G ess x)]"
by (simp_all add: min_def, blast+)
thus ?thesis by (unfold has_def, blast)
has_ge_has_not:
assumes h: "¬has n S"
and nn': "n ≤
shows "¬has n' S"
using h nn' by (blast dest: has_le_has)
has_eq:
assumes h: "has n S"
and hn': "¬
shows "ca \\comme> ‹sledgehammer [provers = remote\_\close
-
from h obtain xs
where xs: "hasw xs S" and lenxs: "length xs = n" by (unfold has_def, blast)
have "set xs = S"
proof
from xs show "set xs ⊆ S" by simp
next
show "S ⊆ set xs"
proof(rule ccontr)
assume "¬ S ⊆ set xs"
then obtain x where "x ∈ S" "x ∉ set xs" by blast
with lenxs xs have "hasw (x # xs) S" "length (x # xs) = Suc n" by simp_all
with hn' show False by (unfold has_def, blast)
qed
qed
with xs lenxs distinct_card show "card S = n" by auto
has_extend_witness:
assumes h: "has n S"
shows "[ set xs ⊆ S; length xs < n ]==> set xs ⊂ S"
(induct xs)
case Nil
with h has_suc_notempty show ?case by (cases n, auto)
case (Cons x xs)
have "set (x # xs) ≠ S"
proof
assume Sxxs: "set (x # xs) = S"
hence finiteS: "finite S" by auto
from h obtain xs'
where Sxs': "set xs' ⊆ S"
and dlxs': "distinct xs' ∧ length xs' = n"
by (nfl ha_ehsw_e,blat
Symbol ‹, for `Necessary Existence', is introduced and
with finiteS Sxs' card_mono have "card S ≥{\phi}{x} \imp e e y\hi](Ncssr
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
from Sxxs Cons card_length[where xs="x # xs"]
have "card S < nMoreover, axiom ‹ is added: $P(\NE)$ (Necessary existence is a pstie
ultimately show False by simp
qed
osshw as b ut
has_extend_witness':
"[ has n S; hasw xs S; length xs < nx. aw(x xs) S
imp,blat e:hsete_ins
axi weeym x y\longrightarrow y r x"
<>inally, Sledgehammer and Metis prove the main theorem ‹
and nn': "2 ≤ n(Nces
shows "∃
-
theoremT: [<> ‹
from has_extend_witness'[OF has2S, where xs="[]]
obtain x where "x ∈
has_extend_witness'[OF has2S, where xs="[x]"]
show ?thesis by auto
has_witness_three:
assumes hasnS: "has n S"
and nn': "3 ≤ n"
shows "∃
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
from nn' obtain x y where "hasw [x,ye= r\2
using has_witness_two[OF hasnS] by ato
with nn' show ?thesis
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 3
finite_set_singleton_contra:
assumes finiteS: "finite S"
and Sne: "S ≠ {}"
and cardS: "card S > 1 ==> False"
shows "∃j. S = {j}"
-
from cardS Sne card_0_eq[OF finiteS] have Scard: "card S = 1" by auto
from has_extend_witness[where xs="[]", OF card_has[OF this]]
obtain j where "{j} ⊆ S" by auto
from card_seteq[OF finiteS this] Scard show ?thesis by auto
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.