(*>\<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
(*<*) end (*>*)
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