Home › フォーラム › AZ-Prologサポート掲示板 › 制約論理で否定の不等号が成り立たない › 返信先: 制約論理で否定の不等号が成り立たない
<p>% sort.pl<br />
randlist(N,A,Z):-<br />
length(Z,N),<br />
randlist_(Z,A).</p>
<p>randlist_([],_):-!.</p>
<p>randlist_([A|L],B):-<br />
s_random(B,A),<br />
randlist_(L,B).</p>
<p><br />
bubble_sort(A,Z):-<br />
list(A),<br />
bubble_sort(A,T-T,Z).</p>
<p>bubble_sort([],[]-[],[]):-!.</p>
<p>bubble_sort([A],T-[],[A|Z]):-!,<br />
bubble_sort(T,S-S,Z).</p>
<p>bubble_sort([A,B|L],T-[B|S],Z):-<br />
A < B, !,<br />
bubble_sort([A|L],T-S,Z).</p>
<p>bubble_sort([A|L],T-[A|S],Z):-<br />
bubble_sort(L,T-S,Z).</p>
<p><br />
$ prolog_c<br />
AZ-Prolog Version 9.63 (Linux/x64) GCC 5.4.0<br />
Copyright (C) SOFNEC CO., LTD. 1987-2017/06/29<br />
?-s_new,[-‘sort.pl’].<br />
yes<br />
?- debug.<br />
yes<br />
debug mode on<br />
?- set_write_list_length(_,3),<br />
randlist(550,100,A),<br />
bubble_sort(A,Z).<br />
Segmentation fault (コアダンプ)</p>
<p>% トレースログ<br />
% Match : bubble_sort([96,96,96|~],[99,99,99|~]-[96|S_1905901],Z_1905635) :-<br />
% 96<96,<br />
% !,<br />
% bubble_sort([96,96,96|~],[99,99,99|~]-S_1905901,Z_1905635).<br />
%Segmentation fault (コアダンプ)</p>
<p><br />
$ prolog_c -l 10000<br />
?-s_new,[-‘sort.pl’].<br />
?- debug.</p>
<p>?- set_write_list_length(_,3),<br />
randlist(550,100,A),<br />
bubble_sort(A,Z).<br />
_.4 = 3,<br />
A = [89,38,23|~],<br />
Z = [0,0,0|~]</p>
<p>?- set_write_list_length(_,3),<br />
randlist(1000,100,A),<br />
bubble_sort(A,Z).<br />
Global stack overflow —- Backtrace</p>
<p>% 追記<br />
% Windowでは発生しない。</p>
<p>||?- set_write_list_length(_,3),<br />
|| randlist(550,100,A),<br />
|| bubble_sort(A,Z).<br />
Local stack overflow —- Backtrace</p>