# Compiling s(CASP)

**URL:** <https://swi-prolog.discourse.group/t/compiling-s-casp/4387>\
**Category:** Help!\
**Created:** [September 5, 2021, 2:01pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387 "2021-09-05T14:01:37Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![CapelliC](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/capellic/32/17_2.png) [@CapelliC](https://swi-prolog.discourse.group/u/CapelliC)\
**Post date:** [September 5, 2021, 2:01pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/1 "2021-09-05T14:01:37Z")

</div>

Hi Jan

Sorry to bother, I was curious about s(CASP), then I tried

```prolog
$ git clone https://github.com/JanWielemaker/sCASP.git
$ cd sCASP
$ make
$ swipl -O -o scasp -c prolog/scasp/main.pl
% Disabled autoloading (loaded 41 files)
[Thread 1 (main) at Sun Sep 5 14:56:25 2021] /home/carlo/swipl-devel/src/pl-comp.c:4924: mark_bvar_access___LD: Assertion failed: max >= 0
C-stack trace labeled "assert_fail":
  [0] save_backtrace() at /home/carlo/swipl-devel/src/os/pl-cstack.c:333 [0x7f91a90d5908]
  [1] __assert_fail() at /home/carlo/swipl-devel/src/pl-assert.c:103 [0x7f91a907a757]
  [2] decompile() at /home/carlo/swipl-devel/src/pl-comp.c:5457 [0x7f91a900980f]
  [3] clause() at /home/carlo/swipl-devel/src/pl-comp.c:6605 [0x7f91a9009a52]
  [4] pl_clauseva_va() at /home/carlo/swipl-devel/src/pl-comp.c:6663 [0x7f91a900a042]
  [5] PL_next_solution___LD() at /home/carlo/swipl-devel/src/pl-vmi.c:4754 [0x7f91a8fe8060]
  [6] query_loop() at /home/carlo/swipl-devel/src/pl-pro.c:155 [0x7f91a902cf7c]
  [7] prologToplevel() at /home/carlo/swipl-devel/src/pl-pro.c:499 [0x7f91a902d84b]
  [8] PL_initialise() at /home/carlo/swipl-devel/src/pl-init.c:1215 [0x7f91a9071dc8]
  [9] swipl(+0x6b6) [0x4006b6]
  [10] __libc_start_main() at /build/glibc-S7Ft5T/glibc-2.23/csu/../csu/libc-start.c:325 [0x7f91a8c03840]
  [11] swipl(+0x709) [0x400709]
Makefile:5: recipe for target 'compile_scasp' failed
make: *** [compile_scasp] Aborted (core dumped)

```

I’m using: SWI-Prolog version 8.3.29, compiled today from source, but maybe I have to upgrade gcc ?

```prolog
$ gcc -v
...
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~16.04)

```

BTW, the system seems to work if used interactively (i.e. consulting prolog/scasp.pl, **not** prolog/scasp/main.pl), that is

```prolog
$ swipl prolog/scasp.pl
?- scasp_load('/home/carlo/test/prolog/sCASP/examples/queens.pl').
true.

?- ?? nqueens(4, Q).
Answer 1	(in [37088] ms):

JUSTIFICATION_TREE:
nqueens(4,[q(1,2),q(2,4),q(3,1),q(4,3)]) :-
    _nqueens(4,4,[],[q(1,2),q(2,4),q(3,1),q(4,3)]) :-
   ....

```

I would also like to know what the small `s` in `s(CASP)` means. Does it stand for symbolic ?

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [September 5, 2021, 3:05pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/2 "2021-09-05T15:05:12Z")

</div>

> [@CapelliC](#):
>
> I’m using: [SWI-Prolog](https://www.swi-prolog.org/pldoc/doc_for?object=manual) version 8.3.29, compiled today from source, but maybe I have to upgrade gcc ?

Reproduces. Side effect of the fix for dealing with inline unification for head terms ☹ Will look tomorrow.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [September 6, 2021, 6:43am UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/3 "2021-09-06T06:43:41Z")

</div>

Fixed. See also [Creating a qlf file gives an error - #2 by jan](https://swi-prolog.discourse.group/t/creating-a-qlf-file-gives-an-error/4389/2)

---

<div class="post-metadata">

**Author:** ![JasonMorris](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jasonmorris/32/3824_2.png) [@JasonMorris](https://swi-prolog.discourse.group/u/JasonMorris)\
**Post date:** [November 2, 2021, 4:03pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/4 "2021-11-02T16:03:43Z")

</div>

There was first “answer set programming” [ASP], then there was “stable model answer set programming” which added predicates to the propositions [s(ASP)], and then there was “stable model constraint answer set programming” [s(CASP)].

So the s means “stable model” and the parentheses are in the direction of a pun.

I think. 🙂

---

<div class="post-metadata">

**Author:** ![CapelliC](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/capellic/32/17_2.png) [@CapelliC](https://swi-prolog.discourse.group/u/CapelliC)\
**Post date:** [November 2, 2021, 4:32pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/5 "2021-11-02T16:32:34Z")

</div>

Thanks @JasonMorris for your answer. I considered ‘stable model’ as candidate, but since ASP - as described from [Wikipedia](https://en.wikipedia.org/wiki/Answer_set_programming) - is already based on stable models, maybe there is more.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [November 2, 2021, 4:47pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/6 "2021-11-02T16:47:03Z")

</div>

> [@JasonMorris](#):
>
> So the s means “stable model” and the parentheses are in the direction of a pun.

I understood the s() is the pun, referring to successor (can’t find the name of the s(0) s(s(0)), numbers). So, s(ASP) to ASP is the same as C++ is to C 🙂

---

<div class="post-metadata">

**Author:** ![CapelliC](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/capellic/32/17_2.png) [@CapelliC](https://swi-prolog.discourse.group/u/CapelliC)\
**Post date:** [November 2, 2021, 5:03pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/7 "2021-11-02T17:03:34Z")

</div>

> [@jan](#):
>
> the s() is the pun

Very plausible, thanks.  
I forgot to start my - rusted - sense of humor engine.

---

<div class="post-metadata">

**Author:** ![oskardrums](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/oskardrums/32/3594_2.png) [@oskardrums](https://swi-prolog.discourse.group/u/oskardrums)\
**Post date:** [November 3, 2021, 12:22pm UTC](https://swi-prolog.discourse.group/t/compiling-s-casp/4387/8 "2021-11-03T12:22:44Z")

</div>

> [@jan](#):
>
> I understood the s() is the pun, referring to successor

Here’s some support for this hypothesis from [a lecture by Gupta in 2018](https://youtu.be/nOqO5OlC920?t=3751) 🙂

 ![Screen Shot 2021-11-02 at 20.48.46](https://global.discourse-cdn.com/free1/uploads/swiprolog/original/2X/5/505575c858239ff42a89df782959e3cef281ce8d.jpeg)
