Macaulay2 / M2

The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
https://macaulay2.com
330 stars 228 forks source link

Conflicting methods for isIsomorphic(Module, Module) #3114

Open mahrud opened 5 months ago

mahrud commented 5 months ago

There is one in TateOnProducts and one in Isomorphism, with different output types!

i1 : code(isIsomorphic, Module, Module)

o1 = -- code for method: isIsomorphic(Module,Module)
     ../linuxbrew/.linuxbrew/share/Macaulay2/Isomorphism.m2:132:46-194:53: --source code:
     isIsomorphic(Module, Module) := Sequence => o ->  (N,M)->(
         --returns a pair (false, null) or (true, f), or where f is an isomorphism 
         --f: M to N.
...

i2 : needsPackage "TateOnProducts"
 -- warning: symbol "isIsomorphic" in Isomorphism.Dictionary is shadowed by a symbol in TateOnProducts.Dictionary
 --   use the synonym Isomorphism$isIsomorphic

o2 = TateOnProducts

o2 : Package

i3 : code(isIsomorphic, Module, Module)

o3 = -- code for method: isIsomorphic(Module,Module)
     ../linuxbrew/.linuxbrew/share/Macaulay2/TateOnProducts.m2:2395:37-2405:64: --source code:
     isIsomorphic(Module,Module) := (A,B) -> (
         --tests random degree 0 maps A->B, B->A and returns true
         --if both are surjective.
mikestillman commented 2 weeks ago

isIsomorphic should return a Boolean, perhaps the other function should be called findIsomorphism ?