Talk:Relational programming

Latest comment: 9 years ago by Thepigdog in topic Relational model of state.

Yeah I am not happy with the references either. Will work on it.

Discussion edit

The major streams are

  • Logic programming
  • Narrowing
  • miniKaren
  • binary relation

I dont think it is right to have relational programming just link through to logic programming. Logic programming appears to me to be one of the less important forms of relational programming.

I will work on the references, but one possibility is to move the stuff on narrowing elsewhere. But have a short description and link here.

Let me know what you think.

Thepigdog (talk) 03:04, 3 November 2014 (UTC)Reply

How is it "less important" than the other variants? Looking at some bibliometrics on GScholar, we have 37 citations for The Reasoned Schemer, making it the most widely-cited of the references cited at miniKanren, in fact endangering the notability of that topic. By contrast, The Art of Prolog has 2594 citations (and a few more because GScholar didn't deduplicate properly, but the order of magnitude difference is clear). The references cited by Narrowing of algebraic value sets have low citation counts as well, except the book Programming with Constraints, but that's not only about narrowing. QVVERTYVS (hm?) 10:16, 3 November 2014 (UTC)Reply
Aside, miniKanren is called "an embedded Domain Specific Language for logic programming" on its own website. QVVERTYVS (hm?) 10:19, 3 November 2014 (UTC)Reply
Hmmm, I am not going to argue with you. If I did I would point out that logic programming is great for academics but is not good for most practical purposes, because it is simply not flexible enough.
But you win. What do you want?
  • Complete roll back.
  • Further discussion.
  • More citations.
Indicate your wish and I will make it so.
Thepigdog (talk) 10:39, 3 November 2014 (UTC)Reply
Not flexible enough? Seriously, point out any industrial uses of miniKanren or narrowing or other "non-logical" relational programming (apart from SQL, which apparently is not included in the present definition (?)). Logic programming is not exactly mainstream, but I can point out some applications (current and past) at IBM, Boeing, Microsoft and elsewhere.
As for what "I wish", I'm not the boss around here. If you have further references, by all means, cite them or post them here. QVVERTYVS (hm?) 12:48, 3 November 2014 (UTC)Reply
No I don't care about miniKanren, although it is interesting in some ways. I only care about narrowing. Narrowing has hardly got started I know. But the potential is there. I have not found all the references I want.
I know logic programming is powerful and constraint logic programming even more so. In specific situations they are powerful.
But as for being useful to the average hack programmer, never. They are not flexible enough, or easy enough to understand in a particular way. Hack programmers work by modifying code, without understanding the broader context.
If you want me to move the narrowing stuff to another page that can be done, either now or later. I give you the power to decide. I wont dispute it. This is your article. Say what you want and I will agree and it is done.
If you want to roll it back let us do it. Otherwise I suggest we work together to make it better.
Thepigdog (talk) 13:27, 3 November 2014 (UTC)Reply
SQL is OK in some ways. But it is not my main focus.
Thepigdog (talk) 13:46, 3 November 2014 (UTC)Reply
Nothing is "my article". I'm just worried that this page goes against WP:OR (in particular, WP:SYN). For starters, I'm confused as to the definition of relational programming: from what I've read so far, there doesn't seem to be much of a consensus on this. Byrd (p. 6) defines it as "a discipline of logic programming in which every goal is written as a pure relation". LIBRA-style "binary relation programming" (?) seems to be one of the attempts to create functional logic programming (alongside LambdaProlog and other projects, but with less success). QVVERTYVS (hm?) 15:22, 3 November 2014 (UTC)Reply
Hmmm, my definition is where the inputs and outputs are constrained in a way that is symmetric. That is the output or inputs may be determined by the known values.
The mathematical idea of a relation is involved. A relation is regarded as a table of values where there is no limitations on the cardinality of values in columns.
So a function is in general a (1 or many) to one relation. So inverses of functions may not be functions but are relations.
Logic programming deals with relations but the outputs are Boolean and asserted true. But any input can be given a value by a relation.
CLP adds to this the idea of constraints that Stuckey and others worked on but added on top of LP.
Laziness is a key feature for making recursion useful, but LP is based on resolution and is not lazy.
I think true relational programming is implemented by narrowing of value sets. The order of evaluation is based on working backwards from the known values. The order should also minimize combinatorial explosion, which means choosing deductions first with smaller value sets.
Thats the way I see it.
Resolution is a particular technique related to a normal form of boolean expressions. This is a powerful and and important technique but for me it seems wrongly applied in LP.

References edit

Can you suggest ways of finding references online. You are the academic;) I want references on narrowing and constraints, but not related to narrowing in resolution. Actually I don't really have access to a library and find reading off paper difficult (there is no zoom feature). I want to find all papers on true narrowing.

Thepigdog (talk) 15:02, 3 November 2014 (UTC)Reply

Assuming "you" is me: try Google Scholar, MS Academic and CiteseerX. Once you've found a paper, check what it cites and what is citing it. The number of citations is usually a marker of "mainstreamness". Many papers will be available online, but not all (or only behind a paywall). QVVERTYVS (hm?) 15:08, 3 November 2014 (UTC)Reply

Potentials ( need to be read).

Middeldorp, Aart, Satoshi Okui, and Tesuo Ida. "Lazy narrowing: Strong completeness and eager variable elimination. InProceedings of the 20th Colloquium on Trees in Algebra and Programming." Lecture Notes in Computer Science. Springer-Verlag (1995).

seems to be talking about some kind of theorem proving or equation solving

Prehofer, C. "Higher-order narrowing with convergent systems. 4th Int. Conf. Algebraic Methodology and Software Technology, AMAST’95." Lecture Notes in Computer Science 936 (1995).

not sure

Hudak, P., and J. Guzman. A proof-stream. semantics for lazy narrowing. Research Report YALEU/DCS/RR-446, Yale University, Department of Computer Science, 1985.

I think logic programming

I have ordered

  • Programming with Constraints: An introduction
  • By Kimbal Marriott and Peter Stuckey
  • ISBN: 9780262133418

This will take time to arrive and then I need time to read it. I hope it is understandable at my level :( Thepigdog (talk) 11:11, 5 November 2014 (UTC)Reply

Do you ever have that silent wish "If only I was smarter, and had more time to study. So much to learn and understand.". :(:(:(

Relational model of state. edit

  • “the theory of arrays”
  • from SAT modulo theories and earlier verification
  • McCarthy, J. Towards a mathematical science of computation. In IFIP Congress 62 (1962).

Thepigdog (talk) 03:45, 6 November 2014 (UTC)Reply