Search Results

Search found 217 results on 9 pages for 'sicstus prolog'.

Page 2/9 | < Previous Page | 1 2 3 4 5 6 7 8 9  | Next Page >

  • Prolog, check if term is power of 2

    - by Riku
    i have written following code, which should work with my logic, but it does not. I should check if given term is power of two. For example s(s(s(nul))) should return false, s(s(s(s(nul))) should return true. substractWhileY(X,0,rezult). substractWhileY(s(X),Y,rezult):- Y > 0, number is 1, substractWhileY(X,Y - number, rezult). degreeOftwo(X):- substractWhileY(X,2,rezult), pagalba(X, 2, rezult). calculateAnswer(X, currentCounter, currentValue):- currentCounter is currentCounter * 2, substractWhileY(currentValue, currentCounter , rezult), rezult\= null, calculateAnswer(X, currentCounter , rezult). My idea was to check if given therm is degree of any two and if it is not than it is not the degree of two. With numbers it should work like this. For example i give number 8. First time it checks if 8 - 2 = 0. second time if 8 - 4 = 0. third time if 8 - 8 = 0. so the 8 id power of two. Maybe other solution would work better, so thanks for any help.

    Read the article

  • Prolog - How do you distinguish between just a string, and a variable? [closed]

    - by Mr Prolog
    When you are querying a Prolog database, often you will use terms that start with an uppercase letter as your variables. However, let's say that one of the constraints on your query is that a person's location must be "Dallas", and you want to query all the information in the database who meet those specifications. How would do you correctly make sure that Dallas is not interpreted as a variable to store a value in, and is interpreted as a string instead, for usage as a constraint on the query?

    Read the article

  • Mac OS X: Trying to install prolog using fink

    - by sixtyfootersdude
    I am trying to install prolog on Mac OS X 10.4.11. I just downloaded fink because I think that that should help me and I am trying to get either: Package swi-prolog-5.8.1-2 or Package gprolog-1.3.1-1 But I am not having any luck. Here is what I was doing: % fink install swi-prolog-5.8.1-2 Information about 1723 packages read in 0 seconds. Failed: no package found for specification 'swi-prolog-5.8.1-2'! % Question 1: Are these what I want to download? Question 2: Why isn't fink working?

    Read the article

  • plld Prolog C++

    - by H.J. Miri
    I have a large Prolog program with lots of predicates. I need to connect to this Prolog code from C++ (VS2008) to obtain certain query results. So I am not trying to embed Prolog in C++ as a logicasl engine, but for my C++ program to connect to my Prolog code, consult (compile) it, obtain query results, and pass them back to C++. Running the following command at the VS2008 Command Prompt generates so many errors: plld -o myprog.exe mycpp.cpp mypl.pl Is there any way I can get my C++ program to consult my Prolog program, by including a command or makefile, etc...? I am aware that if you use VS2008, you are better off not using plld, so I am trying to include everything in one master C++ program, then press F5 to build and compile, and then call Prolog, then C++, and so on... Cheers,

    Read the article

  • Prolog Beginner: How to unify with arithmentic comparison operators or how to get a set var to range

    - by sixtyfootersdude
    I am new to prolog. I need to write an integer adder that will add numbers between 0-9 to other numbers 0-9 and produce a solution 0-18. This is what I want to do: % sudo code add(in1, in2, out) :- in1 < 10, in2 < 10, out < 18. I would like to be able to call it like this: To Check if it is a valid addition: ?- add(1,2,3). true ?- add(1,2,4). false With one missing variable: ?- add(X,2,3). 1 ?- add(1,4,X). 5 With multiple missing variables: ?-add(X,Y,Z). % Some output that would make sense. Some examples could be: X=1, Y=1, Z=2 ; X=2, Y=1, Z=3 ...... I realize that this is probably a pretty simplistic question and it is probably very straightforward. However cording to the prolog tutorial I am using: "Unlike unification Arithmetic Comparison Operators operators cannot be used to give values to a variable. The can only be evaluated when every term on each side have been instantiated."

    Read the article

  • Prolog Beginner: How to unify with arithmentic cmparison operators or how to get a set var to range

    - by sixtyfootersdude
    I am new to prolog. I need to write an integer adder that will add numbers between 0-9 to other numbers 0-9 and produce a solution 0-18. This is what I want to do: add(in1, in2, out) :- in1 < 10, in2 < 10, out < 18. I would like to be able to call it like this: To Check if it is a valid addition: ?- add(1,2,3). true ?- add(1,2,4). false With one missing variable: ?- add(X,2,3). 1 ?- add(1,4,X). 5 With multiple missing variables: ?-add(X,Y,Z). % Some output that would make sense. Some examples could be: X=1, Y=1, Z=2 ; X=2, Y=1, Z=3 ...... I realize that this is probably a pretty simplistic question and it is probably very straightforward. However cording to the prolog tutorial I am using: "Unlike unification Arithmetic Comparison Operators operators cannot be used to give values to a variable. The can only be evaluated when every term on each side have been instantiated."

    Read the article

  • Simple prolog program. Getting error: >/2: Arguments are not sufficiently instantiated

    - by user1279812
    I made a prolog program posAt(List1,P,List2) that tests whether the element at position P of List1 and List2 are equal: posAt([X|Z],1,[Y|W]) :- X=Y. posAt([Z|X],K,[W|Y]) :- K1, Kr is K - 1, posAt(X,Kr,Y). When testing: ?- posAt([1,2,3],X,[a,2,b]). I expected an output of X=2 but instead I got the following error: ERROR: /2: Arguments are not sufficiently instantiated Why am I getting this error?

    Read the article

  • Simple question - XSB Prolog

    - by KP65
    Hello! I'm diving into the world of prolog headfirst but I seem to have hit shallow water! I'm looking at database manipulation in prolog with regards to this tutorial:Learn Prolog Now! It states that I can see my database by entering listing So i tried it and it should basically output everything in my .P file(facts, rules), but this is what i get, here are my sequence of commands: ? consult('D:\Prolog\testfile.P'). [testfile.P loaded] ? listing. library_directory(C:blahblahpathtoXSB) library_directory(C:blahblahXSBpath) {this is listed around 5 times)} shouldn't this command display what is in testfile.P, according to the tutorial? also, after consult testfile.P i should be ableto use assert to add more facts but it doesnt actually change anything in the testfile.P..? any ideas

    Read the article

  • Developing Prolog on Linux

    - by Andrew Bolster
    Dont know whether this belongs in SO or SF I am taking an AI course this semester and it requires fairly heavy use of Prolog. I've dealt with using the provided windows IDE under WINE on the laptop and within VM on the desktop. It all seems too awkward to me, so does anyone know what prolog linux IDE's are out there? (And how to set up prolog nativly under linux)

    Read the article

  • Reversible numerical calculations in Prolog

    - by user8472
    While reading SICP I came across logic programming chapter 4.4. Then I started looking into the Prolog programming language and tried to understand some simple assignments in Prolog. I found that Prolog seems to have troubles with numerical calculations. Here is the computation of a factorial in standard Prolog: f(0, 1). f(A, B) :- A > 0, C is A-1, f(C, D), B is A*D. The issues I find is that I need to introduce two auxiliary variables (C and D), a new syntax (is) and that the problem is non-reversible (i.e., f(5,X) works as expected, but f(X,120) does not). Naively, I expect that at the very least C is A-1, f(C, D) above may be replaced by f(A-1,D), but even that does not work. My question is: Why do I need to do this extra "stuff" in numerical calculations but not in other queries? I do understand (and SICP is quite clear about it) that in general information on "what to do" is insufficient to answer the question of "how to do it". So the declarative knowledge in (at least some) math problems is insufficient to actually solve these problems. But that begs the next question: How does this extra "stuff" in Prolog help me to restrict the formulation to just those problems where "what to do" is sufficient to answer "how to do it"?

    Read the article

  • Numerical calculations in Prolog

    - by user8472
    While reading SICP I came across logic programming chapter 4.4. Then I started looking into the Prolog programming language and tried to understand some simple assignments in Prolog. I found that Prolog seems to have troubles with numerical calculations. Here is the computation of a factorial in standard Prolog: f(0, 1). f(A, B) :- A > 0, C is A-1, f(C, D), B is A*D. The issues I find is that I need to introduce two auxiliary variables (C and D), a new syntax (is) and that the problem is non-reversible (i.e., f(5,X) works as expected, but f(X,120) does not). Naively, I expect that at the very least C is A-1, f(C, D) above may be replaced by f(A-1,D), but even that does not work. My question is: Why do I need to do this extra "stuff" in numerical calculations but not in other queries? I do understand (and SICP is quite clear about it) that in general information on "what to do" is insufficient to answer the question of "how to do it". So the declarative knowledge in (at least some) math problems is insufficient to actually solve these problems. But that begs the next question: How does this extra "stuff" in Prolog help me to restrict the formulation to just those problems where "what to do" is sufficient to answer "how to do it"?

    Read the article

  • Integrating Prolog with C#

    - by TK
    Does anyone know of a nice (and preferably free) way to integrate Prolog and C#? Im looking to create a Prolog dll or similar to call from my managed code, and retrieve an answer once all the processing has been complete. Im looking for it to be predominantly one sided (c# calls Prolog). I have seen this question which talks about Prologs real world usage but I was wondering if anyone had either any experience with c# & Prolog? or a nice tutorial/article?

    Read the article

  • Prolog Beginner: How to make unique values for each Variable in a predicate.

    - by sixtyfootersdude
    I have a prolog predicate: DoStuff( [A|B] ) :- <Stuff that I do> ... </Stuff that I do> It is all done except it needs to do return unique values. Ie if you do: ?- DoStuff(A,B,C,D). it should return: A=1; B=2; C=3; D=4. (Or something similar, the key point is that all of the values are unique). However you should be able to do this too: ?- DoStuff(A,A,B,B). And still get a valid answer. Ie: A=1; B=2. How can I do this? What I was planning on doing was something like this: DoStuff( [A|B] ) :- <Stuff that I do> ... </Stuff that I do> unique([A|B]). unique([]). unique([A|B]) :- A is not B. However I think that will make DoStuff([A,A,B]) not work because not all values will be unique.

    Read the article

  • Prolog Beginner: Trivial Example that I cannot get to work.

    - by sixtyfootersdude
    I have some prolog. The lessThanTen and example predicates work as expected however the exam predicate does not work. lessThanTen(9). lessThanTen(8). lessThanTen(7). lessThanTen(6). lessThanTen(5). lessThanTen(4). lessThanTen(3). lessThanTen(2). lessThanTen(1). lessThanTen(0). example(X) :- X is 5. exam(X) :- X is lessThanTen(Y). Here is the output: % swipl ... ?- [addv1]. Warning: /.../addv1.pl:17: Singleton variables: [Y] % addv1 compiled 0.00 sec, 1,484 bytes true. ?- lessThanTen(X). X = 9 ; X = 8 ; X = 7 ; ... ?- example(X). X = 5. ?- exam(X). ERROR: is/2: Arithmetic: `lessThanTen/1' is not a function ?- exam(5). ERROR: is/2: Arithmetic: `lessThanTen/1' is not a function I am thinking that the warning I am getting is pretty key.

    Read the article

  • How to avoid using the plld.exe utility in VS2008 (for linking C++ and Prolog codes)

    - by Joshua Green
    Here is my code in its entirety: Trying "listing." at the Prolog prompt that pops up when I run the program confirms that my Prolog source code has been loaded (consulted). #include <iostream> #include <fstream> #include <string> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <stdafx.h> using namespace std; #include "Windows.h" #include "ctype.h" #include "SWI-cpp.h" #include "SWI-Prolog.h" #include "SWI-Stream.h" int main(int argc, char** argv) { argc = 4; argv[0] = "libpl.dll"; argv[1] = "-G32m"; argv[2] = "-L32m"; argv[3] = "-T32m"; PL_initialise(argc, argv); if ( !PL_initialise(argc, argv) ) PL_halt(1); PlCall( "consult(swi('plwin.rc'))" ); PlCall( "consult('hello.pl')" ); PL_halt( PL_toplevel() ? 0 : 1 ); } So this is how to load a Prolog source code (hello.pl) at run time into VS2008 without having to use plld at the VS command prompt.

    Read the article

  • Embedded Prolog Interpreter/Compiler for Java

    - by Sami
    I'm working on an application in Java, that needs to do some complex logic rule deductions as part of its functionality. I'd like to code my logic deductions in Prolog or some other logic/constraint programming language, instead of Java, as I believe the resulting code will be significantly simpler and more maintainable. I Googled for embedded Java implementations on Prolog, and found number of them, each with very little documentation. My (modest) selection criteria are: should be embeddable in Java (e.g. can be bundled up with my java package instead of requiring any native installations on external programs) simple interface to use from Java (for initiating deductions, inspecting results, and adding rules) come with at least a few examples on how to use it doesn't necessarely have to be Prolog, but other logic/constraint programming languages with the above criteria would suit my needs, too. What choices do I have and what are their advantages and disadvantages?

    Read the article

  • Is this a good implementation of a loop in Prolog?

    - by Carles Araguz
    First of all, let me tell you that this happens to be the first time I ask something here, so if it's not the right place to do so, please forgive me. I'm developing a rather complex software that has a Prolog core implementing a FSM. Since I don't want it to stop (ever), I'm trying to write a good loop-like predicate that would work using Prolog's recursion. After a few unsuccessful tries (mainly because of stack problems) I ended up having something similar to this: /* Finite State Transition Network */ transition(st0,evnt0,st1). transition(st1,evnt1,st2). transition(st2,evnt2,st0). fsm_state(state(st0),system(Energy,ActivePayloads),[]) :- /* ... */ transition(st0,evnt0,NextState), !, fsm_state(state(NextState),system(Energy,ActivePayloads),[]). fsm_state(state(st1),system(Energy,ActivePayloads),[]) :- /* ... */ transition(st1,evnt1,NextState), !, fsm_state(state(NextState),system(Energy,ActivePayloads),[0,1,2]). fsm_state(state(st2),system(Energy,ActivePayloads),[P|Params]) :- /* ... */ transition(st2,evnt2,NextState), !, fsm_state(state(NextState),system(Energy,ActivePayloads),[]). start :- Sys = system(10,[]), fsm_state(state(s0),Sys,[]). Is this a good approach?

    Read the article

  • Real world Prolog usage

    - by Hank
    Many study Prolog in college, but I have personally not come in contact with it professionally. The traditional examples given are AI and expert system applications, but what have you used it for and what made Prolog a suitable language for the task?

    Read the article

  • Breadth-First in Prolog

    - by Ricardo
    What is the general idea of using breadth-first over the default depth-first search scheme in Prolog? Not taking infinite branches? Is there any general way to use breadth-first in Prolog? I've been googling around and I didn't find too much useful info for a novice.

    Read the article

  • Prolog returns Out = _G431 when it suppose to return a list of lists

    - by Mandah
    createSchedule([[math109]], fall, Out). [[cs485, cs485], [cs355, cs355, cs462, cs462, cs462], [cs345, cs345, cs352, cs352, cs352, cs362, cs362, cs362, cs396, cs396, cs396], [cs330, cs330, cs330], [cs255, cs255, cs255, cs268, cs268], [math114, cs245, cs245], [math112, cs145, cs146], [math109]] Out = _G431 this is what prolog returns and the list of lists is shown by using write(Out) in prolog. Any ideas why it is showing this? Thanks

    Read the article

< Previous Page | 1 2 3 4 5 6 7 8 9  | Next Page >