equal
deleted
inserted
replaced
1097 lemma affinity_inverses: |
1097 lemma affinity_inverses: |
1098 assumes m0: "m \<noteq> (0::'a::field)" |
1098 assumes m0: "m \<noteq> (0::'a::field)" |
1099 shows "(\<lambda>x. m *s x + c) o (\<lambda>x. inverse(m) *s x + (-(inverse(m) *s c))) = id" |
1099 shows "(\<lambda>x. m *s x + c) o (\<lambda>x. inverse(m) *s x + (-(inverse(m) *s c))) = id" |
1100 "(\<lambda>x. inverse(m) *s x + (-(inverse(m) *s c))) o (\<lambda>x. m *s x + c) = id" |
1100 "(\<lambda>x. inverse(m) *s x + (-(inverse(m) *s c))) o (\<lambda>x. m *s x + c) = id" |
1101 using m0 |
1101 using m0 |
1102 apply (auto simp add: fun_eq_iff vector_add_ldistrib) |
1102 apply (auto simp add: fun_eq_iff vector_add_ldistrib diff_conv_add_uminus simp del: add_uminus_conv_diff) |
1103 apply (simp_all add: vector_smult_lneg[symmetric] vector_smult_assoc vector_sneg_minus1[symmetric]) |
1103 apply (simp_all add: vector_smult_lneg[symmetric] vector_smult_assoc vector_sneg_minus1 [symmetric]) |
1104 done |
1104 done |
1105 |
1105 |
1106 lemma vector_affinity_eq: |
1106 lemma vector_affinity_eq: |
1107 assumes m0: "(m::'a::field) \<noteq> 0" |
1107 assumes m0: "(m::'a::field) \<noteq> 0" |
1108 shows "m *s x + c = y \<longleftrightarrow> x = inverse m *s y + -(inverse m *s c)" |
1108 shows "m *s x + c = y \<longleftrightarrow> x = inverse m *s y + -(inverse m *s c)" |
1112 hence "inverse m *s (m *s x) = inverse m *s (y - c)" by simp |
1112 hence "inverse m *s (m *s x) = inverse m *s (y - c)" by simp |
1113 then show "x = inverse m *s y + - (inverse m *s c)" |
1113 then show "x = inverse m *s y + - (inverse m *s c)" |
1114 using m0 by (simp add: vector_smult_assoc vector_ssub_ldistrib) |
1114 using m0 by (simp add: vector_smult_assoc vector_ssub_ldistrib) |
1115 next |
1115 next |
1116 assume h: "x = inverse m *s y + - (inverse m *s c)" |
1116 assume h: "x = inverse m *s y + - (inverse m *s c)" |
1117 show "m *s x + c = y" unfolding h diff_minus[symmetric] |
1117 show "m *s x + c = y" unfolding h |
1118 using m0 by (simp add: vector_smult_assoc vector_ssub_ldistrib) |
1118 using m0 by (simp add: vector_smult_assoc vector_ssub_ldistrib) |
1119 qed |
1119 qed |
1120 |
1120 |
1121 lemma vector_eq_affinity: |
1121 lemma vector_eq_affinity: |
1122 "(m::'a::field) \<noteq> 0 ==> (y = m *s x + c \<longleftrightarrow> inverse(m) *s y + -(inverse(m) *s c) = x)" |
1122 "(m::'a::field) \<noteq> 0 ==> (y = m *s x + c \<longleftrightarrow> inverse(m) *s y + -(inverse(m) *s c) = x)" |