• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:45
CEST 13:45
KST 20:45
  • 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
[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9Serral wins HomeStory Cup 2915Serral wins Maestros of the Game 244
Community News
StarCraft open world shooter announced at BlizzCon62Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10Official StarCraft website teases new content ahead of BlizzCon?168Stellar Fest TWO the Moon (Dec 16-20)9Weekly Cups (August 24-30): Patches' balance mod takes over3
StarCraft 2
General
StarCraft open world shooter announced at BlizzCon How do you feel about the StarCraft shooter announcement at BlizzCon 2026? Balance hotfix patch 5.0.16b (July 16) Team Liquid Map Contest #22: Results and Winners Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament RSL goes to London! 2026 Offline Finals Nov 21-22 KSL Week #92 IntoTheTV X SOOP SC2 League : Weekly & Monthly 2026 GSTL Announcement
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
Mutation # 542 The Ascended Mutation # 541 Binary Choice The PondCast: SC2 News & Results Mutation # 540 Dodge This
Brood War
General
Official StarCraft website teases new content ahead of BlizzCon? BGH Auto Balance -> http://bghmmr.eu/ Broodwar Prediction Market Practice Partners (Official) [D] Brainstorming a balance patch for Brood war
Tourneys
[ASL22] Ro16 Group B [ASL22] Ro16 Group A Escore Tournament - Season 3 Small VOD Thread 2.0
Strategy
Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation Game Theory for Starcraft
Other Games
General Games
Nintendo Switch Thread Diablo IV EVE Corporation [Maplestory Hardcore] Let's Play~!! General RTS Discussion Thread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish TSM pausing esports and CLG Dead
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
Things Aren’t Peaceful in Palestine US Politics Mega-thread Trading/Investing Thread UK Politics Mega-thread Russo-Ukrainian War Thread
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
Diablo Animated Series on Netflix Movie Discussion!
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
Virtual Romance, Real-Life C…
TrAiDoS
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
LOCKPICKING NOOB
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7720 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 States523 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
WardiTV Invitational
11:00
Pre Blizzcon Cup
ByuN vs Percival
Cure vs Classic
IntoTheiNu 786
WardiTV573
Liquipedia
Sparkling Tuna Cup
10:00
Weekly #146
SHIN vs GeraldLIVE!
herO vs TBD
CranKy Ducklings125
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Rex 108
MindelVK 32
StarCraft: Brood War
Britney 27962
Calm 10002
PianO 3896
Jaedong 2421
Pusan 643
firebathero 445
Larva 347
Mini 259
Hyun 253
Last 135
[ Show more ]
ZerO 87
Mong 66
Sharp 51
Killer 50
HiyA 43
Aegong 38
sSak 33
Sea.KH 33
Shinee 30
Trap 27
Shine 20
NaDa 20
Hm[arnc] 19
SilentControl 15
JulyZerg 12
ajuk12(nOOB) 12
NotJumperer 9
Rock 8
Dota 2
ODPixel560
Fuzer 180
Counter-Strike
x6flipin1258
edward426
zeus320
Other Games
summit1g16444
Pyrionflax287
DeMusliM186
KnowMe92
ZerO(Twitch)6
Organizations
Other Games
BasetradeTV204
StarCraft: Brood War
UltimateBattle 23
lovetv 6
[ Show 13 non-featured ]
StarCraft 2
• StrangeGG 90
• CranKy Ducklings SOOP24
• Adnapsc2 13
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos2208
Other Games
• WagamamaTV299
Upcoming Events
Shopify Rebellion Sundays
3h 15m
Spirit vs Mixu
Clem vs TBD
RSL Revival
4h 15m
Serral vs Rogue
BlizzCon
6h 45m
IdrA vs MC
Afreeca Starleague
22h 15m
Light vs JyJ
Soulkey vs hero
WardiTV Weekly
23h 15m
Monday Night Weeklies
1d 4h
Afreeca Starleague
1d 22h
Snow vs Shinee
Shine vs EffOrt
GSL
1d 23h
PiGosaur Cup
2 days
The PondCast
2 days
[ Show More ]
Kung Fu Cup
2 days
Replay Cast
3 days
KCM Race Survival
3 days
IntoTheTV X SOOP
3 days
Replay Cast
4 days
IntoTheTV X SOOP
4 days
Replay Cast
5 days
GSL
5 days
Replay Cast
6 days
GSL
6 days
Liquipedia Results

Completed

Acropolis #5 - TRS
PiG Sty Festival 8.0
Big Dog Cup 2026 Div 1

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
ASL Season 22
Super Anchor Qualifying S3
CSL 2026 AUTUMN (S22)
Acropolis #5
Blizzard Classic Cup 2026
Blizzard Classic Cup 2026
RSL Revival: Season 6
Calamity Invitational
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSA
Acropolis #5 - GSB
Acropolis #5 - GSC
SC4ALL II: Brood War
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
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 © 2026 TLnet. All Rights Reserved.