| author | wenzelm | 
| Mon, 13 Feb 2023 11:53:35 +0100 | |
| changeset 77290 | 12fd873af77c | 
| parent 76948 | f33df7529fed | 
| child 80914 | d97fdabd9e2b | 
| permissions | -rw-r--r-- | 
| 54545 
483131676087
effectively reverted d25fc4c0ff62, to avoid quasi-cyclic dependencies with HOL-Cardinals and minimize BNF dependencies
 blanchet parents: 
54482diff
changeset | 1 | (* Title: HOL/Cardinals/Order_Union.thy | 
| 52184 | 2 | Author: Andrei Popescu, TU Muenchen | 
| 3 | ||
| 52199 | 4 | The ordinal-like sum of two orders with disjoint fields | 
| 52184 | 5 | *) | 
| 6 | ||
| 63167 | 7 | section \<open>Order Union\<close> | 
| 52184 | 8 | |
| 9 | theory Order_Union | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 10 | imports Main | 
| 52184 | 11 | begin | 
| 12 | ||
| 13 | definition Osum :: "'a rel \<Rightarrow> 'a rel \<Rightarrow> 'a rel" (infix "Osum" 60) where | |
| 14 |   "r Osum r' = r \<union> r' \<union> {(a, a'). a \<in> Field r \<and> a' \<in> Field r'}"
 | |
| 15 | ||
| 52191 | 16 | notation Osum (infix "\<union>o" 60) | 
| 52184 | 17 | |
| 18 | lemma Field_Osum: "Field (r \<union>o r') = Field r \<union> Field r'" | |
| 19 | unfolding Osum_def Field_def by blast | |
| 20 | ||
| 21 | lemma Osum_wf: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 22 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 23 | WF: "wf r" and WF': "wf r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 24 | shows "wf (r Osum r')" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 25 | unfolding wf_eq_minimal2 unfolding Field_Osum | 
| 52184 | 26 | proof(intro allI impI, elim conjE) | 
| 27 |   fix A assume *: "A \<subseteq> Field r \<union> Field r'" and **: "A \<noteq> {}"
 | |
| 28 | obtain B where B_def: "B = A Int Field r" by blast | |
| 29 | show "\<exists>a\<in>A. \<forall>a'\<in>A. (a', a) \<notin> r \<union>o r'" | |
| 30 |   proof(cases "B = {}")
 | |
| 31 |     assume Case1: "B \<noteq> {}"
 | |
| 32 |     hence "B \<noteq> {} \<and> B \<le> Field r" using B_def by auto
 | |
| 33 | then obtain a where 1: "a \<in> B" and 2: "\<forall>a1 \<in> B. (a1,a) \<notin> r" | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 34 | using WF unfolding wf_eq_minimal2 by blast | 
| 52184 | 35 | hence 3: "a \<in> Field r \<and> a \<notin> Field r'" using B_def FLD by auto | 
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 36 | (* *) | 
| 52184 | 37 | have "\<forall>a1 \<in> A. (a1,a) \<notin> r Osum r'" | 
| 38 | proof(intro ballI) | |
| 39 | fix a1 assume **: "a1 \<in> A" | |
| 40 |       {assume Case11: "a1 \<in> Field r"
 | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 41 | hence "(a1,a) \<notin> r" using B_def ** 2 by auto | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 42 | moreover | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 43 | have "(a1,a) \<notin> r'" using 3 by (auto simp add: Field_def) | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 44 | ultimately have "(a1,a) \<notin> r Osum r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 45 | using 3 unfolding Osum_def by auto | 
| 52184 | 46 | } | 
| 47 | moreover | |
| 48 |       {assume Case12: "a1 \<notin> Field r"
 | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 49 | hence "(a1,a) \<notin> r" unfolding Field_def by auto | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 50 | moreover | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 51 | have "(a1,a) \<notin> r'" using 3 unfolding Field_def by auto | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 52 | ultimately have "(a1,a) \<notin> r Osum r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 53 | using 3 unfolding Osum_def by auto | 
| 52184 | 54 | } | 
| 55 | ultimately show "(a1,a) \<notin> r Osum r'" by blast | |
| 56 | qed | |
| 57 | thus ?thesis using 1 B_def by auto | |
| 58 | next | |
| 59 |     assume Case2: "B = {}"
 | |
