src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy
changeset 35542 8f97d8caabfd
parent 34964 4e8be3c04d37
child 35577 43b93e294522
equal deleted inserted replaced
35541:7b1179be2ac5 35542:8f97d8caabfd
    13 (* To be moved elsewhere                                                     *)
    13 (* To be moved elsewhere                                                     *)
    14 (* ------------------------------------------------------------------------- *)
    14 (* ------------------------------------------------------------------------- *)
    15 
    15 
    16 declare vector_add_ldistrib[simp] vector_ssub_ldistrib[simp] vector_smult_assoc[simp] vector_smult_rneg[simp]
    16 declare vector_add_ldistrib[simp] vector_ssub_ldistrib[simp] vector_smult_assoc[simp] vector_smult_rneg[simp]
    17 declare vector_sadd_rdistrib[simp] vector_sub_rdistrib[simp]
    17 declare vector_sadd_rdistrib[simp] vector_sub_rdistrib[simp]
    18 declare dot_ladd[simp] dot_radd[simp] dot_lsub[simp] dot_rsub[simp]
       
    19 declare dot_lmult[simp] dot_rmult[simp] dot_lneg[simp] dot_rneg[simp]
       
    20 declare UNIV_1[simp]
    18 declare UNIV_1[simp]
    21 
    19 
    22 (*lemma dim1in[intro]:"Suc 0 \<in> {1::nat .. CARD(1)}" by auto*)
    20 (*lemma dim1in[intro]:"Suc 0 \<in> {1::nat .. CARD(1)}" by auto*)
    23 
    21 
    24 lemmas vector_component_simps = vector_minus_component vector_smult_component vector_add_component vector_le_def Cart_lambda_beta basis_component vector_uminus_component
    22 lemmas vector_component_simps = vector_minus_component vector_smult_component vector_add_component vector_le_def Cart_lambda_beta basis_component vector_uminus_component
  1715   proof(cases "s={}") guess a using UNIV_witness[where 'a='n] ..
  1713   proof(cases "s={}") guess a using UNIV_witness[where 'a='n] ..
  1716   case True have "norm ((basis a)::real^'n) = 1" 
  1714   case True have "norm ((basis a)::real^'n) = 1" 
  1717     using norm_basis and dimindex_ge_1 by auto
  1715     using norm_basis and dimindex_ge_1 by auto
  1718   thus ?thesis apply(rule_tac x="basis a" in exI, rule_tac x=1 in exI) using True by auto
  1716   thus ?thesis apply(rule_tac x="basis a" in exI, rule_tac x=1 in exI) using True by auto
  1719 next case False thus ?thesis using False using separating_hyperplane_closed_point[OF assms]
  1717 next case False thus ?thesis using False using separating_hyperplane_closed_point[OF assms]
  1720     apply - apply(erule exE)+ unfolding dot_rzero apply(rule_tac x=a in exI, rule_tac x=b in exI) by auto qed
  1718     apply - apply(erule exE)+ unfolding inner.zero_right apply(rule_tac x=a in exI, rule_tac x=b in exI) by auto qed
  1721 
  1719 
  1722 subsection {* Now set-to-set for closed/compact sets. *}
  1720 subsection {* Now set-to-set for closed/compact sets. *}
  1723 
  1721 
  1724 lemma separating_hyperplane_closed_compact:
  1722 lemma separating_hyperplane_closed_compact:
  1725   assumes "convex (s::(real^'n) set)" "closed s" "convex t" "compact t" "t \<noteq> {}" "s \<inter> t = {}"
  1723   assumes "convex (s::(real^'n) set)" "closed s" "convex t" "compact t" "t \<noteq> {}" "s \<inter> t = {}"