archives

Future of Programs using Assertions, Goals, and Plans

Programs using Assertions, Goals, and Plans have been proposed as important to the future of program languages ever since Terry Winograd demonstrated SHRDLU using Planner in 1968.

Recently, Robert Kowalski proposed considering a situation posed by the following notice in the London Underground:

                          Emergencies
Press the alarm signal to alert the driver.
The driver will stop if any part of the train is in the station.
If not, the train will continue to the next station, where help can more easily be given.
There is a 50 pound penalty for improper use.

Some of the procedural information for the above is embedded the following using a dialect of modern Logic Programs:

When Assertion Pressed[alarmSignalButton]→ Assert Alerted[driver]▮
When Assertion Alerted[driver]→
   When Assertion InStation[train]→ Assert Stopped[driver, train],
   When Assertion ¬InStation[train]→ Assert ContinuingToNextStation[driver, train]▮
When Assertion ImproperlyUsed[person, alarmSignalButton]→ Assert PenaltyOwed[person, 50 pounds]▮  

Of course, the above program needs to be fleshed out with considerably more code.

How important are Logic Program languages using assertions, goals, and plans to the future?