On the last point you talked about, “prove it definitely will become such a future”. You simply cannot prove that without going there. What we’re seeing is not a natural course of actions, so we cannot simply derive the consequences like we would be able in science. Even in science, often times, the best we can do is probabilistic. The best we can do is show that such a future is possible, and that given the evidences, we may be able to conclude that the chances of realizing such a future is so and so, with caveats to known unknowns and unknown unknowns.
One case where I find it useful, tho it operates in a more limited way, is code in block blocks within code comments in Rust, which are also printed out in the generated documentation. They essentially get ran as part of your unit tests. This is great for making sure that, eg, your examples left in code comments actually work, especially if they’re written in a way that functions like a unit test.