For this we set A to the set of even atoms and B to
the set of odd atoms. Then A ∪ B, that is the set of
all atoms, has empty support. The sets A, respectively B,
however have the set of all atoms as their support. ›
atom_decl atom
text‹The set of even atoms.› abbreviation
EVEN :: "atom set" where "EVEN ≡ {atom n | n. ∃i. n=2*i}"
text‹The set of odd atoms:› abbreviation
ODD :: "atom set" where "ODD ≡ {atom n | n. ∃i. n=2*i+1}"
text‹An atom is either even or odd.› lemma even_or_odd: fixes n :: nat shows"∃i. (n = 2*i) ∨ (n=2*i+1)" by (induct n) (presburger)+
text‹
The union of even and odd atoms is the set of all atoms.
(Unfortunately I do not know a simpler proof of this fact.)› lemma EVEN_union_ODD: shows"EVEN ∪ ODD = UNIV" using even_or_odd proof - have"EVEN ∪ ODD = (λn. atom n) ` {n. ∃i. n = 2*i} ∪ (λn. atom n) ` {n. ∃i. n = 2*i+1}"by auto alsohave"… = (λn. atom n) ` ({n. ∃i. n = 2*i} ∪ {n. ∃i. n = 2*i+1})"by auto alsohave"… = (λn. atom n) ` ({n. ∃i. n = 2*i ∨ n = 2*i+1})"by auto alsohave"… = (λn. atom n) ` (UNIV::nat set)"using even_or_odd by auto alsohave"… = (UNIV::atom set)"using atom.exhaust by (auto simp add: surj_def) finallyshow"EVEN ∪ ODD = UNIV"by simp qed
text‹The sets of even and odd atoms are disjunct.› lemma EVEN_intersect_ODD: shows"EVEN ∩ ODD = {}" using even_or_odd by (auto) (presburger)
text‹
The preceeding two lemmas help us to prove
the following two useful equalities:›
lemma UNIV_subtract: shows"UNIV - EVEN = ODD" and"UNIV - ODD = EVEN" using EVEN_union_ODD EVEN_intersect_ODD by (blast)+
text‹The sets EVEN and ODD are infinite.› lemma EVEN_ODD_infinite: shows"infinite EVEN" and"infinite ODD" unfolding infinite_iff_countable_subset proof - let ?f = "λn. atom (2*n)" have"inj ?f ∧ range ?f ⊆ EVEN"by (auto simp add: inj_on_def) thenshow"∃f::nat→atom. inj f ∧ range f ⊆ EVEN"by (rule_tac exI) next let ?f = "λn. atom (2*n+1)" have"inj ?f ∧ range ?f ⊆ ODD"by (auto simp add: inj_on_def) thenshow"∃f::nat→atom. inj f ∧ range f ⊆ ODD"by (rule_tac exI) qed
text‹
A general fact about a set S of atoms that is both infinite and
coinfinite. Then S has all atoms as its support. Steve Zdancewic
helped with proving this fact.›
lemma supp_infinite_coinfinite: fixes S::"atom set" assumes asm1: "infinite S" and asm2: "infinite (UNIV-S)" shows"(supp S) = (UNIV::atom set)" proof - have"∀(x::atom). x∈(supp S)" proof fix x::"atom" show"x∈(supp S)" proof (cases "x∈S") case True have"x∈S"by fact hence"∀b∈(UNIV-S). [(x,b)]∙S≠S"by (auto simp add: perm_set_def calc_atm) with asm2 have"infinite {b∈(UNIV-S). [(x,b)]∙S≠S}"by (rule infinite_Collection) hence"infinite {b. [(x,b)]∙S≠S}"by (rule_tac infinite_super, auto) thenshow"x∈(supp S)"by (simp add: supp_def) next case False have"x∉S"by fact hence"∀b∈S. [(x,b)]∙S≠S"by (auto simp add: perm_set_def calc_atm) with asm1 have"infinite {b∈S. [(x,b)]∙S≠S}"by (rule infinite_Collection) hence"infinite {b. [(x,b)]∙S≠S}"by (rule_tac infinite_super, auto) thenshow"x∈(supp S)"by (simp add: supp_def) qed qed thenshow"(supp S) = (UNIV::atom set)"by auto qed
text‹As a corollary we get that EVEN and ODD have infinite support.› lemma EVEN_ODD_supp: shows"supp EVEN = (UNIV::atom set)" and"supp ODD = (UNIV::atom set)" using supp_infinite_coinfinite UNIV_subtract EVEN_ODD_infinite by simp_all
text‹
The set of all atoms has empty support, since any swappings leaves
this set unchanged.›
¤ 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.0.1Bemerkung:
(vorverarbeitet am 2026-09-29)
¤
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.