1073 |
1073 |
1074 lemma pprt_0[simp]: "pprt 0 = 0" by (simp add: pprt_def) |
1074 lemma pprt_0[simp]: "pprt 0 = 0" by (simp add: pprt_def) |
1075 lemma nprt_0[simp]: "nprt 0 = 0" by (simp add: nprt_def) |
1075 lemma nprt_0[simp]: "nprt 0 = 0" by (simp add: nprt_def) |
1076 |
1076 |
1077 lemma pprt_eq_id [simp, noatp]: "0 \<le> x \<Longrightarrow> pprt x = x" |
1077 lemma pprt_eq_id [simp, noatp]: "0 \<le> x \<Longrightarrow> pprt x = x" |
1078 by (simp add: pprt_def le_iff_sup sup_aci) |
1078 by (simp add: pprt_def sup_aci) |
|
1079 |
1079 |
1080 |
1080 lemma nprt_eq_id [simp, noatp]: "x \<le> 0 \<Longrightarrow> nprt x = x" |
1081 lemma nprt_eq_id [simp, noatp]: "x \<le> 0 \<Longrightarrow> nprt x = x" |
1081 by (simp add: nprt_def le_iff_inf inf_aci) |
1082 by (simp add: nprt_def inf_aci) |
1082 |
1083 |
1083 lemma pprt_eq_0 [simp, noatp]: "x \<le> 0 \<Longrightarrow> pprt x = 0" |
1084 lemma pprt_eq_0 [simp, noatp]: "x \<le> 0 \<Longrightarrow> pprt x = 0" |
1084 by (simp add: pprt_def le_iff_sup sup_aci) |
1085 by (simp add: pprt_def sup_aci) |
1085 |
1086 |
1086 lemma nprt_eq_0 [simp, noatp]: "0 \<le> x \<Longrightarrow> nprt x = 0" |
1087 lemma nprt_eq_0 [simp, noatp]: "0 \<le> x \<Longrightarrow> nprt x = 0" |
1087 by (simp add: nprt_def le_iff_inf inf_aci) |
1088 by (simp add: nprt_def inf_aci) |
1088 |
1089 |
1089 lemma sup_0_imp_0: "sup a (- a) = 0 \<Longrightarrow> a = 0" |
1090 lemma sup_0_imp_0: "sup a (- a) = 0 \<Longrightarrow> a = 0" |
1090 proof - |
1091 proof - |
1091 { |
1092 { |
1092 fix a::'a |
1093 fix a::'a |
1116 |
1117 |
1117 lemma zero_le_double_add_iff_zero_le_single_add [simp]: |
1118 lemma zero_le_double_add_iff_zero_le_single_add [simp]: |
1118 "0 \<le> a + a \<longleftrightarrow> 0 \<le> a" |
1119 "0 \<le> a + a \<longleftrightarrow> 0 \<le> a" |
1119 proof |
1120 proof |
1120 assume "0 <= a + a" |
1121 assume "0 <= a + a" |
1121 hence a:"inf (a+a) 0 = 0" by (simp add: le_iff_inf inf_commute) |
1122 hence a:"inf (a+a) 0 = 0" by (simp add: inf_commute) |
1122 have "(inf a 0)+(inf a 0) = inf (inf (a+a) 0) a" (is "?l=_") |
1123 have "(inf a 0)+(inf a 0) = inf (inf (a+a) 0) a" (is "?l=_") |
1123 by (simp add: add_sup_inf_distribs inf_aci) |
1124 by (simp add: add_sup_inf_distribs inf_aci) |
1124 hence "?l = 0 + inf a 0" by (simp add: a, simp add: inf_commute) |
1125 hence "?l = 0 + inf a 0" by (simp add: a, simp add: inf_commute) |
1125 hence "inf a 0 = 0" by (simp only: add_right_cancel) |
1126 hence "inf a 0 = 0" by (simp only: add_right_cancel) |
1126 then show "0 <= a" by (simp add: le_iff_inf inf_commute) |
1127 then show "0 <= a" unfolding le_iff_inf by (simp add: inf_commute) |
1127 next |
1128 next |
1128 assume a: "0 <= a" |
1129 assume a: "0 <= a" |
1129 show "0 <= a + a" by (simp add: add_mono[OF a a, simplified]) |
1130 show "0 <= a + a" by (simp add: add_mono[OF a a, simplified]) |
1130 qed |
1131 qed |
1131 |
1132 |
1132 lemma double_zero: "a + a = 0 \<longleftrightarrow> a = 0" |
1133 lemma double_zero: "a + a = 0 \<longleftrightarrow> a = 0" |
1192 by (simp add: add_assoc[symmetric]) |
1193 by (simp add: add_assoc[symmetric]) |
1193 thus ?thesis by simp |
1194 thus ?thesis by simp |
1194 qed |
1195 qed |
1195 |
1196 |
1196 lemma zero_le_iff_zero_nprt: "0 \<le> a \<longleftrightarrow> nprt a = 0" |
1197 lemma zero_le_iff_zero_nprt: "0 \<le> a \<longleftrightarrow> nprt a = 0" |
1197 by (simp add: le_iff_inf nprt_def inf_commute) |
1198 unfolding le_iff_inf by (simp add: nprt_def inf_commute) |
1198 |
1199 |
1199 lemma le_zero_iff_zero_pprt: "a \<le> 0 \<longleftrightarrow> pprt a = 0" |
1200 lemma le_zero_iff_zero_pprt: "a \<le> 0 \<longleftrightarrow> pprt a = 0" |
1200 by (simp add: le_iff_sup pprt_def sup_commute) |
1201 unfolding le_iff_sup by (simp add: pprt_def sup_commute) |
1201 |
1202 |
1202 lemma le_zero_iff_pprt_id: "0 \<le> a \<longleftrightarrow> pprt a = a" |
1203 lemma le_zero_iff_pprt_id: "0 \<le> a \<longleftrightarrow> pprt a = a" |
1203 by (simp add: le_iff_sup pprt_def sup_commute) |
1204 unfolding le_iff_sup by (simp add: pprt_def sup_commute) |
1204 |
1205 |
1205 lemma zero_le_iff_nprt_id: "a \<le> 0 \<longleftrightarrow> nprt a = a" |
1206 lemma zero_le_iff_nprt_id: "a \<le> 0 \<longleftrightarrow> nprt a = a" |
1206 by (simp add: le_iff_inf nprt_def inf_commute) |
1207 unfolding le_iff_inf by (simp add: nprt_def inf_commute) |
1207 |
1208 |
1208 lemma pprt_mono [simp, noatp]: "a \<le> b \<Longrightarrow> pprt a \<le> pprt b" |
1209 lemma pprt_mono [simp, noatp]: "a \<le> b \<Longrightarrow> pprt a \<le> pprt b" |
1209 by (simp add: le_iff_sup pprt_def sup_aci sup_assoc [symmetric, of a]) |
1210 unfolding le_iff_sup by (simp add: pprt_def sup_aci sup_assoc [symmetric, of a]) |
1210 |
1211 |
1211 lemma nprt_mono [simp, noatp]: "a \<le> b \<Longrightarrow> nprt a \<le> nprt b" |
1212 lemma nprt_mono [simp, noatp]: "a \<le> b \<Longrightarrow> nprt a \<le> nprt b" |
1212 by (simp add: le_iff_inf nprt_def inf_aci inf_assoc [symmetric, of a]) |
1213 unfolding le_iff_inf by (simp add: nprt_def inf_aci inf_assoc [symmetric, of a]) |
1213 |
1214 |
1214 end |
1215 end |
1215 |
1216 |
1216 lemmas add_sup_inf_distribs = add_inf_distrib_right add_inf_distrib_left add_sup_distrib_right add_sup_distrib_left |
1217 lemmas add_sup_inf_distribs = add_inf_distrib_right add_inf_distrib_left add_sup_distrib_right add_sup_distrib_left |
1217 |
1218 |