124 show "?rhs \<subseteq> ?lhs" |
124 show "?rhs \<subseteq> ?lhs" |
125 proof (clarsimp, intro conjI impI subsetI) |
125 proof (clarsimp, intro conjI impI subsetI) |
126 show "\<lbrakk>0 \<le> m; a \<le> b; x \<in> {m *\<^sub>R a + c..m *\<^sub>R b + c}\<rbrakk> |
126 show "\<lbrakk>0 \<le> m; a \<le> b; x \<in> {m *\<^sub>R a + c..m *\<^sub>R b + c}\<rbrakk> |
127 \<Longrightarrow> x \<in> (\<lambda>x. m *\<^sub>R x + c) ` {a..b}" for x |
127 \<Longrightarrow> x \<in> (\<lambda>x. m *\<^sub>R x + c) ` {a..b}" for x |
128 apply (rule_tac x="inverse m *\<^sub>R (x-c)" in rev_image_eqI) |
128 apply (rule_tac x="inverse m *\<^sub>R (x-c)" in rev_image_eqI) |
129 using False apply (auto simp: le_diff_eq pos_le_divideRI) |
129 using False apply (auto simp: pos_le_divideR_eq pos_divideR_le_eq le_diff_eq diff_le_eq) |
130 using diff_le_eq pos_le_divideR_eq by force |
130 done |
131 show "\<lbrakk>\<not> 0 \<le> m; a \<le> b; x \<in> {m *\<^sub>R b + c..m *\<^sub>R a + c}\<rbrakk> |
131 show "\<lbrakk>\<not> 0 \<le> m; a \<le> b; x \<in> {m *\<^sub>R b + c..m *\<^sub>R a + c}\<rbrakk> |
132 \<Longrightarrow> x \<in> (\<lambda>x. m *\<^sub>R x + c) ` {a..b}" for x |
132 \<Longrightarrow> x \<in> (\<lambda>x. m *\<^sub>R x + c) ` {a..b}" for x |
133 apply (rule_tac x="inverse m *\<^sub>R (x-c)" in rev_image_eqI) |
133 apply (rule_tac x="inverse m *\<^sub>R (x-c)" in rev_image_eqI) |
134 apply (auto simp add: neg_le_divideR_eq not_le) |
134 apply (auto simp add: neg_le_divideR_eq neg_divideR_le_eq not_le le_diff_eq diff_le_eq) |
135 apply (auto simp: field_simps) |
|
136 apply (metis (no_types, lifting) add_diff_cancel_left' add_le_imp_le_right diff_add_cancel inverse_eq_divide neg_le_divideR_eq neg_le_iff_le scale_minus_right) |
|
137 done |
135 done |
138 qed |
136 qed |
139 qed |
137 qed |
140 qed |
138 qed |
141 |
139 |