Comments (3)
There's a slight error in the transcription of the first call of the second clause. After correcting, we get:
reversal([]) --> [].
reversal([L|Ls]) --> reversal(Ls), [L].
from the-power-of-prolog.
Adding to this, we can use failure slicing to produce explanations for non-termination. For example, I can insert {false}
at any point of a grammar rule, like this:
reversal([]) --> { false }, []. reversal([L|Ls]) --> reversal([Ls]), { false }, [L].
This means that we are effectively considering now the following fragment:
reversal([L|Ls]) --> reversal([Ls]).
With which we still get (universal) non-termination:
?- phrase(reversal("abcd"), Ls), false. loops.
As long as this fragment does not terminate, the original program also does not terminate. Hence, if you want to improve termination properties of your grammar, you must change this specific fragment in the original program.
The ability to selectively remove portions of the code and still be able to make interesting statements about the original program by reasoning about only the remainder is one of the greatest attractions of logic programming.
from the-power-of-prolog.
Ah. Quite so. Thank you.
from the-power-of-prolog.
Related Issues (20)
- Add links to the next chapter at the bottom
- scryer-prolog 0.0.0.0 IP address but not localhost? HOT 2
- How to set executable path for a package on a configuration file on Emacs? HOT 4
- Add links to research papers
- Error in chapter on web applications HOT 2
- Error trying to connect to local server HOT 3
- Term Rewriting prolog code HOT 3
- DCG-ification of mi_list3
- Exercises HOT 1
- Your length rule doesn't work for me HOT 1
- How to maximise socialisation to the SGP if the number groups/people/weeks is fixed?
- `attribute_goals/3` existence error while following "Attributed Variables" chapter HOT 2
- DCGs: A declarative/logical way to describe pushback lists?
- Index page '/prolog' is not available offline HOT 4
- Integer Arithmetic - "left as an exercise" that is too difficult
- Summary Chapter/Koch Method
- Commenting Prolog
- A useful chapter - getting started tutorial
- "Testing Prolog Programs": A new URL needed to the paper Concolic Testing in Logic Programming HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from the-power-of-prolog.