You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(23) |
Nov
(29) |
Dec
(21) |
2007 |
Jan
(48) |
Feb
(9) |
Mar
(49) |
Apr
(49) |
May
(33) |
Jun
(28) |
Jul
(34) |
Aug
(51) |
Sep
(52) |
Oct
(26) |
Nov
(15) |
Dec
(26) |
2008 |
Jan
(21) |
Feb
(22) |
Mar
(19) |
Apr
(35) |
May
(23) |
Jun
(62) |
Jul
(11) |
Aug
(20) |
Sep
(35) |
Oct
(46) |
Nov
(22) |
Dec
(3) |
2009 |
Jan
(45) |
Feb
(59) |
Mar
(24) |
Apr
(19) |
May
(10) |
Jun
(17) |
Jul
(16) |
Aug
(30) |
Sep
(41) |
Oct
(55) |
Nov
(37) |
Dec
(18) |
2010 |
Jan
(13) |
Feb
(103) |
Mar
(64) |
Apr
(134) |
May
(35) |
Jun
(47) |
Jul
(31) |
Aug
(27) |
Sep
(29) |
Oct
(6) |
Nov
(5) |
Dec
(8) |
2011 |
Jan
(20) |
Feb
(6) |
Mar
(8) |
Apr
(19) |
May
(36) |
Jun
(23) |
Jul
(10) |
Aug
(14) |
Sep
(54) |
Oct
(15) |
Nov
(29) |
Dec
(19) |
2012 |
Jan
(20) |
Feb
(11) |
Mar
(21) |
Apr
(7) |
May
(17) |
Jun
(3) |
Jul
(9) |
Aug
(10) |
Sep
(19) |
Oct
(46) |
Nov
(22) |
Dec
(3) |
2013 |
Jan
(6) |
Feb
(27) |
Mar
(9) |
Apr
(13) |
May
(9) |
Jun
(18) |
Jul
(33) |
Aug
(32) |
Sep
(10) |
Oct
(16) |
Nov
(3) |
Dec
(16) |
2014 |
Jan
(3) |
Feb
(4) |
Mar
|
Apr
(3) |
May
(5) |
Jun
(4) |
Jul
(1) |
Aug
(13) |
Sep
(9) |
Oct
(5) |
Nov
(12) |
Dec
(39) |
2015 |
Jan
(14) |
Feb
(15) |
Mar
(5) |
Apr
(4) |
May
(3) |
Jun
(12) |
Jul
(6) |
Aug
|
Sep
(1) |
Oct
(15) |
Nov
(6) |
Dec
(5) |
2016 |
Jan
|
Feb
(11) |
Mar
(17) |
Apr
|
May
(1) |
Jun
(6) |
Jul
(3) |
Aug
(1) |
Sep
(9) |
Oct
|
Nov
(7) |
Dec
|
2017 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(6) |
Jul
|
Aug
(3) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2018 |
Jan
(1) |
Feb
(8) |
Mar
|
Apr
(5) |
May
(4) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2019 |
Jan
(3) |
Feb
(1) |
Mar
|
Apr
(1) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
(1) |
Nov
(1) |
Dec
(5) |
2020 |
Jan
(1) |
Feb
|
Mar
(3) |
Apr
(6) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
(4) |
May
|
Jun
(13) |
Jul
(10) |
Aug
(4) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(1) |
2022 |
Jan
(1) |
Feb
(4) |
Mar
(1) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
(1) |
Dec
(5) |
2023 |
Jan
|
Feb
(6) |
Mar
(11) |
Apr
(3) |
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2024 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
(2) |
Sep
(3) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2025 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Paulo M. <pm...@lo...> - 2019-10-15 11:39:58
|
Hi, Logtalk 3.31.0 is now available for downloading at: https://logtalk.org/ This release adds new and improved lint checks for control constructs and built-in predicates, adds support for using "encoding/1" directives in included files, improves support for compiling modules as objects, includes documentation updates and improvements, includes fixes and updates for the "code_metrics" and "lgtunit" tools, includes a port of ToyCHR, updates Textadept editor support, updates the Windows installer to support Chocolatey packages, and provides portability updates for ECLiPSe, GNU Prolog, SICStus Prolog, SWI-Prolog, and YAP. For details and a complete list of changes, please consult the release notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md On other news, a new guide about applying Logtalk developer tools to Prolog codebases is now available at: https://logtalk.org/using_tools_with_prolog.html Last but not the least, Logtalk sponsorship is now live. If you visit its repository at GitHub: https://github.com/LogtalkDotOrg/logtalk3 at the top of the page, there's now a "Sponsor" button. Sponsorship tiers start at $2, hopefully allowing anyone to show their love and support for Logtalk. Even better, for the first year, GitHub created a Sponsors Matching Fund, which matches up to $5000 per sponsored developer in their first year of sponsorship! Counting on your to keep Logtalk a sustainable project. Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Joachim S. <jsc...@co...> - 2019-09-25 20:53:45
|
On 25/09/2019 07:37, bustiakim via ECLiPSe-CLP-Users wrote: > > Hello, > > My Eclipse Clp skills are quite basic as well as my English level. But I have > done a project in which I would like to use the Tcl / Tk environment to enter > data and then transfer it to Eclipse. > > I have been looking at the Embedding and Interfacing Manual with the queues > examples but I cannot move forward. > > My purpose is that every time I need the intervention of the operator be able to > use the Tk graphic environment to capture data, and then to transfer this data > to Eclipse Clp in order to continue the process. > I would also need to transfer data backwards from Eclipse to Tcl / Tk. > > I would appreciate if you could send me a complete code example that runs > correctly so I can learn about the communication and thus get applied to my project. > > Thank you very much in advance. > > Joaquim Torrellas Hi Joaquim, I admit that the Embedding Manual is not the easiest to understand ;) You can find some examples in the lib_tcl directory of your ECLiPSe installation. In addition, I have just uploaded one example showing the kind of queue communication that you are looking for, see http://eclipseclp.org/wiki/Examples/TclTkExamples Cheers, Joachim |
From: bustiakim <bus...@ya...> - 2019-09-25 06:58:03
|
Hello,My Eclipse Clp skills are quite basic as well as my English level. But I have done a project in which I would like to use the Tcl / Tk environment to enter data and then transfer it to Eclipse.I have been looking at the Embedding and Interfacing Manual with the queues examples but I cannot move forward.My purpose is that every time I need the intervention of the operator be able to use the Tk graphic environment to capture data, and then to transfer this data to Eclipse Clp in order to continue the process.I would also need to transfer data backwards from Eclipse to Tcl / Tk.I would appreciate if you could send me a complete code example that runs correctly so I can learn about the communication and thus get applied to my project.Thank you very much in advance. Joaquim Torrellas |
From: Paulo M. <pm...@lo...> - 2019-09-18 20:10:38
|
Hi, The -mmacosx-version-min=10.5 was indeed the problem. Changing configure to use 10.8 instead resulted in a successful compilation. For reference, I'm running macOS Mojave (10.4.6) with Xcode 10.3: $ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Thanks for all the help. Cheers, Paulo > On 18 Sep 2019, at 17:26, Joachim Schimpf <jsc...@co...> wrote: > > On 18/09/2019 15:25, Paulo Moura wrote: >>> >>> Kish-Shens-iMac:text kish$ gcc t.c >>> >>> Kish-Shens-iMac:text kish$ ./a.out >>> >>> sizrof(int)= 4 >> I do get the expected result with this small program: >> $ ./a.out >> sizrof(int)= 4 > > > Well, if > > gcc t.c > > > works fine, and > > gcc -o conftest -m64 -mmacosx-version-min=10.5 \ > -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses \ > -Wno-bitwise-op-parentheses -Wno-pointer-sign -m64 \ > -mmacosx-version-min=10.5 conftest.c -lm > ld: library not found for -lgcc_s.10.5 > clang: error: linker command failed with exit code 1 (use -v to see invocation) > > > makes a linker error, then one of these command line arguments causes it. > My guess was the -mmacosx-version-min=10.5, but I can't test it here. > > > Cheers, > Joachim > ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Paulo M. <pm...@lo...> - 2019-09-18 14:25:52
|
Hi, Removing the MACOS_VERSION_MIN=10.5 lines in configure makes no difference. Int size is still reported as zero. > On 18 Sep 2019, at 14:25, Kish Shen <kis...@gm...> wrote: > > Hi Paulo, > > it looks like there is a problem with your clang's sizeof test. Try > compiling and running the following: > > #include <stdio.h> > int main() { > int i = sizeof(int); > printf("sizrof(int)= %i\n", i); > > } > > compile and run the file: > > Kish-Shens-iMac:text kish$ gcc t.c > > Kish-Shens-iMac:text kish$ ./a.out > > sizrof(int)= 4 I do get the expected result with this small program: $ ./a.out sizrof(int)= 4 > Your messages suggest you will get 0 instead of 4 for this. If this is > the case, there is a serious problem with your version of clang, but I > could not find any mention of this problem with a quick web search. I have also been able to find any help searching the web so far. > If you get something other than 0 or 4, this would imply that clang or > Apple changed the size of int. Not the case here. > I think ECLiPSe itself can cope with > this (it should only need a word size integer type), but apparently > GMP does not. > > I have Mac OS 10.12.6, and an older version of clang: > > Configured with: > --prefix=/Applications/Xcode.app/Contents/Developer/usr > --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1 > > Apple LLVM version 8.1.0 (clang-802.0.42) I compiled ECLiPSe 7.0#43 some time ago without these issues (although using an older version of Xcode). Thanks for the suggestions. I will continue looking for the cause. Cheers, Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Kish S. <kis...@gm...> - 2019-09-18 13:25:25
|
Hi Paulo, it looks like there is a problem with your clang's sizeof test. Try compiling and running the following: #include <stdio.h> int main() { int i = sizeof(int); printf("sizrof(int)= %i\n", i); } compile and run the file: Kish-Shens-iMac:text kish$ gcc t.c Kish-Shens-iMac:text kish$ ./a.out sizrof(int)= 4 Your messages suggest you will get 0 instead of 4 for this. If this is the case, there is a serious problem with your version of clang, but I could not find any mention of this problem with a quick web search. If you get something other than 0 or 4, this would imply that clang or Apple changed the size of int. I think ECLiPSe itself can cope with this (it should only need a word size integer type), but apparently GMP does not. I have Mac OS 10.12.6, and an older version of clang: Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1 Apple LLVM version 8.1.0 (clang-802.0.42) Cheers, Kish |
From: Paulo M. <pm...@lo...> - 2019-09-18 11:40:24
|
Hi, > On 18 Sep 2019, at 11:39, Joachim Schimpf <jsc...@co...> wrote: > > On 18/09/2019 10:21, Paulo Moura wrote: >> Hi, >> I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors: >> 23:23 $ make -f Makefile.$ECLIPSEARCH >> ======== make_shm ======== >> gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c >> In file included from ../src/alloc.c:53: >> ../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4" >> #error "No code for dealing with sizeof(int) != 4" >> ^ > > > Hi Paulo, > > I have not seen this problem before. The message indicates that you are using a C compiler (or compiler option) that makes sizeof(int) != 4, which would be extremely unusual. > > Maybe it is just a problem during configure: when you run ./configure, does it output > > checking size of int... 4 > > or something different? Something is definitely wrong as configure reports: checking size of int... 0 checking size of long... 0 checking size of char *... 0 checking size of long *... 0 I'm using: $ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Is there other information that I can provide that helps debug this issue? Thanks, Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Joachim S. <jsc...@co...> - 2019-09-18 10:57:46
|
On 18/09/2019 10:21, Paulo Moura wrote: > Hi, > > I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors: > > 23:23 $ make -f Makefile.$ECLIPSEARCH > ======== make_shm ======== > gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c > In file included from ../src/alloc.c:53: > ../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4" > #error "No code for dealing with sizeof(int) != 4" > ^ Hi Paulo, I have not seen this problem before. The message indicates that you are using a C compiler (or compiler option) that makes sizeof(int) != 4, which would be extremely unusual. Maybe it is just a problem during configure: when you run ./configure, does it output checking size of int... 4 or something different? -- Joachim |
From: Paulo M. <pm...@lo...> - 2019-09-18 09:58:44
|
Hi, I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors: 23:23 $ make -f Makefile.$ECLIPSEARCH ======== make_shm ======== gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c In file included from ../src/alloc.c:53: ../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4" #error "No code for dealing with sizeof(int) != 4" ^ ../src/memman.h:137:2: error: unknown type name 'bits32' bits32 *map[BITMAP_BLOCKS]; /* bitmap of pages (1 = free) */ ^ ../src/alloc.c:60:13: warning: 'bcopy' macro redefined [-Wmacro-redefined] # define bcopy(s1, s2, n) (void) memcpy((void *)(s2),(void *)(s1), n) ^ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/secure/_strings.h:45:9: note: previous definition is here #define bcopy(src, dest, ...) \ ^ ../src/alloc.c:190:27: error: expected expression pages->map[i] = (bits32 *) 0; ^ ../src/alloc.c:190:19: error: use of undeclared identifier 'bits32' pages->map[i] = (bits32 *) 0; ^ 1 warning and 4 errors generated. make[1]: *** [alloc.o] Error 1 make: *** [make_shm] Error 2 Any hints? Thanks, Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Joachim S. <jsc...@co...> - 2019-05-13 22:31:11
|
On 13/05/2019 19:31, Panagiotis Stamatopoulos wrote: > Hello, > > Is there any explanation for the following behaviour? ... > [eclipse 3]: nth1(9,[a,b,c,d,e,f,g,h,i,j,k],V). > > V = V Hi Panagiotis, this was a regression that unfortunately slipped into version 7.0#45 (only this exact version), and has since been fixed. My apologies to everyone who was affected by this and spent time debugging. If you want to avoid installing a completely fresh version, you can download the single file listut.pl from https://sourceforge.net/p/eclipse-clp/git/ci/builds_7_0/tree/Contrib/listut.pl?format=raw and place it in the lib_public/ directory of your existing installation. As a small consolation, the family of nth-predicates has become quite a bit faster... Regards, Joachim PS: if you do a lot of indexed access, consider using arrays instead of lists. |
From: Panagiotis S. <ta...@di...> - 2019-05-13 21:44:10
|
Hello, Is there any explanation for the following behaviour? Thanks in advance. Regards, Panagiotis ----------------------------------------------------------------------- $ eclipse ECLiPSe Constraint Logic Programming System [kernel threads] Kernel and basic libraries copyright Cisco Systems, Inc. and subject to the Cisco-style Mozilla Public Licence 1.1 (see legal/cmpl.txt or http://eclipseclp.org/licence) Source available at www.sourceforge.org/projects/eclipse-clp GMP library copyright Free Software Foundation, see legal/lgpl.txt For other libraries see their individual copyright notices Version 7.0 #45 (x86_64_linux), Mon Feb 25 22:43 2019 [eclipse 1]: lib(listut). source_processor.eco loaded in 0.00 seconds hash.eco loaded in 0.00 seconds compiler_common.eco loaded in 0.01 seconds compiler_normalise.eco loaded in 0.00 seconds compiler_map.eco loaded in 0.00 seconds compiler_analysis.eco loaded in 0.00 seconds compiler_peephole.eco loaded in 0.00 seconds compiler_codegen.eco loaded in 0.01 seconds compiler_varclass.eco loaded in 0.00 seconds compiler_indexing.eco loaded in 0.00 seconds compiler_regassign.eco loaded in 0.00 seconds asm.eco loaded in 0.01 seconds module_options.eco loaded in 0.00 seconds ecl_compiler.eco loaded in 0.05 seconds File listut.pl, line 199: Singleton variable X File listut.pl, line 201: Singleton variable El /usr/local/eclipse/lib/listut.pl compiled 19824 bytes in 0.02 seconds Yes (0.06s cpu) [eclipse 2]: nth1(8,[a,b,c,d,e,f,g,h,i,j,k],V). V = h Yes (0.00s cpu) [eclipse 3]: nth1(9,[a,b,c,d,e,f,g,h,i,j,k],V). V = V Yes (0.00s cpu) [eclipse 4]: nth1(10,[a,b,c,d,e,f,g,h,i,j,k],V). V = V Yes (0.00s cpu) |
From: Joachim S. <jsc...@co...> - 2019-05-08 09:01:09
|
On 04/05/2019 18:58, Jan Drozen wrote: > Hi, > > In the Eclipse CLP, how many constraints or variables can I define? There is no specific limit on the number or variables or constraints. > I am currently remodeling my scheduling problem - I need to replace a single > |alldifferent| constraint with many |atmost| constraints. But since I've > introduced this change, my ecl script is not working anymore. By "not working" I > mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - just shuts down. > Without any error message, comment or saying goodbye. Just nothing. > > If I try to comment-out some constraints, the script at least gets compiled. > > Has someone already bothered with this issue? It turned out that Jan was working with large, generated source files with clauses of thousands of subgoals. Because ECLiPSe uses a recursive descent parser, such files can cause an OS stack overflow, in particular on Windows (code worked fine on Linux). Quick remedies include increasing the Windows stack limit, see https://docs.microsoft.com/en-us/cpp/build/reference/stack), or breaking up the generated code into smaller clauses, and call these in conjunction. Generally, however, generating textual source code isn't a great idea: it must be created, written, read, parsed, compiled, and is then executed just once. The preferable technique is to generate a pure data file that contains only things like arrays/lists of numbers, but _no_variables_. One can then have a small generic ECLiPSe program that reads these data and uses them to create variables and constraints, usually in several loops. For a very simple example, compare https://eclipseclp.org/examples/transport1.pl.txt (where all the data is explicit in the flat model) with https://eclipseclp.org/examples/transport_arr.pl.txt where the model is generic and all data comes from the data/3 fact at the end (this would correspond to the generated data file). Cheers, Joachim |
From: Joachim S. <jsc...@co...> - 2019-05-04 21:13:30
|
On 04/05/2019 18:58, Jan Drozen wrote: > Hi, > > In the Eclipse CLP, how many constraints or variables can I define? > > > I am currently remodeling my scheduling problem - I need to replace a single |alldifferent| > constraint with many |atmost| constraints. But since I've introduced this change, my ecl script is > not working anymore. By "not working" I mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - > just shuts down. Without any error message, comment or saying goodbye. Just nothing. > > If I try to comment-out some constraints, the script at least gets compiled. > > Has someone already bothered with this issue? > > > Kind regards, > Jan Hi Jan, your description is a bit too vague to do something about it. Can you send me a file that exhibits the problem? Thanks, Joachim |
From: Jan D. <dr...@se...> - 2019-05-04 18:13:39
|
Hi, In the Eclipse CLP, how many constraints or variables can I define? I am currently remodeling my scheduling problem - I need to replace a single alldifferent constraint with many atmost constraints. But since I've introduced this change, my ecl script is not working anymore. By "not working" I mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - just shuts down. Without any error message, comment or saying goodbye. Just nothing. If I try to comment-out some constraints, the script at least gets compiled. Has someone already bothered with this issue? Kind regards, Jan -- Jan Drozen dr...@dr... dr...@se... |
From: Paulo M. <pm...@lo...> - 2019-04-02 12:34:50
|
Hi, Logtalk 3.25.0 is now available for downloading at: https://logtalk.org/ New to Logtalk? Tutorials and a learning guide are available at: https://logtalk.org/guides.html Logtalk provides an alternative to Prolog modules, notably for programming in the large, and comes with a full set of developer tools: https://logtalk.org/tools.html This release focus on compiler linter and QuickCheck improvements. It adds 15 new linter checks, notably for possibly non-steadfast predicates, predicate and variable names that do not follow coding guidelines, repeat loops without a cut, redundant calls to built-in predicates and control constructs, cuts in clauses for multifile predicates, variable use in all-solutions predicate calls, and several others suspicious calls and constructs; adds two new compiler flags, "steadfastness" and "naming", to control the corresponding linter warnings; improves the goal-expansion mechanism to prevent infinite loops when the goal to be expanded resulted from a previous expansion of the same goal; updates the "coinductive/1" directive to also accept non-terminal indicators; updates the Handbook glossary; improves the Handbook sections on performance and on calling Prolog meta-predicates; fixes issues in the PDF version of the Handbook; improves "lgtunit" tool support for QuickCheck by allowing the user to specify the maximum number of shrink operations and by testing edge cases first; adds definitions for new types that take as argument a character set; adds shrinking supporty for most of the types supported by the "arbitrary" category; adds support for defining type edge cases to the "arbitrary" category; improves shrinking of list types; fixes steadfastness issues with some library predicates; and provides portability updates for GNU Prolog, SICStus Prolog, SWI-Prolog, and YAP. For details and a complete list of changes, please consult the release notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
From: Joachim S. <jsc...@co...> - 2019-02-08 00:51:57
|
On 29/01/2019 16:13, ISTENC TARHAN wrote: > Thanks for your quit explanatory answer. > > The only point I am worried about is the "Restarting the search" part. > After finding a new solution, incumbent solution is updated and search > is restarted. Yet, new search should have reduced domains of variables > due to the propagation in the previous searches, right? > Otherwise, each search would be equivalent to solving the original > problem with an updated upper bound. > > If I understand correctly, wouldn't this search scheme be too time consuming? Sorry for the very late reply... You are right, with the "restart" strategy you re-solve _almost_ the original problem, i.e. the original problem with a tighter cost bound. As you say, intuitively it seems that it should be possible to avoid duplicated work by using information from the previous search steps. However, this is not as simple as restarting with reduced domains: excluding parts of a search tree requires more complex representations, known as nogoods, which are difficult to implement efficiently. Fortunately, the cost bound is usually sufficient. Clearly, it ensures that the previous solution(s) will not be found again. And, via constraint propagation, the reduced domain of the cost variable will automatically reduce domains of other problem variables, and thus cut down the search space further. Having said that, the bb_min/3 predicate also supports a "continue" strategy, where the search is not restarted, but continues via failure in the same search tree (the tightened cost bound is then dynamically imposed for the remainder of the search). Surprisingly, this method is not always superior, essentially because restarting allows the search to be better tailored for the tighter problem. It is also less suitable for the kind of heuristic technique that you were envisaging. Cheers, Joachim > > Best, > İstenç > > On Mon, Jan 21, 2019 at 2:47 PM Joachim Schimpf <jsc...@co...> wrote: >> >> On 18/01/2019 14:19, ISTENC TARHAN wrote: >>> Hello, >>> >>> I need to perform the act in the subject "Updating lower bound - of a >>> minimization problem- during search" in my algorithm. Specifically, >>> when all variables are instantiated (i mean, at a leaf node), i want >>> to develop a new solution from it heuristically and update the upper >>> bound of the problem. >> >> >> The updating of the cost bound during minimization is typically >> handled by the branch-and-bound minimization predicate bb_min/3, see >> http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html >> >> The basic usage is as follows: you start with a program that computes >> _all_ solutions, which usually has a structure such as >> >> all_solutions(Xs, Cost) :- >> constraint_model(Xs), % deterministic constraint setup >> Cost #= ..., % Cost is some function of Xs >> labeling(Xs). % nondeterministic search >> >> This will, on backtracking, generate every solution together with >> its cost. [Instead of labeling/1, you could use have used search/6 >> or you own search procedure.] >> >> To find a minimal solution, wrap the nondeterministic search predicate >> into bb_min/3: >> >> :- lib(branch_and_bound). >> >> best_solution(Xs, Cost) :- >> constraint_model(Xs), >> Cost #= ..., >> bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). >> >> This works as follows (I describe the 'restart' strategy here): >> 1. labeling(Xs) finds a first solution with cost Cmin >> 2. bb_min restarts the search with a cost upper bound of Cmin-1 >> 3. if a better solution is found, call it Cmin and goto 2 >> 4. else the last value of Cmin is the optimum Cost >> >> "Restarting the search" simply means that the whole search (propagation, >> variable bindings, etc) is undone, and labeling/1 is called again. The >> only difference is that the cost upper bound is now lower than previously. >> >> >> Now, what you wanted to do was to use a previous solution in a heuristic >> for finding another solution. An easy way to do that is to introduce a >> "memory" that survives the undoing of the search before restart. >> In the following, I have used a "record" object >> (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could >> use any of the other non-backtrackable storage facilities described in >> http://eclipseclp.org/doc/bips/kernel/storage/index.html >> >> The Memory object is initialised before the optimization, and used to >> remember the last solution found. Note that bb_min/3 will still take >> are of the cost bound maintenance, making sure that only improving >> solutions are found: >> >> good_solution(Xs, Cost) :- >> constraint_model(Xs), >> Cost #= ..., >> record_create(Memory), >> bb_min(( >> ( erase(Memory, LastXs) -> >> % find new solution based on previous one >> heuristic_search(LastXs, Xs) >> ; >> % no previous solution, find a first one >> labeling(Xs) >> ), >> % store the new solution vector >> record(Memory, Xs) >> ), Cost, bb_options{strategy:restart}). >> >> If there was no previous solution (erase/2 fails), we use some >> default method to find a starting solution. Otherwise, we call our >> heuristic_search/2 with two vectors: a vector of values of the >> previous solution, and the corresponding vector of problem variables. >> >> By the way, a particularly simple way of implementing such a heuristic >> search is "shuffle search", where you set a random subset of the variables >> to their old solution values, and then simply let a standard labeling >> method fill in the rest. >> >> Such a heuristic approach is usually no longer a complete search: >> when heuristic_search/2 fails, it does not necessarily mean that no >> better solution exists, but only that the heuristic can't find one. >> There are again many strategies to recover from this, e.g. by trying >> to find a new, possibly randomized, starting solution. >> >> Randomized searches on huge search spaces do not usually terminate >> naturally, so you might also want to use bb_min's timeout option! >> >> >> Hope this helps, >> Joachim >> >> >> _______________________________________________ >> ECLiPSe-CLP-Users mailing list >> ECL...@li... >> https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users |
From: ISTENC T. <ita...@ku...> - 2019-01-29 16:14:00
|
Thanks for your quit explanatory answer. The only point I am worried about is the "Restarting the search" part. After finding a new solution, incumbent solution is updated and search is restarted. Yet, new search should have reduced domains of variables due to the propagation in the previous searches, right? Otherwise, each search would be equivalent to solving the original problem with an updated upper bound. If I understand correctly, wouldn't this search scheme be too time consuming? Best, İstenç On Mon, Jan 21, 2019 at 2:47 PM Joachim Schimpf <jsc...@co...> wrote: > > On 18/01/2019 14:19, ISTENC TARHAN wrote: > > Hello, > > > > I need to perform the act in the subject "Updating lower bound - of a > > minimization problem- during search" in my algorithm. Specifically, > > when all variables are instantiated (i mean, at a leaf node), i want > > to develop a new solution from it heuristically and update the upper > > bound of the problem. > > > The updating of the cost bound during minimization is typically > handled by the branch-and-bound minimization predicate bb_min/3, see > http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html > > The basic usage is as follows: you start with a program that computes > _all_ solutions, which usually has a structure such as > > all_solutions(Xs, Cost) :- > constraint_model(Xs), % deterministic constraint setup > Cost #= ..., % Cost is some function of Xs > labeling(Xs). % nondeterministic search > > This will, on backtracking, generate every solution together with > its cost. [Instead of labeling/1, you could use have used search/6 > or you own search procedure.] > > To find a minimal solution, wrap the nondeterministic search predicate > into bb_min/3: > > :- lib(branch_and_bound). > > best_solution(Xs, Cost) :- > constraint_model(Xs), > Cost #= ..., > bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). > > This works as follows (I describe the 'restart' strategy here): > 1. labeling(Xs) finds a first solution with cost Cmin > 2. bb_min restarts the search with a cost upper bound of Cmin-1 > 3. if a better solution is found, call it Cmin and goto 2 > 4. else the last value of Cmin is the optimum Cost > > "Restarting the search" simply means that the whole search (propagation, > variable bindings, etc) is undone, and labeling/1 is called again. The > only difference is that the cost upper bound is now lower than previously. > > > Now, what you wanted to do was to use a previous solution in a heuristic > for finding another solution. An easy way to do that is to introduce a > "memory" that survives the undoing of the search before restart. > In the following, I have used a "record" object > (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could > use any of the other non-backtrackable storage facilities described in > http://eclipseclp.org/doc/bips/kernel/storage/index.html > > The Memory object is initialised before the optimization, and used to > remember the last solution found. Note that bb_min/3 will still take > are of the cost bound maintenance, making sure that only improving > solutions are found: > > good_solution(Xs, Cost) :- > constraint_model(Xs), > Cost #= ..., > record_create(Memory), > bb_min(( > ( erase(Memory, LastXs) -> > % find new solution based on previous one > heuristic_search(LastXs, Xs) > ; > % no previous solution, find a first one > labeling(Xs) > ), > % store the new solution vector > record(Memory, Xs) > ), Cost, bb_options{strategy:restart}). > > If there was no previous solution (erase/2 fails), we use some > default method to find a starting solution. Otherwise, we call our > heuristic_search/2 with two vectors: a vector of values of the > previous solution, and the corresponding vector of problem variables. > > By the way, a particularly simple way of implementing such a heuristic > search is "shuffle search", where you set a random subset of the variables > to their old solution values, and then simply let a standard labeling > method fill in the rest. > > Such a heuristic approach is usually no longer a complete search: > when heuristic_search/2 fails, it does not necessarily mean that no > better solution exists, but only that the heuristic can't find one. > There are again many strategies to recover from this, e.g. by trying > to find a new, possibly randomized, starting solution. > > Randomized searches on huge search spaces do not usually terminate > naturally, so you might also want to use bb_min's timeout option! > > > Hope this helps, > Joachim > > > _______________________________________________ > ECLiPSe-CLP-Users mailing list > ECL...@li... > https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users |
From: Joachim S. <jsc...@co...> - 2019-01-21 11:45:07
|
On 18/01/2019 14:19, ISTENC TARHAN wrote: > Hello, > > I need to perform the act in the subject "Updating lower bound - of a > minimization problem- during search" in my algorithm. Specifically, > when all variables are instantiated (i mean, at a leaf node), i want > to develop a new solution from it heuristically and update the upper > bound of the problem. The updating of the cost bound during minimization is typically handled by the branch-and-bound minimization predicate bb_min/3, see http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html The basic usage is as follows: you start with a program that computes _all_ solutions, which usually has a structure such as all_solutions(Xs, Cost) :- constraint_model(Xs), % deterministic constraint setup Cost #= ..., % Cost is some function of Xs labeling(Xs). % nondeterministic search This will, on backtracking, generate every solution together with its cost. [Instead of labeling/1, you could use have used search/6 or you own search procedure.] To find a minimal solution, wrap the nondeterministic search predicate into bb_min/3: :- lib(branch_and_bound). best_solution(Xs, Cost) :- constraint_model(Xs), Cost #= ..., bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). This works as follows (I describe the 'restart' strategy here): 1. labeling(Xs) finds a first solution with cost Cmin 2. bb_min restarts the search with a cost upper bound of Cmin-1 3. if a better solution is found, call it Cmin and goto 2 4. else the last value of Cmin is the optimum Cost "Restarting the search" simply means that the whole search (propagation, variable bindings, etc) is undone, and labeling/1 is called again. The only difference is that the cost upper bound is now lower than previously. Now, what you wanted to do was to use a previous solution in a heuristic for finding another solution. An easy way to do that is to introduce a "memory" that survives the undoing of the search before restart. In the following, I have used a "record" object (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could use any of the other non-backtrackable storage facilities described in http://eclipseclp.org/doc/bips/kernel/storage/index.html The Memory object is initialised before the optimization, and used to remember the last solution found. Note that bb_min/3 will still take are of the cost bound maintenance, making sure that only improving solutions are found: good_solution(Xs, Cost) :- constraint_model(Xs), Cost #= ..., record_create(Memory), bb_min(( ( erase(Memory, LastXs) -> % find new solution based on previous one heuristic_search(LastXs, Xs) ; % no previous solution, find a first one labeling(Xs) ), % store the new solution vector record(Memory, Xs) ), Cost, bb_options{strategy:restart}). If there was no previous solution (erase/2 fails), we use some default method to find a starting solution. Otherwise, we call our heuristic_search/2 with two vectors: a vector of values of the previous solution, and the corresponding vector of problem variables. By the way, a particularly simple way of implementing such a heuristic search is "shuffle search", where you set a random subset of the variables to their old solution values, and then simply let a standard labeling method fill in the rest. Such a heuristic approach is usually no longer a complete search: when heuristic_search/2 fails, it does not necessarily mean that no better solution exists, but only that the heuristic can't find one. There are again many strategies to recover from this, e.g. by trying to find a new, possibly randomized, starting solution. Randomized searches on huge search spaces do not usually terminate naturally, so you might also want to use bb_min's timeout option! Hope this helps, Joachim |
From: ISTENC T. <ita...@ku...> - 2019-01-18 14:44:37
|
Hello, I need to perform the act in the subject "Updating lower bound - of a minimization problem- during search" in my algorithm. Specifically, when all variables are instantiated (i mean, at a leaf node), i want to develop a new solution from it heuristically and update the upper bound of the problem. I am an ILOG user and couldn't achieve the relevant update. I have read the user manuel of Eclipse's last release but I am not sure if I can do what I want. I appreciate if you can help me on this subject. Best, İstenç |
From: Joachim S. <jsc...@co...> - 2018-11-14 19:01:04
|
Hi Giuseppe, Gecode (currently 4.4.0) is fully included with ECLiPSe. However, we cannot distribute Gurobi, which is a commercial solver. Our if_gurobi50.tgz package only contains the interface layer, so you have to obtain libgurobi50.so from Gurobi directly. Regards, Joachim On 14/11/2018 17:48, Giuseppe Cota wrote: > Dear ECLiPSe developer, > > I've downloaded and installed ECLiPSe. Just to be sure, are Gecode and Gurobi > alredy distributed with ECLiPSe (i think that gurobi's library are in > if_gurobi50.tgz)? Or do I need to install them? > > Moreover there is an issue when trying to use gurobi. > > If I execute: > > lib(eplex_gurobi). > > an error occurs (output below): > > loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such > file or directory > problem while trying to load a shared library in load("x86_64_linux/segurobi50.so") > loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such > file or directory > problem while trying to load a shared library in load("x86_64_linux/segurobi50.so") > Eplex error: Could not find any of the solver interfaces: > [solver(gurobi, B), solver(gurobi, B)] > Eplex error: No solver loaded in lp_get_license > eplex.eco loaded in 0.11 seconds > eplex_gurobi.eco loaded in 0.00 seconds > > Yes (0.12s cpu) > > If instead I execute: > > lib(eplex). > lib(eplex_gurobi). > > No error occurs. > > Best regards, > Giuseppe Cota > > -- > Giuseppe Cota > Postdoctoral Research Fellow > DE - Dipartimento di Ingegneria > Università di Ferrara > Via Saragat 1, 44122, Ferrara, Italy > Tel. +39 0532974827 > > > > _______________________________________________ > ECLiPSe-CLP-Users mailing list > ECL...@li... > https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users > |
From: Giuseppe C. <ct...@un...> - 2018-11-14 18:18:18
|
Dear ECLiPSe developer, I've downloaded and installed ECLiPSe. Just to be sure, are Gecode and Gurobi alredy distributed with ECLiPSe (i think that gurobi's library are in if_gurobi50.tgz)? Or do I need to install them? Moreover there is an issue when trying to use gurobi. If I execute: lib(eplex_gurobi). an error occurs (output below): loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such file or directory problem while trying to load a shared library in load("x86_64_linux/segurobi50.so") loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such file or directory problem while trying to load a shared library in load("x86_64_linux/segurobi50.so") Eplex error: Could not find any of the solver interfaces: [solver(gurobi, B), solver(gurobi, B)] Eplex error: No solver loaded in lp_get_license eplex.eco loaded in 0.11 seconds eplex_gurobi.eco loaded in 0.00 seconds Yes (0.12s cpu) If instead I execute: lib(eplex). lib(eplex_gurobi). No error occurs. Best regards, Giuseppe Cota -- Giuseppe Cota Postdoctoral Research Fellow DE - Dipartimento di Ingegneria Università di Ferrara Via Saragat 1, 44122, Ferrara, Italy Tel. +39 0532974827 |
From: Joachim S. <jsc...@co...> - 2018-07-23 11:00:14
|
On 19/07/18 13:57, Giuseppe Cota wrote: > Dear ECLiPSe developers, > > I noticed there exists a Java-ECLiPSe interface and I was thinking it would be > great to have com.parctechnologies.eclipse package available on Maven Central, in > order to ease the development of Java interfaces. Could it be possible to have that? Hi Giuseppe, this seems to be a matter of software distribution rather than development, and would be most efficiently handled by someone who is familiar with the particular infrastructure you are referring to. Would you (or another Java expert) be willing to do this? I'm happy to provide the necessary input from the ECLiPSe-side, of course. Cheers, Joachim |
From: Giuseppe C. <ct...@un...> - 2018-07-19 13:28:22
|
Dear ECLiPSe developers, I noticed there exists a Java-ECLiPSe interface and I was thinking it would be great to havecom.parctechnologies.eclipse package available on Maven Central, in order to ease the development of Java interfaces. Could it be possible to have that? Best regards, Giuseppe |
From: Joachim S. <jsc...@co...> - 2018-05-24 23:46:12
|
On 23/05/18 16:53, Michael Maisuradze via ECLiPSe-CLP-Users wrote: > > Hello, > I am working on a project that is mainly built with eclipse prolog. > Evidently for some part of our project I needed to implement graphical > interface, and started to try with TCL/TK. > > My objective is to call certain prolog predicates from the Graphical Interface, > and then receive the output in TCL/TK in a manner that I would be able to > structure and display the output as an organized table. So far what I could do > is to just redirect the output of prolog to the TCL/TK program window frame. ... > > To get structured data from eclipse to TCL I did as described in the Manual. > > In TCL: > set my_in_channel [ec_queue_create my_out_queue fromec] > set result [ec_read_exdr $my_in_channel] > > In Eclipse: > write_exdr(my_out_queue, [FSPA, SSPA, TSPA,FPPA,SPPA,TPPA] ), > flush(my_out_queue). > > What I wanted to get was the *result* variable in TCL with the list of a data > provided from prolog output. And this should have worked according to embedding > manual. Unfortunately I get an error > Error in startup script: conversion error while reading exdr format > while executing > "ec_read_exdr $my_in_channel" Hi Michael, you are probably trying to read data on the TCL side _before_ it has been written on the ECLiPSe side. You should call ec_read_exdr only from inside a TCL handler that is invoked when data arrives on the channel. Your TCL code should roughly look like this: set my_in_channel [ec_queue_create my_out_queue fromec my_handler] proc my_handler {stream_nr} { set channel [ec_streamnum_to_channel $stream_nr] set result [ec_read_exdr $channel] # do something with $result here! } The my_handler will be invoked every time the ECLiPSe-side flushes my_out_queue. The handler then reads the term that the ECLiPSe-side has written before the flush. Note that all operations here are serialised: 1. ECLiPSe side writes data, which goes into a buffer 2. ECLiPSe side flushes; this transfers control to the TCL side 3. TCL side executes handler, which can read data from the buffer 4. when handler finishes, control returns to ECLiPSe Hope this helps, Joachim |
From: Michael M. <mi...@ya...> - 2018-05-23 16:34:10
|
Hello, I am working on a project that is mainly built with eclipse prolog. Evidently for some part of our project I needed to implement graphical interface, and started to try with TCL/TK. My objective is to call certain prolog predicates from the Graphical Interface, and then receive the output in TCL/TK in a manner that I would be able to structure and display the output as an organized table. So far what I could do is to just redirect the output of prolog to the TCL/TK program window frame. As I read in eclipse documentation: Communication via Queues 5.5.1 From-ECLiPSe to Tcl EXDR (ECLiPSe external data representation, see section 5.8) format for communication. This allows to send and receive structured and typed data To get structured data from eclipse to TCL I did as described in the Manual. In TCL: set my_in_channel [ec_queue_create my_out_queue fromec]set result [ec_read_exdr $my_in_channel] In Eclipse:write_exdr(my_out_queue, [FSPA, SSPA, TSPA,FPPA,SPPA,TPPA] ), flush(my_out_queue). What I wanted to get was the result variable in TCL with the list of a data provided from prolog output. And this should have worked according to embedding manual. Unfortunately I get an error Error in startup script: conversion error while reading exdr format while executing"ec_read_exdr $my_in_channel" When I tried the exact same example described in manual: ECLiPSe: write_exdr(my_out_queue, foo(bar,3)), flush(my_out_queue). Tcl: set result [ec_read_exdr $my_in_channel] The tcl result should have been {foo bar 3}.But I get the same error. How Could I receive desired list in a Tcl Variable? Thanks in advance Sincerely, M.Maisuradze |