src/HOL/Ring_and_Field.thy
changeset 16568 e02fe7ae212b
parent 15923 01d5d0c1c078
child 16775 c1b87ef4a1c3
equal deleted inserted replaced
16567:1ff73dc29166 16568:e02fe7ae212b
  1553   note addm = add_mono[of "0::'a" _ "0::'a", simplified]
  1553   note addm = add_mono[of "0::'a" _ "0::'a", simplified]
  1554   note addm2 = add_mono[of _ "0::'a" _ "0::'a", simplified]
  1554   note addm2 = add_mono[of _ "0::'a" _ "0::'a", simplified]
  1555   have xy: "- ?x <= ?y"
  1555   have xy: "- ?x <= ?y"
  1556     apply (simp)
  1556     apply (simp)
  1557     apply (rule_tac y="0::'a" in order_trans)
  1557     apply (rule_tac y="0::'a" in order_trans)
  1558     apply (rule addm2)+
  1558     apply (rule addm2)
  1559     apply (simp_all add: mult_pos_le mult_neg_le)
  1559     apply (simp_all add: mult_pos_le mult_neg_le)
  1560     apply (rule addm)+
  1560     apply (rule addm)
  1561     apply (simp_all add: mult_pos_le mult_neg_le)
  1561     apply (simp_all add: mult_pos_le mult_neg_le)
  1562     done
  1562     done
  1563   have yx: "?y <= ?x"
  1563   have yx: "?y <= ?x"
  1564     apply (simp add: add_ac)
  1564     apply (simp add:diff_def)
  1565     apply (rule_tac y=0 in order_trans)
  1565     apply (rule_tac y=0 in order_trans)
  1566     apply (rule addm2, (simp add: mult_pos_neg_le mult_pos_neg2_le)+)
  1566     apply (rule addm2, (simp add: mult_pos_neg_le mult_pos_neg2_le)+)
  1567     apply (rule addm, (simp add: mult_pos_neg_le mult_pos_neg2_le)+)
  1567     apply (rule addm, (simp add: mult_pos_neg_le mult_pos_neg2_le)+)
  1568     done
  1568     done
  1569   have i1: "a*b <= abs a * abs b" by (simp only: a b yx)
  1569   have i1: "a*b <= abs a * abs b" by (simp only: a b yx)
  1685   have 5: "c * x <= y * b' + abs((y * (A - A') + (y * A' - c') + (c'-c)) * x)"
  1685   have 5: "c * x <= y * b' + abs((y * (A - A') + (y * A' - c') + (c'-c)) * x)"
  1686     by (simp only: 4 estimate_by_abs)  
  1686     by (simp only: 4 estimate_by_abs)  
  1687   have 6: "abs((y * (A - A') + (y * A' - c') + (c'-c)) * x) <= abs (y * (A - A') + (y * A' - c') + (c'-c)) * abs x"
  1687   have 6: "abs((y * (A - A') + (y * A' - c') + (c'-c)) * x) <= abs (y * (A - A') + (y * A' - c') + (c'-c)) * abs x"
  1688     by (simp add: abs_le_mult)
  1688     by (simp add: abs_le_mult)
  1689   have 7: "(abs (y * (A - A') + (y * A' - c') + (c'-c))) * abs x <= (abs (y * (A-A') + (y*A'-c')) + abs(c'-c)) * abs x"
  1689   have 7: "(abs (y * (A - A') + (y * A' - c') + (c'-c))) * abs x <= (abs (y * (A-A') + (y*A'-c')) + abs(c'-c)) * abs x"
  1690     by (simp add: abs_triangle_ineq mult_right_mono)
  1690     by(rule abs_triangle_ineq [THEN mult_right_mono]) simp
  1691   have 8: " (abs (y * (A-A') + (y*A'-c')) + abs(c'-c)) * abs x <=  (abs (y * (A-A')) + abs (y*A'-c') + abs(c'-c)) * abs x"
  1691   have 8: " (abs (y * (A-A') + (y*A'-c')) + abs(c'-c)) * abs x <=  (abs (y * (A-A')) + abs (y*A'-c') + abs(c'-c)) * abs x"
  1692     by (simp add: abs_triangle_ineq mult_right_mono)    
  1692     by (simp add: abs_triangle_ineq mult_right_mono)    
  1693   have 9: "(abs (y * (A-A')) + abs (y*A'-c') + abs(c'-c)) * abs x <= (abs y * abs (A-A') + abs (y*A'-c') + abs (c'-c)) * abs x"
  1693   have 9: "(abs (y * (A-A')) + abs (y*A'-c') + abs(c'-c)) * abs x <= (abs y * abs (A-A') + abs (y*A'-c') + abs (c'-c)) * abs x"
  1694     by (simp add: abs_le_mult mult_right_mono)  
  1694     by (simp add: abs_le_mult mult_right_mono)  
  1695   have 10: "c'-c = -(c-c')" by (simp add: ring_eq_simps)
  1695   have 10: "c'-c = -(c-c')" by (simp add: ring_eq_simps)
  1710     done    
  1710     done    
  1711   from 6 7 8 9 12 13 r have 14:" abs((y * (A - A') + (y * A' - c') + (c'-c)) * x) <=(abs y * \<delta>A + abs (y*A'-c') + \<delta>c) * r"     
  1711   from 6 7 8 9 12 13 r have 14:" abs((y * (A - A') + (y * A' - c') + (c'-c)) * x) <=(abs y * \<delta>A + abs (y*A'-c') + \<delta>c) * r"     
  1712     by (simp)
  1712     by (simp)
  1713   show ?thesis 
  1713   show ?thesis 
  1714     apply (rule_tac le_add_right_mono[of _ _ "abs((y * (A - A') + (y * A' - c') + (c'-c)) * x)"])
  1714     apply (rule_tac le_add_right_mono[of _ _ "abs((y * (A - A') + (y * A' - c') + (c'-c)) * x)"])
  1715     apply (simp_all add: 5 14[simplified abs_of_ge_0[of y, simplified prems]])
  1715     apply (simp_all only: 5 14[simplified abs_of_ge_0[of y, simplified prems]])
  1716     done
  1716     done
  1717 qed
  1717 qed
  1718 
  1718 
  1719 lemma le_ge_imp_abs_diff_1:
  1719 lemma le_ge_imp_abs_diff_1:
  1720   assumes
  1720   assumes