Skip to content

New implementation class FiniteRankDualFreeModule #30241

@mkoeppe

Description

@mkoeppe

(from #30169)

We have the following identifications:

sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
sage: M is M.exterior_power(1)
True
sage: M is M.tensor_module(1, 0)
True

In contrast (in 9.7.rc0):

sage: M.dual() is M.dual_exterior_power(1)
True
sage: M.dual() is M.tensor_module(0, 1)
False

After #34474:

sage: M.dual() is M.dual_exterior_power(1)
True
sage: M.dual() is M.tensor_module(0, 1)
True

After #34474, the dual is implemented as a special case of ExtPowerDualFreeModule.

We create a separate implementation class FiniteRankDualFreeModule for it instead. We equip it with a tensor_type method, which allows the dual to participate in tensor products (see #34471).

Depends on #34474

CC: @egourgoulhon @tscrim @mjungmath

Component: linear algebra

Author: Matthias Koeppe

Branch/Commit: 84d7b5e

Reviewer: Eric Gourgoulhon

Issue created by migration from https://trac.sagemath.org/ticket/30241

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions