From e90d438623fbcf6df379d6e87bfa4b714cb0e9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Sat, 2 May 2026 20:22:26 +0200 Subject: [PATCH] Implements implicit_basis for SemisimpleBasis --- src/fixed.jl | 16 ++++++++++++++++ test/fixed.jl | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/src/fixed.jl b/src/fixed.jl index 123eea3..dd1895b 100644 --- a/src/fixed.jl +++ b/src/fixed.jl @@ -15,6 +15,15 @@ Base.getindex(b::SimpleBasis, i::Integer) = b.elements[i] Base.iterate(b::SimpleBasis) = iterate(b.elements) Base.iterate(b::SimpleBasis, st) = iterate(b.elements, st) +function MA.promote_operation( + ::typeof(implicit_basis), + ::Type{<:SimpleBasis{T}}, +) where {T} + return MA.promote_operation(SA.basis, T) +end + +implicit_basis(basis::SimpleBasis) = SA.basis(first(basis.elements)) + """ struct SemisimpleElement{P} elements::Vector{P} @@ -59,6 +68,13 @@ struct SemisimpleBasis{T,B<:SA.ExplicitBasis{T}} <: bases::Vector{B} end +function MA.promote_operation( + ::typeof(implicit_basis), + ::Type{<:SemisimpleBasis{T,B}}, +) where {T,B} + return MA.promote_operation(implicit_basis, B) +end + Base.length(b::SemisimpleBasis) = length(first(b.bases)) function _iterate(b::SemisimpleBasis, elem_state) diff --git a/test/fixed.jl b/test/fixed.jl index c21594f..4c2dc47 100644 --- a/test/fixed.jl +++ b/test/fixed.jl @@ -22,6 +22,9 @@ end sb = MB.SimpleBasis([ae1, ae2, ae3]) + @test MA.promote_operation(MB.implicit_basis, typeof(sb)) == + typeof(MB.implicit_basis(sb)) + @testset "length" begin @test length(sb) == 3 end @@ -120,6 +123,9 @@ end sb = MB.SimpleBasis([ae1, ae2, ae3]) semi = MB.SemisimpleBasis([sb]) + @test MA.promote_operation(MB.implicit_basis, typeof(semi)) == + typeof(MB.implicit_basis(semi)) + @test length(semi) == 3 @test length(semi.bases) == 1