next | previous | forward | backward | up | top | index | toc | home

isInjective -- whether a map is injective

Synopsis

Description

This function computes the kernel, and checks whether it is zero.
i1 : R = QQ[a..d];
i2 : F = matrix{{a,b},{c,d}}

o2 = | a b |
     | c d |

             2       2
o2 : Matrix R  <--- R
i3 : isInjective F

o3 = true
i4 : G = substitute(F, R/(det F))

o4 = | a b |
     | c d |

             QQ [a, b, c, d] 2       QQ [a, b, c, d] 2
o4 : Matrix (---------------)  <--- (---------------)
               - b*c + a*d             - b*c + a*d
i5 : isInjective G

o5 = false

Similarly for ring maps:

i6 : S = QQ[r,s,t];
i7 : phi = map(S,R,{r^3, r^2*s, r*s*t, s^3})

               3   2           3
o7 = map(S,R,{r , r s, r*s*t, s })

o7 : RingMap S <--- R
i8 : isInjective phi

o8 = false
i9 : S' = coimage phi

o9 = S'

o9 : QuotientRing
i10 : phi' = phi * map(R,S')

                 3   2           3
o10 = map(S,S',{r , r s, r*s*t, s })

o10 : RingMap S <--- S'
i11 : isInjective phi'

o11 = true

Caveat

One could imagine a faster routine for this. If you write one, please send it to us!

See also

Ways to use isInjective :