• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 22:31
CEST 04:31
KST 11:31
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
BGE Stara Zagora 2025: Info & Preview26Code S RO12 Preview: GuMiho, Bunny, SHIN, ByuN3The Memories We Share - Facing the Final(?) GSL46Code S RO12 Preview: Cure, Zoun, Solar, Creator4[ASL19] Finals Preview: Daunting Task30
Community News
[BSL20] ProLeague: Bracket Stage & Dates8GSL Ro4 and Finals moved to Sunday June 15th12Weekly Cups (May 27-June 1): ByuN goes back-to-back0EWC 2025 Regional Qualifier Results26Code S RO12 Results + RO8 Groups (2025 Season 2)3
StarCraft 2
General
The SCII GOAT: A statistical Evaluation BGE Stara Zagora 2025: Info & Preview Magnus Carlsen and Fabi review Clem's chess game. Jim claims he and Firefly were involved in match-fixing GSL Ro4 and Finals moved to Sunday June 15th
Tourneys
Bellum Gens Elite: Stara Zagora 2025 Master Swan Open (Global Bronze-Master 2) $5,100+ SEL Season 2 Championship (SC: Evo) SOOPer7s Showmatches 2025 Cheeseadelphia 2025 - Open Bracket LAN!
Strategy
[G] Darkgrid Layout Simple Questions Simple Answers [G] PvT Cheese: 13 Gate Proxy Robo
Custom Maps
[UMS] Zillion Zerglings
External Content
Mutation # 476 Charnel House Mutation # 475 Hard Target Mutation # 474 Futile Resistance Mutation # 473 Cold is the Void
Brood War
General
Will foreigners ever be able to challenge Koreans? [BSL20] ProLeague: Bracket Stage & Dates BGH auto balance -> http://bghmmr.eu/ BW General Discussion I made an ASL quiz
Tourneys
[ASL19] Grand Finals [Megathread] Daily Proleagues [BSL20] ProLeague Bracket Stage - Day 2 [BSL20] ProLeague Bracket Stage - Day 1
Strategy
I am doing this better than progamers do. [G] How to get started on ladder as a new Z player
Other Games
General Games
What do you want from future RTS games? Stormgate/Frost Giant Megathread Path of Exile Nintendo Switch Thread Mechabellum
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
LiquidLegends to reintegrate into TL.net
Heroes of the Storm
Heroes of the Storm 2.0 Simple Questions, Simple Answers
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread Vape Nation Thread European Politico-economics QA Mega-thread
Fan Clubs
Maru Fan Club Serral Fan Club
Media & Entertainment
Korean Music Discussion [Manga] One Piece
Sports
2024 - 2025 Football Thread Formula 1 Discussion NHL Playoffs 2024
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Cleaning My Mechanical Keyboard
TL Community
The Automated Ban List
Blogs
Cognitive styles x game perf…
TrAiDoS
StarCraft improvement
iopq
Heero Yuy & the Tax…
KrillinFromwales
I was completely wrong ab…
jameswatts
Need Your Help/Advice
Glider
Trip to the Zoo
micronesia
Poker
Nebuchad
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8668 users

The halting problem

Blogs > petergibbons
Post a Reply
pyaar
Profile Blog Joined August 2010
United States423 Posts
Last Edited: 2011-03-17 05:42:43
March 17 2011 05:27 GMT
#1
It's not often that I learn about things that I'm genuinely intrigued by in high school, but this is an exception. The halting problem, which is, I'm assuming, a staple of computability theory, asks the question, “is it possible to make an algorithm that can, for all cases, tell you whether a given computer program with its input will terminate?” The answer is an emphatic no because of an ingenious counterexample.

Let us suppose that I am on my deathbed, having wasted away my entire life coding a (supposed) solution to the halting problem. I shall from here replace all forms of “halt” with “terminate” since I'm not a silly Brit. This is America.

terminates(prog,input)
#codified product of sweat, blood, junk food and tears goes here
#True if program terminates
#or False if program does not terminate.


Since any program can itself be represented in its most elementary form as binary data, we can check to see if a program terminates with itself as input with this function:

self-terminates(prog)
#if terminates(prog,prog) is True, self-terminates runs forever
#if terminates(prog,prog) is False, self-terminates exits.


