Verify Tents and Trees solution
J, 88 86 bytes
Expects a matrix with 0 for ., 1 for A and 2 for T.
(2&gt;1#.1=,);.3~&amp;2 2*/@,&amp;,1&amp;=((1 e.[:*/&quot;{2&gt;[:+/&quot;1|@-&quot;2)i.@!@#A.]) ::0&amp;($ #:i.@$#~&amp;,])2&amp;=

Try it online!
How it works
1&amp;= (…) 2&amp;=

Tents on the left side, trees on the right side.
(…)&amp;($#:i.@$#~&amp;,])

Convert both arguments to 2D coordinates.
(…) ::0

If the following function throws an error, return 0. This happens only in the single A case. :-(
i.@!@#A.]

List all permutations of the trees.
|@-&quot;2

Get the difference between the tents from every permutation.
[:*/2&gt;[:+/&quot;1

Check that each difference's sum is 1.
1 e.

Does any permutation fulfill this?
(2&gt;1#.1=,);.3~&amp;2 2

Get all 2x2 matrices of the original, and check if there is at most one tent in there.
*/@,@,

Combine both results, flatten the lists, and check if there are only 1's.