src/HOL/Library/Lattice_Algebras.thy
changeset 37884 314a88278715
parent 36976 e78d1e06d855
child 41528 276078f01ada
equal deleted inserted replaced
37883:f869bb857425 37884:314a88278715
   374 
   374 
   375 lemma estimate_by_abs:
   375 lemma estimate_by_abs:
   376   "a + b <= (c::'a::lattice_ab_group_add_abs) \<Longrightarrow> a <= c + abs b" 
   376   "a + b <= (c::'a::lattice_ab_group_add_abs) \<Longrightarrow> a <= c + abs b" 
   377 proof -
   377 proof -
   378   assume "a+b <= c"
   378   assume "a+b <= c"
   379   hence 2: "a <= c+(-b)" by (simp add: algebra_simps)
   379   then have "a <= c+(-b)" by (simp add: algebra_simps)
   380   have 3: "(-b) <= abs b" by (rule abs_ge_minus_self)
   380   have "(-b) <= abs b" by (rule abs_ge_minus_self)
   381   show ?thesis by (rule le_add_right_mono[OF 2 3])
   381   then have "c + (- b) \<le> c + \<bar>b\<bar>" by (rule add_left_mono)
       
   382   with `a \<le> c + (- b)` show ?thesis by (rule order_trans)
   382 qed
   383 qed
   383 
   384 
   384 class lattice_ring = ordered_ring + lattice_ab_group_add_abs
   385 class lattice_ring = ordered_ring + lattice_ab_group_add_abs
   385 begin
   386 begin
   386 
   387 
   409     apply (simp)
   410     apply (simp)
   410     apply (rule order_trans [OF add_nonpos_nonpos add_nonneg_nonneg])
   411     apply (rule order_trans [OF add_nonpos_nonpos add_nonneg_nonneg])
   411     apply (simp_all add: mult_nonneg_nonneg mult_nonpos_nonpos)
   412     apply (simp_all add: mult_nonneg_nonneg mult_nonpos_nonpos)
   412     done
   413     done
   413   have yx: "?y <= ?x"
   414   have yx: "?y <= ?x"
   414     apply (simp add:diff_def)
   415     apply (simp add:diff_minus)
   415     apply (rule order_trans [OF add_nonpos_nonpos add_nonneg_nonneg])
   416     apply (rule order_trans [OF add_nonpos_nonpos add_nonneg_nonneg])
   416     apply (simp_all add: mult_nonneg_nonpos mult_nonpos_nonneg)
   417     apply (simp_all add: mult_nonneg_nonpos mult_nonpos_nonneg)
   417     done
   418     done
   418   have i1: "a*b <= abs a * abs b" by (simp only: a b yx)
   419   have i1: "a*b <= abs a * abs b" by (simp only: a b yx)
   419   have i2: "- (abs a * abs b) <= a*b" by (simp only: a b xy)
   420   have i2: "- (abs a * abs b) <= a*b" by (simp only: a b xy)