text‹We prove that a link diagram with a single crossing is equivalent to the ›
lemma transitive: assumes"a~b"and"b~c"shows"a~c" using Tangle_Equivalence.trans assms(1) assms(2) by metis
lemma prelim_cup_compress: " ((basic (cup#[])) ∘ (basic (vert # vert # []))) ~ ((basic [])∘(basic (cup#[])))" proof- have"domain_wall (basic (cup # [])) = 0" by auto moreoverhave"codomain_wall (basic (cup # [])) = 2" by auto moreover have"make_vert_block (nat (codomain_wall (basic (cup # [])))) = (vert # vert # [])" unfolding make_vert_block_def by auto moreoverhave"is_tangle_diagram ((basic (cup#[])) ∘ (basic (vert # vert # [])))" using is_tangle_diagram.simps by auto ultimately have"compress_bottom ((basic (cup#[])) ∘ (basic (vert # vert # []))) ((basic []) ∘(basic (cup#[])))" using compress_bottom_def by (metis is_tangle_diagram.simps(1)) thenhave"compress ((basic (cup#[])) ∘ (basic (vert # vert # []))) ((basic [])∘(basic (cup#[])))" using compress_def by auto thenhave"linkrel ((basic (cup#[])) ∘ (basic (vert # vert # []))) ((basic [])∘(basic (cup#[])))" unfolding linkrel_def by auto thenshow ?thesis using Tangle_Equivalence.equality compress_bottom_def
Tangle_Moves.compress_bottom_def Tangle_Moves.compress_def
Tangle_Moves.linkrel_def by auto qed
lemma cup_compress: "(basic (cup#[])) ∘ (basic (vert # vert # [])) ~ (basic (cup#[]))" proof- have" ((basic (cup#[])) ∘ (basic (vert # vert # []))) ~ ((basic [])∘(basic (cup#[])))" using prelim_cup_compress by auto moreoverhave"((basic [])∘(basic (cup#[]))) ~ (basic (cup#[]))" using domain_compose refl sym Tangle_Equivalence.domain_compose
Tangle_Equivalence.sym domain.simps(2) domain_block.simps
domain_wall.simps(1)
is_tangle_diagram.simps(1) monoid_add_class.add.right_neutral by auto ultimatelyshow ?thesis using trans by (metis Example.transitive) qed
abbreviation y::"wall" where "y ≡ (basic [cup]) ∘ (basic [cap])"
lemma uncross_straighten_left_over:"left_over ~ straight_line" proof- have"uncross right_over left_over" using uncross_positive_flip_def uncross_def by auto thenhave"linkrel right_over left_over" using linkrel_def by auto thenhave"right_over ~ left_over" using Tangle_Equivalence.equality by auto thenhave1:"left_over ~ right_over" using Tangle_Equivalence.sym by auto have"uncross right_over straight_line" using uncross_positive_straighten_def uncross_def by auto thenhave"linkrel right_over straight_line" using linkrel_def by auto thenhave2:"right_over ~ straight_line" using Tangle_Equivalence.equality by auto have"(left_over ~ straight_line) ∧ (right_over ~ straight_line) ==> ?thesis" using transitive by auto thenshow ?thesis using12 transitive by blast qed
theorem Example: "x ~ y" proof- have1:"left_over ~ straight_line" using Tangle_Equivalence.equality uncross_straighten_left_over by auto moreoverhave2:"straight_line ~ straight_line" using refl by auto have3:"(left_over ⊗ straight_line) ~ (straight_line ⊗ straight_line)" proof- have"is_tangle_diagram (left_over)" unfolding is_tangle_diagram_def by auto moreoverhave"is_tangle_diagram (straight_line)" unfolding is_tangle_diagram_def by auto ultimatelyshow ?thesis using12by (metis Tangle_Equivalence.tensor_eq) qed thenhave4: "((basic (cup#[])) ∘ (left_over ⊗ straight_line)) ~ ((basic (cup#[])) ∘ (straight_line ⊗ straight_line))" proof- have"is_tangle_diagram (left_over ⊗ straight_line)" by auto moreoverhave"is_tangle_diagram (straight_line ⊗ straight_line)" by auto moreoverhave"is_tangle_diagram (basic (cup#[]))" by auto moreoverhave"domain_wall (left_over ⊗ straight_line) = (codomain_wall (basic (cup#[])))" unfolding domain_wall_def by auto moreoverhave"domain_wall (straight_line ⊗ straight_line) = (codomain_wall (basic (cup#[])))" unfolding domain_wall_def by auto moreoverhave"(basic (cup#[])) ~ (basic (cup#[]))" using refl by auto ultimatelyshow ?thesis using compose_eq 3by (metis Tangle_Equivalence.compose_eq) qed moreoverhave5:" (basic [cup])∘ (straight_line ⊗ straight_line) ~ (basic [cup])" proof- have0: "(basic ([cup])) ∘ (straight_line ⊗ straight_line) = (basic [cup]) ∘(basic [vert,vert]) ∘ (basic [vert,vert])∘(basic [vert,vert])" by auto let ?x ="(basic (cup#[])) ∘(basic (vert#vert#[])) ∘ (basic (vert#vert#[])) ∘ (basic (vert#vert#[]))" let ?x1 = " (basic (vert#vert#[]))∘ (basic (vert#vert#[]))" have1:"?x ~ ((basic (cup#[])) ∘ ?x1)" proof- have"(basic (cup#[]))∘(basic (vert # vert # [])) ~ (basic (cup#[]))" using cup_compress by auto moreoverhave"is_tangle_diagram (basic (cup#[]))" using is_tangle_diagram_def by auto moreoverhave"is_tangle_diagram ((basic (cup#[]))∘(basic (vert # vert # [])))" using is_tangle_diagram_def by auto moreoverhave"is_tangle_diagram (?x1)" by auto moreoverhave"?x1 ~ ?x1" using refl by auto moreoverhave "codomain_wall (basic (cup#[])) = domain_wall (basic (vert#vert#[]))" by auto moreoverhave"(basic (cup#[])) ~ (basic (cup#[]))" using refl by auto ultimatelyshow ?thesis using compose_eq codomain_wall_compose compose_leftassociativity
converse_composition_of_tangle_diagrams domain_wall_compose by (metis Tangle_Equivalence.compose_eq is_tangle_diagram.simps(1)) qed have2: " ((basic (cup#[])) ∘ ?x1) ~ (basic (cup#[]))" proof- have" ((basic (cup # []))∘(basic (vert # vert # [])))∘(basic (vert # vert # [])) ~ ((basic(cup#[]))∘(basic(vert#vert#[])))" proof- have"(basic (cup#[]))∘(basic (vert # vert # [])) ~ (basic (cup#[]))" using cup_compress by auto moreoverhave"(basic(vert#vert#[])) ~ (basic(vert#vert#[]))" using refl by auto moreoverhave"is_tangle_diagram (basic (cup#[]))" using is_tangle_diagram_def by auto moreoverhave"is_tangle_diagram ((basic (cup#[]))∘(basic (vert # vert # [])))" using is_tangle_diagram_def by auto moreoverhave"is_tangle_diagram ((basic(vert#vert#[])))" by auto moreoverhave "codomain_wall ((basic (cup#[]))∘ (basic(vert#vert#[]))) = domain_wall (basic(vert#vert#[])) " by auto moreover have"codomain_wall (basic (cup#[])) = domain_wall (basic(vert#vert#[]))" by auto ultimatelyshow ?thesis using compose_eq by (metis Tangle_Equivalence.compose_eq) qed thenhave"((basic (cup#[])) ∘ ?x1) ~ ((basic(cup#[]))∘(basic(vert#vert#[])))" by auto thenshow ?thesis using cup_compress trans by (metis (full_types) Example.transitive) qed from012show ?thesis using trans transp_def trans compose_Nil by (metis (opaque_lifting, no_types) Example.transitive) qed let ?y = "((basic ([])) ∘ (basic (cup#[]))) " let ?temp = "(basic (vert#over#vert#[]))∘(basic (cap#vert#vert#[])) " have45:"(left_over ⊗ straight_line) = ((basic (cup#vert#vert#[])) ∘ ?temp)" using tensor.simps by (metis compose_Nil concatenates_Cons concatenates_Nil) thenhave55:"(basic (cup#[])) ∘ (left_over ⊗ straight_line) = (basic (cup#[])) ∘ (basic (cup#vert#vert#[])) ∘ ?temp" by auto thenhave "(basic (cup#[])) ∘ (basic (cup#vert#vert#[])) = (basic (([]) ⊗(cup#[])))∘(basic ((cup#[])⊗(vert#vert#[])))" using concatenate.simps by auto thenhave6: "(basic (cup#[])) ∘ (basic (cup#vert#vert#[])) = ((basic ([]))∘(basic (cup#[]))) ⊗((basic (cup#[])) ∘(basic (vert#vert#[])))" using tensor.simps by auto thenhave"((basic (cup#[])) ∘(basic (vert#vert#[]))) ~ (basic ([]))∘(basic (cup#[]))" using prelim_cup_compress by auto moreoverhave"((basic ([]))∘(basic (cup#[]))) ~ ((basic ([]))∘(basic (cup#[])))" using refl by auto moreoverhave"is_tangle_diagram ((basic (cup#[])) ∘(basic (vert#vert#[])))" by auto moreoverhave"is_tangle_diagram ((basic ([]))∘(basic (cup#[]))) " by auto ultimatelyhave7:"?y ⊗ ((basic (cup#[])) ∘(basic (vert#vert#[])))~ ((?y) ⊗ (?y))" using tensor_eq cup_compress Nil_right_tensor is_tangle_diagram.simps(1) refl by (metis Tangle_Equivalence.tensor_eq) thenhave" ((?y) ⊗ (?y)) = (basic (([]) ⊗ ([]))) ∘ ((basic (cup#[])) ⊗ (basic (cup#[])))" using tensor.simps(4) by (metis compose_Nil) thenhave" ((?y) ⊗ (?y)) = (basic ([])) ∘((basic (cup#cup#[])))" using tensor.simps(1) concatenate_def by auto thenhave"(?y) ⊗ ((basic (cup#[])) ∘(basic (vert#vert#[]))) ~ (basic ([])) ∘(basic (cup#cup#[]))" using7by auto moreoverhave"(basic ([]))∘(basic (cup#cup#[]))~(basic (cup#cup#[]))" proof- have"domain_wall (basic (cup#cup#[])) = 0" by auto thenshow ?thesis using domain_compose sym by (metis Tangle_Equivalence.domain_compose Tangle_Equivalence.sym is_tangle_diagram.simps(1)) qed ultimatelyhave"(?y) ⊗ ((basic (cup#[])) ∘(basic (vert#vert#[]))) ~ (basic (cup#cup#[]))" using trans by (metis (full_types) Example.transitive) thenhave" (basic(cup#[]))∘(basic(cup#vert#vert#[]))~(basic(cup#cup#[]))" by auto moreoverhave"?temp ~ ?temp" using refl by auto moreoverhave"is_tangle_diagram ((basic(cup#[]))∘(basic(cup#vert#vert#[])))" by auto moreoverhave"is_tangle_diagram (basic(cup#cup#[]))" by auto moreoverhave"is_tangle_diagram (?temp)" by auto moreoverhave"codomain_wall ((basic(cup#[]))∘(basic(cup#vert#vert#[]))) = domain_wall ?temp" by auto moreoverhave"codomain_wall (basic(cup#cup#[])) = domain_wall ?temp" by auto ultimatelyhave8:" ((basic(cup#[]))∘(basic(cup#vert#vert#[]))) ∘(?temp) ~ (basic(cup#cup#[])) ∘ (?temp)" using compose_eq by (metis Tangle_Equivalence.compose_eq) thenhave"((basic [cup,cup]) ∘ (?temp)) ~ (basic [cup] ∘ (left_over ⊗ straight_line))" using55 compose_leftassociativity sym wall.simps by (metis Tangle_Equivalence.sym compose_Nil) moreoverhave"(basic [cup]) ∘ (left_over ⊗ straight_line) ~ (basic [cup]) ∘ (straight_line ⊗ straight_line)" using4by auto ultimatelyhave"((basic [cup,cup]) ∘ (?temp)) ~ (basic [cup]) ∘ (straight_line ⊗ straight_line)" proof- have"((basic [cup,cup]) ∘ (?temp)) ~ (basic [cup] ∘ (left_over ⊗ straight_line))" using855 compose_leftassociativity sym wall.simps Tangle_Equivalence.sym compose_Nil by (metis) moreoverhave"(basic [cup]) ∘ (left_over ⊗ straight_line) ~ (basic [cup]) ∘ (straight_line ⊗ straight_line)" using4by auto moreoverhave"(((basic [cup,cup]) ∘ (?temp)) ~ (basic [cup] ∘ (left_over ⊗ straight_line))) ∧ ((basic [cup]) ∘ (left_over ⊗ straight_line) ~ (basic [cup]) ∘ (straight_line ⊗ straight_line)) ==> ?thesis" using Example.transitive by auto ultimatelyshow ?thesis by auto qed thenhave"(basic ([cup,cup])) ∘ (?temp) ~ (basic (cup # []))" using trans transp_def 5by (metis Example.transitive) moreoverhave"(basic (cap#[])) ~ (basic (cap#[]))" using refl by auto moreoverhave"is_tangle_diagram ((basic(cup#cup#[])) ∘ (?temp))" by auto moreoverhave"is_tangle_diagram (basic (cup # []))" by auto moreoverhave"is_tangle_diagram (basic (cap # []))" by auto moreoverhave"codomain_wall ((basic(cup#cup#[])) ∘ (?temp)) = domain_wall (basic (cap # []))" by auto moreoverhave"codomain_wall (basic(cup#[])) = domain_wall (basic (cap # []))" by auto ultimatelyhave9:"((basic(cup#cup#[])) ∘ (?temp)) ∘ (basic (cap#[])) ~ (basic (cup#[])) ∘ (basic (cap#[]))" using Tangle_Equivalence.compose_eq by metis let ?z = "((basic(cup#cup#[])) ∘ (basic(vert#over#vert#[])))" have10:"((basic(cup#cup#[])) ∘ (?temp)) ∘ (basic (cap#[])) = ?z ∘ ((basic(cap#vert#vert#[])) ∘ (basic (cap#[])))" by auto thenhave11:"((basic(cap#vert#vert#[])) ∘ (basic (cap#[]))) = ((basic ((cap#[])⊗(vert#vert#[])))∘(basic (([]) ⊗(cap#[]))))" unfolding concatenate_def by auto thenhave12:" ((basic(cap#vert#vert#[])) ∘ (basic (cap#[]))) = ((basic (cap#[]))∘(basic ([])))⊗((basic (vert#vert#[]))∘(basic (cap#[])))" using tensor.simps by auto let ?w = "((basic (cap#[]))∘(basic ([])))" have13:"((basic (vert#vert#[]))∘(basic (cap#[]))) ~ ?w" proof- have"codomain_wall (basic (cap#[])) = 0" by auto thenhave"domain_wall (basic (cap#[])) = 2"by auto thenhave"(vert#vert#[]) = make_vert_block (nat (domain_wall (basic (cap#[]))))" by (simp add: make_vert_block_def) thenhave"compress_top ((basic (vert#vert#[]))∘(basic (cap#[]))) ?w" using compress_top_def by auto thenhave"compress ((basic (vert#vert#[]))∘(basic (cap#[]))) ?w" using compress_def by auto thenhave"linkrel ((basic (vert#vert#[]))∘(basic (cap#[]))) ?w" using linkrel_def by auto thenhave" ((basic (vert#vert#[]))∘(basic (cap#[]))) ~ ?w" using Tangle_Equivalence.equality by auto thenshow ?thesis by simp qed moreoverhave"is_tangle_diagram ((basic (vert#vert#[]))∘(basic (cap#[])))" by auto moreoverhave"is_tangle_diagram ?w" by auto moreoverhave"?w ~ ?w" using refl by auto ultimatelyhave14:"(?w) ⊗ ((basic (vert#vert#[]))∘(basic (cap#[]))) ~ ((?w)⊗ (?w))" using Tangle_Equivalence.tensor_eq by metis thenhave"((basic(cap#vert#vert#[])) ∘ (basic (cap#[]))) ~ ((?w)⊗ (?w))" using13by auto moreoverhave" ((?w)⊗ (?w)) = (basic (cap#cap#[])) ∘ (basic ([]))" using tensor.simps by auto ultimatelyhave"((basic(cap#vert#vert#[]))∘(basic (cap#[])))~ (basic (cap#cap#[]))∘(basic ([]))" by auto moreoverhave"?z ~ ?z" using refl by auto moreoverhave"domain_wall ((basic(cap#cap#[])) ∘ (basic ([]))) = codomain_wall (?z)" by auto moreoverhave"domain_wall (((basic(cap#vert#vert#[])) ∘ (basic (cap#[])))) = codomain_wall (?z)" by auto moreoverhave"is_tangle_diagram ((basic(cap#vert#vert#[])) ∘ (basic (cap#[])))" by auto moreoverhave"is_tangle_diagram (?z)" by auto moreoverhave"is_tangle_diagram ((basic(cap#cap#[])) ∘ (basic ([])))" by auto ultimatelyhave14:" (?z) ∘ ((basic(cap#vert#vert#[])) ∘ (basic (cap#[]))) ~ (?z) ∘ ((basic(cap#cap#[])) ∘ (basic ([])))" (is"?aa ~ ?bb") using Tangle_Equivalence.compose_eq by metis moreoverhave15: "((?z) ∘ ((basic(cap#cap#[]))) ∘ (basic ([]))) ~ ((?z) ∘ (basic(cap#cap#[])))" (is"?bb ~ ?cc") using Tangle_Equivalence.codomain_compose Tangle_Equivalence.sym ‹is_tangle_diagram (basic [cap, cap] ∘ basic [])› codomain_wall_compose
compose_leftassociativity converse_composition_of_tangle_diagrams
domain_block.simps(1) domain_wall.simps(1) by (metis (opaque_lifting, mono_tags) Tangle_Equivalence.compose_eq
Tangle_Equivalence.refl ‹codomain_wall (basic [cup, cup])
= domain_wall (basic [vert, over, vert] ∘ basic [cap, vert, vert])› ‹domain_wall (basic [cap, cap] ∘ basic [])
= codomain_wall (basic [cup, cup] ∘ basic [vert, over, vert])›
comp_of_tangle_dgms domain_wall_compose is_tangle_diagram.simps(1)) ultimatelyhave"(?aa ~ ?bb)∧ (?bb ~ ?cc) ==>?aa ~ ?cc" using transitive by auto thenhave16:"?aa ~ ?cc" using1415by auto thenhave17:" ((basic (cup#[]))∘(basic (cap#[])))~ ?aa" using910 Tangle_Equivalence.trans Tangle_Equivalence.sym by (metis (opaque_lifting, no_types)) have"(((basic (cup#[]))∘(basic (cap#[])))~ ?aa)∧(?aa ~ ?cc) ==> ((basic (cup#[]))∘(basic (cap#[])))~ ?cc" using transitive by auto thenhave"((basic (cup#[]))∘(basic (cap#[])))~ ?cc" using1716by auto thenshow ?thesis using Tangle_Equivalence.sym by auto qed
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.