Thus if a program terminates when given itself as input, self-terminates goes into an infinite loop. If it does not terminate, self-terminates simply terminates. To say it another way, self-terminates terminates only if the provided program would not terminate on itself.

Now, what if we tried to run the code self-terminates(self-terminates)? If terminates(self-terminates, self-terminates) terminates, then an infinite loop would occur in self-terminates(self-terminates). (Note that the result of this should be what terminates(self-terminates, self-terminates) gives.) To say it another way, if self-terminates terminates on itself, then it must loop indefinitely. The problem is obvious. The only other possible case is that terminates(self-terminates, self-terminates) is false, but it's not: this would mean that self-terminates(self-terminates) would indeed terminate. The halting problem is unsolvable for a general case because of this counterexample.

I tried to make my explanation as simple as possible, but it took me at least an hour to fully wrap my head around this. Even now I'm not even sure if my explanation is correct. If you think you can make sense of more formal discourse on this (because shit, I can't), there's an entire wikipedia article dedicated to this in addition to numerous sites on the web. I've really been enjoying my Artificial Intelligence class.

haxorz
Profile Blog Joined June 2009
United States138 Posts
March 17 2011 05:46 GMT
#2
That's awesome that you think this stuff is interesting. Theoretical CS is pretty sweet.

Out of interest, what high school do you attend? My high school has a really strong CS program but I wish I had more exposure to theoretical results like the halting problem.

Also, the halting problem is actually *decidable* for some programming languages. Your counterexample assumes your language allows you to write such programs. Coincidentally, this very morning I went over a proof of termination for programs in Godel's T for the type theory class I am TAing.
And theres the GG.
pyaar
Profile Blog Joined August 2010
United States423 Posts
Last Edited: 2011-03-17 06:12:17
March 17 2011 06:04 GMT
#3
http://en.wikipedia.org/wiki/Tjhsst I go there. The old AI teacher stepped out this year to work on his doctorate, so a veteran math/CS teacher stepped in for him and has basically made up the course as he's gone along. After he introduced us to Python we began working on genetic algorithms and now we're just starting our study of Turing. I'm having a really good time.

I love abstract stuff like this, but my ability to comprehend this kind of thing is about average when compared to my classmates'. Same thing for BC calc. If I ever go into a CS field it'll be programming

edit: yes, that proof below me is a lot less convoluted. thanks!
Fission
Profile Blog Joined August 2010
Canada1184 Posts
March 17 2011 06:06 GMT
#4
Here's a simple proof of the halting problem that I think is a bit clearer:

The Halting Problem is:

INPUT: A string P and a string I. We will think of P as a program.

OUTPUT: 1, if P halts on I, and 0 if P goes into an infinite loop on I.

Theorem (Turing circa 1940): There is no program to solve the Halting Problem.

Proof: Assume to reach a contradiction that there exists a program Halt(P, I) that solves the halting problem, Halt(P, I) returns True if and only P halts on I. The given this program for the Halting Problem, we could construct the following string/code Z:

Program (String x)

If Halt(x, x) then
Loop Forever
Else Halt.

End.

Consider what happens when the program Z is run with input Z

Case 1: Program Z halts on input Z. Hence, by the correctness of the Halt program, Halt returns true on input Z, Z. Hence, program Z loops forever on input Z. Contradiction.

Case 1: Program Z loops forever on input Z. Hence, by the correctness of the Halt program, Halt returns false on input Z, Z. Hence, program Z halts on input Z. Contradiction.

End Proof.


http://www.comp.nus.edu.sg/~cs5234/FAQ/halt.html

It's cool that you're into this stuff.
haxorz
Profile Blog Joined June 2009
United States138 Posts
March 17 2011 06:08 GMT
#5
I went to tj Class of 2008. I'm a CS junior at CMU right now and am (probably) going to graduate a semester early. I'd be happy to talk to you about college stuff - I wish I had done so when I was in high school. If you wish, we can take this conversation offline so as to not derail your blog.

Who is this veteran teacher who speak of? If I had to guess, I'd say Mr. Steuben.
And theres the GG.
Assault_1
Profile Joined April 2009
Canada1950 Posts
March 17 2011 06:11 GMT
#6
I'm a CS major, but this is probably my least favourite area in cs we studied so far.. I usually don't like it when people say "this has no real-life applications," but I think its true for once in this case.
pyaar
Profile Blog Joined August 2010
United States423 Posts
March 17 2011 06:11 GMT
#7
Oh my goood. I'm going to blow up your PM box at some point—for now I have to finish my Vergil lines. CMU is a school I was really considering, so that's awesome.

