WikiProject Computer science (Rated Start-class, Low-importance)
This article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start  This article has been rated as Start-Class on the project's quality scale.
Low  This article has been rated as Low-importance on the project's importance scale.

## Article is completely opaque for anyone who isn't already an expert

Can someone attempt to rewrite this article for benefit of people who aren't already 100% aware of answer set programming is? Relevant examples would be a huge help. — Preceding unsigned comment added by 38.99.133.121 (talk) 18:56, 3 October 2012 (UTC)

## tail/body

"An answer set program is composed of a set of rules, each rules being composed of an head and a tail: 'head <-- body'" is that supposed to be "head <-- tail"?

Actually, it's "body" the correct term; "tail" was my mistake. Changed. - Liberatore(T) 23:03, 12 May 2006 (UTC)

Afaik there are no negations allowed in the head, so my guess is that these examples are wrong Kermesbeere 16:05, 8 January 2007 (UTC)

V. Lifschitz (2002) disagrees with you: "The negation as failure symbol is allowed to occur in the head of a rule, and not only in the body as in traditional logic programming." (page 41, lines 8-9). If don't have access to that article see [1]. Tizio 17:00, 8 January 2007 (UTC)
Negation as failure in the head may well be permissible in the language discussed in that paper, but that should be considered as an extension -- and not part of the usual syntax for answer set programs Zootalures 17:59, 18 February 2007 (UTC)

Either way, negation as failure is currently not defined in the article at all. The "not" symbol is used in some of the examples, but is nowhere defined. See Stable model semantics. 141.157.47.37 (talk) 11:59, 26 May 2009 (UTC)

## Start of Clean up

I've made a go at cleaning up the article a bit, although it's still not perfect. The Math sections which were in the syntax section before looked messy (and IMHO the example rules given were not representative of the "standard" ASP syntax (see for instance [2] for a good overview of the "basic" syntax and a number of extensions).

I'd prefer it if the rule sections that i've added were in math blocks using the "formal" syntax (i.e. $\neg$ and $\leftarrow$instead of - and :- , but the latex converter was a bit fickle and it was hard to get a given program to look consistent (parts seemed to be translated to png, and others to HTML, which looked ugly).

It would be nice to see some coverage of disjunction and choice in the head (i.e. dlv head choice and smodels choice rules), also something about variable expansion, and function symbols (and possibly how they are considered in relation to predicates in prolog)

Also there should probably be some context and history relating to Datalog but I'm not well enough versed to provide this.

There should also be a link to or merge with Stable model semantics.

Zootalures 00:41, 19 February 2007 (UTC)

From stable model semantics you get both ASP (credulous reasoning) and Well-founded Semantics as implemented e.g. by XSB using the SLG-WAM which are two competing ways to represent knowledge. ASP is not synonymous with stable models. --anon user

Hello! Ricardo.6ik 01:39, 19 June 2007 (UTC)

I have significantly extended Stable model semantics, and I plan to add a few more sections about constructs used in ASP -- classical negation, constraints, disjunctive rules, choice rules and aggregates. Then that article will completely supersede the current version of Answer set programming. Here is my proposal: let's rewrite Answer set programming from scratch, with a different emphasis. It will be about ASP as a programming methodology, about applications of stable models and answer set solvers, such as smodels, to knowledge representation and search. For theoretical background related to stable models, the reader will be referred to Stable model semantics.

That would require that we replace the current version of Answer set programming by a new stub. If there are no objections then I'll try to do that. Vlifschitz 20:54, 7 September 2007 (UTC)

The earlier version is replaced by a new stub, with apologies to the editors who have invested their time in cleaning up the original text. Vlifschitz 19:03, 3 October 2007 (UTC)

## The computational process

It would be useful to have more information in the article about the computational process. Otherwise, it is hard to be sure that answer set programs are really declarative. The link to the DPLL algorithm does not give enough information about the treatment of negation.136.187.112.90 (talk) 02:22, 25 March 2008 (UTC)

## confused!

The article says:

1{p,q,r}2.

This rule says: choose at least 1 of the atoms $p,q,r$, but not more than 2. The meaning of this rule under the stable model semantics is represented by the propositional formula

$(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r)$
$\land\,(p\lor q\lor r)\land\neg(p\land q\land r).$

Yet the answer contains p,q, and r in at least 2 of the clauses! Please clarify. Perhaps an example of 1{p,q,r}3 or something would help.

72.48.91.117 (talk) 15:32, 21 April 2010 (UTC)

It is not the number or size of clauses that matters but the assignment of true or false to p, q and r such that the formula is satisfied. Let's consider satisfying none of p, q and r: for the first three clauses, that works but then we can't satisfy the fourth clause. Let's consider each of p, q and r: for the first four clauses, that works but then we can't satisfy the last clause. Satisfying the formula with 1 or 2 of p, q and r is possible however. - Simeon (talk) 01:45, 9 June 2010 (UTC)
Another remark on this example: the first line of the formula does not make any difference, since that part is a tautology, i.e. it evaluates always to true. Only the second part is needed:
$(p\lor q\lor r)\land\neg(p\land q\land r).$
Eray (talk) 08:22, 16 July 2013 (UTC)

## Relationship to QBF ?

This is a naive or stupid question or both: but what exactly is the relationship to QBF? I noticed, just from hands-on experience writing some ASP programs, that most clauses/sentences that one writes are of the form "there exists" (i.e. if this is true(i.e. exists) then that is true (i.e. exists)), while aggregates tend to have a "for-all" flavor to them. Now, one can't nest these arbitrarily (clasp/clingo spews an error about "unstratified predicates" or something like that), but still, ASP seems to somehow have a there-exists/for-all-like structure, nested to (no more than) one level. Can this be expressed formally? Or perhaps in the stable model semantics article? linas (talk) 04:38, 25 April 2012 (UTC)
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 6, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.8377949595451355, "perplexity": 1490.7166428699961}, "config": {"markdown_headings": true, "markdown_code": false, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2015-48/segments/1448398461132.22/warc/CC-MAIN-20151124205421-00060-ip-10-71-132-137.ec2.internal.warc.gz"}