def __classcall_private__(cls, basis, ambient=None, unitriangular=False, category=None, *args, **opts): r""" Normalize the input. TESTS:: sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis() sage: Y1 = SubmoduleWithBasis((x[0]-x[1], x[1]-x[2]), X) sage: Y2 = SubmoduleWithBasis([x[0]-x[1], x[1]-x[2]], X) sage: Y1 is Y2 True """ basis = Family(basis) if ambient is None: ambient = basis.an_element().parent() default_category = ModulesWithBasis( ambient.category().base_ring()).Subobjects() category = default_category.or_subcategory(category, join=True) return super(SubmoduleWithBasis, cls).__classcall__(cls, basis, ambient, unitriangular, category, *args, **opts)
def __classcall_private__(cls, submodule, category=None): r""" Normalize the input. TESTS:: sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis() sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) ) sage: J1 = QuotientModuleWithBasis(I) sage: J2 = QuotientModuleWithBasis(I, category=Modules(QQ).WithBasis().Quotients()) sage: J1 is J2 True """ default_category = ModulesWithBasis(submodule.category().base_ring()).Quotients() category = default_category.or_subcategory(category, join=True) return super(QuotientModuleWithBasis, cls).__classcall__(cls, submodule, category)
def __classcall_private__(cls, submodule, category=None): r""" Normalize the input. TESTS:: sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis() sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) ) sage: J1 = QuotientModuleWithBasis(I) sage: J2 = QuotientModuleWithBasis(I, category=Modules(QQ).WithBasis().Quotients()) sage: J1 is J2 True """ default_category = ModulesWithBasis(submodule.category().base_ring()).Quotients() category = default_category.or_subcategory(category, join=True) return super(QuotientModuleWithBasis, cls).__classcall__( cls, submodule, category)
def __classcall_private__(cls, basis, ambient=None, unitriangular=False, category=None, *args, **opts): r""" Normalize the input. TESTS:: sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis() sage: Y1 = SubmoduleWithBasis((x[0]-x[1], x[1]-x[2]), X) sage: Y2 = SubmoduleWithBasis([x[0]-x[1], x[1]-x[2]], X) sage: Y1 is Y2 True """ basis = Family(basis) if ambient is None: ambient = basis.an_element().parent() default_category = ModulesWithBasis(ambient.category().base_ring()).Subobjects() category = default_category.or_subcategory(category, join=True) return super(SubmoduleWithBasis, cls).__classcall__(cls, basis, ambient, unitriangular, category, *args, **opts)