#library('matlib')
library('pracma')
#library('spatstat')

C29 pg. 460 Alt text

A = cbind(c(1,2,1,1), c(2,1,2,2), c(1,1,1,1),  c(1,0,2,1))
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    1    1
## [2,]    2    1    1    0
## [3,]    1    2    1    2
## [4,]    1    2    1    1
rref(A)
##      [,1] [,2]      [,3] [,4]
## [1,]    1    0 0.3333333    0
## [2,]    0    1 0.3333333    0
## [3,]    0    0 0.0000000    1
## [4,]    0    0 0.0000000    0
null(A)
##               [,1]
## [1,] -3.015113e-01
## [2,] -3.015113e-01
## [3,]  9.045340e-01
## [4,] -4.163336e-17
round(nullspace(A), 5)
##          [,1]
## [1,] -0.30151
## [2,] -0.30151
## [3,]  0.90453
## [4,]  0.00000
round(A %*% null(A), 5)
##      [,1]
## [1,]    0
## [2,]    0
## [3,]    0
## [4,]    0
# we see that A has a non-trivial nullspace so T is not injective