# isInjective -- whether a map is injective

## Synopsis

• Usage:
isInjective f
• Inputs:
• f, , or
• Outputs:
• , whether the kernel is zero

## 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 | R 2 R 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!