Is it valid to do something like:
real(kind=rk), allocatable, target :: arr(:,:)
real(kind=rk), pointer :: ptr(:,:)
allocate(arr(10, 10))
ptr => arr(5:7, 5:7)
arr = 0
ptr(-1, 4) = 1
e.g. create pointer to array subsection and then access indices that are outside the subsection, but exist in the original array?
An array with the pointer attribute is still an array in its own right, with its own bounds. It is not valid to attempt to access an array element outside these bounds.
In the case of a pointer, such access may "work" - the program still owns the memory. This is not valid, though.