Yes, it's Stueben, lol. The guy's strange and amazing. It's terrible that Latimer and Torbert both had to leave the year after I finished APCS since I've heard such great things about them, but Stueben and the new guy, Gabor, are both pretty cool too I guess.
pullarius1
Profile Blog Joined May 2010
United States522 Posts
March 17 2011 06:11 GMT
#8
The best, intuitive way I've heard to get a quick grasp the halting problem and related questions is this: imagine you have a program that does indeed tell you the answer to the halting problem. This would be the singular most powerful program in the world, because for any quantitative problem ever, you can simply make a program along the lines of "Search for Answers to Problem X" and then run that program and input into your Halting Program. For instance you could write a program looking for answers to Fermat's Last Theorem. Run the Halting program on that and, hey, you've proven it affirmatively or negatively. Or maybe write a "Search for Cancer Cure with Peptide A" etc. To boil it down to a simple rule: to ascertain every aspect of a program/machine/language, you have to run it. There are no clever shortcuts.

On a related, more mind-blowing note, you'll eventually get to things called Turing Machines, which end up being models for any sort of digital device you can imagine. Using those, you'll prove that it is actually impossible to determine any meaningful characteristic of programs at all!
@pullarius1
haxorz
Profile Blog Joined June 2009
United States138 Posts
March 17 2011 06:16 GMT
#9
On March 17 2011 15:11 petergibbons wrote:
Oh my goood. I'm going to blow up your PM box at some point—for now I have to finish my Vergil lines. CMU is a school I was really considering, so that's awesome.

Yes, it's Stueben, lol. The guy's strange and amazing. It's terrible that Latimer and Torbert both had to leave the year after I finished APCS since I've heard such great things about them, but Stueben and the new guy, Gabor, are both pretty cool too I guess.


Wow, what a coincidence. I had Steuben for Accelerated Intro CS. And I took Latin all 4 years.
And theres the GG.
pyaar
Profile Blog Joined August 2010
United States423 Posts
March 17 2011 06:17 GMT
#10
Wait a minute. is your last name Hong?
haxorz
Profile Blog Joined June 2009
United States138 Posts
March 17 2011 06:18 GMT
#11
On March 17 2011 15:11 Assault_1 wrote:
I'm a CS major, but this is probably my least favourite area in cs we studied so far.. I usually don't like it when people say "this has no real-life applications," but I think its true for once in this case.


Uh, the people who say that are the opposite of right (read: they are wrong). THIS is the theorem which says that it's actually impossible to test (certain) programs in (certain) languages (see my above post for details) AT ALL. Surely you think it's nice to know that you cannot naively expect every program to terminate?
And theres the GG.
haxorz
Profile Blog Joined June 2009
United States138 Posts
March 17 2011 06:19 GMT
#12
On March 17 2011 15:17 petergibbons wrote:
Wait a minute. is your last name Hong?


PM me.
And theres the GG.
munchmunch
Profile Joined October 2010
Canada789 Posts
March 17 2011 06:50 GMT
#13
On March 17 2011 15:18 haxorz wrote:
Show nested quote +
On March 17 2011 15:11 Assault_1 wrote:
I'm a CS major, but this is probably my least favourite area in cs we studied so far.. I usually don't like it when people say "this has no real-life applications," but I think its true for once in this case.


Uh, the people who say that are the opposite of right (read: they are wrong). THIS is the theorem which says that it's actually impossible to test (certain) programs in (certain) languages (see my above post for details) AT ALL. Surely you think it's nice to know that you cannot naively expect every program to terminate?


