lemma rot_circle_cube_valid_two_cube: shows"valid_two_cube rot_circle_cube" using valid_cube_valid_swap circle_cube_valid_two_cube d_gt_0 rot_circle_cube_def by force
lemma circle_right_top_edges_neq [simp]: "circle_right_edge ≠ circle_top_edge" proof - have"circle_right_edge = (1, (λr::real. (d / 2, 0::real)))" using circle.circle_right_edge_def circle_axioms by blast thenshow ?thesis using circle.circle_top_edge_def circle_axioms by auto qed
lemma circle_left_bot_edges_neq [simp]: "circle_left_edge ≠ circle_bot_edge" proof - have"circle_bot_edge = (1, λr. (x_coord r * d, - d * circle_y (x_coord r)))" using circle.circle_bot_edge_def circle_axioms by blast thenshow ?thesis by (simp add: circle_left_edge_def) qed
lemma circle_left_top_edges_neq [simp]: "circle_left_edge ≠ circle_top_edge" proof - have"∃r. ((r - 1 / 2) * d, d * sqrt (1 / 4 - (r - 1 / 2) * (r - 1 / 2))) ≠ (- (d / 2), 0)" by (metis circ_left_edge_neq_top) thenhave"(∃r. d * r ≠ - (d / 2)) ∨ (∃r ra. (x_coord (x_coord_inv r) * d, d * circle_y (x_coord (x_coord_inv r))) = (x_coord ra * d, d * circle_y (x_coord ra)) ∧d * circle_y r ≠ 0)" by (metis mult.commute) thenhave"(λr. (x_coord r * d, d * circle_y (x_coord r))) ≠ (λr. (- (d / 2), 0))" by (metis mult.commute prod.simps(1) x_coord_inv_2) thenshow ?thesis by (simp add: circle_left_edge_def circle_top_edge_def) qed
definition circle_polar where "circle_polar t = ((d/2) * cos (2 * pi * t), (d/2) * sin (2 * pi * t))"
lemma circle_polar_smooth: "(circle_polar) C1_differentiable_on {0..1}" proof - have"inj ((*) (2 * pi))" by (auto simp: inj_on_def) thenhave *: "∧x. finite ({0..1} ∩ (*) (2 * pi) -` {x})" by (simp add: finite_vimageI) have"(λt. ((d/2) * cos (2 * pi * t), (d/2) * sin (2 * pi * t))) C1_differentiable_on {0..1}" by (rule * derivative_intros)+ thenshow ?thesis apply (rule eq_smooth_gen) by(simp add: circle_polar_def) qed
abbreviation"custom_arccos ≡ (λx. (if -1 ≤ x ∧ x ≤ 1 then arccos x else (if x < -1 then -x + pi else 1 -x )))"
lemma cont_custom_arccos: assumes"S ⊆ {-1..1}" shows"continuous_on S custom_arccos" proof - have"continuous_on ({-1..1} ∪ {}) custom_arccos" by (auto intro!: continuous_on_cases continuous_intros) with assms show ?thesis using continuous_on_subset by auto qed
lemma custom_arccos_has_deriv: assumes"- 1 < x""x < 1" shows"DERIV custom_arccos x :> inverse (- sqrt (1 - x2))" proof - have x1: "∣x∣2 < 12" by (simp add: abs_less_iff abs_square_less_1 assms) show ?thesis apply (rule DERIV_inverse_function [where f=cos and a="-1"and b=1]) apply (rule x1 derivative_eq_intros | simp add: sin_arccos)+ using assms x1 cont_custom_arccos [of "{-1<..<1}"] apply (auto simp: continuous_on_eq_continuous_at greaterThanLessThan_subseteq_atLeastAtMost_iff) done qed
lemma circle_boundary_reparams: shows rot_circ_left_edge_reparam_polar_circ_split: "reparam (rec_join [(rot_circle_left_edge)]) (rec_join [(subcube (1/4) (1/2) (1, circle_polar)), (subcube (1/2) (3/4) (1, circle_polar))])"
(is ?P1) and circ_top_edge_reparam_polar_circ_split: "reparam (rec_join [(circle_top_edge)]) (rec_join [(subcube 0 (1/4) (1, circle_polar)), (subcube (1/4) (1/2) (1, circle_polar))])"
(is ?P2) and circ_bot_edge_reparam_polar_circ_split: "reparam (rec_join [(circle_bot_edge)]) (rec_join [(subcube (1/2) (3/4) (1, circle_polar)), (subcube (3/4) 1 (1, circle_polar))])"
(is ?P3) and rot_circ_right_edge_reparam_polar_circ_split: "reparam (rec_join [(rot_circle_right_edge)]) (rec_join [(subcube (3/4) 1 (1, circle_polar)), (subcube 0 (1/4) (1, circle_polar))])"
(is ?P4) proof - let ?φ = "((*) (1/pi) ∘ custom_arccos ∘ (λt. 2 * x_coord (1 - t)))" let ?LHS1 = "(λx. (- (d * sqrt (1/4 - x_coord (1 - x) * x_coord (1 - x))), x_coord (1 - x) * d))" let ?RHS1 = "((λx. if x * 2 ≤ 1 then (d * cos (2 * pi * (2 * x/4 + 1/4))/2, d * sin (2 * pi * (2 * x/4 + 1/4))/2) else (d * cos (2 * pi * ((2 * x - 1)/4 + 1/2))/2, d * sin (2 * pi * ((2 * x - 1)/4 + 1/2))/2)) ∘ ?φ)" let ?LHS2 = "λx. ((x_coord (1 - x) * d, d * sqrt (1/4 - x_coord (1 - x) * x_coord (1 - x))))" let ?RHS2 = "((λx. if x * 2 ≤ 1 then (d * cos (2 * x * pi/2)/2, d * sin (2 * x * pi/2)/2) else (d * cos (2 * pi * ((2 * x - 1)/4 + 1/4))/2, d * sin (2 * pi * ((2 * x - 1)/4 + 1/4))/2)) ∘ ?φ)" let ?LHS3 = "λx. (x_coord x * d, - (d * sqrt (1/4 - x_coord x * x_coord x)))" let ?RHS3 = "(λx. if x * 2 ≤ 1 then (d * cos (2 * pi * (2 * x/4 + 1/2))/2, d * sin (2 * pi * (2 * x/4 + 1/2))/2) else (d * cos (2 * pi * ((2 * x - 1)/4 + 3/4))/2, d * sin (2 * pi * ((2 * x - 1)/4 + 3/4))/2))" let ?LHS4 = "λx. (d * sqrt (1/4 - x_coord x * x_coord x), x_coord x * d)" let ?RHS4 = "(λx. if x * 2 ≤ 1 then (d * cos (2 * pi * (2 * x/4 + 3/4))/2, d * sin (2 * pi * (2 * x/4 + 3/4))/2) else (d * cos ((2 * x - 1) * pi/2)/2, d * sin ((2 * x - 1) * pi/2)/2))" have phi_diff: "?φ piecewise_C1_differentiable_on {0..1}" unfolding piecewise_C1_differentiable_on_def proof show"continuous_on {0..1} ?φ" unfolding x_coord_def by (intro continuous_on_compose cont_custom_arccos continuous_intros) auto have"?φ C1_differentiable_on {0..1} - {0,1}" unfolding x_coord_def piecewise_C1_differentiable_on_def C1_differentiable_on_def valid_path_def by (simp | rule has_vector_derivative_pair_within DERIV_image_chain derivative_eq_intros continuous_intros exI ballI conjI
| force simp add: field_simps | sos)+ thenshow"∃s. finite s ∧ ?φ C1_differentiable_on {0..1} - s" by force qed have inj: "inj ?φ" apply (intro comp_inj_on inj_on_cases inj_on_arccos) apply (auto simp add: inj_on_def x_coord_def) using pi_ge_zero apply auto[1] apply (smt arccos) by (smt arccos_lbound) thenhave fin: "∧x. [0 ≤ x; x ≤ 1]==> finite (?φ -` {x})" by (simp add: finite_vimageI) have"?φ ` {0..1} = {0..1}" proof show"?φ ` {0..1} ⊆ {0..1}" by (auto simp add: x_coord_def divide_simps arccos_lbound arccos_bounded) have"arccos (1 - 2 * ((1 - cos (x * pi))/2)) = x * pi"if"0 ≤ x""x ≤ 1"for x using that by (simp add: field_simps arccos_cos) thenshow"{0..1} ⊆ ?φ ` {0..1}" apply (auto simp: x_coord_def o_def image_def) by (rule_tac x="(1 - cos (x * pi))/2"in bexI) auto qed thenhave bij_phi: "bij_betw ?φ {0..1} {0..1}" unfolding bij_betw_def using inj inj_on_subset by blast have phi01: "?φ -` {0..1} ⊆ {0..1}" by (auto simp add: subset_iff x_coord_def divide_simps)
{ fix x::real assume x: "0 ≤ x""x ≤ 1" thenhave i: "- 1 ≤ (2 * x - 1)""(2 * x - 1) ≤ 1"by auto have ii: "cos (pi / 2 + arccos (1 - x * 2)) = -sin (arccos (1 - x * 2))" using minus_sin_cos_eq[symmetric, where ?x = "arccos (1 - x * 2)"] by (auto simp add: add.commute) have"2 * sqrt (x - x * x) = sqrt (4*x - 4*x * x)" by (metis mult.assoc real_sqrt_four real_sqrt_mult right_diff_distrib) alsohave"... = sqrt (1 - (2 * x - 1) * (2 * x - 1))" by (simp add: algebra_simps) finallyhave iii: "2 * sqrt (x - x * x) = cos (arcsin (2 * x - 1)) ∧ 2 * sqrt (x - x * x) = sin (arccos (1 - 2 * x))" using arccos_minus[OF i] unfolding minus_diff_eq sin_pi_minus by (simp add: cos_arcsin i power2_eq_square sin_arccos) thenhave1: "?LHS1 x = ?RHS1 x" using d_gt_0 i x apply (simp add: x_coord_def field_simps) apply (auto simp add: diff_divide_distrib add_divide_distrib right_diff_distrib mult.commute ii) using cos_sin_eq[where ?x = "- arccos (1 - x * 2)"] by (simp add: cos_sin_eq[where ?x = "- arccos (1 - x * 2)"] right_diff_distrib) have2: "?LHS2 x = ?RHS2 x" using x d_gt_0 iii by (auto simp add: x_coord_def diff_divide_distrib algebra_simps) have a: "cos (pi / 2 - arccos (x * 2 - 1)) = cos (pi / 2 - arccos (1 - x * 2))" by (smt arccos_minus arccos_cos2 arccos_lbound cos_arccos cos_ge_minus_one cos_le_one i(1) i(2) pi_def pi_half) have b: "cos (arccos (1 - x * 2) + pi * 3 / 2) = cos ((pi / 2 - arccos (x * 2 - 1)) + 2 * pi)" using arccos_minus[OF i] by(auto simp add: mult.commute add.commute) thenhave c: "... = cos (pi / 2 - arccos (x * 2 - 1))"using cos_periodic by blast have"cos (- pi - arccos (1 - x * 2)) = cos (- (pi + arccos (1 - x * 2)))" by (auto simp add: minus_add[where b = "pi"and a = "arccos (1 - x * 2)", symmetric]) moreoverhave"... = cos ((pi + arccos (1 - x * 2)))" using cos_minus by blast moreoverhave"... = cos (2*pi - arccos (x * 2 - 1))" using arccos_minus[OF i] by (auto simp add: mult.commute add.commute) moreoverhave"... = cos (arccos (x * 2 - 1))" using cos_2pi_minus by auto ultimatelyhave d: "cos (- pi - arccos (1 - x * 2)) = (x * 2 - 1)" using cos_arccos[OF i] mult.commute by metis have cosm: "∧x. cos (x - pi*2) = cos x" by (metis cos_periodic eq_diff_eq' mult.commute) have34: "?LHS3 x = (?RHS3 ∘ ?φ) x""?LHS4 x = (?RHS4 ∘ ?φ) x" using d_gt_0 x a b c iii cos_periodic [of "pi / 2 - arccos (x * 2 - 1)"] apply (auto simp add: x_coord_def algebra_simps diff_divide_distrib power2_eq_square) apply (auto simp add: sin_cos_eq cosm) using d apply (auto simp add: right_diff_distrib) by (smt cos_minus) note1234
} note * = this show ?P1 ?P2 ?P3 ?P4 apply (auto simp add: subcube_def circle_bot_edge_def circle_top_edge_def circle_polar_def reversepath_def
subpath_def joinpaths_def circle_y_def rot_circle_left_edge_def rot_circle_right_edge_def) unfolding reparam_def by (rule ballI exI conjI impI phi_diff bij_phi phi01 fin * | force simp add: x_coord_def)+ qed
definition circle_cube_boundary_to_polarcircle where "circle_cube_boundary_to_polarcircle γ ≡ if (γ = (circle_top_edge)) then {subcube 0 (1/4) (1, circle_polar), subcube (1/4) (1/2) (1, circle_polar)} else if (γ = (circle_bot_edge)) then {subcube (1/2) (3/4) (1, circle_polar), subcube (3/4) 1 (1, circle_polar)} else {}"
definition rot_circle_cube_boundary_to_polarcircle where "rot_circle_cube_boundary_to_polarcircle γ ≡ if (γ = (rot_circle_left_edge )) then {subcube (1/4) (1/2) (1, circle_polar), subcube (1/2) (3/4) (1, circle_polar)} else if (γ = (rot_circle_right_edge)) then {subcube (3/4) 1 (1, circle_polar), subcube 0 (1/4) (1, circle_polar)} else {}"
lemma circle_arcs_neq: assumes"0 ≤ k""k ≤ 1""0 ≤ n""n ≤ 1""n < k""k + n < 1" shows"subcube k m (1, circle_polar) ≠ subcube n q (1, circle_polar)" proof (simp add: subcube_def subpath_def circle_polar_def) have"cos (2 * pi * k) ≠ cos(2 * pi * n)" unfolding cos_eq proof safe show False if"2 * pi * k = 2 * pi * n + 2 * m * pi""m ∈ℤ"for m proof - have"2 * pi * (k - n ) = 2 * m * pi" using distrib_left that by (simp add: left_diff_distrib mult.commute) thenhave a: "m = (k - n)"by auto have"⌊k - n⌋ = 0 " using assms by (simp add: floor_eq_iff) thenhave"k - n ∉ℤ" using assms by (auto simp only: frac_eq_0_iff[symmetric] frac_def) thenshow False using that a by auto qed show False if"2 * pi * k = - (2 * pi * n) + 2 * m * pi""m ∈ℤ"for m proof - have"2 * pi * (k + n ) = 2 * m * pi" using that by (auto simp add: distrib_left) thenhave a: "m = (k + n)"by auto have"⌊k + n⌋ = 0 " using assms by (simp add: floor_eq_iff) thenhave"k + n ∉ℤ" using Ints_def assms by force thenshow False using that a by auto qed qed thenhave"(λx. (d * cos (2 * pi * ((m - k) * x + k))/2, d * sin (2 * pi * ((m - k) * x + k))/2)) 0 ≠ (λx. (d * cos (2 * pi * ((q - n) * x + n))/2, d * sin (2 * pi * ((q - n) * x + n))/2)) 0" using d_gt_0 by auto thenshow"(λx. (d * cos (2 * pi * ((m - k) * x + k))/2, d * sin (2 * pi * ((m - k) * x + k))/2)) ≠ (λx. (d * cos (2 * pi * ((q - n) * x + n))/2, d * sin (2 * pi * ((q - n) * x + n))/2))" by metis qed
lemma circle_arcs_neq_2: assumes"0 ≤ k""k ≤ 1""0 ≤ n""n ≤ 1""n < k""0 < n"and kn12: "1/2 < k + n"and"k + n < 3/2" shows"subcube k m (1, circle_polar) ≠ subcube n q (1, circle_polar)" proof (simp add: subcube_def subpath_def circle_polar_def) have"sin (2 * pi * k) ≠ sin(2 * pi * n)" unfolding sin_eq proof safe show False if"m ∈ℤ""2 * pi * k = 2 * pi * n + 2 * m * pi"for m proof - have"2 * pi * (k - n) = 2 * m * pi" using that by (simp add: left_diff_distrib mult.commute) thenhave a: "m = (k - n)"by auto have"⌊k - n⌋ = 0 " using assms by (simp add: floor_eq_iff) thenhave"k - n ∉ℤ" using assms by (auto simp only: frac_eq_0_iff[symmetric] frac_def ) thenshow False using that a by auto qed show False if"2 * pi * k = - (2 * pi * n) + (2 * m + 1) * pi""m ∈ℤ"for m proof - have i: "∧pi. 0 < pi ==> 2 * pi * (k + n ) = 2 * m * pi + pi ==> m = (k + n) - 1/2" by (sos "(((((A<0 * A<1) * R<1) + ([1/2] * A=0))) & ((((A<0 * A<1) * R<1) + ([~1/2] * A=0))))") have"2 * pi * (k + n) = 2 * m * pi + pi" using that by (simp add: algebra_simps) thenhave a: "m = (k + n) - 1/2"using i[OF pi_gt_zero] by fastforce have"⌊k + n - 1/2⌋ = 0 " using assms by (auto simp add: floor_eq_iff) thenhave"k + n - 1/2 ∉ℤ" by (metis Ints_cases add.commute add.left_neutral add_diff_cancel_left' add_diff_eq kn12 floor_of_int of_int_0 order_less_irrefl) thenshow False using that a by auto qed qed thenhave"(λx. (d * cos (2 * pi * ((m - k) * x + k))/2, d * sin (2 * pi * ((m - k) * x + k))/2)) 0 ≠ (λx. (d * cos (2 * pi * ((q - n) * x + n))/2, d * sin (2 * pi * ((q - n) * x + n))/2)) 0" using d_gt_0 by auto thenshow"(λx. (d * cos (2 * pi * ((m - k) * x + k))/2, d * sin (2 * pi * ((m - k) * x + k))/2)) ≠ (λx. (d * cos (2 * pi * ((q - n) * x + n))/2, d * sin (2 * pi * ((q - n) * x + n))/2))" by metis qed
lemma circle_cube_is_only_horizontal_div_of_rot: shows"only_horizontal_division (boundary (circle_cube)) {rot_circle_cube}" unfolding only_horizontal_division_def proof (rule exI [of _ "{}"], simp, intro conjI ballI) show"finite (boundary circle_cube)" using circle.circle_cube_boundary_explicit circle_axioms by auto show"boundary_chain (boundary circle_cube)" by (simp add: two_cube_boundary_is_boundary) show"∧x. x ∈ boundary circle_cube ==> case x of (k, x) ==> valid_path x" using circle_cube_boundary_valid by blast let ?V = "(boundary (circle_cube))" let ?pi = "{circle_left_edge, circle_right_edge}" let ?pj = "{rot_circle_top_edge, rot_circle_bot_edge}" let ?f = "circle_cube_boundary_to_polarcircle" let ?one_chaini = "boundary (circle_cube) - ?pi" have c: "common_reparam_exists ?V (two_chain_vertical_boundary {rot_circle_cube})" unfolding common_reparam_exists_def proof (intro exI conjI) let ?subdiv = "{(subcube 0 (1/4) (1, circle_polar)), (subcube (1/4) (1/2) (1, circle_polar)), (subcube (1/2) (3/4) (1, circle_polar)), (subcube (3/4) 1 (1, circle_polar))}" show"(∀(k, γ)∈?subdiv. γ C1_differentiable_on {0..1})" using subpath_smooth[OF circle_polar_smooth] by (auto simp add: subcube_def) have1: "finite ?subdiv"by auto show"boundary_chain ?subdiv" by (simp add: boundary_chain_def subcube_def) show"chain_reparam_chain' (boundary (circle_cube) - ?pi) ?subdiv" unfolding chain_reparam_chain'_def proof (intro exI conjI impI) show"∪ (?f ` ?one_chaini) = ?subdiv" apply (simp add: circle_cube_boundary_to_polarcircle_def circle_cube_boundary_explicit) using circle_top_bot_edges_neq' by metis let ?l = "[subcube 0 (1/4) (1, circle_polar), subcube (1/4) (1/2) (1, circle_polar)]" have"chain_reparam_weak_path (coeff_cube_to_path (circle_top_edge)) {subcube 0 (1/4) (1, circle_polar), subcube (1/4) (1/2) (1, circle_polar)}" unfolding chain_reparam_weak_path_def proof (intro exI conjI) show"valid_chain_list ?l" by (auto simp add: subcube_def circle_top_edge_def x_coord_def circle_y_def pathfinish_def pathstart_def
reversepath_def subpath_def joinpaths_def) show"reparam (coeff_cube_to_path circle_top_edge) (rec_join ?l)" using circ_top_edge_reparam_polar_circ_split by auto show"distinct ?l" apply simp apply (subst neq_commute) apply (simp add: circle_arcs_neq) done qed auto moreoverhave"chain_reparam_weak_path (coeff_cube_to_path (circle_bot_edge)) {subcube (1/2) (3/4) (1, circle_polar), subcube (3/4) 1 (1, circle_polar)}" unfolding chain_reparam_weak_path_def proof let ?l = "[subcube (1/2) (3/4) (1, circle_polar), subcube (3/4) 1 (1, circle_polar)]" have a: "valid_chain_list ?l" by (auto simp add: subcube_def circle_top_edge_def x_coord_def circle_y_def pathfinish_def pathstart_def
reversepath_def subpath_def joinpaths_def) have b: "reparam (rec_join [circle_bot_edge]) (rec_join ?l)" using circ_bot_edge_reparam_polar_circ_split by auto have c: "subcube (3/4) 1 (1, circle_polar) ≠ subcube (1/2) (3/4) (1, circle_polar)" apply(rule circle_arcs_neq_2) using d_gt_0(1) by auto show"set ?l = {subcube (1/2) (3/4) (1, circle_polar), subcube (3/4) 1 (1, circle_polar)} ∧ distinct ?l ∧ reparam (coeff_cube_to_path (circle_bot_edge)) (rec_join ?l) ∧ valid_chain_list ?l ∧ ?l ≠ []"using a b c by auto qed ultimately show"(∀cube∈?one_chaini. chain_reparam_weak_path (rec_join [cube]) (?f cube))" by (auto simp add: circle_cube_boundary_to_polarcircle_def UNION_eq circle_cube_boundary_explicit) show"(∀p∈?one_chaini. ∀p'∈?one_chaini. p ≠ p' ⟶ ?f p ∩ ?f p' = {})" using circle_arcs_neq circle_arcs_neq_2 apply (auto simp add: circle_cube_boundary_to_polarcircle_def UNION_eq circle_cube_boundary_explicit neq_commute d_gt_0) using circle_top_bot_edges_neq' d_gt_0 apply auto[1] apply (smt atLeastAtMost_iff divide_less_eq_1_pos zero_less_divide_1_iff) apply (smt atLeastAtMost_iff divide_less_eq_1_pos zero_less_divide_iff) apply (smt atLeastAtMost_iff divide_cancel_left divide_less_eq_1_pos field_sum_of_halves zero_less_divide_1_iff) done show"(∀x∈?one_chaini. finite (?f x))" by (auto simp add: circle_cube_boundary_to_polarcircle_def circle_cube_boundary_explicit) qed show"(∀(k, γ)∈?pi. point_path γ)" using d_gt_0 by (auto simp add: point_path_def circle_left_edge_def circle_right_edge_def) let ?f = "rot_circle_cube_boundary_to_polarcircle" let ?one_chain2.0 = "two_chain_vertical_boundary {rot_circle_cube} - ?pj" show"chain_reparam_chain' (two_chain_vertical_boundary {rot_circle_cube} - ?pj) ?subdiv" unfolding chain_reparam_chain'_def proof (intro exI conjI) have rw: "?one_chain2.0 = {rot_circle_left_edge, rot_circle_right_edge}" by(auto simp add: rot_circle_cube_vertical_boundary_explicit two_chain_vertical_boundary_def) show"∪ (?f ` ?one_chain2.0) = ?subdiv" using rot_circle_right_top_edges_neq' by (auto simp add: rot_circle_cube_boundary_to_polarcircle_def rw) show"(∀cube∈?one_chain2.0. chain_reparam_weak_path (rec_join [cube]) (?f cube))" proof (clarsimp simp add: rot_circle_cube_boundary_to_polarcircle_def rw, intro conjI) let ?l = "[subcube (1/4) (1/2) (1, circle_polar), subcube (1/2) (3/4) (1, circle_polar)]" show"chain_reparam_weak_path (coeff_cube_to_path (rot_circle_left_edge)) {subcube (1/4) (1/2) (1, circle_polar), subcube (1/2) (3/4) (1, circle_polar)}" unfolding chain_reparam_weak_path_def proof (intro exI conjI) show"valid_chain_list ?l" by (auto simp add: subcube_def pathfinish_def pathstart_def reversepath_def subpath_def joinpaths_def) show"reparam (coeff_cube_to_path rot_circle_left_edge) (rec_join ?l)" using rot_circ_left_edge_reparam_polar_circ_split by auto show"distinct ?l" apply simp apply (subst neq_commute) apply (simp add: circle_arcs_neq) done qed auto show"chain_reparam_weak_path (coeff_cube_to_path (rot_circle_right_edge)) {subcube (3/4) 1 (1, circle_polar), subcube 0 (1/4) (1, circle_polar)}" unfolding chain_reparam_weak_path_def proof (intro exI conjI) let ?l = "[subcube (3/4) 1 (1, circle_polar), subcube 0 (1/4) (1, circle_polar)]" show"valid_chain_list ?l" by (auto simp add: circle_polar_def subcube_def pathfinish_def pathstart_def
reversepath_def subpath_def joinpaths_def) show"reparam (coeff_cube_to_path rot_circle_right_edge) (rec_join ?l)" using rot_circ_right_edge_reparam_polar_circ_split by auto show"distinct ?l" by (simp add: circle_arcs_neq) qed auto qed show"(∀p∈?one_chain2.0. ∀p'∈?one_chain2.0. p ≠ p' ⟶ ?f p ∩ ?f p' = {})" using circle_arcs_neq circle_arcs_neq_2 apply (auto simp add: rot_circle_cube_boundary_to_polarcircle_def neq_commute) apply (metis add.right_neutral divide_less_eq_1_pos dual_order.order_iff_strict num.distinct(1) one_less_numeral_iff prod.sel(1) prod.sel(2) semiring_norm(68) subcube_def zero_less_divide_1_iff zero_less_numeral) apply (smt field_sum_of_halves) done show"(∀x∈?one_chain2.0. finite (?f x))" by (auto simp add: rot_circle_cube_boundary_to_polarcircle_def UNION_eq rw) qed show"(∀(k, γ)∈?pj. point_path γ)" using d_gt_0 by (auto simp add: point_path_def rot_circle_top_edge_def rot_circle_bot_edge_def) qed thenshow"common_sudiv_exists (two_chain_vertical_boundary {rot_circle_cube}) (boundary circle_cube) ∨ common_reparam_exists (boundary circle_cube) (two_chain_vertical_boundary {rot_circle_cube})" by blast qed
lemma GreenThm_cirlce: assumes"∀twoC∈{circle_cube}. analytically_valid (cubeImage twoC) (λx. F x ∙ i) j" "∀twoC∈{rot_circle_cube}. analytically_valid (cubeImage twoC) (λx. F x ∙ j) i" shows"integral (cubeImage (circle_cube)) (λx. partial_vector_derivative (λx. F x ∙ j) i x - partial_vector_derivative (λx. F x ∙ i) j x) = one_chain_line_integral F {i, j} (boundary (circle_cube))" proof(rule green_typeI_typeII_chain.GreenThm_typeI_typeII_divisible_region_finite_holes[of "(cubeImage (circle_cube))" i j F "{circle_cube}""{rot_circle_cube}",
OF _ _ _ circle_cube_is_only_horizontal_div_of_rot _], auto) show"∧ a b. (a, b) ∈ boundary circle_cube ==> valid_path b"using circle_cube_boundary_valid by auto show"green_typeI_typeII_chain (cubeImage circle_cube) i j F {circle_cube} {rot_circle_cube}" using assms proof(auto simp add: green_typeI_typeII_chain_def green_typeI_chain_def green_typeII_chain_def green_typeI_chain_axioms_def green_typeII_chain_axioms_def
intro!: circle_cube_is_type_I rot_circle_cube_is_type_II d_gt_0 R2_axioms) show"gen_division (cubeImage circle_cube) {cubeImage circle_cube}"by (simp add: gen_division_def) show"gen_division (cubeImage (circle_cube)) ({cubeImage rot_circle_cube})" using rot_circle_div_circle d_gt_0 by auto show"valid_two_chain {rot_circle_cube}""valid_two_chain {circle_cube}" apply (auto simp add: valid_two_chain_def) using rot_circle_cube_valid_two_cube circle_cube_valid_two_cube assms(1) by auto qed show"only_vertical_division (boundary (circle_cube)) {circle_cube}" using twoChainVertDiv_of_itself[of "{circle_cube}"] apply(simp add: two_chain_boundary_def) using circle_cube_boundary_valid by auto qed end end
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.