On 14 Nov 2010, at 04:00, Dr. Ashish Kumar Das wrote: > Dear all, > I am confused with the command IsMatrix. In GAP a matrix is a list of > lists of equal length whose entries lie in a common ring. But if I > type mat:=[[1,2,3],[2,3]]; and then run IsMatrix(mat); I get the > reply 'true'. Moreover, If I run DimensionsMat(mat); I get the reply > '[2,3]'. Can any one tell me why does this happen?
Dear Dr. Ashish Kumar Das, The answer that you are getting here is really what is expected. The confusion here actually arises because of an incomplete GAP documentation, which will be clarified in the next GAP release. For the sake of performance and optimal method selection, IsMatrix is implemented in a way that it does not check that all lists have the same length, so IsMatrix is allowed to return 'true' for objects that does not strictly correspond to the definition of matrix to be "a list of lists of equal length whose entries lie in a common ring". This convention, allows, for example, to distinguish a matrix from other types of objects for the method selection, saving time by not checking each time that all its rows have the same length. If you want to check the latter condition, you need to call "IsRectangularTable" which will became documented in the next GAP release: gap> mat:=[[1,2,3],[2,3]]; [ [ 1, 2, 3 ], [ 2, 3 ] ] gap> IsRectangularTable(mat); false gap> m:=[[1,2,3],[2,3,0]]; [ [ 1, 2, 3 ], [ 2, 3, 0 ] ] gap> IsRectangularTable(m); true In addition, note a call to "IsSomething" may be a filter which checks that the object belongs to the certain category of GAP objects, and does not check the mathematical property of an argument, like in the example: gap> IsGroup([(),(1,2)]); false gap> G:=AsGroup([(),(1,2)]); Group([ (1,2) ]) gap> IsGroup(G); true See chapter 13 "Types of Objects" of the reference manual for more details. Hope this helps, Alexander _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum