I'm reading about various ways in which termination proofs of software verifiers are built: ad-hoc methods that detect recursions, term-rewriting, synthesis of lexicographic orderings...
From the ad-hoc methods I came with the following intuitive idea. Is it possible to formalize termination with algebraic topology? The idea would be:
look at termination as the problem of finding loops in the code of the program.
look these loops as a fundamental group at some origin (a point in the source code)
test whether this fundamental group is simply connected (implying that this node is terminating)
Of course both problems are undecidable (the second one being testing the simple connectedness) but it seems to me theoretically feasible.
Has this been done before? You find it is not feasible?
Resources I find interesting (feel free to add)
Progress Measures and Finite Arguments for Infinite Computations, page 3.
Power domains and predicate transformers: A topological view (if I ever get access to it)
The topology of program termination.