From 013e7057840efdb5291698afcff200ed13f32c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20G=C3=B6ttgens?= Date: Mon, 5 Sep 2022 14:55:08 +0200 Subject: [PATCH] reconstruct arcdiags from basis element --- src/ArcDiagram.jl | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/ArcDiagram.jl b/src/ArcDiagram.jl index bd83b02..04ceac8 100644 --- a/src/ArcDiagram.jl +++ b/src/ArcDiagram.jl @@ -281,6 +281,58 @@ function extract_sp_info__so_extpowers_stdmod(sp::SmashProductLie{C}) where {C < return dimV, e end +function corresponding_arc_diagram( + m::Matrix{QuadraticQuoAlgebraElem{C}}, + sp::SmashProductLie{C}, + deg::Int, +) where {C <: RingElement} + return corresponding_arc_diagram(m, sp, [deg]) +end + +function corresponding_arc_diagram( + m::Matrix{QuadraticQuoAlgebraElem{C}}, + sp::SmashProductLie{C}, + degs::AbstractVector{Int}, +) where {C <: RingElement} + dimV, e = extract_sp_info__so_extpowers_stdmod(sp) + for d in degs + diag_iter = pbw_arc_diagrams(e, d) + for diag in [diag for diag in diag_iter if is_crossing_free(diag, part=:upper)] + m2 = arcdiag_to_basiselem__so_extpowers_stdmod(diag, dimV, e, d, sp.alg(0), sp.basisL) + if normalize_basis([m]) == normalize_basis([m2]) + return diag + end + end + end + return nothing +end + +function corresponding_arc_diagrams( + m::Matrix{QuadraticQuoAlgebraElem{C}}, + sp::SmashProductLie{C}, + deg::Int, +) where {C <: RingElement} + return corresponding_arc_diagrams(m, sp, [deg]) +end + +function corresponding_arc_diagrams( + m::Matrix{QuadraticQuoAlgebraElem{C}}, + sp::SmashProductLie{C}, + degs::AbstractVector{Int}, +) where {C <: RingElement} + dimV, e = extract_sp_info__so_extpowers_stdmod(sp) + diags = ArcDiagram[] + for d in degs + diag_iter = pbw_arc_diagrams(e, d) + for diag in [diag for diag in diag_iter if is_crossing_free(diag, part=:upper)] + m2 = arcdiag_to_basiselem__so_extpowers_stdmod(diag, dimV, e, d, sp.alg(0), sp.basisL) + if normalize_basis([m]) == normalize_basis([m2]) + push!(diags, diag) + end + end + end + return diags +end struct SoDeformArcBasis{C <: RingElement} <: DeformBasis{C} len::Int