Flowlog All, current items.

Will continue testing number_chars/2 extensively after #28, #27, #19, #17,
28: * top level: disjunctive hickup
With larger computations, the semicolon is written multiple times and thus the output is no longer valid Prolog text.
% ugly hack because of unaddressed flowlog-prolog#19

glength([],0).
glength([_|L],N1) :-
   glength(L,N2),
   N1 is N2+1.

abs([]).
abs([C|Cs]) :-
   ( C = a ; C = b ),
   abs(Cs).

?- length(L,16),(X=1;X=2),( abs(L), fail ; true ).
   L = [_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15], X = 1
; % unexpected output
;  L = [_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15], X = 2.
?- glength(L,N), N > 14, ( abs(L), fail ; true ).
   L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28], N = 15
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30], N = 16
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32], N = 17
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32,_34], N = 18
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32,_34,_36], N = 19
;  ... .
?- glength(L,N), N > 14, countall(abs(L),Cnt).
   L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28], N = 15, Cnt = 32768
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30], N = 16, Cnt = 65536
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32], N = 17, Cnt = 131072
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32,_34], N = 18, Cnt = 262144
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32,_34,_36], N = 19, Cnt = 524288
;  ... .
?- glength(L,N), N > 13, countall(abs(L),Cnt).
   L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26], N = 14, Cnt = 16384
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28], N = 15, Cnt = 32768
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30], N = 16, Cnt = 65536
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32], N = 17, Cnt = 131072
; % unexpected output
;  L = [_0,_2,_4,_6,_8,_10,_12,_14,_16,_18,_20,_22,_24,_26,_28,_30,_32,_34], N = 18, Cnt = 262144
;  ... .
v4.10.2
27: * segv
l(0).
l(N0) :-
   l(N1),
   N0 is N1+1.

?- l(N).
   N = 0
;  N = 1
;  N = 2
;  N = 3
;  N = 4Segmentation fault (core dumped)
25: * $-ambiguities
s#366
24: *

Valid term rejected
nihil --> [].
This is a valid term, even if you do not have any DCG support. It should be at least a fact.
v4.10.1 number_chars/2 passes all current tests
23: * Operator '|' needed for DCGs
Definite Clause Grammars are defined in 13211-3, they have the bar operator defined. Including them by default does make a lot of sense. Also quads need this operator defined in that way.
v4.9.18 no progress for number_chars/2
22: * Minor big integer problem
#7, #8.
?- N is 2^63, functor(_,f,N).
   error(type_error(integer,9223372036854775808),functor/3), unexpected.
   type_error(...,...), unexpected. % any type error is bad
?- N is 2^63, arg(N,f(1),_).
   error(type_error(integer,9223372036854775808),arg/3), unexpected.
   false. % expected, but not found
21: * Output in quads
For simple output there is outputs/1 with a grammar rule body as argument. To start with, a list of characters will do.
?- call((write(3), call(1)).
   outputs("3"),
   type_error(callable, 1).
Compare this to the original example in 7.8.3.4:
call((write(3), call(1)).
   Outputs '3', then
   type_error(callable, 1).
So it's outputs not output. The comma has here the meaning and then. Answer constraints and answer substitutions come last in a leaf-answer. (Unclear, if there are situations to put them first. Maybe if constraints and side effects are involved. But this gets way too complex.)
?- Ch = t, put_char(Ch).
   outputs("t"),
   Ch = t.
20: * sub_string/5 unusual
Why the same as sub_atom/5? If (at all), it might be defined over strings (lists of chars).
19: * length/2
l#1, l#4 ... And the actual quads are here. In case of difficulties, please refer to the sources of Scryer.
?- length(L,N).   % #1
error(existence_error(procedure,length/2),length/2), unexpected.
   L = [], N = 0
;  ... . % expected, but not found
?- length(2,0).   % #4
error(type_error(list,2),length/2), unexpected.
   false. % expected, but not found
v4.9.13
v4.9.8
v4.9.6
v4.9.3
v4.9.0
For the moment, I will stop testing Flowlog, since the most elementary items are ignored. I will look at s#1 only and update other issues only after this has been addressed.
17: * append/3 and double quotes entirely disfunctional
?- append("ab","cd",L).
   false, unexpected.
   L = "abcd". % expected, but not found
?- append([],Ys,Zs).
Segmentation fault (core dumped)
   Ys = Zs. % expected, but not found
?- append("a",Ys,Zs).
   false, unexpected.
?- member(X,"a").
   false, unexpected.
?- member(X,[a]).
   X = a.
?- [X] = "a".
   X = a.

cons([_|_]).
?- cons("a").
   false, unexpected.
v4.8.0
v4.7.2
v4.7.1
v4.6.14
v4.6.13
v4.6.10
v4.6.8
v4.6.6
11: * append/3 does not work
(Example from the Prolog prologue)
?- append([a], Ys, Zs).
Segmentation fault (core dumped), unexpected.
   Zs = [a|Ys]. % expected, but not found
   Ys = _1, Zs = [a|_2], unexpected.
(above with default. Does work with interp. With wam:)
?- append([a], Ys, Zs).
   Ys = Xs, Zs = [a|Xs], unexpected. % no longer
   Ys = _1, Zs = [a|_2], unexpected. % new
Where does Xs come from?
v4.6.5
9: * git clone problem with old system
ulrich@p0:/tmp$ git clone https://git.liminal.cafe/byakuren/flowlog.git
Cloning into 'flowlog'...
fatal: unable to access 'https://git.liminal.cafe/byakuren/flowlog.git/': gnutls_handshake() failed: Handshake failed
ulrich@p0:/tmp$ cat /etc/issue
Ubuntu 14.04.6 LTS \n \l
This does not happen with github. There I follow various systems like Scryer, Trealla.
2: * compilation on older system does not work
ulrich@p0:/opt/gupu/flowlog$ make
cc -O2 -Wall -Wextra -pthread flowlog.c -lm  -o flowlog
flowlog.c:41:23: fatal error: stdatomic.h: No such file or directory
 #include 
                       ^
compilation terminated.
make: *** [flowlog] Error 1
ulrich@p0:/opt/gupu/flowlog$ cc --version
cc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Installation:
wget https://web.liminal.cafe/~byakuren/flowlog/flowlog.tar.gz
git clone https://git.liminal.cafe/byakuren/flowlog.git
make
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[TXT]name.txt2026-01-05 11:38 8  
[TXT]lr.pl2026-01-06 20:51 343  
[TXT]gfl.pl2026-06-17 14:41 40  
[TXT]FLOWLOG-HEADER.html2026-06-22 11:09 19K 

Apache/2.4.67 (Debian) OpenSSL/3.0.18 Server at www.complang.tuwien.ac.at Port 443