Theory Kauffman_Invariance
section‹Kauffman\_Invariance: Proving the invariance of Kauffman Bracket›
theory Kauffman_Invariance
imports Link_Algebra Linkrel_Kauffman
begin
text‹In the following theorem, we prove that the kauffman matrix
is invariant of framed link invariance›
theorem kauffman_invariance:"(w1::wall) ~f w2 ⟹ kauff_mat w1 = kauff_mat w2"
proof(induction rule:Framed_Tangle_Equivalence.induct)
case refl
show ?case using refl by auto
next
case sym
show ?case using sym by auto
next
case trans
show ?case using trans by auto
next
case compose_eq
show ?case using compose_eq tangle_compose_matrix by auto
next
case codomain_compose
show ?case using codomain_compose left_mat_compose by auto
next
case domain_compose
show ?case using domain_compose right_mat_compose by auto
next
case tensor_eq
show ?case using tensor_eq.IH Tensor_Invariance by (metis)
next
case equality
show ?case using framed_linkrel_inv equality by auto
qed
lemma "rat_poly_times A B = 1"
using inverse1 by (metis )
text‹we calculate kauffman bracket of a few links›
text‹kauffman bracket of an unknot with zero crossings›
lemma "kauff_mat ([cup]*(basic [cap])) = [[-(A^2) - (B^2)]]"
apply(simp add:mat_multI_def)
apply(simp add:matT_vec_multI_def)
apply(auto simp add:replicate_def rat_poly.row_length_def)
apply(auto simp add:scalar_prod)
by (simp add: power2_eq_square)
text‹kauffman bracket of an a two component unlinked unknot
with zero crossings›
lemma "kauff_mat ([cup,cup]*(basic [cap,cap]))= [[((A^4)+(B^4)) + 2]]"
apply(simp add:mat_multI_def)
apply(simp add:matT_vec_multI_def)
apply(auto simp add:replicate_def rat_poly.row_length_def)
apply(auto simp add:scalar_prod)
apply(auto simp add:unlink_computation)
done
definition trefoil_polynomial::"rat_poly"
where
"trefoil_polynomial ≡
rat_poly_plus
(rat_poly_times (rat_poly_times A A)
(rat_poly_plus
(rat_poly_times B
(rat_poly_times B
(rat_poly_times (A - rat_poly_times (rat_poly_times B B) B)
(rat_poly_times A A))))
(rat_poly_times (A - rat_poly_times (rat_poly_times B B) B)
(rat_poly_plus (rat_poly_times B (rat_poly_times B (rat_poly_times A A)))
(rat_poly_times (A - rat_poly_times (rat_poly_times B B) B)
(rat_poly_times (A - rat_poly_times (rat_poly_times B B) B)
(rat_poly_times A A)))))))
(rat_poly_plus
(rat_poly_times 2
(rat_poly_times A
(rat_poly_times A
(rat_poly_times A
(rat_poly_times A (rat_poly_times A (rat_poly_times B B)))))))
(rat_poly_times (rat_poly_times B B)
(rat_poly_times B
(rat_poly_times (A - rat_poly_times (rat_poly_times B B) B)
(rat_poly_times B (rat_poly_times B B))))))"
text‹kauffman bracket of trefoil›
lemma trefoil:
"kauff_mat ([cup,cup]*[vert,over,vert]*[vert,over,vert]*[vert,over,vert]
*(basic [cap,cap]))
= [[trefoil_polynomial]]"
by(simp add: mat_multI_def matT_vec_multI_def rat_poly.row_length_def
scalar_prod trefoil_polynomial_def)
end