src/HOL/OrderedGroup.thy
changeset 32436 10cd49e0c067
parent 32075 e8e0fb5da77a
child 32437 66f1a0dfe7d9
equal deleted inserted replaced
32435:711d680eab26 32436:10cd49e0c067
  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