To put it more simply, no program can (perfectly) detect infinite loops. When I was 13 or so, I thought that interpreters/compilers should have a button to detect infinite loops, saving me the trouble of debugging them. So I've always thought of the halting problem as having real-world applications.
qrs
Profile Blog Joined December 2007
United States3637 Posts
March 17 2011 07:42 GMT
#14
On March 17 2011 15:11 pullarius1 wrote:
The best, intuitive way I've heard to get a quick grasp the halting problem and related questions is this: imagine you have a program that does indeed tell you the answer to the halting problem. This would be the singular most powerful program in the world, because for any quantitative problem ever, you can simply make a program along the lines of "Search for Answers to Problem X" and then run that program and input into your Halting Program. For instance you could write a program looking for answers to Fermat's Last Theorem. Run the Halting program on that and, hey, you've proven it affirmatively or negatively. Or maybe write a "Search for Cancer Cure with Peptide A" etc.
Very oversimplified, in my opinion, because all a "Halting Program" is guaranteed to do is return an answer in some finite time--it could be a billion years. If time weren't a practical consideration, then brute force search would more or less be "the most powerful program in the world".
To boil it down to a simple rule: to ascertain every aspect of a program/machine/language, you have to run it. There are no clever shortcuts.
This is oversimplified to the point of being wrong (imo). The point of the halting theorem is that you can't "ascertain every aspect of [every] program/machine/language" at all--including by running it. It's not that there are no shortcuts to discovering that a given program halts on a given input--it's that there is no way at all.
'As per the American Heart Association, the beat of the Bee Gees song "Stayin' Alive" provides an ideal rhythm in terms of beats per minute to use for hands-only CPR. One can also hum Queen's "Another One Bites The Dust".' —Wikipedia
Please log in or register to reply.
Live Events Refresh
Replay Cast
00:00
Showmatches
Liquipedia
BSL: ProLeague
18:00
Bracket Stage: Day 1
StRyKeR vs MadiNho
Cross vs UltrA
TT1 vs JDConan
Bonyth vs Sziky
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft499
RuFF_SC2 198
StarCraft: Brood War
Britney 27576
soO 74
Icarus 8
Dota 2
NeuroSwarm111
LuMiX1
League of Legends
JimRising 695
Counter-Strike
Stewie2K1401
Heroes of the Storm
Khaldor146
Other Games
summit1g6951
shahzam1339
ViBE199
Sick78
UpATreeSC41
Organizations
Other Games
gamesdonequick585
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 15 non-featured ]
StarCraft 2
• davetesta37
• practicex 29
• gosughost_ 11
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Doublelift5742
Other Games
• Scarra759
Upcoming Events
SOOP Global
29m
Creator vs Rogue
Cure vs Classic
SOOP
6h 29m
Classic vs GuMiho
Sparkling Tuna Cup
7h 29m
AllThingsProtoss
8h 29m
Fire Grow Cup
12h 29m
BSL: ProLeague
15h 29m
HBO vs Doodle
spx vs Tech
DragOn vs Hawk
Dewalt vs TerrOr
Replay Cast
21h 29m
Replay Cast
1d 21h
Replay Cast
2 days
WardiTV Invitational
2 days
[ Show More ]
WardiTV Invitational
2 days
GSL Code S
3 days
Rogue vs GuMiho
Maru vs Solar
Replay Cast
3 days
GSL Code S
4 days
herO vs TBD
Classic vs TBD
The PondCast
4 days
Replay Cast
4 days
GSL Code S
5 days
WardiTV Invitational
5 days
Korean StarCraft League
6 days
CranKy Ducklings
6 days
WardiTV Invitational
6 days
Cheesadelphia
6 days
Cheesadelphia
6 days
Liquipedia Results

Completed

CSL Season 17: Qualifier 1
BGE Stara Zagora 2025
Heroes 10 EU

Ongoing

JPL Season 2
BSL 2v2 Season 3
BSL Season 20
KCM Race Survival 2025 Season 2
NPSL S3
Rose Open S1
CSL Season 17: Qualifier 2
2025 GSL S2
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025
PGL Astana 2025
Asian Champions League '25
ECL Season 49: Europe
BLAST Rivals Spring 2025
MESA Nomadic Masters
CCT Season 2 Global Finals
IEM Melbourne 2025
YaLLa Compass Qatar 2025
PGL Bucharest 2025
BLAST Open Spring 2025

Upcoming

CSL 17: 2025 SUMMER
Copa Latinoamericana 4
CSLPRO Last Chance 2025
CSLPRO Chat StarLAN 3
K-Championship
SEL Season 2 Championship
Esports World Cup 2025
HSC XXVII
Championship of Russia 2025
Murky Cup #2
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.