3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push
back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22
says. Its not constraining the parsing, i.e. what happens in the grammar body. It is applied after what happens in the grammar body.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing
(respectively generation) by this grammar rule.
There is a further issue why the inventions of Ulrich Neumerkel don't work. One cannot define DCG via the following new idea:
```
phrase((A,B), S) is true if S is the concatenation of S1 and S2
where phrase(A, S1) and phrase(B, S2) are true.
```
The reason is the look ahead in DCG `(\+)/1`. `phrase/1` would give
false positives and by the above much more would be parsed,
than what a DCG usually would parse. Its not so difficult to
create an example, that violates the above illconceived specification.
The counter example in this case is not cut related, i.e. not related
in that phrase/1 isn't cut transparent, but in that DCG `(\+)/1`
introduces some non-monotonicity, similar like the ordinary
negation as failure in Prolog. So one cannot trade the monadic
behaviour of difference lists with the monadic behaviour of append,
since the difference lists in DCG do more, they can also provide
some look ahead, the same essential look ahead that is used in
many other parser formalizations.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:53:47 UTC+2:
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push
back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22
says. Its not constraining the parsing, i.e. what happens in the grammar body. It is applied after what happens in the grammar body.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing
(respectively generation) by this grammar rule.
Ulrich Neumerkel or who ever genius who had the idea to botch
the DCG draft. If I had to pay for that I would ask my money back.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:45:11 UTC+2:
There is a further issue why the inventions of Ulrich Neumerkel don't work. One cannot define DCG via the following new idea:
```
phrase((A,B), S) is true if S is the concatenation of S1 and S2
where phrase(A, S1) and phrase(B, S2) are true.
```
The reason is the look ahead in DCG `(\+)/1`. `phrase/1` would give
false positives and by the above much more would be parsed,
than what a DCG usually would parse. Its not so difficult to
create an example, that violates the above illconceived specification.
The counter example in this case is not cut related, i.e. not related
in that phrase/1 isn't cut transparent, but in that DCG `(\+)/1`
introduces some non-monotonicity, similar like the ordinary
negation as failure in Prolog. So one cannot trade the monadic
behaviour of difference lists with the monadic behaviour of append,
since the difference lists in DCG do more, they can also provide
some look ahead, the same essential look ahead that is used in
many other parser formalizations.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:53:47 UTC+2:
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push
back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22
says. Its not constraining the parsing, i.e. what happens in the grammar body. It is applied after what happens in the grammar body.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing (respectively generation) by this grammar rule.
I offer 0.0001 Bitcoins for every test case that shows some flaw in
the specification as done by Ulrich Neumerkel via phrase/2 or phrase/3.
But this offer is only valid for 30 days, who knows what Bitcoin
rate will be towards the end of the year.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:48:08 UTC+2:
Ulrich Neumerkel or who ever genius who had the idea to botch
the DCG draft. If I had to pay for that I would ask my money back. Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:45:11 UTC+2:
There is a further issue why the inventions of Ulrich Neumerkel don't work.
One cannot define DCG via the following new idea:
```
phrase((A,B), S) is true if S is the concatenation of S1 and S2
where phrase(A, S1) and phrase(B, S2) are true.
```
The reason is the look ahead in DCG `(\+)/1`. `phrase/1` would give
false positives and by the above much more would be parsed,
than what a DCG usually would parse. Its not so difficult to
create an example, that violates the above illconceived specification. The counter example in this case is not cut related, i.e. not related
in that phrase/1 isn't cut transparent, but in that DCG `(\+)/1`
introduces some non-monotonicity, similar like the ordinary
negation as failure in Prolog. So one cannot trade the monadic
behaviour of difference lists with the monadic behaviour of append,
since the difference lists in DCG do more, they can also provide
some look ahead, the same essential look ahead that is used in
many other parser formalizations.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:53:47 UTC+2:
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push
back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22 says. Its not constraining the parsing, i.e. what happens in the grammar
body. It is applied after what happens in the grammar body.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing (respectively generation) by this grammar rule.
The offer also ends when I have uploaded test
cases on gist, and marked those which would
not pass Ulrich Neumerkels world:
Example:
```
/* Violates Ulrich Neumerkels phrase((A;B), S) is true
iff ( phrase(A, S) ; phrase(B, S) ) is true. */
?- phrase((!, [a]; []), []).
false.
?- phrase((!, [a]), []); phrase([], []).
true.
```
But I am busy with other stuff, on the other hand Dogelog still
has a DCG ticket, so chances are nevertheless that will work
on DCG next days.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 21:19:34 UTC+2:
I offer 0.0001 Bitcoins for every test case that shows some flaw in
the specification as done by Ulrich Neumerkel via phrase/2 or phrase/3.
But this offer is only valid for 30 days, who knows what Bitcoin
rate will be towards the end of the year.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:48:08 UTC+2:
Ulrich Neumerkel or who ever genius who had the idea to botch
the DCG draft. If I had to pay for that I would ask my money back. Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:45:11 UTC+2:
There is a further issue why the inventions of Ulrich Neumerkel don't work.
One cannot define DCG via the following new idea:
```
phrase((A,B), S) is true if S is the concatenation of S1 and S2
where phrase(A, S1) and phrase(B, S2) are true.
```
The reason is the look ahead in DCG `(\+)/1`. `phrase/1` would give false positives and by the above much more would be parsed,
than what a DCG usually would parse. Its not so difficult to
create an example, that violates the above illconceived specification. The counter example in this case is not cut related, i.e. not related in that phrase/1 isn't cut transparent, but in that DCG `(\+)/1`
introduces some non-monotonicity, similar like the ordinary
negation as failure in Prolog. So one cannot trade the monadic behaviour of difference lists with the monadic behaviour of append,
since the difference lists in DCG do more, they can also provide
some look ahead, the same essential look ahead that is used in
many other parser formalizations.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:53:47 UTC+2:
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22 says. Its not constraining the parsing, i.e. what happens in the grammar
body. It is applied after what happens in the grammar body. Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing (respectively generation) by this grammar rule.
My suspicion Ulrich Neumerkel was guided by some idea of
pure DCG. But DCG was never pure. It translates into Prolog,
not necessarely pure Prolog. Also a TS that would start with
some “pure” would be strange, since the ISO core standard
doesn’t talk about “pure”. It has a much wider scope.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 21:29:16 UTC+2:
The offer also ends when I have uploaded test
cases on gist, and marked those which would
not pass Ulrich Neumerkels world:
Example:
```
/* Violates Ulrich Neumerkels phrase((A;B), S) is true
iff ( phrase(A, S) ; phrase(B, S) ) is true. */
?- phrase((!, [a]; []), []).
false.
?- phrase((!, [a]), []); phrase([], []).
true.
```
But I am busy with other stuff, on the other hand Dogelog still
has a DCG ticket, so chances are nevertheless that will work
on DCG next days.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 21:19:34 UTC+2:
I offer 0.0001 Bitcoins for every test case that shows some flaw in
the specification as done by Ulrich Neumerkel via phrase/2 or phrase/3.
But this offer is only valid for 30 days, who knows what Bitcoin
rate will be towards the end of the year.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:48:08 UTC+2:
Ulrich Neumerkel or who ever genius who had the idea to botch
the DCG draft. If I had to pay for that I would ask my money back. Mostowski Collapse schrieb am Montag, 30. August 2021 um 19:45:11 UTC+2:
There is a further issue why the inventions of Ulrich Neumerkel don't work.
One cannot define DCG via the following new idea:
```
phrase((A,B), S) is true if S is the concatenation of S1 and S2 where phrase(A, S1) and phrase(B, S2) are true.
```
The reason is the look ahead in DCG `(\+)/1`. `phrase/1` would give false positives and by the above much more would be parsed,
than what a DCG usually would parse. Its not so difficult to
create an example, that violates the above illconceived specification.
The counter example in this case is not cut related, i.e. not related
in that phrase/1 isn't cut transparent, but in that DCG `(\+)/1`
introduces some non-monotonicity, similar like the ordinary
negation as failure in Prolog. So one cannot trade the monadic behaviour of difference lists with the monadic behaviour of append,
since the difference lists in DCG do more, they can also provide some look ahead, the same essential look ahead that is used in
many other parser formalizations.
Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:53:47 UTC+2:
In general renaming the push back to semi context should be
anyway rolled back. Since it expresses more clearly what the push back does. The push back pushes the terminal sequence on
the remaining sequences.
The push back aka semi context doesn't do what their glossary 3.22 says. Its not constraining the parsing, i.e. what happens in the grammar
body. It is applied after what happens in the grammar body. Mostowski Collapse schrieb am Montag, 30. August 2021 um 17:48:55 UTC+2:
3.22 semicontext: A terminal-sequence occurring optionally afterthe nonterminal of a grammar-rule-head, constraining parsing (respectively generation) by this grammar rule.
From https://www.complang.tuwien.ac.at/ulrich/iso-prolog/dcgs/dcgsdraft-2021-08-16.pdf:
phrase((A,B), S) is true if S is the concatenation of S1 and S2
where phrase(A, S1) and phrase(B, S2) are true.
Here is a test case that violates the above claim by Ulrich Neumerkel:
run --> [X], run(X).
run(X) --> [X], run(X).
run(X) --> \+ [X].
runs([*|L]) --> run, runs(L).
runs([]) --> [].
When I try Ulrich Neumerkels law, even in its formulation with “if”,
as he does, and not with “iff”, I can violate it:
/* SWI-Prolog 8.3.26 */
?- phrase((run, runs(L)), "0001111").
L = [*] ;
false.
?- append(S1, S2, "0001111"), phrase(run, S1), phrase(runs(L), S2).
S1 = [48],
S2 = [48, 48, 49, 49, 49, 49],
L = [*, *] ;
S1 = [48, 48],
S2 = [48, 49, 49, 49, 49],
L = [*, *] ;
S1 = [48, 48, 48],
S2 = [49, 49, 49, 49],
L = [*] ;
false.
If the law would hold then the first query would also return [*,*], but
it only returns [*]. This shows that the specification is nonsense.
Open Source: https://gist.github.com/jburse/00d14dee1582a131a52bdddf1ffb9dcb#file-run-pl
Screen Shot: https://gist.github.com/jburse/00d14dee1582a131a52bdddf1ffb9dcb#gistcomment-3877306
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is
allowed.
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut isThis definition is similar to 7.8 where each construct first has
allowed.
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut isThis definition is similar to 7.8 where each construct first has
allowed.
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog implements, for example because of cut transparency. If you would
try adding such clauses, you would internally get, since A and B are
naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this would only scratch the surface of the semantics of (;)/2. A further
problem is that the cut cuts through all surrounding control constructs
such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog implements, for example because of cut transparency. If you would
try adding such clauses, you would internally get, since A and B are
naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this would only scratch the surface of the semantics of (;)/2. A further
problem is that the cut cuts through all surrounding control constructs
such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe
that this is perfectly fine since it is obviously your opinion and it can
be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those judgements and I am glad I don’t have to make those calls
at least here on this forum.
Mostowski Collapse schrieb am Donnerstag, 2. September 2021 um 15:52:16 UTC+2:
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog implements, for example because of cut transparency. If you would
try adding such clauses, you would internally get, since A and B are
naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this would only scratch the surface of the semantics of (;)/2. A further problem is that the cut cuts through all surrounding control constructs such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
The term was in use in 2020:
What is a Trump Sycophant?
https://www.youtube.com/watch?v=PueBqqizTNY
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:43:34 UTC+2:
Dont know what a sycophant is? Well the world has
always many of them. You can look it up:
someone who praises powerful or rich people in a
way that is not sincere, usually in order to get some
advantage from them:
- The prime minister is surrounded by sycophants.
https://www.thefreedictionary.com/bootlicking
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:41:30 UTC+2:
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe that this is perfectly fine since it is obviously your opinion and it can
be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those
judgements and I am glad I don’t have to make those calls
at least here on this forum.
Mostowski Collapse schrieb am Donnerstag, 2. September 2021 um 15:52:16 UTC+2:
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog implements, for example because of cut transparency. If you would
try adding such clauses, you would internally get, since A and B are naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this
would only scratch the surface of the semantics of (;)/2. A further problem is that the cut cuts through all surrounding control constructs
such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the first description does not cover cut.
This is the current working draft towards a TS - it seems someone has forgotten to add this remark.
Dont know what a sycophant is? Well the world has
always many of them. You can look it up:
someone who praises powerful or rich people in a
way that is not sincere, usually in order to get some
advantage from them:
- The prime minister is surrounded by sycophants.
https://www.thefreedictionary.com/bootlicking
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:41:30 UTC+2:
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe
that this is perfectly fine since it is obviously your opinion and it can be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those
judgements and I am glad I don’t have to make those calls
at least here on this forum.
Mostowski Collapse schrieb am Donnerstag, 2. September 2021 um 15:52:16 UTC+2:
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog implements, for example because of cut transparency. If you would
try adding such clauses, you would internally get, since A and B are naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this
would only scratch the surface of the semantics of (;)/2. A further problem is that the cut cuts through all surrounding control constructs such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has
its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the
first description does not cover cut.
This is the current working draft towards a TS - it seems someone has forgotten to add this remark.
History of People who wanted to turn me into a Sycophant:
- Bart Demoen, years ago attacked me on comp.lang.prolog
- Paulo Moura, Logtalk Creator, must be worshipped
- Ulrich Neumerkel, annoyed me with minus sign in numbers
- Jan Wielemaker, new/old? addition to my collection
- Who else? (I know more)
Well I am not Sycophant, and never will be. Got it? If you want
to deal with Sycophants I can refer you to those that are
around plenty. But for gods sake stick it up your ass.
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:54:39 UTC+2:
The term was in use in 2020:
What is a Trump Sycophant?
https://www.youtube.com/watch?v=PueBqqizTNY
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:43:34 UTC+2:
Dont know what a sycophant is? Well the world has
always many of them. You can look it up:
someone who praises powerful or rich people in a
way that is not sincere, usually in order to get some
advantage from them:
- The prime minister is surrounded by sycophants.
https://www.thefreedictionary.com/bootlicking
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:41:30 UTC+2:
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe that this is perfectly fine since it is obviously your opinion and it can
be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those
judgements and I am glad I don’t have to make those calls
at least here on this forum.
Mostowski Collapse schrieb am Donnerstag, 2. September 2021 um 15:52:16 UTC+2:
SWI-Prolog does the same nonsense as well in its documentation:
Goal1 ; _Goal2 :- Goal1.
_Goal1 ; Goal2 :- Goal2.
https://www.swi-prolog.org/pldoc/doc_for?object=%28%3B%29/2
This doesn’t work in practice. And this is also not what SWI-Prolog
implements, for example because of cut transparency. If you would try adding such clauses, you would internally get, since A and B are naked goals in the input, they will be wrapped with call/1:
A; _:- call(A).
_; B:- call(B).
call/1 isn’t cut transparent. But even if it were cut transparent, this
would only scratch the surface of the semantics of (;)/2. A further problem is that the cut cuts through all surrounding control constructs
such as (,)/2, (;)/2 and (->)/2, but a clauses for (;)/2
would bar reaching that far.
Mostowski Collapse schrieb am Mittwoch, 1. September 2021 um 22:39:11 UTC+2:
Didn't check. Maybe the ISO core already proceeds this way.
First presenting a declarative ideal view. And later giving
more details about the procedural details.
Ulrich Neumerkel schrieb am Mittwoch, 1. September 2021 um 20:33:15 UTC+2:
Mostowski Collapse <burs...@gmail.com> writes:
It describes DCG via phrase/[2,3], like for example (;)/2.
But unfortunately phrase/[2,3] isn't cut transparent:
phrase((A;B), S) is true iff ( phrase(A, S) ; phrase(B, S) ) is true.
This wont give a semantic to the cut inside DCG. But the cut is >allowed.This definition is similar to 7.8 where each construct first has its logical meaning defined (7.14). Also in e.g. 7.8.6.1, the first description does not cover cut.
This is the current working draft towards a TS - it seems someone
has forgotten to add this remark.
Interesting observation, the DCG proposal doesn't talk
about modules. How DCG work when the Prolog system
has also modules. Does anybody know that?
Whats the conclusion? Prolog will never have modules?
Logtalk nonsense is also dead, no proposal for objects
either? Or if one time a module standard or object
standard would come, this could be quite painful for
any DCG standard around. P.S.: Currently spending some
time again thinking and rethinking about modules
and objects, for upcoming Dogelog runtime.
I also found where the idea of semicontext is constraint comes from:
7.13.3.2 Examples
phrase1, [word] --> phrase2, phrase3.
After preparation for execution this may occur in the database as follows.
phrase1(S0, S):-
phrase2(S0, S1),
phrase3(S1, S2),
S = [word | S2].
NOTES
1 In case of parsing with phrase1, as soon as phrase2 and phrase3
have successfully parsed the comprehensive terminal-sequence (input list), the terminal word is prefixed to the remaining terminal-sequence. word is then the first terminal to be consumed in further parsing after phrase1. Thus further parsing is constrained by the semicontext.
Mostowski Collapse schrieb am Freitag, 10. September 2021 um 17:37:46 UTC+2:
The DCG proposal only states:
NOTE — Examples for additional grammar control constructs
include soft- cuts and control constructs that enable the use
of grammar rules stored on encapsulation units other than
modules, such as objects.
Which is utter nonsense. Modules and objects are usually
invisible. In a good module system I can write:
:- module(foo, []).
foo :- bar.
And bar implicitly refers to foo:bar. Similar things might
happen with objects, or better say classes.
Also its not only control constructs that are affected by
modules. Also predicate indicators change etc.. etc..
Interestingly TauProlog, Scryer-Prolog and Trealla all
layed their hands on modules. What was their experience?
Nobody knows. For Scryer-Prolog it seems that modules
have broken ordinary Prolog, like ensure_loaded/1 etc..
have a couple of tickets. The DCG proposal then says:
"the non-terminal indicators (cf 7.13.4), as arguments of
these directives, shall be used like predicate indicators for
the predicates, resulting from expanding these non-terminals."
NOTE — The directives dynamic/1, multifile/1 and discontiguous/1
are applicable to non-terminal indicators.
Mostowski Collapse schrieb am Freitag, 10. September 2021 um 17:25:20 UTC+2:
Interesting observation, the DCG proposal doesn't talk
about modules. How DCG work when the Prolog system
has also modules. Does anybody know that?
Whats the conclusion? Prolog will never have modules?
Logtalk nonsense is also dead, no proposal for objects
either? Or if one time a module standard or object
standard would come, this could be quite painful for
any DCG standard around. P.S.: Currently spending some
time again thinking and rethinking about modules
and objects, for upcoming Dogelog runtime.
The DCG proposal only states:
NOTE — Examples for additional grammar control constructs
include soft- cuts and control constructs that enable the use
of grammar rules stored on encapsulation units other than
modules, such as objects.
Which is utter nonsense. Modules and objects are usually
invisible. In a good module system I can write:
:- module(foo, []).
foo :- bar.
And bar implicitly refers to foo:bar. Similar things might
happen with objects, or better say classes.
Also its not only control constructs that are affected by
modules. Also predicate indicators change etc.. etc..
Interestingly TauProlog, Scryer-Prolog and Trealla all
layed their hands on modules. What was their experience?
Nobody knows. For Scryer-Prolog it seems that modules
have broken ordinary Prolog, like ensure_loaded/1 etc..
have a couple of tickets. The DCG proposal then says:
"the non-terminal indicators (cf 7.13.4), as arguments of
these directives, shall be used like predicate indicators for
the predicates, resulting from expanding these non-terminals."
NOTE — The directives dynamic/1, multifile/1 and discontiguous/1
are applicable to non-terminal indicators.
Mostowski Collapse schrieb am Freitag, 10. September 2021 um 17:25:20 UTC+2:
Interesting observation, the DCG proposal doesn't talk
about modules. How DCG work when the Prolog system
has also modules. Does anybody know that?
Whats the conclusion? Prolog will never have modules?
Logtalk nonsense is also dead, no proposal for objects
either? Or if one time a module standard or object
standard would come, this could be quite painful for
any DCG standard around. P.S.: Currently spending some
time again thinking and rethinking about modules
and objects, for upcoming Dogelog runtime.
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe
that this is perfectly fine since it is obviously your opinion and it can
be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those judgements and I am glad I don’t have to make those calls
at least here on this forum.
Well I suggest the below sycophant as elected ambassador
of SWI-Prolog. Maybe the Creator of Logtalk nonsense would
then not have left the SWI-Prolog discourse, after all if
I remember well the Creator of Logtalk nonsense left the
SWI-Prolog discourse because of some other struggle not
related to my opinion on Logtalk. As an ambassador he
could play scophant on two sides, maybe he would be
able to bring back the Creator of Logtalk nonsense into
SWI-Prolog discourse? That would be a quite nice feat, like
bringing back Bin Laden to Afghanistan.
Mostowski Collapse schrieb am Donnerstag, 9. September 2021 um 23:41:30 UTC+2:
I just found out that the word nonsense is censored now.
Also here is a nice sycophantic behaviour:
First before the Identity of the Moderator was known:
I did read your post about calling Logtalk nonsense, I firmly believe
that this is perfectly fine since it is obviously your opinion and it can be argued, so, moderating it was definitely an overreaction.
Then after the Identity of the Moderator was known:
Fair enough. It was indeed impolite. It is terribly difficult to make those
judgements and I am glad I don’t have to make those calls
at least here on this forum.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 39:10:22 |
Calls: | 6,648 |
Files: | 12,193 |
Messages: | 5,329,314 |