Re: Ideas on how to transform a prolog program into a clp program

Edison Mera <[email protected]> Thu, 10 Apr 2014 17:12:28 +0200
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <CAKkUgY51UHEu0OMCQi3q=JpyBLO7V0G+2kke4msUx5GvDSJMXA@mail.gmail.com>
You are welcome!
Regarding PDT, I also heard that, however as far as I know, nothing has
been released yet.
May be is only a future project they plan to do, but 1.5 years ago, when I
started in the company I work for (Process Design Center) I can't wait for
too long, and decided to start my own implementation, which nowadays work
reasonable well, but still needs to be improved.
Regards,

Edison.

El 9 de abril de 2014, 17:02, Wouter Beek <[email protected]> escribió:

Hi Edison,

That refactor project looks interesting. Thanks!

PS: I believe the PDT people are working on refactoring support for their
Eclipse-based Prolog editor as well.

---
Cheers!,
Wouter.

E-mail: [email protected]
WWW: www.wouterbeek.com
Tel.: 0647674624


On Wed, Apr 9, 2014 at 4:50 PM, Edison Mera <[email protected]> wrote:

> In this case, you can use the refactoring tool, first install it with:
>
> pack_install('https://github.com/edisonm/refactor.git').
>
> And then run the following commands in the swipl shell:
>
> replace_term(Module:_, A<B, A#<B,[]).
> rshow.              % if you want to see the changes
> rcommit.           % if you are happy with such changes
>
> use rreset if you don't want to apply the changes, but want to modify the
> refactoring rule.
>
> Best Regards,
>
>
> Edison <http://edisonm.com/>
>
>
>
> 2014-04-08 9:20 GMT+02:00 Jan Wielemaker <[email protected]>:
>
> > On 08-04-14 02:38, fybertas wrote:
> > > I've been trying to transform a prolog program into a clp(constraint
> > > logic program): therefore, I need to add finite domain constraints to
> > > variables in the program; I also need to change the operators in the
> > > program to their equivalence in clp (for instance, change "<" into
> > > "#<").
> >
> > Most likely it is not that simple.  For example, clp(fd) doesn't like
> > cuts too much ...  If the program works, it is also not clear what you
> > gain.  It might turn single moded predicates into multi moded ones. If
> > that is what you are after, you could be on the right track.
> >
> > > But I am kind of stuck as to how to implement this using prolog, here
> are
> > > two possible ways IMO:
> > > (1) process the prolog file by term input/output, identify the terms
> and
> > > clauses(which is not very explicit), then perform the above two
> > > transformation.
> >
> > That is done using term_expansion/2 (or maybe just goal_expansion/2) in
> > this case.  E.g.,
> >
> > goal_expansion(A<B, A#<B).
> >
> > > (2) read in the file using "consult", then process the clauses in the
> > > memory, use assert and retract to manipulate clauses.
> >
> > Yes, but the output will look ugly as you loose all variable names
> > and all comments.
> >
> > > (3) Or maybe there are some library that can help me with this?
> >
> > See http://www.swi-prolog.org/pack/list?p=refactor.  It seems the
> > pack is not upgraded regularly.  You can find the github repo by
> > clicking on the author's link (Edison Mera).  There you find recent
> > activity.
> >
> >         Hope this helps
> >
> >                 Cheers --- Jan
> >
> > >
> > > Could someone shed some light on this? I have tried to find tutorials
> on
> > > advanced Prolog programming but couldn't find much.
> > >
> > >
> > >
> > > --
> > > View this message in context:
> >
> http://swi-prolog.996271.n3.nabble.com/Ideas-on-how-to-transform-a-prolog-program-into-a-clp-program-tp14746.html
> > > Sent from the SWI Prolog mailing list archive at Nabble.com.
> > > _______________________________________________
> > > SWI-Prolog mailing list
> > > [email protected]
> > > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
> > >
> > _______________________________________________
> > SWI-Prolog mailing list
> > [email protected]
> > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
> >
> -------------- next part --------------
> HTML attachment scrubbed and removed
>
> _______________________________________________
> SWI-Prolog mailing list
> [email protected]
> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
>
>

Edison <http://edisonm.com/>


2014-04-09 17:02 GMT+02:00 Wouter Beek <[email protected]>:

> Hi Edison,
>
> That refactor project looks interesting. Thanks!
>
> PS: I believe the PDT people are working on refactoring support for their
> Eclipse-based Prolog editor as well.
>
> ---
> Cheers!,
> Wouter.
>
> E-mail: [email protected]
> WWW: www.wouterbeek.com
> Tel.: 0647674624
>
>
> On Wed, Apr 9, 2014 at 4:50 PM, Edison Mera <[email protected]> wrote:
>
>> In this case, you can use the refactoring tool, first install it with:
>>
>> pack_install('https://github.com/edisonm/refactor.git').
>>
>> And then run the following commands in the swipl shell:
>>
>> replace_term(Module:_, A<B, A#<B,[]).
>> rshow.              % if you want to see the changes
>> rcommit.           % if you are happy with such changes
>>
>> use rreset if you don't want to apply the changes, but want to modify the
>> refactoring rule.
>>
>> Best Regards,
>>
>>
>> Edison <http://edisonm.com/>
>>
>>
>>
>> 2014-04-08 9:20 GMT+02:00 Jan Wielemaker <[email protected]>:
>>
>> > On 08-04-14 02:38, fybertas wrote:
>> > > I've been trying to transform a prolog program into a clp(constraint
>> > > logic program): therefore, I need to add finite domain constraints to
>> > > variables in the program; I also need to change the operators in the
>> > > program to their equivalence in clp (for instance, change "<" into
>> > > "#<").
>> >
>> > Most likely it is not that simple.  For example, clp(fd) doesn't like
>> > cuts too much ...  If the program works, it is also not clear what you
>> > gain.  It might turn single moded predicates into multi moded ones. If
>> > that is what you are after, you could be on the right track.
>> >
>> > > But I am kind of stuck as to how to implement this using prolog, here
>> are
>> > > two possible ways IMO:
>> > > (1) process the prolog file by term input/output, identify the terms
>> and
>> > > clauses(which is not very explicit), then perform the above two
>> > > transformation.
>> >
>> > That is done using term_expansion/2 (or maybe just goal_expansion/2) in
>> > this case.  E.g.,
>> >
>> > goal_expansion(A<B, A#<B).
>> >
>> > > (2) read in the file using "consult", then process the clauses in the
>> > > memory, use assert and retract to manipulate clauses.
>> >
>> > Yes, but the output will look ugly as you loose all variable names
>> > and all comments.
>> >
>> > > (3) Or maybe there are some library that can help me with this?
>> >
>> > See http://www.swi-prolog.org/pack/list?p=refactor.  It seems the
>> > pack is not upgraded regularly.  You can find the github repo by
>> > clicking on the author's link (Edison Mera).  There you find recent
>> > activity.
>> >
>> >         Hope this helps
>> >
>> >                 Cheers --- Jan
>> >
>> > >
>> > > Could someone shed some light on this? I have tried to find tutorials
>> on
>> > > advanced Prolog programming but couldn't find much.
>> > >
>> > >
>> > >
>> > > --
>> > > View this message in context:
>> >
>> http://swi-prolog.996271.n3.nabble.com/Ideas-on-how-to-transform-a-prolog-program-into-a-clp-program-tp14746.html
>> > > Sent from the SWI Prolog mailing list archive at Nabble.com.
>> > > _______________________________________________
>> > > SWI-Prolog mailing list
>> > > [email protected]
>> > > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
>> > >
>> > _______________________________________________
>> > SWI-Prolog mailing list
>> > [email protected]
>> > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
>> >
>> -------------- next part --------------
>> HTML attachment scrubbed and removed
>>
>> _______________________________________________
>> SWI-Prolog mailing list
>> [email protected]
>> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
>>
>>
>
-------------- next part --------------
HTML attachment scrubbed and removed