User talk:Robert Kowalski/sandbox

The Initial Overview
Discussion of ideas for the initial section ButterBookie (talk) 16:10, 25 October 2023 (UTC)


 * I wonder if the syntax of upper-case for variables ought to be mentioned with rule for grandparent. Perhaps the use of the letters near the end of the alphabet makes it unnecessary? ButterBookie (talk) 16:12, 25 October 2023 (UTC)
 * Hm... You are right. The article does not explain the syntax very well. It does not even mention variables, but relies on the reader's intuitive understanding of the examples. The functional programming article is even worse. It contains almost no examples at all. Robert Kowalski (talk) 10:33, 26 October 2023 (UTC)

NAF section
Discussion of what should be in the NAF section. ButterBookie (talk) 16:14, 25 October 2023 (UTC)


 * I don't really like the flying bird example as the first one for negation. The "abnormal" predicate name is too general; it should be something more like abnormal_bird.  But even with that change I don't find it a cogent example.  I would rather have something more traditionally "database-y".  Maybe something like not enrolled, or not taking_class_with.  These would be obvious things to want to ask in a very down-to-earth database application.  And I think it shows the basic importance of NAF without having to resort to an "AI-ish" example that, to me, feels rather contrived. ButterBookie (talk) 16:22, 25 October 2023 (UTC)
 * Good point. The flying birds example is mainly of historic interest. Moreover, as you say, it is associated with symbolic AI applications. This highlights a dilemma that LP is not only a programming language, but also a database language and an AI language. It is unfair, therefore, to compare it only with other programming languages, other database languages or other AI knowledge representation and problems solving languages.
 * Ideally, the LP Wikipedia page should provide a balanced coverage of all three of these areas.
 * The programming language and database areas have obvious practical applications, whereas the KR and PS area does not so obviously have practical applications, especially these days with the focus on subsymbolic AI.
 * Maybe an example inspired by legal applications would help to redress the balance, especially given the importance of rules and exceptions in the law.
 * In the meanwhile, perhaps we could leave the flying birds example, but with, say not not_fly(X), instead of abnormal(X). We can then replace it with a better example a little later. Robert Kowalski (talk) 10:29, 26 October 2023 (UTC)
 * What you say makes good sense. I did have a slightly more developed database example, though:
 * recommended_class_for(Class,Student) :- required(Class), student(Student), taken(Student,Class).
 * (Yeah, the student(Student) requirement isn't great....) ButterBookie (talk) 13:58, 26 October 2023 (UTC)
 * Here is a version of an example that has been used in the literature on argumentation for legal applications:
 * Robert Kowalski (talk) 18:33, 26 October 2023 (UTC)
 * Very nice example. One thought would be to simplify it slightly by incorporating the second argument of should_receive_sanction into that name, e.g. unary should_receive_punishment and should_receive_rehabilitation.  That would focus more on the negation, and wouldn't introduce the "mode of sanction" as an object.  But then you couldn't query for it, like you do.  I guess it depends on how simple an example you want.  I do like the nested negation.  And I think this is much better than tweety to introduce negation. ButterBookie (talk) 18:44, 26 October 2023 (UTC)