| 60 |     hence 1: "A \<noteq> {} \<and> A \<le> Field r'" using * ** B_def by auto
 | |
| 61 | then obtain a' where 2: "a' \<in> A" and 3: "\<forall>a1' \<in> A. (a1',a') \<notin> r'" | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 62 | using WF' unfolding wf_eq_minimal2 by blast | 
| 52184 | 63 | hence 4: "a' \<in> Field r' \<and> a' \<notin> Field r" using 1 FLD by blast | 
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 64 | (* *) | 
| 52184 | 65 | have "\<forall>a1' \<in> A. (a1',a') \<notin> r Osum r'" | 
| 66 | proof(unfold Osum_def, auto simp add: 3) | |
| 67 | fix a1' assume "(a1', a') \<in> r" | |
| 68 | thus False using 4 unfolding Field_def by blast | |
| 69 | next | |
| 70 | fix a1' assume "a1' \<in> A" and "a1' \<in> Field r" | |
| 71 | thus False using Case2 B_def by auto | |
| 72 | qed | |
| 73 | thus ?thesis using 2 by blast | |
| 74 | qed | |
| 75 | qed | |
| 76 | ||
| 77 | lemma Osum_Refl: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 78 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 79 | REFL: "Refl r" and REFL': "Refl r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 80 | shows "Refl (r Osum r')" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 81 | using assms | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 82 | unfolding refl_on_def Field_Osum unfolding Osum_def by blast | 
| 52184 | 83 | |
| 84 | lemma Osum_trans: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 85 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 86 | TRANS: "trans r" and TRANS': "trans r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 87 | shows "trans (r Osum r')" | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 88 | using assms unfolding Osum_def trans_def disjoint_iff Field_iff by blast | 
| 52184 | 89 | |
| 90 | lemma Osum_Preorder: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 91 |   "\<lbrakk>Field r Int Field r' = {}; Preorder r; Preorder r'\<rbrakk> \<Longrightarrow> Preorder (r Osum r')"
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 92 | unfolding preorder_on_def using Osum_Refl Osum_trans by blast | 
| 52184 | 93 | |
| 94 | lemma Osum_antisym: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 95 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 96 | AN: "antisym r" and AN': "antisym r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 97 | shows "antisym (r Osum r')" | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 98 | using assms by (auto simp: disjoint_iff antisym_def Osum_def Field_def) | 
| 52184 | 99 | |
| 100 | lemma Osum_Partial_order: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 101 |   "\<lbrakk>Field r Int Field r' = {}; Partial_order r; Partial_order r'\<rbrakk> \<Longrightarrow>
 | 
| 52184 | 102 | Partial_order (r Osum r')" | 
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 103 | unfolding partial_order_on_def using Osum_Preorder Osum_antisym by blast | 
| 52184 | 104 | |
| 105 | lemma Osum_Total: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 106 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 107 | TOT: "Total r" and TOT': "Total r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 108 | shows "Total (r Osum r')" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 109 | using assms | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 110 | unfolding total_on_def Field_Osum unfolding Osum_def by blast | 
| 52184 | 111 | |
| 112 | lemma Osum_Linear_order: | |
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 113 |   "\<lbrakk>Field r Int Field r' = {}; Linear_order r; Linear_order r'\<rbrakk> \<Longrightarrow> Linear_order (r Osum r')"
 | 
