# HG changeset patch # User haftmann # Date 1194351168 -3600 # Node ID 389902f0a0c81b1bab9095b64436eaf84c7c1d46 # Parent 351ca94cabdb6db7eb5a073d19934a6ab8d96a72 simplified specification of *_abs class diff -r 351ca94cabdb -r 389902f0a0c8 src/HOL/OrderedGroup.thy --- a/src/HOL/OrderedGroup.thy Tue Nov 06 12:06:30 2007 +0100 +++ b/src/HOL/OrderedGroup.thy Tue Nov 06 13:12:48 2007 +0100 @@ -746,14 +746,40 @@ class pordered_ab_group_add_abs = pordered_ab_group_add + abs + assumes abs_ge_zero [simp]: "\a\ \ 0" and abs_ge_self: "a \ \a\" - and abs_of_nonneg [simp]: "0 \ a \ \a\ = a" and abs_leI: "a \ b \ - a \ b \ \a\ \ b" - and abs_eq_0 [simp]: "\a\ = 0 \ a = 0" and abs_minus_cancel [simp]: "\-a\ = \a\" - and abs_idempotent [simp]: "\\a\\ = \a\" and abs_triangle_ineq: "\a + b\ \ \a\ + \b\" begin +lemma abs_minus_le_zero: "- \a\ \ 0" + unfolding neg_le_0_iff_le by simp + +lemma abs_of_nonneg [simp]: + assumes nonneg: "0 \ a" + shows "\a\ = a" +proof (rule antisym) + from nonneg le_imp_neg_le have "- a \ 0" by simp + from this nonneg have "- a \ a" by (rule order_trans) + then show "\a\ \ a" by (auto intro: abs_leI) +qed (rule abs_ge_self) + +lemma abs_idempotent [simp]: "\\a\\ = \a\" + by (rule antisym) + (auto intro!: abs_ge_self abs_leI order_trans [of "uminus (abs a)" zero "abs a"]) + +lemma abs_eq_0 [simp]: "\a\ = 0 \ a = 0" +proof - + have "\a\ = 0 \ a = 0" + proof (rule antisym) + assume zero: "\a\ = 0" + with abs_ge_self show "a \ 0" by auto + from zero have "\-a\ = 0" by simp + with abs_ge_self [of "uminus a"] have "- a \ 0" by auto + with neg_le_0_iff_le show "0 \ a" by auto + qed + then show ?thesis by auto +qed + lemma abs_zero [simp]: "\0\ = 0" by simp @@ -1213,26 +1239,9 @@ by (auto simp add: abs_lattice) next fix a - show "\a\ = 0 \ a = 0" - by (simp add: abs_lattice) - next - fix a show "\-a\ = \a\" by (simp add: abs_lattice sup_commute) next - fix a - show "\\a\\ = \a\" - apply (simp add: abs_lattice [of "abs a"]) - apply (subst sup_absorb1) - apply (rule order_trans [of _ zero]) - apply auto - done - next - fix a - show "0 \ a \ \a\ = a" - by (simp add: iffD1 [OF zero_le_iff_zero_nprt] - iffD1[OF le_zero_iff_pprt_id] abs_prts) - next fix a b show "a \ b \ - a \ b \ \a\ \ b" by (erule abs_leI) next