To recap, A is trying to deduce enough about U to maximize it:
A := Find some f with a proof of "U = f(A)", then return argmax f.
If U is A, A can fail by proving f = {(5,5),(10,0)}: If it could prove this, it would be true, for only 5 is checked. Then by Löb's theorem, it can prove this.
I've thrown this problem at some people in my university and a fellow student's idea led to:
A' := Find all f with a proof of "U = f(A')", then return argmax (their pointwise maximum).
The true f is among the found f. Fooling ourselves into a suboptimal action would require us to believe it at least as good as the true maximum, which the single check refutes.
Note that A' can't prove that some f is not found, due to Gödel. Therefore, it can never prove what it is going to do!
https://arxiv.org/abs/1401.5577 makes me think single player decision theory should be enough.
Consider "B := Have A' give you a source code X, then execute X." in modal combat. (Where f may be partial.) Pit B against itself. (D,C) and (C,D) are impossible by symmetry, so assuming our proof system is sound the pointwise maximum of all f will be at most the utility of (C,C). This can be reached by returning "Cooperate".
Pitting B against FairBot or PrudentBot, they shouldn't be able to prove B won't prove he can gain more from defecting, unless they assume B's consistency, in which case they should cooperate.
I can see B failing to establish corporation with itself when symmetry arguments are barred somehow. Perhaps it could work if B had a probability distribution over what PA+n it expects to be consistent...