| 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 114 | by (simp add: Osum_Partial_order Osum_Total linear_order_on_def) | 
| 52184 | 115 | |
| 116 | lemma Osum_minus_Id1: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 117 | assumes "r \<le> Id" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 118 | shows "(r Osum r') - Id \<le> (r' - Id) \<union> (Field r \<times> Field r')" | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 119 | using assms by (force simp: Osum_def) | 
| 52184 | 120 | |
| 121 | lemma Osum_minus_Id2: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 122 | assumes "r' \<le> Id" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 123 | shows "(r Osum r') - Id \<le> (r - Id) \<union> (Field r \<times> Field r')" | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 124 | using assms by (force simp: Osum_def) | 
| 52184 | 125 | |
| 126 | lemma Osum_minus_Id: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 127 | assumes TOT: "Total r" and TOT': "Total r'" and | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 128 | NID: "\<not> (r \<le> Id)" and NID': "\<not> (r' \<le> Id)" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 129 | shows "(r Osum r') - Id \<le> (r - Id) Osum (r' - Id)" | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 130 | using assms Total_Id_Field by (force simp: Osum_def) | 
| 52184 | 131 | |
| 132 | lemma wf_Int_Times: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 133 |   assumes "A Int B = {}"
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 134 | shows "wf(A \<times> B)" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 135 | unfolding wf_def using assms by blast | 
| 52184 | 136 | |
| 137 | lemma Osum_wf_Id: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 138 | assumes TOT: "Total r" and TOT': "Total r'" and | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 139 |     FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 140 | WF: "wf(r - Id)" and WF': "wf(r' - Id)" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 141 | shows "wf ((r Osum r') - Id)" | 
| 52184 | 142 | proof(cases "r \<le> Id \<or> r' \<le> Id") | 
| 143 | assume Case1: "\<not>(r \<le> Id \<or> r' \<le> Id)" | |
| 144 |   have "Field(r - Id) Int Field(r' - Id) = {}"
 | |
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 145 | using Case1 FLD TOT TOT' Total_Id_Field by blast | 
| 52184 | 146 | thus ?thesis | 
| 76948 
f33df7529fed
Substantial simplification of HOL-Cardinals
 paulson <lp15@cam.ac.uk> parents: 
76946diff
changeset | 147 | by (meson Case1 Osum_minus_Id Osum_wf TOT TOT' WF WF' wf_subset) | 
| 52184 | 148 | next | 
| 149 | have 1: "wf(Field r \<times> Field r')" | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 150 | using FLD by (auto simp add: wf_Int_Times) | 
| 52184 | 151 | assume Case2: "r \<le> Id \<or> r' \<le> Id" | 
| 152 | moreover | |
| 153 |   {assume Case21: "r \<le> Id"
 | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 154 | hence "(r Osum r') - Id \<le> (r' - Id) \<union> (Field r \<times> Field r')" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 155 | using Osum_minus_Id1[of r r'] by simp | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 156 | moreover | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 157 |     {have "Domain(Field r \<times> Field r') Int Range(r' - Id) = {}"
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 158 | using FLD unfolding Field_def by blast | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 159 | hence "wf((r' - Id) \<union> (Field r \<times> Field r'))" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 160 | using 1 WF' wf_Un[of "Field r \<times> Field r'" "r' - Id"] | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 161 | by (auto simp add: Un_commute) | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 162 | } | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 163 | ultimately have ?thesis using wf_subset by blast | 
| 52184 | 164 | } | 
| 165 | moreover | |
| 166 |   {assume Case22: "r' \<le> Id"
 | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 167 | hence "(r Osum r') - Id \<le> (r - Id) \<union> (Field r \<times> Field r')" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 168 | using Osum_minus_Id2[of r' r] by simp | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 169 | moreover | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 170 |     {have "Range(Field r \<times> Field r') Int Domain(r - Id) = {}"
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 171 | using FLD unfolding Field_def by blast | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 172 | hence "wf((r - Id) \<union> (Field r \<times> Field r'))" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 173 | using 1 WF wf_Un[of "r - Id" "Field r \<times> Field r'"] | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 174 | by (auto simp add: Un_commute) | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 175 | } | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 176 | ultimately have ?thesis using wf_subset by blast | 
| 52184 | 177 | } | 
| 178 | ultimately show ?thesis by blast | |
| 179 | qed | |
| 180 | ||
| 181 | lemma Osum_Well_order: | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 182 |   assumes FLD: "Field r Int Field r' = {}" and
 | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 183 | WELL: "Well_order r" and WELL': "Well_order r'" | 
| 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 184 | shows "Well_order (r Osum r')" | 
| 52184 | 185 | proof- | 
| 186 | have "Total r \<and> Total r'" using WELL WELL' | |
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 187 | by (auto simp add: order_on_defs) | 
| 52184 | 188 | thus ?thesis using assms unfolding well_order_on_def | 
| 76946 
5df58a471d9e
Trying to clean up HOL/Cardinals
 paulson <lp15@cam.ac.uk> parents: 
67006diff
changeset | 189 | using Osum_Linear_order Osum_wf_Id by blast | 
| 52184 | 190 | qed | 
| 191 | ||
| 192 | end |