You are right and now it is clear, why your original statement is correct, too. Let U be an arbitrary computable utility function. As above, let u=U(o0a0o1a1…) and (u−ϵ,u+ϵ)⊆(a,b) with ϵ>0 and ϵ∈Q. Choose P as in your definition of “computable”. Since P(s,ϵ) terminates, its output depends only on finitely many oi1,…,oik,aj1,…,ajl. Now
{s′=o′0a′0o′1a′1…|o′i1=oi1,…,a′jl=ajl}
is open and a subset of U−1(u−ϵ,u+ϵ), since |P(s′,ϵ)−u|<ϵ.
You are right and now it is clear, why your original statement is correct, too. Let U be an arbitrary computable utility function. As above, let u=U(o0a0o1a1…) and (u−ϵ,u+ϵ)⊆(a,b) with ϵ>0 and ϵ∈Q. Choose P as in your definition of “computable”. Since P(s,ϵ) terminates, its output depends only on finitely many oi1,…,oik,aj1,…,ajl. Now
{s′=o′0a′0o′1a′1…|o′i1=oi1,…,a′jl=ajl}is open and a subset of U−1(u−ϵ,u+ϵ), since |P(s′,ϵ)−u|<ϵ.