Consider:
(define return-seven
(lambda () 7))
(define loop-forever
(lambda () (loop-forever)))
If halts? exists and works as it should, then we know:
(halts? return-seven) ⇒ #t
(halts? loop-forever) ⇒ #f
Q: How could halts? work?
Not by checking to see if a procedure halts, because if it doesn't halt it may just need a few thousand more years before it finishes.
Q: So, could halts? exist?