src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy
changeset 54230 b1d955791529
parent 53600 8fda7ad57466
child 54489 03ff4d1e6784
equal deleted inserted replaced
54229:ca638d713ff8 54230:b1d955791529
  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)"