diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43c48d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +Yap-5.1.3.tar.gz +chr_translate_bootstrap1.pl +chr_translate_bootstrap2.pl +chr_translate.pl +guard_entailment.pl diff --git a/Yap-5.1.1-config.sub.patch b/Yap-5.1.1-config.sub.patch new file mode 100644 index 0000000..b76e557 --- /dev/null +++ b/Yap-5.1.1-config.sub.patch @@ -0,0 +1,1059 @@ +diff -Naur Yap-5.1.1.orig/config.sub Yap-5.1.1/config.sub +--- Yap-5.1.1.orig/config.sub 2001-06-11 17:12:07.000000000 +0200 ++++ Yap-5.1.1/config.sub 2009-03-01 05:26:18.000000000 +0100 +@@ -1,9 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + # Free Software Foundation, Inc. + +-timestamp='2001-05-30' ++timestamp='2009-02-03' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -21,15 +22,17 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, +-# Boston, MA 02111-1307, USA. +- ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. ++# + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + +-# Please send patches to . ++ ++# Please send patches to . Submit a context ++# diff and a properly formatted ChangeLog entry. + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -69,8 +72,8 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -82,11 +85,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -98,7 +101,7 @@ + *local*) + # First pass through any local machine types. + echo $1 +- exit 0;; ++ exit ;; + + * ) + break ;; +@@ -117,7 +120,10 @@ + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) ++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ ++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ kopensolaris*-gnu* | \ ++ storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; +@@ -143,7 +149,7 @@ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis) ++ -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; +@@ -157,9 +163,21 @@ + os=-vxworks + basic_machine=$1 + ;; ++ -chorusos*) ++ os=-chorusos ++ basic_machine=$1 ++ ;; ++ -chorusrdb) ++ os=-chorusrdb ++ basic_machine=$1 ++ ;; + -hiux*) + os=-hiuxwe2 + ;; ++ -sco6) ++ os=-sco5v6 ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -176,6 +194,10 @@ + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; ++ -sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -215,26 +237,60 @@ + case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. +- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ +- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ +- | pyramid | mn10200 | mn10300 | tron | a29k \ +- | 580 | i960 | h8300 \ +- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ +- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ +- | hppa64 \ +- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ +- | alphaev6[78] \ +- | we32k | ns16k | clipper | i370 | sh | sh[34] \ +- | powerpc | powerpcle \ +- | 1750a | dsp16xx | pdp10 | pdp11 \ +- | mips16 | mips64 | mipsel | mips64el \ +- | mips64orion | mips64orionel | mipstx39 | mipstx39el \ +- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ +- | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ +- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ +- | v850 | c4x \ +- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ +- | pj | pjl | h8500 | z8k) ++ 1750a | 580 \ ++ | a29k \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ ++ | bfin \ ++ | c4x | clipper \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | fido | fr30 | frv \ ++ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | i370 | i860 | i960 | ia64 \ ++ | ip2k | iq2000 \ ++ | lm32 \ ++ | m32c | m32r | m32rle | m68000 | m68k | m88k \ ++ | maxq | mb | microblaze | mcore | mep | metag \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64el \ ++ | mips64octeon | mips64octeonel \ ++ | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipstx39 | mipstx39el \ ++ | mn10200 | mn10300 \ ++ | mt \ ++ | msp430 \ ++ | nios | nios2 \ ++ | ns16k | ns32k \ ++ | or32 \ ++ | pdp10 | pdp11 | pj | pjl \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ ++ | pyramid \ ++ | score \ ++ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ ++ | spu | strongarm \ ++ | tahoe | thumb | tic4x | tic80 | tron \ ++ | v850 | v850e \ ++ | we32k \ ++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ ++ | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) +@@ -244,6 +300,9 @@ + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; ++ ms1) ++ basic_machine=mt-unknown ++ ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and +@@ -257,31 +316,73 @@ + exit 1 + ;; + # Recognize the basic CPU types with company name. +- # FIXME: clean up the formatting here. +- vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ +- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ +- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ +- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ +- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ +- | xmp-* | ymp-* \ +- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ +- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ +- | hppa2.0n-* | hppa64-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ +- | alphaev6[78]-* \ +- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ +- | clipper-* | orion-* \ +- | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \ +- | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ +- | mips16-* | mips64-* | mipsel-* \ +- | mips64el-* | mips64orion-* | mips64orionel-* \ +- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ +- | mipstx39-* | mipstx39el-* | mcore-* \ +- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ +- | [cjt]90-* \ +- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ +- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ +- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) ++ 580-* \ ++ | a29k-* \ ++ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ ++ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ ++ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ ++ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ ++ | avr-* | avr32-* \ ++ | bfin-* | bs2000-* \ ++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ ++ | clipper-* | craynv-* | cydra-* \ ++ | d10v-* | d30v-* | dlx-* \ ++ | elxsi-* \ ++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ ++ | h8300-* | h8500-* \ ++ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ ++ | i*86-* | i860-* | i960-* | ia64-* \ ++ | ip2k-* | iq2000-* \ ++ | lm32-* \ ++ | m32c-* | m32r-* | m32rle-* \ ++ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ ++ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ ++ | mips16-* \ ++ | mips64-* | mips64el-* \ ++ | mips64octeon-* | mips64octeonel-* \ ++ | mips64orion-* | mips64orionel-* \ ++ | mips64r5900-* | mips64r5900el-* \ ++ | mips64vr-* | mips64vrel-* \ ++ | mips64vr4100-* | mips64vr4100el-* \ ++ | mips64vr4300-* | mips64vr4300el-* \ ++ | mips64vr5000-* | mips64vr5000el-* \ ++ | mips64vr5900-* | mips64vr5900el-* \ ++ | mipsisa32-* | mipsisa32el-* \ ++ | mipsisa32r2-* | mipsisa32r2el-* \ ++ | mipsisa64-* | mipsisa64el-* \ ++ | mipsisa64r2-* | mipsisa64r2el-* \ ++ | mipsisa64sb1-* | mipsisa64sb1el-* \ ++ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ++ | mipstx39-* | mipstx39el-* \ ++ | mmix-* \ ++ | mt-* \ ++ | msp430-* \ ++ | nios-* | nios2-* \ ++ | none-* | np1-* | ns16k-* | ns32k-* \ ++ | orion-* \ ++ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ ++ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ ++ | pyramid-* \ ++ | romp-* | rs6000-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ ++ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ ++ | sparclite-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ ++ | tahoe-* | thumb-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ ++ | tron-* \ ++ | v850-* | v850e-* | vax-* \ ++ | we32k-* \ ++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ ++ | xstormy16-* | xtensa*-* \ ++ | ymp-* \ ++ | z8k-* | z80-*) ++ ;; ++ # Recognize the basic CPU types without company name, with glob match. ++ xtensa*) ++ basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +@@ -299,6 +400,9 @@ + basic_machine=a29k-amd + os=-udi + ;; ++ abacus) ++ basic_machine=abacus-unknown ++ ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout +@@ -313,6 +417,12 @@ + basic_machine=a29k-none + os=-bsd + ;; ++ amd64) ++ basic_machine=x86_64-pc ++ ;; ++ amd64-*) ++ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + amdahl) + basic_machine=580-amdahl + os=-sysv +@@ -336,6 +446,10 @@ + basic_machine=m68k-apollo + os=-bsd + ;; ++ aros) ++ basic_machine=i386-pc ++ os=-aros ++ ;; + aux) + basic_machine=m68k-apple + os=-aux +@@ -344,6 +458,22 @@ + basic_machine=ns32k-sequent + os=-dynix + ;; ++ blackfin) ++ basic_machine=bfin-unknown ++ os=-linux ++ ;; ++ blackfin-*) ++ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; ++ c90) ++ basic_machine=c90-cray ++ os=-unicos ++ ;; ++ cegcc) ++ basic_machine=arm-unknown ++ os=-cegcc ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -364,30 +494,45 @@ + basic_machine=c38-convex + os=-bsd + ;; +- cray | ymp) +- basic_machine=ymp-cray ++ cray | j90) ++ basic_machine=j90-cray + os=-unicos + ;; +- cray2) +- basic_machine=cray2-cray +- os=-unicos ++ craynv) ++ basic_machine=craynv-cray ++ os=-unicosmp + ;; +- [cjt]90) +- basic_machine=${basic_machine}-cray +- os=-unicos ++ cr16) ++ basic_machine=cr16-unknown ++ os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; ++ crisv32 | crisv32-* | etraxfs*) ++ basic_machine=crisv32-axis ++ ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; ++ crx) ++ basic_machine=crx-unknown ++ os=-elf ++ ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; ++ decsystem10* | dec10*) ++ basic_machine=pdp10-dec ++ os=-tops10 ++ ;; ++ decsystem20* | dec20*) ++ basic_machine=pdp10-dec ++ os=-tops20 ++ ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola +@@ -396,6 +541,14 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ dicos) ++ basic_machine=i686-pc ++ os=-dicos ++ ;; ++ djgpp) ++ basic_machine=i586-pc ++ os=-msdosdjgpp ++ ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx +@@ -546,6 +699,14 @@ + basic_machine=m68k-isi + os=-sysv + ;; ++ m68knommu) ++ basic_machine=m68k-unknown ++ os=-linux ++ ;; ++ m68knommu-*) ++ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; + m88k-omron*) + basic_machine=m88k-omron + ;; +@@ -561,6 +722,10 @@ + basic_machine=i386-pc + os=-mingw32 + ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=-mingw32ce ++ ;; + miniframe) + basic_machine=m68000-convergent + ;; +@@ -568,32 +733,27 @@ + basic_machine=m68k-atari + os=-mint + ;; +- mipsel*-linux*) +- basic_machine=mipsel-unknown +- os=-linux-gnu +- ;; +- mips*-linux*) +- basic_machine=mips-unknown +- os=-linux-gnu +- ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; +- mmix*) +- basic_machine=mmix-knuth +- os=-mmixware +- ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; ++ morphos) ++ basic_machine=powerpc-unknown ++ os=-morphos ++ ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; ++ ms1-*) ++ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ++ ;; + mvs) + basic_machine=i370-ibm + os=-mvs +@@ -669,6 +829,13 @@ + basic_machine=hppa1.1-oki + os=-proelf + ;; ++ openrisc | openrisc-*) ++ basic_machine=or32-unknown ++ ;; ++ os400) ++ basic_machine=powerpc-ibm ++ os=-os400 ++ ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose +@@ -685,48 +852,78 @@ + basic_machine=i860-intel + os=-osf + ;; ++ parisc) ++ basic_machine=hppa-unknown ++ os=-linux ++ ;; ++ parisc-*) ++ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; +- pc532 | pc532-*) ++ pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; +- pentium | p5 | k5 | k6 | nexgen) ++ pc98) ++ basic_machine=i386-pc ++ ;; ++ pc98-*) ++ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; +- pentiumpro | p6 | 6x86 | athlon) ++ pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; +- pentiumii | pentium2) ++ pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-*) ++ pentium4) ++ basic_machine=i786-pc ++ ;; ++ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; +- pentiumii-* | pentium2-*) ++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ pentium4-*) ++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown +- ;; ++ ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown +- ;; ++ ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ ppc64) basic_machine=powerpc64-unknown ++ ;; ++ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ ppc64le | powerpc64little | ppc64-le | powerpc64-little) ++ basic_machine=powerpc64le-unknown ++ ;; ++ ppc64le-* | powerpc64little-*) ++ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + ps2) + basic_machine=i386-ibm + ;; +@@ -734,6 +931,10 @@ + basic_machine=i586-unknown + os=-pw32 + ;; ++ rdos) ++ basic_machine=i386-pc ++ os=-rdos ++ ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff +@@ -744,10 +945,30 @@ + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; ++ s390 | s390-*) ++ basic_machine=s390-ibm ++ ;; ++ s390x | s390x-*) ++ basic_machine=s390x-ibm ++ ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; ++ sb1) ++ basic_machine=mipsisa64sb1-unknown ++ ;; ++ sb1el) ++ basic_machine=mipsisa64sb1el-unknown ++ ;; ++ sde) ++ basic_machine=mipsisa32-sde ++ os=-elf ++ ;; ++ sei) ++ basic_machine=mips-sei ++ os=-seiux ++ ;; + sequent) + basic_machine=i386-sequent + ;; +@@ -755,7 +976,13 @@ + basic_machine=sh-hitachi + os=-hms + ;; +- sparclite-wrs) ++ sh5el) ++ basic_machine=sh5le-unknown ++ ;; ++ sh64) ++ basic_machine=sh64-unknown ++ ;; ++ sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; +@@ -822,22 +1049,46 @@ + os=-dynix + ;; + t3e) +- basic_machine=t3e-cray ++ basic_machine=alphaev5-cray ++ os=-unicos ++ ;; ++ t90) ++ basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; ++ tic55x | c55x*) ++ basic_machine=tic55x-unknown ++ os=-coff ++ ;; ++ tic6x | c6x*) ++ basic_machine=tic6x-unknown ++ os=-coff ++ ;; ++ tile*) ++ basic_machine=tile-unknown ++ os=-linux-gnu ++ ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; ++ toad1) ++ basic_machine=pdp10-xkl ++ os=-tops20 ++ ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; ++ tpf) ++ basic_machine=s390x-ibm ++ os=-tpf ++ ;; + udi29k) + basic_machine=a29k-amd + os=-udi +@@ -859,8 +1110,8 @@ + os=-vms + ;; + vpp*|vx|vx-*) +- basic_machine=f301-fujitsu +- ;; ++ basic_machine=f301-fujitsu ++ ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks +@@ -881,21 +1132,25 @@ + basic_machine=hppa1.1-winbond + os=-proelf + ;; +- windows32) +- basic_machine=i386-pc +- os=-windows32-msvcrt +- ;; +- xmp) +- basic_machine=xmp-cray +- os=-unicos ++ xbox) ++ basic_machine=i686-pc ++ os=-mingw32 + ;; +- xps | xps100) ++ xps | xps100) + basic_machine=xps100-honeywell + ;; ++ ymp) ++ basic_machine=ymp-cray ++ os=-unicos ++ ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; ++ z80-*-coff) ++ basic_machine=z80-unknown ++ os=-sim ++ ;; + none) + basic_machine=none-none + os=-none +@@ -912,16 +1167,12 @@ + op60c) + basic_machine=hppa1.1-oki + ;; +- mips) +- if [ x$os = x-linux-gnu ]; then +- basic_machine=mips-unknown +- else +- basic_machine=mips-mips +- fi +- ;; + romp) + basic_machine=romp-ibm + ;; ++ mmix) ++ basic_machine=mmix-knuth ++ ;; + rs6000) + basic_machine=rs6000-ibm + ;; +@@ -938,13 +1189,13 @@ + we32k) + basic_machine=we32k-att + ;; +- sh3 | sh4) ++ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv9 | sparcv9b) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; +- cydra) ++ cydra) + basic_machine=cydra-cydrome + ;; + orion) +@@ -959,10 +1210,6 @@ + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; +- c4x*) +- basic_machine=c4x-none +- os=-coff +- ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; +@@ -1014,19 +1261,28 @@ + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ ++ | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* \ ++ | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ +- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ ++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ ++ | -openbsd* | -solidbsd* \ ++ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ ++ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ ++ | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ ++ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ ++ | -uxpv* | -beos* | -mpeix* | -udk* \ ++ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) ++ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ ++ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1038,16 +1294,21 @@ + ;; + esac + ;; ++ -nto-qnx*) ++ ;; + -nto*) +- os=-nto-qnx ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ ++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; ++ -linux-dietlibc) ++ os=-linux-dietlibc ++ ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +@@ -1060,6 +1321,9 @@ + -opened*) + os=-openedition + ;; ++ -os400*) ++ os=-os400 ++ ;; + -wince*) + os=-wince + ;; +@@ -1078,14 +1342,23 @@ + -acis*) + os=-aos + ;; ++ -atheos*) ++ os=-atheos ++ ;; ++ -syllable*) ++ os=-syllable ++ ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; ++ -nova*) ++ os=-rtmk-nova ++ ;; + -ns2 ) +- os=-nextstep2 ++ os=-nextstep2 + ;; + -nsk*) + os=-nsk +@@ -1097,6 +1370,9 @@ + -sinix*) + os=-sysv4 + ;; ++ -tpf*) ++ os=-tpf ++ ;; + -triton*) + os=-sysv3 + ;; +@@ -1124,8 +1400,20 @@ + -xenix) + os=-xenix + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ os=-mint ++ ;; ++ -aros*) ++ os=-aros ++ ;; ++ -kaos*) ++ os=-kaos ++ ;; ++ -zvmoe) ++ os=-zvmoe ++ ;; ++ -dicos*) ++ os=-dicos + ;; + -none) + ;; +@@ -1149,6 +1437,12 @@ + # system, and we'll never get to this point. + + case $basic_machine in ++ score-*) ++ os=-elf ++ ;; ++ spu-*) ++ os=-elf ++ ;; + *-acorn) + os=-riscix1.2 + ;; +@@ -1158,10 +1452,14 @@ + arm*-semi) + os=-aout + ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; ++ # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; +- pdp11-*) ++ pdp11-*) + os=-none + ;; + *-dec | vax-*) +@@ -1182,12 +1480,18 @@ + m68*-cisco) + os=-aout + ;; ++ mep-*) ++ os=-elf ++ ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; ++ or32-*) ++ os=-coff ++ ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; +@@ -1197,9 +1501,15 @@ + *-be) + os=-beos + ;; ++ *-haiku) ++ os=-haiku ++ ;; + *-ibm) + os=-aix + ;; ++ *-knuth) ++ os=-mmixware ++ ;; + *-wec) + os=-proelf + ;; +@@ -1251,19 +1561,19 @@ + *-next) + os=-nextstep3 + ;; +- *-gould) ++ *-gould) + os=-sysv + ;; +- *-highlevel) ++ *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; +- *-sgi) ++ *-sgi) + os=-irix + ;; +- *-siemens) ++ *-siemens) + os=-sysv4 + ;; + *-masscomp) +@@ -1332,10 +1642,16 @@ + -mvs* | -opened*) + vendor=ibm + ;; ++ -os400*) ++ vendor=ibm ++ ;; + -ptx*) + vendor=sequent + ;; +- -vxsim* | -vxworks*) ++ -tpf*) ++ vendor=ibm ++ ;; ++ -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) +@@ -1350,13 +1666,16 @@ + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; ++ -vos*) ++ vendor=stratus ++ ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + + echo $basic_machine$os +-exit 0 ++exit + + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/Yap-5.1.3-soname.patch b/Yap-5.1.3-soname.patch new file mode 100644 index 0000000..d05937a --- /dev/null +++ b/Yap-5.1.3-soname.patch @@ -0,0 +1,42 @@ +diff -up Yap-5.1.3/Makefile.in.soname Yap-5.1.3/Makefile.in +--- Yap-5.1.3/Makefile.in.soname 2009-06-15 22:12:57.000000000 +0200 ++++ Yap-5.1.3/Makefile.in 2009-06-15 21:59:18.000000000 +0200 +@@ -578,16 +578,16 @@ startup: yap@EXEC_SUFFIX@ $(PL_SOURCES) + -rm -f startup + echo "bootstrap('$(srcdir)/pl/init.yap'). module(user). save_program(startup)." | @CROSS_SIMULATOR@ ./yap -b $(srcdir)/pl/boot.yap + +-yap@EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@.5.1.3 +- $(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB@.5.1.3 $(LIBS) @MPI_LIBS@ ++yap@EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@ ++ $(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB@ $(LIBS) @MPI_LIBS@ + + libYap.a: $(LIB_OBJECTS) + -rm -f libYap.a + $(AR) rc libYap.a $(LIB_OBJECTS) + $(RANLIB) libYap.a + +-@DYNYAPLIB@.5.1.3: $(LIB_OBJECTS) +- @DYNLIB_LD@ -Wl,-soname=@YAPLIB@.5.1.3 -o @YAPLIB@.5.1.3 $(LIB_OBJECTS) $(LIBS) $(LDFLGS) ++@DYNYAPLIB@: $(LIB_OBJECTS) ++ @DYNLIB_LD@ -o @YAPLIB@ $(LIB_OBJECTS) $(LIBS) $(LDFLGS) + + install: install_bin install_data + +@@ -598,7 +598,7 @@ install_unix: startup libYap.a + $(INSTALL_PROGRAM) -m 755 yap@EXEC_SUFFIX@ $(DESTDIR)$(BINDIR)/yap + mkdir -p $(DESTDIR)$(YAPLIBDIR) + $(INSTALL_DATA) startup $(DESTDIR)$(YAPLIBDIR)/startup +- @INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB@.5.1.3 $(DESTDIR)$(LIBDIR) ++ @INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB@ $(DESTDIR)$(LIBDIR) + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/swi +@@ -643,7 +643,7 @@ install_win32: startup + (cd library/tries; make install) + @ENABLE_CPLINT@ (cd cplint; make install) + +-install_library: @YAPLIB@.5.1.3 ++install_library: @YAPLIB@ + mkdir -p $(DESTDIR)$(INCLUDEDIR) + for h in $(HEADERS); do $(INSTALL) $$h $(DESTDIR)$(INCLUDEDIR); done + diff --git a/Yap-creat.patch b/Yap-creat.patch new file mode 100644 index 0000000..257bdf6 --- /dev/null +++ b/Yap-creat.patch @@ -0,0 +1,21 @@ +diff -up Yap-5.1.1/C/alloc.c.creat Yap-5.1.1/C/alloc.c +--- Yap-5.1.1/C/alloc.c.creat 2008-04-10 20:32:14.000000000 +0200 ++++ Yap-5.1.1/C/alloc.c 2008-04-10 20:32:45.000000000 +0200 +@@ -796,7 +796,7 @@ InitWorkSpace(Int s) + itos(getpid(), &file[12]); + #endif /* HAVE_TMPNAM */ + #endif /* HAVE_MKSTEMP */ +- fd = open(file, O_CREAT|O_RDWR); ++ fd = open(file, O_CREAT|O_RDWR, 0644); + if (fd < 0) { + Yap_Error(FATAL_ERROR, TermNil, "mmap could not open %s", file); + return NULL; +@@ -909,7 +909,7 @@ ExtendWorkSpace(Int s, int fixed_allocat + itos(getpid(), &file[12]); + #endif /* HAVE_TMPNAM */ + #endif /* HAVE_MKSTEMP */ +- fd = open(file, O_CREAT|O_RDWR); ++ fd = open(file, O_CREAT|O_RDWR, 0644); + if (fd < 0) { + Yap_ErrorMessage = Yap_ErrorSay; + snprintf4(Yap_ErrorMessage, MAX_ERROR_MSG_SIZE, diff --git a/Yap-noni386.patch b/Yap-noni386.patch new file mode 100644 index 0000000..ce01f3f --- /dev/null +++ b/Yap-noni386.patch @@ -0,0 +1,11 @@ +--- Yap-4.5.5/H/absmi.h.noni386 2005-06-18 15:52:24.000000000 +0200 ++++ Yap-4.5.5/H/absmi.h 2005-06-18 15:52:34.000000000 +0200 +@@ -282,7 +282,7 @@ + + #define CACHE_A1() (SREG = (CELL *)ARG1) + +-#define CACHED_A1() ((CELL)SREG) ++#define CACHED_A1() SREG + + #endif /* S_IN_MEM */ + diff --git a/chr_translate.pl b/chr_translate.pl new file mode 100644 index 0000000..fab72a4 --- /dev/null +++ b/chr_translate.pl @@ -0,0 +1,21472 @@ +/* Generated by CHR bootstrap compiler + From: chr_translate.chr + Date: Mon Jun 15 21:44:05 2009 + + + DO NOT EDIT. EDIT THE CHR FILE INSTEAD +*/ + +:-module(chr_translate,[chr_translate/2,chr_translate_line_info/3]). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(library(lists),[member/2,append/3,reverse/2,permutation/2,last/2]). +:-use_module(library(ordsets)). +:-use_module(library(aggregate)). +:-use_module(library(apply_macros)). +:-use_module(library(occurs)). +:-use_module(library(assoc)). +:-use_module(hprolog). +:-use_module(pairlist). +:-use_module(a_star). +:-use_module(listmap). +:-use_module(clean_code). +:-use_module(builtins). +:-use_module(find). +:-use_module(binomialheap). +:-use_module(guard_entailment). +:-use_module(chr_compiler_options). +:-use_module(chr_compiler_utility). +:-use_module(chr_compiler_errors). +:-include(chr_op). +:-op(1150,fx,chr_type). +:-op(1150,fx,chr_declaration). +:-op(1130,xfx,--->). +:-op(980,fx,+). +:-op(980,fx,-). +:-op(980,fx,?). +:-op(1150,fx,constraints). +:-op(1150,fx,chr_constraint). +format_storetype(multi_store(A)) :- + !, + maplist(format_storetype,A). +format_storetype(atomic_constants(A,B,_)) :- + format(' * a trie index on the argument(s) ~w for the ground terms ~w +',[A,B]). +format_storetype(ground_constants(A,B,_)) :- + format(' * a trie index on the argument(s) ~w for the ground terms ~w +',[A,B]). +format_storetype(A) :- + format(' * ~w +',[A]). +get_constraint_arg_type(A,B,C) :- + get_constraint_type(A,D), + nth1(B,D,E), + unalias_type(E,C). +partial_store(ground_constants(_,_,incomplete)). +partial_store(atomic_constants(_,_,incomplete)). +late_allocation_analysis(A) :- + ( chr_pp_flag(late_allocation,on) -> + maplist(late_allocation,A) + ; + true + ). +late_allocation(A) :- + late_allocation(A,0). +late_allocation(A,B) :- + allocation_occurrence(A,B), + !. +late_allocation(A,B) :- + C is B+1, + late_allocation(A,C). +stored_in_guard_before_next_kept_occurrence(A,B) :- + chr_pp_flag(store_in_guards,on), + C is B+1, + stored_in_guard_lookahead(A,C). +set_constraint_indices(A) :- + set_constraint_indices(A,1). +set_constraint_indices([],A) :- + B is A-1, + max_constraint_index(B). +set_constraint_indices([A|B],C) :- + ( + ( + chr_pp_flag(debugable,on) + ; + \+only_ground_indexed_arguments(A), + is_stored(A) + ; + is_stored(A), + get_store_type(A,default) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + constraint_index(A,C), + D is C+1, + set_constraint_indices(B,D) + ; + set_constraint_indices(B,C) + ). +type_indexed_identifier_structure(A,B) :- + type_indexed_identifier_name(A,type_indexed_identifier_struct,C), + get_type_indexed_identifier_size(A,D), + functor(B,C,D). +type_indexed_identifier_name(A,B,C) :- + ( atom(A) -> + D=A + ; + term_to_atom(A,D) + ), + atom_concat_list([B,'_',D],C). +chr_translate(A,B) :- + chr_translate_line_info(A,bootstrap,B). +chr_translate_line_info(A,B,C) :- + chr_banner, + restart_after_flattening(A,D), + init_chr_pp_flags, + chr_source_file(B), + partition_clauses(D,E,F,G), + chr_compiler_options:sanity_check, + dump_code(D), + check_declared_constraints(E), + generate_show_constraint(E,H,F,I), + add_constraints(H), + add_rules(I), + generate_never_stored_rules(H,J), + add_rules(J), + append(I,J,K), + chr_analysis(K,H,D), + time('constraint code generation',chr_translate:constraints_code(H,L)), + time('validate store assumptions',chr_translate:validate_store_type_assumptions(H)), + phase_end(validate_store_type_assumptions), + used_states_known, + time('store code generation',chr_translate:store_management_preds(H,M)), + insert_declarations(G,N), + chr_module_declaration(O), + append([M,L,O,[end_of_file]],P), + clean_clauses(P,Q), + append([N,Q],C), + dump_code(C), + !. +chr_analysis(A,B,C) :- + check_rules(A,B), + time('type checking',chr_translate:static_type_check), + collect_constants(A,B,C), + add_occurrences(A), + time('functional dependency',chr_translate:functional_dependency_analysis(A)), + time('set semantics',chr_translate:set_semantics_rules(A)), + time('symmetry analysis',chr_translate:symmetry_analysis(A)), + time('guard simplification',chr_translate:guard_simplification), + time('late storage',chr_translate:storage_analysis(B)), + time(observation,chr_translate:observation_analysis(B)), + time('ai observation',chr_translate:ai_observation_analysis(B)), + time('late allocation',chr_translate:late_allocation_analysis(B)), + partial_wake_analysis, + time('assume constraint stores',chr_translate:assume_constraint_stores(B)), + time('default constraint indices',chr_translate:set_constraint_indices(B)), + time('check storedness assertions',chr_translate:check_storedness_assertions(B)), + time('continuation analysis',chr_translate:continuation_analysis(B)). +store_management_preds(A,B) :- + generate_attach_detach_a_constraint_all(A,C), + generate_attr_unify_hook(D), + generate_attach_increment(E), + generate_extra_clauses(A,F), + generate_insert_delete_constraints(A,G), + generate_attach_code(A,H), + generate_counter_code(I), + generate_dynamic_type_check_clauses(J), + append([C,E,D,F,G,H,I,J],B). +insert_declarations(A,B) :- + findall((:-use_module(chr(C))),(auxiliary_module(C),is_used_auxiliary_module(C)),D), + append(A,[(:-use_module(chr(chr_runtime)))|D],B). +auxiliary_module(chr_hashtable_store). +auxiliary_module(chr_integertable_store). +auxiliary_module(chr_assoc_store). +generate_counter_code(A) :- + ( chr_pp_flag(store_counter,on) -> + A=[('$counter_init'(B):-nb_setval(B,0)),('$counter'(C,D):-nb_getval(C,D)),('$counter_inc'(E):-nb_getval(E,F),G is F+1,nb_setval(E,G)),(:-'$counter_init'('$insert_counter')),(:-'$counter_init'('$delete_counter')),('$insert_counter_inc':-'$counter_inc'('$insert_counter')),('$delete_counter_inc':-'$counter_inc'('$delete_counter')),(counter_stats(H,I):-'$counter'('$insert_counter',H),'$counter'('$delete_counter',I))] + ; + A=[] + ). +chr_module_declaration(A) :- + get_target_module(B), + ( B\==chr_translate, + chr_pp_flag(toplevel_show_store,on) -> + A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)] + ; + A=[] + ). +partition_clauses([],[],[],[]). +partition_clauses([A|B],C,D,E) :- + ( parse_rule(A,F) -> + C=G, + D=[F|H], + E=I + ; + ( is_declaration(A,J) -> + append(J,G,C), + D=H, + E=I + ) + ; + ( is_module_declaration(A,K) -> + target_module(K), + C=G, + D=H, + E=[A|I] + ) + ; + ( is_type_definition(A) -> + C=G, + D=H, + E=I + ) + ; + ( is_chr_declaration(A) -> + C=G, + D=H, + E=I + ) + ; + ( A=(handler _) -> + chr_warning(deprecated(A),'Backward compatibility: ignoring handler/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=(rules _) -> + chr_warning(deprecated(A),'Backward compatibility: ignoring rules/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=option(L,M) -> + chr_warning(deprecated(A),'Instead use `:-chr_option(~w,~w).'' +',[L,M]), + handle_option(L,M), + C=G, + D=H, + E=I + ) + ; + ( A=(:-chr_option(L,M)) -> + handle_option(L,M), + C=G, + D=H, + E=I + ) + ; + ( A='$chr_compiled_with_version'(_) -> + C=G, + D=H, + E=['$chr_compiled_with_version'(3)|I] + ) + ; + C=G, + D=H, + E=[A|I] + ), + partition_clauses(B,G,H,I). +'$chr_compiled_with_version'(3). +is_declaration(A,B) :- + ( A=(:-C), + C=..[D,E], + D==chr_constraint -> + conj2list(E,F) + ; + ( A=(:-C) -> + C=..[constraints,E] + ; + A=..[constraints,E] + ), + conj2list(E,F), + chr_warning(deprecated(A),'Instead use :- chr_constraint ~w. +',[E]) + ), + extract_type_mode(F,B). +extract_type_mode([],[]). +extract_type_mode([A/B|C],[A/B|D]) :- + !, + extract_type_mode(C,D). +extract_type_mode([A|B],[C|D]) :- + ( A=E#F -> + functor(E,G,H), + extract_annotation(F,G/H) + ; + A=E, + functor(E,G,H) + ), + C=G/H, + E=..[_|I], + extract_types_and_modes(I,J,K), + assert_constraint_type(C,J), + constraint_mode(C,K), + extract_type_mode(B,D). +extract_annotation(stored,A) :- + stored_assertion(A). +extract_annotation(default(A),B) :- + never_stored_default(B,A). +extract_types_and_modes([],[],[]). +extract_types_and_modes([A|B],[C|D],[E|F]) :- + extract_type_and_mode(A,C,E), + extract_types_and_modes(B,D,F). +extract_type_and_mode(+A,A,+) :- + !. +extract_type_and_mode(?A,A,?) :- + !. +extract_type_and_mode(-A,A,-) :- + !. +extract_type_and_mode(+,any,+) :- + !. +extract_type_and_mode(?,any,?) :- + !. +extract_type_and_mode(-,any,-) :- + !. +extract_type_and_mode(A,_,_) :- + chr_error(syntax(A),'Illegal mode/type declaration. + Correct syntax is +type, -type or ?type + or +, - or ?. +',[]). +is_chr_declaration(A) :- + A=(:-chr_declaration B), + ( B=(C--->D) -> + background_info(C,D) + ; + ( B=D -> + background_info([D]) + ) + ). +is_type_definition(A) :- + is_type_definition(A,B), + assert_type_definition(B). +assert_type_definition(typedef(A,B)) :- + type_definition(A,B). +assert_type_definition(alias(A,B)) :- + type_alias(A,B). +is_type_definition(A,B) :- + ( A=(:-C) -> + true + ; + A=C + ), + C=..[chr_type,D], + ( D=(E--->F) -> + tdisj2list(F,G), + B=typedef(E,G) + ; + ( D=(H==E) -> + B=alias(H,E) + ) + ; + B=typedef(D,[]), + chr_warning(syntax,'Empty type definition `~w''. +Are you sure you want to declare a phantom type? +',[A]) + ). +tdisj2list(A,B) :- + tdisj2list(A,B,[]). +tdisj2list(A,B,C) :- + A=(D;E), + !, + tdisj2list(D,B,F), + tdisj2list(E,F,C). +tdisj2list(A,[A|B],B). +parse_rule(A,B) :- + A=(C@D), + !, + rule(D,yes(C),B). +parse_rule(A,B) :- + rule(A,no,B). +rule(A,B,C) :- + A=(D pragma E), + !, + ( var(E) -> + F=[_] + ; + conj2list(E,F) + ), + inc_rule_count(G), + C=pragma(H,I,F,B,G), + is_rule(D,H,I,C). +rule(A,B,C) :- + inc_rule_count(D), + C=pragma(E,F,[],B,D), + is_rule(A,E,F,C). +is_rule(A,B,C,D) :- + A=(E==>F), + !, + conj2list(E,G), + get_ids(G,H,I,D), + C=ids([],H), + ( F=(J '|' K) -> + B=rule([],I,J,K) + ; + B=rule([],I,true,F) + ). +is_rule(A,B,C,D) :- + A=(E<=>F), + !, + ( F=(G '|' H) -> + I=G, + J=H + ; + I=true, + J=F + ), + ( E=(K\L) -> + conj2list(K,M), + conj2list(L,N), + get_ids(M,O,P,0,Q,D), + get_ids(N,R,S,Q,_,D), + C=ids(R,O) + ; + conj2list(E,N), + P=[], + get_ids(N,R,S,D), + C=ids(R,[]) + ), + B=rule(S,P,I,J). +get_ids(A,B,C,D) :- + get_ids(A,B,C,0,_,D). +get_ids([],[],[],A,A,_). +get_ids([A|B],[C|D],[E|F],C,G,H) :- + ( A=E#I -> + ( var(I) -> + I=C + ; + check_direct_pragma(I,C,H) + ) + ; + E=A + ), + J is C+1, + get_ids(B,D,F,J,G,H). +check_direct_pragma(passive,A,B) :- + !, + B=pragma(_,_,_,_,C), + passive(C,A). +check_direct_pragma(A,_,B) :- + ( direct_pragma(C), + atom_concat(A,_,C) -> + chr_warning(problem_pragma(A,B),'completed `~w'' to `~w'' +',[A,C]) + ; + chr_warning(unsupported_pragma(A,B),'',[]) + ). +direct_pragma(passive). +is_module_declaration((:-module(A)),A). +is_module_declaration((:-module(A,_)),A). +add_constraints([]). +add_constraints([A|B]) :- + max_occurrence(A,0), + A=_/C, + length(D,C), + set_elems(D,?), + constraint_mode(A,D), + add_constraints(B). +add_rules([]). +add_rules([A|B]) :- + A=pragma(_,_,_,_,C), + rule(C,A), + add_rules(B). +check_declared_constraints(A) :- + tree_set_empty(B), + check_declared_constraints(A,B). +check_declared_constraints([],_). +check_declared_constraints([A|B],C) :- + ( tree_set_memberchk(A,C) -> + chr_error(syntax(A),'Constraint multiply defined: ~w. + Remove redundant declaration! +',[A]) + ; + true + ), + tree_set_add(C,A,D), + check_declared_constraints(B,D). +check_rules([],_). +check_rules([A|B],C) :- + check_rule(A,C), + check_rules(B,C). +check_rule(A,B) :- + check_rule_indexing(A), + check_trivial_propagation_rule(A), + A=pragma(C,_,D,_,_), + C=rule(E,F,_,_), + append(E,F,G), + check_head_constraints(G,B,A), + check_pragmas(D,A). +check_trivial_propagation_rule(A) :- + A=pragma(B,_,_,_,C), + ( B=rule([],_,_,true) -> + chr_warning(weird_program,'Ignoring propagation rule with empty body: ~@. + +',[format_rule(A)]), + set_all_passive(C) + ; + true + ). +check_head_constraints([],_,_). +check_head_constraints([A|B],C,D) :- + functor(A,E,F), + ( memberchk(E/F,C) -> + check_head_constraints(B,C,D) + ; + chr_error(syntax(A),'Undeclared constraint ~w in head of ~@. + Constraint should be one of ~w. +',[E/F,format_rule(D),C]) + ). +check_pragmas([],_). +check_pragmas([A|B],C) :- + check_pragma(A,C), + check_pragmas(B,C). +check_pragma(A,B) :- + var(A), + !, + chr_error(syntax(A),'Invalid pragma ~w in ~@. + Pragma should not be a variable! +',[A,format_rule(B)]). +check_pragma(passive(A),B) :- + !, + B=pragma(_,ids(C,D),_,_,E), + ( memberchk_eq(A,C) -> + true + ; + ( memberchk_eq(A,D) -> + true + ) + ; + chr_error(syntax(A),'Invalid identifier ~w in pragma passive in ~@. +',[A,format_rule(B)]) + ), + passive(E,A). +check_pragma(mpassive(A),B) :- + !, + B=pragma(_,_,_,_,C), + chr_warning(experimental,'Experimental pragma ~w. Use with care! +',[mpassive(A)]), + maplist(passive(C),A). +check_pragma(A,B) :- + A=already_in_heads, + !, + chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. +',[]). +check_pragma(A,B) :- + A=already_in_head(_), + !, + chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. +',[]). +check_pragma(A,B) :- + A=no_history, + !, + chr_warning(experimental,'Experimental pragma no_history. Use with care! +',[]), + B=pragma(_,_,_,_,C), + no_history(C). +check_pragma(A,B) :- + A=history(C,D), + !, + B=pragma(_,ids(E,F),_,_,G), + chr_warning(experimental,'Experimental pragma ~w. Use with care! +',[A]), + ( E\==[] -> + chr_error(syntax(A),'Pragma history only implemented for propagation rules. +',[]) + ; + ( \+atom(C) -> + chr_error(syntax(A),'Illegal argument for pragma history: ~w is not an atom (rule number ~w). +',[C,G]) + ) + ; + ( \+is_set(D) -> + chr_error(syntax(A),'Illegal argument for pragma history: ~w is not a set (rule number ~w). +',[D,G]) + ) + ; + ( check_history_pragma_ids(D,E,F) -> + history(G,C,D) + ) + ; + chr_error(syntax(A),'Invalid identifier(s) in pragma ~w of rule number ~w. +',[A,G]) + ). +check_pragma(A,B) :- + A=line_number(C), + !, + B=pragma(_,_,_,_,D), + line_number(D,C). +check_history_pragma_ids([],_,_). +check_history_pragma_ids([A|B],C,D) :- + ( + memberchk_eq(A,D) + ; + memberchk_eq(A,C) + ), + check_history_pragma_ids(B,C,D). +check_pragma(A,B) :- + chr_error(syntax(A),'Unknown pragma ~w in ~@. +',[A,format_rule(B)]). +test_named_history_id_pairs(_,[],_,[]). +test_named_history_id_pairs(A,[B|C],D,[E|F]) :- + test_named_history_id_pair(A,B,D,E), + test_named_history_id_pairs(A,C,D,F). +format_rule(A) :- + A=pragma(_,_,_,B,C), + ( B=yes(D) -> + write('rule '), + write(D) + ; + write('rule number '), + write(C) + ), + get_line_number(C,E), + write(' (line '), + write(E), + write(')'). +check_rule_indexing(A) :- + A=pragma(B,_,_,_,_), + B=rule(C,D,E,_), + term_variables(C-D,F), + remove_anti_monotonic_guards(E,F,G), + check_indexing(C,G-D), + check_indexing(D,G-C), + ( chr_pp_flag(term_indexing,on) -> + term_variables(G,H), + append(C,D,I), + check_specs_indexing(I,H,_) + ; + true + ). +remove_anti_monotonic_guards(A,B,C) :- + conj2list(A,D), + remove_anti_monotonic_guard_list(D,B,E), + list2conj(E,C). +remove_anti_monotonic_guard_list([],_,[]). +remove_anti_monotonic_guard_list([A|B],C,D) :- + ( A=var(E), + memberchk_eq(E,C) -> + D=F + ; + D=[A|F] + ), + remove_anti_monotonic_guard_list(B,C,F). +check_indexing([],_). +check_indexing([A|B],C) :- + functor(A,D,E), + A=..[_|F], + term_variables(B-C,G), + check_indexing(F,1,D/E,G), + check_indexing(B,[A|C]). +check_indexing([],_,_,_). +check_indexing([A|B],C,D,E) :- + ( is_indexed_argument(D,C) -> + true + ; + ( nonvar(A) -> + indexed_argument(D,C) + ) + ; + term_variables(B,F), + append(F,E,G), + ( memberchk_eq(A,G) -> + indexed_argument(D,C) + ; + true + ) + ), + H is C+1, + term_variables(A,I), + append(I,E,J), + check_indexing(B,H,D,J). +check_specs_indexing([],_,[]). +check_specs_indexing([A|B],C,D) :- + D=[E|F], + term_variables(B,G,C), + check_spec_indexing(A,G,E), + term_variables(A,H,C), + check_specs_indexing(B,H,F). +check_spec_indexing(A,B,C) :- + functor(A,D,E), + C=spec(D,E,F), + A=..[_|G], + check_args_spec_indexing(G,1,B,F), + indexing_spec(D/E,[F]). +check_args_spec_indexing([],_,_,[]). +check_args_spec_indexing([A|B],C,D,E) :- + term_variables(B,F,D), + ( check_arg_spec_indexing(A,C,F,G) -> + E=[G|H] + ; + E=H + ), + I is C+1, + term_variables(A,J,D), + check_args_spec_indexing(B,I,J,H). +check_arg_spec_indexing(A,B,C,D) :- + ( var(A) -> + memberchk_eq(A,C), + D=specinfo(B,any,[]) + ; + functor(A,E,F), + D=specinfo(B,E/F,[G]), + A=..[_|H], + check_args_spec_indexing(H,1,C,G) + ). +add_occurrences([]). +add_occurrences([A|B]) :- + A=pragma(rule(C,D,_,_),ids(E,F),_,_,G), + add_occurrences(C,E,simplification,G), + add_occurrences(D,F,propagation,G), + add_occurrences(B). +add_occurrences([],[],_,_). +add_occurrences([A|B],[C|D],E,F) :- + functor(A,G,H), + I=G/H, + new_occurrence(I,F,C,E), + add_occurrences(B,D,E,F). +observation_analysis(A,B,C,D) :- + ( all_spawned(A,C) -> + true + ; + ( var(B) -> + spawns_all(A,C) + ) + ; + ( B=true -> + true + ) + ; + ( B=fail -> + true + ) + ; + ( B=! -> + true + ) + ; + ( B=(E,F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) + ) + ; + ( B=(E;F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) + ) + ; + ( B=(E->F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) + ) + ; + ( B=(\+G) -> + observation_analysis(A,G,C,D) + ) + ; + ( functor(B,H,I), + memberchk(H/I,D) -> + spawns(A,C,H/I) + ) + ; + ( B=(_=_) -> + spawns_all_triggers(A,C) + ) + ; + ( B=(_ is _) -> + spawns_all_triggers(A,C) + ) + ; + ( builtin_binds_b(B,J) -> + ( J==[] -> + true + ; + spawns_all_triggers(A,C) + ) + ) + ; + spawns_all(A,C) + ). +is_observed(A,B) :- + is_observed(A,B,_), + ai_is_observed(A,B). +is_stored_in_guard(A,B) :- + chr_pp_flag(store_in_guards,on), + do_is_observed(A,B,guard). +generate_attach_detach_a_constraint_all([],[]). +generate_attach_detach_a_constraint_all([A|B],C) :- + ( + ( + chr_pp_flag(debugable,on) + ; + is_stored(A), + \+only_ground_indexed_arguments(A), + \+get_store_type(A,var_assoc_store(_,_)) + ) -> + generate_attach_a_constraint(A,D), + generate_detach_a_constraint(A,E) + ; + D=[], + E=[] + ), + generate_attach_detach_a_constraint_all(B,F), + append([D,E,F],C). +generate_attach_a_constraint(A,[B,C]) :- + generate_attach_a_constraint_nil(A,B), + generate_attach_a_constraint_cons(A,C). +attach_constraint_atom(A,B,C,D) :- + make_name(attach_,A,E), + D=..[E,B,C]. +generate_attach_a_constraint_nil(A,B) :- + B=(C:-true), + attach_constraint_atom(A,[],_,C). +generate_attach_a_constraint_cons(A,B) :- + B=(C:-D), + attach_constraint_atom(A,[E|F],G,C), + attach_constraint_atom(A,F,G,H), + D=(I,J,H), + get_max_constraint_index(K), + ( K==1 -> + generate_attach_body_1(A,E,G,I) + ; + generate_attach_body_n(A,E,G,I) + ), + chr_pp_flag(solver_events,L), + ( L\==none -> + _=[[E|_],G], + get_target_module(M), + use_auxiliary_predicate(run_suspensions), + J=clp_events:subscribe(E,L,M,M:'$run_suspensions'([G])) + ; + J=true + ). +generate_attach_body_1(_,A,B,C) :- + get_target_module(D), + C=(get_attr(A,D,E)->put_attr(A,D,[B|E]);put_attr(A,D,[B])). +generate_attach_body_n(A/B,C,D,E) :- + get_constraint_index(A/B,F), + get_max_constraint_index(G), + get_target_module(H), + add_attr(G,D,F,I,J,K), + singleton_attr(G,D,F,L), + E=(get_attr(C,H,I)->J,put_attr(C,H,K);put_attr(C,H,L)), + !. +generate_detach_a_constraint(A,[B,C]) :- + generate_detach_a_constraint_nil(A,B), + generate_detach_a_constraint_cons(A,C). +detach_constraint_atom(A,B,C,D) :- + make_name(detach_,A,E), + D=..[E,B,C]. +generate_detach_a_constraint_nil(A,B) :- + B=(C:-true), + detach_constraint_atom(A,[],_,C). +generate_detach_a_constraint_cons(A,B) :- + B=(C:-D), + detach_constraint_atom(A,[E|F],G,C), + detach_constraint_atom(A,F,G,H), + D=(I,H), + get_max_constraint_index(J), + ( J==1 -> + generate_detach_body_1(A,E,G,I) + ; + generate_detach_body_n(A,E,G,I) + ). +generate_detach_body_1(_,A,B,C) :- + get_target_module(D), + C=(get_attr(A,D,E)->'chr sbag_del_element'(E,B,F),(F==[]->del_attr(A,D);put_attr(A,D,F));true). +generate_detach_body_n(A/B,C,D,E) :- + get_constraint_index(A/B,F), + get_max_constraint_index(G), + rem_attr(G,C,D,F,H,I), + get_target_module(J), + E=(get_attr(C,J,H)->I;true), + !. +create_indexed_variables_body([],[],[],_,_,_,empty,0). +create_indexed_variables_body([A|B],[C|D],[E|F],G,H,I,J,K) :- + L is H+1, + create_indexed_variables_body(B,D,F,M,L,I,N,O), + ( C== ?, + is_indexed_argument(I,H) -> + ( atomic_type(E) -> + J=((var(A)->G=[A|M];G=M),P), + ( N==empty -> + P=true, + M=[] + ; + P=N + ) + ; + ( N==empty -> + J=term_variables(A,G) + ) + ; + J=(term_variables(A,G,M),N) + ), + K=O + ; + ( C== -, + is_indexed_argument(I,H) -> + ( N==empty -> + J=(G=[A]) + ; + J=(G=[A|M],N) + ), + K is O+1 + ) + ; + G=M, + J=N, + K is O+1 + ). +spectermvars(A,B,C,D,E,F) :- + spectermvars(B,1,A,C,D,F,[],E). +spectermvars([],A,_,_,B,C,C,true) :- + A>B, + !. +spectermvars([A|B],C,D,E,F,G,H,I) :- + I=(J,K), + argspecs(D,C,L,M), + merge_argspecs(L,N), + arggoal(N,A,J,G,O), + P is C+1, + spectermvars(B,P,M,E,F,O,H,K). +argspecs([],_,[],[]). +argspecs([[]|A],B,C,D) :- + argspecs(A,B,C,D). +argspecs([[specinfo(A,B,C)|D]|E],F,G,H) :- + ( F==A -> + G=[specinfo(A,B,C)|I], + ( D=[] -> + J=H + ; + H=[D|J] + ) + ; + G=I, + H=[[specinfo(A,B,C)|D]|J] + ), + argspecs(E,F,I,J). +merge_argspecs(A,B) :- + sort(A,C), + merge_argspecs_(C,B). +merge_argspecs_([],[]). +merge_argspecs_([A],B) :- + !, + B=[A]. +merge_argspecs_([specinfo(A,B,C),specinfo(A,D,E)|F],G) :- + ( + ( + B==any + ; + D==any + ) -> + merge_argspecs_([specinfo(A,any,[])|F],G) + ; + ( B==D -> + append(C,E,H), + merge_argspecs_([specinfo(A,B,H)|F],G) + ) + ; + G=[specinfo(A,B,C)|I], + merge_argspecs_([specinfo(A,D,E)|F],I) + ). +arggoal(A,B,C,D,E) :- + ( A==[] -> + D=E, + C=true + ; + ( A=[specinfo(_,any,_)] -> + C=term_variables(B,D,E) + ) + ; + C=(var(B)->D=[B|E];F), + arggoal_cases(A,B,D,E,F) + ). +arggoal_cases([],_,A,B,A=B). +arggoal_cases([specinfo(_,A,B)|C],D,E,F,G) :- + ( B==[] -> + G=H + ; + ( B==[[]] -> + G=H + ) + ; + ( A=I/J -> + G=(K;H), + functor(L,I,J), + L=..[_|M], + K=(D=L->N), + spectermvars(M,1,B,I,J,E,F,N) + ) + ), + arggoal_cases(C,D,E,F,H). +generate_extra_clauses(A,B) :- + generate_activate_clauses(A,B,C), + generate_remove_clauses(A,C,D), + generate_allocate_clauses(A,D,E), + generate_insert_constraint_internal_clauses(A,E,F), + generate_novel_production(F,G), + generate_extend_history(G,H), + generate_run_suspensions_clauses(A,H,I), + generate_empty_named_history_initialisations(I,J), + J=[]. +generate_remove_clauses([],A,A). +generate_remove_clauses([A|B],C,D) :- + generate_remove_clause(A,C,E), + generate_remove_clauses(B,E,D). +remove_constraint_goal(A,B,C,D,E,F,G) :- + uses_state(A,removed), + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(remove_constraint_internal,A), + G=(H,(I==yes->E;D)), + remove_constraint_atom(A,B,C,I,H) + ; + delay_phase_end(validate_store_type_assumptions,generate_remove_body(A,B,C,D,E,F,G)) + ). +remove_constraint_atom(A,B,C,D,E) :- + make_name('$remove_constraint_internal_',A,F), + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + E=..[F,B,D] + ; + E=..[F,B,C,D] + ). +generate_remove_clause(A,B,C) :- + ( is_used_auxiliary_predicate(remove_constraint_internal,A) -> + B=[D|C], + D=(E:-F), + remove_constraint_atom(A,G,H,I,E), + generate_remove_body(A,G,H,I=no,I=yes,active,F) + ; + B=C + ). +generate_remove_body(A,B,C,D,E,F,G) :- + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + ( F==active -> + get_update_suspension_field(A,B,state,H,removed,I,J,K), + if_used_state(A,not_stored_yet,J,true,L), + if_used_state(A,not_stored_yet,(H==not_stored_yet->D;E),E,M) + ; + ( F==partner -> + get_update_suspension_field(A,B,state,H,removed,I,_,K), + L=true, + M=E + ) + ), + G=(I,L,K,M) + ; + static_suspension_term(A,N), + get_static_suspension_term_field(arguments,A,N,O), + generate_indexed_variables_body(A,O,P,C), + ( chr_pp_flag(debugable,on) -> + A=Q/_, + get_static_suspension_term_field(functor,A,N,Q) + ; + true + ), + ( F==active -> + get_update_static_suspension_field(A,B,N,state,H,removed,J,K), + if_used_state(A,not_stored_yet,J,true,L), + if_used_state(A,not_stored_yet,(H==not_stored_yet->C=[],D;P,E),(P,E),M) + ; + ( F==partner -> + get_update_static_suspension_field(A,B,N,state,H,removed,_,K), + L=true, + M=(P,E) + ) + ), + G=(B=N,L,K,M) + ). +generate_activate_clauses([],A,A). +generate_activate_clauses([A|B],C,D) :- + generate_activate_clause(A,C,E), + generate_activate_clauses(B,E,D). +activate_constraint_goal(A,B,C,D,E,F) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(activate_constraint,A), + F=(G,(H==yes->B;true)), + activate_constraint_atom(A,H,C,D,E,G) + ; + delay_phase_end(validate_store_type_assumptions,activate_constraint_body(A,B,true,C,D,E,F)) + ). +activate_constraint_atom(A,B,C,D,E,F) :- + make_name('$activate_constraint_',A,G), + ( chr_pp_flag(debugable,off), + only_ground_indexed_arguments(A) -> + F=..[G,B,D] + ; + ( chr_pp_flag(debugable,off), + may_trigger(A), + get_store_type(A,var_assoc_store(_,_)) -> + F=..[G,B,D,E] + ) + ; + ( chr_pp_flag(debugable,off), + may_trigger(A), + get_store_type(A,var_assoc_store(_,_)) -> + F=..[G,B,C,D,E] + ) + ; + F=..[G,B,C,D] + ). +generate_activate_clause(A,B,C) :- + ( is_used_auxiliary_predicate(activate_constraint,A) -> + B=[D|C], + D=(E:-F), + activate_constraint_atom(A,G,H,I,J,E), + activate_constraint_body(A,G=yes,G=no,H,I,J,F) + ; + B=C + ). +activate_constraint_body(A,B,C,D,E,F,G) :- + ( chr_pp_flag(debugable,off), + may_trigger(A), + uses_field(A,generation) -> + get_update_suspension_field(A,E,generation,H,F,I,J,K), + L=(I,J,F is H+1,K) + ; + L=true + ), + get_update_suspension_field(A,E,state,M,active,N,O,P), + if_used_state(A,not_stored_yet,O,true,Q), + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + if_used_state(A,not_stored_yet,(M==not_stored_yet->B;C),C,R) + ; + get_dynamic_suspension_term_field(arguments,A,E,S,T), + generate_indexed_variables_body(A,S,U,D), + ( chr_pp_flag(guard_locks,off) -> + V=true + ; + V='chr none_locked'(D) + ), + if_used_state(A,not_stored_yet,(M==not_stored_yet->T,U,V,B;C),C,R) + ), + G=(N,Q,P,L,R). +generate_allocate_clauses([],A,A). +generate_allocate_clauses([A|B],C,D) :- + generate_allocate_clause(A,C,E), + generate_allocate_clauses(B,E,D). +allocate_constraint_goal(A,B,C,D) :- + uses_state(A,not_stored_yet), + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(allocate_constraint,A), + allocate_constraint_atom(A,B,C,D) + ; + D=(B=E,F), + delay_phase_end(validate_store_type_assumptions,allocate_constraint_body(A,E,C,F)) + ). +allocate_constraint_atom(A,B,C,D) :- + make_name('$allocate_constraint_',A,E), + D=..[E,B|C]. +generate_allocate_clause(A,B,C) :- + ( is_used_auxiliary_predicate(allocate_constraint,A) -> + B=[D|C], + D=(E:-F), + A=_/G, + length(H,G), + allocate_constraint_atom(A,I,H,E), + allocate_constraint_body(A,I,H,F) + ; + B=C + ). +allocate_constraint_body(A,B,C,D) :- + static_suspension_term(A,E), + get_static_suspension_term_field(arguments,A,E,C), + ( chr_pp_flag(debugable,on) -> + A=F/_, + get_static_suspension_term_field(functor,A,E,F) + ; + true + ), + ( chr_pp_flag(debugable,on) -> + ( may_trigger(A) -> + append(C,[B],G), + build_head(_,_,[0],G,H), + get_target_module(I), + J=I:H + ; + J=true + ), + K=(B=E), + create_static_suspension_field(A,E,continuation,J,L), + create_static_suspension_field(A,E,generation,0,M) + ; + ( may_trigger(A), + uses_field(A,generation) -> + create_static_suspension_field(A,E,generation,0,M), + B=E, + K=true, + L=true + ) + ; + M=true, + B=E, + K=true, + L=true + ), + ( uses_history(A) -> + create_static_suspension_field(A,E,history,t,N) + ; + N=true + ), + create_static_suspension_field(A,E,state,not_stored_yet,O), + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,E,P), + gen_id(P,Q) + ; + Q=true + ), + D=(K,L,M,N,O,Q). +gen_id(A,'chr gen_id'(A)). +generate_insert_constraint_internal_clauses([],A,A). +generate_insert_constraint_internal_clauses([A|B],C,D) :- + generate_insert_constraint_internal_clause(A,C,E), + generate_insert_constraint_internal_clauses(B,E,D). +insert_constraint_internal_constraint_goal(A,B,C,D,E,F) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(remove_constraint_internal,A), + insert_constraint_internal_constraint_atom(A,B,C,D,E,F) + ; + delay_phase_end(validate_store_type_assumptions,generate_insert_constraint_internal_body(A,C,D,E,B,F)) + ). +insert_constraint_internal_constraint_atom(A,B,C,D,E,F) :- + insert_constraint_internal_constraint_name(A,G), + ( chr_pp_flag(debugable,on) -> + F=..[G,B,C,D|E] + ; + ( + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + F=..[G,C|E] + ) + ; + F=..[G,B,C|E] + ). +insert_constraint_internal_constraint_name(A,B) :- + make_name('$insert_constraint_internal_',A,B). +generate_insert_constraint_internal_clause(A,B,C) :- + ( is_used_auxiliary_predicate(insert_constraint_internal,A) -> + B=[D|C], + D=(E:-F), + A=_/G, + length(H,G), + insert_constraint_internal_constraint_atom(A,I,J,K,H,E), + generate_insert_constraint_internal_body(A,J,K,H,I,F) + ; + B=C + ). +generate_insert_constraint_internal_body(A,B,C,D,E,F) :- + static_suspension_term(A,G), + create_static_suspension_field(A,G,state,active,H), + ( chr_pp_flag(debugable,on) -> + get_static_suspension_term_field(continuation,A,G,C), + create_static_suspension_field(A,G,generation,0,I) + ; + ( may_trigger(A), + uses_field(A,generation) -> + create_static_suspension_field(A,G,generation,0,I) + ) + ; + I=true + ), + ( chr_pp_flag(debugable,on) -> + A=J/_, + get_static_suspension_term_field(functor,A,G,J) + ; + true + ), + ( uses_history(A) -> + create_static_suspension_field(A,G,history,t,K) + ; + K=true + ), + get_static_suspension_term_field(arguments,A,G,D), + _=[_|_], + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + suspension_term_base_fields(A,_), + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,G,L), + gen_id(L,M) + ; + M=true + ), + F=(B=G,H,I,K,M) + ; + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,G,L), + gen_id(L,M) + ; + M=true + ), + generate_indexed_variables_body(A,D,N,E), + ( chr_pp_flag(guard_locks,off) -> + O=true + ; + O='chr none_locked'(E) + ), + F=(B=G,N,O,H,I,K,M) + ). +generate_novel_production(A,B) :- + ( is_used_auxiliary_predicate(novel_production) -> + A=[C|B], + C=('$novel_production'(D,E):-arg(3,D,F),(hprolog:get_ds(E,F,_)->fail;true)) + ; + A=B + ). +generate_extend_history(A,B) :- + ( is_used_auxiliary_predicate(extend_history) -> + A=[C|B], + C=('$extend_history'(D,E):-arg(3,D,F),hprolog:put_ds(E,F,x,G),setarg(3,D,G)) + ; + A=B + ). +generate_empty_named_history_initialisations(A,B) :- + empty_named_history_initialisations(A,B), + find_empty_named_histories. +empty_named_history_global_variable(A,B) :- + atom_concat('chr empty named history ',A,B). +empty_named_history_novel_production(A,nb_getval(B,0)) :- + empty_named_history_global_variable(A,B). +empty_named_history_extend_history(A,b_setval(B,1)) :- + empty_named_history_global_variable(A,B). +generate_run_suspensions_clauses([],A,A). +generate_run_suspensions_clauses([A|B],C,D) :- + generate_run_suspensions_clause(A,C,E), + generate_run_suspensions_clauses(B,E,D). +run_suspensions_goal(A,B,C) :- + make_name('$run_suspensions_',A,D), + C=..[D,B]. +generate_run_suspensions_clause(A,B,C) :- + ( is_used_auxiliary_predicate(run_suspensions,A) -> + B=[D,E|C], + run_suspensions_goal(A,[],D), + ( chr_pp_flag(debugable,on) -> + run_suspensions_goal(A,[F|G],H), + get_update_suspension_field(A,F,state,I,triggered,J,K,L), + get_update_suspension_field(A,F,state,M,active,N,O,P), + get_update_suspension_field(A,F,generation,Q,R,S,T,U), + get_dynamic_suspension_term_field(continuation,A,F,V,W), + run_suspensions_goal(A,G,X), + E=(H:-J,K,(I==active->L,S,T,R is Q+1,U,W,('chr debug_event'(wake(F)),call(V);'chr debug_event'(fail(F)),!,fail),('chr debug_event'(exit(F));'chr debug_event'(redo(F)),fail),N,O,(M==triggered->P;true);true),X) + ; + run_suspensions_goal(A,[F|G],H), + static_suspension_term(A,Y), + get_static_suspension_term_field(arguments,A,Y,Z), + append(Z,[F],A1), + make_suspension_continuation_goal(A,A1,V), + run_suspensions_goal(A,G,X), + ( uses_field(A,generation) -> + get_update_static_suspension_field(A,F,Y,generation,Q,R,S,U), + B1=(S,R is Q+1,U) + ; + B1=true + ), + get_update_static_suspension_field(A,F,Y,state,I,triggered,J,L), + get_update_static_suspension_field(A,F,Y,state,M,active,C1,D1), + if_used_state(A,removed,(J,(I==active->E1;true)),E1,F1), + E1=(L,B1,V,C1,(M==triggered->D1;true)), + E=(H:-F=Y,F1,X) + ) + ; + B=C + ). +generate_attach_increment(A) :- + get_max_constraint_index(B), + ( is_used_auxiliary_predicate(attach_increment), + B>0 -> + A=[C,D], + generate_attach_increment_empty(C), + ( B==1 -> + generate_attach_increment_one(D) + ; + generate_attach_increment_many(B,D) + ) + ; + A=[] + ). +generate_attach_increment_empty((attach_increment([],_):-true)). +generate_attach_increment_one(A) :- + B=attach_increment([C|D],E), + get_target_module(F), + ( chr_pp_flag(guard_locks,off) -> + G=true + ; + G='chr not_locked'(C) + ), + H=(G,(get_attr(C,F,I)->sort(I,J),'chr merge_attributes'(E,J,K),put_attr(C,F,K);put_attr(C,F,E)),attach_increment(D,E)), + A=(B:-H). +generate_attach_increment_many(A,B) :- + C=attach_increment([D|E],F), + merge_attributes(A,F,G,H,I), + get_target_module(J), + ( chr_pp_flag(guard_locks,off) -> + K=true + ; + K='chr not_locked'(D) + ), + L=(K,(get_attr(D,J,G)->H,put_attr(D,J,I);put_attr(D,J,F)),attach_increment(E,F)), + B=(C:-L). +generate_attr_unify_hook(A) :- + get_max_constraint_index(B), + ( B==0 -> + A=[] + ; + ( B==1 -> + generate_attr_unify_hook_one(A) + ) + ; + generate_attr_unify_hook_many(B,A) + ). +generate_attr_unify_hook_one([A]) :- + B=attr_unify_hook(C,D), + get_target_module(E), + get_indexed_constraint(1,F), + ( get_store_type(F,G), + ( + G=default + ; + G=multi_store(H), + memberchk(default,H) + ) -> + make_run_suspensions(I,J,K), + make_run_suspensions(J,J,L), + ( atomic_types_suspended_constraint(F) -> + M=true, + J=C, + N=true, + O=P, + Q=(append(C,P,R),sort(R,I)), + S=true + ; + M=sort(C,J), + N=sort(P,O), + Q='chr merge_attributes'(J,O,I), + use_auxiliary_predicate(attach_increment), + S=(compound(D)->term_variables(D,T),attach_increment(T,J);true) + ), + U=(M,(var(D)->(get_attr(D,E,P)->N,Q,put_attr(D,E,I),K;put_attr(D,E,J),L);S,L)), + A=(B:-U) + ; + ( get_store_type(F,var_assoc_store(_,_)) -> + make_run_suspensions(R,R,K), + Q=merge_into_assoc_store(C,P,R), + U=(get_attr(D,E,P)->Q,K;put_attr(D,E,C)), + A=(B:-U) + ) + ). +generate_attr_unify_hook_many(A,[B]) :- + chr_pp_flag(dynattr,off), + !, + C=attr_unify_hook(D,E), + get_target_module(F), + make_attr(A,G,H,D), + bagof(I,J^K^(member(J,H),I=sort(J,K)),L), + list2conj(L,M), + bagof(K,J^member(sort(J,K),L),N), + merge_attributes2(A,G,N,O,P,Q), + get_all_suspensions2(A,Q,R), + make_attr(A,G,N,S), + make_run_suspensions_loop(R,N,T), + make_run_suspensions_loop(N,N,U), + ( forall((between(1,A,V),get_indexed_constraint(V,W)),atomic_types_suspended_constraint(W)) -> + X=true + ; + use_auxiliary_predicate(attach_increment), + X=(compound(E)->term_variables(E,Y),attach_increment(Y,S);true) + ), + Z=(M,(var(E)->(get_attr(E,F,O)->P,put_attr(E,F,Q),T;put_attr(E,F,S),U);X,U)), + B=(C:-Z). +generate_attr_unify_hook_many(A,B) :- + C=attr_unify_hook(D,E), + get_target_module(F), + normalize_attr(D,G,H), + normalize_attr(I,J,K), + merge_attributes(A,H,K,L,M), + make_run_suspensions(A), + ( forall((between(1,A,N),get_indexed_constraint(N,O)),atomic_types_suspended_constraint(O)) -> + P=true + ; + use_auxiliary_predicate(attach_increment), + P=(compound(E)->term_variables(E,Q),attach_increment(Q,H);true) + ), + R=(G,(var(E)->(get_attr(E,F,I)->J,L,put_attr(E,F,M),'$dispatch_run_suspensions'(M);put_attr(E,F,H),'$dispatch_run_suspensions'(H));P,'$dispatch_run_suspensions'(H))), + S=(C:-R), + B=[S,T,U|V], + T='$dispatch_run_suspensions'([]), + U=('$dispatch_run_suspensions'([W-X|Y]):-'$dispatch_run_suspensions'(W,X),'$dispatch_run_suspensions'(Y)), + run_suspensions_dispatchers(A,[],V). +run_suspensions_dispatchers(A,B,C) :- + ( A>0 -> + get_indexed_constraint(A,D), + E=[('$dispatch_run_suspensions'(A,F):-G)|B], + ( may_trigger(D) -> + run_suspensions_goal(D,F,G) + ; + G=true + ), + H is A-1, + run_suspensions_dispatchers(H,E,C) + ; + C=B + ). +make_run_suspensions(A) :- + ( A>0 -> + ( get_indexed_constraint(A,B), + may_trigger(B) -> + use_auxiliary_predicate(run_suspensions,B) + ; + true + ), + C is A-1, + make_run_suspensions(C) + ; + true + ). +make_run_suspensions(A,B,C) :- + make_run_suspensions(1,A,B,C). +make_run_suspensions(A,B,C,D) :- + ( get_indexed_constraint(A,E), + may_trigger(E) -> + use_auxiliary_predicate(run_suspensions,E), + ( wakes_partially(E) -> + run_suspensions_goal(E,C,D) + ; + run_suspensions_goal(E,B,D) + ) + ; + D=true + ). +make_run_suspensions_loop(A,B,C) :- + make_run_suspensions_loop(A,B,1,C). +make_run_suspensions_loop([],[],_,true). +make_run_suspensions_loop([A|B],[C|D],E,(F,G)) :- + make_run_suspensions(E,A,C,F), + H is E+1, + make_run_suspensions_loop(B,D,H,G). +generate_insert_delete_constraints([],[]). +generate_insert_delete_constraints([A|B],C) :- + ( is_stored(A) -> + generate_insert_delete_constraint(A,C,D) + ; + C=D + ), + generate_insert_delete_constraints(B,D). +generate_insert_delete_constraint(A,B,C) :- + insert_constraint_clause(A,B,D), + delete_constraint_clause(A,D,C). +insert_constraint_goal(A,B,C,D) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(insert_in_store,A), + insert_constraint_atom(A,B,D) + ; + delay_phase_end(validate_store_type_assumptions,(insert_constraint_body(A,B,E,D),insert_constraint_direct_used_vars(E,C))) + ). +insert_constraint_direct_used_vars([],_). +insert_constraint_direct_used_vars([A-B|C],D) :- + nth1(A,D,B), + insert_constraint_direct_used_vars(C,D). +insert_constraint_atom(A,B,C) :- + make_name('$insert_in_store_',A,D), + C=..[D,B]. +insert_constraint_clause(A,B,C) :- + ( is_used_auxiliary_predicate(insert_in_store,A) -> + B=[D|C], + D=(E:-F,G,H), + insert_constraint_atom(A,I,E), + insert_constraint_body(A,I,J,H), + insert_constraint_used_vars(J,A,I,G), + ( chr_pp_flag(store_counter,on) -> + F='$insert_counter_inc' + ; + F=true + ) + ; + B=C + ). +insert_constraint_used_vars([],_,_,true). +insert_constraint_used_vars([A-B|C],D,E,(F,G)) :- + get_dynamic_suspension_term_field(argument(A),D,E,B,F), + insert_constraint_used_vars(C,D,E,G). +insert_constraint_body(A,B,C,D) :- + get_store_type(A,E), + insert_constraint_body(E,A,B,C,D). +insert_constraint_body(default,A,B,[],C) :- + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + ( chr_pp_flag(debugable,on) -> + G=[B|E], + C=(F,H) + ; + set_dynamic_suspension_term_field(global_list_prev,A,I,G,J), + C=(F,G=[B|E],H,(E=[I|_]->J;true)) + ). +insert_constraint_body(multi_inthash(A),B,C,[],D) :- + generate_multi_inthash_insert_constraint_bodies(A,B,C,D). +insert_constraint_body(multi_hash(A),B,C,D,E) :- + generate_multi_hash_insert_constraint_bodies(A,B,C,E,D), + sort_out_used_vars(D,_). +insert_constraint_body(atomic_constants(A,_,_),B,C,D,E) :- + multi_hash_key_direct(B,A,C,F,D), + constants_store_index_name(B,A,G), + H=..[G,F,I], + E=(H->nb_getval(I,J),b_setval(I,[C|J]);true). +insert_constraint_body(ground_constants(A,_,_),B,C,D,E) :- + multi_hash_key_direct(B,A,C,F,D), + constants_store_index_name(B,A,G), + H=..[G,F,I], + E=(H->nb_getval(I,J),b_setval(I,[C|J]);true). +insert_constraint_body(global_ground,A,B,[],C) :- + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + ( chr_pp_flag(debugable,on) -> + G=[B|E], + C=(F,H) + ; + set_dynamic_suspension_term_field(global_list_prev,A,I,G,J), + C=(F,G=[B|E],H,(E=[I|_]->J;true)) + ). +insert_constraint_body(var_assoc_store(A,B),_,C,[A-D,B-E],F) :- + get_target_module(G), + F=(get_attr(D,G,H)->insert_assoc_store(H,E,C);new_assoc_store(H),put_attr(D,G,H),insert_assoc_store(H,E,C)). +insert_constraint_body(global_singleton,A,B,[],C) :- + global_singleton_store_name(A,D), + make_update_store_goal(D,B,E), + C=E. +insert_constraint_body(multi_store(A),B,C,D,E) :- + maplist(insert_constraint_body1(B,C),A,F,G), + list2conj(G,E), + sort_out_used_vars(F,D). +insert_constraint_body1(A,B,C,D,E) :- + insert_constraint_body(C,A,B,D,E). +insert_constraint_body(identifier_store(A),B,C,D,E) :- + D=[A-F], + get_identifier_size(G), + functor(H,struct,G), + get_identifier_index(B,A,I), + arg(I,H,J), + E=(F=H,setarg(I,F,[C|J])). +insert_constraint_body(type_indexed_identifier_store(A,B),C,D,E,F) :- + E=[A-G], + type_indexed_identifier_structure(B,H), + get_type_indexed_identifier_index(B,C,A,I), + arg(I,H,J), + F=(G=H,setarg(I,G,[D|J])). +sort_out_used_vars(A,B) :- + flatten(A,C), + sort(C,D), + sort_out_used_vars1(D,B). +sort_out_used_vars1([],[]). +sort_out_used_vars1([A-B],C) :- + !, + C=[A-B]. +sort_out_used_vars1([A-B,C-D|E],F) :- + ( A==C -> + B=D, + sort_out_used_vars1([A-B|E],F) + ; + F=[A-B|G], + sort_out_used_vars1([C-D|E],G) + ). +generate_multi_inthash_insert_constraint_bodies([],_,_,true). +generate_multi_inthash_insert_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + E=(H,nb_getval(G,J),insert_iht(J,I,D)), + generate_multi_inthash_insert_constraint_bodies(B,C,D,F). +generate_multi_hash_insert_constraint_bodies([],_,_,true,[]). +generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F),[G|H]) :- + multi_hash_store_name(C,A,I), + multi_hash_key_direct(C,A,D,J,G), + make_get_store_goal(I,K,L), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_field(A,M), + set_dynamic_suspension_term_field(M,C,N,O,P), + E=(L,insert_ht(K,J,D,O),(O=[_,N|_]->P;true)) + ; + E=(L,insert_ht(K,J,D)) + ), + generate_multi_hash_insert_constraint_bodies(B,C,D,F,H). +delete_constraint_clause(A,B,C) :- + ( is_used_auxiliary_predicate(delete_from_store,A) -> + B=[D|C], + D=(E:-F), + delete_constraint_atom(A,G,E), + A=H/I, + functor(E,H,I), + delete_constraint_body(A,E,G,[],F) + ; + B=C + ). +delete_constraint_goal(A,B,C,D) :- + functor(A,E,F), + G=E/F, + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(delete_from_store,G), + delete_constraint_atom(G,B,D) + ; + delay_phase_end(validate_store_type_assumptions,delete_constraint_body(G,A,B,C,D)) + ). +delete_constraint_atom(A,B,C) :- + make_name('$delete_from_store_',A,D), + C=..[D,B]. +delete_constraint_body(A,B,C,D,E) :- + E=(F,G), + ( chr_pp_flag(store_counter,on) -> + F='$delete_counter_inc' + ; + F=true + ), + get_store_type(A,H), + delete_constraint_body(H,A,B,C,D,G). +delete_constraint_body(default,A,_,B,_,C) :- + ( chr_pp_flag(debugable,on) -> + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H) + ; + get_dynamic_suspension_term_field(global_list_prev,A,B,I,J), + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,K,H), + set_dynamic_suspension_term_field(global_list_prev,A,L,_,M), + set_dynamic_suspension_term_field(global_list_prev,A,L,I,N), + C=(J,(var(I)->F,E=[_|K],H,(K=[L|_]->M;true);I=[_,_|K],setarg(2,I,K),(K=[L|_]->N;true))) + ). +delete_constraint_body(multi_inthash(A),B,_,C,_,D) :- + generate_multi_inthash_delete_constraint_bodies(A,B,C,D). +delete_constraint_body(multi_hash(A),B,C,D,E,F) :- + generate_multi_hash_delete_constraint_bodies(A,B,C,D,E,F). +delete_constraint_body(atomic_constants(A,_,_),B,C,D,E,F) :- + multi_hash_key(B,C,A,D,E,G,H), + constants_store_index_name(B,A,I), + J=..[I,H,K], + F=(G,(J->nb_getval(K,L),'chr sbag_del_element'(L,D,M),b_setval(K,M);true)). +delete_constraint_body(ground_constants(A,_,_),B,C,D,E,F) :- + multi_hash_key(B,C,A,D,E,G,H), + constants_store_index_name(B,A,I), + J=..[I,H,K], + F=(G,(J->nb_getval(K,L),'chr sbag_del_element'(L,D,M),b_setval(K,M);true)). +delete_constraint_body(global_ground,A,_,B,_,C) :- + ( chr_pp_flag(debugable,on) -> + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H) + ; + get_dynamic_suspension_term_field(global_list_prev,A,B,I,J), + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,K,H), + set_dynamic_suspension_term_field(global_list_prev,A,L,_,M), + set_dynamic_suspension_term_field(global_list_prev,A,L,I,N), + C=(J,(var(I)->F,E=[_|K],H,(K=[L|_]->M;true);I=[_,_|K],setarg(2,I,K),(K=[L|_]->N;true))) + ). +delete_constraint_body(var_assoc_store(A,B),C,_,D,_,E) :- + get_target_module(F), + get_dynamic_suspension_term_field(argument(A),C,D,G,H), + get_dynamic_suspension_term_field(argument(B),C,D,I,J), + E=(H,get_attr(G,F,K),J,delete_assoc_store(K,I,D)). +delete_constraint_body(global_singleton,A,_,_,_,B) :- + global_singleton_store_name(A,C), + make_update_store_goal(C,[],D), + B=D. +delete_constraint_body(multi_store(A),B,C,D,E,F) :- + maplist(delete_constraint_body1(B,C,D,E),A,G), + list2conj(G,F). +delete_constraint_body1(A,B,C,D,E,F) :- + delete_constraint_body(E,A,B,C,D,F). +delete_constraint_body(identifier_store(A),B,C,D,E,F) :- + get_suspension_argument_possibly_in_scope(C,E,D,A,G,H), + get_identifier_size(I), + functor(J,struct,I), + get_identifier_index(B,A,K), + arg(K,J,L), + F=(H,G=J,'chr sbag_del_element'(L,D,M),setarg(K,G,M)). +delete_constraint_body(type_indexed_identifier_store(A,B),C,D,E,F,G) :- + get_suspension_argument_possibly_in_scope(D,F,E,A,H,I), + type_indexed_identifier_structure(B,J), + get_type_indexed_identifier_index(B,C,A,K), + arg(K,J,L), + G=(I,H=J,'chr sbag_del_element'(L,E,M),setarg(K,H,M)). +generate_multi_inthash_delete_constraint_bodies([],_,_,true). +generate_multi_inthash_delete_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + E=(H,nb_getval(G,J),delete_iht(J,I,D)), + generate_multi_inthash_delete_constraint_bodies(B,C,D,F). +generate_multi_hash_delete_constraint_bodies([],_,_,_,_,true). +generate_multi_hash_delete_constraint_bodies([A|B],C,D,E,F,(G,H)) :- + multi_hash_store_name(C,A,I), + multi_hash_key(C,D,A,E,F,J,K), + make_get_store_goal(I,L,M), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_field(A,N), + get_dynamic_suspension_term_field(N,C,E,O,P), + set_dynamic_suspension_term_field(N,C,Q,_,R), + set_dynamic_suspension_term_field(N,C,Q,O,S), + G=(P,(var(O)->M,J,delete_first_ht(L,K,T),(T=[Q|_]->R;true);O=[_,_|T],setarg(2,O,T),(T=[Q|_]->S;true))) + ; + G=(J,M,delete_ht(L,K,E)) + ), + generate_multi_hash_delete_constraint_bodies(B,_,D,E,F,H). +generate_attach_code(A,B) :- + enumerate_stores_code(A,C), + append(C,D,B), + generate_attach_code(A,D,E), + module_initializers(F), + prolog_global_variables_code(G), + E=[('$chr_initialization':-F),(:-initialization '$chr_initialization')|G]. +generate_attach_code([],A,A). +generate_attach_code([A|B],C,D) :- + get_store_type(A,E), + generate_attach_code(E,A,C,F), + generate_attach_code(B,F,D). +generate_attach_code(default,A,B,C) :- + global_list_store_initialisation(A,B,C). +generate_attach_code(multi_inthash(A),B,C,D) :- + multi_inthash_store_initialisations(A,B,C,E), + multi_inthash_via_lookups(A,B,E,D). +generate_attach_code(multi_hash(A),B,C,D) :- + multi_hash_store_initialisations(A,B,C,E), + multi_hash_lookups(A,B,E,D). +generate_attach_code(atomic_constants(A,B,_),C,D,E) :- + constants_initializers(C,A,B), + atomic_constants_code(C,A,B,D,E). +generate_attach_code(ground_constants(A,B,_),C,D,E) :- + constants_initializers(C,A,B), + ground_constants_code(C,A,B,D,E). +generate_attach_code(global_ground,A,B,C) :- + global_ground_store_initialisation(A,B,C). +generate_attach_code(var_assoc_store(_,_),_,A,A) :- + use_auxiliary_module(chr_assoc_store). +generate_attach_code(global_singleton,A,B,C) :- + global_singleton_store_initialisation(A,B,C). +generate_attach_code(multi_store(A),B,C,D) :- + multi_store_generate_attach_code(A,B,C,D). +generate_attach_code(identifier_store(A),B,C,D) :- + get_identifier_index(B,A,E), + ( E==2 -> + get_identifier_size(F), + functor(G,struct,F), + G=..[_,H|I], + set_elems(I,[]), + J=new_identifier(H,G), + functor(K,struct,F), + arg(1,K,L), + M=(user:portray(K):-write(')), + functor(N,struct,F), + arg(1,N,O), + P=identifier_label(N,O), + C=[J,M,P|D] + ; + C=D + ). +generate_attach_code(type_indexed_identifier_store(A,B),C,D,E) :- + get_type_indexed_identifier_index(B,C,A,F), + ( F==2 -> + identifier_store_initialization(B,D,G), + get_type_indexed_identifier_size(B,_), + type_indexed_identifier_structure(B,H), + H=..[_,I|J], + set_elems(J,[]), + type_indexed_identifier_name(B,new_identifier,K), + L=..[K,I,H], + M=..[K,N,O], + type_indexed_identifier_structure(B,P), + P=..[_,N|Q], + set_elems(Q,[]), + R=(O=P), + S=user:goal_expansion(M,R), + type_indexed_identifier_structure(B,T), + arg(1,T,U), + V=(user:portray(T):-write(')), + type_indexed_identifier_structure(B,W), + arg(1,W,X), + type_indexed_identifier_name(B,identifier_label,Y), + Z=..[Y,W,X], + A1=..[Y,_,B1], + type_indexed_identifier_structure(B,C1), + arg(1,C1,B1), + D1=(_=C1), + E1=(user:goal_expansion(A1,D1):-writeln(expanding)), + identifier_store_name(B,F1), + lookup_identifier_atom(B,G1,H1,I1), + type_indexed_identifier_name(B,new_identifier,J1), + K1=..[J1,G1,H1], + L1=(I1:-nb_getval(F1,M1),(lookup_ht(M1,G1,[H1])->true;K1,insert_ht(M1,G1,H1))), + G=[(:-multifile goal_expansion/2),(:-dynamic goal_expansion/2),L,S,V,Z,E1,L1|E] + ; + D=E + ). +constants_initializers(A,B,C) :- + maplist(constant_initializer(A,B),C). +constant_initializer(A,B,C) :- + constants_store_name(A,B,C,D), + module_initializer(nb_setval(D,[])). +lookup_identifier_atom(A,B,C,D) :- + atom_concat(lookup_identifier_,A,E), + D=..[E,B,C]. +identifier_label_atom(A,B,C,D) :- + type_indexed_identifier_name(A,identifier_label,E), + D=..[E,B,C]. +multi_store_generate_attach_code([],_,A,A). +multi_store_generate_attach_code([A|B],C,D,E) :- + generate_attach_code(A,C,D,F), + multi_store_generate_attach_code(B,C,F,E). +multi_inthash_store_initialisations([],_,A,A). +multi_inthash_store_initialisations([A|B],C,D,E) :- + use_auxiliary_module(chr_integertable_store), + multi_hash_store_name(C,A,F), + module_initializer((new_iht(G),nb_setval(F,G))), + H=D, + multi_inthash_store_initialisations(B,C,H,E). +multi_hash_store_initialisations([],_,A,A). +multi_hash_store_initialisations([A|B],C,D,E) :- + use_auxiliary_module(chr_hashtable_store), + multi_hash_store_name(C,A,F), + prolog_global_variable(F), + make_init_store_goal(F,G,H), + module_initializer((new_ht(G),H)), + I=D, + multi_hash_store_initialisations(B,C,I,E). +global_list_store_initialisation(A,B,C) :- + ( is_stored(A) -> + global_list_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E) + ; + true + ), + B=C. +global_ground_store_initialisation(A,B,C) :- + global_ground_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E), + B=C. +global_singleton_store_initialisation(A,B,C) :- + global_singleton_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E), + B=C. +identifier_store_initialization(A,B,C) :- + use_auxiliary_module(chr_hashtable_store), + identifier_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,E,F), + module_initializer((new_ht(E),F)), + B=C. +multi_inthash_via_lookups([],_,A,A). +multi_inthash_via_lookups([A|B],C,D,E) :- + multi_hash_lookup_head(C,A,F,G,H), + multi_hash_lookup_body(C,inthash,A,F,G,I), + D=[(H:-I)|J], + multi_inthash_via_lookups(B,C,J,E). +multi_hash_lookups([],_,A,A). +multi_hash_lookups([A|B],C,D,E) :- + multi_hash_lookup_head(C,A,F,G,H), + multi_hash_lookup_body(C,hash,A,F,G,I), + D=[(H:-I)|J], + multi_hash_lookups(B,C,J,E). +multi_hash_lookup_head(A,B,C,D,E) :- + multi_hash_lookup_name(A,B,F), + E=..[F,C,D]. +multi_hash_lookup_body(A,B,C,D,E,F) :- + get_store_type(A,multi_store(G)), + ( memberchk(atomic_constants(C,H,_),G) -> + ( ground(D) -> + constants_store_name(A,C,D,I), + F=nb_getval(I,E) + ; + constants_store_index_name(A,C,J), + K=..[J,D,I], + F=(K,nb_getval(I,E)) + ) + ; + ( memberchk(ground_constants(C,H,_),G) -> + ( ground(D) -> + constants_store_name(A,C,D,I), + F=nb_getval(I,E) + ; + constants_store_index_name(A,C,J), + K=..[J,D,I], + F=(K,nb_getval(I,E)) + ) + ) + ; + ( memberchk(multi_hash([C]),G) -> + multi_hash_store_name(A,C,I), + make_get_store_goal(I,L,M), + ( B==hash, + specialized_hash_term_call(A,C,D,N,O) -> + F=(M,O,lookup_ht1(L,N,D,E)) + ; + lookup_hash_call(B,L,D,E,K), + F=(M,K) + ) + ) + ; + ( B==inthash -> + multi_hash_store_name(A,C,I), + make_get_store_goal(I,L,M), + lookup_hash_call(B,L,D,E,K), + F=(M,K) + ) + ). +lookup_hash_call(hash,A,B,C,lookup_ht(A,B,C)). +lookup_hash_call(inthash,A,B,C,lookup_iht(A,B,C)). +specialized_hash_term_call(A,B,C,D,E) :- + ( ground(C) -> + hash_term(C,D), + E=true + ; + ( B=[F], + get_constraint_type(A,G), + nth1(F,G,H), + unalias_type(H,I), + memberchk_eq(I,[int,natural]) -> + ( I==int -> + E=(D is abs(C)) + ; + D=C, + E=true + ) + ) + ; + nonvar(C), + specialize_hash_term(C,J), + J\==C, + E=hash_term(J,D) + ). +specialize_hash_term(A,B) :- + ( ground(A) -> + hash_term(A,B) + ; + ( var(A) -> + B=A + ) + ; + A=..[C|D], + maplist(specialize_hash_term,D,E), + B=..[C|E] + ). +multi_hash_lookup_goal(A,B,C,D,E,F) :- + ( atomic(D) -> + actual_atomic_multi_hash_keys(A,C,[D]) + ; + ( ground(D) -> + actual_ground_multi_hash_keys(A,C,[D]) + ) + ; + ( C=[G], + get_constraint_arg_type(A,G,H), + is_chr_constants_type(H,_,_) -> + true + ) + ; + actual_non_ground_multi_hash_key(A,C) + ), + delay_phase_end(validate_store_type_assumptions,multi_hash_lookup_body(A,B,C,D,E,F)). +multi_hash_lookup_name(A/B,C,D) :- + atom_concat_list(C,E), + atom_concat_list(['$via1_multi_hash_',A,'___',B,-,E],D). +multi_hash_store_name(A/B,C,D) :- + get_target_module(E), + atom_concat_list(C,F), + atom_concat_list(['$chr_store_multi_hash_',E,'____',A,'___',B,-,F],D). +multi_hash_key(A,B,C,D,E) :- + ( B=[F] -> + get_dynamic_suspension_term_field(argument(F),A,C,E,D) + ; + maplist(get_dynamic_suspension_term_field1(A,C),B,G,H), + E=..[k|G], + list2conj(H,D) + ). +get_dynamic_suspension_term_field1(A,B,C,D,E) :- + get_dynamic_suspension_term_field(argument(C),A,B,D,E). +multi_hash_key(_,A,B,C,D,E,F) :- + ( B=[G] -> + get_suspension_argument_possibly_in_scope(A,D,C,G,F,E) + ; + maplist(get_suspension_argument_possibly_in_scope(A,D,C),B,H,I), + F=..[k|H], + list2conj(I,E) + ). +get_suspension_argument_possibly_in_scope(A,B,C,D,E,F) :- + arg(D,A,G), + ( term_variables(G,H), + copy_term_nat(G-H,E-I), + translate(H,B,I) -> + F=true + ; + functor(A,J,K), + L=J/K, + get_dynamic_suspension_term_field(argument(D),L,C,E,F) + ). +multi_hash_key_direct(_,A,_,B,C) :- + ( A=[D] -> + C=[D-B] + ; + pairup(A,E,C), + B=..[k|E] + ). +multi_hash_key_args(A,B,C) :- + maplist(arg1(B),A,C). +atomic_constants_code(A,B,C,D,E) :- + constants_store_index_name(A,B,F), + maplist(atomic_constant_code(A,B,F),C,G), + append(G,E,D). +atomic_constant_code(A,B,C,D,E) :- + constants_store_name(A,B,D,F), + E=..[C,D,F]. +ground_constants_code(A,B,C,D,E) :- + constants_store_index_name(A,B,F), + maplist(constants_store_name(A,B),C,G), + length(C,H), + replicate(H,[],I), + trie_index([C|I],G,F,D,E). +constants_store_name(A/B,C,D,E) :- + get_target_module(F), + term_to_atom(D,G), + term_to_atom(C,H), + atom_concat_list(['$chr_store_constants_',F,'____',A,'___',B,'___',H,'___',G],E). +constants_store_index_name(A/B,C,D) :- + get_target_module(E), + term_to_atom(C,F), + atom_concat_list(['$chr_store_constants_',E,'____',A,'___',B,'___',F],D). +trie_index([A|B],C,D,E,F) :- + trie_step(A,D,D,B,C,E,F). +trie_step([],_,_,[],[],A,A) :- + !. +trie_step(A,B,C,D,E,F,G) :- + D=[H|_], + length(H,I), + aggregate_all(set(J/K),(member(L,A),functor(L,J,K)),M), + N is I+1, + trie_step_cases(M,N,A,D,E,B,C,F,G). +trie_step_cases([],_,_,_,_,_,_,A,A). +trie_step_cases([A|B],C,D,E,F,G,H,I,J) :- + trie_step_case(A,C,D,E,F,G,H,I,K), + trie_step_cases(B,C,D,E,F,G,H,K,J). +trie_step_case(A/B,C,D,E,F,G,H,[I|J],K) :- + I=(L:-M), + N is C+1, + functor(L,G,N), + arg(1,L,O), + L=..[_,_|P], + once(append(Q,[R],P)), + functor(O,A,B), + O=..[_|S], + append(S,P,T), + ( T==[R] -> + J=K, + M=true, + rec_cases(D,_,F,A/B,_,_,U), + U=[R] + ; + rec_cases(D,E,F,A/B,V,W,U), + ( W=[X] -> + J=K, + M=true, + append([V,X,U],T) + ; + pairup(V,W,Y), + common_pattern(Y,Z,A1,B1), + append(S,Q,[C1|D1]), + C1-D1=Z, + gensym(H,E1), + append(A1,[R],F1), + M=..[E1|F1], + maplist(head_tail,B1,G1,H1), + trie_step(G1,E1,H,H1,U,J,K) + ) + ). +head_tail([A|B],A,B). +rec_cases([],[],[],_,[],[],[]). +rec_cases([A|B],[C|D],[E|F],G/H,I,J,K) :- + ( functor(A,G,H), + A=..[_|L], + append(L,C,[M|N]) -> + I=[M|O], + J=[N|P], + K=[E|Q], + rec_cases(B,D,F,G/H,O,P,Q) + ; + rec_cases(B,D,F,G/H,I,J,K) + ). +common_pattern(A,B,C,D) :- + fold1(gct,A,B), + term_variables(B,C), + findall(C,member(B,A),D). +gct(A,B,C) :- + gct_(A,B,C,[],_). +gct_(A,B,C,D,E) :- + ( nonvar(A), + nonvar(B), + functor(A,F,G), + functor(B,H,I), + F==H, + G==I -> + functor(C,F,G), + A=..[_|J], + B=..[_|K], + C=..[_|L], + maplist_dcg(gct_,J,K,L,D,E) + ; + ( lookup_eq(D,A+B,C) -> + E=D + ) + ; + E=[A+B-C|D] + ). +fold1(A,[B|C],D) :- + fold(C,A,B,D). +fold([],_,A,A). +fold([A|B],C,D,E) :- + call(C,A,D,F), + fold(B,C,F,E). +maplist_dcg(A,B,C,D)-->maplist_dcg_(B,C,D,A). +maplist_dcg_([],[],[],_)-->[]. +maplist_dcg_([A|B],[C|D],[E|F],G)-->call(G,A,C,E),maplist_dcg_(B,D,F,G). +global_list_store_name(A/B,C) :- + get_target_module(D), + atom_concat_list(['$chr_store_global_list_',D,'____',A,'___',B],C). +global_ground_store_name(A/B,C) :- + get_target_module(D), + atom_concat_list(['$chr_store_global_ground_',D,'____',A,'___',B],C). +global_singleton_store_name(A/B,C) :- + get_target_module(D), + atom_concat_list(['$chr_store_global_singleton_',D,'____',A,'___',B],C). +identifier_store_name(A,B) :- + get_target_module(C), + atom_concat_list(['$chr_identifier_lookup_',C,'____',A],B). +prolog_global_variables_code(A) :- + prolog_global_variables(B), + ( B==[] -> + A=[] + ; + maplist(wrap_in_functor('$chr_prolog_global_variable'),B,C), + A=[(:-dynamic user:exception/3),(:-multifile user:exception/3),(user:exception(undefined_global_variable,D,retry):-'$chr_prolog_global_variable'(D),'$chr_initialization')|C] + ). +sbag_member_call(A,B,'chr sbag_member'(A,B)). +update_mutable_call(A,B,'chr update_mutable'(A,B)). +create_mutable_call(A,B,true) :- + B=mutable(A). +get_suspension_field(A,B,C,D,E) :- + get_dynamic_suspension_term_field(C,A,B,D,E). +update_suspension_field(A,B,C,D,E) :- + set_dynamic_suspension_term_field(C,A,B,D,E). +get_update_suspension_field(A,B,C,D,E,true,F,G) :- + get_dynamic_suspension_term_field(C,A,B,D,F), + set_dynamic_suspension_term_field(C,A,B,E,G). +create_static_suspension_field(A,B,C,D,true) :- + get_static_suspension_term_field(C,A,B,D). +get_static_suspension_field(A,B,C,D,true) :- + get_static_suspension_term_field(C,A,B,D). +get_update_static_suspension_field(A,B,C,D,E,F,true,G) :- + get_static_suspension_term_field(D,A,C,E), + set_dynamic_suspension_term_field(D,A,B,F,G). +enumerate_stores_code(A,[B|C]) :- + D='$enumerate_constraints'(E), + B=(D:-F), + enumerate_store_bodies(A,E,C), + ( C=[] -> + F=fail + ; + F=(nonvar(E)->functor(E,G,_),'$enumerate_constraints'(G,E);'$enumerate_constraints'(_,E)) + ). +enumerate_store_bodies([],_,[]). +enumerate_store_bodies([A|B],C,D) :- + ( is_stored(A) -> + get_store_type(A,E), + ( enumerate_store_body(E,A,F,G) -> + true + ; + chr_error(internal,'Could not generate enumeration code for constraint ~w. +',[A]) + ), + get_dynamic_suspension_term_field(arguments,A,F,H,I), + A=J/_, + K=..[J|H], + L='$enumerate_constraints'(J,C), + M=(G,I,C=K), + D=[(L:-M)|N] + ; + D=N + ), + enumerate_store_bodies(B,C,N). +enumerate_store_body(default,A,B,C) :- + global_list_store_name(A,D), + sbag_member_call(B,E,F), + make_get_store_goal(D,E,G), + C=(G,F). +enumerate_store_body(multi_inthash([A|_]),B,C,D) :- + multi_inthash_enumerate_store_body(A,B,C,D). +enumerate_store_body(multi_hash([A|_]),B,C,D) :- + multi_hash_enumerate_store_body(A,B,C,D). +enumerate_store_body(atomic_constants(A,B,C),D,E,F) :- + C==complete, + maplist(enumerate_constant_store_body(D,A,G),B,H), + list2disj(H,I), + F=(I,member(E,G)). +enumerate_constant_store_body(A,B,C,D,nb_getval(E,C)) :- + constants_store_name(A,B,D,E). +enumerate_store_body(ground_constants(A,B,C),D,E,F) :- + enumerate_store_body(atomic_constants(A,B,C),D,E,F). +enumerate_store_body(global_ground,A,B,C) :- + global_ground_store_name(A,D), + sbag_member_call(B,E,F), + make_get_store_goal(D,E,G), + C=(G,F). +enumerate_store_body(var_assoc_store(_,_),_,_,A) :- + A=fail. +enumerate_store_body(global_singleton,A,B,C) :- + global_singleton_store_name(A,D), + make_get_store_goal(D,B,E), + C=(E,B\==[]). +enumerate_store_body(multi_store(A),B,C,D) :- + ( memberchk(global_ground,A) -> + enumerate_store_body(global_ground,B,C,D) + ; + once((member(E,A),enumerate_store_body(E,B,C,D))) + ). +enumerate_store_body(identifier_store(_),_,_,A) :- + A=fail. +enumerate_store_body(type_indexed_identifier_store(_,_),_,_,A) :- + A=fail. +multi_inthash_enumerate_store_body(A,B,C,D) :- + multi_hash_store_name(B,A,E), + D=(nb_getval(E,F),value_iht(F,C)). +multi_hash_enumerate_store_body(A,B,C,D) :- + multi_hash_store_name(B,A,E), + make_get_store_goal(E,F,G), + D=(G,value_ht(F,C)). +guard_simplification :- + ( chr_pp_flag(guard_simplification,on) -> + precompute_head_matchings, + simplify_guards(1) + ; + true + ). +next_prev_rule(A,B,C) :- + ( find_min_q(A,_-D) -> + D=(-B), + normalize_heap(A,D,C) + ; + B=0, + C=A + ). +normalize_heap(A,B,C) :- + ( find_min_q(A,_-B) -> + delete_min_q(A,D,tuple(E,F,_)-_), + ( F>1 -> + G is F-1, + get_occurrence(E,G,H,_), + insert_q(D,tuple(E,G,H)-(-H),I) + ; + I=D + ), + normalize_heap(I,B,C) + ; + C=A + ). +head_types_modes_condition([],_,true). +head_types_modes_condition([A|B],C,(D,E)) :- + types_modes_condition(C,A,D), + head_types_modes_condition(B,C,E). +add_background_info(A,B) :- + get_bg_info(C), + add_background_info2(A,D), + append(C,D,B). +add_background_info2(A,[]) :- + var(A), + !. +add_background_info2([],[]) :- + !. +add_background_info2([A|B],C) :- + !, + add_background_info2(A,D), + add_background_info2(B,E), + append(D,E,C). +add_background_info2(A,B) :- + ( functor(A,_,C), + C>0 -> + A=..[_|D], + add_background_info2(D,E) + ; + E=[] + ), + get_bg_info(A,F), + append(F,E,B). +normalize_conj_list(A,B) :- + list2conj(A,C), + conj2list(C,B). +compute_derived_info([],_,_,_,_,_,_,_,[],[]). +compute_derived_info([A|B],C,D,E,F,G,H,I,[J|K],[L|M]) :- + copy_term(C-F,N), + variable_replacement(C-F,N,O), + append(A,O,P), + list2conj(C,Q), + negate_b(Q,R), + make_head_matchings_explicit_not_negated2(E,D,S), + list2conj(S,T), + term_variables(P,U), + term_variables(C-F-S,V), + new_vars(V,U,W), + append(P,W,X), + ( F==true -> + Y=R + ; + negate_b(F,Z), + Y=(R;T,Z) + ), + copy_with_variable_replacement(Y,J,X), + copy_with_variable_replacement(F,A1,X), + copy_with_variable_replacement(C,B1,X), + list2conj(B1,C1), + apply_guard_wrt_term(H,A1,D1), + apply_guard_wrt_term(D1,C1,L), + compute_derived_info(B,C,D,E,F,G,H,I,K,M). +simplify_guard(A,B,C,D,E) :- + conj2list(A,F), + guard_entailment:simplify_guards(C,B,F,G,E), + list2conj(G,D). +new_vars([],_,[]). +new_vars([A|B],C,D) :- + ( memberchk_eq(A,C) -> + new_vars(B,C,D) + ; + D=[A-E,E-A|F], + new_vars(B,C,F) + ). +head_subset(A,B,C) :- + head_subset(A,B,C,[],_). +head_subset([],A,B,B,A). +head_subset([A|B],C,D,E,F) :- + head_member(C,A,G,E,H), + head_subset(B,H,D,G,F). +head_member([A|B],C,D,E,F) :- + ( + variable_replacement(C,A,E,D), + F=B + ; + F=[A|G], + head_member(B,C,D,E,G) + ). +make_head_matchings_explicit(A,B,C) :- + make_head_matchings_explicit_memo_lookup(A,D,E), + copy_term_nat(D-E,B-C). +make_head_matchings_explicit_(A,B,C) :- + extract_arguments(A,D), + make_matchings_explicit(D,E,[],[],_,C), + substitute_arguments(A,E,B). +make_head_matchings_explicit_not_negated(A,B,C) :- + extract_arguments(A,D), + make_matchings_explicit_not_negated(D,E,C), + substitute_arguments(A,E,B). +make_head_matchings_explicit_not_negated2(A,B,C) :- + extract_arguments(A,D), + extract_arguments(B,E), + make_matchings_explicit_not_negated(D,E,C). +extract_arguments([],[]). +extract_arguments([A|B],C) :- + A=..[_|D], + append(D,E,C), + extract_arguments(B,E). +substitute_arguments([],[],[]). +substitute_arguments([A|B],C,[D|E]) :- + functor(A,F,G), + split_at(G,C,H,I), + D=..[F|H], + substitute_arguments(B,I,E). +make_matchings_explicit([],[],_,A,A,[]). +make_matchings_explicit([A|B],[C|D],E,F,G,H) :- + ( var(A) -> + ( memberchk_eq(A,E) -> + list2disj(F,I), + H=[(I;C==A)|J], + K=E + ; + H=J, + C=A, + K=[A|E] + ), + L=F + ; + functor(A,M,N), + A=..[M|O], + make_matchings_explicit(O,P,E,F,Q,R), + S=..[M|P], + ( R==[] -> + H=[functor(C,M,N)|J] + ; + list2conj(R,T), + list2disj(F,I), + U=(C\=S;I;T), + H=[functor(C,M,N),U|J] + ), + L=[C\=S|Q], + term_variables(B,V), + append(V,E,K) + ), + make_matchings_explicit(B,D,K,L,G,J). +make_matchings_explicit_not_negated([],[],[]). +make_matchings_explicit_not_negated([A|B],[C|D],E) :- + E=[C=A|F], + make_matchings_explicit_not_negated(B,D,F). +apply_guard_wrt_term([],_,[]). +apply_guard_wrt_term([A|B],C,[D|E]) :- + ( var(A) -> + apply_guard_wrt_variable(C,A,D) + ; + A=..[F|G], + apply_guard_wrt_term(G,C,H), + D=..[F|H] + ), + apply_guard_wrt_term(B,C,E). +apply_guard_wrt_variable((A,B),C,D) :- + !, + apply_guard_wrt_variable(A,C,E), + apply_guard_wrt_variable(B,E,D). +apply_guard_wrt_variable(A,B,C) :- + ( A=(D=E), + B==D -> + C=E + ; + ( A=functor(F,G,H), + B==F, + ground(G), + ground(H) -> + functor(C,G,H) + ) + ; + C=B + ). +replace_some_heads(A,B,_,[],A,B,_,_,[]) :- + !. +replace_some_heads([],[A|B],[C|D],[E|F],[],[G|H],I,J,K) :- + !, + ( C==E -> + G=E, + replace_some_heads([],B,D,F,[],H,I,J,K) + ; + ( E=functor(L,M,N), + C==L -> + length(O,N), + ( var(A) -> + P=[], + G=..[M|O] + ; + A=..[M|Q], + use_same_args(Q,O,R,I,J,P), + G=..[M|R] + ), + replace_some_heads([],B,D,F,[],H,I,J,S), + append(P,S,K) + ) + ; + G=A, + replace_some_heads([],B,D,[E|F],[],H,I,J,K) + ). +replace_some_heads([A|B],C,[D|E],[F|G],[H|I],J,K,L,M) :- + !, + ( D==F -> + H=F, + replace_some_heads(B,C,E,G,I,J,K,L,M) + ; + ( F=functor(N,O,P), + D==N -> + length(Q,P), + ( var(A) -> + R=[], + H=..[O|Q] + ; + A=..[O|S], + use_same_args(S,Q,T,K,L,R), + H=..[O|T] + ), + replace_some_heads(B,C,E,G,I,J,K,L,U), + append(R,U,M) + ) + ; + H=A, + replace_some_heads(B,C,E,[F|G],I,J,K,L,M) + ). +use_same_args([],[],[],_,_,[]). +use_same_args([A|B],[_|C],[D|E],F,G,H) :- + var(A), + !, + D=A, + use_same_args(B,C,E,F,G,H). +use_same_args([A|B],[C|D],[E|F],G,H,I) :- + nonvar(A), + !, + ( common_variables(A,H) -> + I=[C=A|J] + ; + I=J + ), + E=C, + use_same_args(B,D,F,G,H,J). +simplify_heads([],_,_,_,[],[]). +simplify_heads([A|B],C,D,E,F,G) :- + A=(H=I), + ( + ( + nonvar(I) + ; + common_variables(I,B-C) + ), + guard_entailment:entails_guard(C,H=I) -> + ( common_variables(I,D-B-C) -> + G=J, + F=K + ; + ( common_variables(I,E) -> + G=[H=I|J] + ; + G=J + ), + F=[H|K] + ) + ; + ( nonvar(I), + functor(I,L,M), + guard_entailment:entails_guard([functor(H,L,M)|C],H=I) -> + G=J, + ( common_variables(I,D-B-C) -> + F=K + ; + F=[functor(H,L,M)|K] + ) + ) + ; + F=K, + G=J + ), + simplify_heads(B,[A|C],D,E,K,J). +common_variables(A,B) :- + term_variables(A,C), + term_variables(B,D), + intersect_eq(C,D,E), + E\==[]. +add_failing_occ(A,B,C,D,E,F,_,G,H) :- + A=pragma(rule(_,_,I,_),ids(J,K),_,_,_), + append(K,J,L), + missing_partner_cond(B,C,L,D,M,N,G), + copy_term((N,B,C),(O,P,Q)), + variable_replacement((N,B,C),(O,P,Q),H), + copy_with_variable_replacement(I,R,H), + extract_explicit_matchings(R,S), + negate_b(S,T), + copy_with_variable_replacement(M,U,H), + ( subsumes(F,O) -> + E=[(T;U)] + ; + E=[chr_pp_void_info] + ). +missing_partner_cond([],[],[],_,fail,_,_). +missing_partner_cond([A|B],[_|C],[D|E],D,F,A,G) :- + !, + missing_partner_cond(B,C,E,D,F,A,G). +missing_partner_cond([A|B],[_|C],[_|D],E,F,G,H/I) :- + F=(chr_pp_not_in_store(A);J), + missing_partner_cond(B,C,D,E,J,G,H/I). +extract_explicit_matchings((A,B),C) :- + !, + ( extract_explicit_matchings(A) -> + extract_explicit_matchings(B,C) + ; + C=(A,D), + extract_explicit_matchings(B,D) + ). +extract_explicit_matchings(A,B) :- + !, + ( extract_explicit_matchings(A) -> + B=true + ; + B=A + ). +extract_explicit_matchings(A=B) :- + var(A), + var(B), + !, + A=B. +extract_explicit_matchings(A==B) :- + var(A), + var(B), + !, + A=B. +assert_constraint_type(A,B) :- + ( ground(B) -> + constraint_type(A,B) + ; + chr_error(type_error,'Declared argument types "~w" for constraint "~w" must be ground! +',[B,A]) + ). +get_type_definition_det(A,B) :- + ( get_type_definition(A,B) -> + true + ; + chr_error(type,'Could not find type definition for type `~w''. +',[A]) + ). +get_constraint_type_det(A,B) :- + ( get_constraint_type(A,B) -> + true + ; + A=_/C, + replicate(C,any,B) + ). +modes_condition([],[],true). +modes_condition([A|B],[C|D],E) :- + ( A== + -> + E=(ground(C),F) + ; + ( A== - -> + E=(var(C),F) + ) + ; + E=F + ), + modes_condition(B,D,F). +types_condition([],[],[],[],true). +types_condition([A|B],[C|D],[E|F],[G|H],(I,J)) :- + ( G== - -> + K=[true] + ; + get_type_definition_det(A,L), + type_condition(L,C,E,G,M), + ( G== + -> + K=M + ; + K=[\+ground(C)|M] + ) + ), + list2disj(K,I), + types_condition(B,D,F,H,J). +type_condition([],_,_,_,[]). +type_condition([A|B],C,D,E,[F|G]) :- + ( var(A) -> + chr_error(type,'Unexpected variable type in type definition! +',[]) + ; + ( atomic_builtin_type(A,C,F) -> + true + ) + ; + ( compound_builtin_type(A,C,F,_) -> + true + ) + ; + type_def_case_condition(A,C,D,E,F) + ), + type_condition(B,C,D,E,G). +atomic_builtin_type(any,_,true). +atomic_builtin_type(dense_int,A,(integer(A),A>=0)). +atomic_builtin_type(int,A,integer(A)). +atomic_builtin_type(number,A,number(A)). +atomic_builtin_type(float,A,float(A)). +atomic_builtin_type(natural,A,(integer(A),A>=0)). +atomic_builtin_type(chr_identifier,_,true). +compound_builtin_type(chr_constants(_),_,true,true). +compound_builtin_type(chr_constants(_,_),_,true,true). +compound_builtin_type(chr_identifier(_),_,true,true). +compound_builtin_type(chr_enum(A),B,(ground(B),memberchk(B,A)),once((member(C,A),unifiable(B,C,_)))). +is_chr_constants_type(chr_constants(A),A,no). +is_chr_constants_type(chr_constants(A,B),A,yes(B)). +type_def_case_condition(A,B,C,D,E) :- + ( nonvar(A) -> + functor(A,F,G), + ( G==0 -> + E=(B=A) + ; + ( var(C) -> + E=functor(B,F,G) + ) + ; + ( functor(C,F,G) -> + E=(functor(B,F,G),B=H,I), + A=..[_|J], + C=..[_|K], + functor(H,F,G), + H=..[_|L], + replicate(G,D,M), + types_condition(J,L,K,M,I) + ) + ; + E=functor(B,F,G) + ) + ; + chr_error(internal,'Illegal type definition (must be nonvar). +',[]) + ). +static_type_check_heads([]). +static_type_check_heads([A|B]) :- + static_type_check_head(A), + static_type_check_heads(B). +static_type_check_head(A) :- + functor(A,B,C), + get_constraint_type_det(B/C,D), + A=..[_|E], + maplist(static_type_check_term(head(A)),E,D). +static_type_check_body([]). +static_type_check_body([A|B]) :- + functor(A,C,D), + get_constraint_type_det(C/D,E), + A=..[_|F], + maplist(static_type_check_term(body(A)),F,E), + static_type_check_body(B). +format_src(head(A)) :- + format('head ~w',[A]). +format_src(body(A)) :- + format('body goal ~w',[A]). +generate_dynamic_type_check_clauses(A) :- + ( chr_pp_flag(debugable,on) -> + dynamic_type_check, + get_dynamic_type_check_clauses(B), + append(B,[('$dynamic_type_check'(C,D):-throw(error(type_error(C,D),context(_,'CHR Runtime Type Error'))))],A) + ; + A=[] + ). +dynamic_type_check_clause(A,B,C) :- + copy_term(A-B,D-E), + functor(E,F,G), + functor(H,F,G), + E=..[_|I], + H=..[_|J], + maplist(dynamic_type_check_call,I,J,K), + list2conj(K,L), + C=('$dynamic_type_check'(D,H):-L). +dynamic_type_check_alias_clause(A,B,C) :- + C=('$dynamic_type_check'(A,D):-'$dynamic_type_check'(B,D)). +dynamic_type_check_call(A,B,C) :- + ( A==any -> + C=true + ; + C=when(nonvar(B),once('$dynamic_type_check'(A,B))) + ). +atomic_types_suspended_constraint(A) :- + A=_/B, + get_constraint_type(A,C), + get_constraint_mode(A,D), + numlist(1,B,E), + maplist(atomic_types_suspended_constraint(A),C,D,E). +atomic_types_suspended_constraint(A,B,C,D) :- + ( is_indexed_argument(A,D) -> + ( C== ? -> + atomic_type(B) + ; + true + ) + ; + true + ). +storage_analysis(A) :- + ( chr_pp_flag(storage_analysis,on) -> + check_constraint_storages(A) + ; + true + ). +check_constraint_storages([]). +check_constraint_storages([A|B]) :- + check_constraint_storage(A), + check_constraint_storages(B). +check_constraint_storage(A) :- + get_max_occurrence(A,B), + check_occurrences_storage(A,1,B). +check_occurrences_storage(A,B,C) :- + ( B>C -> + stored_completing(A,1,0) + ; + check_occurrence_storage(A,B), + D is B+1, + check_occurrences_storage(A,D,C) + ). +check_occurrence_storage(A,B) :- + get_occurrence(A,B,C,D), + ( is_passive(C,D) -> + stored(A,B,maybe) + ; + get_rule(C,E), + E=pragma(rule(F,G,H,I),ids(J,K),_,_,_), + ( select2(D,L,J,F,_,_) -> + check_storage_head1(L,B,F,G,H) + ; + ( select2(D,M,K,G,_,_) -> + check_storage_head2(M,B,F,I) + ) + ) + ). +check_storage_head1(A,B,C,D,E) :- + functor(A,F,G), + H=F/G, + ( C==[A], + D==[], + guard_entailment:entails_guard([chr_pp_headvariables(A)],E), + A=..[_|I], + no_matching(I,[]) -> + stored(H,B,no) + ; + stored(H,B,maybe) + ). +no_matching([],_). +no_matching([A|B],C) :- + var(A), + \+memberchk_eq(A,C), + no_matching(B,[A|C]). +check_storage_head2(A,B,C,D) :- + functor(A,E,F), + G=E/F, + ( C\==[], + D==true -> + stored(G,B,maybe) + ; + stored(G,B,yes) + ). +constraints_code(A,B) :- + ( chr_pp_flag(reduced_indexing,on), + forall(C,A,chr_translate:only_ground_indexed_arguments(C)) -> + none_suspended_on_variables + ; + true + ), + constraints_code1(A,B,[]). +constraint_prelude(A/B,C) :- + vars_susp(B,D,E,F), + G=..[A|D], + make_suspension_continuation_goal(A/B,F,H), + build_head(A,B,[0],F,I), + ( chr_pp_flag(debugable,on) -> + insert_constraint_goal(A/B,E,D,J), + attach_constraint_atom(A/B,K,E,L), + delay_phase_end(validate_store_type_assumptions,chr_translate:update_suspension_field(A/B,E,state,inactive,M)), + insert_constraint_internal_constraint_goal(A/B,K,E,H,D,N), + ( get_constraint_type(A/B,O) -> + maplist(dynamic_type_check_call,O,D,P), + list2conj(P,Q) + ; + Q=true + ), + C=(G:-Q,N,J,L,M,'chr debug_event'(insert(G#E)),('chr debug_event'(call(E)),I;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) + ; + ( get_allocation_occurrence(A/B,0) -> + gen_insert_constraint_internal_goal(A/B,R,F,D,E), + delay_phase_end(validate_store_type_assumptions,chr_translate:update_suspension_field(A/B,E,state,inactive,M)), + C=(G:-R,M,I) + ) + ; + C=(G:-I) + ). +make_suspension_continuation_goal(A/B,C,D) :- + ( may_trigger(A/B) -> + build_head(A,B,[0],C,E), + ( chr_pp_flag(debugable,off) -> + D=E + ; + get_target_module(F), + D=F:E + ) + ; + D=true + ). +gen_cond_attach_clause(A/B,C,D,E) :- + ( is_finally_stored(A/B) -> + get_allocation_occurrence(A/B,F), + get_max_occurrence(A/B,G), + ( chr_pp_flag(debugable,off), + G + ( only_ground_indexed_arguments(A/B) -> + gen_insert_constraint_internal_goal(A/B,H,I,J,K) + ; + gen_cond_attach_goal(A/B,H,I,J,K) + ) + ; + vars_susp(B,J,K,I), + gen_uncond_attach_goal(A/B,K,J,H,_) + ), + build_head(A,B,C,I,L), + M=(L:-H), + add_dummy_location(M,N), + D=[N|E] + ; + D=E + ). +gen_cond_attach_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + make_suspension_continuation_goal(A/B,D,G), + ( get_store_type(A/B,var_assoc_store(_,_)) -> + H=true + ; + attach_constraint_atom(A/B,I,F,H) + ), + _=..[A|E], + insert_constraint_goal(A/B,F,E,J), + insert_constraint_internal_constraint_goal(A/B,I,F,G,E,K), + ( may_trigger(A/B) -> + activate_constraint_goal(A/B,(J,H),I,F,_,L), + C=(var(F)->K,J,H;L) + ; + C=(K,J,H) + ). +gen_insert_constraint_internal_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + make_suspension_continuation_goal(A/B,D,G), + ( \+only_ground_indexed_arguments(A/B), + \+get_store_type(A/B,var_assoc_store(_,_)) -> + attach_constraint_atom(A/B,H,F,I) + ; + I=true + ), + _=..[A|E], + insert_constraint_goal(A/B,F,E,J), + insert_constraint_internal_constraint_goal(A/B,H,F,G,E,K), + ( only_ground_indexed_arguments(A/B), + chr_pp_flag(debugable,off) -> + C=(K,J) + ; + C=(K,J,I) + ). +gen_uncond_attach_goal(A,B,C,D,E) :- + ( \+only_ground_indexed_arguments(A), + \+get_store_type(A,var_assoc_store(_,_)) -> + attach_constraint_atom(A,F,B,G) + ; + G=true + ), + insert_constraint_goal(A,B,C,H), + ( chr_pp_flag(late_allocation,on) -> + activate_constraint_goal(A,(H,G),F,B,E,D) + ; + activate_constraint_goal(A,true,F,B,E,D) + ). +head1_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,_,_,_,L), + K=rule(_,M,_,_), + ( M==[] -> + reorder_heads(L,A,C,D,N,O), + simplification_code(A,B,N,O,E,F,G,H,I,J) + ; + simpagation_head1_code(A,B,C,D,E,F,G,H,I,J) + ). +head2_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,_,_,_,L), + K=rule(M,_,_,_), + ( M==[] -> + reorder_heads(L,A,C,D,N,O), + propagation_code(A,B,N,O,K,L,F,G,H,I,J) + ; + simpagation_head2_code(A,B,C,D,E,F,G,H,I,J) + ). +gen_alloc_inc_clause(A/B,C,D,E,F) :- + vars_susp(B,G,H,I), + build_head(A,B,D,I,J), + inc_id(D,K), + build_head(A,B,K,I,L), + gen_occ_allocation(A/B,C,G,H,M), + N=(J:-M,L), + add_dummy_location(N,O), + E=[O|F]. +gen_occ_allocation(A,B,C,D,E) :- + get_allocation_occurrence(A,F), + get_occurrence_code_id(A,F,G), + get_occurrence_code_id(A,B,H), + ( chr_pp_flag(debugable,off), + H==G -> + allocate_constraint_goal(A,D,C,I), + ( may_trigger(A) -> + E=(var(D)->I;true) + ; + E=I + ) + ; + E=true + ). +gen_occ_allocation_in_guard(A,B,C,D,E) :- + get_allocation_occurrence(A,F), + ( chr_pp_flag(debugable,off), + B + allocate_constraint_goal(A,D,C,G), + ( may_trigger(A) -> + E=(var(D)->G;true) + ; + E=G + ) + ; + E=true + ). +guard_via_reschedule_new(A,B,C,D,E,F) :- + ( chr_pp_flag(guard_via_reschedule,on) -> + guard_via_reschedule_main_new(A,B,C,D,E,G), + list2conj(G,F) + ; + length(A,H), + length(E,H), + length(B,I), + length(D,I), + append(E,D,J), + list2conj(J,F) + ). +guard_via_reschedule_main_new(A,B,C,D,E,F) :- + initialize_unit_dictionary(C,G), + maplist(wrap_in_functor(lookup),A,H), + maplist(wrap_in_functor(guard),B,I), + build_units(H,I,G,J), + dependency_reorder(J,K), + wrappedunits2lists(K,L,E,F), + sort(L,M), + snd_of_pairs(M,D). +wrappedunits2lists([],[],[],[]). +wrappedunits2lists([unit(A,B,_,_)|C],D,E,F) :- + F=[G|H], + ( B=lookup(I) -> + E=[G|J], + D=K + ; + ( B=guard(I) -> + D=[A-G|K], + E=J + ) + ), + wrappedunits2lists(C,K,J,H). +guard_splitting(A,B) :- + A=rule(C,D,E,_), + append(C,D,F), + conj2list(E,G), + term_variables(F,H), + split_off_simple_guard_new(G,H,I,J), + append(I,[K],B), + term_variables(J,L), + ground_vars(F,M), + list_difference_eq(H,M,N), + intersect_eq(N,L,O), + ( chr_pp_flag(guard_locks,on), + bagof('chr lock'(P)-'chr unlock'(P),lists:member(P,O),Q) -> + once(pairup(R,S,Q)) + ; + R=[], + S=[] + ), + list2conj(R,T), + list2conj(S,U), + list2conj(J,V), + K=(T,V,U). +guard_body_copies3(A,B,C,D,E) :- + A=rule(_,_,_,F), + my_term_copy(B,C,G,D), + my_term_copy(F,G,E). +split_off_simple_guard_new([],_,[],[]). +split_off_simple_guard_new([A|B],C,D,E) :- + ( simple_guard_new(A,C) -> + D=[A|F], + split_off_simple_guard_new(B,C,F,E) + ; + D=[], + E=[A|B] + ). +simple_guard_new(A,B) :- + builtin_binds_b(A,C), + \+ (member(D,C),memberchk_eq(D,B)). +dependency_reorder(A,B) :- + dependency_reorder(A,[],B). +dependency_reorder([],A,B) :- + reverse(A,B). +dependency_reorder([A|B],C,D) :- + A=unit(_,_,E,F), + ( E==fixed -> + G=[A|C] + ; + dependency_insert(C,A,F,G) + ), + dependency_reorder(B,G,D). +dependency_insert([],A,_,[A]). +dependency_insert([A|B],C,D,E) :- + A=unit(F,_,_,_), + ( memberchk(F,D) -> + E=[C,A|B] + ; + E=[A|G], + dependency_insert(B,C,D,G) + ). +build_units(A,B,C,D) :- + build_retrieval_units(A,1,E,C,F,D,G), + build_guard_units(B,E,F,G). +build_retrieval_units([],A,A,B,B,C,C). +build_retrieval_units([A|B],C,D,E,F,G,H) :- + term_variables(A,I), + update_unit_dictionary(I,C,E,J,[],K), + G=[unit(C,A,fixed,K)|L], + M is C+1, + build_retrieval_units(B,M,D,J,F,L,H). +initialize_unit_dictionary(A,B) :- + term_variables(A,C), + pair_all_with(C,0,B). +update_unit_dictionary([],_,A,A,B,B). +update_unit_dictionary([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=D + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary(B,C,J,E,I,G). +build_guard_units(A,B,C,D) :- + ( A=[E] -> + D=[unit(B,E,fixed,[])] + ; + ( A=[E|F] -> + term_variables(E,G), + update_unit_dictionary2(G,B,C,H,[],I), + D=[unit(B,E,movable,I)|J], + K is B+1, + build_guard_units(F,K,H,J) + ) + ). +update_unit_dictionary2([],_,A,A,B,B). +update_unit_dictionary2([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=[A-C|D] + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary2(B,C,J,E,I,G). +functional_dependency_analysis(A) :- + ( fail, + chr_pp_flag(functional_dependency_analysis,on) -> + functional_dependency_analysis_main(A) + ; + true + ). +functional_dependency_analysis_main([]). +functional_dependency_analysis_main([A|B]) :- + ( discover_unique_pattern(A,C,D,E,F) -> + functional_dependency(C,D,E,F) + ; + true + ), + functional_dependency_analysis_main(B). +discover_unique_pattern(A,B/C,D,E,F) :- + A=pragma(G,_,_,_,D), + G=rule(H,I,J,_), + ( H=[K], + I=[L] -> + true + ; + ( H=[K,L], + I==[] -> + true + ) + ), + check_unique_constraints(K,L,J,D,M), + term_variables(K,N), + \+ (member(O,N),lookup_eq(M,O,P),memberchk_eq(P,N)), + select_pragma_unique_variables(N,M,Q), + copy_term_nat(K-Q,E-F), + functor(K,B,C). +select_pragma_unique_variables([],_,[]). +select_pragma_unique_variables([A|B],C,D) :- + ( lookup_eq(C,A,_) -> + D=E + ; + D=[A|E] + ), + select_pragma_unique_variables(B,C,E). +set_semantics_rules(A) :- + ( fail, + chr_pp_flag(set_semantics_rule,on) -> + set_semantics_rules_main(A) + ; + true + ). +set_semantics_rules_main([]). +set_semantics_rules_main([A|B]) :- + set_semantics_rule_main(A), + set_semantics_rules_main(B). +set_semantics_rule_main(A) :- + A=pragma(B,C,_,_,D), + ( B=rule([E],[F],true,_), + C=ids([G],[H]), + \+is_passive(D,G), + functor(E,I,J), + get_functional_dependency(I/J,D,K,L), + copy_term_nat(K-L,E-M), + copy_term_nat(K-L,F-N), + M==N -> + passive(D,H) + ; + true + ). +check_unique_constraints(A,B,C,D,E) :- + \+any_passive_head(D), + variable_replacement(A-B,B-A,E), + copy_with_variable_replacement(C,F,E), + negate_b(C,G), + once(entails_b(G,F)). +symmetry_analysis(A) :- + ( chr_pp_flag(check_unnecessary_active,off) -> + true + ; + symmetry_analysis_main(A) + ). +symmetry_analysis_main([]). +symmetry_analysis_main([A|B]) :- + A=pragma(C,ids(D,E),_,_,F), + C=rule(G,H,_,_), + ( + ( + \+chr_pp_flag(check_unnecessary_active,simplification) + ; + H==[] + ), + G\==[] -> + symmetry_analysis_heads_simplification(G,D,[],[],C,F), + symmetry_analysis_heads_propagation(H,E,[],[],C,F) + ; + true + ), + symmetry_analysis_main(B). +symmetry_analysis_heads_simplification([],[],_,_,_,_). +symmetry_analysis_heads_simplification([A|B],[C|D],E,F,G,H) :- + ( \+is_passive(H,C), + member2(E,F,I-J), + \+is_passive(H,J), + variable_replacement(I,A,K), + copy_with_variable_replacement(G,L,K), + identical_guarded_rules(G,L) -> + passive(H,C) + ; + true + ), + symmetry_analysis_heads_simplification(B,D,[A|E],[C|F],G,H). +symmetry_analysis_heads_propagation([],[],_,_,_,_). +symmetry_analysis_heads_propagation([A|B],[C|D],E,F,G,H) :- + ( \+is_passive(H,C), + member2(E,F,I-J), + \+is_passive(H,J), + variable_replacement(I,A,K), + copy_with_variable_replacement(G,L,K), + identical_rules(G,L) -> + passive(H,C) + ; + true + ), + symmetry_analysis_heads_propagation(B,D,[A|E],[C|F],G,H). +simplification_code(A,B,C,D,E,F/G,H,I,J,K) :- + E=pragma(L,_,_,_,M), + head_info(A,G,_,N,O,P), + build_head(F,G,I,O,Q), + get_constraint_mode(F/G,R), + head_arg_matches(P,R,[],S,T,[],U), + guard_splitting(L,V), + ( is_stored_in_guard(F/G,M) -> + W=[_|V] + ; + W=V + ), + guard_via_reschedule_new(C,W,A,X,Y,Z), + rest_heads_retrieval_and_matching(C,D,A,Y,A1,T,B1,[],[],[],U,_), + guard_body_copies3(L,W,B1,X,C1), + ( is_stored_in_guard(F/G,M) -> + gen_occ_allocation_in_guard(F/G,H,D1,N,E1), + gen_uncond_attach_goal(F/G,N,D1,F1,_), + X=[G1|_], + G1=(E1,F1) + ; + true + ), + partner_constraint_detachments(A1,C,B1,H1), + active_constraint_detachment(I,N,A,B1,I1), + ( chr_pp_flag(debugable,on) -> + L=rule(_,_,J1,K1), + my_term_copy(J1-K1,B1,L1-M1), + sort_by_key([N|A1],[B|D],N1), + O1='chr debug_event'(try(N1,[],L1,M1)), + P1='chr debug_event'(apply(N1,[],L1,M1)), + instrument_goal(Q1,O1,P1,R1) + ; + R1=Q1 + ), + ( unconditional_occurrence(F/G,H), + chr_pp_flag(late_allocation,on) -> + Q1=true + ; + Q1=! + ), + S1=(Q:-S,Z,R1,H1,I1,C1), + add_location(S1,M,T1), + J=[T1|K]. +add_location(A,B,C) :- + ( chr_pp_flag(line_numbers,on) -> + get_chr_source_file(D), + get_line_number(B,E), + C='$source_location'(D,E):A + ; + C=A + ). +add_dummy_location(A,B) :- + ( chr_pp_flag(line_numbers,on) -> + get_chr_source_file(C), + B='$source_location'(C,1):A + ; + B=A + ). +head_arg_matches(A,B,C,D,E) :- + head_arg_matches(A,B,C,D,E,[],_). +head_arg_matches(A,B,C,D,E,F,G) :- + head_arg_matches_(A,B,C,F,H,E,G), + list2conj(H,D). +head_arg_matches_([],[],A,B,[],A,B). +head_arg_matches_([silent(A-_)|B],[C|D],E,F,G,H,I) :- + !, + ( C== + -> + term_variables(A,J,F), + head_arg_matches_(B,D,E,J,G,H,I) + ; + head_arg_matches_(B,D,E,F,G,H,I) + ). +head_arg_matches_([A-B|C],[D|E],F,G,H,I,J) :- + ( var(A) -> + ( lookup_eq(F,A,K) -> + ( D= + -> + ( memberchk_eq(A,G) -> + H=[B=K|L], + M=G + ; + H=[B==K|L], + M=[A|G] + ) + ; + H=[B==K|L], + M=G + ), + N=F + ; + N=[A-B|F], + H=L, + ( D= + -> + M=[A|G] + ; + M=G + ) + ), + O=C, + P=E + ; + ( ground(A), + A='$chr_identifier_match'(Q,R) -> + identifier_label_atom(R,B,Q,S), + H=[S|L], + F=N, + M=G, + O=C, + P=E + ) + ; + ( atomic(A) -> + ( D= + -> + H=[B=A|L] + ; + H=[B==A|L] + ), + F=N, + M=G, + O=C, + P=E + ) + ; + ( D== +, + is_ground(G,A) -> + copy_with_variable_replacement(A,T,F), + H=[B=T|L], + F=N, + M=G, + O=C, + P=E + ) + ; + ( D== ?, + is_ground(G,A) -> + copy_with_variable_replacement(A,T,F), + H=[B==T|L], + F=N, + M=G, + O=C, + P=E + ) + ; + A=..[_|U], + functor(A,V,W), + functor(X,V,W), + X=..[_|Y], + ( D= + -> + H=[B=X|L] + ; + H=[nonvar(B),B=X|L] + ), + pairup(U,Y,Z), + append(Z,C,O), + replicate(W,D,A1), + append(A1,E,P), + N=F, + M=G + ), + head_arg_matches_(O,P,N,M,L,I,J). +add_heads_types([],A,A). +add_heads_types([A|B],C,D) :- + add_head_types(A,C,E), + add_heads_types(B,E,D). +add_head_types(A,B,C) :- + functor(A,D,E), + get_constraint_type_det(D/E,F), + A=..[_|G], + add_args_types(G,F,B,C). +add_args_types([],[],A,A). +add_args_types([A|B],[C|D],E,F) :- + add_arg_types(A,C,E,G), + add_args_types(B,D,G,F). +add_arg_types(A,B,C,D) :- + ( var(A) -> + ( lookup_eq(C,A,_) -> + D=C + ; + D=[A-B|C] + ) + ; + ( ground(A) -> + D=C + ) + ; + term_variables(A,E), + length(E,F), + replicate(F,any,G), + add_args_types(E,G,C,D) + ). +add_heads_ground_variables([],A,A). +add_heads_ground_variables([A|B],C,D) :- + add_head_ground_variables(A,C,E), + add_heads_ground_variables(B,E,D). +add_head_ground_variables(A,B,C) :- + functor(A,D,E), + get_constraint_mode(D/E,F), + A=..[_|G], + add_arg_ground_variables(G,F,B,C). +add_arg_ground_variables([],[],A,A). +add_arg_ground_variables([A|B],[C|D],E,F) :- + ( C== + -> + term_variables(A,G), + add_var_ground_variables(G,E,H) + ; + E=H + ), + add_arg_ground_variables(B,D,H,F). +add_var_ground_variables([],A,A). +add_var_ground_variables([A|B],C,D) :- + ( memberchk_eq(A,C) -> + E=C + ; + E=[A|C] + ), + add_var_ground_variables(B,E,D). +is_ground(A,B) :- + ( ground(B) -> + true + ; + ( compound(B) -> + B=..[_|C], + maplist(is_ground(A),C) + ) + ; + memberchk_eq(B,A) + ). +check_ground(A,B,C) :- + term_variables(B,D), + check_ground_variables(D,A,C). +check_ground_variables([],_,true). +check_ground_variables([A|B],C,D) :- + ( memberchk_eq(A,C) -> + check_ground_variables(B,C,D) + ; + D=(ground(A),E), + check_ground_variables(B,C,E) + ). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J) :- + rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,[],_). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K,L) :- + ( A=[_|_] -> + rest_heads_retrieval_and_matching_n(A,B,H,I,C,D,E,F,G,J,K,L) + ; + D=[], + E=[], + F=G, + K=L + ). +rest_heads_retrieval_and_matching_n([],_,_,_,_,[],[],A,A,_,B,B). +rest_heads_retrieval_and_matching_n([A|B],[_|C],D,E,F,[G|H],[I|J],K,L,_,M,N) :- + functor(A,O,P), + head_info(A,P,Q,_,_,R), + get_store_type(O/P,S), + ( S==default -> + passive_head_via(A,[F|D],K,T,U), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(O/P,V),get_static_suspension_term_field(arguments,O/P,V,Q),get_static_suspension_field(O/P,V,state,active,W))), + get_constraint_mode(O/P,X), + head_arg_matches(R,X,K,Y,Z,M,A1), + B1=R, + sbag_member_call(I,U,C1), + D1=(T,C1,I=V,W) + ; + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(O/P,V),get_static_suspension_term_field(arguments,O/P,V,Q))), + existential_lookup(S,A,[F|D],K,M,V,D1,I,R,B1), + get_constraint_mode(O/P,X), + E1=X, + head_arg_matches(B1,E1,K,Y,Z,M,A1) + ), + different_from_other_susps(A,I,D,E,F1), + filter_append(B1,Z,G1), + translate(A1,G1,H1), + translate(A1,Z,I1), + inline_matching_goal(Y,J1,H1,I1), + G=(D1,F1,J1), + rest_heads_retrieval_and_matching_n(B,C,[A|D],[I|E],F,H,J,Z,L,_,A1,N). +inline_matching_goal(A==B,true,C,D) :- + memberchk_eq(A,C), + memberchk_eq(B,D), + A=B, + !. +inline_matching_goal((A,B),(C,D),E,F) :- + !, + inline_matching_goal(A,C,E,F), + inline_matching_goal(B,D,E,F). +inline_matching_goal(A,A,_,_). +filter_mode([],_,_,[]). +filter_mode([A-B|C],[_-D|E],[F|G],H) :- + ( B==D -> + H=[F|I], + filter_mode(C,E,G,I) + ; + filter_mode([A-B|C],E,G,H) + ). +filter_append([],A,A). +filter_append([A|B],C,D) :- + ( A=silent(_) -> + filter_append(B,C,D) + ; + D=[A|E], + filter_append(B,C,E) + ). +check_unique_keys([],_). +check_unique_keys([A|B],C) :- + lookup_eq(C,A,_), + check_unique_keys(B,C). +different_from_other_susps(A,B,C,D,E) :- + different_from_other_susps_(C,D,A,B,F), + list2conj(F,E). +different_from_other_susps_(_,[],_,_,[]) :- + !. +different_from_other_susps_([A|B],[C|D],E,F,G) :- + ( functor(E,H,I), + functor(A,H,I), + copy_term_nat(A-E,J-K), + \+ \+J=K -> + G=[F\==C|L] + ; + G=L + ), + different_from_other_susps_(B,D,E,F,L). +passive_head_via(A,B,C,D,E) :- + functor(A,F,G), + get_constraint_index(F/G,_), + common_variables(A,B,H), + ground_vars([A],I), + list_difference_eq(H,I,J), + global_list_store_name(F/G,K), + L=nb_getval(K,E), + get_constraint_mode(F/G,M), + ( N==[] -> + D=L + ; + ( member(O,J), + nth1(P,M,-), + arg(P,A,Q), + Q==O -> + translate([O],C,[R]), + gen_get_mod_constraints(F/G,R,S,E), + D=S + ) + ; + translate(J,C,N), + add_heads_types(B,[],T), + my_term_copy(T,C,U), + gen_get_mod_constraints(F/G,N,U,V,S,E), + D=(V->S;L) + ). +common_variables(A,B,C) :- + term_variables(A,D), + term_variables(B,E), + intersect_eq(D,E,C). +gen_get_mod_constraints(A,B,C,D,E,F) :- + via_goal(B,C,D,G), + get_target_module(H), + E=(get_attr(G,H,I),J), + get_max_constraint_index(K), + ( K==1 -> + J=true, + F=I + ; + get_constraint_index(A,L), + get_suspensions(K,L,I,J,F) + ). +via_goal(A,B,C,D) :- + ( A=[] -> + C=fail + ; + ( A=[E] -> + lookup_eq(B,E,F), + ( atomic_type(F) -> + C=var(E), + E=D + ; + C='chr newvia_1'(E,D) + ) + ) + ; + ( A=[E,G] -> + C='chr newvia_2'(E,G,D) + ) + ; + C='chr newvia'(A,D) + ). +gen_get_mod_constraints(A,B,C,D) :- + get_target_module(E), + C=(get_attr(B,E,F),G), + get_max_constraint_index(H), + ( H==1 -> + G=true, + D=F + ; + get_constraint_index(A,I), + get_suspensions(H,I,F,G,D) + ). +guard_body_copies(A,B,C,D) :- + guard_body_copies2(A,B,E,D), + list2conj(E,C). +guard_body_copies2(A,B,C,D) :- + A=rule(_,E,F,G), + conj2list(F,H), + split_off_simple_guard(H,B,I,J), + my_term_copy(I-J,B,K,L-M), + append(L,[N],C), + term_variables(J,O), + term_variables(M,P), + ground_vars(E,Q), + list_difference_eq(O,Q,R), + ( chr_pp_flag(guard_locks,on), + bagof('chr lock'(S)-'chr unlock'(S),T^(lists:member(T,R),pairlist:lookup_eq(B,T,S),memberchk_eq(S,P)),U) -> + once(pairup(V,W,U)) + ; + V=[], + W=[] + ), + list2conj(V,X), + list2conj(W,Y), + list2conj(M,Z), + N=(X,Z,Y), + my_term_copy(G,K,D). +split_off_simple_guard([],_,[],[]). +split_off_simple_guard([A|B],C,D,E) :- + ( simple_guard(A,C) -> + D=[A|F], + split_off_simple_guard(B,C,F,E) + ; + D=[], + E=[A|B] + ). +simple_guard(A,B) :- + binds_b(A,C), + \+ (member(D,C),lookup_eq(B,D,_)). +active_constraint_detachment(A,B,C,D,E) :- + functor(C,F,G), + H=F/G, + ( is_stored(H) -> + ( + ( + A==[0], + chr_pp_flag(store_in_guards,off) + ; + get_allocation_occurrence(H,I), + get_max_occurrence(H,J), + J + E=true + ; + gen_uncond_susp_detachment(C,B,active,D,K), + ( chr_pp_flag(late_allocation,on) -> + E=(var(B)->true;K) + ; + E=K + ) + ) + ; + E=true + ). +partner_constraint_detachments([],[],_,true). +partner_constraint_detachments([A|B],[C|D],E,(F,G)) :- + gen_uncond_susp_detachment(C,A,partner,E,F), + partner_constraint_detachments(B,D,E,G). +gen_uncond_susp_detachment(A,B,C,D,E) :- + functor(A,F,G), + H=F/G, + ( is_stored(H) -> + E=(I,J), + ( chr_pp_flag(debugable,on) -> + I='chr debug_event'(remove(B)) + ; + I=true + ), + remove_constraint_goal(H,B,K,true,(L,M),C,J), + delete_constraint_goal(A,B,D,L), + ( \+only_ground_indexed_arguments(H), + \+get_store_type(H,var_assoc_store(_,_)) -> + detach_constraint_atom(H,K,B,M) + ; + M=true + ) + ; + E=true + ). +simpagation_head1_code(A,B,C,D,E,F/G,_,H,I,J) :- + E=pragma(K,ids(_,L),_,_,M), + K=rule(_,N,O,P), + head_info(A,G,Q,R,S,T), + get_constraint_mode(F/G,U), + head_arg_matches(T,U,[],V,W,[],X), + build_head(F,G,H,S,Y), + append(C,N,Z), + append(D,L,A1), + reorder_heads(M,A,Z,A1,B1,C1), + guard_splitting(K,D1), + ( is_stored_in_guard(F/G,M) -> + E1=[_|D1] + ; + E1=D1 + ), + guard_via_reschedule_new(B1,E1,A,F1,G1,H1), + rest_heads_retrieval_and_matching(B1,C1,A,G1,I1,W,J1,[],[],[],X,_), + split_by_ids(C1,I1,D,K1,L1,M1,N1), + guard_body_copies3(K,E1,J1,F1,O1), + ( is_stored_in_guard(F/G,M) -> + gen_uncond_attach_goal(F/G,R,Q,P1,_), + F1=[Q1|_], + Q1=P1 + ; + true + ), + sort_by_key(K1,L1,R1), + partner_constraint_detachments(R1,C,J1,S1), + active_constraint_detachment(H,R,A,J1,T1), + ( chr_pp_flag(debugable,on) -> + my_term_copy(O-P,J1,U1-V1), + sort_by_key([R|K1],[B|L1],W1), + sort_by_key(M1,N1,X1), + Y1='chr debug_event'(try(W1,X1,U1,V1)), + Z1='chr debug_event'(apply(W1,X1,U1,V1)), + instrument_goal(!,Y1,Z1,A2) + ; + A2=! + ), + B2=(Y:-V,H1,A2,S1,T1,O1), + add_location(B2,M,C2), + I=[C2|J]. +split_by_ids([],[],_,[],[]). +split_by_ids([A|B],[C|D],E,F,G) :- + ( memberchk_eq(A,E) -> + F=[C|H], + G=I + ; + F=H, + G=[C|I] + ), + split_by_ids(B,D,E,H,I). +split_by_ids([],[],_,[],[],[],[]). +split_by_ids([A|B],[C|D],E,F,G,H,I) :- + ( memberchk_eq(A,E) -> + F=[C|J], + G=[A|K], + H=L, + I=M + ; + F=J, + G=K, + H=[C|L], + I=[A|M] + ), + split_by_ids(B,D,E,J,K,L,M). +simpagation_head2_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,ids(L,M),_,_,N), + K=rule(O,_,P,Q), + append(O,C,R), + append(L,D,S), + reorder_heads(N,A,R,S,[T|U],[V|W]), + simpagation_head2_prelude(A,T,[U,P,Q],F,G,H,I,X), + extend_id(H,Y), + ( memberchk_eq(V,M) -> + simpagation_universal_searches(U,W,M,[T,A],K,F,G,Z,A1,B1,Y,C1,X,D1) + ; + X=D1, + Y=C1, + Z=U, + A1=[T,A], + B1=W + ), + universal_search_iterator_end(A1,Z,K,F,G,C1,D1,E1), + simpagation_head2_worker(A1,Z,B1,B,E,F,G,C1,E1,J). +simpagation_universal_searches([],[],_,A,_,_,_,[],A,[],B,B,C,C). +simpagation_universal_searches(A,[B|C],D,E,F,G,H,I,J,K,L,M,N,O) :- + A=[P|Q], + inc_id(L,R), + universal_search_iterator_end(E,A,F,G,H,L,N,S), + universal_search_iterator(A,E,F,G,H,L,S,T), + ( memberchk_eq(B,D) -> + simpagation_universal_searches(Q,C,D,[P|E],F,G,H,I,J,K,R,M,T,O) + ; + M=R, + T=O, + I=Q, + J=[P|E], + C=K + ). +simpagation_head2_prelude(A,B,C,D/E,F,G,H,I) :- + head_info(A,E,J,K,L,M), + build_head(D,E,G,L,N), + get_constraint_mode(D/E,O), + head_arg_matches(M,O,[],P,Q,[],R), + lookup_passive_head(B,[A],Q,R,S,T), + gen_occ_allocation(D/E,F,J,K,U), + extend_id(G,V), + extra_active_delegate_variables(A,[B|C],Q,W), + append([T|L],W,X), + build_head(D,E,[F|V],X,Y), + Z=(N:-P,S,!,U,Y), + add_dummy_location(Z,A1), + H=[A1|I]. +extra_active_delegate_variables(A,B,C,D) :- + A=..[_|E], + delegate_variables(A,B,C,E,D). +passive_delegate_variables(A,B,C,D,E) :- + term_variables(B,F), + delegate_variables(A,C,D,F,E). +delegate_variables(A,B,C,D,E) :- + term_variables(A,F), + term_variables(B,G), + intersect_eq(F,G,H), + list_difference_eq(H,D,I), + translate(I,C,E). +simpagation_head2_worker([A|B],C,D,_,E,F/G,H,I,J,K) :- + E=pragma(L,ids(M,_),N,_,O), + L=rule(_,_,P,Q), + get_prop_inner_loop_vars(B,[A,C,P,Q],R,S,T,U,V), + gen_var(W), + gen_var(X), + functor(A,Y,Z), + gen_vars(Z,A1), + head_info(A,Z,A1,W,_,B1), + get_constraint_mode(Y/Z,C1), + head_arg_matches(B1,C1,S,D1,E1,[],_), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(Y/Z,F1),get_static_suspension_field(Y/Z,F1,state,active,G1),get_static_suspension_term_field(arguments,Y/Z,F1,A1))), + different_from_other_susps(A,W,B,V,H1), + I1=(W=F1,G1,H1,D1), + J1=[[W|X]|R], + build_head(F,G,[H|I],J1,K1), + guard_splitting(L,L1), + ( is_stored_in_guard(F/G,O) -> + M1=[_|L1] + ; + M1=L1 + ), + guard_via_reschedule_new(C,M1,[A|B],N1,O1,P1), + rest_heads_retrieval_and_matching(C,D,[A|B],O1,Q1,E1,R1,[A|B],[W|V],[]), + split_by_ids(D,Q1,M,S1,T1), + split_by_ids(D,C,M,U1,_), + partner_constraint_detachments([W|S1],[A|U1],R1,V1), + W1=[X|R], + build_head(F,G,[H|I],W1,X1), + Y1=[[]|R], + build_head(F,G,[H|I],Y1,Z1), + guard_body_copies3(L,M1,R1,N1,A2), + ( is_stored_in_guard(F/G,O) -> + N1=[B2|_] + ; + true + ), + ( is_observed(F/G,H) -> + gen_uncond_attach_goal(F/G,T,U,C2,D2), + gen_state_cond_call(T,F/G,X1,D2,E2), + gen_state_cond_call(T,F/G,Z1,D2,F2) + ; + C2=true, + E2=X1, + F2=Z1 + ), + ( chr_pp_flag(debugable,on) -> + my_term_copy(P-Q,S,G2-H2), + I2='chr debug_event'(try([W|S1],[T|T1],G2,H2)), + J2='chr debug_event'(apply([W|S1],[T|T1],G2,H2)) + ; + I2=true, + J2=true + ), + ( is_stored_in_guard(F/G,O) -> + B2=C2, + K2=true + ; + B2=true, + K2=C2 + ), + ( member(unique(_,L2),N), + check_unique_keys(L2,S) -> + M2=(K1:-I1->(P1,I2->J2,V1,K2,A2,F2;Z1);X1) + ; + M2=(K1:-I1,P1,I2->J2,V1,K2,A2,E2;X1) + ), + add_location(M2,O,N2), + J=[N2|K]. +gen_state_cond_call(A,B,C,D,E) :- + ( may_trigger(B) -> + does_use_field(B,generation), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(B,F),get_update_static_suspension_field(B,A,F,state,active,inactive,G,H),get_static_suspension_field(B,F,generation,D,I),get_static_suspension_term_field(arguments,B,F,J))) + ; + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(B,F),get_update_static_suspension_field(B,A,F,state,active,inactive,G,H),get_static_suspension_term_field(arguments,B,F,J))), + I=true + ), + E=(A=F,G,I->H,C;true). +propagation_code(A,B,C,D,E,F,G,H,I,J,K) :- + ( C==[] -> + propagation_single_headed(A,B,E,F,G,H,I,J,K) + ; + propagation_multi_headed(A,C,D,E,F,G,H,I,J,K) + ). +propagation_single_headed(A,_,B,C,D/E,F,G,H,I) :- + head_info(A,E,J,K,L,M), + build_head(D,E,G,L,N), + inc_id(G,O), + build_head(D,E,O,L,P), + get_constraint_mode(D/E,Q), + head_arg_matches(M,Q,[],R,S,[],_), + guard_body_copies(B,S,T,U), + V=P, + ( unconditional_occurrence(D/E,F), + chr_pp_flag(late_allocation,on) -> + W=true + ; + W=! + ), + B=rule(_,_,X,Y), + ( chr_pp_flag(debugable,on) -> + my_term_copy(X-Y,S,Z-A1), + B1='chr debug_event'(try([],[K],Z,A1)), + C1='chr debug_event'(apply([],[K],Z,A1)), + instrument_goal(W,B1,C1,D1) + ; + D1=W + ), + ( may_trigger(D/E), + \+has_no_history(C) -> + use_auxiliary_predicate(novel_production), + use_auxiliary_predicate(extend_history), + does_use_history(D/E,F), + gen_occ_allocation(D/E,F,J,K,E1), + ( named_history(C,F1,G1) -> + ( G1==[] -> + empty_named_history_novel_production(F1,H1), + empty_named_history_extend_history(F1,I1) + ; + J1=F1 + ) + ; + J1=C + ), + ( var(H1) -> + H1='$novel_production'(K,J1), + I1='$extend_history'(K,J1) + ; + true + ), + ( is_observed(D/E,F) -> + gen_uncond_attach_goal(D/E,K,J,K1,L1), + gen_state_cond_call(K,D/E,V,L1,M1) + ; + K1=true, + M1=V + ) + ; + E1=true, + H1=true, + I1=true, + ( is_observed(D/E,F) -> + get_allocation_occurrence(D/E,N1), + ( F==N1 -> + gen_insert_constraint_internal_goal(D/E,K1,L,J,K), + L1=0 + ; + K1=(O1,P1), + gen_occ_allocation(D/E,F,J,K,O1), + gen_uncond_attach_goal(D/E,K,J,P1,L1) + ), + gen_state_cond_call(K,D/E,V,L1,M1) + ; + gen_occ_allocation(D/E,F,J,K,K1), + M1=V + ) + ), + ( is_stored_in_guard(D/E,C) -> + Q1=K1, + R1=true + ; + Q1=true, + R1=K1 + ), + S1=(N:-R,E1,H1,Q1,T,D1,I1,R1,U,M1), + add_location(S1,C,T1), + H=[T1|I]. +propagation_multi_headed(A,B,C,D,E,F,G,H,I,J) :- + B=[K|L], + propagation_prelude(A,B,D,F,G,H,I,M), + extend_id(H,N), + propagation_nested_code(L,[K,A],C,D,E,F,G,N,M,J). +propagation_prelude(A,[B|C],D,E/F,G,H,I,J) :- + head_info(A,F,K,L,M,N), + build_head(E,F,H,M,O), + get_constraint_mode(E/F,P), + head_arg_matches(N,P,[],Q,R,[],S), + D=rule(_,_,T,U), + extra_active_delegate_variables(A,[B,C,T,U],R,V), + lookup_passive_head(B,[A],R,S,W,X), + gen_occ_allocation(E/F,G,K,L,Y), + extend_id(H,Z), + append([X|M],V,A1), + build_head(E,F,[G|Z],A1,B1), + C1=B1, + D1=(O:-Q,W,!,Y,C1), + add_dummy_location(D1,E1), + I=[E1|J]. +propagation_nested_code([],[A|B],C,D,E,F,G,H,I,J) :- + universal_search_iterator_end([A|B],[],D,F,G,H,I,K), + propagation_body(A,B,C,D,E,F,G,H,K,J). +propagation_nested_code([A|B],C,D,E,F,G,H,I,J,K) :- + universal_search_iterator_end(C,[A|B],E,G,H,I,J,L), + universal_search_iterator([A|B],C,E,G,H,I,L,M), + inc_id(I,N), + propagation_nested_code(B,[A|C],D,E,F,G,H,N,M,K). +check_fd_lookup_condition(A,B,_,_) :- + get_store_type(A/B,global_singleton), + !. +check_fd_lookup_condition(A,B,C,D) :- + \+may_trigger(A/B), + get_functional_dependency(A/B,1,E,F), + copy_term(E-F,C-G), + term_variables(D,H), + intersect_eq(G,H,G), + !. +propagation_body(A,B,C,D,E,F/G,H,I,J,K) :- + D=rule(_,L,M,N), + gen_var_susp_list_for_b(B,[A,M,N],O,P,Q,R,S), + flatten(P,T), + init(R,U), + last(R,V), + gen_var(W), + gen_var(X), + functor(A,Y,Z), + gen_vars(Z,A1), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(Y/Z,B1),get_static_suspension_field(Y/Z,B1,state,active,C1),get_static_suspension_term_field(arguments,Y/Z,B1,A1))), + D1=(W=B1,C1), + E1=[[W|X]|T], + build_head(F,G,[H|I],E1,F1), + ( check_fd_lookup_condition(Y,Z,A,B) -> + universal_search_iterator_failure_vars(B,I,P,Q,S,G1,H1), + I1=G1 + ; + I1=[X|T], + H1=I + ), + ( H1=[_] -> + J1=H1 + ; + J1=[H|H1] + ), + build_head(F,G,J1,I1,K1), + L1=K1, + A=..[_|M1], + pairup(M1,A1,N1), + get_constraint_mode(Y/Z,O1), + head_arg_matches(N1,O1,O,P1,Q1), + different_from_other_susps(A,W,B,U,R1), + guard_body_copies(D,Q1,S1,T1), + get_occurrence(F/G,H,_,U1), + ( is_observed(F/G,H) -> + init(Q,V1), + gen_uncond_attach_goal(F/G,V,V1,W1,X1), + gen_state_cond_call(V,F/G,L1,X1,Y1) + ; + W1=true, + Y1=L1 + ), + ( + ( + is_least_occurrence(E) + ; + has_no_history(E) + ) -> + Z1=true, + A2=true + ; + ( \+may_trigger(F/G), + maplist(is_passive(E),C) -> + Z1=true, + A2=true + ) + ; + get_occurrence(F/G,H,_,U1), + use_auxiliary_predicate(novel_production), + use_auxiliary_predicate(extend_history), + does_use_history(F/G,H), + ( named_history(E,B2,C2) -> + ( C2==[] -> + empty_named_history_novel_production(B2,Z1), + empty_named_history_extend_history(B2,A2) + ; + reverse([W|U],D2), + named_history_susps(C2,[U1|C],[V|D2],E2), + E2=[F2|_], + ( length(C2,1) -> + A2='$extend_history'(F2,B2), + Z1='$novel_production'(F2,B2) + ; + findall(G2,(member(H2,C2),get_occurrence_from_id(G2,_,E,H2)),I2), + J2=..[t,B2|E2] + ) + ) + ; + F2=V, + maplist(extract_symbol,L,I2), + sort([U1|C],C2), + history_susps(C,[W|U],V,U1,E2), + J2=..[t,E|E2] + ), + ( var(Z1) -> + novel_production_calls(I2,C2,E2,E,K2,L2), + A2='$extend_history'(F2,K2), + Z1=(K2=J2,L2) + ; + true + ) + ), + ( chr_pp_flag(debugable,on) -> + D=rule(_,_,M,N), + my_term_copy(M-N,Q1,M2-N2), + get_occurrence(F/G,H,_,U1), + sort_by_key([V,W|U],[U1|C],O2), + P2='chr debug_event'(try([],O2,M2,N2)), + Q2='chr debug_event'(apply([],O2,M2,N2)) + ; + P2=true, + Q2=true + ), + ( is_stored_in_guard(F/G,E) -> + R2=W1, + S2=true + ; + R2=true, + S2=W1 + ), + T2=(F1:-D1,R1,P1,Z1,R2,S1,P2->Q2,A2,S2,T1,Y1;L1), + add_location(T2,E,U2), + J=[U2|K]. +extract_symbol(A,B/C) :- + functor(A,B,C). +novel_production_calls([],[],[],_,_,true). +novel_production_calls([A|B],[C|D],[E|F],G,H,(I,J)) :- + get_occurrence_from_id(A,K,G,C), + delay_phase_end(validate_store_type_assumptions,novel_production_call(A,K,'$novel_production'(E,H),I)), + novel_production_calls(B,D,F,G,H,J). +history_susps(A,B,C,D,E) :- + reverse(B,F), + sort_by_key([C|F],[D|A],E). +named_history_susps([],_,_,[]). +named_history_susps([A|B],C,D,[E|F]) :- + select2(A,E,C,D,G,H), + !, + named_history_susps(B,G,H,F). +gen_var_susp_list_for([A],B,C,D,E,F) :- + !, + functor(A,G,H), + head_info(A,H,_,F,E,I), + get_constraint_mode(G/H,J), + head_arg_matches(I,J,[],_,C), + extra_active_delegate_variables(A,B,C,K), + append(E,K,D). +gen_var_susp_list_for([A|B],C,D,E,F,G) :- + gen_var_susp_list_for(B,[A|C],H,F,_,_), + functor(A,I,J), + gen_var(G), + head_info(A,J,_,K,_,L), + get_constraint_mode(I/J,M), + head_arg_matches(L,M,H,_,D), + passive_delegate_variables(A,B,C,D,N), + append(N,[K,G|F],E). +gen_var_susp_list_for_b([A],B,C,[D],E,[F],[]) :- + !, + functor(A,G,H), + head_info(A,H,_,F,E,I), + get_constraint_mode(G/H,J), + head_arg_matches(I,J,[],_,C), + extra_active_delegate_variables(A,B,C,K), + append(E,K,D). +gen_var_susp_list_for_b([A|B],C,D,[E|F],G,[H|I],[J|K]) :- + gen_var_susp_list_for_b(B,[A|C],L,F,G,I,K), + functor(A,M,N), + gen_var(J), + head_info(A,N,_,H,_,O), + get_constraint_mode(M/N,P), + head_arg_matches(O,P,L,_,D), + passive_delegate_variables(A,B,C,D,Q), + append(Q,[H,J],E). +get_prop_inner_loop_vars([A],B,C,D,E,F,[]) :- + !, + functor(A,G,H), + head_info(A,H,F,E,I,J), + get_constraint_mode(G/H,K), + head_arg_matches(J,K,[],_,D), + extra_active_delegate_variables(A,B,D,L), + append(I,L,C). +get_prop_inner_loop_vars([A|B],C,D,E,F,G,[H|I]) :- + get_prop_inner_loop_vars(B,[A|C],J,K,F,G,I), + functor(A,L,M), + gen_var(N), + head_info(A,M,_,H,_,O), + get_constraint_mode(L/M,P), + head_arg_matches(O,P,K,_,E), + passive_delegate_variables(A,B,C,E,Q), + append(Q,[H,N|J],D). +reorder_heads(A,B,C,D,E,F) :- + ( chr_pp_flag(reorder_heads,on), + length(C,G), + G=<6 -> + reorder_heads_main(A,B,C,D,E,F) + ; + E=C, + F=D + ). +reorder_heads_main(A,B,C,D,E,F) :- + term_variables(B,G), + H=entry([],[],G,C,D,A), + copy_term_nat(H,I), + a_star(I,J^(chr_translate:final_data(J)),K^L^M^(chr_translate:expand_data(K,L,M)),N), + I=H, + N=entry(O,P,_,_,_,_), + reverse(O,E), + reverse(P,F). +final_data(A) :- + A=entry(_,_,_,_,[],_). +expand_data(A,B,C) :- + A=entry(D,E,F,G,H,I), + select2(J,K,G,H,L,M), + term_variables([J|F],N), + B=entry([J|D],[K|E],N,L,M,I), + order_score(J,K,F,L,I,C). +order_score(A,B,C,D,E,F) :- + functor(A,G,H), + get_store_type(G/H,I), + order_score(I,A,B,C,D,E,99999,F). +order_score(default,A,_,B,C,_,D,E) :- + term_variables(A,F), + term_variables(C,G), + ground_vars([A],H), + list_difference_eq(F,H,I), + order_score_vars(I,B,G,J), + E is min(D,J). +order_score(multi_inthash(A),B,_,C,_,_,D,E) :- + ( D=<100 -> + E=D + ; + order_score_indexes(A,B,C,E) + ). +order_score(multi_hash(A),B,_,C,_,_,D,E) :- + ( D=<100 -> + E=D + ; + order_score_indexes(A,B,C,E) + ). +order_score(global_ground,A,_,B,C,_,D,E) :- + term_variables(A,F), + term_variables(C,G), + order_score_vars(F,B,G,H), + I is H*200, + E is min(D,I). +order_score(var_assoc_store(_,_),_,_,_,_,_,_,1). +order_score(global_singleton,_,_,_,_,_,_,A) :- + A=1. +order_score(multi_store(A),B,C,D,E,F,G,H) :- + multi_order_score(A,B,C,D,E,F,G,H). +multi_order_score([],_,_,_,_,_,A,A). +multi_order_score([A|B],C,D,E,F,G,H,I) :- + ( order_score(A,C,D,E,F,G,H,J) -> + true + ; + J=H + ), + multi_order_score(B,C,D,E,F,G,J,I). +order_score(identifier_store(_),_,_,_,_,_,A,B) :- + B is min(A,10). +order_score(type_indexed_identifier_store(_,_),_,_,_,_,_,A,B) :- + B is min(A,10). +order_score_indexes(A,B,C,D) :- + copy_term_nat(B+C,E+F), + numbervars(F,0,_), + order_score_indexes(A,E,D). +order_score_indexes([A|B],C,D) :- + multi_hash_key_args(A,C,E), + ( maplist(ground,E) -> + D=100 + ; + order_score_indexes(B,C,D) + ). +memberchk_eq_flip(A,B) :- + memberchk_eq(B,A). +order_score_vars(A,B,C,D) :- + order_score_count_vars(A,B,C,E-F-G), + ( E-F-G==0-0-0 -> + D=0 + ; + ( E>0 -> + D is max(10-E,0) + ) + ; + ( F>0 -> + D is max(10-F,1)*100 + ) + ; + D is max(10-G,1)*1000 + ). +order_score_count_vars([],_,_,0-0-0). +order_score_count_vars([A|B],C,D,E-F-G) :- + order_score_count_vars(B,C,D,H-I-J), + ( memberchk_eq(A,C) -> + E is H+1, + F=I, + G=J + ; + ( memberchk_eq(A,D) -> + F is I+1, + E=H, + G=J + ) + ; + G is J+1, + E=H, + F=I + ). +create_get_mutable_ref(A,B,C) :- + C=(B=mutable(A)). +create_get_mutable(A,B,C) :- + B=mutable(A), + C=true. +gen_var(_). +gen_vars(A,B) :- + length(B,A). +head_info(A,B,C,D,E,F) :- + vars_susp(B,C,D,E), + A=..[_|G], + pairup(G,C,F). +inc_id([A|B],[C|B]) :- + C is A+1. +dec_id([A|B],[C|B]) :- + C is A-1. +extend_id(A,[0|A]). +next_id([_,A|B],[C|B]) :- + C is A+1. +build_head(A,B,C,D,E) :- + buildName(A,B,C,F), + ( + ( + chr_pp_flag(debugable,on) + ; + is_stored(A/B), + ( + has_active_occurrence(A/B) + ; + chr_pp_flag(late_allocation,off) + ), + ( + may_trigger(A/B) + ; + get_allocation_occurrence(A/B,G), + get_max_occurrence(A/B,H), + H>=G + ) + ) -> + E=..[F|D] + ; + init(D,I), + E=..[F|I] + ). +buildName(A,B,C,D) :- + ( + ( + chr_pp_flag(debugable,on) + ; + once((is_stored(A/B),(has_active_occurrence(A/B);chr_pp_flag(late_allocation,off)),(may_trigger(A/B);get_allocation_occurrence(A/B,E),get_max_occurrence(A/B,F),F>=E);C\=[0])) + ) -> + atom_concat(A,'___',G), + atomic_concat(G,B,H), + buildName_(C,H,D) + ; + D=A + ). +buildName_([],A,A). +buildName_([A|B],C,D) :- + buildName_(B,C,E), + atom_concat(E,'__',F), + atomic_concat(F,A,D). +vars_susp(A,B,C,D) :- + length(B,A), + append(B,[C],D). +or_pattern(A,B) :- + C is A-1, + B is 1<true;D=[]). +singleton_attr(A,B,C,D) :- + chr_pp_flag(dynattr,off), + !, + or_pattern(C,E), + make_attr(A,E,F,D), + nth1(C,F,[B]), + chr_delete(F,[B],G), + set_elems(G,[]). +singleton_attr(_,A,B,C) :- + C=[B-[A]]. +add_attr(A,B,C,D,E,F) :- + chr_pp_flag(dynattr,off), + !, + make_attr(A,G,H,I), + or_pattern(C,J), + nth1(C,H,K), + substitute_eq(K,H,[B|K],L), + make_attr(A,G,L,M), + substitute_eq(K,H,[B],N), + make_attr(A,O,N,P), + E=(D=I,(G/\J=:=J->F=M;O is G\/J,F=P)), + !. +add_attr(_,A,B,C,D,E) :- + D=('chr select'(C,B-F,G)->E=[B-[A|F]|G];E=[B-[A]|C]). +rem_attr(A,B,C,D,E,F) :- + chr_pp_flag(dynattr,off), + !, + or_pattern(D,G), + and_pattern(D,H), + make_attr(A,I,J,K), + nth1(D,J,L), + substitute_eq(L,J,[],M), + make_attr(A,N,M,O), + substitute_eq(L,J,P,Q), + make_attr(A,I,Q,R), + get_target_module(S), + F=(E=K,(I/\G=:=G->'chr sbag_del_element'(L,C,P),(P==[]->N is I/\H,(N==0->del_attr(B,S);put_attr(B,S,O));put_attr(B,S,R));true)), + !. +rem_attr(_,A,B,C,D,E) :- + get_target_module(F), + E=('chr select'(D,C-G,H)->'chr sbag_del_element'(G,B,I),(I==[]->(H==[]->del_attr(A,F);put_attr(A,F,H));put_attr(A,F,[C-I|H]));true). +merge_attributes(A,B,C,D,E) :- + chr_pp_flag(dynattr,off), + !, + make_attr(A,F,G,H), + merge_attributes2(A,F,G,C,I,E), + D=(B=H,I). +merge_attributes(_,A,B,C,D) :- + C=(sort(A,E),sort(B,F),'chr new_merge_attributes'(E,F,D)). +merge_attributes2(A,B,C,D,E,F) :- + make_attr(A,G,H,I), + bagof(J,K^L^M^N^(member2(C,H,K-L),J=(sort(L,M),'chr merge_attributes'(K,M,N))),O), + list2conj(O,P), + bagof(Q,R^S^T^member((R,'chr merge_attributes'(S,T,Q)),O),U), + make_attr(A,V,U,F), + E=(D=I,P,V is B\/G). +lookup_passive_head(A,B,C,D,E) :- + functor(A,F,G), + get_store_type(F/G,H), + lookup_passive_head(H,A,B,C,[],D,E). +lookup_passive_head(A,B,C,D,E,F) :- + functor(A,G,H), + get_store_type(G/H,I), + lookup_passive_head(I,A,B,C,D,E,F). +lookup_passive_head(default,A,B,C,_,D,E) :- + functor(A,F,G), + passive_head_via(A,B,C,D,E), + update_store_type(F/G,default). +lookup_passive_head(multi_inthash(A),B,_,C,D,E,F) :- + hash_lookup_passive_head(inthash,A,B,C,D,E,F,_). +lookup_passive_head(multi_hash(A),B,_,C,D,E,F) :- + hash_lookup_passive_head(hash,A,B,C,D,E,F,_). +lookup_passive_head(global_ground,A,_,_,_,B,C) :- + functor(A,D,E), + global_ground_store_name(D/E,F), + make_get_store_goal(F,C,B), + update_store_type(D/E,global_ground). +lookup_passive_head(var_assoc_store(A,B),C,_,D,_,E,F) :- + arg(A,C,G), + arg(B,C,H), + translate([G,H],D,[I,J]), + get_target_module(K), + E=(get_attr(I,K,L),lookup_assoc_store(L,J,F)). +lookup_passive_head(global_singleton,A,_,_,_,B,C) :- + functor(A,D,E), + global_singleton_store_name(D/E,F), + make_get_store_goal(F,G,H), + B=(H,G\==[],C=[G]), + update_store_type(D/E,global_singleton). +lookup_passive_head(multi_store(A),B,C,D,E,F,G) :- + once((member(H,A),lookup_passive_head(H,B,C,D,E,F,G))). +lookup_passive_head(identifier_store(A),B,_,C,_,D,E) :- + functor(B,F,G), + arg(A,B,H), + translate([H],C,[I]), + delay_phase_end(validate_store_type_assumptions,identifier_lookup(F/G,A,E,I,D)), + update_store_type(F/G,identifier_store(A)), + get_identifier_index(F/G,A,_). +lookup_passive_head(type_indexed_identifier_store(A,B),C,_,D,_,E,F) :- + functor(C,G,H), + arg(A,C,I), + ( var(I) -> + translate([I],D,[J]), + E=K + ; + ( ground(I), + I='$chr_identifier_match'(L,_) -> + lookup_identifier_atom(B,L,J,M), + E=(M,K) + ) + ), + delay_phase_end(validate_store_type_assumptions,type_indexed_identifier_lookup(G/H,A,B,F,J,K)), + update_store_type(G/H,type_indexed_identifier_store(A,B)), + get_type_indexed_identifier_index(B,G/H,A,_). +identifier_lookup(A,B,C,D,E) :- + get_identifier_size(F), + functor(G,struct,F), + get_identifier_index(A,B,H), + arg(H,G,C), + E=(D=G). +type_indexed_identifier_lookup(A,B,C,D,E,F) :- + type_indexed_identifier_structure(C,G), + get_type_indexed_identifier_index(C,A,B,H), + arg(H,G,D), + F=(E=G). +hash_lookup_passive_head(A,B,C,D,E,F,G,H) :- + pick_hash_index(B,C,D,H,I,J), + ( J=[K] -> + true + ; + K=..[k|J] + ), + functor(C,L,M), + multi_hash_lookup_goal(L/M,A,H,K,G,N), + check_ground(E,I,O), + my_term_copy(O,D,P), + F=(P,N), + ( A==inthash -> + update_store_type(L/M,multi_inthash([H])) + ; + update_store_type(L/M,multi_hash([H])) + ). +pick_hash_index(A,B,C,D,E,F) :- + member(D,A), + multi_hash_key_args(D,B,E), + key_in_scope(E,C,F), + !. +key_in_scope([],_,[]). +key_in_scope([A|B],C,[D|E]) :- + term_variables(A,F), + translate(F,C,G), + copy_term(A/F,D/G), + key_in_scope(B,C,E). +existential_lookup(var_assoc_store(A,B),C,D,E,F,G,H,I,J,J) :- + !, + lookup_passive_head(var_assoc_store(A,B),C,D,E,F,K,L), + sbag_member_call(I,L,M), + functor(C,N,O), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,G),get_static_suspension_field(N/O,G,state,active,P))), + H=(K,M,I=G,P). +existential_lookup(global_singleton,A,_,_,_,B,C,D,E,E) :- + !, + functor(A,F,G), + global_singleton_store_name(F/G,H), + make_get_store_goal(H,D,I), + C=(I,D\==[],D=B), + update_store_type(F/G,global_singleton). +existential_lookup(multi_store(A),B,C,D,E,F,G,H,I,J) :- + !, + once((member(K,A),existential_lookup(K,B,C,D,E,F,G,H,I,J))). +existential_lookup(multi_inthash(A),B,_,C,D,E,F,G,H,I) :- + !, + existential_hash_lookup(inthash,A,B,C,D,E,F,G,H,I). +existential_lookup(multi_hash(A),B,_,C,D,E,F,G,H,I) :- + !, + existential_hash_lookup(hash,A,B,C,D,E,F,G,H,I). +existential_lookup(identifier_store(A),B,C,D,E,F,G,H,I,J) :- + !, + lookup_passive_head(identifier_store(A),B,C,D,E,K,L), + hash_index_filter(I,A,J), + functor(B,M,N), + ( check_fd_lookup_condition(M,N,B,_) -> + O=(L=[H]) + ; + sbag_member_call(H,L,O) + ), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(M/N,F),get_static_suspension_field(M/N,F,state,active,P))), + G=(K,O,H=F,P). +existential_lookup(type_indexed_identifier_store(A,B),C,D,E,F,G,H,I,J,K) :- + !, + lookup_passive_head(type_indexed_identifier_store(A,B),C,D,E,F,L,M), + hash_index_filter(J,A,K), + functor(C,N,O), + ( check_fd_lookup_condition(N,O,C,_) -> + P=(M=[I]) + ; + sbag_member_call(I,M,P) + ), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,G),get_static_suspension_field(N/O,G,state,active,Q))), + H=(L,P,I=G,Q). +existential_lookup(A,B,C,D,E,F,G,H,I,I) :- + lookup_passive_head(A,B,C,D,E,J,K), + sbag_member_call(H,K,L), + functor(B,M,N), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(M/N,F),get_static_suspension_field(M/N,F,state,active,O))), + G=(J,L,H=F,O). +existential_hash_lookup(A,B,C,D,E,F,G,H,I,J) :- + hash_lookup_passive_head(A,B,C,D,E,K,L,M), + hash_index_filter(I,M,J), + functor(C,N,O), + ( check_fd_lookup_condition(N,O,C,_) -> + P=(L=[H]) + ; + sbag_member_call(H,L,P) + ), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,F),get_static_suspension_field(N/O,F,state,active,Q))), + G=(K,P,H=F,Q). +hash_index_filter(A,B,C) :- + hash_index_filter(A,B,1,C). +hash_index_filter([],_,_,[]). +hash_index_filter([A|B],C,D,E) :- + ( C=[F|G] -> + H is D+1, + ( F>D -> + E=[A|I], + hash_index_filter(B,[F|G],H,I) + ; + ( F==D -> + E=[silent(A)|I], + hash_index_filter(B,G,H,I) + ) + ) + ; + E=[A|B] + ). +assume_constraint_stores([]). +assume_constraint_stores([A|B]) :- + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + chr_pp_flag(mixed_stores,on) + ), + is_stored(A), + get_store_type(A,default) -> + get_indexed_arguments(A,C), + get_constraint_mode(A,D), + aggregate_all(bag(E)-count,(member(E,C),nth1(E,D,+)),F-G), + ( G>10 -> + findall([E],member(E,F),H) + ; + findall(E,(sublist(E,F),E\==[]),I), + predsort(longer_list,I,H) + ), + ( get_functional_dependency(A,1,J,K), + all_distinct_var_args(J), + K==[] -> + assumed_store_type(A,global_singleton) + ; + ( + ( + only_ground_indexed_arguments(A) + ; + G>0 + ) -> + get_constraint_type_det(A,L), + partition_indexes(H,L,M,N,O,P), + ( N=[] -> + Q=R + ; + Q=[multi_inthash(N)|R] + ), + ( M=[] -> + R=S + ; + R=[multi_hash(M)|S] + ), + ( O=[] -> + S=T + ; + maplist(wrap_in_functor(identifier_store),O,U), + append(U,T,S) + ), + append(P,V,T), + ( only_ground_indexed_arguments(A) -> + V=[global_ground] + ; + V=[default] + ), + assumed_store_type(A,multi_store(Q)) + ) + ; + true + ) + ; + true + ), + assume_constraint_stores(B). +partition_indexes([],_,[],[],[],[]). +partition_indexes([A|B],C,D,E,F,G) :- + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + J==chr_identifier -> + F=[H|K], + E=L, + D=M, + G=N + ; + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + nonvar(J), + J=chr_identifier(O) -> + G=[type_indexed_identifier_store(H,O)|N], + F=K, + E=L, + D=M + ) + ; + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + J==dense_int -> + E=[A|L], + D=M, + F=K, + G=N + ) + ; + ( member(H,A), + nth1(H,C,I), + unalias_type(I,J), + nonvar(J), + J=chr_identifier(_) -> + E=L, + D=M, + F=K, + G=N + ) + ; + E=L, + D=[A|M], + F=K, + G=N + ), + partition_indexes(B,C,M,L,K,N). +longer_list(A,B,C) :- + length(B,D), + length(C,E), + compare(F,E,D), + ( F== = -> + compare(A,B,C) + ; + A=F + ). +all_distinct_var_args(A) :- + copy_term_nat(A,B), + functor(A,C,D), + functor(E,C,D), + E=@=B. +get_indexed_arguments(A,B) :- + A=_/C, + get_indexed_arguments(1,C,A,B). +get_indexed_arguments(A,B,C,D) :- + ( A>B -> + D=[] + ; + ( is_indexed_argument(C,A) -> + D=[A|E] + ; + D=E + ), + F is A+1, + get_indexed_arguments(F,B,C,E) + ). +validate_store_type_assumptions([]). +validate_store_type_assumptions([A|B]) :- + validate_store_type_assumption(A), + validate_store_type_assumptions(B). +universal_search_iterator_end([A|B],C,D,E/F,G,H,I,J) :- + D=rule(_,_,K,L), + gen_var_susp_list_for_b(B,[A,C,K,L],_,M,N,_,O), + universal_search_iterator_failure_vars(B,H,M,N,O,P,Q), + flatten(M,R), + S=[[]|R], + build_head(E,F,[G|H],S,T), + ( Q=[_] -> + get_success_continuation_code_id(E/F,G,U), + V=[U] + ; + V=[G|Q] + ), + build_head(E,F,V,P,W), + X=(T:-W), + add_dummy_location(X,Y), + I=[Y|J]. +universal_search_iterator_failure_vars(A,B,C,D,E,F,G) :- + ( B=[0|_] -> + next_id(B,G), + F=D + ; + C=[_|H], + dec_id(B,I), + ( A=[J|K], + functor(J,L,M), + check_fd_lookup_condition(L,M,J,K) -> + E=[_|N], + universal_search_iterator_failure_vars(K,I,H,D,N,F,G) + ; + G=I, + flatten(H,O), + E=[P|_], + F=[P|O] + ) + ). +universal_search_iterator([A|B],[C|D],E,F/G,H,I,J,K) :- + E=rule(_,_,L,M), + gen_var_susp_list_for_b(D,[C,A,B,L,M],N,O,P,Q,R), + init(Q,S), + flatten(O,T), + gen_var(U), + functor(C,V,W), + gen_vars(W,X), + head_info(C,W,X,Y,_,Z), + get_constraint_mode(V/W,A1), + head_arg_matches(Z,A1,N,B1,C1), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(V/W,D1),get_static_suspension_field(V/W,D1,state,active,E1),get_static_suspension_term_field(arguments,V/W,D1,X))), + different_from_other_susps(C,Y,D,S,F1), + G1=(Y=D1,E1,F1,B1), + add_heads_ground_variables([C|D],[],H1), + lookup_passive_head(A,[C|D],C1,H1,I1,J1), + inc_id(I,K1), + L1=[[Y|U]|T], + build_head(F,G,[H|I],L1,M1), + passive_delegate_variables(C,D,[A,B,L,M],C1,N1), + append([J1|N1],[Y,U|T],O1), + build_head(F,G,[H|K1],O1,P1), + ( check_fd_lookup_condition(V,W,C,D) -> + universal_search_iterator_failure_vars(D,I,O,P,R,Q1,R1), + S1=Q1 + ; + S1=[U|T], + R1=I + ), + ( R1=[_] -> + T1=R1 + ; + T1=[H|R1] + ), + build_head(F,G,T1,S1,U1), + V1=(M1:-G1,I1->P1;U1), + add_dummy_location(V1,W1), + J=[W1|K]. +ai_observation_analysis(A) :- + ( chr_pp_flag(ai_observation_analysis,on), + get_target_module(_), + '$chr_compiled_with_version'(3) -> + list_to_ord_set(A,B), + abstract_constraints(B), + ai_observation_schedule_initial_calls(B,B), + ai_observation_gather_results + ; + true + ). +ai_observation_schedule_initial_calls([],_). +ai_observation_schedule_initial_calls([A|B],C) :- + ai_observation_schedule_initial_call(A,C), + ai_observation_schedule_initial_calls(B,C). +ai_observation_schedule_initial_call(A,_) :- + ai_observation_top(A,B), + initial_call_pattern(B). +ai_observation_schedule_new_calls([],_). +ai_observation_schedule_new_calls([A|B],C) :- + C=odom(_,D), + initial_call_pattern(odom(A,D)), + ai_observation_schedule_new_calls(B,C). +ai_observation_lub(odom(A,B),odom(A,C),odom(A,D)) :- + ord_intersection(B,C,D). +ai_observation_bot(A,B,odom(A,B)). +ai_observation_top(A,odom(A,B)) :- + ord_empty(B). +ai_observation_leq(odom(A,B),odom(A,C)) :- + ord_subset(C,B). +ai_observation_observe_set(A,B,C) :- + ord_subtract(A,B,C). +ai_observation_abstract_constraint(A,B,C) :- + functor(A,D,E), + C=D/E, + memberchk(C,B). +ai_observation_abstract_constraints(A,B,C) :- + findall(D,(member(E,A),ai_observation_abstract_constraint(E,B,D)),C). +ai_observation_abstract_goal_(A,B,C,D,E,F) :- + term_variables((A,B,C),G), + append(A,B,H), + ground_vars(H,I), + list_difference_eq(G,I,J), + ai_observation_abstract_goal(D,E,F,[],J), + !. +ground_vars([],[]). +ground_vars([A|B],C) :- + functor(A,D,E), + get_constraint_mode(D/E,F), + head_info(A,E,_,_,_,G), + head_arg_matches(G,F,[],_,_,[],H), + ground_vars(B,I), + append(H,I,C). +ai_observation_abstract_goal((A,B),C,D,E,F) :- + !, + ai_observation_abstract_goal(A,C,D,G,F), + ai_observation_abstract_goal(B,C,G,E,F). +ai_observation_abstract_goal((A;B),C,[(D;E)|F],F,G) :- + !, + ai_observation_abstract_goal(A,C,D,[],G), + ai_observation_abstract_goal(B,C,E,[],G). +ai_observation_abstract_goal((A->B),C,D,E,F) :- + !, + ai_observation_abstract_goal(A,C,D,G,F), + ai_observation_abstract_goal(B,C,G,E,F). +ai_observation_abstract_goal(A,B,[C|D],D,_) :- + ai_observation_abstract_constraint(A,B,C), + !. +ai_observation_abstract_goal(true,_,A,A,_) :- + !. +ai_observation_abstract_goal(writeln(_),_,A,A,_) :- + !. +ai_observation_abstract_goal(A,_,B,B,C) :- + builtin_binds_b(A,D), + intersect_eq(D,C,[]), + !. +ai_observation_abstract_goal(_,_,[A|B],B,_) :- + A=builtin. +ai_observation_is_observed(odom(_,A),B) :- + \+ord_memberchk(B,A). +unconditional_occurrence(A,B) :- + get_occurrence(A,B,C,_), + get_rule(C,D), + D=pragma(E,_,_,_,_), + copy_term_nat(E,F), + F=rule(G,H,I,_), + guard_entailment:entails_guard([chr_pp_headvariables(G,H)],I), + once((G=[J],H==[];H=[J],G==[],\+may_trigger(A))), + all_distinct_var_args(J). +partial_wake_args([],_,_,_). +partial_wake_args([A|B],[C|D],E,F) :- + ( C\== + -> + ( nonvar(A) -> + no_partial_wake(F) + ; + ( memberchk_eq(A,E) -> + no_partial_wake(F) + ) + ; + true + ) + ; + true + ), + partial_wake_args(B,D,E,F). +generate_show_constraint(A,B,C,D) :- + ( chr_pp_flag(show,on) -> + B=['$show'/0|A], + generate_show_rules(A,D,[E|C]), + inc_rule_count(F), + E=pragma(rule(['$show'],[],true,true),ids([0],[]),[],no,F) + ; + B=A, + D=C + ). +generate_show_rules([],A,A). +generate_show_rules([A/B|C],[D|E],F) :- + functor(G,A,B), + inc_rule_count(H), + D=pragma(rule([],['$show',G],true,writeln(G)),ids([],[0,1]),[passive(1)],no,H), + generate_show_rules(C,E,F). +static_suspension_term(A/B,C) :- + suspension_term_base(A/B,D), + E is D+B, + functor(C,suspension,E). +has_suspension_field(A,B) :- + suspension_term_base_fields(A,C), + memberchk(B,C). +suspension_term_base(A,B) :- + suspension_term_base_fields(A,C), + length(C,B). +suspension_term_base_fields(A,B) :- + ( chr_pp_flag(debugable,on) -> + B=[id,state,history,generation,continuation,functor] + ; + ( uses_history(A) -> + B=[id,state,history|C] + ; + ( only_ground_indexed_arguments(A), + get_functional_dependency(A,1,_,_) -> + B=[state|C] + ) + ; + B=[id,state|C] + ), + ( only_ground_indexed_arguments(A) -> + get_store_type(A,D), + basic_store_types(D,E), + ( memberchk(global_ground,E) -> + C=[global_list_prev|F] + ; + C=F + ), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_fields(E,F) + ; + F=[] + ) + ; + ( may_trigger(A) -> + ( uses_field(A,generation) -> + C=[generation,global_list_prev|F] + ; + C=[global_list_prev|F] + ), + ( chr_pp_flag(mixed_stores,on), + chr_pp_flag(ht_removal,on) -> + get_store_type(A,D), + basic_store_types(D,E), + ht_prev_fields(E,F) + ; + F=[] + ) + ) + ; + C=[global_list_prev|F], + ( chr_pp_flag(mixed_stores,on), + chr_pp_flag(ht_removal,on) -> + get_store_type(A,D), + basic_store_types(D,E), + ht_prev_fields(E,F) + ; + F=[] + ) + ) + ). +ht_prev_fields(A,B) :- + ht_prev_fields_int(A,C), + append(C,B). +ht_prev_fields_int([],[]). +ht_prev_fields_int([A|B],C) :- + ( A=multi_hash(D) -> + maplist(ht_prev_field,D,E), + C=[E|F] + ; + C=F + ), + ht_prev_fields_int(B,F). +ht_prev_field(A,B) :- + concat_atom(['multi_hash_prev-'|A],B). +get_static_suspension_term_field(A,B,C,D) :- + suspension_term_base_fields(B,E), + nth1(F,E,A), + !, + arg(F,C,D). +get_static_suspension_term_field(arguments,A,B,C) :- + !, + suspension_term_base(A,D), + B=..[_|E], + drop(D,E,C). +get_static_suspension_term_field(A,B,_,_) :- + chr_error(internal,'Trying to obtain field ~w of ~w, wich does not have it!',[A,B]). +get_dynamic_suspension_term_field(A,B,C,D,E) :- + suspension_term_base_fields(B,F), + nth1(G,F,A), + !, + E=arg(G,C,D). +get_dynamic_suspension_term_field(arguments,A,B,C,D) :- + !, + static_suspension_term(A,E), + get_static_suspension_term_field(arguments,A,E,C), + D=(B=E). +get_dynamic_suspension_term_field(argument(A),B,C,D,E) :- + !, + suspension_term_base(B,F), + G is A+F, + E=arg(G,C,D). +get_dynamic_suspension_term_field(A,B,_,_,_) :- + chr_error(internal,'Dynamic goal to get ~w of ~w, which does not have this field!',[A,B]). +set_dynamic_suspension_term_field(A,B,C,D,E) :- + suspension_term_base_fields(B,F), + nth1(G,F,A), + !, + E=setarg(G,C,D). +set_dynamic_suspension_term_field(A,B,_,_,_) :- + chr_error(internal,'Dynamic goal to set ~w of ~w, which does not have this field!',[A,B]). +basic_store_types(multi_store(A),A) :- + !. +basic_store_types(A,[A]). +generate_never_stored_rules(A,B) :- + ( chr_pp_flag(declare_stored_constraints,on) -> + never_stored_rules(A,B) + ; + B=[] + ). +check_storedness_assertions(A) :- + ( chr_pp_flag(storage_analysis,on), + chr_pp_flag(declare_stored_constraints,on) -> + forall(B,A,check_storedness_assertion(B)) + ; + true + ). +continuation_analysis(A) :- + maplist(analyse_continuations,A). +analyse_continuations(A) :- + continuation_analysis(A,1), + get_max_occurrence(A,B), + C is B+1, + bulk_propagation(A,1,C), + set_occurrence_code_id(A,1,0). +continuation_analysis(A,B) :- + get_max_occurrence(A,C), + ( B>C -> + true + ; + ( B==C -> + D is B+1, + continuation_occurrence(A,B,D) + ) + ; + constraint_continuation(A,B,C,D), + continuation_occurrence(A,B,D), + E is B+1, + continuation_analysis(A,E) + ). +constraint_continuation(A,B,C,D) :- + ( get_occurrence_head(A,B,E) -> + F is B+1, + ( between(F,C,D), + get_occurrence_head(A,D,G), + unifiable(E,G,_) -> + true + ; + D is C+1 + ) + ; + D=C + ). +get_occurrence_head(A,B,C) :- + get_occurrence(A,B,D,E), + \+is_passive(D,E), + get_rule(D,F), + F=pragma(rule(G,H,_,_),ids(I,J),_,_,_), + ( select2(E,C,I,G,_,_) -> + true + ; + select2(E,C,J,H,_,_) + ). +get_success_continuation_code_id(A,B,C) :- + get_success_continuation_occurrence(A,B,D), + get_occurrence_code_id(A,D,C). +collect_constants(A,B,C) :- + ( not_restarted -> + maplist(collect_rule_constants(B),A), + ( chr_pp_flag(verbose,on) -> + print_chr_constants + ; + true + ), + ( chr_pp_flag(experiment,on) -> + flattening_dictionary(B,D), + copy_term_nat(C,E), + flatten_clauses(E,D,F), + install_new_declarations_and_restart(F) + ; + true + ) + ; + true + ). +collect_rule_constants(A,B) :- + B=pragma(rule(C,D,_,E),_,_,_,_), + maplist(collect_head_constants,C), + maplist(collect_head_constants,D), + collect_body_constants(E,A). +collect_body_constants(A,B) :- + conj2list(A,C), + maplist(collect_goal_constants(B),C). +collect_goal_constants(A,B) :- + ( nonvar(B), + functor(B,C,D), + memberchk(C/D,A) -> + collect_head_constants(B) + ; + ( nonvar(B), + B=E:F, + get_target_module(G), + E==G, + nonvar(F), + functor(F,C,D), + memberchk(C/D,A) -> + collect_head_constants(F) + ) + ; + true + ). +collect_head_constants(A) :- + functor(A,B,C), + get_constraint_type_det(B/C,D), + A=..[_|E], + maplist(collect_arg_constants,E,D). +collect_arg_constants(A,B) :- + ( ground(A), + unalias_type(B,C), + is_chr_constants_type(C,D,_) -> + add_chr_constant(D,A) + ; + true + ). +flattening_dictionary([],[]). +flattening_dictionary([A|B],C) :- + ( flattening_dictionary_entry(A,D) -> + C=[D|E] + ; + C=E + ), + flattening_dictionary(B,E). +flattening_dictionary_entry(A,B) :- + get_constraint_arg_type(A,C,D), + ( is_chr_constants_type(D,E,F) -> + get_chr_constants(E,G) + ; + ( D=chr_enum(G) -> + F=no + ) + ), + B=A-C-H-F, + maplist(flat_spec(A,C),G,H). +flat_spec(A/B,C,D,E) :- + E=D-F, + term_to_atom(D,G), + atom_concat_list(['$flat_',A,/,B,'___',C,'___',G],F). +restart_after_flattening(A,A) :- + nb_setval('$chr_restart_after_flattening',started). +restart_after_flattening(_,A) :- + nb_getval('$chr_restart_after_flattening',restart(A)), + nb_setval('$chr_restart_after_flattening',restarted). +not_restarted :- + nb_getval('$chr_restart_after_flattening',started). +install_new_declarations_and_restart(A) :- + nb_setval('$chr_restart_after_flattening',restart(A)), + fail. +flatten_clauses(A,B,C) :- + flatten_readcontent(A,D,E,F,_,G,H), + flatten_clauses_(B,D,H,E,F,G,C). +flatten_clauses_(A,B,C,D,E,F,G) :- + auxiliary_constraints_declarations(A,E,F,H), + dispatching_rules(A,I), + declarations(D,A,E,F,J), + flatten_rules(B,A,K), + append([C,H,I,J,K],G). +declarations(A,B,C,D,E) :- + findall(F,(member(F,A),\+memberchk(F-_-_-_,B)),G), + maplist(declaration(C,D),G,H), + flatten(H,E). +declaration(A,B,C,[(:-chr_constraint C),(:-chr_option(mode,D)),(:-chr_option(type_declaration,E))]) :- + C=F/G, + functor(D,F,G), + ( memberchk(D,A) -> + true + ; + replicate(G,?,H), + D=..[_|H] + ), + functor(E,F,G), + ( memberchk(E,B) -> + true + ; + replicate(G,any,I), + E=..[_|I] + ). +flatten_readcontent([],[],[],[],[],[],[]). +flatten_readcontent([A|B],C,D,E,F,G,H) :- + ( A==end_of_file -> + C=[], + D=[], + E=[], + G=[], + F=[], + H=[] + ; + ( crude_is_rule(A) -> + C=[A|I], + flatten_readcontent(B,I,D,E,F,G,H) + ) + ; + ( pure_is_declaration(A,J,K,L) -> + append(J,M,D), + append(K,N,E), + append(L,O,G), + flatten_readcontent(B,C,M,N,F,O,H) + ) + ; + ( is_mode_declaration(A,P) -> + E=[P|N], + flatten_readcontent(B,C,D,N,F,G,H) + ) + ; + ( is_type_declaration(A,Q) -> + G=[Q|O], + flatten_readcontent(B,C,D,E,F,O,H) + ) + ; + ( is_type_definition(A,R) -> + H=[A|S], + F=[R|T], + flatten_readcontent(B,C,D,E,T,G,S) + ) + ; + ( A=(:-op(U,V,W)) -> + op(U,V,W) + ; + true + ), + H=[A|S], + flatten_readcontent(B,C,D,E,F,G,S) + ). +crude_is_rule((_@_)). +crude_is_rule((_ pragma _)). +crude_is_rule((_==>_)). +crude_is_rule((_<=>_)). +pure_is_declaration(A,B,C,D) :- + A=(:-E), + E=..[F,G], + F==chr_constraint, + conj2list(G,H), + pure_extract_type_mode(H,B,C,D). +pure_extract_type_mode([],[],[],[]). +pure_extract_type_mode([A/B|C],[A/B|D],E,F) :- + !, + pure_extract_type_mode(C,D,E,F). +pure_extract_type_mode([A|B],[C|D],[E|F],G) :- + functor(A,H,I), + C=H/I, + A=..[_|J], + extract_types_and_modes(J,K,L), + E=..[H|L], + ( forall(member(M,K),M==any) -> + G=N + ; + G=[O|N], + O=..[H|K] + ), + pure_extract_type_mode(B,D,F,N). +is_mode_declaration((:-chr_option(mode,A)),A). +is_type_declaration((:-chr_option(type_declaration,A)),A). +auxiliary_constraints_declarations(A,B,C,D) :- + findall(E,auxiliary_constraints_declaration(A,B,C,E),F), + flatten(F,D). +auxiliary_constraints_declaration(A,B,C,[(:-chr_constraint D),(:-chr_option(mode,E)),(:-chr_option(type_declaration,F))]) :- + member(G/H-I-J-_,A), + arg_modes(G,H,B,K), + specialize_modes(K,I,L), + arg_types(G,H,C,M), + specialize_types(M,I,N), + O is H-1, + member(_-P,J), + D=P/O, + E=..[P|L], + F=..[P|N]. +arg_modes(A,B,C,D) :- + functor(E,A,B), + ( memberchk(E,C) -> + E=..[_|D] + ; + replicate(B,?,D) + ). +specialize_modes(A,B,C) :- + split(A,B,D,_,E), + append(D,E,C). +arg_types(A,B,C,D) :- + functor(E,A,B), + ( memberchk(E,C) -> + E=..[_|D] + ; + replicate(B,any,D) + ). +specialize_types(A,B,C) :- + split(A,B,D,_,E), + append(D,E,C). +dispatching_rules([],[]). +dispatching_rules([A-B-C-D|E],F) :- + constraint_dispatching_rule(C,A,B,D,F,G), + dispatching_rules(E,G). +constraint_dispatching_rule(A,B/C,D,E,F,G) :- + ( D==1 -> + H=F, + I=B/C + ; + functor(J,B,C), + J=..[_|K], + split(K,D,L,M,N), + append([M|L],N,O), + atom_concat(B,'_$shuffled',P), + Q=..[P|O], + [(J:-Q)|H]=F, + I=P/C + ), + R=swap(B,D), + dispatching_rule_term_cases(A,I,E,R,H,G). +dispatching_rule_term_cases(A,B/C,D,E,F,G) :- + once(pairup(H,I,A)), + length(H,J), + replicate(J,[],K), + L is C-1, + maplist(wrap_in_functor(dispatching_action),I,M), + dispatch_trie_index([H|K],L,D,E,M,B,F,G). +dispatching_action(A,B,C) :- + C=..[A|B]. +dispatch_trie_index([A|B],C,D,E,F,G,H,I) :- + dispatch_trie_step(A,G,G,B,C,D,E,F,H,I). +dispatch_trie_step([],_,_,_,[],_,_,[],A,A) :- + !. +dispatch_trie_step(A,B,C,D,E,F,G,H,I,J) :- + D=[K|_], + length(K,L), + aggregate_all(set(M/N),(member(O,A),functor(O,M,N)),P), + Q is L+1, + dispatch_trie_step_cases(P,Q,A,D,E,F,G,H,B,C,I,J). +dispatch_trie_step_cases([],A,_,_,B,C,D,_,E,_,F,G) :- + ( C=yes(H) -> + F=[I|G], + I=(J:-K), + L is A+B, + functor(J,E,L), + reconstruct_original_term(D,J,M), + K=..[H,M] + ; + F=G + ). +dispatch_trie_step_cases([A|B],C,D,E,F,G,H,I,J,K,L,M) :- + dispatch_trie_step_case(A,C,D,E,F,G,H,I,J,K,L,N), + dispatch_trie_step_cases(B,C,D,E,F,G,H,I,J,K,N,M). +dispatch_trie_step_case(A/B,C,D,E,F,G,H,I,J,K,[L|M],N) :- + L=(O:-P,Q), + ( G=yes(_) -> + P=! + ; + P=true + ), + R is C+F, + functor(O,J,R), + arg(1,O,S), + O=..[_,_|T], + length(U,F), + once(append(V,U,T)), + functor(S,A,B), + W=index_functor(A,B,H), + S=..[_|X], + append(X,T,Y), + ( Y==U -> + M=N, + rec_cases(D,_,I,A/B,_,_,Z), + Z=[A1], + call(A1,U,Q) + ; + rec_cases(D,E,I,A/B,B1,C1,Z), + ( Z=[D1] -> + M=N, + call(D1,U,Q) + ; + pairup(B1,C1,E1), + common_pattern(E1,F1,G1,H1), + append(X,V,[I1|J1]), + I1-J1=F1, + K1=gct(V,W), + gensym(K,L1), + append(G1,U,M1), + Q=..[L1|M1], + findall(N1-O1,member([N1|O1],H1),P1), + once(pairup(Q1,R1,P1)), + dispatch_trie_step(Q1,L1,K,R1,F,G,K1,Z,M,N) + ) + ). +split([A|B],C,D,E,F) :- + ( C==1 -> + D=[], + E=A, + F=B + ; + G is C-1, + D=[A|H], + split(B,G,H,E,F) + ). +reconstruct_original_term(swap(A,B),C,D) :- + C=..[_,E|F], + G is B-1, + split_at(G,F,H,I), + append(H,[E|I],J), + D=..[A|J]. +reconstruct_original_term(index_functor(A,B,C),D,E) :- + D=..[F|G], + split_at(B,G,H,I), + J=..[A|H], + K=..[F,J|I], + reconstruct_original_term(C,K,E). +reconstruct_original_term(gct(A,B),C,D) :- + copy_term_nat(A,E), + term_variables(E,F), + C=..[G|H], + append(F,I,H), + append(E,I,J), + K=..[G|J], + reconstruct_original_term(B,K,D). +flatten_rules(A,B,C) :- + flatten_rules1(A,B,D), + flatten(D,C). +flatten_rules1([],_,[]). +flatten_rules1([A|B],C,[D|E]) :- + findall(F,flatten_rule(A,C,F),D), + flatten_rules1(B,C,E). +flatten_rule((A@B),C,(A@D)) :- + !, + flatten_rule(B,C,D). +flatten_rule((A pragma B),C,(D pragma B)) :- + !, + flatten_rule(A,C,D). +flatten_rule((A==>B),C,(D==>E)) :- + !, + flatten_heads(A,C,D), + flatten_body(B,C,E). +flatten_rule((A\B<=>C),D,(E\F<=>G)) :- + !, + flatten_heads((A,B),D,(E,F)), + flatten_body(C,D,G). +flatten_rule((A<=>B),C,(D<=>E)) :- + flatten_heads(A,C,D), + flatten_body(B,C,E). +flatten_heads((A,B),C,(D,E)) :- + !, + flatten_heads(A,C,D), + flatten_heads(B,C,E). +flatten_heads(A#B,C,D#B) :- + !, + flatten_heads(A,C,D). +flatten_heads(A,B,C) :- + ( functor(A,D,E), + memberchk(D/E-F-G-_,B) -> + A=..[_|H], + split(H,F,I,J,K), + member(L-M,G), + J=L, + append(I,K,N), + C=..[M|N] + ; + C=A + ). +flatten_body((A '|' B),C,(D '|' E)) :- + !, + conj2list(A,F), + maplist(flatten_goal(C),F,G), + list2conj(G,D), + conj2list(B,H), + maplist(flatten_goal(C),H,I), + list2conj(I,E). +flatten_body(A,B,C) :- + conj2list(A,D), + maplist(flatten_goal(B),D,E), + list2conj(E,C). +flatten_goal(_,A,B) :- + var(A), + !, + B=A. +flatten_goal(A,B,C) :- + ( is_specializable_goal(B,A,D) -> + specialize_goal(B,D,C) + ; + ( B=E:F, + get_target_module(G), + E==G, + nonvar(F), + is_specializable_goal(F,A,D) -> + specialize_goal(F,D,H), + C=E:H + ) + ; + ( partial_eval(B,C) -> + true + ) + ; + C=B + ). +is_specializable_goal(A,B,C) :- + functor(A,D,E), + memberchk(D/E-C-_-_,B), + arg(C,A,F), + ground(F). +specialize_goal(A,B,C) :- + functor(A,D,E), + A=..[_|F], + split(F,B,G,H,I), + append(G,I,J), + flat_spec(D/E,B,H,_-K), + C=..[K|J]. +partial_eval(append(A,B,C),D) :- + ( A==[] -> + D=(C=B) + ; + ( B==[] -> + D=(C=A) + ) + ). +partial_eval(flatten_path(A,B),C) :- + ( nonvar(A), + flatten(A,D), + D\==A -> + C=flatten_path(D,B) + ). +dump_code(A) :- + ( chr_pp_flag(dump,on) -> + maplist(portray_clause,A) + ; + true + ). +chr_banner :- + chr_info(banner,' The K.U.Leuven CHR System + Contributors: Tom Schrijvers, Jon Sneyers, Bart Demoen, + Jan Wielemaker + Copyright: K.U.Leuven, Belgium + URL: http://www.cs.kuleuven.be/~~toms/CHR/ +',[]). +:-use_module(chr(chr_runtime)). +:-use_module(chr(chr_hashtable_store)). +attach_generate_empty_named_history_initialisation___1([],_). +attach_generate_empty_named_history_initialisation___1([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\1=:=1 -> + Q=v(N,[C|D],E,F,G,H,I,J,K,L,M) + ; + O is N\/1, + Q=v(O,[C],E,F,G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(1,[C],[],[],[],[],[],[],[],[],[])) + ), + attach_generate_empty_named_history_initialisation___1(B,C). +detach_generate_empty_named_history_initialisation___1([],_). +detach_generate_empty_named_history_initialisation___1([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\1=:=1 -> + 'chr sbag_del_element'(D,C,P), + ( P==[] -> + O is N/\ -2, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,[],E,F,G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,P,E,F,G,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_generate_empty_named_history_initialisation___1(B,C). +attach_background_info___2([],_). +attach_background_info___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\2=:=2 -> + Q=v(N,D,[C|E],F,G,H,I,J,K,L,M) + ; + O is N\/2, + Q=v(O,D,[C],F,G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(2,[],[C],[],[],[],[],[],[],[],[])) + ), + attach_background_info___2(B,C). +detach_background_info___2([],_). +detach_background_info___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\2=:=2 -> + 'chr sbag_del_element'(E,C,P), + ( P==[] -> + O is N/\ -3, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,[],F,G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,P,F,G,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_background_info___2(B,C). +attach_get_bg_info___2([],_). +attach_get_bg_info___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\4=:=4 -> + Q=v(N,D,E,[C|F],G,H,I,J,K,L,M) + ; + O is N\/4, + Q=v(O,D,E,[C],G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(4,[],[],[C],[],[],[],[],[],[],[])) + ), + attach_get_bg_info___2(B,C). +detach_get_bg_info___2([],_). +detach_get_bg_info___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\4=:=4 -> + 'chr sbag_del_element'(F,C,P), + ( P==[] -> + O is N/\ -5, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,[],G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,P,G,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_get_bg_info___2(B,C). +attach_type_definition___2([],_). +attach_type_definition___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\8=:=8 -> + Q=v(N,D,E,F,[C|G],H,I,J,K,L,M) + ; + O is N\/8, + Q=v(O,D,E,F,[C],H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(8,[],[],[],[C],[],[],[],[],[],[])) + ), + attach_type_definition___2(B,C). +detach_type_definition___2([],_). +detach_type_definition___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\8=:=8 -> + 'chr sbag_del_element'(G,C,P), + ( P==[] -> + O is N/\ -9, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,[],H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,P,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_type_definition___2(B,C). +attach_type_alias___2([],_). +attach_type_alias___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\16=:=16 -> + Q=v(N,D,E,F,G,[C|H],I,J,K,L,M) + ; + O is N\/16, + Q=v(O,D,E,F,G,[C],I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(16,[],[],[],[],[C],[],[],[],[],[])) + ), + attach_type_alias___2(B,C). +detach_type_alias___2([],_). +detach_type_alias___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\16=:=16 -> + 'chr sbag_del_element'(H,C,P), + ( P==[] -> + O is N/\ -17, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,[],I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,P,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_type_alias___2(B,C). +attach_unalias_type___2([],_). +attach_unalias_type___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\32=:=32 -> + Q=v(N,D,E,F,G,H,[C|I],J,K,L,M) + ; + O is N\/32, + Q=v(O,D,E,F,G,H,[C],J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(32,[],[],[],[],[],[C],[],[],[],[])) + ), + attach_unalias_type___2(B,C). +detach_unalias_type___2([],_). +detach_unalias_type___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\32=:=32 -> + 'chr sbag_del_element'(I,C,P), + ( P==[] -> + O is N/\ -33, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,[],J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,P,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_unalias_type___2(B,C). +attach_static_type_check_var___3([],_). +attach_static_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\64=:=64 -> + Q=v(N,D,E,F,G,H,I,[C|J],K,L,M) + ; + O is N\/64, + Q=v(O,D,E,F,G,H,I,[C],K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(64,[],[],[],[],[],[],[C],[],[],[])) + ), + attach_static_type_check_var___3(B,C). +detach_static_type_check_var___3([],_). +detach_static_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\64=:=64 -> + 'chr sbag_del_element'(J,C,P), + ( P==[] -> + O is N/\ -65, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,[],K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,P,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_static_type_check_var___3(B,C). +attach_static_atomic_builtin_type_check_var___3([],_). +attach_static_atomic_builtin_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\128=:=128 -> + Q=v(N,D,E,F,G,H,I,J,[C|K],L,M) + ; + O is N\/128, + Q=v(O,D,E,F,G,H,I,J,[C],L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(128,[],[],[],[],[],[],[],[C],[],[])) + ), + attach_static_atomic_builtin_type_check_var___3(B,C). +detach_static_atomic_builtin_type_check_var___3([],_). +detach_static_atomic_builtin_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\128=:=128 -> + 'chr sbag_del_element'(K,C,P), + ( P==[] -> + O is N/\ -129, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,[],L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,P,L,M)) + ) + ; + true + ) + ; + true + ), + detach_static_atomic_builtin_type_check_var___3(B,C). +attach_atomic_type___1([],_). +attach_atomic_type___1([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\256=:=256 -> + Q=v(N,D,E,F,G,H,I,J,K,[C|L],M) + ; + O is N\/256, + Q=v(O,D,E,F,G,H,I,J,K,[C],M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(256,[],[],[],[],[],[],[],[],[C],[])) + ), + attach_atomic_type___1(B,C). +detach_atomic_type___1([],_). +detach_atomic_type___1([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\256=:=256 -> + 'chr sbag_del_element'(L,C,P), + ( P==[] -> + O is N/\ -257, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,K,[],M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,K,P,M)) + ) + ; + true + ) + ; + true + ), + detach_atomic_type___1(B,C). +attach_enumerated_atomic_type___2([],_). +attach_enumerated_atomic_type___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\512=:=512 -> + Q=v(N,D,E,F,G,H,I,J,K,L,[C|M]) + ; + O is N\/512, + Q=v(O,D,E,F,G,H,I,J,K,L,[C]) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(512,[],[],[],[],[],[],[],[],[],[C])) + ), + attach_enumerated_atomic_type___2(B,C). +detach_enumerated_atomic_type___2([],_). +detach_enumerated_atomic_type___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\512=:=512 -> + 'chr sbag_del_element'(M,C,P), + ( P==[] -> + O is N/\ -513, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,K,L,[])) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,K,L,P)) + ) + ; + true + ) + ; + true + ), + detach_enumerated_atomic_type___2(B,C). +attach_increment([],_). +attach_increment([B|C],A) :- + ( get_attr(B,chr_translate,U1) -> + A=v(N,D,E,F,G,H,I,J,K,L,M), + U1=v(Y,O,P,Q,R,S,T,U,V,W,X), + sort(O,Z), + 'chr merge_attributes'(D,Z,A1), + sort(P,B1), + 'chr merge_attributes'(E,B1,C1), + sort(Q,D1), + 'chr merge_attributes'(F,D1,E1), + sort(R,F1), + 'chr merge_attributes'(G,F1,G1), + sort(S,H1), + 'chr merge_attributes'(H,H1,I1), + sort(T,J1), + 'chr merge_attributes'(I,J1,K1), + sort(U,L1), + 'chr merge_attributes'(J,L1,M1), + sort(V,N1), + 'chr merge_attributes'(K,N1,O1), + sort(W,P1), + 'chr merge_attributes'(L,P1,Q1), + sort(X,R1), + 'chr merge_attributes'(M,R1,S1), + T1 is N\/Y, + put_attr(B,chr_translate,v(T1,A1,C1,E1,G1,I1,K1,M1,O1,Q1,S1)) + ; + put_attr(B,chr_translate,A) + ), + attach_increment(C,A). +attr_unify_hook(v(L,B,C,D,E,F,G,H,I,J,K),A) :- + sort(B,M), + sort(C,N), + sort(D,O), + sort(E,P), + sort(F,Q), + sort(G,R), + sort(H,S), + sort(I,T), + sort(J,U), + sort(K,V), + ( var(A) -> + ( get_attr(A,chr_translate,C2) -> + C2=v(G1,W,X,Y,Z,A1,B1,C1,D1,E1,F1), + sort(W,H1), + 'chr merge_attributes'(M,H1,I1), + sort(X,J1), + 'chr merge_attributes'(N,J1,K1), + sort(Y,L1), + 'chr merge_attributes'(O,L1,M1), + sort(Z,N1), + 'chr merge_attributes'(P,N1,O1), + sort(A1,P1), + 'chr merge_attributes'(Q,P1,Q1), + sort(B1,R1), + 'chr merge_attributes'(R,R1,S1), + sort(C1,T1), + 'chr merge_attributes'(S,T1,U1), + sort(D1,V1), + 'chr merge_attributes'(T,V1,W1), + sort(E1,X1), + 'chr merge_attributes'(U,X1,Y1), + sort(F1,Z1), + 'chr merge_attributes'(V,Z1,A2), + B2 is L\/G1, + put_attr(A,chr_translate,v(B2,I1,K1,M1,O1,Q1,S1,U1,W1,Y1,A2)), + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(K1), + '$run_suspensions_get_bg_info___2'(M1), + '$run_suspensions_type_definition___2'(O1), + '$run_suspensions_type_alias___2'(Q1), + '$run_suspensions_unalias_type___2'(S1), + '$run_suspensions_static_type_check_var___3'(U1), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(W1), + '$run_suspensions_atomic_type___1'(Y1), + '$run_suspensions_enumerated_atomic_type___2'(A2) + ; + put_attr(A,chr_translate,v(L,M,N,O,P,Q,R,S,T,U,V)), + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(N), + '$run_suspensions_get_bg_info___2'(O), + '$run_suspensions_type_definition___2'(P), + '$run_suspensions_type_alias___2'(Q), + '$run_suspensions_unalias_type___2'(R), + '$run_suspensions_static_type_check_var___3'(S), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(T), + '$run_suspensions_atomic_type___1'(U), + '$run_suspensions_enumerated_atomic_type___2'(V) + ) + ; + ( compound(A) -> + term_variables(A,D2), + attach_increment(D2,v(L,M,N,O,P,Q,R,S,T,U,V)) + ; + true + ), + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(N), + '$run_suspensions_get_bg_info___2'(O), + '$run_suspensions_type_definition___2'(P), + '$run_suspensions_type_alias___2'(Q), + '$run_suspensions_unalias_type___2'(R), + '$run_suspensions_static_type_check_var___3'(S), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(T), + '$run_suspensions_atomic_type___1'(U), + '$run_suspensions_enumerated_atomic_type___2'(V) + ). +'$novel_production'(A,B) :- + arg(3,A,C), + ( hprolog:get_ds(B,C,_) -> + fail + ; + true + ). +'$extend_history'(A,B) :- + arg(3,A,C), + hprolog:put_ds(B,C,x,D), + setarg(3,A,D). +'$run_suspensions_generate_empty_named_history_initialisation___1'([]). +'$run_suspensions_generate_empty_named_history_initialisation___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + generate_empty_named_history_initialisation___1__0(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_generate_empty_named_history_initialisation___1'(B). +'$run_suspensions_background_info___2'([]). +'$run_suspensions_background_info___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + background_info___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ), + '$run_suspensions_background_info___2'(B). +'$run_suspensions_get_bg_info___2'([]). +'$run_suspensions_get_bg_info___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + get_bg_info___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_get_bg_info___2'(B). +'$run_suspensions_type_definition___2'([]). +'$run_suspensions_type_definition___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + type_definition___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_type_definition___2'(B). +'$run_suspensions_type_alias___2'([]). +'$run_suspensions_type_alias___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + type_alias___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_type_alias___2'(B). +'$run_suspensions_unalias_type___2'([]). +'$run_suspensions_unalias_type___2'([A|B]) :- + A=suspension(_,C,_,D,E), + ( C==active -> + setarg(2,A,triggered), + unalias_type___2__0(D,E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_unalias_type___2'(B). +'$run_suspensions_static_type_check_var___3'([]). +'$run_suspensions_static_type_check_var___3'([A|B]) :- + A=suspension(_,C,_,D,E,F), + ( C==active -> + setarg(2,A,triggered), + static_type_check_var___3__0(D,E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_static_type_check_var___3'(B). +'$run_suspensions_static_atomic_builtin_type_check_var___3'([]). +'$run_suspensions_static_atomic_builtin_type_check_var___3'([A|B]) :- + A=suspension(_,C,_,D,E,F), + ( C==active -> + setarg(2,A,triggered), + static_atomic_builtin_type_check_var___3__0(D,E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(B). +'$run_suspensions_atomic_type___1'([]). +'$run_suspensions_atomic_type___1'([A|B]) :- + A=suspension(_,C,_,D), + ( C==active -> + setarg(2,A,triggered), + atomic_type___1__0(D,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_atomic_type___1'(B). +'$run_suspensions_enumerated_atomic_type___2'([]). +'$run_suspensions_enumerated_atomic_type___2'([A|B]) :- + A=suspension(_,C,_,D,E), + ( C==active -> + setarg(2,A,triggered), + enumerated_atomic_type___2__0(D,E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_enumerated_atomic_type___2'(B). +'$enumerate_constraints'(A) :- + ( nonvar(A) -> + functor(A,B,_), + '$enumerate_constraints'(B,A) + ; + '$enumerate_constraints'(_,A) + ). +'$enumerate_constraints'(chr_source_file,A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=chr_source_file(D). +'$enumerate_constraints'(target_module,A) :- + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=target_module(D). +'$enumerate_constraints'(line_number,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=line_number(D,E). +'$enumerate_constraints'(indexed_argument,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=indexed_argument(D,E). +'$enumerate_constraints'(constraint_mode,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=constraint_mode(D,E). +'$enumerate_constraints'(none_suspended_on_variables,A) :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=none_suspended_on_variables. +'$enumerate_constraints'(store_type,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=store_type(D,E). +'$enumerate_constraints'(actual_store_types,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=actual_store_types(D,E). +'$enumerate_constraints'(assumed_store_type,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=assumed_store_type(D,E). +'$enumerate_constraints'(validate_store_type_assumption,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=validate_store_type_assumption(D). +'$enumerate_constraints'(rule_count,A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=rule_count(D). +'$enumerate_constraints'(passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=passive(D,E). +'$enumerate_constraints'(occurrence,A) :- + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F,G,H), + A=occurrence(D,E,F,G,H). +'$enumerate_constraints'(max_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=max_occurrence(D,E). +'$enumerate_constraints'(allocation_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=allocation_occurrence(D,E). +'$enumerate_constraints'(rule,A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=rule(D,E). +'$enumerate_constraints'(least_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=least_occurrence(D,E). +'$enumerate_constraints'(constraint_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=constraint_index(D,E). +'$enumerate_constraints'(max_constraint_index,A) :- + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=max_constraint_index(D). +'$enumerate_constraints'(identifier_size,A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=identifier_size(D). +'$enumerate_constraints'(identifier_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=identifier_index(D,E,F). +'$enumerate_constraints'(type_indexed_identifier_size,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=type_indexed_identifier_size(D,E). +'$enumerate_constraints'(type_indexed_identifier_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',B), + value_ht(B,C), + C=suspension(_,_,D,E,F,G), + A=type_indexed_identifier_index(D,E,F,G). +'$enumerate_constraints'(no_history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=no_history(D). +'$enumerate_constraints'(history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=history(D,E,F). +'$enumerate_constraints'(indexing_spec,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=indexing_spec(D,E). +'$enumerate_constraints'(observation_analysis,A) :- + nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=observation_analysis(D). +'$enumerate_constraints'(spawns,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F), + A=spawns(D,E,F). +'$enumerate_constraints'(spawns_all,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=spawns_all(D,E). +'$enumerate_constraints'(spawns_all_triggers,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=spawns_all_triggers(D,E). +'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=spawns_all_triggers_implies_spawns_all. +'$enumerate_constraints'(empty_named_history_initialisations,A) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=empty_named_history_initialisations(D,E). +'$enumerate_constraints'(generate_empty_named_history_initialisation,A) :- + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A=generate_empty_named_history_initialisation(D). +'$enumerate_constraints'(find_empty_named_histories,A) :- + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=find_empty_named_histories. +'$enumerate_constraints'(module_initializer,A) :- + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=module_initializer(D). +'$enumerate_constraints'(actual_atomic_multi_hash_keys,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=actual_atomic_multi_hash_keys(D,E,F). +'$enumerate_constraints'(actual_ground_multi_hash_keys,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=actual_ground_multi_hash_keys(D,E,F). +'$enumerate_constraints'(actual_non_ground_multi_hash_key,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=actual_non_ground_multi_hash_key(D,E). +'$enumerate_constraints'(prolog_global_variable,A) :- + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=prolog_global_variable(D). +'$enumerate_constraints'(background_info,A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=background_info(D). +'$enumerate_constraints'(background_info,A) :- + nb_getval('$chr_store_global_list_chr_translate____background_info___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=background_info(D,E). +'$enumerate_constraints'(get_bg_info,A) :- + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=get_bg_info(D,E). +'$enumerate_constraints'(get_bg_info_answer,A) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=get_bg_info_answer(D). +'$enumerate_constraints'(prev_guard_list,A) :- + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F,G,H,I), + A=prev_guard_list(D,E,F,G,H,I). +'$enumerate_constraints'(set_all_passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',B), + value_ht(B,C), + C=suspension(_,_,_,D), + A=set_all_passive(D). +'$enumerate_constraints'(precompute_head_matchings,A) :- + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=precompute_head_matchings. +'$enumerate_constraints'(make_head_matchings_explicit_memo_table,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=make_head_matchings_explicit_memo_table(D,E,F). +'$enumerate_constraints'(multiple_occ_constraints_checked,A) :- + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=multiple_occ_constraints_checked(D). +'$enumerate_constraints'(type_definition,A) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=type_definition(D,E). +'$enumerate_constraints'(type_alias,A) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=type_alias(D,E). +'$enumerate_constraints'(constraint_type,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=constraint_type(D,E). +'$enumerate_constraints'(unalias_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=unalias_type(D,E). +'$enumerate_constraints'(types_modes_condition,A) :- + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=types_modes_condition(D,E,F). +'$enumerate_constraints'(static_type_check,A) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=static_type_check. +'$enumerate_constraints'(static_type_check_var,A) :- + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=static_type_check_var(D,E,F). +'$enumerate_constraints'(static_atomic_builtin_type_check_var,A) :- + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=static_atomic_builtin_type_check_var(D,E,F). +'$enumerate_constraints'(dynamic_type_check,A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=dynamic_type_check. +'$enumerate_constraints'(dynamic_type_check_clauses,A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=dynamic_type_check_clauses(D). +'$enumerate_constraints'(atomic_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=atomic_type(D). +'$enumerate_constraints'(enumerated_atomic_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=enumerated_atomic_type(D,E). +'$enumerate_constraints'(stored,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=stored(D,E,F). +'$enumerate_constraints'(stored_complete,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=stored_complete(D,E,F). +'$enumerate_constraints'(check_all_passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=check_all_passive(D,E). +'$enumerate_constraints'(constraints_code1,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=constraints_code1(D,E,F). +'$enumerate_constraints'(memo_has_active_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=memo_has_active_occurrence(D). +'$enumerate_constraints'(use_auxiliary_predicate,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=use_auxiliary_predicate(D). +'$enumerate_constraints'(use_auxiliary_predicate,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=use_auxiliary_predicate(D,E). +'$enumerate_constraints'(use_auxiliary_module,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=use_auxiliary_module(D). +'$enumerate_constraints'(functional_dependency,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F,G), + A=functional_dependency(D,E,F,G). +'$enumerate_constraints'(initial_call_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',B), + value_ht(B,C), + C=suspension(_,_,_,D), + A=initial_call_pattern(D). +'$enumerate_constraints'(call_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=call_pattern(D). +'$enumerate_constraints'(final_answer_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=final_answer_pattern(D,E). +'$enumerate_constraints'(abstract_constraints,A) :- + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=abstract_constraints(D). +'$enumerate_constraints'(depends_on,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=depends_on(D,E). +'$enumerate_constraints'(depends_on_ap,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F,G), + A=depends_on_ap(D,E,F,G). +'$enumerate_constraints'(depends_on_goal,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=depends_on_goal(D,E). +'$enumerate_constraints'(ai_observed_internal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_observed_internal(D,E). +'$enumerate_constraints'(ai_not_observed_internal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_not_observed_internal(D,E). +'$enumerate_constraints'(ai_not_observed,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=ai_not_observed(D,E). +'$enumerate_constraints'(depends_on_as,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=depends_on_as(D,E,F). +'$enumerate_constraints'(ai_observation_gather_results,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=ai_observation_gather_results. +'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=ai_observation_memoed_simplification_rest_heads(D,E,F). +'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=ai_observation_memoed_propagation_rest_heads(D,E,F). +'$enumerate_constraints'(ai_observation_memoed_abstract_goal,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=ai_observation_memoed_abstract_goal(D,E). +'$enumerate_constraints'(ai_observation_memo_abstract_goal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_observation_memo_abstract_goal(D,E). +'$enumerate_constraints'(partial_wake_analysis,A) :- + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=partial_wake_analysis. +'$enumerate_constraints'(no_partial_wake,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=no_partial_wake(D). +'$enumerate_constraints'(phase_end,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=phase_end(D). +'$enumerate_constraints'(delay_phase_end,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=delay_phase_end(D,E). +'$enumerate_constraints'(does_use_history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=does_use_history(D,E). +'$enumerate_constraints'(does_use_field,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=does_use_field(D,E). +'$enumerate_constraints'(uses_state,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=uses_state(D,E). +'$enumerate_constraints'(if_used_state,A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F,G,H), + A=if_used_state(D,E,F,G,H). +'$enumerate_constraints'(used_states_known,A) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=used_states_known. +'$enumerate_constraints'(stored_assertion,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=stored_assertion(D). +'$enumerate_constraints'(never_stored_default,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=never_stored_default(D,E). +'$enumerate_constraints'(never_stored_rules,A) :- + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=never_stored_rules(D,E). +'$enumerate_constraints'(continuation_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=continuation_occurrence(D,E,F). +'$enumerate_constraints'(skip_to_next_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=skip_to_next_id(D,E). +'$enumerate_constraints'(set_occurrence_code_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=set_occurrence_code_id(D,E,F). +'$enumerate_constraints'(occurrence_code_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=occurrence_code_id(D,E,F). +'$enumerate_constraints'(chr_constants,A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=chr_constants(D,E). +'$enumerate_constraints'(print_chr_constants,A) :- + nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=print_chr_constants. +'$via1_multi_hash_line_number___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_indexed_argument___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_indexed_argument___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_mode___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_store_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_store_types___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_assumed_store_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_validate_store_type_assumption___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_passive___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_passive___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_occurrence___5-34'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_max_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_allocation_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_allocation_occurrence___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_rule___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_least_occurrence___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_least_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_index___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',C), + D is abs(A), + lookup_ht1(C,D,A,B). +'$via1_multi_hash_constraint_index___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_identifier_index___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_size___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_index___4-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_index___4-23'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',C), + lookup_ht(C,A,B). +'$via1_multi_hash_no_history___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',C), + D is abs(A), + lookup_ht1(C,D,A,B). +'$chr_store_constants_chr_translate____history___3___[3]'([],'$chr_store_constants_chr_translate____history___3___[3]___[]'). +'$via1_multi_hash_history___3-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_history___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_indexing_spec___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all_triggers___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all_triggers___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_prolog_global_variable___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_prev_guard_list___6-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_set_all_passive___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored___3-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored_complete___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_check_all_passive___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_check_all_passive___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_memo_has_active_occurrence___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_module___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_functional_dependency___4-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_functional_dependency___4-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_initial_call_pattern___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_call_pattern___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_final_answer_pattern___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_ap___4-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_ap___4-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_goal___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observed_internal___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_not_observed_internal___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_not_observed___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_as___3-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_as___3-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_no_partial_wake___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_phase_end___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_delay_phase_end___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_history___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_history___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_field___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_uses_state___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_if_used_state___5-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored_assertion___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_never_stored_default___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_continuation_occurrence___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_skip_to_next_id___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_set_occurrence_code_id___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence_code_id___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_chr_constants___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',C), + lookup_ht(C,A,B). +'$chr_initialization' :- + nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',[]), + new_ht(M3), + nb_setval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',M3), + nb_setval('$chr_store_global_ground_chr_translate____chr_constants___2',[]), + new_ht(L3), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',L3), + new_ht(K3), + nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',K3), + new_ht(J3), + nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',J3), + new_ht(I3), + nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',I3), + nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',[]), + new_ht(H3), + nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',H3), + new_ht(G3), + nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',G3), + nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',[]), + new_ht(F3), + nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',F3), + nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5',[]), + new_ht(E3), + nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E3), + new_ht(D3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',D3), + new_ht(C3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',C3), + new_ht(B3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',B3), + new_ht(A3), + nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',A3), + new_ht(Z2), + nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1',Z2), + new_ht(Y2), + nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',Y2), + nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',[]), + nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',[]), + new_ht(X2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',X2), + new_ht(W2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',W2), + new_ht(V2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',V2), + nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',[]), + new_ht(U2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',U2), + new_ht(T2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',T2), + new_ht(S2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',S2), + new_ht(R2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',R2), + nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',[]), + new_ht(Q2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',Q2), + nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',[]), + new_ht(P2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',P2), + new_ht(O2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',O2), + new_ht(N2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',N2), + new_ht(M2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',M2), + new_ht(L2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',L2), + nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',[]), + new_ht(K2), + nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K2), + new_ht(J2), + nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',J2), + new_ht(I2), + nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',I2), + new_ht(H2), + nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H2), + new_ht(G2), + nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',G2), + new_ht(F2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',F2), + new_ht(E2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E2), + new_ht(D2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',D2), + new_ht(C2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',C2), + new_ht(B2), + nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',B2), + nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',[]), + new_ht(A2), + nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',A2), + new_ht(Z1), + nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',Z1), + new_ht(Y1), + nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',Y1), + new_ht(X1), + nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123',X1), + new_ht(W1), + nb_setval('$chr_store_multi_hash_chr_translate____stored___3-1',W1), + nb_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',[]), + nb_setval('$chr_store_global_list_chr_translate____atomic_type___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',[]), + nb_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',[]), + nb_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',[]), + nb_setval('$chr_store_global_ground_chr_translate____static_type_check___0',[]), + nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',[]), + nb_setval('$chr_store_global_list_chr_translate____unalias_type___2',[]), + new_ht(V1), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',V1), + nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',[]), + nb_setval('$chr_store_global_list_chr_translate____type_alias___2',[]), + nb_setval('$chr_store_global_list_chr_translate____type_definition___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',[]), + new_ht(U1), + nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',U1), + nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',[]), + new_ht(T1), + nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',T1), + new_ht(S1), + nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',S1), + nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',[]), + nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',[]), + nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2',[]), + nb_setval('$chr_store_global_list_chr_translate____background_info___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____background_info___1',[]), + new_ht(R1), + nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',R1), + nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',[]), + new_ht(Q1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',Q1), + new_ht(P1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',P1), + new_ht(O1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',O1), + new_ht(N1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',N1), + new_ht(M1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',M1), + nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',[]), + nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',[]), + new_ht(L1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',L1), + new_ht(K1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',K1), + nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',[]), + new_ht(J1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',J1), + new_ht(I1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',I1), + new_ht(H1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123',H1), + new_ht(G1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3',G1), + new_ht(F1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1',F1), + new_ht(E1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12',E1), + nb_setval('$chr_store_global_ground_chr_translate____spawns___3',[]), + nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',[]), + new_ht(D1), + nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',D1), + new_ht(C1), + nb_setval('$chr_store_multi_hash_chr_translate____history___3-1',C1), + new_ht(B1), + nb_setval('$chr_store_multi_hash_chr_translate____history___3-2',B1), + nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]',[]), + new_ht(A1), + nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',A1), + new_ht(Z), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',Z), + new_ht(Y), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',Y), + new_ht(X), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',X), + new_ht(W), + nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',W), + nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',[]), + new_ht(V), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',V), + new_ht(U), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',U), + new_ht(T), + nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',T), + new_ht(S), + nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',S), + new_ht(R), + nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + nb_setval('$chr_store_global_ground_chr_translate____rule___2',[]), + new_ht(Q), + nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',Q), + new_ht(P), + nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',P), + new_ht(O), + nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',O), + new_ht(N), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',N), + new_ht(M), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',M), + new_ht(L), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',L), + new_ht(K), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',K), + nb_setval('$chr_store_global_ground_chr_translate____occurrence___5',[]), + new_ht(J), + nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12',J), + new_ht(I), + nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1',I), + nb_setval('$chr_store_global_ground_chr_translate____rule_count___1',[]), + new_ht(H), + nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',H), + new_ht(G), + nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',G), + new_ht(F), + nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',F), + new_ht(E), + nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',E), + nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',[]), + new_ht(D), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',D), + nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',[]), + new_ht(C), + nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',C), + new_ht(B), + nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',B), + new_ht(A), + nb_setval('$chr_store_multi_hash_chr_translate____line_number___2-1',A), + nb_setval('$chr_store_global_ground_chr_translate____target_module___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',[]). +:-initialization '$chr_initialization'. +:-dynamic user:exception/3. +:-multifile user:exception/3. +user:exception(undefined_global_variable,A,retry) :- + '$chr_prolog_global_variable'(A), + '$chr_initialization'. +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____chr_constants___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-1'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____enumerated_atomic_type___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____static_type_check_var___3'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___0'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____line_number___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1'). +chr_source_file(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + chr_source_file___1__0__0__2(C,A) + ). +chr_source_file___1__0__0__2([],A) :- + chr_source_file___1__1(A). +chr_source_file___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + chr_source_file___1__0__0__2(C,A) + ; + chr_source_file___1__0__0__2(C,A) + ). +chr_source_file(A) :- + chr_source_file___1__1(A). +chr_source_file___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_chr_source_file(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_chr_source_file(user). +target_module(A) :- + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + target_module___1__0__0__2(C,A) + ). +target_module___1__0__0__2([],A) :- + target_module___1__1(A). +target_module___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____target_module___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + target_module___1__0__0__2(C,A) + ; + target_module___1__0__0__2(C,A) + ). +target_module(A) :- + target_module___1__1(A). +target_module___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____target_module___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_target_module(A) :- + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_target_module(user). +line_number(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',E), + lookup_ht1(E,A,A,D), + ( + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! + ; + !, + line_number___2__0__0__2(D,A,B) + ). +line_number___2__0__0__2([],A,B) :- + line_number___2__1(A,B). +line_number___2__0__0__2([D|E],A,B) :- + ( D=suspension(_,active,C,_), + C==A -> + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',F), + delete_ht(F,A,D), + line_number___2__0__0__2(E,A,B) + ; + line_number___2__0__0__2(E,A,B) + ). +line_number(A,B) :- + line_number___2__1(A,B). +line_number___2__1(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',E), + insert_ht(E,A,C). +get_line_number(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',F), + lookup_ht1(F,A,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_line_number(_,0). +indexed_argument(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +indexed_argument(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',F), + insert_ht(F,k(A,B),C). +is_indexed_argument(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +is_indexed_argument(_,_) :- + fail. +constraint_mode(A,B) :- + constraint_mode___2__0(A,B,_). +constraint_mode___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',F), + lookup_ht(F,A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + ! + ; + !, + constraint_mode___2__0__0__2(E,A,B,C) + ). +constraint_mode___2__0__0__2([],B,C,A) :- + constraint_mode___2__1(B,C,A). +constraint_mode___2__0__0__2([E|F],A,B,C) :- + ( E=suspension(_,active,_,_,D,_), + D==A -> + setarg(2,E,removed), + arg(4,E,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',K), + delete_ht(K,A,E), + constraint_mode___2__0__0__2(F,A,B,C) + ; + constraint_mode___2__0__0__2(F,A,B,C) + ). +constraint_mode___2__0(A,B,C) :- + constraint_mode___2__1(A,B,C). +constraint_mode___2__1(A,B,C) :- + A=D/E, + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',F), + !, + C=suspension(G,not_stored_yet,t,_,A,B), + 'chr gen_id'(G), + constraint_mode___2__1__0__7(F,A,B,C,D,E). +constraint_mode___2__1__0__7([],B,C,A,_,_) :- + constraint_mode___2__2(B,C,A). +constraint_mode___2__1__0__7([I|N],A,B,C,D,E) :- + ( I=suspension(_,active,_,F,G,H), + F=[J|K], + G=[L|M], + functor(J,D,E) -> + setarg(2,I,removed), + arg(3,I,Z), + ( var(Z) -> + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',A1), + A1=[_|B1], + b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',B1), + ( B1=[C1|_] -> + setarg(3,C1,_) + ; + true + ) + ; + Z=[_,_|B1], + setarg(2,Z,B1), + ( B1=[C1|_] -> + setarg(3,C1,Z) + ; + true + ) + ), + arg(2,C,U), + setarg(2,C,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',V), + W=[C|V], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',Y), + insert_ht(Y,A,C) + ; + true + ), + J=..[_|O], + H=(P,Q,R), + modes_condition(B,O,P), + get_constraint_type_det(D/E,S), + L=..[_|T], + types_condition(S,O,T,B,Q), + types_modes_condition(K,M,R), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + constraint_mode___2__1__0__7(N,A,B,C,D,E) + ; + true + ) + ; + constraint_mode___2__1__0__7(N,A,B,C,D,E) + ). +constraint_mode___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + constraint_mode___2__2(A,B,C). +constraint_mode___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',E), + lookup_ht(E,A,D), + !, + constraint_mode___2__2__0__8(D,A,B,C). +constraint_mode___2__2__0__8([],B,C,A) :- + constraint_mode___2__3(B,C,A). +constraint_mode___2__2__0__8([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G), + D==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',I) -> + constraint_mode___2__2__1__8(I,E,F,G,H,J,B,C,A) + ; + constraint_mode___2__2__0__8(J,B,C,A) + ). +constraint_mode___2__2__1__8([],_,_,_,_,A,C,D,B) :- + constraint_mode___2__2__0__8(A,C,D,B). +constraint_mode___2__2__1__8([I|K],F,G,H,A,B,D,E,C) :- + ( I=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + lookup_ht1(L,F,F,J) -> + constraint_mode___2__2__2__8(J,I,K,F,G,H,A,B,D,E,C) + ; + constraint_mode___2__2__1__8(K,F,G,H,A,B,D,E,C) + ). +constraint_mode___2__2__2__8([],_,A,G,H,I,B,C,E,F,D) :- + constraint_mode___2__2__1__8(A,G,H,I,B,C,E,F,D). +constraint_mode___2__2__2__8([M|N],A,B,H,I,J,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,K,L), + K==H, + U=t(325,A,C,M,E), + '$novel_production'(A,U), + '$novel_production'(C,U), + '$novel_production'(M,U), + '$novel_production'(E,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',Z), + insert_ht(Z,F,E) + ; + true + ), + L=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(H,I) -> + true + ; + ( J==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,G,T,F) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,G,T,F) + ), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + constraint_mode___2__2__2__8(N,A,B,H,I,J,C,D,F,G,E) + ; + true + ) + ; + constraint_mode___2__2__2__8(N,A,B,H,I,J,C,D,F,G,E) + ). +constraint_mode___2__2(A,B,C) :- + constraint_mode___2__3(A,B,C). +constraint_mode___2__3(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',E), + ( D=[F|_] -> + setarg(4,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',G), + insert_ht(G,A,B) + ; + true + ). +get_constraint_mode(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + !, + B=D. +get_constraint_mode(_/B,A) :- + replicate(B,?,A). +may_trigger(A) :- + \+has_active_occurrence(A), + !, + fail. +may_trigger(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',J), + lookup_ht(J,A,D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',I), + lookup_ht(I,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + nth1(F,C,H), + H\== +, + !, + is_stored(A). +may_trigger(_) :- + chr_pp_flag(debugable,on). +only_ground_indexed_arguments(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',J), + lookup_ht(J,A,D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',I), + lookup_ht(I,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + nth1(F,C,H), + H\== +, + !, + fail. +only_ground_indexed_arguments(_). +none_suspended_on_variables :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +none_suspended_on_variables :- + A=suspension(B,active,_), + 'chr gen_id'(B), + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ). +are_none_suspended_on_variables :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +are_none_suspended_on_variables :- + fail. +store_type(A,B) :- + store_type___2__0(A,B,_). +store_type___2__0(A,B,C) :- + chr_pp_flag(verbose,on), + !, + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',E), + insert_ht(E,A,C), + format('The indexes for ~w are: +',[A]), + format_storetype(B), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + store_type___2__1(A,B,C) + ; + true + ). +store_type___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + store_type___2__1(A,B,C). +store_type___2__1(A,_,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + lookup_ht(M,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',L), + lookup_ht(L,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',K), + delete_ht(K,A,C), + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',J), + delete_ht(J,A,E), + ( var(B) -> + true + ; + arg(2,B,I), + setarg(2,B,removed), + ( I==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',H), + delete_ht(H,A,B) + ) + ), + store_type(A,multi_store(F)). +store_type___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',D), + insert_ht(D,A,B) + ; + true + ). +get_store_type(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_store_type(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_store_type(_,default). +update_store_type(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',G), + lookup_ht(G,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + ( + memberchk(B,D), + ! + ; + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',F), + delete_ht(F,A,C), + actual_store_types(A,[B|D]) + ). +update_store_type(A,B) :- + actual_store_types(A,[B]). +actual_store_types(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',R), + lookup_ht(R,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + lookup_ht(Q,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',O), + delete_ht(O,k(A,D),C), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',P), + delete_ht(P,A,C), + delete(B,multi_hash([D]),I), + D=[J], + ( get_constraint_arg_type(A,J,K), + enumerated_atomic_type(K,L) -> + M=L, + N=complete + ; + M=E, + N=incomplete + ), + actual_store_types(A,[atomic_constants(D,M,N)|I]). +actual_store_types(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',R), + lookup_ht(R,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + lookup_ht(Q,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',O), + delete_ht(O,k(A,D),C), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',P), + delete_ht(P,A,C), + ( D=[I], + get_constraint_arg_type(A,I,J), + ( is_chr_constants_type(J,K,_) -> + get_chr_constants(K,L) + ; + ( J=chr_enum(L) -> + true + ) + ) -> + M=complete + ; + L=E, + M=incomplete + ), + delete(B,multi_hash([D]),N), + actual_store_types(A,[ground_constants(D,L,M)|N]). +actual_store_types(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',V), + lookup_ht(V,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + ( + ( + memberchk(multi_hash([[E]]),B), + ( + get_constraint_type(A,F), + nth1(E,F,G), + enumerated_atomic_type(G,H), + !, + delete(B,multi_hash([[E]]),I), + actual_store_types(A,[atomic_constants([E],H,complete)|I]) + ; + get_constraint_arg_type(A,E,J), + ( J=chr_enum(K) -> + true + ; + ( is_chr_constants_type(J,L,_) -> + get_chr_constants(L,K) + ) + ), + !, + delete(B,multi_hash([[E]]),M), + actual_store_types(A,[ground_constants([E],K,complete)|M]) + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',Y), + lookup_ht(Y,A,O), + 'chr sbag_member'(N,O), + N=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',X), + delete_ht(X,A,C), + setarg(2,N,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',W), + delete_ht(W,A,N), + ( maplist(partial_store,B) -> + P=[global_ground|B] + ; + P=B + ), + store_type(A,multi_store(P)) + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',U), + lookup_ht(U,A,R), + 'chr sbag_member'(Q,R), + Q=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',T), + delete_ht(T,A,C), + setarg(2,Q,removed), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',S), + delete_ht(S,A,Q), + store_type(A,multi_store(B)) + ). +actual_store_types(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',E), + insert_ht(E,A,C). +assumed_store_type(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',I), + lookup_ht(I,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',M), + lookup_ht(M,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',L), + delete_ht(L,A,B), + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',K), + delete_ht(K,A,D), + ( maplist(partial_store,E) -> + G=[global_ground|E] + ; + G=E + ), + store_type(A,multi_store(G)) + ; + chr_pp_flag(debugable,on), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',J), + delete_ht(J,A,B), + store_type(A,default) + ) + ; + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',H), + delete_ht(H,A,B), + store_type(A,global_ground) + ). +assumed_store_type(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',E), + insert_ht(E,A,C). +validate_store_type_assumption(A) :- + validate_store_type_assumption___1__0(A,_). +validate_store_type_assumption___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',E), + lookup_ht(E,A,C), + !, + B=suspension(D,not_stored_yet,A), + 'chr gen_id'(D), + validate_store_type_assumption___1__0__0__1(C,A,B). +validate_store_type_assumption___1__0__0__1([],B,A) :- + validate_store_type_assumption___1__1(B,A). +validate_store_type_assumption___1__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',V), + lookup_ht(V,A,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,H,I) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',U), + delete_ht(U,A,E), + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',S), + delete_ht(S,k(A,H),G), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',T), + delete_ht(T,A,G), + arg(2,B,Q), + setarg(2,B,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',R), + insert_ht(R,A,B) + ; + true + ), + delete(D,multi_hash([H]),K), + H=[L], + ( get_constraint_arg_type(A,L,M), + enumerated_atomic_type(M,N) -> + O=N, + P=complete + ; + O=I, + P=incomplete + ), + actual_store_types(A,[atomic_constants(H,O,P)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__0__0__1(F,A,B) + ; + true + ) + ; + validate_store_type_assumption___1__0__0__1(F,A,B) + ). +validate_store_type_assumption___1__0(A,B) :- + B=suspension(C,not_stored_yet,A), + 'chr gen_id'(C), + validate_store_type_assumption___1__1(A,B). +validate_store_type_assumption___1__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), + !, + validate_store_type_assumption___1__1__0__2(C,A,B). +validate_store_type_assumption___1__1__0__2([],B,A) :- + validate_store_type_assumption___1__2(B,A). +validate_store_type_assumption___1__1__0__2([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',V), + lookup_ht(V,A,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,H,I) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',U), + delete_ht(U,A,E), + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',S), + delete_ht(S,k(A,H),G), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',T), + delete_ht(T,A,G), + arg(2,B,Q), + setarg(2,B,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',R), + insert_ht(R,A,B) + ; + true + ), + ( H=[K], + get_constraint_arg_type(A,K,L), + ( is_chr_constants_type(L,M,_) -> + get_chr_constants(M,N) + ; + ( L=chr_enum(N) -> + true + ) + ) -> + O=complete + ; + N=I, + O=incomplete + ), + delete(D,multi_hash([H]),P), + actual_store_types(A,[ground_constants(H,N,O)|P]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__1__0__2(F,A,B) + ; + true + ) + ; + validate_store_type_assumption___1__1__0__2(F,A,B) + ). +validate_store_type_assumption___1__1(A,B) :- + validate_store_type_assumption___1__2(A,B). +validate_store_type_assumption___1__2(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), + !, + validate_store_type_assumption___1__2__0__3(C,A,B). +validate_store_type_assumption___1__2__0__3([],B,A) :- + validate_store_type_assumption___1__3(B,A). +validate_store_type_assumption___1__2__0__3([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + memberchk(multi_hash([[G]]),D), + get_constraint_type(A,H), + nth1(G,H,I), + enumerated_atomic_type(I,J) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,E), + arg(2,B,L), + setarg(2,B,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + insert_ht(M,A,B) + ; + true + ), + delete(D,multi_hash([[G]]),K), + actual_store_types(A,[atomic_constants([G],J,complete)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__2__0__3(F,A,B) + ; + true + ) + ; + validate_store_type_assumption___1__2__0__3(F,A,B) + ). +validate_store_type_assumption___1__2(A,B) :- + validate_store_type_assumption___1__3(A,B). +validate_store_type_assumption___1__3(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), + !, + validate_store_type_assumption___1__3__0__4(C,A,B). +validate_store_type_assumption___1__3__0__4([],B,A) :- + validate_store_type_assumption___1__4(B,A). +validate_store_type_assumption___1__3__0__4([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + memberchk(multi_hash([[G]]),D), + get_constraint_arg_type(A,G,H), + ( H=chr_enum(I) -> + true + ; + ( is_chr_constants_type(H,J,_) -> + get_chr_constants(J,I) + ) + ) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,E), + arg(2,B,L), + setarg(2,B,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + insert_ht(M,A,B) + ; + true + ), + delete(D,multi_hash([[G]]),K), + actual_store_types(A,[ground_constants([G],I,complete)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__3__0__4(F,A,B) + ; + true + ) + ; + validate_store_type_assumption___1__3__0__4(F,A,B) + ). +validate_store_type_assumption___1__3(A,B) :- + validate_store_type_assumption___1__4(A,B). +validate_store_type_assumption___1__4(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',P), + lookup_ht(P,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + ( + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',U), + lookup_ht(U,A,G), + 'chr sbag_member'(F,G), + F=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',T), + delete_ht(T,A,C), + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',S), + delete_ht(S,A,F), + ( var(B) -> + true + ; + arg(2,B,R), + setarg(2,B,removed), + ( R==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + delete_ht(Q,A,B) + ) + ), + ( maplist(partial_store,D) -> + H=[global_ground|D] + ; + H=D + ), + store_type(A,multi_store(H)) + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',O), + lookup_ht(O,A,J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,C), + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',M), + delete_ht(M,A,I), + ( var(B) -> + true + ; + arg(2,B,L), + setarg(2,B,removed), + ( L==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',K), + delete_ht(K,A,B) + ) + ), + store_type(A,multi_store(D)) + ). +validate_store_type_assumption___1__4(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',H), + lookup_ht(H,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ( + chr_pp_flag(debugable,on), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',K), + delete_ht(K,A,C), + ( var(B) -> + true + ; + arg(2,B,J), + setarg(2,B,removed), + ( J==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',I), + delete_ht(I,A,B) + ) + ), + store_type(A,default) + ; + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',G), + delete_ht(G,A,C), + ( var(B) -> + true + ; + arg(2,B,F), + setarg(2,B,removed), + ( F==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',E), + delete_ht(E,A,B) + ) + ), + store_type(A,global_ground) + ). +validate_store_type_assumption___1__4(A,B) :- + ( var(B) -> + true + ; + arg(2,B,D), + setarg(2,B,removed), + ( D==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',C), + delete_ht(C,A,B) + ) + ). +rule_count(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + rule_count___1__0__0__2(C,A) + ). +rule_count___1__0__0__2([],A) :- + rule_count___1__1(A). +rule_count___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + rule_count___1__0__0__2(C,A) + ; + rule_count___1__0__0__2(C,A) + ). +rule_count(A) :- + rule_count___1__1(A). +rule_count___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +inc_rule_count(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + A is C+1, + rule_count(A). +inc_rule_count(1) :- + rule_count(1). +passive(A,B) :- + passive___2__0(A,B,_). +passive___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +passive___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',F), + lookup_ht(F,A,D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + passive___2__0__0__6(D,A,B,C). +passive___2__0__0__6([],B,C,A) :- + passive___2__1(B,C,A). +passive___2__0__0__6([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=[G|H], + G==B, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Q), + lookup_ht1(Q,A,A,K), + 'chr sbag_member'(J,K), + J=suspension(_,active,_,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',O), + delete_ht(O,k(A,[B|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',P), + delete_ht(P,A,F), + arg(2,C,L), + setarg(2,C,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',M), + insert_ht(M,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',N), + insert_ht(N,k(A,B),C) + ; + true + ), + least_occurrence(A,H), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__0__0__6(I,A,B,C) + ; + true + ) + ; + passive___2__0__0__6(I,A,B,C) + ). +passive___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + passive___2__1(A,B,C). +passive___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), + !, + passive___2__1__0__8(D,A,B,C). +passive___2__1__0__8([],B,C,A) :- + passive___2__2(B,C,A). +passive___2__1__0__8([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',K), + lookup_ht(K,D,I) -> + passive___2__1__1__8(I,D,E,H,J,B,C,A) + ; + passive___2__1__0__8(J,B,C,A) + ). +passive___2__1__1__8([],_,_,_,A,C,D,B) :- + passive___2__1__0__8(A,C,D,B). +passive___2__1__1__8([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,H,I,J), + H==E, + F + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',U), + delete_ht(U,E,K), + setarg(2,M,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',S), + delete_ht(S,E,M), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',T), + delete_ht(T,k(E,F,yes),M), + arg(2,D,P), + setarg(2,D,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',Q), + insert_ht(Q,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',R), + insert_ht(R,k(B,C),D) + ; + true + ), + O is J-1, + stored(E,F,maybe), + stored_complete(E,I,O), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + passive___2__1__1__8(L,E,F,A,G,B,C,D) + ; + true + ) + ; + passive___2__1__1__8(L,E,F,A,G,B,C,D) + ). +passive___2__1(A,B,C) :- + passive___2__2(A,B,C). +passive___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',E), + lookup_ht1(E,A,A,D), + !, + passive___2__2__0__9(D,A,B,C). +passive___2__2__0__9([],B,C,A) :- + passive___2__3(B,C,A). +passive___2__2__0__9([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,D,E), + D==B, + K=t(246,F,A), + '$novel_production'(F,K), + '$novel_production'(A,K), + E=pragma(rule(_,_,_,_),ids([C|I],H),_,_,B) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',M), + insert_ht(M,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',N), + insert_ht(N,k(B,C),A) + ; + true + ), + append(I,H,J), + check_all_passive(B,J), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + passive___2__2__0__9(G,B,C,A) + ; + true + ) + ; + passive___2__2__0__9(G,B,C,A) + ). +passive___2__2(A,B,C) :- + passive___2__3(A,B,C). +passive___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',E), + lookup_ht1(E,A,A,D), + !, + passive___2__3__0__10(D,A,B,C). +passive___2__3__0__10([],B,C,A) :- + passive___2__4(B,C,A). +passive___2__3__0__10([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,D,E), + D==B, + I=t(247,F,A), + '$novel_production'(F,I), + '$novel_production'(A,I), + E=pragma(rule(_,_,_,_),ids([],[C|H]),_,_,B) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',K), + insert_ht(K,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',L), + insert_ht(L,k(B,C),A) + ; + true + ), + check_all_passive(B,H), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + passive___2__3__0__10(G,B,C,A) + ; + true + ) + ; + passive___2__3__0__10(G,B,C,A) + ). +passive___2__3(A,B,C) :- + passive___2__4(A,B,C). +passive___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',E), + lookup_ht(E,A,D), + !, + passive___2__4__0__11(D,A,B,C). +passive___2__4__0__11([],B,C,A) :- + passive___2__5(B,C,A). +passive___2__4__0__11([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=[G|H], + G==B -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',M), + delete_ht(M,k(A,[B|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',N), + delete_ht(N,A,F), + arg(2,C,J), + setarg(2,C,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',K), + insert_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',L), + insert_ht(L,k(A,B),C) + ; + true + ), + check_all_passive(A,H), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__4__0__11(I,A,B,C) + ; + true + ) + ; + passive___2__4__0__11(I,A,B,C) + ). +passive___2__4(A,B,C) :- + passive___2__5(A,B,C). +passive___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), + !, + passive___2__5__0__14(D,A,B,C). +passive___2__5__0__14([],B,C,A) :- + passive___2__6(B,C,A). +passive___2__5__0__14([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',K), + lookup_ht(K,k(D,E),I) -> + passive___2__5__1__14(I,D,E,H,J,B,C,A) + ; + passive___2__5__0__14(J,B,C,A) + ). +passive___2__5__1__14([],_,_,_,A,C,D,B) :- + passive___2__5__0__14(A,C,D,B). +passive___2__5__1__14([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==F, + I==G, + M=t(357,A,C,J), + '$novel_production'(A,M), + '$novel_production'(C,M), + '$novel_production'(J,M), + G>1 -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',O), + insert_ht(O,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + insert_ht(P,k(D,E),C) + ; + true + ), + L is G-1, + skip_to_next_id(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__5__1__14(K,F,G,A,B,D,E,C) + ; + true + ) + ; + passive___2__5__1__14(K,F,G,A,B,D,E,C) + ). +passive___2__5(A,B,C) :- + passive___2__6(A,B,C). +passive___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), + !, + passive___2__6__0__15(D,A,B,C). +passive___2__6__0__15([],B,C,A) :- + passive___2__7(B,C,A). +passive___2__6__0__15([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',K), + lookup_ht(K,k(D,E),I) -> + passive___2__6__1__15(I,D,E,H,J,B,C,A) + ; + passive___2__6__0__15(J,B,C,A) + ). +passive___2__6__1__15([],_,_,_,A,C,D,B) :- + passive___2__6__0__15(A,C,D,B). +passive___2__6__1__15([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,H,I,J), + H==E, + I==F -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',Q), + delete_ht(Q,k(E,F),K), + arg(2,D,N), + setarg(2,D,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',O), + insert_ht(O,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + insert_ht(P,k(B,C),D) + ; + true + ), + occurrence_code_id(E,F,J), + M is F+1, + set_occurrence_code_id(E,M,J), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + passive___2__6__1__15(L,E,F,A,G,B,C,D) + ; + true + ) + ; + passive___2__6__1__15(L,E,F,A,G,B,C,D) + ). +passive___2__6(A,B,C) :- + passive___2__7(A,B,C). +passive___2__7(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',F), + insert_ht(F,k(A,B),C) + ; + true + ). +is_passive(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +is_passive(_,_) :- + fail. +any_passive_head(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_,_), + !. +any_passive_head(_) :- + fail. +new_occurrence(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + !, + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',I), + delete_ht(I,A,E), + H is F+1, + occurrence(A,H,B,C,D), + max_occurrence(A,H). +new_occurrence(A,B,_,_) :- + chr_error(internal,'new_occurrence: missing max_occurrence for ~w in rule ~w +',[A,B]). +occurrence(A,B,C,D,E) :- + occurrence___5__0(A,B,C,D,E,_). +occurrence___5__0(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,C,C,G), + !, + F=suspension(H,not_stored_yet,t,_,A,B,C,D,E), + 'chr gen_id'(H), + occurrence___5__0__0__3(G,A,B,C,D,E,F). +occurrence___5__0__0__3([],B,C,D,E,F,A) :- + occurrence___5__1(B,C,D,E,F,A). +occurrence___5__0__0__3([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',L), + lookup_ht(L,k(B,C),J) -> + occurrence___5__0__1__3(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__0__0__3(K,B,C,D,E,F,A) + ). +occurrence___5__0__1__3([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__0__0__3(A,C,D,E,F,G,B). +occurrence___5__0__1__3([L|M],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==D, + K==E, + N=t(58,A,C,L), + '$novel_production'(A,N), + '$novel_production'(C,N), + '$novel_production'(L,N) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(F,G),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,D,C) + ; + true + ), + \+is_passive(F,G), + H==propagation, + ( stored_in_guard_before_next_kept_occurrence(D,E) -> + true + ; + ( I=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(D,E) + ) + ; + ( is_least_occurrence(F) -> + is_observed(D,E) + ) + ; + true + ), + ( C=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,C,inactive), + occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) + ; + true + ) + ; + occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__0(A,B,C,D,E,F) :- + F=suspension(G,not_stored_yet,t,_,A,B,C,D,E), + 'chr gen_id'(G), + occurrence___5__1(A,B,C,D,E,F). +occurrence___5__1(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',H), + lookup_ht(H,C,G), + !, + occurrence___5__1__0__6(G,A,B,C,D,E,F). +occurrence___5__1__0__6([],B,C,D,E,F,A) :- + occurrence___5__2(B,C,D,E,F,A). +occurrence___5__1__0__6([I|L],A,B,C,D,E,F) :- + ( I=suspension(_,active,G,H), + G==C, + H=[J|K], + J==D, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',C1), + lookup_ht(C1,A,O), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,N), + N>=B, + ground(C), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + lookup_ht1(B1,C,C,Q), + 'chr sbag_member'(P,Q), + P=suspension(_,active,_,_,_,_), + \+may_trigger(A) -> + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',Z), + delete_ht(Z,k(C,[D|K]),I), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',A1), + delete_ht(A1,C,I), + arg(2,F,R), + setarg(2,F,active), + ( R==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',S), + T=[F|S], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + insert_ht(V,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',W), + insert_ht(W,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',X), + insert_ht(X,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Y), + insert_ht(Y,A,F) + ; + true + ), + least_occurrence(C,K), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__1__0__6(L,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__1__0__6(L,A,B,C,D,E,F) + ). +occurrence___5__1(A,B,C,D,E,F) :- + occurrence___5__2(A,B,C,D,E,F). +occurrence___5__2(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',H), + lookup_ht(H,C,G), + !, + occurrence___5__2__0__28(G,A,B,C,D,E,F). +occurrence___5__2__0__28([],B,C,D,E,F,A) :- + occurrence___5__3(B,C,D,E,F,A). +occurrence___5__2__0__28([H|I],B,C,D,E,F,A) :- + ( H=suspension(_,active,_,G), + G==D, + J=t(176,H,A), + '$novel_production'(H,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,K), + setarg(2,A,active), + ( K==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',L), + M=[A|L], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',M), + ( L=[N|_] -> + setarg(4,N,M) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',O), + insert_ht(O,k(B,C),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',P), + insert_ht(P,D,A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Q), + insert_ht(Q,k(D,E),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',R), + insert_ht(R,B,A) + ; + true + ), + passive(D,E), + ( A=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + occurrence___5__2__0__28(I,B,C,D,E,F,A) + ; + true + ) + ; + occurrence___5__2__0__28(I,B,C,D,E,F,A) + ). +occurrence___5__2(A,B,C,D,E,F) :- + occurrence___5__3(A,B,C,D,E,F). +occurrence___5__3(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',H), + lookup_ht1(H,C,C,G), + !, + occurrence___5__3__0__29(G,A,B,C,D,E,F). +occurrence___5__3__0__29([],B,C,D,E,F,A) :- + occurrence___5__4(B,C,D,E,F,A). +occurrence___5__3__0__29([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,B,J) -> + occurrence___5__3__1__29(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__3__0__29(K,B,C,D,E,F,A) + ). +occurrence___5__3__1__29([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__3__0__29(A,C,D,E,F,G,B). +occurrence___5__3__1__29([M|O],I,A,B,D,E,F,G,H,C) :- + ( M=suspension(_,active,_,_,J,K,L,_,_), + J==D, + L==F, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',P), + lookup_ht(P,F,N) -> + occurrence___5__3__2__29(N,K,M,O,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__3__1__29(O,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__3__2__29([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__3__1__29(A,J,B,C,E,F,G,H,I,D). +occurrence___5__3__2__29([N|P],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( N=suspension(_,active,_,_,M,_,_,_,_,_), + M==H, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',O) -> + occurrence___5__3__3__29(O,N,P,L,A,B,K,C,D,F,G,H,I,J,E) + ; + occurrence___5__3__2__29(P,L,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__3__3__29([],_,A,M,B,C,L,D,E,G,H,I,J,K,F) :- + occurrence___5__3__2__29(A,M,B,C,L,D,E,G,H,I,J,K,F). +occurrence___5__3__3__29([P|Q],A,N,L,B,M,J,C,K,D,E,F,G,H,I) :- + ( P=suspension(_,active,_,O), + E + setarg(2,P,removed), + arg(3,P,B1), + ( var(B1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',C1), + C1=[_|D1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + ( D1=[E1|_] -> + setarg(3,E1,_) + ; + true + ) + ; + B1=[_,_|D1], + setarg(2,B1,D1), + ( D1=[E1|_] -> + setarg(3,E1,B1) + ; + true + ) + ), + arg(2,I,T), + setarg(2,I,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',U), + V=[I|U], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',X), + insert_ht(X,k(D,E),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Y), + insert_ht(Y,F,I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Z), + insert_ht(Z,k(F,G),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',A1), + insert_ht(A1,D,I) + ; + true + ), + first_occ_in_rule(F,D,E,G), + tree_set_add(O,D,S), + multiple_occ_constraints_checked(S), + ( I=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,I,inactive), + occurrence___5__3__3__29(Q,A,N,L,B,M,J,C,K,D,E,F,G,H,I) + ; + true + ) + ; + occurrence___5__3__3__29(Q,A,N,L,B,M,J,C,K,D,E,F,G,H,I) + ). +occurrence___5__3(A,B,C,D,E,F) :- + occurrence___5__4(A,B,C,D,E,F). +occurrence___5__4(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',H), + lookup_ht1(H,C,C,G), + !, + occurrence___5__4__0__30(G,A,B,C,D,E,F). +occurrence___5__4__0__30([],B,C,D,E,F,A) :- + occurrence___5__5(B,C,D,E,F,A). +occurrence___5__4__0__30([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,B,J) -> + occurrence___5__4__1__30(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__4__0__30(K,B,C,D,E,F,A) + ). +occurrence___5__4__1__30([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__4__0__30(A,C,D,E,F,G,B). +occurrence___5__4__1__30([N|P],I,A,B,D,E,F,G,H,C) :- + ( N=suspension(_,active,_,_,J,K,L,M,_), + J==D, + L==F, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',Q), + lookup_ht(Q,F,O) -> + occurrence___5__4__2__30(O,K,M,N,P,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__4__1__30(P,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__4__2__30([],_,_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__4__1__30(A,J,B,C,E,F,G,H,I,D). +occurrence___5__4__2__30([O|Q],L,M,A,B,K,C,D,F,G,H,I,J,E) :- + ( O=suspension(_,active,_,_,N,_,_,_,_,_), + N==H, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',P) -> + occurrence___5__4__3__30(P,O,Q,L,M,A,B,K,C,D,F,G,H,I,J,E) + ; + occurrence___5__4__2__30(Q,L,M,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__4__3__30([],_,A,M,N,B,C,L,D,E,G,H,I,J,K,F) :- + occurrence___5__4__2__30(A,M,N,B,C,L,D,E,G,H,I,J,K,F). +occurrence___5__4__3__30([Q|R],A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) :- + ( Q=suspension(_,active,_,P), + L + setarg(2,Q,removed), + arg(3,Q,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + arg(2,I,U), + setarg(2,I,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',V), + W=[I|V], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Y), + insert_ht(Y,k(D,E),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Z), + insert_ht(Z,F,I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',A1), + insert_ht(A1,k(F,G),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',B1), + insert_ht(B1,D,I) + ; + true + ), + first_occ_in_rule(F,D,L,M), + tree_set_add(P,D,T), + multiple_occ_constraints_checked(T), + ( I=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,I,inactive), + occurrence___5__4__3__30(R,A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) + ; + true + ) + ; + occurrence___5__4__3__30(R,A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) + ). +occurrence___5__4(A,B,C,D,E,F) :- + occurrence___5__5(A,B,C,D,E,F). +occurrence___5__5(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',H), + hash_term(k(A,B,1887087),I), + lookup_ht1(H,I,k(A,B,yes),G), + !, + occurrence___5__5__0__34(G,A,B,C,D,E,F). +occurrence___5__5__0__34([],B,C,D,E,F,A) :- + occurrence___5__6(B,C,D,E,F,A). +occurrence___5__5__0__34([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + I=yes, + ground(C), + ground(D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E1), + lookup_ht(E1,k(C,D),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_), + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',D1), + lookup_ht(D1,A,Q), + 'chr sbag_member'(N,Q), + N=suspension(_,active,_,_,O,P), + B + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',B1), + delete_ht(B1,A,J), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',C1), + delete_ht(C1,k(A,B,yes),J), + setarg(2,N,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',A1), + delete_ht(A1,A,N), + arg(2,F,S), + setarg(2,F,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[F|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,A,F) + ; + true + ), + R is P-1, + stored(A,B,maybe), + stored_complete(A,O,R), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__5__0__34(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__5__0__34(K,A,B,C,D,E,F) + ). +occurrence___5__5(A,B,C,D,E,F) :- + occurrence___5__6(A,B,C,D,E,F). +occurrence___5__6(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',H), + lookup_ht1(H,C,C,G), + !, + occurrence___5__6__0__35(G,A,B,C,D,E,F). +occurrence___5__6__0__35([],B,C,D,E,F,A) :- + occurrence___5__7(B,C,D,E,F,A). +occurrence___5__6__0__35([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,_,H,_,_), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',L), + lookup_ht(L,G,J) -> + occurrence___5__6__1__35(J,G,I,K,B,C,D,E,F,A) + ; + occurrence___5__6__0__35(K,B,C,D,E,F,A) + ). +occurrence___5__6__1__35([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__6__0__35(A,C,D,E,F,G,B). +occurrence___5__6__1__35([L|N],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==I, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,I,M) -> + occurrence___5__6__2__35(M,K,L,N,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__6__1__35(N,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__6__2__35([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__6__1__35(A,J,B,C,E,F,G,H,I,D). +occurrence___5__6__2__35([P|Q],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( P=suspension(_,active,_,M,N,O), + M==K, + O=0, + R=t(245,E,C,P,A), + '$novel_production'(E,R), + '$novel_production'(C,R), + '$novel_production'(P,R), + '$novel_production'(A,R), + N= + '$extend_history'(E,R), + arg(2,E,S), + setarg(2,E,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[E|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,F,E) + ; + true + ), + passive(H,I), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__6__2__35(Q,L,A,B,K,C,D,F,G,H,I,J,E) + ; + true + ) + ; + occurrence___5__6__2__35(Q,L,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__6(A,B,C,D,E,F) :- + occurrence___5__7(A,B,C,D,E,F). +occurrence___5__7(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',H), + lookup_ht1(H,C,C,G), + !, + occurrence___5__7__0__36(G,A,B,C,D,E,F). +occurrence___5__7__0__36([],B,C,D,E,F,A) :- + occurrence___5__8(B,C,D,E,F,A). +occurrence___5__7__0__36([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,_,_,G,H,_), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',L), + lookup_ht(L,B,J) -> + occurrence___5__7__1__36(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__7__0__36(K,B,C,D,E,F,A) + ). +occurrence___5__7__1__36([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__7__0__36(A,C,D,E,F,G,B). +occurrence___5__7__1__36([L|N],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==D, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,D,M) -> + occurrence___5__7__2__36(M,K,L,N,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__7__1__36(N,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__7__2__36([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__7__1__36(A,J,B,C,E,F,G,H,I,D). +occurrence___5__7__2__36([P|Q],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( P=suspension(_,active,_,M,N,O), + M==F, + O=0, + R=t(245,C,E,P,A), + '$novel_production'(C,R), + '$novel_production'(E,R), + '$novel_production'(P,R), + '$novel_production'(A,R), + N= + '$extend_history'(E,R), + arg(2,E,S), + setarg(2,E,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[E|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,F,E) + ; + true + ), + passive(H,K), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__7__2__36(Q,L,A,B,K,C,D,F,G,H,I,J,E) + ; + true + ) + ; + occurrence___5__7__2__36(Q,L,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__7(A,B,C,D,E,F) :- + occurrence___5__8(A,B,C,D,E,F). +occurrence___5__8(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',H), + lookup_ht(H,A,G), + !, + occurrence___5__8__0__37(G,A,B,C,D,E,F). +occurrence___5__8__0__37([],B,C,D,E,F,A) :- + occurrence___5__9(B,C,D,E,F,A). +occurrence___5__8__0__37([I|J],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,G,H,_), + G==B, + K=t(254,I,A), + '$novel_production'(I,K), + '$novel_production'(A,K), + C>H -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',M), + N=[A|M], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',P), + insert_ht(P,k(B,C),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Q), + insert_ht(Q,D,A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',R), + insert_ht(R,k(D,E),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + insert_ht(S,B,A) + ; + true + ), + passive(D,E), + ( A=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + occurrence___5__8__0__37(J,B,C,D,E,F,A) + ; + true + ) + ; + occurrence___5__8__0__37(J,B,C,D,E,F,A) + ). +occurrence___5__8(A,B,C,D,E,F) :- + occurrence___5__9(A,B,C,D,E,F). +occurrence___5__9(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H), + lookup_ht(H,k(A,C),G), + !, + occurrence___5__9__0__41(G,A,B,C,D,E,F). +occurrence___5__9__0__41([],B,C,D,E,F,A) :- + occurrence___5__10(B,C,D,E,F,A). +occurrence___5__9__0__41([K|L],A,B,C,D,E,F) :- + ( K=suspension(_,active,G,H,I,J), + G==A, + H==C, + C>1, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',Z), + lookup_ht(Z,A,O), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,N), + N>B -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',X), + delete_ht(X,A,K), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',Y), + delete_ht(Y,k(A,C),K), + arg(2,F,P), + setarg(2,F,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + R=[F|Q], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',T), + insert_ht(T,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',U), + insert_ht(U,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',V), + insert_ht(V,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',W), + insert_ht(W,A,F) + ; + true + ), + functional_dependency(A,1,I,J), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__9__0__41(L,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__9__0__41(L,A,B,C,D,E,F) + ). +occurrence___5__9(A,B,C,D,E,F) :- + occurrence___5__10(A,B,C,D,E,F). +occurrence___5__10(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',H), + lookup_ht(H,A,G), + !, + occurrence___5__10__0__47(G,A,B,C,D,E,F). +occurrence___5__10__0__47([],B,C,D,E,F,A) :- + occurrence___5__11(B,C,D,E,F,A). +occurrence___5__10__0__47([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',J) -> + occurrence___5__10__1__47(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__10__0__47(K,B,C,D,E,F,A) + ). +occurrence___5__10__1__47([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__10__0__47(A,C,D,E,F,G,B). +occurrence___5__10__1__47([J|L],I,A,B,D,E,F,G,H,C) :- + ( J=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',M), + lookup_ht1(M,F,F,K) -> + occurrence___5__10__2__47(K,J,L,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__10__1__47(L,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__10__2__47([],_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__10__1__47(A,J,B,C,E,F,G,H,I,D). +occurrence___5__10__2__47([N|O],A,B,K,C,D,F,G,H,I,J,E) :- + ( N=suspension(_,active,_,_,L,M), + L==H, + V=t(325,A,E,N,C), + '$novel_production'(A,V), + '$novel_production'(E,V), + '$novel_production'(N,V), + '$novel_production'(C,V) -> + '$extend_history'(E,V), + arg(2,E,W), + setarg(2,E,active), + ( W==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',X), + Y=[E|X], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Y), + ( X=[Z|_] -> + setarg(4,Z,Y) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',A1), + insert_ht(A1,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',B1), + insert_ht(B1,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',C1), + insert_ht(C1,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',D1), + insert_ht(D1,F,E) + ; + true + ), + M=pragma(rule(P,Q,R,_),_,_,_,_), + ( is_passive(H,I) -> + true + ; + ( J==simplification -> + select(S,P,_), + S=..[_|T], + term_variables(R,U), + partial_wake_args(T,K,U,F) + ) + ; + select(S,Q,_), + S=..[_|T], + term_variables(R,U), + partial_wake_args(T,K,U,F) + ), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__10__2__47(O,A,B,K,C,D,F,G,H,I,J,E) + ; + true + ) + ; + occurrence___5__10__2__47(O,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__10(A,B,C,D,E,F) :- + occurrence___5__11(A,B,C,D,E,F). +occurrence___5__11(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',H), + lookup_ht(H,k(C,D),G), + !, + occurrence___5__11__0__49(G,A,B,C,D,E,F). +occurrence___5__11__0__49([],B,C,D,E,F,A) :- + occurrence___5__12(B,C,D,E,F,A). +occurrence___5__11__0__49([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,G,H), + G==D, + H==E, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',L), + lookup_ht(L,k(B,C),J) -> + occurrence___5__11__1__49(J,I,K,B,C,D,E,F,A) + ; + occurrence___5__11__0__49(K,B,C,D,E,F,A) + ). +occurrence___5__11__1__49([],_,A,C,D,E,F,G,B) :- + occurrence___5__11__0__49(A,C,D,E,F,G,B). +occurrence___5__11__1__49([K|L],A,B,D,E,F,G,H,C) :- + ( K=suspension(_,active,_,I,J), + I==D, + J==E, + N=t(357,C,A,K), + '$novel_production'(C,N), + '$novel_production'(A,N), + '$novel_production'(K,N), + E>1 -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(F,G),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,D,C) + ; + true + ), + M is E-1, + skip_to_next_id(D,M), + ( C=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,C,inactive), + occurrence___5__11__1__49(L,A,B,D,E,F,G,H,C) + ; + true + ) + ; + occurrence___5__11__1__49(L,A,B,D,E,F,G,H,C) + ). +occurrence___5__11(A,B,C,D,E,F) :- + occurrence___5__12(A,B,C,D,E,F). +occurrence___5__12(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',H), + lookup_ht(H,k(A,B),G), + !, + occurrence___5__12__0__50(G,A,B,C,D,E,F). +occurrence___5__12__0__50([],B,C,D,E,F,A) :- + occurrence___5__13(B,C,D,E,F,A). +occurrence___5__12__0__50([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + ground(C), + ground(D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',X), + lookup_ht(X,k(C,D),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_) -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',W), + delete_ht(W,k(A,B),J), + arg(2,F,O), + setarg(2,F,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[F|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + N is B+1, + set_occurrence_code_id(A,N,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__12__0__50(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__12__0__50(K,A,B,C,D,E,F) + ). +occurrence___5__12(A,B,C,D,E,F) :- + occurrence___5__13(A,B,C,D,E,F). +occurrence___5__13(A,B,C,D,simplification,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__13__0__51(F,A,B,C,D,simplification,E). +occurrence___5__13__0__51([],B,C,D,E,F,A) :- + occurrence___5__15(B,C,D,E,F,A). +occurrence___5__13__0__51([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',U), + delete_ht(U,k(A,B),J), + arg(2,F,M), + setarg(2,F,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',N), + O=[F|N], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + insert_ht(Q,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + insert_ht(R,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',S), + insert_ht(S,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',T), + insert_ht(T,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + L is B+1, + set_occurrence_code_id(A,L,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__13__0__51(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__13__0__51(K,A,B,C,D,E,F) + ). +occurrence___5__13(A,B,C,D,propagation,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__13__0__52(F,A,B,C,D,propagation,E). +occurrence___5__13__0__52([],B,C,D,E,F,A) :- + occurrence___5__14(B,C,D,E,F,A). +occurrence___5__13__0__52([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + ground(A), + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',Y), + lookup_ht(Y,k(A,B),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_) -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',X), + delete_ht(X,k(A,B),J), + arg(2,F,P), + setarg(2,F,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + R=[F|Q], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',T), + insert_ht(T,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',U), + insert_ht(U,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',V), + insert_ht(V,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',W), + insert_ht(W,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + N is B+1, + O is I+1, + set_occurrence_code_id(A,N,O), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__13__0__52(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__13__0__52(K,A,B,C,D,E,F) + ). +occurrence___5__13(A,B,C,D,E,F) :- + occurrence___5__14(A,B,C,D,E,F). +occurrence___5__14(A,B,C,D,propagation,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__14__0__53(F,A,B,C,D,propagation,E). +occurrence___5__14__0__53([],B,C,D,E,F,A) :- + occurrence___5__15(B,C,D,E,F,A). +occurrence___5__14__0__53([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',U), + delete_ht(U,k(A,B),J), + arg(2,F,M), + setarg(2,F,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',N), + O=[F|N], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + insert_ht(Q,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + insert_ht(R,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',S), + insert_ht(S,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',T), + insert_ht(T,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + L is B+1, + set_occurrence_code_id(A,L,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__14__0__53(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__14__0__53(K,A,B,C,D,E,F) + ). +occurrence___5__14(A,B,C,D,E,F) :- + occurrence___5__15(A,B,C,D,E,F). +occurrence___5__15(A,B,C,D,_,E) :- + arg(2,E,F), + setarg(2,E,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',G), + H=[E|G], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',J), + insert_ht(J,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',K), + insert_ht(K,C,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',L), + insert_ht(L,k(C,D),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',M), + insert_ht(M,A,E) + ; + true + ). +get_occurrence(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',I), + lookup_ht(I,k(A,B),H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,_,F,G,_), + !, + F=C, + G=D. +get_occurrence(A,B,_,_) :- + chr_error(internal,'get_occurrence: missing occurrence ~w:~w +',[A,B]). +get_occurrence_from_id(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',I), + lookup_ht(I,k(C,D),H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G,_,_,_), + !, + A=F, + B=G. +get_occurrence_from_id(_,_,_,_) :- + chr_error(internal,'get_occurrence_from_id: missing occurrence ~w:~w +',[]). +max_occurrence(A,B) :- + max_occurrence___2__0(A,B,_). +max_occurrence___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',G), + lookup_ht(G,A,F), + ( + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E>=B, + ! + ; + !, + max_occurrence___2__0__0__2(F,A,B,C) + ). +max_occurrence___2__0__0__2([],B,C,A) :- + max_occurrence___2__1(B,C,A). +max_occurrence___2__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + D==A, + B>=E -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',H), + delete_ht(H,A,F), + max_occurrence___2__0__0__2(G,A,B,C) + ; + max_occurrence___2__0__0__2(G,A,B,C) + ). +max_occurrence___2__0(A,B,C) :- + max_occurrence___2__1(A,B,C). +max_occurrence___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',F), + lookup_ht(F,A,D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + max_occurrence___2__1__0__5(D,A,B,C). +max_occurrence___2__1__0__5([],B,C,A) :- + max_occurrence___2__2(B,C,A). +max_occurrence___2__1__0__5([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + D==B, + F=0, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J), + lookup_ht(J,B,H) -> + max_occurrence___2__1__1__5(H,E,G,I,B,C,A) + ; + max_occurrence___2__1__0__5(I,B,C,A) + ). +max_occurrence___2__1__1__5([],_,_,A,C,D,B) :- + max_occurrence___2__1__0__5(A,C,D,B). +max_occurrence___2__1__1__5([I|K],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,G,_,H,_,_), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',L), + lookup_ht1(L,H,H,J) -> + max_occurrence___2__1__2__5(J,H,I,K,F,A,B,D,E,C) + ; + max_occurrence___2__1__1__5(K,F,A,B,D,E,C) + ). +max_occurrence___2__1__2__5([],_,_,A,G,B,C,E,F,D) :- + max_occurrence___2__1__1__5(A,G,B,C,E,F,D). +max_occurrence___2__1__2__5([L|M],I,A,B,H,C,D,F,G,E) :- + ( L=suspension(_,active,_,_,_,_,J,K,_), + L\==A, + J==I, + N=t(245,L,A,C,E), + '$novel_production'(L,N), + '$novel_production'(A,N), + '$novel_production'(C,N), + '$novel_production'(E,N), + H= + '$extend_history'(E,N), + arg(2,E,O), + setarg(2,E,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',P), + insert_ht(P,F,E) + ; + true + ), + passive(I,K), + ( E=suspension(_,active,_,_,_) -> + setarg(2,E,inactive), + max_occurrence___2__1__2__5(M,I,A,B,H,C,D,F,G,E) + ; + true + ) + ; + max_occurrence___2__1__2__5(M,I,A,B,H,C,D,F,G,E) + ). +max_occurrence___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + max_occurrence___2__2(A,B,C). +max_occurrence___2__2(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',D), + insert_ht(D,A,B) + ; + true + ). +get_max_occurrence(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + B=D. +get_max_occurrence(A,_) :- + chr_error(internal,'get_max_occurrence: missing max occurrence for ~w +',[A]). +allocation_occurrence(A,B) :- + allocation_occurrence___2__0(A,B,_). +allocation_occurrence___2__0(A,0,B) :- + !, + B=suspension(C,active,t,A,0), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',D), + insert_ht(D,A,B), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',E), + insert_ht(E,k(A,0),B), + stored_in_guard_before_next_kept_occurrence(A,0), + ( B=suspension(_,active,_,_,_) -> + setarg(2,B,inactive), + allocation_occurrence___2__1(A,0,B) + ; + true + ). +allocation_occurrence___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + allocation_occurrence___2__1(A,B,C). +allocation_occurrence___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',E), + lookup_ht(E,k(A,B),D), + !, + allocation_occurrence___2__1__0__2(D,A,B,C). +allocation_occurrence___2__1__0__2([],B,C,A) :- + allocation_occurrence___2__2(B,C,A). +allocation_occurrence___2__1__0__2([I|K],B,C,A) :- + ( I=suspension(_,active,_,_,D,E,F,G,H), + D==B, + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + lookup_ht1(L,F,F,J) -> + allocation_occurrence___2__1__1__2(J,F,G,H,I,K,B,C,A) + ; + allocation_occurrence___2__1__0__2(K,B,C,A) + ). +allocation_occurrence___2__1__1__2([],_,_,_,_,A,C,D,B) :- + allocation_occurrence___2__1__0__2(A,C,D,B). +allocation_occurrence___2__1__1__2([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,I,J), + I==F, + M=t(58,K,A,C), + '$novel_production'(K,M), + '$novel_production'(A,M), + '$novel_production'(C,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',O), + insert_ht(O,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',P), + insert_ht(P,k(D,E),C) + ; + true + ), + \+is_passive(F,G), + H==propagation, + ( stored_in_guard_before_next_kept_occurrence(D,E) -> + true + ; + ( J=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(D,E) + ) + ; + ( is_least_occurrence(F) -> + is_observed(D,E) + ) + ; + true + ), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + allocation_occurrence___2__1__1__2(L,F,G,H,A,B,D,E,C) + ; + true + ) + ; + allocation_occurrence___2__1__1__2(L,F,G,H,A,B,D,E,C) + ). +allocation_occurrence___2__1(A,B,C) :- + allocation_occurrence___2__2(A,B,C). +allocation_occurrence___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',E), + lookup_ht(E,A,D), + !, + allocation_occurrence___2__2__0__3(D,A,B,C). +allocation_occurrence___2__2__0__3([],B,C,A) :- + allocation_occurrence___2__3(B,C,A). +allocation_occurrence___2__2__0__3([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + D==B, + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',K), + lookup_ht(K,F,I) -> + allocation_occurrence___2__2__1__3(I,E,F,G,H,J,B,C,A) + ; + allocation_occurrence___2__2__0__3(J,B,C,A) + ). +allocation_occurrence___2__2__1__3([],_,_,_,_,A,C,D,B) :- + allocation_occurrence___2__2__0__3(A,C,D,B). +allocation_occurrence___2__2__1__3([K|N],E,F,G,A,H,B,C,D) :- + ( K=suspension(_,active,I,J), + I==F, + J=[L|M], + L==G, + C>=E, + ground(F), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',V), + lookup_ht1(V,F,F,P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+may_trigger(B) -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',T), + delete_ht(T,k(F,[G|M]),K), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',U), + delete_ht(U,F,K), + arg(2,D,Q), + setarg(2,D,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',R), + insert_ht(R,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',S), + insert_ht(S,k(B,C),D) + ; + true + ), + least_occurrence(F,M), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + allocation_occurrence___2__2__1__3(N,E,F,G,A,H,B,C,D) + ; + true + ) + ; + allocation_occurrence___2__2__1__3(N,E,F,G,A,H,B,C,D) + ). +allocation_occurrence___2__2(A,B,C) :- + allocation_occurrence___2__3(A,B,C). +allocation_occurrence___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',E), + lookup_ht(E,A,D), + !, + allocation_occurrence___2__3__0__5(D,A,B,C). +allocation_occurrence___2__3__0__5([],B,C,A) :- + allocation_occurrence___2__4(B,C,A). +allocation_occurrence___2__3__0__5([H|I],A,B,C) :- + ( H=suspension(_,active,D,E,F,G), + D==A, + E>1, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',R), + lookup_ht(R,A,L), + 'chr sbag_member'(J,L), + J=suspension(_,active,_,_,_,K,E,_,_), + B>K -> + setarg(2,H,removed), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',P), + delete_ht(P,A,H), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',Q), + delete_ht(Q,k(A,E),H), + arg(2,C,M), + setarg(2,C,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',N), + insert_ht(N,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',O), + insert_ht(O,k(A,B),C) + ; + true + ), + functional_dependency(A,1,F,G), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + allocation_occurrence___2__3__0__5(I,A,B,C) + ; + true + ) + ; + allocation_occurrence___2__3__0__5(I,A,B,C) + ). +allocation_occurrence___2__3(A,B,C) :- + allocation_occurrence___2__4(A,B,C). +allocation_occurrence___2__4(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',F), + insert_ht(F,k(A,B),C) + ; + true + ). +get_allocation_occurrence(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + B=D. +get_allocation_occurrence(_,A) :- + chr_pp_flag(late_allocation,off), + A=0. +rule(A,B) :- + rule___2__0(A,B,_). +rule___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), + !, + C=suspension(E,not_stored_yet,t,_,A,B), + 'chr gen_id'(E), + rule___2__0__0__1(D,A,B,C). +rule___2__0__0__1([],B,C,A) :- + rule___2__1(B,C,A). +rule___2__0__0__1([I|K],B,C,A) :- + ( I=suspension(_,active,_,_,D,E,F,G,H), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',L), + lookup_ht(L,k(D,E),J) -> + rule___2__0__1__1(J,D,E,G,H,I,K,B,C,A) + ; + rule___2__0__0__1(K,B,C,A) + ). +rule___2__0__1__1([],_,_,_,_,_,A,C,D,B) :- + rule___2__0__0__1(A,C,D,B). +rule___2__0__1__1([L|M],F,G,H,I,A,B,D,E,C) :- + ( L=suspension(_,active,_,J,K), + J==F, + K==G, + N=t(58,C,A,L), + '$novel_production'(C,N), + '$novel_production'(A,N), + '$novel_production'(L,N) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____rule___2',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',S), + insert_ht(S,D,C) + ; + true + ), + \+is_passive(D,H), + I==propagation, + ( stored_in_guard_before_next_kept_occurrence(F,G) -> + true + ; + ( E=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(F,G) + ) + ; + ( is_least_occurrence(D) -> + is_observed(F,G) + ) + ; + true + ), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__0__1__1(M,F,G,H,I,A,B,D,E,C) + ; + true + ) + ; + rule___2__0__1__1(M,F,G,H,I,A,B,D,E,C) + ). +rule___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + rule___2__1(A,B,C). +rule___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',E), + lookup_ht(E,A,D), + !, + rule___2__1__0__2(D,A,B,C). +rule___2__1__0__2([],B,C,A) :- + rule___2__2(B,C,A). +rule___2__1__0__2([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=[G|H], + ground(A), + ground(G), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + lookup_ht(Y,k(A,G),M), + 'chr sbag_member'(J,M), + J=suspension(_,active,_,_,K,L,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',X), + lookup_ht(X,K,P), + 'chr sbag_member'(N,P), + N=suspension(_,active,_,_,O), + O>=L, + \+may_trigger(K) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',V), + delete_ht(V,k(A,[G|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',W), + delete_ht(W,A,F), + arg(2,C,Q), + setarg(2,C,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',R), + S=[C|R], + b_setval('$chr_store_global_ground_chr_translate____rule___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + insert_ht(U,A,C) + ; + true + ), + least_occurrence(A,H), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__1__0__2(I,A,B,C) + ; + true + ) + ; + rule___2__1__0__2(I,A,B,C) + ). +rule___2__1(A,B,C) :- + rule___2__2(A,B,C). +rule___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',E), + lookup_ht(E,A,D), + !, + rule___2__2__0__3(D,A,B,C). +rule___2__2__0__3([],B,C,A) :- + rule___2__3(B,C,A). +rule___2__2__0__3([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=[G|H], + ground(A), + ground(G), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',S), + lookup_ht(S,k(A,G),K), + 'chr sbag_member'(J,K), + J=suspension(_,active,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',Q), + delete_ht(Q,k(A,[G|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',R), + delete_ht(R,A,F), + arg(2,C,L), + setarg(2,C,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',M), + N=[C|M], + b_setval('$chr_store_global_ground_chr_translate____rule___2',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + insert_ht(P,A,C) + ; + true + ), + least_occurrence(A,H), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__2__0__3(I,A,B,C) + ; + true + ) + ; + rule___2__2__0__3(I,A,B,C) + ). +rule___2__2(A,B,C) :- + rule___2__3(A,B,C). +rule___2__3(A,B,C) :- + B=pragma(rule([],_,_,_),ids([],D),_,_,_), + !, + arg(2,C,E), + setarg(2,C,active), + ( E==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',F), + G=[C|F], + b_setval('$chr_store_global_ground_chr_translate____rule___2',G), + ( F=[H|_] -> + setarg(4,H,G) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + insert_ht(I,A,C) + ; + true + ), + least_occurrence(A,D), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__4(A,B,C) + ; + true + ). +rule___2__3(A,B,C) :- + rule___2__4(A,B,C). +rule___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',F1), + lookup_ht(F1,A,I), + 'chr sbag_member'(D,I), + D=suspension(_,active,_,_,_,E,F,G,H,_), + B=pragma(rule(M,N,F,O),J,K,L,A), + F\==true, + append(H,G,P), + ( conj2list(F,Q), + append(P,Q,R), + guard_entailment:entails_guard(R,fail) -> + S=fail + ; + simplify_guard(F,O,P,S,T) + ), + F\==S, + !, + setarg(2,D,removed), + arg(4,D,A1), + ( var(A1) -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',B1), + B1=[_|C1], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',C1), + ( C1=[D1|_] -> + setarg(4,D1,_) + ; + true + ) + ; + A1=[_,_|C1], + setarg(2,A1,C1), + ( C1=[D1|_] -> + setarg(4,D1,A1) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',E1), + delete_ht(E1,A,D), + ( var(C) -> + true + ; + arg(2,C,Z), + setarg(2,C,removed), + ( Z==not_stored_yet -> + true + ; + arg(4,C,U), + ( var(U) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',V), + V=[_|W], + b_setval('$chr_store_global_ground_chr_translate____rule___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + delete_ht(Y,A,C) + ) + ), + rule(A,pragma(rule(M,N,S,T),J,K,L,A)), + prev_guard_list(A,E,S,G,H,[]). +rule___2__4(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',D), + !, + rule___2__4__0__10(D,A,B,C). +rule___2__4__0__10([],B,C,A) :- + rule___2__5(B,C,A). +rule___2__4__0__10([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + M=t(170,A,D), + '$novel_production'(A,M), + '$novel_production'(D,M) -> + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____rule___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + insert_ht(R,B,A) + ; + true + ), + C=pragma(rule(F,G,_,_),_,_,_,_), + append(F,G,H), + make_head_matchings_explicit_(H,I,J), + copy_term_nat(I-J,K-L), + make_head_matchings_explicit_memo_table(B,K,L), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__4__0__10(E,B,C,A) + ; + true + ) + ; + rule___2__4__0__10(E,B,C,A) + ). +rule___2__4(A,B,C) :- + rule___2__5(A,B,C). +rule___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',E), + lookup_ht(E,A,D), + !, + rule___2__5__0__11(D,A,B,C). +rule___2__5__0__11([],B,C,A) :- + rule___2__6(B,C,A). +rule___2__5__0__11([H|I],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G,_), + D==B, + M=t(174,H,A), + '$novel_production'(H,M), + '$novel_production'(A,M), + chr_pp_flag(check_impossible_rules,on), + C=pragma(rule(_,_,E,_),_,_,_,B), + conj2list(E,J), + append(G,F,K), + append(K,J,L), + guard_entailment:entails_guard(L,fail) -> + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____rule___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + insert_ht(R,B,A) + ; + true + ), + chr_warning(weird_program,'Heads will never match or guard will always fail in ~@. + This rule will never fire! +',[format_rule(C)]), + set_all_passive(B), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__5__0__11(I,B,C,A) + ; + true + ) + ; + rule___2__5__0__11(I,B,C,A) + ). +rule___2__5(A,B,C) :- + rule___2__6(A,B,C). +rule___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I1), + lookup_ht(I1,A,I), + 'chr sbag_member'(D,I), + D=suspension(_,active,_,_,_,E,F,G,H,_), + B=pragma(rule(M,N,F,O),J,K,L,A), + simplify_heads(H,G,F,O,P,Q), + P\==[], + extract_arguments(M,R), + extract_arguments(N,S), + extract_arguments(E,T), + replace_some_heads(R,S,T,P,U,V,F,O,W), + substitute_arguments(M,U,X), + substitute_arguments(N,V,Y), + append(Q,W,Z), + list2conj(Z,A1), + B1=pragma(rule(X,Y,F,(A1,O)),J,K,L,A), + ( + M\==X + ; + N\==Y + ), + !, + ( var(C) -> + true + ; + arg(2,C,H1), + setarg(2,C,removed), + ( H1==not_stored_yet -> + true + ; + arg(4,C,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____rule___2',E1), + ( E1=[F1|_] -> + setarg(4,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(4,F1,C1) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',G1), + delete_ht(G1,A,C) + ) + ), + rule(A,B1). +rule___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + rule___2__6__0__13(D,A,B,C). +rule___2__6__0__13([],B,C,A) :- + rule___2__7(B,C,A). +rule___2__6__0__13([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,E,F,_,_), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J), + lookup_ht(J,D,H) -> + rule___2__6__1__13(H,D,E,G,I,B,C,A) + ; + rule___2__6__0__13(I,B,C,A) + ). +rule___2__6__1__13([],_,_,_,A,C,D,B) :- + rule___2__6__0__13(A,C,D,B). +rule___2__6__1__13([L|N],F,G,A,B,D,E,C) :- + ( L=suspension(_,active,_,_,H,I,J,K,_), + L\==A, + H==F, + J==D, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',O), + lookup_ht(O,D,M) -> + rule___2__6__2__13(M,I,K,L,N,F,G,A,B,D,E,C) + ; + rule___2__6__1__13(N,F,G,A,B,D,E,C) + ). +rule___2__6__2__13([],_,_,_,A,G,H,B,C,E,F,D) :- + rule___2__6__1__13(A,G,H,B,C,E,F,D). +rule___2__6__2__13([M|O],J,K,A,B,H,I,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,L,_,_,_,_,_), + L==F, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',N) -> + rule___2__6__3__13(N,M,O,J,K,A,B,H,I,C,D,F,G,E) + ; + rule___2__6__2__13(O,J,K,A,B,H,I,C,D,F,G,E) + ). +rule___2__6__3__13([],_,A,K,L,B,C,I,J,D,E,G,H,F) :- + rule___2__6__2__13(A,K,L,B,C,I,J,D,E,G,H,F). +rule___2__6__3__13([O|P],A,M,J,K,B,L,G,H,C,I,D,E,F) :- + ( O=suspension(_,active,_,N), + J + setarg(2,O,removed), + arg(3,O,X), + ( var(X) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Y), + Y=[_|Z], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Z), + ( Z=[A1|_] -> + setarg(3,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(3,A1,X) + ; + true + ) + ), + arg(2,F,S), + setarg(2,F,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',T), + U=[F|T], + b_setval('$chr_store_global_ground_chr_translate____rule___2',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',W), + insert_ht(W,D,F) + ; + true + ), + first_occ_in_rule(D,G,J,K), + tree_set_add(N,G,R), + multiple_occ_constraints_checked(R), + ( F=suspension(_,active,_,_,_,_) -> + setarg(2,F,inactive), + rule___2__6__3__13(P,A,M,J,K,B,L,G,H,C,I,D,E,F) + ; + true + ) + ; + rule___2__6__3__13(P,A,M,J,K,B,L,G,H,C,I,D,E,F) + ). +rule___2__6(A,B,C) :- + rule___2__7(A,B,C). +rule___2__7(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',D), + !, + rule___2__7__0__15(D,A,B,C). +rule___2__7__0__15([],B,C,A) :- + rule___2__8(B,C,A). +rule___2__7__0__15([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + T=t(209,A,D), + '$novel_production'(A,T), + '$novel_production'(D,T) -> + '$extend_history'(A,T), + arg(2,A,U), + setarg(2,A,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',V), + W=[A|V], + b_setval('$chr_store_global_ground_chr_translate____rule___2',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + insert_ht(Y,B,A) + ; + true + ), + copy_term_nat(C,F), + F=pragma(rule(G,H,_,I),ids(_,_),_,_,_), + ( + catch((static_type_check_heads(G),static_type_check_heads(H),conj2list(I,J),static_type_check_body(J)),type_error(K),(K=invalid_functor(L,M,N)->chr_error(type_error,'Invalid functor in ~@ of ~@: + found `~w'', + expected type `~w''! +',[chr_translate:format_src(L),format_rule(C),M,N]);K=type_clash(O,P,Q,R,S)->chr_error(type_error,'Type clash for variable ~w in ~@: + expected type ~w in ~@ + expected type ~w in ~@ +',[O,format_rule(C),R,chr_translate:format_src(P),S,chr_translate:format_src(Q)]))), + fail + ; + true + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__7__0__15(E,B,C,A) + ; + true + ) + ; + rule___2__7__0__15(E,B,C,A) + ). +rule___2__7(A,B,C) :- + rule___2__8(A,B,C). +rule___2__8(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + lookup_ht(E,A,D), + !, + rule___2__8__0__16(D,A,B,C). +rule___2__8__0__16([],B,C,A) :- + rule___2__9(B,C,A). +rule___2__8__0__16([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==B, + K=t(246,A,F), + '$novel_production'(A,K), + '$novel_production'(F,K), + C=pragma(rule(_,_,_,_),ids([E|I],H),_,_,B) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',M), + N=[A|M], + b_setval('$chr_store_global_ground_chr_translate____rule___2',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + insert_ht(P,B,A) + ; + true + ), + append(I,H,J), + check_all_passive(B,J), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__8__0__16(G,B,C,A) + ; + true + ) + ; + rule___2__8__0__16(G,B,C,A) + ). +rule___2__8(A,B,C) :- + rule___2__9(A,B,C). +rule___2__9(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + lookup_ht(E,A,D), + !, + rule___2__9__0__17(D,A,B,C). +rule___2__9__0__17([],B,C,A) :- + rule___2__10(B,C,A). +rule___2__9__0__17([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==B, + I=t(247,A,F), + '$novel_production'(A,I), + '$novel_production'(F,I), + C=pragma(rule(_,_,_,_),ids([],[E|H]),_,_,B) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____rule___2',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N), + insert_ht(N,B,A) + ; + true + ), + check_all_passive(B,H), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__9__0__17(G,B,C,A) + ; + true + ) + ; + rule___2__9__0__17(G,B,C,A) + ). +rule___2__9(A,B,C) :- + rule___2__10(A,B,C). +rule___2__10(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',E), + hash_term(k(A,11910),F), + lookup_ht1(E,F,k(A,[]),D), + !, + rule___2__10__0__18(D,A,B,C). +rule___2__10__0__18([],B,C,A) :- + rule___2__11(B,C,A). +rule___2__10__0__18([F|G],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=[] -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',M), + delete_ht(M,k(A,[]),F), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',N), + delete_ht(N,A,F), + arg(2,C,H), + setarg(2,C,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',I), + J=[C|I], + b_setval('$chr_store_global_ground_chr_translate____rule___2',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + insert_ht(L,A,C) + ; + true + ), + chr_warning(weird_program,'All heads passive in ~@. + This rule never fires. Please check your program. +',[format_rule(B)]), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__10__0__18(G,A,B,C) + ; + true + ) + ; + rule___2__10__0__18(G,A,B,C) + ). +rule___2__10(A,B,C) :- + rule___2__11(A,B,C). +rule___2__11(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + rule___2__11__0__23(D,A,B,C). +rule___2__11__0__23([],B,C,A) :- + rule___2__12(B,C,A). +rule___2__11__0__23([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G), + E==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',I) -> + rule___2__11__1__23(I,D,F,G,H,J,B,C,A) + ; + rule___2__11__0__23(J,B,C,A) + ). +rule___2__11__1__23([],_,_,_,_,A,C,D,B) :- + rule___2__11__0__23(A,C,D,B). +rule___2__11__1__23([I|K],F,G,H,A,B,D,E,C) :- + ( I=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',L), + lookup_ht(L,F,J) -> + rule___2__11__2__23(J,I,K,F,G,H,A,B,D,E,C) + ; + rule___2__11__1__23(K,F,G,H,A,B,D,E,C) + ). +rule___2__11__2__23([],_,A,G,H,I,B,C,E,F,D) :- + rule___2__11__1__23(A,G,H,I,B,C,E,F,D). +rule___2__11__2__23([M|N],A,B,H,I,J,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,K,L), + K==H, + U=t(325,A,C,E,M), + '$novel_production'(A,U), + '$novel_production'(C,U), + '$novel_production'(E,U), + '$novel_production'(M,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____rule___2',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Z), + insert_ht(Z,F,E) + ; + true + ), + G=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(F,I) -> + true + ; + ( J==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,L,T,H) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,L,T,H) + ), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + rule___2__11__2__23(N,A,B,H,I,J,C,D,F,G,E) + ; + true + ) + ; + rule___2__11__2__23(N,A,B,H,I,J,C,D,F,G,E) + ). +rule___2__11(A,B,C) :- + rule___2__12(A,B,C). +rule___2__12(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____rule___2',E), + ( D=[F|_] -> + setarg(4,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',G), + insert_ht(G,A,B) + ; + true + ). +get_rule(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',F), + lookup_ht1(F,A,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + !, + B=D. +get_rule(_,_) :- + fail. +least_occurrence(A,[B|C]) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + lookup_ht1(P,A,A,E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',R), + lookup_ht(R,k(A,B),I), + 'chr sbag_member'(F,I), + F=suspension(_,active,_,_,G,H,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',Q), + lookup_ht(Q,G,L), + 'chr sbag_member'(J,L), + J=suspension(_,active,_,_,K), + K>=H, + \+may_trigger(G), + !, + least_occurrence(A,C) + ; + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',O), + lookup_ht(O,k(A,B),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_), + !, + least_occurrence(A,C) + ). +least_occurrence(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',E), + insert_ht(E,k(A,B),C), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',F), + insert_ht(F,A,C). +is_least_occurrence(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',D), + hash_term(k(A,11910),E), + lookup_ht1(D,E,k(A,[]),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +is_least_occurrence(_) :- + fail. +stored_in_guard_lookahead(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',L), + lookup_ht(L,k(A,B),G), + 'chr sbag_member'(C,G), + C=suspension(_,active,_,_,_,_,D,E,F), + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',M), + lookup_ht(M,k(D,E),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_,_), + !, + J is B+1, + stored_in_guard_lookahead(A,J) + ; + !, + F==simplification, + ( is_stored_in_guard(A,D) -> + true + ; + K is B+1, + stored_in_guard_lookahead(A,K) + ) + ). +stored_in_guard_lookahead(_,_) :- + fail. +constraint_index(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',E), + insert_ht(E,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',F), + insert_ht(F,A,C). +get_constraint_index(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_constraint_index(_,_) :- + fail. +get_indexed_constraint(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',F), + G is abs(A), + lookup_ht1(F,G,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,D,_), + !, + B=D. +get_indexed_constraint(_,_) :- + fail. +max_constraint_index(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_max_constraint_index(A) :- + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_max_constraint_index(0). +identifier_size(A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + identifier_size___1__0__0__2(C,A) + ). +identifier_size___1__0__0__2([],A) :- + identifier_size___1__1(A). +identifier_size___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + identifier_size___1__0__0__2(C,A) + ; + identifier_size___1__0__0__2(C,A) + ). +identifier_size(A) :- + identifier_size___1__1(A). +identifier_size___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_identifier_size(A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_identifier_size(1). +identifier_index(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',F), + lookup_ht(F,k(A,B),E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_), + ! + ; + !, + identifier_index___3__0__0__2(E,A,B,C) + ). +identifier_index___3__0__0__2([],A,B,C) :- + identifier_index___3__1(A,B,C). +identifier_index___3__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,D,E,_), + D==A, + E==B -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',H), + delete_ht(H,k(A,B),F), + identifier_index___3__0__0__2(G,A,B,C) + ; + identifier_index___3__0__0__2(G,A,B,C) + ). +identifier_index(A,B,C) :- + identifier_index___3__1(A,B,C). +identifier_index___3__1(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',F), + insert_ht(F,k(A,B),D). +get_identifier_index(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_identifier_index(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + setarg(2,D,removed), + arg(3,D,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',J), + ( J=[K|_] -> + setarg(3,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(3,K,H) + ; + true + ) + ), + G is E+1, + identifier_index(A,B,G), + identifier_size(G), + C=G. +get_identifier_index(A,B,C) :- + identifier_index(A,B,2), + identifier_size(2), + C=2. +type_indexed_identifier_size(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',E), + lookup_ht(E,A,D), + ( + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! + ; + !, + type_indexed_identifier_size___2__0__0__2(D,A,B) + ). +type_indexed_identifier_size___2__0__0__2([],A,B) :- + type_indexed_identifier_size___2__1(A,B). +type_indexed_identifier_size___2__0__0__2([D|E],A,B) :- + ( D=suspension(_,active,C,_), + C==A -> + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',F), + delete_ht(F,A,D), + type_indexed_identifier_size___2__0__0__2(E,A,B) + ; + type_indexed_identifier_size___2__0__0__2(E,A,B) + ). +type_indexed_identifier_size(A,B) :- + type_indexed_identifier_size___2__1(A,B). +type_indexed_identifier_size___2__1(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',E), + insert_ht(E,A,C). +get_type_indexed_identifier_size(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_type_indexed_identifier_size(_,1). +type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',G), + lookup_ht(G,k(B,C),F), + ( + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_,_,_), + ! + ; + !, + type_indexed_identifier_index___4__0__0__2(F,A,B,C,D) + ). +type_indexed_identifier_index___4__0__0__2([],A,B,C,D) :- + type_indexed_identifier_index___4__1(A,B,C,D). +type_indexed_identifier_index___4__0__0__2([H|I],A,B,C,D) :- + ( H=suspension(_,active,E,F,G,_), + F==B, + G==C -> + setarg(2,H,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',J), + delete_ht(J,k(E,B,C),H), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',K), + delete_ht(K,k(B,C),H), + type_indexed_identifier_index___4__0__0__2(I,A,B,C,D) + ; + type_indexed_identifier_index___4__0__0__2(I,A,B,C,D) + ). +type_indexed_identifier_index(A,B,C,D) :- + type_indexed_identifier_index___4__1(A,B,C,D). +type_indexed_identifier_index___4__1(A,B,C,D) :- + E=suspension(F,active,A,B,C,D), + 'chr gen_id'(F), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',G), + insert_ht(G,k(A,B,C),E), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',H), + insert_ht(H,k(B,C),E). +get_type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',H), + lookup_ht(H,k(A,B,C),G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,_,F), + !, + D=F. +get_type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',J), + lookup_ht(J,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + !, + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',I), + delete_ht(I,A,E), + H is F+1, + type_indexed_identifier_index(A,B,C,H), + type_indexed_identifier_size(A,H), + D=H. +get_type_indexed_identifier_index(A,B,C,D) :- + type_indexed_identifier_index(A,B,C,2), + type_indexed_identifier_size(A,2), + D=2. +no_history(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',D), + insert_ht(D,A,B). +has_no_history(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',D), + E is abs(A), + lookup_ht1(D,E,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +has_no_history(_) :- + fail. +history(A,B,C) :- + history___3__0(A,B,C,_). +history___3__0(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',G), + lookup_ht(G,A,E), + !, + D=suspension(F,not_stored_yet,t,A,B,C), + 'chr gen_id'(F), + history___3__0__0__1(E,A,B,C,D). +history___3__0__0__1([],B,C,D,A) :- + history___3__1(B,C,D,A). +history___3__0__0__1([F|G],B,C,D,A) :- + ( F=suspension(_,active,_,E,_,_), + E==B, + H=t(93,A,F), + '$novel_production'(A,H), + '$novel_production'(F,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,J) -> + nb_getval(J,K), + b_setval(J,[A|K]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',M), + insert_ht(M,B,A) + ; + true + ), + chr_error(syntax,'Only one pragma history allowed per rule (rule number ~w) +',[B]), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__0__0__1(G,B,C,D,A) + ; + true + ) + ; + history___3__0__0__1(G,B,C,D,A) + ). +history___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + history___3__1(A,B,C,D). +history___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',F), + lookup_ht(F,A,E), + !, + history___3__1__0__2(E,A,B,C,D). +history___3__1__0__2([],B,C,D,A) :- + history___3__2(B,C,D,A). +history___3__1__0__2([F|G],B,C,D,A) :- + ( F=suspension(_,active,_,E,_,_), + E==B, + H=t(93,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,J) -> + nb_getval(J,K), + b_setval(J,[A|K]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',M), + insert_ht(M,B,A) + ; + true + ), + chr_error(syntax,'Only one pragma history allowed per rule (rule number ~w) +',[B]), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__1__0__2(G,B,C,D,A) + ; + true + ) + ; + history___3__1__0__2(G,B,C,D,A) + ). +history___3__1(A,B,C,D) :- + history___3__2(A,B,C,D). +history___3__2(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',F), + lookup_ht(F,B,E), + !, + history___3__2__0__3(E,A,B,C,D). +history___3__2__0__3([],B,C,D,A) :- + history___3__3(B,C,D,A). +history___3__2__0__3([H|I],B,C,D,A) :- + ( H=suspension(_,active,_,E,F,G), + F==C, + L=t(94,A,H), + '$novel_production'(A,L), + '$novel_production'(H,L) -> + '$extend_history'(A,L), + arg(2,A,M), + setarg(2,A,active), + ( M==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,N) -> + nb_getval(N,O), + b_setval(N,[A|O]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',P), + insert_ht(P,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',Q), + insert_ht(Q,B,A) + ; + true + ), + length(D,J), + length(G,K), + ( J\==K -> + chr_error(syntax,'The history named ~w does not always range over an equal amount of occurrences. +',[C]) + ; + test_named_history_id_pairs(B,D,E,G) + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__2__0__3(I,B,C,D,A) + ; + true + ) + ; + history___3__2__0__3(I,B,C,D,A) + ). +history___3__2(A,B,C,D) :- + history___3__3(A,B,C,D). +history___3__3(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',F), + lookup_ht(F,B,E), + !, + history___3__3__0__4(E,A,B,C,D). +history___3__3__0__4([],B,C,D,A) :- + history___3__4(B,C,D,A). +history___3__3__0__4([H|I],B,C,D,A) :- + ( H=suspension(_,active,_,E,F,G), + F==C, + L=t(94,H,A), + '$novel_production'(H,L), + '$novel_production'(A,L) -> + '$extend_history'(A,L), + arg(2,A,M), + setarg(2,A,active), + ( M==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,N) -> + nb_getval(N,O), + b_setval(N,[A|O]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',P), + insert_ht(P,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',Q), + insert_ht(Q,B,A) + ; + true + ), + length(G,J), + length(D,K), + ( J\==K -> + chr_error(syntax,'The history named ~w does not always range over an equal amount of occurrences. +',[C]) + ; + test_named_history_id_pairs(E,G,B,D) + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__3__0__4(I,B,C,D,A) + ; + true + ) + ; + history___3__3__0__4(I,B,C,D,A) + ). +history___3__3(A,B,C,D) :- + history___3__4(A,B,C,D). +history___3__4(A,B,[],C) :- + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',D), + !, + history___3__4__0__6(D,A,B,[],C). +history___3__4__0__6([],B,C,D,A) :- + history___3__5(B,C,D,A). +history___3__4__0__6([E|F],B,C,D,A) :- + ( E=suspension(_,active,_,_), + G=t(140,E,A), + '$novel_production'(E,G), + '$novel_production'(A,G) -> + '$extend_history'(A,G), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,I) -> + nb_getval(I,J), + b_setval(I,[A|J]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',K), + insert_ht(K,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',L), + insert_ht(L,B,A) + ; + true + ), + generate_empty_named_history_initialisation(C), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__4__0__6(F,B,C,D,A) + ; + true + ) + ; + history___3__4__0__6(F,B,C,D,A) + ). +history___3__4(A,B,C,D) :- + history___3__5(A,B,C,D). +history___3__5(A,B,C,D) :- + arg(2,D,E), + setarg(2,D,active), + ( E==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(C,F) -> + nb_getval(F,G), + b_setval(F,[D|G]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',H), + insert_ht(H,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',I), + insert_ht(I,A,D) + ; + true + ). +named_history(A,B,C) :- + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',H), + lookup_ht(H,A,G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + !, + B=E, + C=F. +named_history(_,_,_) :- + fail. +test_named_history_id_pair(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',L), + lookup_ht(L,k(A,B),G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F,_,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',K), + lookup_ht(K,k(C,D),J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,I,_,_,_,_), + H\==E, + I=F, + !. +test_named_history_id_pair(A,_,B,_) :- + chr_error(syntax,'Occurrences of shared history in rules number ~w and ~w do not correspond +',[B,A]). +indexing_spec(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',H), + lookup_ht(H,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',G), + delete_ht(G,A,C), + append(B,D,F), + indexing_spec(A,F). +indexing_spec(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',E), + insert_ht(E,A,C). +get_indexing_spec(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_indexing_spec(_,[]). +observation_analysis(A) :- + observation_analysis___1__0(A,_). +observation_analysis___1__0(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',C), + !, + B=suspension(D,not_stored_yet,_,A), + 'chr gen_id'(D), + observation_analysis___1__0__0__1(C,A,B). +observation_analysis___1__0__0__1([],B,A) :- + observation_analysis___1__1(B,A). +observation_analysis___1__0__0__1([E|F],B,A) :- + ( E=suspension(_,active,_,_,C,D) -> + D=pragma(rule(_,_,G,H),_,_,_,_), + ( chr_pp_flag(store_in_guards,on) -> + observation_analysis(C,G,guard,B) + ; + true + ), + observation_analysis(C,H,body,B), + observation_analysis___1__0__0__1(F,B,A) + ; + observation_analysis___1__0__0__1(F,B,A) + ). +observation_analysis___1__0(A,B) :- + B=suspension(C,not_stored_yet,_,A), + 'chr gen_id'(C), + observation_analysis___1__1(A,B). +observation_analysis___1__1(_,A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +spawns(A,B,C) :- + spawns___3__0(A,B,C,_). +spawns___3__0(A,B,C,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',F), + lookup_ht(F,k(A,B,C),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_,_), + !. +spawns___3__0(A,body,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',E), + hash_term(k(A,1612897,B),F), + lookup_ht1(E,F,k(A,guard,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_,_,_), + !. +spawns___3__0(A,guard,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',E), + hash_term(k(A,1640016,B),F), + lookup_ht1(E,F,k(A,body,B),D), + !, + spawns___3__0__0__4(D,A,guard,B,C). +spawns___3__0__0__4([],B,C,D,A) :- + spawns___3__1(B,C,D,A). +spawns___3__0__0__4([H|I],A,B,C,D) :- + ( H=suspension(_,active,_,_,E,F,G), + E==A, + F=body, + G==C -> + setarg(2,H,removed), + arg(4,H,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',N), + delete_ht(N,k(A,body),H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',O), + delete_ht(O,A,H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',P), + delete_ht(P,C,H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',Q), + delete_ht(Q,k(A,body,C),H), + spawns___3__0__0__4(I,A,B,C,D) + ; + spawns___3__0__0__4(I,A,B,C,D) + ). +spawns___3__0(A,B,C,D) :- + spawns___3__1(A,B,C,D). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',P), + lookup_ht(P,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + !, + ( var(D) -> + true + ; + arg(2,D,O), + setarg(2,D,removed), + ( O==not_stored_yet -> + true + ; + arg(4,D,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',K), + delete_ht(K,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',L), + delete_ht(L,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',M), + delete_ht(M,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',N), + delete_ht(N,k(A,B,C),D) + ) + ). +spawns___3__1(A,body,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',O), + hash_term(k(A,1612897),P), + lookup_ht1(O,P,k(A,guard),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_), + !, + ( var(C) -> + true + ; + arg(2,C,N), + setarg(2,C,removed), + ( N==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',J), + delete_ht(J,k(A,body),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + delete_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',L), + delete_ht(L,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',M), + delete_ht(M,k(A,body,B),C) + ) + ). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',P), + lookup_ht(P,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_,_,_), + may_trigger(C), + !, + ( var(D) -> + true + ; + arg(2,D,O), + setarg(2,D,removed), + ( O==not_stored_yet -> + true + ; + arg(4,D,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',K), + delete_ht(K,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',L), + delete_ht(L,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',M), + delete_ht(M,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',N), + delete_ht(N,k(A,B,C),D) + ) + ). +spawns___3__1(A,body,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',O), + hash_term(k(A,1612897),P), + lookup_ht1(O,P,k(A,guard),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + may_trigger(B), + !, + ( var(C) -> + true + ; + arg(2,C,N), + setarg(2,C,removed), + ( N==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',J), + delete_ht(J,k(A,body),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + delete_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',L), + delete_ht(L,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',M), + delete_ht(M,k(A,body,B),C) + ) + ). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',N), + lookup_ht(N,C,H), + ( + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,_,F,G,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',H1), + lookup_ht(H1,F,J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_), + \+is_passive(F,G), + !, + ( var(D) -> + true + ; + arg(2,D,G1), + setarg(2,D,removed), + ( G1==not_stored_yet -> + true + ; + arg(4,D,Y), + ( var(Y) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',Z), + Z=[_|A1], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',A1), + ( A1=[B1|_] -> + setarg(4,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(4,B1,Y) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',C1), + delete_ht(C1,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',D1), + delete_ht(D1,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',E1), + delete_ht(E1,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',F1), + delete_ht(F1,k(A,B,C),D) + ) + ), + spawns_all(A,B) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',X), + lookup_ht(X,F,L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_,_,_), + may_trigger(C), + \+is_passive(F,G), + !, + ( var(D) -> + true + ; + arg(2,D,W), + setarg(2,D,removed), + ( W==not_stored_yet -> + true + ; + arg(4,D,O), + ( var(O) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',P), + P=[_|Q], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',Q), + ( Q=[R|_] -> + setarg(4,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(4,R,O) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',S), + delete_ht(S,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + delete_ht(T,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',U), + delete_ht(U,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',V), + delete_ht(V,k(A,B,C),D) + ) + ), + spawns_all_triggers(A,B) + ) + ; + !, + D=suspension(M,not_stored_yet,t,_,A,B,C), + 'chr gen_id'(M), + spawns___3__1__0__11(H,A,B,C,D) + ). +spawns___3__1__0__11([],B,C,D,A) :- + spawns___3__2(B,C,D,A). +spawns___3__1__0__11([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + E==D, + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',K), + lookup_ht(K,F,I) -> + spawns___3__1__1__11(I,F,G,H,J,B,C,D,A) + ; + spawns___3__1__0__11(J,B,C,D,A) + ). +spawns___3__1__1__11([],_,_,_,A,C,D,E,B) :- + spawns___3__1__0__11(A,C,D,E,B). +spawns___3__1__1__11([J|K],G,H,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,_,I,_), + I==G, + L=t(121,J,A,C), + '$novel_production'(J,L), + '$novel_production'(C,L), + \+may_trigger(F), + \+is_passive(G,H) -> + '$extend_history'(C,L), + arg(2,C,M), + setarg(2,C,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',N), + O=[C|N], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',Q), + insert_ht(Q,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',S), + insert_ht(S,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',T), + insert_ht(T,k(D,E,F),C) + ; + true + ), + spawns_all_triggers(D,E), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__1__1__11(K,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__1__1__11(K,G,H,A,B,D,E,F,C) + ). +spawns___3__1(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,_,A,B,C), + 'chr gen_id'(E), + spawns___3__2(A,B,C,D). +spawns___3__2(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,E), + !, + spawns___3__2__0__12(E,A,B,C,D). +spawns___3__2__0__12([],B,C,D,A) :- + spawns___3__3(B,C,D,A). +spawns___3__2__0__12([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',K), + lookup_ht(K,E,I) -> + spawns___3__2__1__12(I,E,G,H,J,B,C,D,A) + ; + spawns___3__2__0__12(J,B,C,D,A) + ). +spawns___3__2__1__12([],_,_,_,A,C,D,E,B) :- + spawns___3__2__0__12(A,C,D,E,B). +spawns___3__2__1__12([L|M],G,H,A,B,D,E,F,C) :- + ( L=suspension(_,active,_,_,I,J,K), + K==G, + N=t(122,C,A,L), + '$novel_production'(C,N), + '$novel_production'(L,N), + I\==D, + G\==F, + \+is_passive(D,H) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + insert_ht(T,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',U), + insert_ht(U,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',V), + insert_ht(V,k(D,E,F),C) + ; + true + ), + spawns(I,J,F), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__2__1__12(M,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__2__1__12(M,G,H,A,B,D,E,F,C) + ). +spawns___3__2(A,B,C,D) :- + spawns___3__3(A,B,C,D). +spawns___3__3(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',F), + lookup_ht(F,C,E), + !, + spawns___3__3__0__13(E,A,B,C,D). +spawns___3__3__0__13([],B,C,D,A) :- + spawns___3__4(B,C,D,A). +spawns___3__3__0__13([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + E==D, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + lookup_ht(K,F,I) -> + spawns___3__3__1__13(I,F,G,H,J,B,C,D,A) + ; + spawns___3__3__0__13(J,B,C,D,A) + ). +spawns___3__3__1__13([],_,_,_,A,C,D,E,B) :- + spawns___3__3__0__13(A,C,D,E,B). +spawns___3__3__1__13([K|L],G,H,A,B,D,E,F,C) :- + ( K=suspension(_,active,_,_,I,_,J), + I==G, + M=t(122,K,A,C), + '$novel_production'(K,M), + '$novel_production'(C,M), + D\==G, + F\==J, + \+is_passive(G,H) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',R), + insert_ht(R,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',S), + insert_ht(S,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',U), + insert_ht(U,k(D,E,F),C) + ; + true + ), + spawns(D,E,J), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__3__1__13(L,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__3__1__13(L,G,H,A,B,D,E,F,C) + ). +spawns___3__3(A,B,C,D) :- + spawns___3__4(A,B,C,D). +spawns___3__4(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,E), + !, + spawns___3__4__0__14(E,A,B,C,D). +spawns___3__4__0__14([],B,C,D,A) :- + spawns___3__5(B,C,D,A). +spawns___3__4__0__14([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + F==B, + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I) -> + spawns___3__4__1__14(I,E,G,H,J,B,C,D,A) + ; + spawns___3__4__0__14(J,B,C,D,A) + ). +spawns___3__4__1__14([],_,_,_,A,C,D,E,B) :- + spawns___3__4__0__14(A,C,D,E,B). +spawns___3__4__1__14([K|L],G,H,A,B,D,E,F,C) :- + ( K=suspension(_,active,_,_,I,J), + M=t(123,C,A,K), + '$novel_production'(C,M), + '$novel_production'(K,M), + \+is_passive(D,H), + may_trigger(G), + \+may_trigger(F) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',R), + insert_ht(R,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',S), + insert_ht(S,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',U), + insert_ht(U,k(D,E,F),C) + ; + true + ), + spawns(I,J,F), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__4__1__14(L,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__4__1__14(L,G,H,A,B,D,E,F,C) + ). +spawns___3__4(A,B,C,D) :- + spawns___3__5(A,B,C,D). +spawns___3__5(A,B,C,D) :- + arg(2,D,E), + setarg(2,D,active), + ( E==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',F), + G=[D|F], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',G), + ( F=[H|_] -> + setarg(4,H,G) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',I), + insert_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',J), + insert_ht(J,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',K), + insert_ht(K,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',L), + insert_ht(L,k(A,B,C),D) + ; + true + ). +spawns_all(A,B) :- + spawns_all___2__0(A,B,_). +spawns_all___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +spawns_all___2__0(A,body,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',D), + hash_term(k(A,1612897),E), + lookup_ht1(D,E,k(A,guard),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +spawns_all___2__0(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__0__0__4(C,A,guard,B). +spawns_all___2__0__0__4([],B,C,A) :- + spawns_all___2__1(B,C,A). +spawns_all___2__0__0__4([F|G],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=body -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',H), + delete_ht(H,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',I), + delete_ht(I,k(A,body),F), + spawns_all___2__0__0__4(G,A,B,C) + ; + spawns_all___2__0__0__4(G,A,B,C) + ). +spawns_all___2__0(A,B,C) :- + spawns_all___2__1(A,B,C). +spawns_all___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all___2__1__0__5(D,A,B,C). +spawns_all___2__1__0__5([],B,C,A) :- + spawns_all___2__2(B,C,A). +spawns_all___2__1__0__5([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E==B -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,B),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,B,F),G), + spawns_all___2__1__0__5(H,A,B,C) + ; + spawns_all___2__1__0__5(H,A,B,C) + ). +spawns_all___2__1(A,B,C) :- + spawns_all___2__2(A,B,C). +spawns_all___2__2(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__2__0__6(C,A,guard,B). +spawns_all___2__2__0__6([],B,C,A) :- + spawns_all___2__3(B,C,A). +spawns_all___2__2__0__6([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E=body -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,body),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,body,F),G), + spawns_all___2__2__0__6(H,A,B,C) + ; + spawns_all___2__2__0__6(H,A,B,C) + ). +spawns_all___2__2(A,B,C) :- + spawns_all___2__3(A,B,C). +spawns_all___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all___2__3__0__7(D,A,B,C). +spawns_all___2__3__0__7([],B,C,A) :- + spawns_all___2__4(B,C,A). +spawns_all___2__3__0__7([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E==B -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,B),F), + spawns_all___2__3__0__7(G,A,B,C) + ; + spawns_all___2__3__0__7(G,A,B,C) + ). +spawns_all___2__3(A,B,C) :- + spawns_all___2__4(A,B,C). +spawns_all___2__4(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__4__0__8(C,A,guard,B). +spawns_all___2__4__0__8([],B,C,A) :- + spawns_all___2__5(B,C,A). +spawns_all___2__4__0__8([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E=body -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,body),F), + spawns_all___2__4__0__8(G,A,B,C) + ; + spawns_all___2__4__0__8(G,A,B,C) + ). +spawns_all___2__4(A,B,C) :- + spawns_all___2__5(A,B,C). +spawns_all___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + spawns_all___2__5__0__9(D,A,B,C). +spawns_all___2__5__0__9([],B,C,A) :- + spawns_all___2__6(B,C,A). +spawns_all___2__5__0__9([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all___2__5__1__9(H,D,F,G,I,B,C,A) + ; + spawns_all___2__5__0__9(I,B,C,A) + ). +spawns_all___2__5__1__9([],_,_,_,A,C,D,B) :- + spawns_all___2__5__0__9(A,C,D,B). +spawns_all___2__5__1__9([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,_,H,I,J), + J==E, + \+is_passive(B,F) -> + setarg(2,K,removed), + arg(4,K,P), + ( var(P) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',Q), + Q=[_|R], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',T), + delete_ht(T,k(H,I),K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',U), + delete_ht(U,H,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',V), + delete_ht(V,E,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',W), + delete_ht(W,k(H,I,E),K), + arg(2,D,M), + setarg(2,D,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',N), + insert_ht(N,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',O), + insert_ht(O,k(B,C),D) + ; + true + ), + spawns_all(H,I), + ( D=suspension(_,active,_,_) -> + setarg(2,D,inactive), + spawns_all___2__5__1__9(L,E,F,A,G,B,C,D) + ; + true + ) + ; + spawns_all___2__5__1__9(L,E,F,A,G,B,C,D) + ). +spawns_all___2__5(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + spawns_all___2__6(A,B,C). +spawns_all___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + spawns_all___2__6__0__10(D,A,B,C). +spawns_all___2__6__0__10([],B,C,A) :- + spawns_all___2__7(B,C,A). +spawns_all___2__6__0__10([G|H],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + \+ \+spawns_all_triggers_implies_spawns_all, + \+is_passive(B,F), + may_trigger(D) -> + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',J), + insert_ht(J,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',K), + insert_ht(K,k(B,C),A) + ; + true + ), + spawns_all_triggers_implies_spawns_all, + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + spawns_all___2__6__0__10(H,B,C,A) + ; + true + ) + ; + spawns_all___2__6__0__10(H,B,C,A) + ). +spawns_all___2__6(A,B,C) :- + spawns_all___2__7(A,B,C). +spawns_all___2__7(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',F), + insert_ht(F,k(A,B),C) + ; + true + ). +spawns_all_triggers(A,B) :- + spawns_all_triggers___2__0(A,B,_). +spawns_all_triggers___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_,_), + !. +spawns_all_triggers___2__0(A,body,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1612897),E), + lookup_ht1(D,E,k(A,guard),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_,_,_), + !. +spawns_all_triggers___2__0(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all_triggers___2__0__0__4(C,A,guard,B). +spawns_all_triggers___2__0__0__4([],B,C,A) :- + spawns_all_triggers___2__1(B,C,A). +spawns_all_triggers___2__0__0__4([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E=body -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,body),F), + spawns_all_triggers___2__0__0__4(G,A,B,C) + ; + spawns_all_triggers___2__0__0__4(G,A,B,C) + ). +spawns_all_triggers___2__0(A,B,C) :- + spawns_all_triggers___2__1(A,B,C). +spawns_all_triggers___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',M), + lookup_ht(M,k(A,B),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_), + !, + ( var(C) -> + true + ; + arg(2,C,L), + setarg(2,C,removed), + ( L==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',J), + delete_ht(J,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',K), + delete_ht(K,k(A,B),C) + ) + ). +spawns_all_triggers___2__1(A,body,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',L), + hash_term(k(A,1612897),M), + lookup_ht1(L,M,k(A,guard),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !, + ( var(B) -> + true + ; + arg(2,B,K), + setarg(2,B,removed), + ( K==not_stored_yet -> + true + ; + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',I), + delete_ht(I,A,B), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',J), + delete_ht(J,k(A,body),B) + ) + ). +spawns_all_triggers___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all_triggers___2__1__0__7(D,A,B,C). +spawns_all_triggers___2__1__0__7([],B,C,A) :- + spawns_all_triggers___2__2(B,C,A). +spawns_all_triggers___2__1__0__7([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E==B, + may_trigger(F) -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,B),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,B,F),G), + spawns_all_triggers___2__1__0__7(H,A,B,C) + ; + spawns_all_triggers___2__1__0__7(H,A,B,C) + ). +spawns_all_triggers___2__1(A,B,C) :- + spawns_all_triggers___2__2(A,B,C). +spawns_all_triggers___2__2(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all_triggers___2__2__0__8(C,A,guard,B). +spawns_all_triggers___2__2__0__8([],B,C,A) :- + spawns_all_triggers___2__3(B,C,A). +spawns_all_triggers___2__2__0__8([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E=body, + may_trigger(F) -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,body),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,body,F),G), + spawns_all_triggers___2__2__0__8(H,A,B,C) + ; + spawns_all_triggers___2__2__0__8(H,A,B,C) + ). +spawns_all_triggers___2__2(A,B,C) :- + spawns_all_triggers___2__3(A,B,C). +spawns_all_triggers___2__3(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_), + !, + ( var(C) -> + true + ; + arg(2,C,L), + setarg(2,C,removed), + ( L==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',J), + delete_ht(J,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',K), + delete_ht(K,k(A,B),C) + ) + ), + spawns_all(A,B). +spawns_all_triggers___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), + !, + C=suspension(E,not_stored_yet,t,_,A,B), + 'chr gen_id'(E), + spawns_all_triggers___2__3__0__10(D,A,B,C). +spawns_all_triggers___2__3__0__10([],B,C,A) :- + spawns_all_triggers___2__4(B,C,A). +spawns_all_triggers___2__3__0__10([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all_triggers___2__3__1__10(H,D,F,G,I,B,C,A) + ; + spawns_all_triggers___2__3__0__10(I,B,C,A) + ). +spawns_all_triggers___2__3__1__10([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__3__0__10(A,C,D,B). +spawns_all_triggers___2__3__1__10([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,_,H,I,J), + J==E, + may_trigger(E), + \+is_passive(B,F) -> + setarg(2,K,removed), + arg(4,K,S), + ( var(S) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',T), + T=[_|U], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',W), + delete_ht(W,k(H,I),K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',X), + delete_ht(X,H,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',Y), + delete_ht(Y,E,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',Z), + delete_ht(Z,k(H,I,E),K), + arg(2,D,M), + setarg(2,D,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',N), + O=[D|N], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',Q), + insert_ht(Q,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',R), + insert_ht(R,k(B,C),D) + ; + true + ), + spawns_all_triggers(H,I), + ( D=suspension(_,active,_,_,_,_) -> + setarg(2,D,inactive), + spawns_all_triggers___2__3__1__10(L,E,F,A,G,B,C,D) + ; + true + ) + ; + spawns_all_triggers___2__3__1__10(L,E,F,A,G,B,C,D) + ). +spawns_all_triggers___2__3(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + spawns_all_triggers___2__4(A,B,C). +spawns_all_triggers___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + spawns_all_triggers___2__4__0__11(D,A,B,C). +spawns_all_triggers___2__4__0__11([],B,C,A) :- + spawns_all_triggers___2__5(B,C,A). +spawns_all_triggers___2__4__0__11([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all_triggers___2__4__1__11(H,D,F,G,I,B,C,A) + ; + spawns_all_triggers___2__4__0__11(I,B,C,A) + ). +spawns_all_triggers___2__4__1__11([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__4__0__11(A,C,D,B). +spawns_all_triggers___2__4__1__11([K|L],F,G,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,H,I,J), + J==F, + M=t(121,C,A,K), + '$novel_production'(C,M), + '$novel_production'(K,M), + \+may_trigger(F), + \+is_passive(D,G) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',S), + insert_ht(S,k(D,E),C) + ; + true + ), + spawns_all_triggers(H,I), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + spawns_all_triggers___2__4__1__11(L,F,G,A,B,D,E,C) + ; + true + ) + ; + spawns_all_triggers___2__4__1__11(L,F,G,A,B,D,E,C) + ). +spawns_all_triggers___2__4(A,B,C) :- + spawns_all_triggers___2__5(A,B,C). +spawns_all_triggers___2__5(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',D), + !, + spawns_all_triggers___2__5__0__12(D,A,B,C). +spawns_all_triggers___2__5__0__12([],B,C,A) :- + spawns_all_triggers___2__6(B,C,A). +spawns_all_triggers___2__5__0__12([F|H],B,C,A) :- + ( F=suspension(_,active,_,_,D,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',I), + lookup_ht1(I,D,D,G) -> + spawns_all_triggers___2__5__1__12(G,D,E,F,H,B,C,A) + ; + spawns_all_triggers___2__5__0__12(H,B,C,A) + ). +spawns_all_triggers___2__5__1__12([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__5__0__12(A,C,D,B). +spawns_all_triggers___2__5__1__12([K|L],F,G,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,H,_,I,J,_), + I==F, + M=t(123,A,K,C), + '$novel_production'(A,M), + '$novel_production'(C,M), + \+is_passive(F,J), + may_trigger(H), + \+may_trigger(G) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',S), + insert_ht(S,k(D,E),C) + ; + true + ), + spawns(D,E,G), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + spawns_all_triggers___2__5__1__12(L,F,G,A,B,D,E,C) + ; + true + ) + ; + spawns_all_triggers___2__5__1__12(L,F,G,A,B,D,E,C) + ). +spawns_all_triggers___2__5(A,B,C) :- + spawns_all_triggers___2__6(A,B,C). +spawns_all_triggers___2__6(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',F), + ( E=[G|_] -> + setarg(4,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',H), + insert_ht(H,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',I), + insert_ht(I,k(A,B),C) + ; + true + ). +spawns_all_triggers_implies_spawns_all :- + spawns_all_triggers_implies_spawns_all___0__0(_). +spawns_all_triggers_implies_spawns_all___0__0(_) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !, + setarg(2,A,removed), + arg(3,A,C), + ( var(C) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',D), + D=[_|E], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',E), + ( E=[F|_] -> + setarg(3,F,_) + ; + true + ) + ; + C=[_,_|E], + setarg(2,C,E), + ( E=[F|_] -> + setarg(3,F,C) + ; + true + ) + ), + fail. +spawns_all_triggers_implies_spawns_all___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + spawns_all_triggers_implies_spawns_all___0__0__0__3(B,A). +spawns_all_triggers_implies_spawns_all___0__0__0__3([],A) :- + spawns_all_triggers_implies_spawns_all___0__1(A). +spawns_all_triggers_implies_spawns_all___0__0__0__3([D|E],A) :- + ( D=suspension(_,active,_,_,B,C) -> + setarg(2,D,removed), + arg(4,D,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',N), + delete_ht(N,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',O), + delete_ht(O,k(B,C),D), + arg(2,A,F), + setarg(2,A,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',G), + H=[A|G], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',H), + ( G=[I|_] -> + setarg(3,I,H) + ; + true + ) + ; + true + ), + spawns_all(B,C), + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + spawns_all_triggers_implies_spawns_all___0__0__0__3(E,A) + ; + true + ) + ; + spawns_all_triggers_implies_spawns_all___0__0__0__3(E,A) + ). +spawns_all_triggers_implies_spawns_all___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + spawns_all_triggers_implies_spawns_all___0__1(A). +spawns_all_triggers_implies_spawns_all___0__1(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ) + ; + true + ). +all_spawned(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',G), + ( + hash_term(k(A,1612897),H), + lookup_ht1(G,H,k(A,guard),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! + ; + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + ! + ). +all_spawned(_,_) :- + fail. +is_observed(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,_,E,_,_), + !, + do_is_observed(A,E,C). +is_observed(_,_,_) :- + fail. +do_is_observed(A,B,C) :- + var(C), + !, + do_is_observed(A,B). +do_is_observed(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + lookup_ht(S,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,_,E,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + lookup_ht1(R,E,E,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,H,_,_,I,_), + G\==D, + ground(C), + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',U), + lookup_ht(U,k(B,C),L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_), + \+is_passive(E,I), + ! + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',T), + lookup_ht(T,k(B,C,H),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_,_,_), + \+is_passive(E,I), + ! + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',Q), + lookup_ht(Q,k(B,C),P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+is_passive(E,I), + may_trigger(H), + ! + ). +do_is_observed(_,_,_) :- + chr_pp_flag(observation_analysis,off). +do_is_observed(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + lookup_ht(S,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,_,D,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + lookup_ht1(R,D,D,I), + 'chr sbag_member'(F,I), + F=suspension(_,active,_,_,G,_,_,H,_), + F\==C, + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',U), + lookup_ht(U,B,K), + 'chr sbag_member'(J,K), + J=suspension(_,active,_,_), + \+is_passive(D,H), + ! + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + lookup_ht(T,B,N), + 'chr sbag_member'(L,N), + L=suspension(_,active,_,_,_,_,M), + M=G, + \+is_passive(D,H), + ! + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',Q), + lookup_ht(Q,B,P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+is_passive(D,H), + may_trigger(G), + ! + ). +do_is_observed(_,_) :- + chr_pp_flag(observation_analysis,off). +generate_indexed_variables_body(D/E,A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',N), + lookup_ht(N,D/E,H), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,_,_,G), + !, + get_indexing_spec(D/E,I), + ( chr_pp_flag(term_indexing,on) -> + spectermvars(I,A,D,E,B,C) + ; + get_constraint_type_det(D/E,J), + create_indexed_variables_body(A,G,J,C,1,D/E,K,L), + ( K==empty -> + B=true, + C=[] + ; + ( L==0 -> + ( A=[M] -> + true + ; + M=..[term|A] + ), + B=term_variables(M,C) + ) + ; + K=B + ) + ). +generate_indexed_variables_body(A,_,_,_) :- + chr_error(internal,'generate_indexed_variables_body: missing mode info for ~w. +',[A]). +empty_named_history_initialisations(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +generate_empty_named_history_initialisation(A) :- + generate_empty_named_history_initialisation___1__0(A,_). +generate_empty_named_history_initialisation___1__0(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,chr_translate,G), + G=v(_,E,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',J), + J=[_|K], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + detach_generate_empty_named_history_initialisation___1(H,B) + ) + ). +generate_empty_named_history_initialisation___1__0(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',C), + !, + ( var(B) -> + B=suspension(D,not_stored_yet,0,_,A), + 'chr gen_id'(D) + ; + true + ), + generate_empty_named_history_initialisation___1__0__0__3(C,A,B). +generate_empty_named_history_initialisation___1__0__0__3([],B,A) :- + generate_empty_named_history_initialisation___1__1(B,A). +generate_empty_named_history_initialisation___1__0__0__3([E|F],A,B) :- + ( E=suspension(_,active,_,C,D) -> + setarg(2,E,removed), + arg(3,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',R), + R=[_|S], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',S), + ( S=[T|_] -> + setarg(3,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(3,T,Q) + ; + true + ) + ), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',N), + O=[B|N], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + attach_generate_empty_named_history_initialisation___1(I,B) + ; + true + ), + empty_named_history_global_variable(A,G), + C=[(:-nb_setval(G,0))|H], + empty_named_history_initialisations(H,D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + generate_empty_named_history_initialisation___1__0__0__3(F,A,B) + ; + true + ) + ; + generate_empty_named_history_initialisation___1__0__0__3(F,A,B) + ). +generate_empty_named_history_initialisation___1__0(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + generate_empty_named_history_initialisation___1__1(A,B). +generate_empty_named_history_initialisation___1__1(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',G), + H=[A|G], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + attach_generate_empty_named_history_initialisation___1(B,A) + ; + true + ). +find_empty_named_histories :- + find_empty_named_histories___0__0(_). +find_empty_named_histories___0__0(A) :- + nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + find_empty_named_histories___0__0__0__1(B,A). +find_empty_named_histories___0__0__0__1([],A) :- + find_empty_named_histories___0__1(A). +find_empty_named_histories___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,B,C), + C=[], + F=t(140,A,D), + '$novel_production'(A,F), + '$novel_production'(D,F) -> + '$extend_history'(A,F), + arg(2,A,G), + setarg(2,A,active), + ( G==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',H), + I=[A|H], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ) + ; + true + ), + generate_empty_named_history_initialisation(B), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + find_empty_named_histories___0__0__0__1(E,A) + ; + true + ) + ; + find_empty_named_histories___0__0__0__1(E,A) + ). +find_empty_named_histories___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + find_empty_named_histories___0__1(A). +find_empty_named_histories___0__1(A) :- + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',B), + !, + find_empty_named_histories___0__1__0__2(B,A). +find_empty_named_histories___0__1__0__2([],A) :- + find_empty_named_histories___0__2(A). +find_empty_named_histories___0__1__0__2([B|C],A) :- + ( B=suspension(_,active,_,_,_) -> + B=suspension(_,_,_,_,I), + setarg(2,B,removed), + term_variables(I,D), + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + detach_generate_empty_named_history_initialisation___1(D,B), + find_empty_named_histories___0__1__0__2(C,A) + ; + find_empty_named_histories___0__1__0__2(C,A) + ). +find_empty_named_histories___0__1(A) :- + find_empty_named_histories___0__2(A). +find_empty_named_histories___0__2(A) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,C,D), + !, + setarg(2,B,removed), + arg(3,B,K), + ( var(K) -> + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',L), + L=[_|M], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + ( var(A) -> + true + ; + arg(2,A,J), + setarg(2,A,removed), + ( J==not_stored_yet -> + true + ; + arg(4,A,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ) + ) + ), + C=D. +find_empty_named_histories___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) + ) + ), + chr_error(internal,'find_empty_named_histories was not removed',[]). +module_initializer(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +module_initializers(A) :- + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + A=(C,E), + module_initializers(E). +module_initializers(true). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',Q), + lookup_ht(Q,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',P), + lookup_ht(P,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',O), + delete_ht(O,A,D), + delete(E,multi_hash([B]),I), + B=[J], + ( get_constraint_arg_type(A,J,K), + enumerated_atomic_type(K,L) -> + M=L, + N=complete + ; + M=C, + N=incomplete + ), + actual_store_types(A,[atomic_constants(B,M,N)|I]). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_atomic_multi_hash_keys(A,B,H). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(E,C,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_atomic_multi_hash_keys(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_atomic_multi_hash_keys(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',F), + insert_ht(F,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',G), + insert_ht(G,A,D). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',Q), + lookup_ht(Q,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',P), + lookup_ht(P,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',O), + delete_ht(O,A,D), + ( B=[I], + get_constraint_arg_type(A,I,J), + ( is_chr_constants_type(J,K,_) -> + get_chr_constants(K,L) + ; + ( J=chr_enum(L) -> + true + ) + ) -> + M=complete + ; + L=C, + M=incomplete + ), + delete(E,multi_hash([B]),N), + actual_store_types(A,[ground_constants(B,L,M)|N]). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_ground_multi_hash_keys(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_ground_multi_hash_keys(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',F), + insert_ht(F,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',G), + insert_ht(G,A,D). +actual_non_ground_multi_hash_key(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_non_ground_multi_hash_key(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',D), + lookup_ht(D,k(A,B),C), + !, + actual_non_ground_multi_hash_key___2__0__0__3(C,A,B). +actual_non_ground_multi_hash_key___2__0__0__3([],A,B) :- + actual_non_ground_multi_hash_key___2__1(A,B). +actual_non_ground_multi_hash_key___2__0__0__3([E|F],A,B) :- + ( E=suspension(_,active,C,D,_), + C==A, + D==B -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',G), + delete_ht(G,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',H), + delete_ht(H,A,E), + actual_non_ground_multi_hash_key___2__0__0__3(F,A,B) + ; + actual_non_ground_multi_hash_key___2__0__0__3(F,A,B) + ). +actual_non_ground_multi_hash_key(A,B) :- + actual_non_ground_multi_hash_key___2__1(A,B). +actual_non_ground_multi_hash_key___2__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',D), + lookup_ht(D,k(A,B),C), + !, + actual_non_ground_multi_hash_key___2__1__0__4(C,A,B). +actual_non_ground_multi_hash_key___2__1__0__4([],A,B) :- + actual_non_ground_multi_hash_key___2__2(A,B). +actual_non_ground_multi_hash_key___2__1__0__4([E|F],A,B) :- + ( E=suspension(_,active,C,D,_), + C==A, + D==B -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',G), + delete_ht(G,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',H), + delete_ht(H,A,E), + actual_non_ground_multi_hash_key___2__1__0__4(F,A,B) + ; + actual_non_ground_multi_hash_key___2__1__0__4(F,A,B) + ). +actual_non_ground_multi_hash_key___2__1(A,B) :- + actual_non_ground_multi_hash_key___2__2(A,B). +actual_non_ground_multi_hash_key___2__2(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + insert_ht(E,k(A,B),C). +prolog_global_variable(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +prolog_global_variable(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',G), + insert_ht(G,A,B). +prolog_global_variables(A) :- + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',J), + delete_ht(J,C,B), + A=[C|E], + prolog_global_variables(E). +prolog_global_variables([]). +background_info(A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____background_info___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + background_info(E). +background_info(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____background_info___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +background_info(A,B) :- + background_info___2__0(A,B,_). +background_info___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + background_info___2__0__0__1(D,A,B,C). +background_info___2__0__0__1([],B,C,A) :- + background_info___2__1(B,C,A). +background_info___2__0__0__1([E|F],B,C,A) :- + ( E=suspension(_,active,_,_,_,D,_), + K=t(160,A,E), + '$novel_production'(A,K), + '$novel_production'(E,K), + copy_term_nat(B,G), + subsumes_chk(G,D) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,_), + term_variables(N,I), + nb_getval('$chr_store_global_list_chr_translate____background_info___2',O), + P=[A|O], + b_setval('$chr_store_global_list_chr_translate____background_info___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + attach_background_info___2(I,A) + ; + true + ), + copy_term_nat(B-C,D-H), + get_bg_info_answer([H]), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + background_info___2__0__0__1(F,B,C,A) + ; + true + ) + ; + background_info___2__0__0__1(F,B,C,A) + ). +background_info___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + background_info___2__1(A,B,C). +background_info___2__1(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,_), + term_variables(F,B), + nb_getval('$chr_store_global_list_chr_translate____background_info___2',G), + H=[A|G], + b_setval('$chr_store_global_list_chr_translate____background_info___2',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + attach_background_info___2(B,A) + ; + true + ). +get_bg_info(A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_bg_info([]). +get_bg_info(A,B) :- + get_bg_info___2__0(A,B,_). +get_bg_info___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____background_info___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + get_bg_info___2__0__0__1(D,A,B,C). +get_bg_info___2__0__0__1([],B,C,A) :- + get_bg_info___2__1(B,C,A). +get_bg_info___2__0__0__1([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + L=t(160,F,A), + '$novel_production'(F,L), + '$novel_production'(A,L), + copy_term_nat(D,H), + subsumes_chk(H,B) -> + '$extend_history'(A,L), + arg(2,A,N), + setarg(2,A,active), + arg(4,A,M), + K is M+1, + setarg(4,A,K), + ( N==not_stored_yet -> + A=suspension(_,_,_,_,_,O,_), + term_variables(O,J), + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_get_bg_info___2(J,A) + ; + true + ), + copy_term_nat(D-E,B-I), + get_bg_info_answer([I]), + ( A=suspension(_,active,_,K,_,_,_) -> + setarg(2,A,inactive), + get_bg_info___2__0__0__1(G,B,C,A) + ; + true + ) + ; + get_bg_info___2__0__0__1(G,B,C,A) + ). +get_bg_info___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + get_bg_info___2__1(A,B,C). +get_bg_info___2__1(_,A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + setarg(2,C,removed), + arg(3,C,M), + ( var(M) -> + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',N), + N=[_|O], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + ( var(B) -> + true + ; + B=suspension(_,K,_,_,_,L,_), + setarg(2,B,removed), + ( K==not_stored_yet -> + F=[] + ; + term_variables(L,F), + arg(5,B,G), + ( var(G) -> + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',H), + H=[_|I], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',I), + ( I=[J|_] -> + setarg(5,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(5,J,G) + ; + true + ) + ), + detach_get_bg_info___2(F,B) + ) + ), + A=D. +get_bg_info___2__1(_,A,B) :- + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I,_), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + detach_get_bg_info___2(C,B) + ) + ), + A=[]. +get_bg_info_answer(A) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + get_bg_info_answer(E). +get_bg_info_answer(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +prev_guard_list(A,B,C,D,E,F,G,H) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + lookup_ht1(B1,B,B,K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,J), + J=pragma(rule(L,M,N,_),_,_,_,_), + L\==[], + make_head_matchings_explicit(B,O,P), + setof(Q,chr_translate:head_subset(O,D,Q),R), + !, + append(L,M,S), + compute_derived_info(R,P,O,S,N,G,D,H,T,U), + append(F,T,V), + normalize_conj_list(V,W), + append(U,H,X), + normalize_conj_list(X,Y), + next_prev_rule(C,Z,A1), + prev_guard_list(A,Z,A1,D,E,W,G,Y). +prev_guard_list(A,B,C,D,E,F,G,H) :- + ( B>0 -> + next_prev_rule(C,I,J), + prev_guard_list(A,I,J,D,E,F,G,H) + ; + prev_guard_list(A,D,E,F,G,H) + ). +prev_guard_list(A,B,C,D,E,F) :- + prev_guard_list___6__0(A,B,C,D,E,F,_). +prev_guard_list___6__0(A,B,C,D,E,F,_) :- + F\==[], + !, + head_types_modes_condition(F,B,G), + conj2list(G,H), + term_variables(B,I), + append([chr_pp_headvariables(I)|H],D,J), + normalize_conj_list(J,K), + append(B,K,L), + add_background_info([C|L],M), + append(K,M,N), + normalize_conj_list(N,O), + prev_guard_list(A,B,C,O,E,[]). +prev_guard_list___6__0(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',W), + lookup_ht1(W,A,A,J), + ( + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + I=pragma(rule(N,O,C,P),K,L,M,A), + C\==true, + append(E,D,Q), + ( conj2list(C,R), + append(Q,R,S), + guard_entailment:entails_guard(S,fail) -> + T=fail + ; + simplify_guard(C,P,Q,T,U) + ), + C\==T, + !, + setarg(2,H,removed), + arg(4,H,X), + ( var(X) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_ground_chr_translate____rule___2',Z), + ( Z=[A1|_] -> + setarg(4,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(4,A1,X) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + delete_ht(B1,A,H), + rule(A,pragma(rule(N,O,T,U),K,L,M,A)), + prev_guard_list(A,B,T,D,E,[]) + ; + !, + G=suspension(V,not_stored_yet,t,_,A,B,C,D,E,F), + 'chr gen_id'(V), + prev_guard_list___6__0__0__3(J,A,B,C,D,E,F,G) + ). +prev_guard_list___6__0__0__3([],B,C,D,E,F,G,A) :- + prev_guard_list___6__1(B,C,D,E,F,G,A). +prev_guard_list___6__0__0__3([J|K],B,C,D,E,F,G,A) :- + ( J=suspension(_,active,_,_,H,I), + H==B, + O=t(174,A,J), + '$novel_production'(A,O), + '$novel_production'(J,O), + chr_pp_flag(check_impossible_rules,on), + I=pragma(rule(_,_,D,_),_,_,_,B), + conj2list(D,L), + append(F,E,M), + append(M,L,N), + guard_entailment:entails_guard(N,fail) -> + '$extend_history'(A,O), + arg(2,A,P), + setarg(2,A,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Q), + R=[A|Q], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',T), + insert_ht(T,B,A) + ; + true + ), + chr_warning(weird_program,'Heads will never match or guard will always fail in ~@. + This rule will never fire! +',[format_rule(I)]), + set_all_passive(B), + ( A=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + prev_guard_list___6__0__0__3(K,B,C,D,E,F,G,A) + ; + true + ) + ; + prev_guard_list___6__0__0__3(K,B,C,D,E,F,G,A) + ). +prev_guard_list___6__0(A,B,C,D,E,F,G) :- + G=suspension(H,not_stored_yet,t,_,A,B,C,D,E,F), + 'chr gen_id'(H), + prev_guard_list___6__1(A,B,C,D,E,F,G). +prev_guard_list___6__1(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,A,A,H), + !, + prev_guard_list___6__1__0__4(H,A,B,C,D,E,F,G). +prev_guard_list___6__1__0__4([],B,C,D,E,F,G,A) :- + prev_guard_list___6__2(B,C,D,E,F,G,A). +prev_guard_list___6__1__0__4([J|K],A,B,C,D,E,F,G) :- + ( J=suspension(_,active,_,_,H,I), + H==A, + I=pragma(rule(O,P,C,Q),L,M,N,A), + simplify_heads(E,D,C,Q,R,S), + R\==[], + extract_arguments(O,T), + extract_arguments(P,U), + extract_arguments(B,V), + replace_some_heads(T,U,V,R,W,X,C,Q,Y), + substitute_arguments(O,W,Z), + substitute_arguments(P,X,A1), + append(S,Y,B1), + list2conj(B1,C1), + D1=pragma(rule(Z,A1,C,(C1,Q)),L,M,N,A), + ( + O\==Z + ; + P\==A1 + ) -> + setarg(2,J,removed), + arg(4,J,J1), + ( var(J1) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',K1), + K1=[_|L1], + b_setval('$chr_store_global_ground_chr_translate____rule___2',L1), + ( L1=[M1|_] -> + setarg(4,M1,_) + ; + true + ) + ; + J1=[_,_|L1], + setarg(2,J1,L1), + ( L1=[M1|_] -> + setarg(4,M1,J1) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N1), + delete_ht(N1,A,J), + arg(2,G,E1), + setarg(2,G,active), + ( E1==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',F1), + G1=[G|F1], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',G1), + ( F1=[H1|_] -> + setarg(4,H1,G1) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I1), + insert_ht(I1,A,G) + ; + true + ), + rule(A,D1), + ( G=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,G,inactive), + prev_guard_list___6__1__0__4(K,A,B,C,D,E,F,G) + ; + true + ) + ; + prev_guard_list___6__1__0__4(K,A,B,C,D,E,F,G) + ). +prev_guard_list___6__1(A,B,C,D,E,F,G) :- + prev_guard_list___6__2(A,B,C,D,E,F,G). +prev_guard_list___6__2(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,A,A,H), + !, + prev_guard_list___6__2__0__5(H,A,B,C,D,E,F,G). +prev_guard_list___6__2__0__5([],B,C,D,E,F,G,A) :- + prev_guard_list___6__3(B,C,D,E,F,G,A). +prev_guard_list___6__2__0__5([J|L],B,C,D,E,F,G,A) :- + ( J=suspension(_,active,_,_,H,I), + H==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',M), + lookup_ht1(M,B,B,K) -> + prev_guard_list___6__2__1__5(K,I,J,L,B,C,D,E,F,G,A) + ; + prev_guard_list___6__2__0__5(L,B,C,D,E,F,G,A) + ). +prev_guard_list___6__2__1__5([],_,_,A,C,D,E,F,G,H,B) :- + prev_guard_list___6__2__0__5(A,C,D,E,F,G,H,B). +prev_guard_list___6__2__1__5([N|P],J,A,B,D,E,F,G,H,I,C) :- + ( N=suspension(_,active,_,_,K,L,M,_,_), + M==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Q), + lookup_ht(Q,K,O) -> + prev_guard_list___6__2__2__5(O,K,L,N,P,J,A,B,D,E,F,G,H,I,C) + ; + prev_guard_list___6__2__1__5(P,J,A,B,D,E,F,G,H,I,C) + ). +prev_guard_list___6__2__2__5([],_,_,_,A,K,B,C,E,F,G,H,I,J,D) :- + prev_guard_list___6__2__1__5(A,K,B,C,E,F,G,H,I,J,D). +prev_guard_list___6__2__2__5([S|U],M,N,A,B,L,C,D,F,G,H,I,J,K,E) :- + ( S=suspension(_,active,_,_,O,P,Q,R,_), + S\==A, + O==M, + Q==F, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',T) -> + prev_guard_list___6__2__3__5(T,P,R,S,U,M,N,A,B,L,C,D,F,G,H,I,J,K,E) + ; + prev_guard_list___6__2__2__5(U,M,N,A,B,L,C,D,F,G,H,I,J,K,E) + ). +prev_guard_list___6__2__3__5([],_,_,_,A,N,O,B,C,M,D,E,G,H,I,J,K,L,F) :- + prev_guard_list___6__2__2__5(A,N,O,B,C,M,D,E,G,H,I,J,K,L,F). +prev_guard_list___6__2__3__5([T|U],P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) :- + ( T=suspension(_,active,_,S), + P + setarg(2,T,removed), + arg(3,T,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + arg(2,J,X), + setarg(2,J,active), + ( X==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Y), + Z=[J|Y], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Z), + ( Y=[A1|_] -> + setarg(4,A1,Z) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',B1), + insert_ht(B1,D,J) + ; + true + ), + first_occ_in_rule(D,M,P,Q), + tree_set_add(S,M,W), + multiple_occ_constraints_checked(W), + ( J=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,J,inactive), + prev_guard_list___6__2__3__5(U,P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) + ; + true + ) + ; + prev_guard_list___6__2__3__5(U,P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) + ). +prev_guard_list___6__2(A,B,C,D,E,F,G) :- + prev_guard_list___6__3(A,B,C,D,E,F,G). +prev_guard_list___6__3(A,_,_,_,_,_,B) :- + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !, + setarg(2,C,removed), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',L), + L=[_|M], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + ( var(B) -> + true + ; + arg(2,B,J), + setarg(2,B,removed), + ( J==not_stored_yet -> + true + ; + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I), + delete_ht(I,A,B) + ) + ). +prev_guard_list___6__3(A,_,_,_,_,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',E), + ( D=[F|_] -> + setarg(4,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',G), + insert_ht(G,A,B) + ; + true + ). +simplify_guards(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Z), + lookup_ht1(Z,A,A,D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + !, + C=pragma(rule(E,F,G,_),ids(H,I),_,_,A), + append(E,F,J), + make_head_matchings_explicit_not_negated(J,K,L), + tree_set_empty(M), + multiple_occ_constraints_checked(M), + apply_guard_wrt_term(J,G,N), + append(H,I,O), + findall(tuple(Q,R,A)-(-A),(member(S,O),get_occurrence_from_id(Q,R,A,S)),P), + empty_q(T), + insert_list_q(P,T,U), + next_prev_rule(U,_,V), + next_prev_rule(V,W,X), + prev_guard_list(A,W,X,K,G,[],L,[N]), + Y is A+1, + simplify_guards(Y). +simplify_guards(_). +set_all_passive(A) :- + set_all_passive___1__0(A,_). +set_all_passive___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,C), + !, + B=suspension(D,not_stored_yet,t,A), + 'chr gen_id'(D), + set_all_passive___1__0__0__1(C,A,B). +set_all_passive___1__0__0__1([],B,A) :- + set_all_passive___1__1(B,A). +set_all_passive___1__0__0__1([E|F],B,A) :- + ( E=suspension(_,active,_,_,_,_,C,D,_), + C==B, + G=t(176,A,E), + '$novel_production'(A,G), + '$novel_production'(E,G) -> + '$extend_history'(A,G), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',I), + insert_ht(I,B,A) + ; + true + ), + passive(B,D), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + set_all_passive___1__0__0__1(F,B,A) + ; + true + ) + ; + set_all_passive___1__0__0__1(F,B,A) + ). +set_all_passive___1__0(A,B) :- + B=suspension(C,not_stored_yet,t,A), + 'chr gen_id'(C), + set_all_passive___1__1(A,B). +set_all_passive___1__1(A,B) :- + ( var(B) -> + true + ; + arg(2,B,D), + setarg(2,B,removed), + ( D==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',C), + delete_ht(C,A,B) + ) + ). +precompute_head_matchings :- + precompute_head_matchings___0__0(_). +precompute_head_matchings___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + precompute_head_matchings___0__0__0__1(B,A). +precompute_head_matchings___0__0__0__1([],A) :- + precompute_head_matchings___0__1(A). +precompute_head_matchings___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,B,C), + M=t(170,D,A), + '$novel_production'(D,M), + '$novel_production'(A,M) -> + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ) + ; + true + ), + C=pragma(rule(F,G,_,_),_,_,_,_), + append(F,G,H), + make_head_matchings_explicit_(H,I,J), + copy_term_nat(I-J,K-L), + make_head_matchings_explicit_memo_table(B,K,L), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + precompute_head_matchings___0__0__0__1(E,A) + ; + true + ) + ; + precompute_head_matchings___0__0__0__1(E,A) + ). +precompute_head_matchings___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + precompute_head_matchings___0__1(A). +precompute_head_matchings___0__1(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) + ) + ). +make_head_matchings_explicit_memo_table(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',F), + insert_ht(F,A,D). +make_head_matchings_explicit_memo_lookup(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',H), + lookup_ht(H,A,G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,E,F), + !, + B=E, + C=F. +make_head_matchings_explicit_memo_lookup(_,_,_) :- + fail. +first_occ_in_rule(A,B,C,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',I), + lookup_ht(I,B,H), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,_,E,F,G,_), + F=A, + E + next_occ_in_rule(A,B,Q,S,E,F) + ; + append(X,E,Z), + add_failing_occ(N,W,H,S,A1,F,K,B,B1), + copy_term(J,C1), + variable_replacement(J,C1,D1), + copy_with_variable_replacement(J,E1,Y), + copy_with_variable_replacement(J,F1,B1), + copy_with_variable_replacement(F1,G1,D1), + append(Z,E1,H1), + append(H1,G1,I1), + copy_with_variable_replacement(K,J1,Y), + copy_with_variable_replacement(K,K1,B1), + append(K1,I1,L1), + append([chr_pp_active_constraint(F)|J1],L1,M1), + list2conj(A1,N1), + copy_term((Z,I1,M1,N1,F),(_,_,O1,P1,_)), + ( N1\=chr_pp_void_info -> + ( guard_entailment:entails_guard(O1,P1) -> + passive(A,S) + ; + true + ) + ; + true + ), + !, + next_occ_in_rule(A,B,Q,S,Z,F) + ). +next_occ_in_rule(_,_,_,_,_,_). +multiple_occ_constraints_checked(A) :- + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C,_,_,_,_,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Z), + lookup_ht1(Z,C,C,H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + lookup_ht1(Y,C,C,K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,J), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',X), + lookup_ht(X,F,P), + 'chr sbag_member'(L,P), + L=suspension(_,active,_,_,_,M,N,O,_), + L\==E, + N=C, + M + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',T), + T=[_|U], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',W), + delete_ht(W,C,B) + ). +multiple_occ_constraints_checked(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +type_definition(A,B) :- + type_definition___2__0(A,B,_). +type_definition___2__0(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + ( + functor(A,F,G), + functor(D,F,G), + !, + C=suspension(_,_,_,_,_,L1,M1), + setarg(2,C,removed), + term_variables(term(L1,M1),H), + arg(5,C,H1), + ( var(H1) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',I1), + I1=[_|J1], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',J1), + ( J1=[K1|_] -> + setarg(5,K1,_) + ; + true + ) + ; + H1=[_,_|J1], + setarg(2,H1,J1), + ( J1=[K1|_] -> + setarg(5,K1,H1) + ; + true + ) + ), + detach_type_definition___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,E1,_,_,_,F1,G1), + setarg(2,B,removed), + ( E1==not_stored_yet -> + I=[] + ; + term_variables(term(F1,G1),I), + arg(5,B,A1), + ( var(A1) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',B1), + B1=[_|C1], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',C1), + ( C1=[D1|_] -> + setarg(5,D1,_) + ; + true + ) + ; + A1=[_,_|C1], + setarg(2,A1,C1), + ( C1=[D1|_] -> + setarg(5,D1,A1) + ; + true + ) + ), + detach_type_definition___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type: ~w/~w. +',[F,G]) + ; + functor(D,J,K), + functor(A,J,K), + !, + C=suspension(_,_,_,_,_,Y,Z), + setarg(2,C,removed), + term_variables(term(Y,Z),L), + arg(5,C,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',W), + ( W=[X|_] -> + setarg(5,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(5,X,U) + ; + true + ) + ), + detach_type_definition___2(L,C), + ( var(B) -> + true + ; + B=suspension(_,R,_,_,_,S,T), + setarg(2,B,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T),M), + arg(5,B,N), + ( var(N) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',O), + O=[_|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',P), + ( P=[Q|_] -> + setarg(5,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(5,Q,N) + ; + true + ) + ), + detach_type_definition___2(M,B) + ) + ), + chr_error(type_error,'Multiple definitions for type: ~w/~w. +',[J,K]) + ). +type_definition___2__0(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + functor(A,F,G), + functor(D,F,G), + !, + C=suspension(_,_,_,_,_,U,V), + setarg(2,C,removed), + term_variables(term(U,V),H), + arg(5,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',R), + R=[_|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',S), + ( S=[T|_] -> + setarg(5,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(5,T,Q) + ; + true + ) + ), + detach_type_alias___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,_,O,P), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + detach_type_definition___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w. +',[F,G]). +type_definition___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + type_definition___2__0__0__5(D,A,B,C). +type_definition___2__0__0__5([],B,C,A) :- + type_definition___2__1(B,C,A). +type_definition___2__0__0__5([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + nonvar(A), + functor(A,I,J), + functor(D,I,J) -> + F=suspension(_,_,_,X,_), + setarg(2,F,removed), + term_variables(X,H), + arg(3,F,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_unalias_type___2(H,F), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_definition___2(K,C) + ; + true + ), + E=D, + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__0__0__5(G,A,B,C) + ; + true + ) + ; + type_definition___2__0__0__5(G,A,B,C) + ). +type_definition___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + type_definition___2__1(A,B,C). +type_definition___2__1(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',D), + !, + type_definition___2__1__0__7(D,A,B,C). +type_definition___2__1__0__7([],B,C,A) :- + type_definition___2__2(B,C,A). +type_definition___2__1__0__7([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + K=t(231,A,D), + '$novel_production'(A,K), + '$novel_production'(D,K) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),I), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_definition___2(I,A) + ; + true + ), + copy_term_nat(B-C,F-G), + maplist(dynamic_type_check_clause(F),G,H), + dynamic_type_check_clauses(H), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + type_definition___2__1__0__7(E,B,C,A) + ; + true + ) + ; + type_definition___2__1__0__7(E,B,C,A) + ). +type_definition___2__1(A,B,C) :- + type_definition___2__2(A,B,C). +type_definition___2__2(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',D), + !, + type_definition___2__2__0__8(D,A,B,C). +type_definition___2__2__0__8([],B,C,A) :- + type_definition___2__3(B,C,A). +type_definition___2__2__0__8([E|F],A,B,C) :- + ( E=suspension(_,active,_,D), + functor(D,H,I), + functor(A,H,I) -> + E=suspension(_,_,_,W), + setarg(2,E,removed), + term_variables(W,G), + arg(3,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',T), + T=[_|U], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',U), + ( U=[V|_] -> + setarg(3,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(3,V,S) + ; + true + ) + ), + detach_atomic_type___1(G,E), + arg(2,C,M), + setarg(2,C,active), + arg(4,C,L), + K is L+1, + setarg(4,C,K), + ( M==not_stored_yet -> + C=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),J), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',P), + Q=[C|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_definition___2(J,C) + ; + true + ), + maplist(atomic,B), + ( C=suspension(_,active,_,K,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__2__0__8(F,A,B,C) + ; + true + ) + ; + type_definition___2__2__0__8(F,A,B,C) + ). +type_definition___2__2(A,B,C) :- + type_definition___2__3(A,B,C). +type_definition___2__3(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',D), + !, + type_definition___2__3__0__9(D,A,B,C). +type_definition___2__3__0__9([],B,C,A) :- + type_definition___2__4(B,C,A). +type_definition___2__3__0__9([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(D,I,J), + functor(A,I,J) -> + F=suspension(_,_,_,X,_), + setarg(2,F,removed), + term_variables(X,H), + arg(3,F,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_enumerated_atomic_type___2(H,F), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_definition___2(K,C) + ; + true + ), + maplist(atomic,B), + E=B, + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__3__0__9(G,A,B,C) + ; + true + ) + ; + type_definition___2__3__0__9(G,A,B,C) + ). +type_definition___2__3(A,B,C) :- + type_definition___2__4(A,B,C). +type_definition___2__4(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',H), + I=[A|H], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + attach_type_definition___2(B,A) + ; + true + ). +type_alias(A,B) :- + type_alias___2__0(A,B,_). +type_alias___2__0(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + detach_type_alias___2(D,C) + ) + ), + chr_error(type_error,'Variable alias definition: "~w". +',[(:-chr_type A==B)]). +type_alias___2__0(A,B,C) :- + var(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + detach_type_alias___2(D,C) + ) + ), + chr_error(type_error,'Variable alias definition: "~w". +',[(:-chr_type A==B)]). +type_alias___2__0(A,B,C) :- + functor(A,D,E), + functor(B,D,E), + copy_term((A,B),(F,G)), + subsumes(F,G), + !, + ( var(C) -> + true + ; + C=suspension(_,M,_,_,_,N,O), + setarg(2,C,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(term(N,O),H), + arg(5,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',J), + J=[_|K], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + detach_type_alias___2(H,C) + ) + ), + chr_error(type_error,'Cyclic alias definition: "~w". +',[A==B]). +type_alias___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + ( + ( + functor(A,H,I), + functor(E,H,I), + \+A\=E, + !, + D=suspension(_,_,_,_,_,G2,H2), + setarg(2,D,removed), + term_variables(term(G2,H2),L), + arg(5,D,C2), + ( var(C2) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',D2), + D2=[_|E2], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',E2), + ( E2=[F2|_] -> + setarg(5,F2,_) + ; + true + ) + ; + C2=[_,_|E2], + setarg(2,C2,E2), + ( E2=[F2|_] -> + setarg(5,F2,C2) + ; + true + ) + ), + detach_type_alias___2(L,D), + ( var(C) -> + true + ; + C=suspension(_,Z1,_,_,_,A2,B2), + setarg(2,C,removed), + ( Z1==not_stored_yet -> + M=[] + ; + term_variables(term(A2,B2),M), + arg(5,C,V1), + ( var(V1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',W1), + W1=[_|X1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',X1), + ( X1=[Y1|_] -> + setarg(5,Y1,_) + ; + true + ) + ; + V1=[_,_|X1], + setarg(2,V1,X1), + ( X1=[Y1|_] -> + setarg(5,Y1,V1) + ; + true + ) + ), + detach_type_alias___2(M,C) + ) + ), + copy_term_nat(A,J), + copy_term_nat(E,K), + J=K, + chr_error(type_error,'Ambiguous type aliases: you have defined + `~w'' + `~w'' + resulting in two definitions for "~w". +',[A==B,E==F,J]) + ; + functor(E,N,O), + functor(A,N,O), + \+E\=A, + !, + D=suspension(_,_,_,_,_,T1,U1), + setarg(2,D,removed), + term_variables(term(T1,U1),R), + arg(5,D,P1), + ( var(P1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Q1), + Q1=[_|R1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',R1), + ( R1=[S1|_] -> + setarg(5,S1,_) + ; + true + ) + ; + P1=[_,_|R1], + setarg(2,P1,R1), + ( R1=[S1|_] -> + setarg(5,S1,P1) + ; + true + ) + ), + detach_type_alias___2(R,D), + ( var(C) -> + true + ; + C=suspension(_,M1,_,_,_,N1,O1), + setarg(2,C,removed), + ( M1==not_stored_yet -> + S=[] + ; + term_variables(term(N1,O1),S), + arg(5,C,I1), + ( var(I1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',J1), + J1=[_|K1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',K1), + ( K1=[L1|_] -> + setarg(5,L1,_) + ; + true + ) + ; + I1=[_,_|K1], + setarg(2,I1,K1), + ( K1=[L1|_] -> + setarg(5,L1,I1) + ; + true + ) + ), + detach_type_alias___2(S,C) + ) + ), + copy_term_nat(E,P), + copy_term_nat(A,Q), + P=Q, + chr_error(type_error,'Ambiguous type aliases: you have defined + `~w'' + `~w'' + resulting in two definitions for "~w". +',[E==F,A==B,P]) + ) + ; + functor(E,T,U), + functor(B,T,U), + copy_term_nat((A,B,E,F),(V,W,X,Y)), + subsumes(X,W), + !, + ( var(C) -> + true + ; + C=suspension(_,F1,_,_,_,G1,H1), + setarg(2,C,removed), + ( F1==not_stored_yet -> + Z=[] + ; + term_variables(term(G1,H1),Z), + arg(5,C,B1), + ( var(B1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',C1), + C1=[_|D1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',D1), + ( D1=[E1|_] -> + setarg(5,E1,_) + ; + true + ) + ; + B1=[_,_|D1], + setarg(2,B1,D1), + ( D1=[E1|_] -> + setarg(5,E1,B1) + ; + true + ) + ), + detach_type_alias___2(Z,C) + ) + ), + type_alias(V,Y) + ) + ; + !, + ( var(C) -> + C=suspension(A1,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(A1) + ; + true + ), + type_alias___2__0__0__7(G,A,B,C) + ). +type_alias___2__0__0__7([],B,C,A) :- + type_alias___2__1(B,C,A). +type_alias___2__0__0__7([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,_,D,E), + functor(A,I,J), + functor(E,I,J), + copy_term_nat((D,E,A,B),(K,L,M,N)), + subsumes(M,L) -> + F=suspension(_,_,_,_,_,B1,C1), + setarg(2,F,removed), + term_variables(term(B1,C1),H), + arg(5,F,X), + ( var(X) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',Z), + ( Z=[A1|_] -> + setarg(5,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(5,A1,X) + ; + true + ) + ), + detach_type_alias___2(H,F), + arg(2,C,R), + setarg(2,C,active), + arg(4,C,Q), + P is Q+1, + setarg(4,C,P), + ( R==not_stored_yet -> + C=suspension(_,_,_,_,_,S,T), + term_variables(term(S,T),O), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',U), + V=[C|U], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',V), + ( U=[W|_] -> + setarg(5,W,V) + ; + true + ), + attach_type_alias___2(O,C) + ; + true + ), + type_alias(K,N), + ( C=suspension(_,active,_,P,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__0__0__7(G,A,B,C) + ; + true + ) + ; + type_alias___2__0__0__7(G,A,B,C) + ). +type_alias___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + type_alias___2__1(A,B,C). +type_alias___2__1(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + functor(D,F,G), + functor(A,F,G), + !, + C=suspension(_,_,_,_,_,U,V), + setarg(2,C,removed), + term_variables(term(U,V),H), + arg(5,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',R), + R=[_|S], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',S), + ( S=[T|_] -> + setarg(5,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(5,T,Q) + ; + true + ) + ), + detach_type_definition___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,_,O,P), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + detach_type_alias___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w. +',[F,G]). +type_alias___2__1(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',D), + !, + type_alias___2__1__0__10(D,A,B,C). +type_alias___2__1__0__10([],B,C,A) :- + type_alias___2__2(B,C,A). +type_alias___2__1__0__10([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(A,I,J), + functor(D,I,J), + copy_term_nat((A,B),(K,L)), + D=K -> + F=suspension(_,_,_,Z,_), + setarg(2,F,removed), + term_variables(Z,H), + arg(3,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_unalias_type___2(H,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',S), + T=[C|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + attach_type_alias___2(M,C) + ; + true + ), + unalias_type(L,E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__1__0__10(G,A,B,C) + ; + true + ) + ; + type_alias___2__1__0__10(G,A,B,C) + ). +type_alias___2__1(A,B,C) :- + type_alias___2__2(A,B,C). +type_alias___2__2(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',D), + !, + type_alias___2__2__0__12(D,A,B,C). +type_alias___2__2__0__12([],B,C,A) :- + type_alias___2__3(B,C,A). +type_alias___2__2__0__12([G|H],A,B,C) :- + ( G=suspension(_,active,_,D,E,F), + functor(A,J,K), + functor(F,J,K) -> + G=suspension(_,_,_,_,Z,A1), + setarg(2,G,removed), + I=[Z|B1], + term_variables(A1,B1), + arg(3,G,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_static_type_check_var___3(I,G), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',S), + T=[C|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + attach_type_alias___2(M,C) + ; + true + ), + copy_term_nat(A-B,F-L), + static_type_check_var(D,E,L), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__2__0__12(H,A,B,C) + ; + true + ) + ; + type_alias___2__2__0__12(H,A,B,C) + ). +type_alias___2__2(A,B,C) :- + type_alias___2__3(A,B,C). +type_alias___2__3(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',D), + !, + type_alias___2__3__0__13(D,A,B,C). +type_alias___2__3__0__13([],B,C,A) :- + type_alias___2__4(B,C,A). +type_alias___2__3__0__13([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + K=t(232,A,D), + '$novel_production'(A,K), + '$novel_production'(D,K) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),I), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_alias___2(I,A) + ; + true + ), + copy_term_nat(B-C,F-G), + dynamic_type_check_alias_clause(F,G,H), + dynamic_type_check_clauses([H]), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + type_alias___2__3__0__13(E,B,C,A) + ; + true + ) + ; + type_alias___2__3__0__13(E,B,C,A) + ). +type_alias___2__3(A,B,C) :- + type_alias___2__4(A,B,C). +type_alias___2__4(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',D), + !, + type_alias___2__4__0__14(D,A,B,C). +type_alias___2__4__0__14([],B,C,A) :- + type_alias___2__5(B,C,A). +type_alias___2__4__0__14([E|F],A,B,C) :- + ( E=suspension(_,active,_,D), + functor(D,H,I), + functor(A,H,I) -> + E=suspension(_,_,_,X), + setarg(2,E,removed), + term_variables(X,G), + arg(3,E,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_atomic_type___1(G,E), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_alias___2(K,C) + ; + true + ), + atomic(B), + copy_term_nat(A-B,D-J), + atomic_type(J), + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__4__0__14(F,A,B,C) + ; + true + ) + ; + type_alias___2__4__0__14(F,A,B,C) + ). +type_alias___2__4(A,B,C) :- + type_alias___2__5(A,B,C). +type_alias___2__5(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',D), + !, + type_alias___2__5__0__15(D,A,B,C). +type_alias___2__5__0__15([],B,C,A) :- + type_alias___2__6(B,C,A). +type_alias___2__5__0__15([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(D,I,J), + functor(A,I,J) -> + F=suspension(_,_,_,Y,_), + setarg(2,F,removed), + term_variables(Y,H), + arg(3,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',W), + ( W=[X|_] -> + setarg(3,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(3,X,U) + ; + true + ) + ), + detach_enumerated_atomic_type___2(H,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',R), + S=[C|R], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + attach_type_alias___2(L,C) + ; + true + ), + atomic(B), + copy_term_nat(A-B,D-K), + enumerated_atomic_type(K,E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__5__0__15(G,A,B,C) + ; + true + ) + ; + type_alias___2__5__0__15(G,A,B,C) + ). +type_alias___2__5(A,B,C) :- + type_alias___2__6(A,B,C). +type_alias___2__6(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',H), + I=[A|H], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + attach_type_alias___2(B,A) + ; + true + ). +constraint_type(A,B) :- + constraint_type___2__0(A,B,_). +constraint_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',D), + !, + C=suspension(E,not_stored_yet,_,A,B), + 'chr gen_id'(E), + constraint_type___2__0__0__2(D,A,B,C). +constraint_type___2__0__0__2([],B,C,A) :- + constraint_type___2__1(B,C,A). +constraint_type___2__0__0__2([D|E],B,C,A) :- + ( D=suspension(_,active,_,_) -> + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',J), + ( I=[K|_] -> + setarg(3,K,J) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',L), + insert_ht(L,B,A) + ; + true + ), + forall((member(F,C),sub_term(F,G)),(get_type_definition(G,_)->true;chr_error(type_error,'Undefined type "~w" used in type declaration of "~w". +',[G,B]))), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + constraint_type___2__0__0__2(E,B,C,A) + ; + true + ) + ; + constraint_type___2__0__0__2(E,B,C,A) + ). +constraint_type___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,_,A,B), + 'chr gen_id'(D), + constraint_type___2__1(A,B,C). +constraint_type___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',G), + insert_ht(G,A,B) + ; + true + ). +get_type_definition(A,_) :- + \+ground(A), + !, + chr_error(type_error,'Non-ground type in constraint definition: "~w". +',[A]). +get_type_definition(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(D,G,H), + functor(A,G,H), + copy_term_nat((D,E),(I,J)), + I=A, + !, + ( get_type_definition(J,B) -> + true + ; + chr_error(type_error,'Could not find type definition for "~w" (accessed via alias "~w"). +',[J,I]), + fail + ). +get_type_definition(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + nonvar(D), + functor(D,G,H), + functor(A,G,H), + copy_term_nat((D,E),(I,J)), + I=A, + !, + B=J. +get_type_definition(A,B) :- + atomic_builtin_type(A,_,_), + !, + B=[A]. +get_type_definition(A,B) :- + compound_builtin_type(A,_,_,_), + !, + B=[A]. +get_type_definition(_,_) :- + fail. +get_constraint_type(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + B=D. +get_constraint_type(_,_) :- + fail. +unalias_type(A,B) :- + unalias_type___2__0(A,B,_). +unalias_type___2__0(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(E,H,I), + functor(A,H,I), + copy_term_nat((E,F),(J,K)), + A=J, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,Q,_), + setarg(2,C,removed), + term_variables(Q,L), + arg(3,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',N), + N=[_|O], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + detach_unalias_type___2(L,C) + ), + unalias_type(K,B). +unalias_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,E,_), + nonvar(E), + functor(E,G,H), + functor(A,G,H), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,N,_), + setarg(2,C,removed), + term_variables(N,I), + arg(3,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_unalias_type___2(I,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + atomic_builtin_type(A,_,_), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + compound_builtin_type(A,_,_,_), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + ( var(C) -> + C=suspension(E,active,_,A,B), + term_variables(A,D), + 'chr gen_id'(E), + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + G=[C|F], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ), + attach_unalias_type___2(D,C) + ; + setarg(2,C,active) + ). +types_modes_condition([],[],A) :- + !, + A=true. +types_modes_condition([B|C],[D|E],A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',I), + 'chr sbag_member'(F,I), + F=suspension(_,active,_,_,G,H), + G=J/K, + functor(B,J,K), + !, + B=..[_|L], + A=(M,N,O), + modes_condition(H,L,M), + get_constraint_type_det(J/K,P), + D=..[_|Q], + types_condition(P,L,Q,H,N), + types_modes_condition(C,E,O). +types_modes_condition([A|_],_,_) :- + !, + functor(A,B,C), + chr_error(internal,'Mode information missing for ~w. +',[B/C]). +types_modes_condition(A,B,C) :- + D=suspension(E,active,_,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',F), + G=[D|F], + b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ). +static_type_check :- + static_type_check___0__0(_). +static_type_check___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + static_type_check___0__0__0__1(B,A). +static_type_check___0__0__0__1([],A) :- + static_type_check___0__1(A). +static_type_check___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ) + ; + true + ), + forall((member(F,C),sub_term(F,G)),(get_type_definition(G,_)->true;chr_error(type_error,'Undefined type "~w" used in type declaration of "~w". +',[G,B]))), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + static_type_check___0__0__0__1(E,A) + ; + true + ) + ; + static_type_check___0__0__0__1(E,A) + ). +static_type_check___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + static_type_check___0__1(A). +static_type_check___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',B), + !, + static_type_check___0__1__0__2(B,A). +static_type_check___0__1__0__2([],A) :- + static_type_check___0__2(A). +static_type_check___0__1__0__2([C|D],A) :- + ( C=suspension(_,active,_,_,_,B), + S=t(209,C,A), + '$novel_production'(C,S), + '$novel_production'(A,S) -> + '$extend_history'(A,S), + arg(2,A,T), + setarg(2,A,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',U), + V=[A|U], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ) + ; + true + ), + copy_term_nat(B,E), + E=pragma(rule(F,G,_,H),ids(_,_),_,_,_), + ( + catch((static_type_check_heads(F),static_type_check_heads(G),conj2list(H,I),static_type_check_body(I)),type_error(J),(J=invalid_functor(K,L,M)->chr_error(type_error,'Invalid functor in ~@ of ~@: + found `~w'', + expected type `~w''! +',[chr_translate:format_src(K),format_rule(B),L,M]);J=type_clash(N,O,P,Q,R)->chr_error(type_error,'Type clash for variable ~w in ~@: + expected type ~w in ~@ + expected type ~w in ~@ +',[N,format_rule(B),Q,chr_translate:format_src(O),R,chr_translate:format_src(P)]))), + fail + ; + true + ), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + static_type_check___0__1__0__2(D,A) + ; + true + ) + ; + static_type_check___0__1__0__2(D,A) + ). +static_type_check___0__1(A) :- + static_type_check___0__2(A). +static_type_check___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) + ) + ). +static_type_check_term(A,B,C) :- + var(B), + !, + static_type_check_var(A,B,C). +static_type_check_term(A,B,C) :- + atomic_builtin_type(C,B,D), + !, + ( call(D) -> + true + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + compound_builtin_type(C,B,_,D), + !, + ( call(D) -> + true + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(C,H,I), + functor(E,H,I), + !, + copy_term_nat(E-F,C-J), + static_type_check_term(A,B,J). +static_type_check_term(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(C,H,I), + functor(E,H,I), + !, + copy_term_nat(E-F,C-J), + functor(B,K,L), + ( member(M,J), + functor(M,K,L) -> + B=..[_|N], + M=..[_|O], + maplist(static_type_check_term(A),N,O) + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + chr_error(internal,'Undefined type ~w while type checking term ~w in ~@. +',[C,B,chr_translate:format_src(A)]). +static_type_check_var(A,B,C) :- + static_type_check_var___3__0(A,B,C,_). +static_type_check_var___3__0(A,B,C,D) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,F,G), + functor(F,I,J), + functor(C,I,J), + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,Q,R), + setarg(2,D,removed), + L=[Q|S], + term_variables(R,S), + arg(3,D,M), + ( var(M) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',N), + N=[_|O], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + detach_static_type_check_var___3(L,D) + ), + copy_term_nat(F-G,C-K), + static_type_check_var(A,B,K). +static_type_check_var___3__0(A,B,C,D) :- + atomic_builtin_type(C,_,_), + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,J,K), + setarg(2,D,removed), + E=[J|L], + term_variables(K,L), + arg(3,D,F), + ( var(F) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',G), + G=[_|H], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + detach_static_type_check_var___3(E,D) + ), + static_atomic_builtin_type_check_var(A,B,C). +static_type_check_var___3__0(_,_,A,B) :- + compound_builtin_type(A,_,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,_,H,I), + setarg(2,B,removed), + C=[H|J], + term_variables(I,J), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_static_type_check_var___3(C,B) + ). +static_type_check_var___3__0(A,B,C,D) :- + get_attr(B,chr_translate,J), + J=v(_,_,_,_,_,_,_,I,_,_,_), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,F,G,H), + G==B, + ( + C\==H, + !, + E=suspension(_,_,_,_,N1,O1), + setarg(2,E,removed), + K=[N1|P1], + term_variables(O1,P1), + arg(3,E,J1), + ( var(J1) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',K1), + K1=[_|L1], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',L1), + ( L1=[M1|_] -> + setarg(3,M1,_) + ; + true + ) + ; + J1=[_,_|L1], + setarg(2,J1,L1), + ( L1=[M1|_] -> + setarg(3,M1,J1) + ; + true + ) + ), + detach_static_type_check_var___3(K,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,G1,H1), + setarg(2,D,removed), + L=[G1|I1], + term_variables(H1,I1), + arg(3,D,C1), + ( var(C1) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',D1), + D1=[_|E1], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + detach_static_type_check_var___3(L,D) + ), + throw(type_error(type_clash(B,A,F,C,H))) + ; + H\==C, + !, + E=suspension(_,_,_,_,Z,A1), + setarg(2,E,removed), + M=[Z|B1], + term_variables(A1,B1), + arg(3,E,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_static_type_check_var___3(M,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,S,T), + setarg(2,D,removed), + N=[S|U], + term_variables(T,U), + arg(3,D,O), + ( var(O) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',P), + P=[_|Q], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',Q), + ( Q=[R|_] -> + setarg(3,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(3,R,O) + ; + true + ) + ), + detach_static_type_check_var___3(N,D) + ), + throw(type_error(type_clash(B,F,A,H,C))) + ). +static_type_check_var___3__0(A,B,C,D) :- + ( var(D) -> + D=suspension(F,active,_,A,B,C), + E=[B|G], + term_variables(C,G), + 'chr gen_id'(F), + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',H), + I=[D|H], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + attach_static_type_check_var___3(E,D) + ; + setarg(2,D,active) + ). +static_atomic_builtin_type_check_var(A,B,C) :- + static_atomic_builtin_type_check_var___3__0(A,B,C,_). +static_atomic_builtin_type_check_var___3__0(_,_,A,B) :- + A==any, + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,_,H,I), + setarg(2,B,removed), + term_variables(H,C,J), + term_variables(I,J), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(C,B) + ). +static_atomic_builtin_type_check_var___3__0(A,B,C,D) :- + ( 'chr newvia_2'(B,C,I) -> + get_attr(I,chr_translate,J), + J=v(_,_,_,_,_,_,_,_,H,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',H) + ), + ( + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G), + F==B, + G==C, + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,P,Q), + setarg(2,D,removed), + term_variables(P,K,R), + term_variables(Q,R), + arg(3,D,L), + ( var(L) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + M=[_|N], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(K,D) + ) + ; + !, + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__0__0__3([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__1(B,C,D,A). +static_atomic_builtin_type_check_var___3__0__0__3([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==C -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__0(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__1(A,B,C,D). +static_atomic_builtin_type_check_var___3__1(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==float, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__1(A,B,C,D) :- + C==float, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__1__0__5(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__1__0__5([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__8(B,C,D,A). +static_atomic_builtin_type_check_var___3__1__0__5([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__1__0__5(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__1__0__5(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__1(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__2(A,B,C,D). +static_atomic_builtin_type_check_var___3__2(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__2(A,B,C,D) :- + C==int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__2__0__7(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__2__0__7([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__5(B,C,D,A). +static_atomic_builtin_type_check_var___3__2__0__7([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__2__0__7(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__2__0__7(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__2(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__3(A,B,C,D). +static_atomic_builtin_type_check_var___3__3(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==natural, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__3(A,B,C,D) :- + C==natural, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__3__0__9(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__3__0__9([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__5(B,C,D,A). +static_atomic_builtin_type_check_var___3__3__0__9([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__3__0__9(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__3__0__9(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__3(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__4(A,B,C,D). +static_atomic_builtin_type_check_var___3__4(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__4(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__4__0__11(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__4__0__11([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__6(B,C,D,A). +static_atomic_builtin_type_check_var___3__4__0__11([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__4__0__11(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__4__0__11(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__4(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__5(A,B,C,D). +static_atomic_builtin_type_check_var___3__5(_,A,B,C) :- + B==int, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==natural, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__5(A,B,C,D) :- + C==natural, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__5__0__13(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__5__0__13([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__7(B,C,D,A). +static_atomic_builtin_type_check_var___3__5__0__13([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==int -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__5__0__13(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__5__0__13(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__5(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__6(A,B,C,D). +static_atomic_builtin_type_check_var___3__6(_,A,B,C) :- + B==int, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__6(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__6__0__15(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__6__0__15([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__7(B,C,D,A). +static_atomic_builtin_type_check_var___3__6__0__15([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==int -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__6__0__15(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__6__0__15(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__6(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__7(A,B,C,D). +static_atomic_builtin_type_check_var___3__7(_,A,B,C) :- + B==natural, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__7(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__7__0__17(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__7__0__17([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__8(B,C,D,A). +static_atomic_builtin_type_check_var___3__7__0__17([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==natural -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__7__0__17(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__7__0__17(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__7(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__8(A,B,C,D). +static_atomic_builtin_type_check_var___3__8(A,B,C,D) :- + ( 'chr newvia_1'(B,J) -> + get_attr(J,chr_translate,K), + K=v(_,_,_,_,_,_,_,_,I,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,F,G,H), + G==B, + !, + E=suspension(_,_,_,_,Y,Z), + setarg(2,E,removed), + term_variables(Y,L,A1), + term_variables(Z,A1), + arg(3,E,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',W), + ( W=[X|_] -> + setarg(3,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(3,X,U) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(L,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,R,S), + setarg(2,D,removed), + term_variables(R,M,T), + term_variables(S,T), + arg(3,D,N), + ( var(N) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',O), + O=[_|P], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(M,D) + ), + throw(type_error(type_clash(B,A,F,C,H))). +static_atomic_builtin_type_check_var___3__8(A,B,C,D) :- + ( var(D) -> + D=suspension(F,active,_,A,B,C), + term_variables(B,E,G), + term_variables(C,G), + 'chr gen_id'(F), + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',H), + I=[D|H], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + attach_static_atomic_builtin_type_check_var___3(E,D) + ; + setarg(2,D,active) + ). +dynamic_type_check :- + dynamic_type_check___0__0(_). +dynamic_type_check___0__0(A) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + dynamic_type_check___0__0__0__1(B,A). +dynamic_type_check___0__0__0__1([],A) :- + dynamic_type_check___0__1(A). +dynamic_type_check___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,_,B,C), + I=t(231,D,A), + '$novel_production'(D,I), + '$novel_production'(A,I) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ) + ; + true + ), + copy_term_nat(B-C,F-G), + maplist(dynamic_type_check_clause(F),G,H), + dynamic_type_check_clauses(H), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + dynamic_type_check___0__0__0__1(E,A) + ; + true + ) + ; + dynamic_type_check___0__0__0__1(E,A) + ). +dynamic_type_check___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + dynamic_type_check___0__1(A). +dynamic_type_check___0__1(A) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',B), + !, + dynamic_type_check___0__1__0__2(B,A). +dynamic_type_check___0__1__0__2([],A) :- + dynamic_type_check___0__2(A). +dynamic_type_check___0__1__0__2([D|E],A) :- + ( D=suspension(_,active,_,_,_,B,C), + I=t(232,D,A), + '$novel_production'(D,I), + '$novel_production'(A,I) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ) + ; + true + ), + copy_term_nat(B-C,F-G), + dynamic_type_check_alias_clause(F,G,H), + dynamic_type_check_clauses([H]), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + dynamic_type_check___0__1__0__2(E,A) + ; + true + ) + ; + dynamic_type_check___0__1__0__2(E,A) + ). +dynamic_type_check___0__1(A) :- + dynamic_type_check___0__2(A). +dynamic_type_check___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,J), + setarg(2,A,removed), + ( J==not_stored_yet -> + true + ; + arg(4,A,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ) + ) + ), + findall(('$dynamic_type_check'(D,E):-C),(atomic_builtin_type(D,E,C);compound_builtin_type(D,E,C,_)),B), + dynamic_type_check_clauses(B). +dynamic_type_check_clauses(A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + dynamic_type_check_clauses(E). +dynamic_type_check_clauses(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_dynamic_type_check_clauses(A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + A=C. +get_dynamic_type_check_clauses([]). +atomic_type(A) :- + atomic_type___1__0(A,_). +atomic_type___1__0(A,B) :- + atomic_builtin_type(A,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,H), + setarg(2,B,removed), + term_variables(H,C), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_atomic_type___1(C,B) + ), + A\==any. +atomic_type___1__0(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(A,G,H), + functor(D,G,H), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,N), + setarg(2,B,removed), + term_variables(N,I), + arg(3,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_atomic_type___1(I,B) + ), + maplist(atomic,E). +atomic_type___1__0(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(A,G,H), + functor(D,G,H), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,O), + setarg(2,B,removed), + term_variables(O,J), + arg(3,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_atomic_type___1(J,B) + ), + atomic(E), + copy_term_nat(D-E,A-I), + atomic_type(I). +atomic_type___1__0(A,B) :- + ( var(B) -> + B=suspension(D,active,_,A), + term_variables(A,C), + 'chr gen_id'(D), + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',E), + F=[B|E], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + attach_atomic_type___1(C,B) + ; + setarg(2,B,active) + ). +enumerated_atomic_type(A,B) :- + enumerated_atomic_type___2__0(A,B,_). +enumerated_atomic_type___2__0(A,_,B) :- + atomic_builtin_type(A,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,H,_), + setarg(2,B,removed), + term_variables(H,C), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_enumerated_atomic_type___2(C,B) + ), + fail. +enumerated_atomic_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(A,H,I), + functor(E,H,I), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,O,_), + setarg(2,C,removed), + term_variables(O,J), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_enumerated_atomic_type___2(J,C) + ), + maplist(atomic,F), + B=F. +enumerated_atomic_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(A,H,I), + functor(E,H,I), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,P,_), + setarg(2,C,removed), + term_variables(P,K), + arg(3,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',M), + M=[_|N], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_enumerated_atomic_type___2(K,C) + ), + atomic(F), + copy_term_nat(E-F,A-J), + enumerated_atomic_type(J,B). +enumerated_atomic_type___2__0(A,B,C) :- + ( var(C) -> + C=suspension(E,active,_,A,B), + term_variables(A,D), + 'chr gen_id'(E), + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',F), + G=[C|F], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ), + attach_enumerated_atomic_type___2(D,C) + ; + setarg(2,C,active) + ). +stored(A,B,yes) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + lookup_ht(Q,k(A,B),F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,_,D,E,_), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + lookup_ht(P,k(D,E),H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,A,L), + 'chr sbag_member'(I,L), + I=suspension(_,active,_,_,J,K), + B + stored_complete___3__0__1__3(H,F,G,I,B,C,D,A) + ; + stored_complete___3__0__0__3(I,B,C,D,A) + ). +stored_complete___3__0__1__3([],_,_,A,C,D,E,B) :- + stored_complete___3__0__0__3(A,C,D,E,B). +stored_complete___3__0__1__3([J|L],G,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,_,H,_,I,_,_), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',M), + lookup_ht1(M,I,I,K) -> + stored_complete___3__0__2__3(K,I,J,L,G,A,B,D,E,F,C) + ; + stored_complete___3__0__1__3(L,G,A,B,D,E,F,C) + ). +stored_complete___3__0__2__3([],_,_,A,H,B,C,E,F,G,D) :- + stored_complete___3__0__1__3(A,H,B,C,E,F,G,D). +stored_complete___3__0__2__3([M|N],J,A,B,I,C,D,F,G,H,E) :- + ( M=suspension(_,active,_,_,_,_,K,L,_), + M\==A, + K==J, + O=t(245,M,A,E,C), + '$novel_production'(M,O), + '$novel_production'(A,O), + '$novel_production'(E,O), + '$novel_production'(C,O), + G= + '$extend_history'(E,O), + arg(2,E,P), + setarg(2,E,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',Q), + insert_ht(Q,F,E) + ; + true + ), + passive(J,L), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + stored_complete___3__0__2__3(N,J,A,B,I,C,D,F,G,H,E) + ; + true + ) + ; + stored_complete___3__0__2__3(N,J,A,B,I,C,D,F,G,H,E) + ). +stored_complete___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + stored_complete___3__1(A,B,C,D). +stored_complete___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',F), + lookup_ht(F,A,E), + !, + stored_complete___3__1__0__4(E,A,B,C,D). +stored_complete___3__1__0__4([],B,C,D,A) :- + stored_complete___3__2(B,C,D,A). +stored_complete___3__1__0__4([I|J],B,C,D,A) :- + ( I=suspension(_,active,_,_,E,F,G,H,_), + E==B, + K=t(254,A,I), + '$novel_production'(A,K), + '$novel_production'(I,K), + F>C -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',M), + insert_ht(M,B,A) + ; + true + ), + passive(G,H), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + stored_complete___3__1__0__4(J,B,C,D,A) + ; + true + ) + ; + stored_complete___3__1__0__4(J,B,C,D,A) + ). +stored_complete___3__1(A,B,C,D) :- + stored_complete___3__2(A,B,C,D). +stored_complete___3__2(A,_,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',D), + insert_ht(D,A,B) + ; + true + ). +is_stored(A) :- + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',I), + lookup_ht(I,A,H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G), + G=0, + F= + setarg(3,H,G) + ; + true + ). +constraint_code(A,B,C) :- + ( + ( + chr_pp_flag(debugable,on) + ; + is_stored(A), + ( + has_active_occurrence(A) + ; + chr_pp_flag(late_allocation,off) + ), + ( + may_trigger(A) + ; + get_allocation_occurrence(A,D), + get_max_occurrence(A,E), + E>=D + ) + ) -> + constraint_prelude(A,F), + add_dummy_location(F,G), + B=[G|H] + ; + B=H + ), + I=[0], + occurrences_code(A,1,I,J,H,K), + gen_cond_attach_clause(A,J,K,C). +has_active_occurrence(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +has_active_occurrence(A) :- + has_active_occurrence(A,1), + memo_has_active_occurrence(A). +has_active_occurrence(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + B>D, + !, + fail. +has_active_occurrence(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,_,D,E,_), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',J), + lookup_ht(J,k(D,E),H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_,_,_), + !, + I is B+1, + has_active_occurrence(A,I). +has_active_occurrence(_,_). +memo_has_active_occurrence(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',D), + insert_ht(D,A,B). +use_auxiliary_predicate(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +use_auxiliary_predicate(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + insert_ht(D,A,B). +use_auxiliary_predicate(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +use_auxiliary_predicate(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',F), + insert_ht(F,k(A,B),C). +is_used_auxiliary_predicate(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +is_used_auxiliary_predicate(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +is_used_auxiliary_predicate(_) :- + fail. +is_used_auxiliary_predicate(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +is_used_auxiliary_predicate(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +is_used_auxiliary_predicate(_,_) :- + fail. +use_auxiliary_module(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +use_auxiliary_module(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + insert_ht(D,A,B). +is_used_auxiliary_module(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +is_used_auxiliary_module(_) :- + fail. +occurrences_code(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,I), + 'chr sbag_member'(G,I), + G=suspension(_,active,_,_,H), + B>H, + !, + D=C, + E=F. +occurrences_code(A,B,C,D,E,F) :- + occurrence_code(A,B,C,G,E,H), + I is B+1, + occurrences_code(A,I,G,D,H,F). +occurrence_code(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',B1), + lookup_ht(B1,k(A,B),J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,_,_,H,I,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',C1), + lookup_ht(C1,k(H,I),L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_,_), + !, + ( named_history(H,_,_) -> + does_use_history(A,B) + ; + true + ), + D=C, + E=F + ; + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',A1), + lookup_ht1(A1,H,H,O), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,_,N), + !, + N=pragma(rule(P,Q,_,_),ids(R,S),_,_,_), + ( select2(I,T,R,P,U,V) -> + D=C, + head1_code(T,I,V,U,N,A,B,C,E,F) + ; + ( select2(I,W,S,Q,X,Y) -> + head2_code(W,I,Y,X,N,A,B,C,E,Z), + ( should_skip_to_next_id(A,B) -> + inc_id(C,D), + ( unconditional_occurrence(A,B) -> + Z=F + ; + gen_alloc_inc_clause(A,B,C,Z,F) + ) + ; + D=C, + Z=F + ) + ) + ) + ). +occurrence_code(A,B,_,_,_,_) :- + chr_error(internal,'occurrence_code/6: missing information to compile ~w:~w +',[A,B]). +functional_dependency(A,B,C,D) :- + B>1, + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',M), + lookup_ht(M,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,A,K), + 'chr sbag_member'(H,K), + H=suspension(_,active,_,_,_,I,J,_,_), + J=B, + F>I, + !, + functional_dependency(A,1,C,D). +functional_dependency(A,B,C,D) :- + E=suspension(F,active,A,B,C,D), + 'chr gen_id'(F), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',G), + insert_ht(G,A,E), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H), + insert_ht(H,k(A,B),E). +get_functional_dependency(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',J), + lookup_ht(J,A,I), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,F,G,H), + B>=F, + !, + C=G, + D=H. +get_functional_dependency(_,_,_,_) :- + fail. +initial_call_pattern(A) :- + initial_call_pattern___1__0(A,_). +initial_call_pattern___1__0(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +initial_call_pattern___1__0(A,B) :- + B=suspension(C,active,t,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',D), + insert_ht(D,A,B), + call_pattern(A), + ( B=suspension(_,active,_,_) -> + setarg(2,B,inactive), + initial_call_pattern___1__1(A,B) + ; + true + ). +initial_call_pattern___1__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',D), + lookup_ht(D,A,C), + !, + initial_call_pattern___1__1__0__4(C,A,B). +initial_call_pattern___1__1__0__4([],B,A) :- + initial_call_pattern___1__2(B,A). +initial_call_pattern___1__1__0__4([E|G],B,A) :- + ( E=suspension(_,active,_,C,D), + C==B, + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F) -> + initial_call_pattern___1__1__1__4(F,D,E,G,B,A) + ; + initial_call_pattern___1__1__0__4(G,B,A) + ). +initial_call_pattern___1__1__1__4([],_,_,A,C,B) :- + initial_call_pattern___1__1__0__4(A,C,B). +initial_call_pattern___1__1__1__4([G|H],E,A,B,D,C) :- + ( G=suspension(_,active,_,F), + I=t(298,C,A,G), + '$novel_production'(C,I), + '$novel_production'(A,I) -> + '$extend_history'(C,I), + setarg(2,C,active), + ai_observation_schedule_new_calls(F,E), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + initial_call_pattern___1__1__1__4(H,E,A,B,D,C) + ; + true + ) + ; + initial_call_pattern___1__1__1__4(H,E,A,B,D,C) + ). +initial_call_pattern___1__1(A,B) :- + initial_call_pattern___1__2(A,B). +initial_call_pattern___1__2(_,A) :- + setarg(2,A,active). +call_pattern(A) :- + call_pattern___1__0(A,_). +call_pattern___1__0(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +call_pattern___1__0(A,B) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',D), + insert_ht(D,A,B), + call_pattern_worker(A), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + call_pattern___1__1(A,B) + ; + true + ). +call_pattern___1__1(_,A) :- + setarg(2,A,active). +call_pattern_worker(odom([],A)) :- + !, + final_answer_pattern(odom([],A),odom([],A)). +call_pattern_worker(odom([B|C],A)) :- + !, + D=odom(B,A), + depends_on_goal(odom([B|C],A),D), + call_pattern(D). +call_pattern_worker(odom((B;C),A)) :- + !, + D=odom((B;C),A), + E=odom([],A), + final_answer_pattern(D,E), + F=odom(B,A), + G=odom(C,A), + call_pattern(F), + call_pattern(G), + depends_on_as(D,F,G). +call_pattern_worker(odom(builtin,A)) :- + !, + ord_empty(B), + final_answer_pattern(odom(builtin,A),odom([],B)). +call_pattern_worker(odom(occ(B,C),A)) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',G), + lookup_ht(G,B,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + C>E, + !, + final_answer_pattern(odom(occ(B,C),A),odom([],A)). +call_pattern_worker(odom(A,B)) :- + A=_/_, + !, + C=odom(occ(A,1),B), + call_pattern(C), + depends_on(odom(A,B),C). +call_pattern_worker(odom(occ(B,C),A)) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + lookup_ht(W,k(B,C),H), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,_,_,E,F,G), + ( + ( + is_passive(E,F), + !, + I is C+1, + J=odom(occ(B,I),A), + call_pattern(J), + final_answer_pattern(odom(occ(B,C),A),odom([],A)), + depends_on(odom(occ(B,C),A),J) + ; + G=simplification, + \+is_passive(E,F), + !, + ai_observation_memo_simplification_rest_heads(B,C,K), + ai_observation_observe_set(A,K,L), + ai_observation_memo_abstract_goal(E,M), + call_pattern(odom(M,L)), + N is C+1, + O=odom(occ(B,N),A), + call_pattern(O), + depends_on_as(odom(occ(B,C),A),odom(M,L),O), + final_answer_pattern(odom(occ(B,C),A),odom([],A)) + ) + ; + G=propagation, + \+is_passive(E,F), + !, + ai_observation_memo_propagation_rest_heads(B,C,P), + ai_observation_observe_set(A,P,Q), + ord_add_element(Q,B,R), + ai_observation_memo_abstract_goal(E,S), + call_pattern(odom(S,R)), + ( ord_memberchk(B,Q) -> + T=no + ; + T=yes + ), + U is C+1, + V=odom(occ(B,U),A), + call_pattern(V), + depends_on_ap(odom(occ(B,C),A),odom(S,R),V,T) + ). +call_pattern_worker(A) :- + chr_error(internal,'AI observation analysis: unexpected abstract state ~w +',[A]). +final_answer_pattern(A,B) :- + final_answer_pattern___2__0(A,B,_). +final_answer_pattern___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,A,F), + ( + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + ai_observation_leq(B,E), + ! + ; + !, + final_answer_pattern___2__0__0__2(F,A,B,C) + ). +final_answer_pattern___2__0__0__2([],B,C,A) :- + final_answer_pattern___2__1(B,C,A). +final_answer_pattern___2__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + D==A, + ai_observation_leq(E,B) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',H), + delete_ht(H,A,F), + final_answer_pattern___2__0__0__2(G,A,B,C) + ; + final_answer_pattern___2__0__0__2(G,A,B,C) + ). +final_answer_pattern___2__0(A,B,C) :- + final_answer_pattern___2__1(A,B,C). +final_answer_pattern___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',F), + lookup_ht(F,A,D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + final_answer_pattern___2__1__0__3(D,A,B,C). +final_answer_pattern___2__1__0__3([],B,C,A) :- + final_answer_pattern___2__2(B,C,A). +final_answer_pattern___2__1__0__3([E|G],B,C,A) :- + ( E=suspension(_,active,_,D), + D==B, + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F) -> + final_answer_pattern___2__1__1__3(F,E,G,B,C,A) + ; + final_answer_pattern___2__1__0__3(G,B,C,A) + ). +final_answer_pattern___2__1__1__3([],_,A,C,D,B) :- + final_answer_pattern___2__1__0__3(A,C,D,B). +final_answer_pattern___2__1__1__3([G|H],A,B,D,E,C) :- + ( G=suspension(_,active,_,F), + I=t(298,A,C,G), + '$novel_production'(A,I), + '$novel_production'(C,I) -> + '$extend_history'(C,I), + arg(2,C,J), + setarg(2,C,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + insert_ht(K,D,C) + ; + true + ), + ai_observation_schedule_new_calls(F,E), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__1__1__3(H,A,B,D,E,C) + ; + true + ) + ; + final_answer_pattern___2__1__1__3(H,A,B,D,E,C) + ). +final_answer_pattern___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + final_answer_pattern___2__2(A,B,C). +final_answer_pattern___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__2__0__4(D,A,B,C). +final_answer_pattern___2__2__0__4([],B,C,A) :- + final_answer_pattern___2__3(B,C,A). +final_answer_pattern___2__2__0__4([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + H=t(300,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + insert_ht(J,B,A) + ; + true + ), + final_answer_pattern(D,C), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__2__0__4(G,B,C,A) + ; + true + ) + ; + final_answer_pattern___2__2__0__4(G,B,C,A) + ). +final_answer_pattern___2__2(A,B,C) :- + final_answer_pattern___2__3(A,B,C). +final_answer_pattern___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__3__0__5(D,A,B,C). +final_answer_pattern___2__3__0__5([],B,C,A) :- + final_answer_pattern___2__4(B,C,A). +final_answer_pattern___2__3__0__5([F|H],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',I), + lookup_ht(I,D,G) -> + final_answer_pattern___2__3__1__5(G,D,F,H,B,C,A) + ; + final_answer_pattern___2__3__0__5(H,B,C,A) + ). +final_answer_pattern___2__3__1__5([],_,_,A,C,D,B) :- + final_answer_pattern___2__3__0__5(A,C,D,B). +final_answer_pattern___2__3__1__5([I|J],E,A,F,B,C,D) :- + ( I=suspension(_,active,_,G,H), + G==E -> + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',K), + delete_ht(K,E,I), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',L), + delete_ht(L,H,I), + final_answer_pattern___2__3__1__5(J,E,A,F,B,C,D) + ; + final_answer_pattern___2__3__1__5(J,E,A,F,B,C,D) + ). +final_answer_pattern___2__3(A,B,C) :- + final_answer_pattern___2__4(A,B,C). +final_answer_pattern___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__4__0__6(D,A,B,C). +final_answer_pattern___2__4__0__6([],B,C,A) :- + final_answer_pattern___2__5(B,C,A). +final_answer_pattern___2__4__0__6([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + K=t(305,F,A), + '$novel_production'(F,K), + '$novel_production'(A,K) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',M), + insert_ht(M,B,A) + ; + true + ), + D=odom([_|H],_), + C=odom([],I), + J=odom(H,I), + call_pattern(J), + depends_on(D,J), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__4__0__6(G,B,C,A) + ; + true + ) + ; + final_answer_pattern___2__4__0__6(G,B,C,A) + ). +final_answer_pattern___2__4(A,B,C) :- + final_answer_pattern___2__5(A,B,C). +final_answer_pattern___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__5__0__7(D,A,B,C). +final_answer_pattern___2__5__0__7([],B,C,A) :- + final_answer_pattern___2__6(B,C,A). +final_answer_pattern___2__5__0__7([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,F,H) -> + final_answer_pattern___2__5__1__7(H,D,F,G,I,B,C,A) + ; + final_answer_pattern___2__5__0__7(I,B,C,A) + ). +final_answer_pattern___2__5__1__7([],_,_,_,A,C,D,B) :- + final_answer_pattern___2__5__0__7(A,C,D,B). +final_answer_pattern___2__5__1__7([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==G, + M=t(312,A,C,J), + '$novel_production'(A,M), + '$novel_production'(C,M), + '$novel_production'(J,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',O), + insert_ht(O,D,C) + ; + true + ), + ai_observation_lub(E,I,L), + final_answer_pattern(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__5__1__7(K,F,G,A,B,D,E,C) + ; + true + ) + ; + final_answer_pattern___2__5__1__7(K,F,G,A,B,D,E,C) + ). +final_answer_pattern___2__5(A,B,C) :- + final_answer_pattern___2__6(A,B,C). +final_answer_pattern___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__6__0__8(D,A,B,C). +final_answer_pattern___2__6__0__8([],B,C,A) :- + final_answer_pattern___2__7(B,C,A). +final_answer_pattern___2__6__0__8([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,E,H) -> + final_answer_pattern___2__6__1__8(H,D,E,G,I,B,C,A) + ; + final_answer_pattern___2__6__0__8(I,B,C,A) + ). +final_answer_pattern___2__6__1__8([],_,_,_,A,C,D,B) :- + final_answer_pattern___2__6__0__8(A,C,D,B). +final_answer_pattern___2__6__1__8([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==G, + M=t(312,A,J,C), + '$novel_production'(A,M), + '$novel_production'(J,M), + '$novel_production'(C,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',O), + insert_ht(O,D,C) + ; + true + ), + ai_observation_lub(I,E,L), + final_answer_pattern(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__6__1__8(K,F,G,A,B,D,E,C) + ; + true + ) + ; + final_answer_pattern___2__6__1__8(K,F,G,A,B,D,E,C) + ). +final_answer_pattern___2__6(A,B,C) :- + final_answer_pattern___2__7(A,B,C). +final_answer_pattern___2__7(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__7__0__9(D,A,B,C). +final_answer_pattern___2__7__0__9([],B,C,A) :- + final_answer_pattern___2__8(B,C,A). +final_answer_pattern___2__7__0__9([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,_,E,_), + E==B, + H=t(320,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + insert_ht(J,B,A) + ; + true + ), + final_answer_pattern(D,C), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__7__0__9(G,B,C,A) + ; + true + ) + ; + final_answer_pattern___2__7__0__9(G,B,C,A) + ). +final_answer_pattern___2__7(A,B,C) :- + final_answer_pattern___2__8(A,B,C). +final_answer_pattern___2__8(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__8__0__10(D,A,B,C). +final_answer_pattern___2__8__0__10([],B,C,A) :- + final_answer_pattern___2__9(B,C,A). +final_answer_pattern___2__8__0__10([H|J],B,C,A) :- + ( H=suspension(_,active,_,D,E,F,G), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,F,I) -> + final_answer_pattern___2__8__1__10(I,D,F,G,H,J,B,C,A) + ; + final_answer_pattern___2__8__0__10(J,B,C,A) + ). +final_answer_pattern___2__8__1__10([],_,_,_,_,A,C,D,B) :- + final_answer_pattern___2__8__0__10(A,C,D,B). +final_answer_pattern___2__8__1__10([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,I,J), + I==G, + S=t(321,A,C,K), + '$novel_production'(A,S), + '$novel_production'(C,S), + '$novel_production'(K,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',U), + insert_ht(U,D,C) + ; + true + ), + F=odom(occ(M,N),_), + ( ai_observation_is_observed(E,M) -> + ai_observed_internal(M,N) + ; + ai_not_observed_internal(M,N) + ), + ( H==yes -> + E=odom([],O), + ord_del_element(O,M,P), + Q=odom([],P) + ; + Q=E + ), + ai_observation_lub(Q,J,R), + final_answer_pattern(F,R), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__8__1__10(L,F,G,H,A,B,D,E,C) + ; + true + ) + ; + final_answer_pattern___2__8__1__10(L,F,G,H,A,B,D,E,C) + ). +final_answer_pattern___2__8(A,B,C) :- + final_answer_pattern___2__9(A,B,C). +final_answer_pattern___2__9(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__9__0__11(D,A,B,C). +final_answer_pattern___2__9__0__11([],B,C,A) :- + final_answer_pattern___2__10(B,C,A). +final_answer_pattern___2__9__0__11([H|J],B,C,A) :- + ( H=suspension(_,active,_,D,E,F,G), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,E,I) -> + final_answer_pattern___2__9__1__11(I,D,E,G,H,J,B,C,A) + ; + final_answer_pattern___2__9__0__11(J,B,C,A) + ). +final_answer_pattern___2__9__1__11([],_,_,_,_,A,C,D,B) :- + final_answer_pattern___2__9__0__11(A,C,D,B). +final_answer_pattern___2__9__1__11([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,I,J), + I==G, + S=t(321,A,K,C), + '$novel_production'(A,S), + '$novel_production'(K,S), + '$novel_production'(C,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',U), + insert_ht(U,D,C) + ; + true + ), + F=odom(occ(M,N),_), + ( ai_observation_is_observed(J,M) -> + ai_observed_internal(M,N) + ; + ai_not_observed_internal(M,N) + ), + ( H==yes -> + J=odom([],O), + ord_del_element(O,M,P), + Q=odom([],P) + ; + Q=J + ), + ai_observation_lub(Q,E,R), + final_answer_pattern(F,R), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__9__1__11(L,F,G,H,A,B,D,E,C) + ; + true + ) + ; + final_answer_pattern___2__9__1__11(L,F,G,H,A,B,D,E,C) + ). +final_answer_pattern___2__9(A,B,C) :- + final_answer_pattern___2__10(A,B,C). +final_answer_pattern___2__10(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',D), + insert_ht(D,A,B) + ; + true + ). +abstract_constraints(A) :- + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + abstract_constraints___1__0__0__2(C,A) + ). +abstract_constraints___1__0__0__2([],A) :- + abstract_constraints___1__1(A). +abstract_constraints___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + abstract_constraints___1__0__0__2(C,A) + ; + abstract_constraints___1__0__0__2(C,A) + ). +abstract_constraints(A) :- + abstract_constraints___1__1(A). +abstract_constraints___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +depends_on(A,B) :- + depends_on___2__0(A,B,_). +depends_on___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), + lookup_ht(F,B,D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + depends_on___2__0__0__1(D,A,B,C). +depends_on___2__0__0__1([],B,C,A) :- + depends_on___2__1(B,C,A). +depends_on___2__0__0__1([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==C, + H=t(300,A,F), + '$novel_production'(A,H), + '$novel_production'(F,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',J), + insert_ht(J,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',K), + insert_ht(K,C,A) + ; + true + ), + final_answer_pattern(B,E), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + depends_on___2__0__0__1(G,B,C,A) + ; + true + ) + ; + depends_on___2__0__0__1(G,B,C,A) + ). +depends_on___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + depends_on___2__1(A,B,C). +depends_on___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',F), + insert_ht(F,B,C) + ; + true + ). +depends_on_ap(A,B,C,D) :- + depends_on_ap___4__0(A,B,C,D,_). +depends_on_ap___4__0(A,B,C,D,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',H), + lookup_ht(H,C,F), + !, + E=suspension(G,not_stored_yet,t,A,B,C,D), + 'chr gen_id'(G), + depends_on_ap___4__0__0__1(F,A,B,C,D,E). +depends_on_ap___4__0__0__1([],B,C,D,E,A) :- + depends_on_ap___4__1(B,C,D,E,A). +depends_on_ap___4__0__0__1([H|I],B,C,D,E,A) :- + ( H=suspension(_,active,_,F,G), + F==D, + J=t(320,A,H), + '$novel_production'(A,J), + '$novel_production'(H,J) -> + '$extend_history'(A,J), + arg(2,A,K), + setarg(2,A,active), + ( K==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',M), + insert_ht(M,D,A) + ; + true + ), + final_answer_pattern(B,G), + ( A=suspension(_,active,_,_,_,_,_) -> + setarg(2,A,inactive), + depends_on_ap___4__0__0__1(I,B,C,D,E,A) + ; + true + ) + ; + depends_on_ap___4__0__0__1(I,B,C,D,E,A) + ). +depends_on_ap___4__0(A,B,C,D,E) :- + E=suspension(F,not_stored_yet,t,A,B,C,D), + 'chr gen_id'(F), + depends_on_ap___4__1(A,B,C,D,E). +depends_on_ap___4__1(A,B,C,D,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,B,F), + !, + depends_on_ap___4__1__0__2(F,A,B,C,D,E). +depends_on_ap___4__1__0__2([],B,C,D,E,A) :- + depends_on_ap___4__2(B,C,D,E,A). +depends_on_ap___4__1__0__2([H|J],B,C,D,E,A) :- + ( H=suspension(_,active,_,F,G), + F==C, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,D,I) -> + depends_on_ap___4__1__1__2(I,G,H,J,B,C,D,E,A) + ; + depends_on_ap___4__1__0__2(J,B,C,D,E,A) + ). +depends_on_ap___4__1__1__2([],_,_,A,C,D,E,F,B) :- + depends_on_ap___4__1__0__2(A,C,D,E,F,B). +depends_on_ap___4__1__1__2([K|L],H,A,B,D,E,F,G,C) :- + ( K=suspension(_,active,_,I,J), + K\==A, + I==F, + S=t(321,C,A,K), + '$novel_production'(C,S), + '$novel_production'(A,S), + '$novel_production'(K,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',U), + insert_ht(U,E,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',V), + insert_ht(V,F,C) + ; + true + ), + D=odom(occ(M,N),_), + ( ai_observation_is_observed(H,M) -> + ai_observed_internal(M,N) + ; + ai_not_observed_internal(M,N) + ), + ( G==yes -> + H=odom([],O), + ord_del_element(O,M,P), + Q=odom([],P) + ; + Q=H + ), + ai_observation_lub(Q,J,R), + final_answer_pattern(D,R), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + depends_on_ap___4__1__1__2(L,H,A,B,D,E,F,G,C) + ; + true + ) + ; + depends_on_ap___4__1__1__2(L,H,A,B,D,E,F,G,C) + ). +depends_on_ap___4__1(A,B,C,D,E) :- + depends_on_ap___4__2(A,B,C,D,E). +depends_on_ap___4__2(_,A,B,_,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',F), + insert_ht(F,B,C) + ; + true + ). +depends_on_goal(A,B) :- + depends_on_goal___2__0(A,B,_). +depends_on_goal___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',E), + lookup_ht(E,A,D), + !, + depends_on_goal___2__0__0__1(D,A,B,C). +depends_on_goal___2__0__0__1([],B,C,A) :- + depends_on_goal___2__1(B,C,A). +depends_on_goal___2__0__0__1([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + D==A, + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',L), + lookup_ht(L,B,I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',J), + delete_ht(J,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',K), + delete_ht(K,E,F), + depends_on_goal___2__0__0__1(G,A,B,C) + ; + depends_on_goal___2__0__0__1(G,A,B,C) + ). +depends_on_goal___2__0(A,B,C) :- + depends_on_goal___2__1(A,B,C). +depends_on_goal___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), + lookup_ht(F,B,D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + depends_on_goal___2__1__0__2(D,A,B,C). +depends_on_goal___2__1__0__2([],B,C,A) :- + depends_on_goal___2__2(B,C,A). +depends_on_goal___2__1__0__2([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==C, + K=t(305,A,F), + '$novel_production'(A,K), + '$novel_production'(F,K) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',M), + insert_ht(M,C,A) + ; + true + ), + B=odom([_|H],_), + E=odom([],I), + J=odom(H,I), + call_pattern(J), + depends_on(B,J), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + depends_on_goal___2__1__0__2(G,B,C,A) + ; + true + ) + ; + depends_on_goal___2__1__0__2(G,B,C,A) + ). +depends_on_goal___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + depends_on_goal___2__2(A,B,C). +depends_on_goal___2__2(_,A,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',D), + insert_ht(D,A,B) + ; + true + ). +ai_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',D), + lookup_ht(D,k(A,B),C), + !, + ai_observed_internal___2__0__0__1(C,A,B). +ai_observed_internal___2__0__0__1([],A,B) :- + ai_observed_internal___2__1(A,B). +ai_observed_internal___2__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,_,C,D), + C==A, + D==B -> + setarg(2,E,removed), + arg(3,E,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',I), + ( I=[J|_] -> + setarg(3,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(3,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',K), + delete_ht(K,k(A,B),E), + ai_observed_internal___2__0__0__1(F,A,B) + ; + ai_observed_internal___2__0__0__1(F,A,B) + ). +ai_observed_internal(A,B) :- + ai_observed_internal___2__1(A,B). +ai_observed_internal___2__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +ai_observed_internal___2__1(_,_) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +ai_observed_internal___2__1(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',H), + insert_ht(H,k(A,B),C). +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + !, + ai_not_observed(A,B). +ai_not_observed_internal(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',H), + insert_ht(H,k(A,B),C). +ai_not_observed(A,B) :- + ai_not_observed___2__0(A,B,_). +ai_not_observed___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',F), + hash_term(k(A,B,1887087),G), + lookup_ht1(F,G,k(A,B,yes),D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + ai_not_observed___2__0__0__1(D,A,B,C). +ai_not_observed___2__0__0__1([],B,C,A) :- + ai_not_observed___2__1(B,C,A). +ai_not_observed___2__0__0__1([G|H],A,B,C) :- + ( G=suspension(_,active,D,E,F), + D==A, + E==B, + F=yes, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',S), + lookup_ht(S,A,L), + 'chr sbag_member'(I,L), + I=suspension(_,active,_,_,J,K), + B + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',Q), + delete_ht(Q,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',R), + delete_ht(R,k(A,B,yes),G), + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',P), + delete_ht(P,A,I), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',O), + insert_ht(O,k(A,B),C) + ; + true + ), + M is K-1, + stored(A,B,maybe), + stored_complete(A,J,M), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + ai_not_observed___2__0__0__1(H,A,B,C) + ; + true + ) + ; + ai_not_observed___2__0__0__1(H,A,B,C) + ). +ai_not_observed___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + ai_not_observed___2__1(A,B,C). +ai_not_observed___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',E), + insert_ht(E,k(A,B),C) + ; + true + ). +ai_is_observed(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !, + fail. +ai_is_observed(_,_). +depends_on_as(A,B,C) :- + depends_on_as___3__0(A,B,C,_). +depends_on_as___3__0(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,B,E), + !, + D=suspension(F,not_stored_yet,t,A,B,C), + 'chr gen_id'(F), + depends_on_as___3__0__0__1(E,A,B,C,D). +depends_on_as___3__0__0__1([],B,C,D,A) :- + depends_on_as___3__1(B,C,D,A). +depends_on_as___3__0__0__1([G|I],B,C,D,A) :- + ( G=suspension(_,active,_,E,F), + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,D,H) -> + depends_on_as___3__0__1__1(H,F,G,I,B,C,D,A) + ; + depends_on_as___3__0__0__1(I,B,C,D,A) + ). +depends_on_as___3__0__1__1([],_,_,A,C,D,E,B) :- + depends_on_as___3__0__0__1(A,C,D,E,B). +depends_on_as___3__0__1__1([J|K],G,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,H,I), + J\==A, + H==F, + M=t(312,C,A,J), + '$novel_production'(C,M), + '$novel_production'(A,M), + '$novel_production'(J,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',O), + insert_ht(O,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',P), + insert_ht(P,E,C) + ; + true + ), + ai_observation_lub(G,I,L), + final_answer_pattern(D,L), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + depends_on_as___3__0__1__1(K,G,A,B,D,E,F,C) + ; + true + ) + ; + depends_on_as___3__0__1__1(K,G,A,B,D,E,F,C) + ). +depends_on_as___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + depends_on_as___3__1(A,B,C,D). +depends_on_as___3__1(_,A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',E), + insert_ht(E,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',F), + insert_ht(F,A,C) + ; + true + ). +ai_observation_gather_results :- + ai_observation_gather_results___0__0(_). +ai_observation_gather_results___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',B), + !, + ai_observation_gather_results___0__0__0__1(B,A). +ai_observation_gather_results___0__0__0__1([],A) :- + ai_observation_gather_results___0__1(A). +ai_observation_gather_results___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + setarg(2,D,removed), + arg(3,D,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',J), + delete_ht(J,k(B,C),D), + ai_observation_gather_results___0__0__0__1(E,A) + ; + ai_observation_gather_results___0__0__0__1(E,A) + ). +ai_observation_gather_results___0__0(A) :- + ai_observation_gather_results___0__1(A). +ai_observation_gather_results___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + ai_observation_gather_results___0__1__0__2(B,A). +ai_observation_gather_results___0__1__0__2([],A) :- + ai_observation_gather_results___0__2(A). +ai_observation_gather_results___0__1__0__2([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + setarg(2,D,removed), + arg(3,D,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',N), + delete_ht(N,k(B,C),D), + arg(2,A,F), + setarg(2,A,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',G), + H=[A|G], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',H), + ( G=[I|_] -> + setarg(3,I,H) + ; + true + ) + ; + true + ), + ai_not_observed(B,C), + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + ai_observation_gather_results___0__1__0__2(E,A) + ; + true + ) + ; + ai_observation_gather_results___0__1__0__2(E,A) + ). +ai_observation_gather_results___0__1(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + ai_observation_gather_results___0__2(A). +ai_observation_gather_results___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +ai_observation_memo_simplification_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +ai_observation_memo_simplification_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + lookup_ht(V,k(A,B),G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,_,E,F,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + lookup_ht1(U,E,E,J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',M), + 'chr sbag_member'(K,M), + K=suspension(_,active,_,L), + !, + I=pragma(rule(N,O,_,_),ids(P,_),_,_,_), + once(select2(F,_,P,N,_,Q)), + ai_observation_abstract_constraints(Q,L,R), + ai_observation_abstract_constraints(O,L,S), + append(R,S,T), + sort(T,C), + ai_observation_memoed_simplification_rest_heads(A,B,C). +ai_observation_memo_simplification_rest_heads(_,_,_) :- + fail. +ai_observation_memoed_simplification_rest_heads(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',F), + insert_ht(F,k(A,B),D). +ai_observation_memo_propagation_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +ai_observation_memo_propagation_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + lookup_ht(V,k(A,B),G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,_,E,F,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + lookup_ht1(U,E,E,J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',M), + 'chr sbag_member'(K,M), + K=suspension(_,active,_,L), + !, + I=pragma(rule(N,O,_,_),ids(_,P),_,_,_), + once(select2(F,_,P,O,_,Q)), + ai_observation_abstract_constraints(Q,L,R), + ai_observation_abstract_constraints(N,L,S), + append(R,S,T), + sort(T,C), + ai_observation_memoed_propagation_rest_heads(A,B,C). +ai_observation_memo_propagation_rest_heads(_,_,_) :- + fail. +ai_observation_memoed_propagation_rest_heads(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',F), + insert_ht(F,k(A,B),D). +ai_observation_memoed_abstract_goal(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',E), + insert_ht(E,A,C). +ai_observation_memo_abstract_goal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +ai_observation_memo_abstract_goal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N), + lookup_ht1(N,A,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',H), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,G), + !, + D=pragma(rule(I,J,K,L),_,_,_,_), + ai_observation_abstract_goal_(I,J,K,L,G,M), + B=M, + ai_observation_memoed_abstract_goal(A,M). +ai_observation_memo_abstract_goal(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +partial_wake_analysis :- + partial_wake_analysis___0__0(_). +partial_wake_analysis___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + partial_wake_analysis___0__0__0__1(B,A). +partial_wake_analysis___0__0__0__1([],A) :- + partial_wake_analysis___0__1(A). +partial_wake_analysis___0__0__0__1([F|H],A) :- + ( F=suspension(_,active,_,_,B,_,C,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',I), + lookup_ht(I,B,G) -> + partial_wake_analysis___0__0__1__1(G,B,C,D,E,F,H,A) + ; + partial_wake_analysis___0__0__0__1(H,A) + ). +partial_wake_analysis___0__0__1__1([],_,_,_,_,_,A,B) :- + partial_wake_analysis___0__0__0__1(A,B). +partial_wake_analysis___0__0__1__1([J|L],D,E,F,G,A,B,C) :- + ( J=suspension(_,active,_,_,H,I), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',M), + lookup_ht1(M,E,E,K) -> + partial_wake_analysis___0__0__2__1(K,I,J,L,D,E,F,G,A,B,C) + ; + partial_wake_analysis___0__0__1__1(L,D,E,F,G,A,B,C) + ). +partial_wake_analysis___0__0__2__1([],_,_,A,E,F,G,H,B,C,D) :- + partial_wake_analysis___0__0__1__1(A,E,F,G,H,B,C,D). +partial_wake_analysis___0__0__2__1([M|N],J,A,B,F,G,H,I,C,D,E) :- + ( M=suspension(_,active,_,_,K,L), + K==G, + U=t(325,E,C,M,A), + '$novel_production'(E,U), + '$novel_production'(C,U), + '$novel_production'(M,U), + '$novel_production'(A,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ) + ; + true + ), + L=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(G,H) -> + true + ; + ( I==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,J,T,F) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,J,T,F) + ), + ( E=suspension(_,active,_,_) -> + setarg(2,E,inactive), + partial_wake_analysis___0__0__2__1(N,J,A,B,F,G,H,I,C,D,E) + ; + true + ) + ; + partial_wake_analysis___0__0__2__1(N,J,A,B,F,G,H,I,C,D,E) + ). +partial_wake_analysis___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + partial_wake_analysis___0__1(A). +partial_wake_analysis___0__1(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',D), + ( C=[E|_] -> + setarg(4,E,D) + ; + true + ) + ; + true + ). +no_partial_wake(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +no_partial_wake(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + insert_ht(D,A,B). +wakes_partially(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + fail. +wakes_partially(_). +phase_end(A) :- + phase_end___1__0(A,_). +phase_end___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',E), + lookup_ht(E,A,C), + !, + B=suspension(D,not_stored_yet,A), + 'chr gen_id'(D), + phase_end___1__0__0__1(C,A,B). +phase_end___1__0__0__1([],B,A) :- + phase_end___1__1(B,A). +phase_end___1__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',I), + delete_ht(I,A,E), + arg(2,B,G), + setarg(2,B,active), + ( G==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',H), + insert_ht(H,A,B) + ; + true + ), + call(D), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + phase_end___1__0__0__1(F,A,B) + ; + true + ) + ; + phase_end___1__0__0__1(F,A,B) + ). +phase_end___1__0(A,B) :- + B=suspension(C,not_stored_yet,A), + 'chr gen_id'(C), + phase_end___1__1(A,B). +phase_end___1__1(A,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',D), + insert_ht(D,A,B) + ; + true + ). +delay_phase_end(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',E), + lookup_ht(E,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + !, + call(B). +delay_phase_end(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',E), + insert_ht(E,A,C). +does_use_history(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +does_use_history(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',F), + insert_ht(F,k(A,B),C). +uses_history(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +uses_history(_) :- + fail. +novel_production_call(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + !, + D=C. +novel_production_call(_,_,_,true). +does_use_field(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +does_use_field(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + insert_ht(E,k(A,B),C). +uses_field(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +uses_field(_,_) :- + fail. +uses_state(A,B) :- + uses_state___2__0(A,B,_). +uses_state___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +uses_state___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + uses_state___2__0__0__3(D,A,B,C). +uses_state___2__0__0__3([],B,C,A) :- + uses_state___2__1(B,C,A). +uses_state___2__0__0__3([D|F],B,C,A) :- + ( D=suspension(_,active,_), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',G), + lookup_ht(G,k(B,C),E) -> + uses_state___2__0__1__3(E,D,F,B,C,A) + ; + uses_state___2__0__0__3(F,B,C,A) + ). +uses_state___2__0__1__3([],_,A,C,D,B) :- + uses_state___2__0__0__3(A,C,D,B). +uses_state___2__0__1__3([J|K],A,E,B,C,D) :- + ( J=suspension(_,active,_,F,G,H,_,I), + F==B, + G==C -> + setarg(2,J,removed), + arg(3,J,N), + ( var(N) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',O), + O=[_|P], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',R), + delete_ht(R,k(B,C),J), + arg(2,D,L), + setarg(2,D,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',M), + insert_ht(M,k(B,C),D) + ; + true + ), + I=H, + ( D=suspension(_,active,_,_) -> + setarg(2,D,inactive), + uses_state___2__0__1__3(K,A,E,B,C,D) + ; + true + ) + ; + uses_state___2__0__1__3(K,A,E,B,C,D) + ). +uses_state___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + uses_state___2__1(A,B,C). +uses_state___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E), + insert_ht(E,k(A,B),C) + ; + true + ). +if_used_state(A,B,C,D,E) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',G), + 'chr sbag_member'(F,G), + F=suspension(_,active,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',J), + lookup_ht(J,k(A,B),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_), + !, + E=C + ; + !, + E=D + ). +if_used_state(A,B,C,D,E) :- + F=suspension(G,active,_,A,B,C,D,E), + 'chr gen_id'(G), + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',H), + I=[F|H], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',K), + insert_ht(K,k(A,B),F). +used_states_known :- + used_states_known___0__0(_). +used_states_known___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + used_states_known___0__0__0__1(B,A). +used_states_known___0__0__0__1([],A) :- + used_states_known___0__1(A). +used_states_known___0__0__0__1([F|G],A) :- + ( F=suspension(_,active,_,B,C,D,_,E), + ground(B), + ground(C), + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',S), + lookup_ht(S,k(B,C),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_) -> + setarg(2,F,removed), + arg(3,F,N), + ( var(N) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',O), + O=[_|P], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',R), + delete_ht(R,k(B,C),F), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',L), + ( K=[M|_] -> + setarg(3,M,L) + ; + true + ) + ; + true + ), + E=D, + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + used_states_known___0__0__0__1(G,A) + ; + true + ) + ; + used_states_known___0__0__0__1(G,A) + ). +used_states_known___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + used_states_known___0__1(A). +used_states_known___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',B), + !, + used_states_known___0__1__0__2(B,A). +used_states_known___0__1__0__2([],A) :- + used_states_known___0__2(A). +used_states_known___0__1__0__2([F|G],A) :- + ( F=suspension(_,active,_,B,C,_,D,E) -> + setarg(2,F,removed), + arg(3,F,L), + ( var(L) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',M), + M=[_|N], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',P), + delete_ht(P,k(B,C),F), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',J), + ( I=[K|_] -> + setarg(3,K,J) + ; + true + ) + ; + true + ), + E=D, + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + used_states_known___0__1__0__2(G,A) + ; + true + ) + ; + used_states_known___0__1__0__2(G,A) + ). +used_states_known___0__1(A) :- + used_states_known___0__2(A). +used_states_known___0__2(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ) + ; + true + ). +stored_assertion(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',D), + insert_ht(D,A,B). +never_stored_default(A,B) :- + never_stored_default___2__0(A,B,_). +never_stored_default___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + never_stored_default___2__0__0__1(D,A,B,C). +never_stored_default___2__0__0__1([],B,C,A) :- + never_stored_default___2__1(B,C,A). +never_stored_default___2__0__0__1([F|I],A,B,C) :- + ( F=suspension(_,active,_,D,E), + D=[G|H], + G==A -> + setarg(2,F,removed), + arg(3,F,R), + ( var(R) -> + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',S), + S=[_|T], + b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',T), + ( T=[U|_] -> + setarg(3,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(3,U,R) + ; + true + ) + ), + arg(2,C,P), + setarg(2,C,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',Q), + insert_ht(Q,A,C) + ; + true + ), + A=J/K, + functor(L,J,K), + inc_rule_count(M), + N=pragma(rule([L],[],true,B),ids([0],[]),[],no,M), + E=[N|O], + never_stored_rules(H,O), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + never_stored_default___2__0__0__1(I,A,B,C) + ; + true + ) + ; + never_stored_default___2__0__0__1(I,A,B,C) + ). +never_stored_default___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + never_stored_default___2__1(A,B,C). +never_stored_default___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',D), + insert_ht(D,A,B) + ; + true + ). +never_stored_rules([],A) :- + !, + A=[]. +never_stored_rules([B|C],A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',M), + lookup_ht(M,B,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + B=G/H, + functor(I,G,H), + inc_rule_count(J), + K=pragma(rule([I],[],true,E),ids([0],[]),[],no,J), + A=[K|L], + never_stored_rules(C,L). +never_stored_rules([_|B],A) :- + !, + never_stored_rules(B,A). +never_stored_rules(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +check_storedness_assertion(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',E), + lookup_ht(E,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',D), + delete_ht(D,A,B), + ( is_stored(A) -> + true + ; + chr_warning(assertion_failed,'Constraint ~w is not stored. However, it was asserted to be stored. +',[A]) + ). +check_storedness_assertion(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !, + ( is_finally_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is stored. However, it was asserted not to be stored. +',[A]) + ; + ( is_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is temporarily stored. However, it was asserted not to be stored. +',[A]) + ) + ; + true + ). +check_storedness_assertion(A) :- + ( is_finally_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is stored. However, it was asserted not to be stored. +',[A]) + ; + ( is_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is temporarily stored. However, it was asserted not to be stored. +',[A]) + ) + ; + true + ). +continuation_occurrence(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',F), + insert_ht(F,k(A,B),D). +get_success_continuation_occurrence(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_success_continuation_occurrence(A,B,_) :- + chr_error(internal,'Success continuation not found for ~w. +',[A:B]). +skip_to_next_id(A,B) :- + skip_to_next_id___2__0(A,B,_). +skip_to_next_id___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +skip_to_next_id___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',F), + lookup_ht(F,k(A,B),D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + skip_to_next_id___2__0__0__4(D,A,B,C). +skip_to_next_id___2__0__0__4([],B,C,A) :- + skip_to_next_id___2__1(B,C,A). +skip_to_next_id___2__0__0__4([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + D==B, + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',K), + lookup_ht(K,k(F,G),I) -> + skip_to_next_id___2__0__1__4(I,F,G,H,J,B,C,A) + ; + skip_to_next_id___2__0__0__4(J,B,C,A) + ). +skip_to_next_id___2__0__1__4([],_,_,_,A,C,D,B) :- + skip_to_next_id___2__0__0__4(A,C,D,B). +skip_to_next_id___2__0__1__4([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==F, + I==G, + M=t(357,A,J,C), + '$novel_production'(A,M), + '$novel_production'(J,M), + '$novel_production'(C,M), + E>1 -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',O), + insert_ht(O,k(D,E),C) + ; + true + ), + L is E-1, + skip_to_next_id(D,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + skip_to_next_id___2__0__1__4(K,F,G,A,B,D,E,C) + ; + true + ) + ; + skip_to_next_id___2__0__1__4(K,F,G,A,B,D,E,C) + ). +skip_to_next_id___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + skip_to_next_id___2__1(A,B,C). +skip_to_next_id___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',E), + lookup_ht(E,k(A,B),D), + !, + skip_to_next_id___2__1__0__5(D,A,B,C). +skip_to_next_id___2__1__0__5([],B,C,A) :- + skip_to_next_id___2__2(B,C,A). +skip_to_next_id___2__1__0__5([G|H],A,B,C) :- + ( G=suspension(_,active,D,E,F), + D==A, + E==B, + ground(A), + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + lookup_ht(Q,k(A,B),K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,_,_,_,J), + J=propagation -> + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',P), + delete_ht(P,k(A,B),G), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',O), + insert_ht(O,k(A,B),C) + ; + true + ), + occurrence_code_id(A,B,F), + L is B+1, + M is F+1, + set_occurrence_code_id(A,L,M), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + skip_to_next_id___2__1__0__5(H,A,B,C) + ; + true + ) + ; + skip_to_next_id___2__1__0__5(H,A,B,C) + ). +skip_to_next_id___2__1(A,B,C) :- + skip_to_next_id___2__2(A,B,C). +skip_to_next_id___2__2(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + insert_ht(E,k(A,B),C) + ; + true + ). +should_skip_to_next_id(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +should_skip_to_next_id(_,_) :- + fail. +bulk_propagation(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + B>=D, + !, + skip_to_next_id(A,B). +bulk_propagation(A,B,C) :- + C=:=B+1, + !, + skip_to_next_id(A,B), + get_max_occurrence(A,D), + E is D+1, + bulk_propagation(A,C,E). +bulk_propagation(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',I), + lookup_ht(I,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,_,_,E), + E=simplification, + D=:=B+1, + !, + skip_to_next_id(A,B), + get_max_occurrence(A,G), + H is G+1, + bulk_propagation(A,D,H). +bulk_propagation(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',I), + lookup_ht(I,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E>B+1, + !, + G is min(C,E), + H is B+1, + bulk_propagation(A,H,G). +bulk_propagation(A,B,_) :- + skip_to_next_id(A,B), + get_max_occurrence(A,C), + D is C+1, + E is B+1, + bulk_propagation(A,E,D). +set_occurrence_code_id(A,B,C) :- + get_max_occurrence(A,D), + B>D, + !, + occurrence_code_id(A,B,C). +set_occurrence_code_id(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',R), + lookup_ht(R,k(A,B),H), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,_,_,E,F,G), + ( + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',T), + lookup_ht(T,k(E,F),J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_,_), + !, + occurrence_code_id(A,B,C), + K is B+1, + set_occurrence_code_id(A,K,C) + ; + G=simplification, + !, + occurrence_code_id(A,B,C), + L is B+1, + set_occurrence_code_id(A,L,C) + ) + ; + G=propagation, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',S), + lookup_ht(S,k(A,B),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_), + !, + occurrence_code_id(A,B,C), + O is B+1, + P is C+1, + set_occurrence_code_id(A,O,P) + ) + ; + G=propagation, + !, + occurrence_code_id(A,B,C), + Q is B+1, + set_occurrence_code_id(A,Q,C) + ). +set_occurrence_code_id(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',F), + insert_ht(F,k(A,B),D). +occurrence_code_id(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',F), + insert_ht(F,k(A,B),D). +get_occurrence_code_id(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_occurrence_code_id(A,B,_) :- + ( B==0 -> + true + ; + format('no occurrence code for ~w! +',[A:B]) + ). +chr_constants(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',H), + insert_ht(H,A,C). +get_chr_constants(A,B) :- + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + B=D. +get_chr_constants(A,B) :- + chr_warning(internal,'No constants found for key ~w. +',[A]), + B=[]. +add_chr_constant(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',L), + lookup_ht(L,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + setarg(2,C,removed), + arg(3,C,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',I), + ( I=[J|_] -> + setarg(3,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(3,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',K), + delete_ht(K,A,C), + sort([B|D],F), + chr_constants(A,F). +add_chr_constant(A,B) :- + chr_constants(A,[B]). +print_chr_constants :- + print_chr_constants___0__0(_). +print_chr_constants___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + print_chr_constants___0__0__0__1(B,A). +print_chr_constants___0__0__0__1([],A) :- + print_chr_constants___0__1(A). +print_chr_constants___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + format(' * chr_constants ~w : ~w. +',[B,C]), + print_chr_constants___0__0__0__1(E,A) + ; + print_chr_constants___0__0__0__1(E,A) + ). +print_chr_constants___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + print_chr_constants___0__1(A). +print_chr_constants___0__1(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +end_of_file. diff --git a/chr_translate_bootstrap1.pl b/chr_translate_bootstrap1.pl new file mode 100644 index 0000000..d9c856e --- /dev/null +++ b/chr_translate_bootstrap1.pl @@ -0,0 +1,2609 @@ +/* Generated by CHR bootstrap compiler + From: chr_translate_bootstrap1.chr + Date: Mon Jun 15 21:43:46 2009 + + + DO NOT EDIT. EDIT THE CHR FILE INSTEAD +*/ + +:-module(chr_translate_bootstrap1,[chr_translate/2]). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(library(lists),[append/3,member/2,permutation/2,reverse/2]). +:-use_module(library(ordsets)). +:-use_module(hprolog). +:-use_module(pairlist). +:-include(chr_op2). +chr_translate(A,B) :- + init_chr_pp_flags, + partition_clauses(A,C,D,E), + ( C==[] -> + B=E + ; + check_rules(D,C), + unique_analyse_optimise(D,F), + check_attachments(F), + set_constraint_indices(C,1), + store_management_preds(C,G), + constraints_code(C,F,H), + append([E,G,H],B) + ), + chr_clear. +store_management_preds(A,B) :- + generate_attach_detach_a_constraint_all(A,C), + generate_attach_increment(D), + generate_attr_unify_hook(E), + append([C,D,E],B). +partition_clauses([],[],[],[]). +partition_clauses([A|B],C,D,E) :- + ( rule(A,F) -> + C=G, + D=[F|H], + E=I + ; + ( is_declaration(A,J) -> + append(J,G,C), + D=H, + E=I + ) + ; + ( is_module_declaration(A,K) -> + target_module(K), + C=G, + D=H, + E=[A|I] + ) + ; + ( A=(handler _) -> + format('CHR compiler WARNING: ~w. +',[A]), + format(' `--> SICStus compatibility: ignoring handler/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=(rules _) -> + format('CHR compiler WARNING: ~w. +',[A]), + format(' `--> SICStus compatibility: ignoring rules/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=(:-chr_option(L,M)) -> + handle_option(L,M), + C=G, + D=H, + E=I + ) + ; + C=G, + D=H, + E=[A|I] + ), + partition_clauses(B,G,H,I). +is_declaration(A,B) :- + A=(:-C), + ( + C=..[chr_constraint,D] + ; + C=..[chr_constraint,D] + ), + conj2list(D,B). +rule(A,B) :- + A=(C@D), + !, + rule(D,yes(C),B). +rule(A,B) :- + rule(A,no,B). +rule(A,B,C) :- + A=(D pragma E), + !, + is_rule(D,F,G), + conj2list(E,H), + C=pragma(F,G,H,B). +rule(A,B,C) :- + is_rule(A,D,E), + C=pragma(D,E,[],B). +is_rule(A,B,C) :- + A=(D==>E), + !, + conj2list(D,F), + get_ids(F,G,H), + C=ids([],G), + ( E=(I '|' J) -> + B=rule([],H,I,J) + ; + B=rule([],H,true,E) + ). +is_rule(A,B,C) :- + A=(D<=>E), + !, + ( E=(F '|' G) -> + H=F, + I=G + ; + H=true, + I=E + ), + ( D=(J\K) -> + conj2list(J,L), + conj2list(K,M), + get_ids(L,N,O,0,P), + get_ids(M,Q,R,P,_), + C=ids(Q,N) + ; + conj2list(D,M), + O=[], + get_ids(M,Q,R), + C=ids(Q,[]) + ), + B=rule(R,O,H,I). +get_ids(A,B,C) :- + get_ids(A,B,C,0,_). +get_ids([],[],[],A,A). +get_ids([A|B],[C|D],[E|F],C,G) :- + ( A=E#C -> + true + ; + E=A + ), + H is C+1, + get_ids(B,D,F,H,G). +is_module_declaration((:-module(A)),A). +is_module_declaration((:-module(A,_)),A). +check_rules(A,B) :- + check_rules(A,B,1). +check_rules([],_,_). +check_rules([A|B],C,D) :- + check_rule(A,C,D), + E is D+1, + check_rules(B,C,E). +check_rule(A,B,C) :- + A=pragma(D,_,E,_), + D=rule(F,G,_,_), + append(F,G,H), + check_head_constraints(H,B,A,C), + check_pragmas(E,A,C). +check_head_constraints([],_,_,_). +check_head_constraints([A|B],C,D,E) :- + functor(A,F,G), + ( member(F/G,C) -> + check_head_constraints(B,C,D,E) + ; + format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@. +',[F/G,format_rule(D,E)]), + format(' `--> Constraint should be on of ~w. +',[C]), + fail + ). +check_pragmas([],_,_). +check_pragmas([A|B],C,D) :- + check_pragma(A,C,D), + check_pragmas(B,C,D). +check_pragma(A,B,C) :- + var(A), + !, + format('CHR compiler ERROR: invalid pragma ~w in ~@. +',[A,format_rule(B,C)]), + format(' `--> Pragma should not be a variable! +',[]), + fail. +check_pragma(passive(A),B,C) :- + !, + B=pragma(_,ids(D,E),_,_), + ( memberchk_eq(A,D) -> + true + ; + ( memberchk_eq(A,E) -> + true + ) + ; + format('CHR compiler ERROR: invalid identifier ~w in pragma passive in ~@. +',[A,format_rule(B,C)]), + fail + ). +check_pragma(A,B,C) :- + A=unique(_,_), + !, + format('CHR compiler WARNING: undocumented pragma ~w in ~@. +',[A,format_rule(B,C)]), + format(' `--> Only use this pragma if you know what you are doing. +',[]). +check_pragma(A,B,C) :- + A=already_in_heads, + !, + format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. +',[A,format_rule(B,C)]), + format(' `--> Pragma is ignored. Termination and correctness may be affected +',[]). +check_pragma(A,B,C) :- + A=already_in_head(_), + !, + format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. +',[A,format_rule(B,C)]), + format(' `--> Pragma is ignored. Termination and correctness may be affected +',[]). +check_pragma(A,B,C) :- + format('CHR compiler ERROR: invalid pragma ~w in ~@. +',[A,format_rule(B,C)]), + format(' `--> Pragma should be one of passive/1! +',[]), + fail. +format_rule(A,B) :- + A=pragma(_,_,_,C), + ( C=yes(D) -> + write('rule '), + write(D) + ; + write('rule number '), + write(B) + ). +handle_option(A,B) :- + var(A), + !, + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> First argument should be an atom, not a variable. +',[]), + fail. +handle_option(A,B) :- + var(B), + !, + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> Second argument should be a nonvariable. +',[]), + fail. +handle_option(A,B) :- + option_definition(A,B,C), + !, + set_chr_pp_flags(C). +handle_option(A,_) :- + \+option_definition(A,_,_), + !. +handle_option(A,B) :- + findall(C,option_definition(A,C,_),D), + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> Invalid value ~w: should be one of ~w. +',[B,D]), + fail. +option_definition(optimize,experimental,A) :- + A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. +option_definition(optimize,full,A) :- + A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. +option_definition(optimize,sicstus,A) :- + A=[unique_analyse_optimise-off,check_unnecessary_active-simplification,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. +option_definition(optimize,off,A) :- + A=[unique_analyse_optimise-off,check_unnecessary_active-off,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. +option_definition(debug,off,A) :- + A=[debugable-off]. +option_definition(debug,on,A) :- + A=[debugable-on]. +option_definition(check_guard_bindings,on,A) :- + A=[guard_locks-on]. +option_definition(check_guard_bindings,off,A) :- + A=[guard_locks-off]. +init_chr_pp_flags :- + chr_pp_flag_definition(A,[B|_]), + set_chr_pp_flag(A,B), + fail. +init_chr_pp_flags. +set_chr_pp_flags([]). +set_chr_pp_flags([A-B|C]) :- + set_chr_pp_flag(A,B), + set_chr_pp_flags(C). +set_chr_pp_flag(A,B) :- + atomic_concat('$chr_pp_',A,C), + nb_setval(C,B). +chr_pp_flag_definition(unique_analyse_optimise,[on,off]). +chr_pp_flag_definition(check_unnecessary_active,[full,simplification,off]). +chr_pp_flag_definition(reorder_heads,[on,off]). +chr_pp_flag_definition(set_semantics_rule,[on,off]). +chr_pp_flag_definition(guard_via_reschedule,[on,off]). +chr_pp_flag_definition(guard_locks,[on,off]). +chr_pp_flag_definition(check_attachments,[on,off]). +chr_pp_flag_definition(debugable,[off,on]). +chr_pp_flag(A,B) :- + atomic_concat('$chr_pp_',A,C), + nb_getval(C,D), + ( D==[] -> + chr_pp_flag_definition(A,[B|_]) + ; + D=B + ). +generate_attach_detach_a_constraint_all([],[]). +generate_attach_detach_a_constraint_all([A|B],C) :- + ( is_attached(A) -> + generate_attach_a_constraint(A,D), + generate_detach_a_constraint(A,E) + ; + D=[], + E=[] + ), + generate_attach_detach_a_constraint_all(B,F), + append([D,E,F],C). +generate_attach_a_constraint(A,[B,C]) :- + generate_attach_a_constraint_empty_list(A,B), + get_max_constraint_index(D), + ( D==1 -> + generate_attach_a_constraint_1_1(A,C) + ; + generate_attach_a_constraint_t_p(A,C) + ). +generate_attach_a_constraint_empty_list(A/B,C) :- + atom_concat_list([attach_,A,/,B],D), + E=[[],_], + F=..[D|E], + C=(F:-true). +generate_attach_a_constraint_1_1(A/B,C) :- + atom_concat_list([attach_,A,/,B],D), + E=[[F|G],H], + I=..[D|E], + J=..[D,G,H], + get_target_module(K), + L=((get_attr(F,K,M)->N=[H|M],put_attr(F,K,N);put_attr(F,K,[H])),J), + C=(I:-L). +generate_attach_a_constraint_t_p(A/B,C) :- + atom_concat_list([attach_,A,/,B],D), + E=[[F|G],H], + I=..[D|E], + J=..[D,G,H], + get_constraint_index(A/B,K), + or_pattern(K,L), + get_max_constraint_index(M), + make_attr(M,N,O,P), + nth1(K,O,Q), + substitute_eq(Q,O,[H|Q],R), + make_attr(M,N,R,S), + substitute_eq(Q,O,[H],T), + make_attr(M,U,T,V), + copy_term_nat(O,W), + nth1(K,W,[H]), + chr_delete(W,[H],X), + set_elems(X,[]), + make_attr(M,L,W,Y), + get_target_module(Z), + A1=((get_attr(F,Z,B1)->B1=P,(N/\L=:=L->put_attr(F,Z,S);U is N\/L,put_attr(F,Z,V));put_attr(F,Z,Y)),J), + C=(I:-A1). +generate_detach_a_constraint(A,[B,C]) :- + generate_detach_a_constraint_empty_list(A,B), + get_max_constraint_index(D), + ( D==1 -> + generate_detach_a_constraint_1_1(A,C) + ; + generate_detach_a_constraint_t_p(A,C) + ). +generate_detach_a_constraint_empty_list(A/B,C) :- + atom_concat_list([detach_,A,/,B],D), + E=[[],_], + F=..[D|E], + C=(F:-true). +generate_detach_a_constraint_1_1(A/B,C) :- + atom_concat_list([detach_,A,/,B],D), + E=[[F|G],H], + I=..[D|E], + J=..[D,G,H], + get_target_module(K), + L=((get_attr(F,K,M)->'chr sbag_del_element'(M,H,N),(N==[]->del_attr(F,K);put_attr(F,K,N));true),J), + C=(I:-L). +generate_detach_a_constraint_t_p(A/B,C) :- + atom_concat_list([detach_,A,/,B],D), + E=[[F|G],H], + I=..[D|E], + J=..[D,G,H], + get_constraint_index(A/B,K), + or_pattern(K,L), + and_pattern(K,M), + get_max_constraint_index(N), + make_attr(N,O,P,Q), + nth1(K,P,R), + substitute_eq(R,P,[],S), + make_attr(N,T,S,U), + substitute_eq(R,P,V,W), + make_attr(N,O,W,X), + get_target_module(Y), + Z=((get_attr(F,Y,A1)->A1=Q,(O/\L=:=L->'chr sbag_del_element'(R,H,V),(V==[]->T is O/\M,(T==0->del_attr(F,Y);put_attr(F,Y,U));put_attr(F,Y,X));true);true),J), + C=(I:-Z). +generate_attach_increment([A,B]) :- + generate_attach_increment_empty(A), + get_max_constraint_index(C), + ( C==1 -> + generate_attach_increment_one(B) + ; + generate_attach_increment_many(C,B) + ). +generate_attach_increment_empty((attach_increment([],_):-true)). +generate_attach_increment_one(A) :- + B=attach_increment([C|D],E), + get_target_module(F), + G=('chr not_locked'(C),(get_attr(C,F,H)->sort(H,I),merge(E,I,J),put_attr(C,F,J);put_attr(C,F,E)),attach_increment(D,E)), + A=(B:-G). +generate_attach_increment_many(A,B) :- + make_attr(A,C,D,E), + make_attr(A,F,G,H), + I=attach_increment([J|K],E), + bagof(L,M^N^O^P^(member2(D,G,M-N),L=(sort(N,O),'chr merge_attributes'(M,O,P))),Q), + list2conj(Q,R), + bagof(S,T^U^V^member((T,'chr merge_attributes'(U,V,S)),Q),W), + make_attr(A,X,W,Y), + get_target_module(Z), + A1=('chr not_locked'(J),(get_attr(J,Z,B1)->B1=H,R,X is C\/F,put_attr(J,Z,Y);put_attr(J,Z,E)),attach_increment(K,E)), + B=(I:-A1). +generate_attr_unify_hook([A]) :- + get_max_constraint_index(B), + ( B==1 -> + generate_attr_unify_hook_one(A) + ; + generate_attr_unify_hook_many(B,A) + ). +generate_attr_unify_hook_one(A) :- + B=C:attr_unify_hook(D,E), + get_target_module(C), + make_run_suspensions(F,G), + make_run_suspensions(D,H), + I=(sort(D,J),(var(E)->(get_attr(E,C,K)->true;K=[]),sort(K,L),'chr merge_attributes'(J,L,F),put_attr(E,C,F),G;(compound(E)->term_variables(E,M),attach_increment(M,J);true),H)), + A=(B:-I). +generate_attr_unify_hook_many(A,B) :- + make_attr(A,C,D,E), + make_attr(A,F,G,H), + bagof(I,J^K^(member(J,D),I=sort(J,K)),L), + list2conj(L,M), + bagof(K,J^member(sort(J,K),L),N), + bagof(O,P^Q^R^S^(member2(N,G,P-Q),O=(sort(Q,R),'chr merge_attributes'(P,R,S))),T), + bagof(S,P^R^U^member((U,'chr merge_attributes'(P,R,S)),T),V), + list2conj(T,W), + make_attr(A,X,V,Y), + make_attr(A,C,N,Z), + A1=B1:attr_unify_hook(E,C1), + get_target_module(B1), + make_run_suspensions_loop(V,D1), + make_run_suspensions_loop(N,E1), + F1=(M,(var(C1)->(get_attr(C1,B1,G1)->G1=H,W,X is C\/F,put_attr(C1,B1,Y),D1;put_attr(C1,B1,Z),E1);(compound(C1)->term_variables(C1,H1),attach_increment(H1,Z);true),E1)), + B=(A1:-F1). +make_run_suspensions(A,B) :- + ( chr_pp_flag(debugable,on) -> + B='chr run_suspensions_d'(A) + ; + B='chr run_suspensions'(A) + ). +make_run_suspensions_loop(A,B) :- + ( chr_pp_flag(debugable,on) -> + B='chr run_suspensions_loop_d'(A) + ; + B='chr run_suspensions_loop'(A) + ). +check_attachments(A) :- + ( chr_pp_flag(check_attachments,on) -> + check_attachments_(A) + ; + true + ). +check_attachments_([]). +check_attachments_([A|B]) :- + check_attachment(A), + check_attachments_(B). +check_attachment(A) :- + A=pragma(B,_,_,_), + B=rule(C,D,E,F), + check_attachment_heads1(C,C,D,E), + check_attachment_heads2(D,C,F). +check_attachment_heads1([],_,_,_). +check_attachment_heads1([A|B],C,D,E) :- + functor(A,F,G), + ( C==[A], + D==[], + E==true, + A=..[_|H], + no_matching(H,[]) -> + attached(F/G,no) + ; + attached(F/G,maybe) + ), + check_attachment_heads1(B,C,D,E). +no_matching([],_). +no_matching([A|B],C) :- + var(A), + \+memberchk_eq(A,C), + no_matching(B,[A|C]). +check_attachment_heads2([],_,_). +check_attachment_heads2([A|B],C,D) :- + functor(A,E,F), + ( C\==[], + D==true -> + attached(E/F,maybe) + ; + attached(E/F,yes) + ), + check_attachment_heads2(B,C,D). +all_attached([]). +all_attached([A|B]) :- + functor(A,C,D), + is_attached(C/D), + all_attached(B). +set_constraint_indices([],A) :- + B is A-1, + max_constraint_index(B). +set_constraint_indices([A|B],C) :- + ( is_attached(A) -> + constraint_index(A,C), + D is C+1, + set_constraint_indices(B,D) + ; + set_constraint_indices(B,C) + ). +constraints_code(A,B,C) :- + post_constraints(A,1), + constraints_code1(1,B,D,[]), + clean_clauses(D,C). +post_constraints([],A) :- + B is A-1, + constraint_count(B). +post_constraints([A/B|C],D) :- + constraint(A/B,D), + E is D+1, + post_constraints(C,E). +constraints_code1(A,B,C,D) :- + constraint_count(E), + ( A>E -> + D=C + ; + constraint_code(A,B,C,F), + G is A+1, + constraints_code1(G,B,F,D) + ). +constraint_code(A,B,C,D) :- + constraint(E,A), + constraint_prelude(E,F), + C=[F|G], + H=[0], + rules_code(B,1,A,H,I,G,J), + gen_cond_attach_clause(E,I,J,D). +constraint_prelude(A/B,C) :- + vars_susp(B,D,E,F), + G=..[A|D], + build_head(A,B,[0],F,H), + get_target_module(I), + ( chr_pp_flag(debugable,on) -> + C=(G:-'chr allocate_constraint'(I:H,E,A,D),('chr debug_event'(call(E)),H;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) + ; + C=(G:-H) + ). +gen_cond_attach_clause(A/B,C,D,E) :- + ( is_attached(A/B) -> + ( C==[0] -> + gen_cond_attach_goal(A/B,F,G,H,I) + ; + vars_susp(B,H,I,G), + gen_uncond_attach_goal(A/B,I,F,_) + ), + ( chr_pp_flag(debugable,on) -> + J=..[A|H], + K='chr debug_event'(insert(J#I)) + ; + K=true + ), + build_head(A,B,C,G,L), + M=(L:-K,F), + D=[M|E] + ; + D=E + ). +gen_cond_attach_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + build_head(A,B,[0],D,G), + atom_concat_list([attach_,A,/,B],H), + I=..[H,J,F], + get_target_module(K), + C=((var(F)->'chr insert_constraint_internal'(J,F,K:G,A,E);'chr activate_constraint'(J,F,_)),I). +gen_uncond_attach_goal(A/B,C,D,E) :- + atom_concat_list([attach_,A,/,B],F), + G=..[F,H,C], + D=('chr activate_constraint'(H,C,E),G). +rules_code([],_,_,A,A,B,B). +rules_code([A|B],C,D,E,F,G,H) :- + rule_code(A,C,D,E,I,G,J), + K is C+1, + rules_code(B,K,D,I,F,J,H). +rule_code(A,B,C,D,E,F,G) :- + A=pragma(H,I,_,_), + I=ids(J,K), + H=rule(L,M,_,_), + heads1_code(L,[],J,[],A,C,D,F,N), + heads2_code(M,[],K,[],A,B,C,D,E,N,G). +heads1_code([],_,_,_,_,_,_,A,A). +heads1_code([A|B],C,[D|E],F,G,H,I,J,K) :- + G=pragma(L,_,M,_), + constraint(N/O,H), + ( functor(A,N,O), + \+check_unnecessary_active(A,C,L), + \+memberchk_eq(passive(D),M), + all_attached(B), + all_attached(C), + L=rule(_,P,_,_), + all_attached(P) -> + append(B,C,Q), + append(E,F,R), + head1_code(A,Q,R,G,N/O,H,I,J,S) + ; + J=S + ), + heads1_code(B,[A|C],E,[D|F],G,H,I,S,K). +head1_code(A,B,C,D,E,_,F,G,H) :- + D=pragma(I,_,_,_), + I=rule(_,J,_,_), + ( J==[] -> + reorder_heads(A,B,C,K,L), + simplification_code(A,K,L,D,E,F,G,H) + ; + simpagation_head1_code(A,B,C,D,E,F,G,H) + ). +heads2_code([],_,_,_,_,_,_,A,A,B,B). +heads2_code([A|B],C,[D|E],F,G,H,I,J,K,L,M) :- + G=pragma(N,_,O,_), + constraint(P/Q,I), + ( functor(A,P,Q), + \+check_unnecessary_active(A,C,N), + \+memberchk_eq(passive(D),O), + \+set_semantics_rule(G), + all_attached(B), + all_attached(C), + N=rule(R,_,_,_), + all_attached(R) -> + append(B,C,S), + append(E,F,T), + length(B,U), + head2_code(A,S,T,G,H,U,P/Q,J,L,V), + inc_id(J,W), + gen_alloc_inc_clause(P/Q,J,V,X) + ; + L=X, + W=J + ), + heads2_code(B,[A|C],E,[D|F],G,H,I,W,K,X,M). +head2_code(A,B,C,D,E,F,G,H,I,J) :- + D=pragma(K,_,_,_), + K=rule(L,_,_,_), + ( L==[] -> + reorder_heads(A,B,M), + propagation_code(A,M,K,E,F,G,H,I,J) + ; + simpagation_head2_code(A,B,C,D,G,H,I,J) + ). +gen_alloc_inc_clause(A/B,C,D,E) :- + vars_susp(B,F,G,H), + build_head(A,B,C,H,I), + inc_id(C,J), + build_head(A,B,J,H,K), + ( C==[0] -> + gen_cond_allocation(F,G,A/B,H,L) + ; + L=true + ), + M=(I:-L,K), + D=[M|E]. +gen_cond_allocation(A,B,C/D,E,F) :- + build_head(C,D,[0],E,G), + get_target_module(H), + F=(var(B)->'chr allocate_constraint'(H:G,B,C,A);true). +guard_via_reschedule(A,B,C,D) :- + ( chr_pp_flag(guard_via_reschedule,on) -> + guard_via_reschedule_main(A,B,C,D) + ; + append(A,B,E), + list2conj(E,D) + ). +guard_via_reschedule_main(A,B,C,D) :- + initialize_unit_dictionary(C,E), + build_units(A,B,E,F), + dependency_reorder(F,G), + units2goal(G,D). +units2goal([],true). +units2goal([unit(_,A,_,_)|B],(A,C)) :- + units2goal(B,C). +dependency_reorder(A,B) :- + dependency_reorder(A,[],B). +dependency_reorder([],A,B) :- + reverse(A,B). +dependency_reorder([A|B],C,D) :- + A=unit(_,_,E,F), + ( E==fixed -> + G=[A|C] + ; + dependency_insert(C,A,F,G) + ), + dependency_reorder(B,G,D). +dependency_insert([],A,_,[A]). +dependency_insert([A|B],C,D,E) :- + A=unit(F,_,_,_), + ( memberchk(F,D) -> + E=[C,A|B] + ; + E=[A|G], + dependency_insert(B,C,D,G) + ). +build_units(A,B,C,D) :- + build_retrieval_units(A,1,E,C,F,D,G), + build_guard_units(B,E,F,G). +build_retrieval_units([],A,A,B,B,C,C). +build_retrieval_units([A|B],C,D,E,F,G,H) :- + term_variables(A,I), + update_unit_dictionary(I,C,E,J,[],K), + G=[unit(C,A,movable,K)|L], + M is C+1, + build_retrieval_units2(B,M,D,J,F,L,H). +build_retrieval_units2([],A,A,B,B,C,C). +build_retrieval_units2([A|B],C,D,E,F,G,H) :- + term_variables(A,I), + update_unit_dictionary(I,C,E,J,[],K), + G=[unit(C,A,fixed,K)|L], + M is C+1, + build_retrieval_units(B,M,D,J,F,L,H). +initialize_unit_dictionary(A,B) :- + term_variables(A,C), + pair_all_with(C,0,B). +update_unit_dictionary([],_,A,A,B,B). +update_unit_dictionary([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=D + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary(B,C,J,E,I,G). +build_guard_units(A,B,C,D) :- + ( A=[E] -> + D=[unit(B,E,fixed,[])] + ; + ( A=[E|F] -> + term_variables(E,G), + update_unit_dictionary2(G,B,C,H,[],I), + D=[unit(B,E,movable,I)|J], + K is B+1, + build_guard_units(F,K,H,J) + ) + ). +update_unit_dictionary2([],_,A,A,B,B). +update_unit_dictionary2([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=[A-C|D] + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary2(B,C,J,E,I,G). +unique_analyse_optimise(A,B) :- + ( chr_pp_flag(unique_analyse_optimise,on) -> + unique_analyse_optimise_main(A,1,[],B) + ; + B=A + ). +unique_analyse_optimise_main([],_,_,[]). +unique_analyse_optimise_main([A|B],C,D,[E|F]) :- + ( discover_unique_pattern(A,C,G) -> + H=[G|D] + ; + H=D + ), + A=pragma(I,J,K,L), + I=rule(M,N,_,_), + J=ids(O,P), + apply_unique_patterns_to_constraints(M,O,H,Q), + apply_unique_patterns_to_constraints(N,P,H,R), + append([Q,R,K],S), + E=pragma(I,J,S,L), + T is C+1, + unique_analyse_optimise_main(B,T,H,F). +apply_unique_patterns_to_constraints([],_,_,[]). +apply_unique_patterns_to_constraints([A|B],[C|D],E,F) :- + ( member(G,E), + apply_unique_pattern(A,C,G,H) -> + F=[H|I] + ; + F=I + ), + apply_unique_patterns_to_constraints(B,D,E,I). +apply_unique_pattern(A,B,C,D) :- + C=unique(E,F), + subsumes(A,E,G), + ( setof(H,I^J^K^(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L) -> + true + ; + L=[] + ), + D=unique(B,L). +subsumes(A,B,C) :- + empty_ds(D), + subsumes_aux(A,B,D,E), + ds_to_list(E,F), + build_unifier(F,C). +subsumes_aux(A,B,C,D) :- + ( compound(B), + functor(B,E,F) -> + compound(A), + functor(A,E,F), + subsumes_aux(F,A,B,C,D) + ; + ( A==B -> + D=C + ) + ; + ( var(B), + get_ds(A,C,G) -> + G==B, + D=C + ) + ; + var(B), + put_ds(A,C,B,D) + ). +subsumes_aux(0,_,_,A,A) :- + !. +subsumes_aux(A,B,C,D,E) :- + arg(A,B,F), + arg(A,C,G), + subsumes_aux(F,G,D,H), + I is A-1, + subsumes_aux(I,B,C,H,E). +build_unifier([],[]). +build_unifier([A-B|C],[B-A|D]) :- + build_unifier(C,D). +discover_unique_pattern(A,B,C) :- + A=pragma(D,_,E,F), + ( D=rule([G],[H],I,J) -> + true + ; + D=rule([G,H],[],I,J) + ), + check_unique_constraints(G,H,I,J,E,K), + term_variables(G,L), + select_pragma_unique_variables(K,L,M), + N=unique(G,M), + copy_term_nat(N,C), + ( verbosity_on -> + format('Found unique pattern ~w in rule ~d~@ +',[C,B,(F=yes(O)->write([58,32]),write(O);true)]) + ; + true + ). +select_pragma_unique_variables([],_,[]). +select_pragma_unique_variables([A-B|C],D,E) :- + ( A==B -> + E=[A|F] + ; + once((\+memberchk_eq(A,D);\+memberchk_eq(B,D))), + E=F + ), + select_pragma_unique_variables(C,D,F). +check_unique_constraints(A,B,C,_,D,E) :- + \+member(passive(_),D), + variable_replacement(A-B,B-A,E), + copy_with_variable_replacement(C,F,E), + negate(C,G), + once(entails(G,F)). +negate(true,fail). +negate(fail,true). +negate(A=B,B>=A). +negate(A>=B,B>A). +negate(AB,C>=D) :- + C==A, + D==B. +entails(A + check_unnecessary_active_main(A,B,C) + ; + ( chr_pp_flag(check_unnecessary_active,simplification), + C=rule(_,[],_,_) -> + check_unnecessary_active_main(A,B,C) + ) + ; + fail + ). +check_unnecessary_active_main(A,B,C) :- + member(D,B), + variable_replacement(D,A,E), + copy_with_variable_replacement(C,F,E), + identical_rules(C,F), + !. +set_semantics_rule(A) :- + ( chr_pp_flag(set_semantics_rule,on) -> + set_semantics_rule_main(A) + ; + fail + ). +set_semantics_rule_main(A) :- + A=pragma(B,C,D,_), + B=rule([_],[_],true,_), + C=ids([E],[F]), + once(member(unique(E,G),D)), + once(member(unique(F,H),D)), + G==H, + \+memberchk_eq(passive(E),D). +identical_rules(rule(A,B,C,D),rule(E,F,G,H)) :- + C==G, + identical_bodies(D,H), + permutation(A,I), + I==E, + permutation(B,J), + J==F. +identical_bodies(A,B) :- + ( A=(C=D), + B=(E=F) -> + ( + C==E, + D==F + ; + C==F, + E==D + ), + ! + ; + A==B + ). +copy_with_variable_replacement(A,B,C) :- + ( var(A) -> + ( lookup_eq(C,A,B) -> + true + ; + A=B + ) + ; + functor(A,D,E), + functor(B,D,E), + A=..[_|F], + B=..[_|G], + copy_with_variable_replacement_l(F,G,C) + ). +copy_with_variable_replacement_l([],[],_). +copy_with_variable_replacement_l([A|B],[C|D],E) :- + copy_with_variable_replacement(A,C,E), + copy_with_variable_replacement_l(B,D,E). +variable_replacement(A,B,C) :- + variable_replacement(A,B,[],C). +variable_replacement(A,B,C,D) :- + ( var(A) -> + var(B), + ( lookup_eq(C,A,E) -> + E==B, + D=C + ; + D=[A-B|C] + ) + ; + A=..[F|G], + nonvar(B), + B=..[F|H], + variable_replacement_l(G,H,C,D) + ). +variable_replacement_l([],[],A,A). +variable_replacement_l([A|B],[C|D],E,F) :- + variable_replacement(A,C,E,G), + variable_replacement_l(B,D,G,F). +simplification_code(A,B,C,D,E/F,G,H,I) :- + D=pragma(J,_,K,_), + head_info(A,F,_,L,M,N), + build_head(E,F,G,M,O), + head_arg_matches(N,[],P,Q), + ( B==[] -> + R=[], + S=Q, + T=[] + ; + rest_heads_retrieval_and_matching(B,C,K,A,T,R,Q,S) + ), + guard_body_copies2(J,S,U,V), + guard_via_reschedule(T,U,O-P,W), + gen_uncond_susps_detachments(R,B,X), + gen_cond_susp_detachment(L,E/F,Y), + ( chr_pp_flag(debugable,on) -> + J=rule(_,_,Z,A1), + my_term_copy(Z-A1,S,_,B1-C1), + D1='chr debug_event'(try([L|E1],[],B1,C1)), + F1='chr debug_event'(apply([L|E1],[],B1,C1)) + ; + D1=true, + F1=true + ), + G1=(O:-P,W,D1,!,F1,X,Y,V), + H=[G1|I]. +head_arg_matches(A,B,C,D) :- + head_arg_matches_(A,B,E,D), + list2conj(E,C). +head_arg_matches_([],A,[],A). +head_arg_matches_([A-B|C],D,E,F) :- + ( var(A) -> + ( lookup_eq(D,A,G) -> + E=[B==G|H], + I=D + ; + I=[A-B|D], + E=H + ), + J=C + ; + ( atomic(A) -> + E=[B==A|H], + D=I, + J=C + ) + ; + A=..[_|K], + functor(A,L,M), + functor(N,L,M), + N=..[_|O], + E=[nonvar(B),B=N|H], + pairup(K,O,P), + append(P,C,J), + I=D + ), + head_arg_matches_(J,I,H,F). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H) :- + rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,[],[],[]). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K) :- + ( A=[_|_] -> + rest_heads_retrieval_and_matching_n(A,B,C,I,J,D,E,F,G,H,K) + ; + E=[], + F=[], + G=H + ). +rest_heads_retrieval_and_matching_n([],_,_,_,_,_,[],[],A,A,B) :- + instantiate_pattern_goals(B). +rest_heads_retrieval_and_matching_n([A|B],[C|D],E,F,G,H,[I,J|K],[L|M],N,O,P) :- + passive_head_via(A,[H|F],P,N,I,Q,R), + functor(A,S,T), + head_info(A,T,U,_,_,V), + head_arg_matches(V,N,W,X), + Y=..[suspension,_,Z,_,_,_,_|U], + get_max_constraint_index(A1), + ( A1==1 -> + B1=Q + ; + get_constraint_index(S/T,C1), + make_attr(A1,_,D1,Q), + nth1(C1,D1,B1) + ), + different_from_other_susps(A,L,F,G,E1), + create_get_mutable_ref(active,Z,F1), + G1=('chr sbag_member'(L,B1),L=Y,F1,E1,W), + ( member(unique(C,H1),E), + check_unique_keys(H1,N) -> + J=(G1->true) + ; + J=G1 + ), + rest_heads_retrieval_and_matching_n(B,D,E,[A|F],[L|G],H,K,M,X,O,R). +instantiate_pattern_goals([]). +instantiate_pattern_goals([_-attr(A,B,C)|D]) :- + get_max_constraint_index(E), + ( E==1 -> + C=true + ; + make_attr(E,F,_,A), + or_list(B,G), + !, + C=(F/\G=:=G) + ), + instantiate_pattern_goals(D). +check_unique_keys([],_). +check_unique_keys([A|B],C) :- + lookup_eq(C,A,_), + check_unique_keys(B,C). +different_from_other_susps(A,B,C,D,E) :- + ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> + list2conj(J,E) + ; + E=true + ). +passive_head_via(A,B,C,D,E,F,G) :- + functor(A,H,I), + get_constraint_index(H/I,J), + common_variables(A,B,K), + translate(K,D,L), + or_pattern(J,M), + ( permutation(L,N), + lookup_eq(C,N,attr(F,O,_)) -> + member(M,O), + !, + G=C, + E=true + ; + E=(P,Q), + gen_get_mod_constraints(L,P,F), + G=[L-attr(F,[M|_],Q)|C] + ). +common_variables(A,B,C) :- + term_variables(A,D), + term_variables(B,E), + intersect_eq(D,E,C). +gen_get_mod_constraints(A,B,C) :- + get_target_module(D), + ( A==[] -> + B=('chr default_store'(E),get_attr(E,D,F),F=C) + ; + ( A=[G] -> + H='chr via_1'(G,I) + ; + ( A=[G,J] -> + H='chr via_2'(G,J,I) + ) + ; + H='chr via'(A,I) + ), + B=(H,get_attr(I,D,F),F=C) + ). +guard_body_copies(A,B,C,D) :- + guard_body_copies2(A,B,E,D), + list2conj(E,C). +guard_body_copies2(A,B,C,D) :- + A=rule(_,_,E,F), + conj2list(E,G), + split_off_simple_guard(G,B,H,I), + my_term_copy(H-I,B,J,K-L), + append(K,[M],C), + term_variables(I,N), + term_variables(L,O), + ( chr_pp_flag(guard_locks,on), + bagof('chr lock'(P)-'chr unlock'(P),Q^(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) -> + once(pairup(S,T,R)) + ; + S=[], + T=[] + ), + list2conj(S,U), + list2conj(T,V), + list2conj(L,W), + M=(U,W,V), + my_term_copy(F,J,D). +split_off_simple_guard([],_,[],[]). +split_off_simple_guard([A|B],C,D,E) :- + ( simple_guard(A,C) -> + D=[A|F], + split_off_simple_guard(B,C,F,E) + ; + D=[], + E=[A|B] + ). +simple_guard(var(_),_). +simple_guard(nonvar(_),_). +simple_guard(ground(_),_). +simple_guard(number(_),_). +simple_guard(atom(_),_). +simple_guard(integer(_),_). +simple_guard(float(_),_). +simple_guard(_>_,_). +simple_guard(_<_,_). +simple_guard(_=<_,_). +simple_guard(_>=_,_). +simple_guard(_=:=_,_). +simple_guard(_==_,_). +simple_guard(A is _,B) :- + \+lookup_eq(B,A,_). +simple_guard((A,B),C) :- + simple_guard(A,C), + simple_guard(B,C). +simple_guard(\+A,B) :- + simple_guard(A,B). +my_term_copy(A,B,C) :- + my_term_copy(A,B,_,C). +my_term_copy(A,B,C,D) :- + ( var(A) -> + ( lookup_eq(B,A,D) -> + C=B + ; + C=[A-D|B] + ) + ; + functor(A,E,F), + functor(D,E,F), + A=..[_|G], + D=..[_|H], + my_term_copy_list(G,B,C,H) + ). +my_term_copy_list([],A,A,[]). +my_term_copy_list([A|B],C,D,[E|F]) :- + my_term_copy(A,C,G,E), + my_term_copy_list(B,G,D,F). +gen_cond_susp_detachment(A,B,C) :- + ( is_attached(B) -> + gen_uncond_susp_detachment(A,B,D), + C=(var(A)->true;D) + ; + C=true + ). +gen_uncond_susp_detachment(A,B/C,D) :- + ( is_attached(B/C) -> + atom_concat_list([detach_,B,/,C],E), + F=..[E,G,A], + ( chr_pp_flag(debugable,on) -> + H='chr debug_event'(remove(A)) + ; + H=true + ), + D=(H,'chr remove_constraint_internal'(A,G),F) + ; + D=true + ). +gen_uncond_susps_detachments([],[],true). +gen_uncond_susps_detachments([A|B],[C|D],(E,F)) :- + functor(C,G,H), + gen_uncond_susp_detachment(A,G/H,E), + gen_uncond_susps_detachments(B,D,F). +simpagation_head1_code(A,B,C,D,E/F,G,H,I) :- + D=pragma(J,ids(_,K),L,_), + J=rule(_,M,N,O), + head_info(A,F,_,P,Q,R), + head_arg_matches(R,[],S,T), + build_head(E,F,G,Q,U), + append(B,M,V), + append(C,K,W), + reorder_heads(A,V,W,X,Y), + rest_heads_retrieval_and_matching(X,Y,L,A,Z,A1,T,B1), + split_by_ids(Y,A1,C,C1,D1), + guard_body_copies2(J,B1,E1,F1), + guard_via_reschedule(Z,E1,U-S,G1), + gen_uncond_susps_detachments(C1,B,H1), + gen_cond_susp_detachment(P,E/F,I1), + ( chr_pp_flag(debugable,on) -> + my_term_copy(N-O,B1,_,J1-K1), + L1='chr debug_event'(try([P|C1],D1,J1,K1)), + M1='chr debug_event'(apply([P|C1],D1,J1,K1)) + ; + L1=true, + M1=true + ), + N1=(U:-S,G1,L1,!,M1,H1,I1,F1), + H=[N1|I]. +split_by_ids([],[],_,[],[]). +split_by_ids([A|B],[C|D],E,F,G) :- + ( memberchk_eq(A,E) -> + F=[C|H], + G=I + ; + F=H, + G=[C|I] + ), + split_by_ids(B,D,E,H,I). +simpagation_head2_code(A,B,C,D,E,F,G,H) :- + D=pragma(I,ids(J,_),K,_), + I=rule(L,_,M,N), + reorder_heads(A,L,J,[O|P],[Q|R]), + simpagation_head2_prelude(A,O,[B,L,M,N],E,F,G,S), + extend_id(F,T), + simpagation_head2_worker(A,O,Q,P,R,B,C,I,K,E,T,S,H). +simpagation_head2_prelude(A,B,C,D/E,F,G,H) :- + head_info(A,E,I,J,K,L), + build_head(D,E,F,K,M), + head_arg_matches(L,[],N,O), + passive_head_via(B,[A],[],O,P,Q,R), + instantiate_pattern_goals(R), + get_max_constraint_index(S), + ( S==1 -> + T=Q + ; + functor(B,U,V), + get_constraint_index(U/V,W), + make_attr(S,_,X,Q), + nth1(W,X,T) + ), + ( F==[0] -> + gen_cond_allocation(I,J,D/E,K,Y) + ; + Y=true + ), + extend_id(F,Z), + extra_active_delegate_variables(A,C,O,A1), + append([T|K],A1,B1), + build_head(D,E,Z,B1,C1), + D1=(M:-N,P,!,Y,C1), + G=[D1|H]. +extra_active_delegate_variables(A,B,C,D) :- + A=..[_|E], + delegate_variables(A,B,C,E,D). +passive_delegate_variables(A,B,C,D,E) :- + term_variables(B,F), + delegate_variables(A,C,D,F,E). +delegate_variables(A,B,C,D,E) :- + term_variables(A,F), + term_variables(B,G), + intersect_eq(F,G,H), + list_difference_eq(H,D,I), + translate(I,C,E). +simpagation_head2_worker(A,B,C,D,E,F,G,H,I,J,K,L,M) :- + H=rule(_,_,N,O), + simpagation_head2_worker_end(A,[B,D,F,N,O],J,K,L,P), + simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J,K,P,M). +simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J/K,L,M,N) :- + gen_var(O), + gen_var(P), + head_info(A,K,_,Q,R,S), + head_arg_matches(S,[],_,T), + H=rule(_,_,U,V), + extra_active_delegate_variables(A,[B,D,F,U,V],T,W), + append([[O|P]|R],W,X), + build_head(J,K,L,X,Y), + functor(B,_,Z), + head_info(B,Z,A1,_,_,B1), + head_arg_matches(B1,T,C1,D1), + E1=..[suspension,_,F1,_,_,_,_|A1], + create_get_mutable_ref(active,F1,G1), + H1=(O=E1,G1), + ( + ( + D\==[] + ; + F\==[] + ) -> + append(D,F,I1), + append(E,G,J1), + reorder_heads(B-A,I1,J1,K1,L1), + rest_heads_retrieval_and_matching(K1,L1,I,[B,A],M1,N1,D1,O1,[B],[O],[]), + split_by_ids(L1,N1,E,P1,Q1) + ; + M1=[], + P1=[], + Q1=[], + O1=D1 + ), + gen_uncond_susps_detachments([O|P1],[B|D],R1), + append([P|R],W,S1), + build_head(J,K,L,S1,T1), + append([[]|R],W,U1), + build_head(J,K,L,U1,V1), + guard_body_copies2(H,O1,W1,X1), + guard_via_reschedule(M1,W1,v(Y,H1,C1),Y1), + ( X1\==true -> + gen_uncond_attach_goal(J/K,Q,Z1,A2), + gen_state_cond_call(Q,K,T1,A2,B2), + gen_state_cond_call(Q,K,V1,A2,C2) + ; + Z1=true, + B2=T1, + C2=V1 + ), + ( chr_pp_flag(debugable,on) -> + my_term_copy(U-V,O1,_,D2-E2), + F2='chr debug_event'(try([O|P1],[Q|Q1],D2,E2)), + G2='chr debug_event'(apply([O|P1],[Q|Q1],D2,E2)) + ; + F2=true, + G2=true + ), + ( member(unique(C,H2),I), + check_unique_keys(H2,T) -> + I2=(Y:-H1,C1->(Y1,F2->G2,R1,Z1,X1,C2;V1);T1) + ; + I2=(Y:-H1,C1,Y1,F2->G2,R1,Z1,X1,B2;T1) + ), + M=[I2|N]. +gen_state_cond_call(A,B,C,D,E) :- + length(F,B), + G=..[suspension,_,H,_,I,_,_|F], + create_get_mutable_ref(active,H,J), + create_get_mutable_ref(D,I,K), + E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true). +simpagation_head2_worker_end(A,B,C/D,E,F,G) :- + head_info(A,D,_,_,H,I), + head_arg_matches(I,[],_,J), + extra_active_delegate_variables(A,B,J,K), + append([[]|H],K,L), + build_head(C,D,E,L,M), + next_id(E,N), + build_head(C,D,N,H,O), + P=(M:-O), + F=[P|G]. +propagation_code(A,B,C,D,E,F,G,H,I) :- + ( B==[] -> + propagation_single_headed(A,C,D,F,G,H,I) + ; + propagation_multi_headed(A,B,C,D,E,F,G,H,I) + ). +propagation_single_headed(A,B,C,D/E,F,G,H) :- + head_info(A,E,I,J,K,L), + build_head(D,E,F,K,M), + inc_id(F,N), + build_head(D,E,N,K,O), + P=O, + head_arg_matches(L,[],Q,R), + guard_body_copies(B,R,S,T), + ( F==[0] -> + gen_cond_allocation(I,J,D/E,K,U), + V=U + ; + V=true + ), + gen_uncond_attach_goal(D/E,J,W,X), + gen_state_cond_call(J,E,P,X,Y), + ( chr_pp_flag(debugable,on) -> + B=rule(_,_,Z,A1), + my_term_copy(Z-A1,R,_,B1-C1), + D1='chr debug_event'(try([],[J],B1,C1)), + E1='chr debug_event'(apply([],[J],B1,C1)) + ; + D1=true, + E1=true + ), + F1=(M:-Q,V,'chr novel_production'(J,C),S,D1,!,E1,'chr extend_history'(J,C),W,T,Y), + G=[F1|H]. +propagation_multi_headed(A,B,C,D,E,F,G,H,I) :- + B=[J|K], + propagation_prelude(A,B,C,F,G,H,L), + extend_id(G,M), + propagation_nested_code(K,[J,A],C,D,E,F,M,L,I). +propagation_prelude(A,[B|C],D,E/F,G,H,I) :- + head_info(A,F,J,K,L,M), + build_head(E,F,G,L,N), + head_arg_matches(M,[],O,P), + D=rule(_,_,Q,R), + extra_active_delegate_variables(A,[B,C,Q,R],P,S), + passive_head_via(B,[A],[],P,T,U,V), + instantiate_pattern_goals(V), + get_max_constraint_index(W), + ( W==1 -> + X=U + ; + functor(B,Y,Z), + make_attr(W,_,A1,U), + get_constraint_index(Y/Z,B1), + nth1(B1,A1,X) + ), + ( G==[0] -> + gen_cond_allocation(J,K,E/F,L,C1) + ; + C1=true + ), + extend_id(G,D1), + append([X|L],S,E1), + build_head(E,F,D1,E1,F1), + G1=F1, + H1=(N:-O,T,!,C1,G1), + H=[H1|I]. +propagation_nested_code([],[A|B],C,D,E,F,G,H,I) :- + propagation_end([A|B],[],C,F,G,H,J), + propagation_body(A,B,C,D,E,F,G,J,I). +propagation_nested_code([A|B],C,D,E,F,G,H,I,J) :- + propagation_end(C,[A|B],D,G,H,I,K), + propagation_accumulator([A|B],C,D,G,H,K,L), + inc_id(H,M), + propagation_nested_code(B,[A|C],D,E,F,G,M,L,J). +propagation_body(A,B,C,D,E,F/G,H,I,J) :- + C=rule(_,_,K,L), + get_prop_inner_loop_vars(B,[A,K,L],M,N,O,P), + gen_var(Q), + gen_var(R), + functor(A,_,S), + gen_vars(S,T), + U=..[suspension,_,V,_,_,_,_|T], + create_get_mutable_ref(active,V,W), + X=(Q=U,W), + Y=[[Q|R]|M], + build_head(F,G,H,Y,Z), + A1=[R|M], + build_head(F,G,H,A1,B1), + C1=B1, + A=..[_|D1], + pairup(D1,T,E1), + head_arg_matches(E1,N,F1,G1), + different_from_other_susps(A,Q,B,P,H1), + guard_body_copies(C,G1,I1,J1), + gen_uncond_attach_goal(F/G,O,K1,L1), + gen_state_cond_call(O,G,C1,L1,M1), + history_susps(E,[Q|P],O,[],N1), + bagof('chr novel_production'(O1,P1),(member(O1,N1),P1=Q1),R1), + list2conj(R1,S1), + T1=..[t,D|N1], + ( chr_pp_flag(debugable,on) -> + C=rule(_,_,K,L), + my_term_copy(K-L,G1,_,U1-V1), + W1='chr debug_event'(try([],[O,Q|P],U1,V1)), + X1='chr debug_event'(apply([],[O,Q|P],U1,V1)) + ; + W1=true, + X1=true + ), + Y1=(Z:-X,H1,F1,Q1=T1,S1,I1,W1->X1,'chr extend_history'(O,Q1),K1,J1,M1;C1), + I=[Y1|J]. +history_susps(A,B,C,D,E) :- + ( A==0 -> + reverse(B,F), + append(F,[C|D],E) + ; + B=[G|H], + I is A-1, + history_susps(I,H,C,[G|D],E) + ). +get_prop_inner_loop_vars([A],B,C,D,E,[]) :- + !, + functor(A,_,F), + head_info(A,F,_,E,G,H), + head_arg_matches(H,[],_,D), + extra_active_delegate_variables(A,B,D,I), + append(G,I,C). +get_prop_inner_loop_vars([A|B],C,D,E,F,[G|H]) :- + get_prop_inner_loop_vars(B,[A|C],I,J,F,H), + functor(A,_,K), + gen_var(L), + head_info(A,K,_,G,_,M), + head_arg_matches(M,J,_,E), + passive_delegate_variables(A,B,C,E,N), + append(N,[G,L|I],D). +propagation_end([A|B],C,D,E/F,G,H,I) :- + D=rule(_,_,J,K), + gen_var_susp_list_for(B,[A,C,J,K],_,L,M,N), + O=[[]|L], + build_head(E,F,G,O,P), + ( G=[0|_] -> + next_id(G,Q), + R=M + ; + dec_id(G,Q), + R=[N|M] + ), + build_head(E,F,Q,R,S), + T=S, + U=(P:-T), + H=[U|I]. +gen_var_susp_list_for([A],B,C,D,E,F) :- + !, + functor(A,_,G), + head_info(A,G,_,F,E,H), + head_arg_matches(H,[],_,C), + extra_active_delegate_variables(A,B,C,I), + append(E,I,D). +gen_var_susp_list_for([A|B],C,D,E,F,G) :- + gen_var_susp_list_for(B,[A|C],H,F,_,_), + functor(A,_,I), + gen_var(G), + head_info(A,I,_,J,_,K), + head_arg_matches(K,H,_,D), + passive_delegate_variables(A,B,C,D,L), + append(L,[J,G|F],E). +propagation_accumulator([A|B],[C|D],E,F/G,H,I,J) :- + E=rule(_,_,K,L), + pre_vars_and_susps(D,[C,A,B,K,L],M,N,O), + gen_var(P), + functor(C,_,Q), + gen_vars(Q,R), + head_info(C,Q,R,S,_,T), + head_arg_matches(T,N,U,V), + W=..[suspension,_,X,_,_,_,_|R], + different_from_other_susps(C,S,D,O,Y), + create_get_mutable_ref(active,X,Z), + A1=(S=W,Z,Y,U), + functor(A,B1,C1), + passive_head_via(A,[C|D],[],V,D1,E1,F1), + instantiate_pattern_goals(F1), + get_max_constraint_index(G1), + ( G1==1 -> + H1=E1 + ; + get_constraint_index(B1/C1,I1), + make_attr(G1,_,J1,E1), + nth1(I1,J1,H1) + ), + inc_id(H,K1), + L1=[[S|P]|M], + build_head(F,G,H,L1,M1), + passive_delegate_variables(C,D,[A,B,K,L],V,N1), + append([H1|N1],[S,P|M],O1), + build_head(F,G,K1,O1,P1), + Q1=[P|M], + build_head(F,G,H,Q1,R1), + S1=(M1:-A1,D1->P1;R1), + I=[S1|J]. +pre_vars_and_susps([A],B,C,D,[]) :- + !, + functor(A,_,E), + head_info(A,E,_,_,F,G), + head_arg_matches(G,[],_,D), + extra_active_delegate_variables(A,B,D,H), + append(F,H,C). +pre_vars_and_susps([A|B],C,D,E,[F|G]) :- + pre_vars_and_susps(B,[A|C],H,I,G), + functor(A,_,J), + gen_var(K), + head_info(A,J,_,F,_,L), + head_arg_matches(L,I,_,E), + passive_delegate_variables(A,B,C,E,M), + append(M,[F,K|H],D). +reorder_heads(A,B,C,D,E) :- + ( chr_pp_flag(reorder_heads,on) -> + reorder_heads_main(A,B,C,D,E) + ; + D=B, + E=C + ). +reorder_heads_main(A,B,C,D,E) :- + term_variables(A,F), + reorder_heads1(B,C,F,D,E). +reorder_heads1(A,B,C,D,E) :- + ( A==[] -> + D=[], + E=[] + ; + D=[F|G], + E=[H|I], + select_best_head(A,B,C,F,H,J,K,L), + reorder_heads1(J,K,L,G,I) + ). +select_best_head(A,B,C,D,E,F,G,H) :- + ( bagof(tuple(I,J,K,L,M),(select2(J,K,A,B,L,M),order_score(J,C,L,I)),N) -> + true + ; + N=[] + ), + max_go_list(N,tuple(_,D,E,F,G)), + term_variables(D,O), + ( setof(P,(member(P,O),\+memberchk_eq(P,C)),Q) -> + true + ; + Q=[] + ), + append(Q,C,H). +reorder_heads(A,B,C) :- + term_variables(A,D), + reorder_heads1(B,D,C). +reorder_heads1(A,B,C) :- + ( A==[] -> + C=[] + ; + C=[D|E], + select_best_head(A,B,D,F,G), + reorder_heads1(F,G,E) + ). +select_best_head(A,B,C,D,E) :- + ( bagof(tuple(F,G,H),(select(G,A,H),order_score(G,B,H,F)),I) -> + true + ; + I=[] + ), + max_go_list(I,tuple(_,C,D)), + term_variables(C,J), + ( setof(K,(member(K,J),\+memberchk_eq(K,B)),L) -> + true + ; + L=[] + ), + append(L,B,E). +order_score(A,B,C,D) :- + term_variables(A,E), + term_variables(C,F), + order_score_vars(E,B,F,0,D). +order_score_vars([],_,_,A,B) :- + ( A==0 -> + B=99999 + ; + B=A + ). +order_score_vars([A|B],C,D,E,F) :- + ( memberchk_eq(A,C) -> + G is E+1 + ; + ( memberchk_eq(A,D) -> + G is E+1 + ) + ; + G=E + ), + order_score_vars(B,C,D,G,F). +create_get_mutable_ref(A,B,C) :- + C=(B=mutable(A)). +clean_clauses([],[]). +clean_clauses([A|B],[C|D]) :- + clean_clause(A,C), + clean_clauses(B,D). +clean_clause(A,B) :- + ( A=(C:-D) -> + clean_goal(D,E), + ( E==true -> + B=C + ; + B=(C:-E) + ) + ; + B=A + ). +clean_goal(A,B) :- + var(A), + !, + B=A. +clean_goal((A,B),C) :- + !, + clean_goal(A,D), + clean_goal(B,E), + ( D==true -> + C=E + ; + ( E==true -> + C=D + ) + ; + C=(D,E) + ). +clean_goal((A->B;C),D) :- + !, + clean_goal(A,E), + ( E==true -> + clean_goal(B,F), + D=F + ; + ( E==fail -> + clean_goal(C,G), + D=G + ) + ; + clean_goal(B,F), + clean_goal(C,G), + D=(E->F;G) + ). +clean_goal((A;B),C) :- + !, + clean_goal(A,D), + clean_goal(B,E), + ( D==fail -> + C=E + ; + ( E==fail -> + C=D + ) + ; + C=(D;E) + ). +clean_goal(once(A),B) :- + !, + clean_goal(A,C), + ( C==true -> + B=true + ; + ( C==fail -> + B=fail + ) + ; + B=once(C) + ). +clean_goal((A->B),C) :- + !, + clean_goal(A,D), + ( D==true -> + clean_goal(B,C) + ; + ( D==fail -> + C=fail + ) + ; + clean_goal(B,E), + C=(D->E) + ). +clean_goal(A,A). +gen_var(_). +gen_vars(A,B) :- + length(B,A). +head_info(A,B,C,D,E,F) :- + vars_susp(B,C,D,E), + A=..[_|G], + pairup(G,C,F). +inc_id([A|B],[C|B]) :- + C is A+1. +dec_id([A|B],[C|B]) :- + C is A-1. +extend_id(A,[0|A]). +next_id([_,A|B],[C|B]) :- + C is A+1. +build_head(A,B,C,D,E) :- + buildName(A,B,C,F), + E=..[F|D]. +buildName(A,B,C,D) :- + atom_concat(A,/,E), + atomic_concat(E,B,F), + buildName_(C,F,D). +buildName_([],A,A). +buildName_([A|B],C,D) :- + buildName_(B,C,E), + atom_concat(E,'__',F), + atomic_concat(F,A,D). +vars_susp(A,B,C,D) :- + length(B,A), + append(B,[C],D). +make_attr(A,B,C,D) :- + length(C,A), + D=..[v,B|C]. +or_pattern(A,B) :- + C is A-1, + B is 1< + list2conj(B,C) + ; + C=(A,D), + list2conj(B,D) + ). +atom_concat_list([A],A) :- + !. +atom_concat_list([A|B],C) :- + atom_concat_list(B,D), + atomic_concat(A,D,C). +atomic_concat(A,B,C) :- + make_atom(A,D), + make_atom(B,E), + atom_concat(D,E,C). +make_atom(A,B) :- + ( atom(A) -> + B=A + ; + ( number(A) -> + number_codes(A,C), + atom_codes(B,C) + ) + ). +set_elems([],_). +set_elems([A|B],A) :- + set_elems(B,A). +member2([A|_],[B|_],A-B). +member2([_|A],[_|B],C) :- + member2(A,B,C). +select2(A,B,[A|C],[B|D],C,D). +select2(A,B,[C|D],[E|F],[C|G],[E|H]) :- + select2(A,B,D,F,G,H). +pair_all_with([],_,[]). +pair_all_with([A|B],C,[A-C|D]) :- + pair_all_with(B,C,D). +verbosity_on :- + prolog_flag(verbose,A), + A==yes. +'attach_constraint/2'([],_). +'attach_constraint/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\1=:=1 -> + put_attr(A,chr_translate_bootstrap1,v(E,[C|F],G,H,I,J,K)) + ; + L is E\/1, + put_attr(A,chr_translate_bootstrap1,v(L,[C],G,H,I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(1,[C],[],[],[],[],[])) + ), + 'attach_constraint/2'(B,C). +'detach_constraint/2'([],_). +'detach_constraint/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\1=:=1 -> + 'chr sbag_del_element'(F,C,L), + ( L==[] -> + M is E/\ -2, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,[],G,H,I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,L,G,H,I,J,K)) + ) + ; + true + ) + ; + true + ), + 'detach_constraint/2'(B,C). +'attach_constraint_count/1'([],_). +'attach_constraint_count/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\2=:=2 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,[C|G],H,I,J,K)) + ; + L is E\/2, + put_attr(A,chr_translate_bootstrap1,v(L,F,[C],H,I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(2,[],[C],[],[],[],[])) + ), + 'attach_constraint_count/1'(B,C). +'detach_constraint_count/1'([],_). +'detach_constraint_count/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\2=:=2 -> + 'chr sbag_del_element'(G,C,L), + ( L==[] -> + M is E/\ -3, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,F,[],H,I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,F,L,H,I,J,K)) + ) + ; + true + ) + ; + true + ), + 'detach_constraint_count/1'(B,C). +'attach_constraint_index/2'([],_). +'attach_constraint_index/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\4=:=4 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,[C|H],I,J,K)) + ; + L is E\/4, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,[C],I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(4,[],[],[C],[],[],[])) + ), + 'attach_constraint_index/2'(B,C). +'detach_constraint_index/2'([],_). +'detach_constraint_index/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\4=:=4 -> + 'chr sbag_del_element'(H,C,L), + ( L==[] -> + M is E/\ -5, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,F,G,[],I,J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,F,G,L,I,J,K)) + ) + ; + true + ) + ; + true + ), + 'detach_constraint_index/2'(B,C). +'attach_max_constraint_index/1'([],_). +'attach_max_constraint_index/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\8=:=8 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,[C|I],J,K)) + ; + L is E\/8, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,[C],J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(8,[],[],[],[C],[],[])) + ), + 'attach_max_constraint_index/1'(B,C). +'detach_max_constraint_index/1'([],_). +'detach_max_constraint_index/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\8=:=8 -> + 'chr sbag_del_element'(I,C,L), + ( L==[] -> + M is E/\ -9, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,[],J,K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,L,J,K)) + ) + ; + true + ) + ; + true + ), + 'detach_max_constraint_index/1'(B,C). +'attach_target_module/1'([],_). +'attach_target_module/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\16=:=16 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,[C|J],K)) + ; + L is E\/16, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,[C],K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(16,[],[],[],[],[C],[])) + ), + 'attach_target_module/1'(B,C). +'detach_target_module/1'([],_). +'detach_target_module/1'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\16=:=16 -> + 'chr sbag_del_element'(J,C,L), + ( L==[] -> + M is E/\ -17, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,[],K)) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,L,K)) + ) + ; + true + ) + ; + true + ), + 'detach_target_module/1'(B,C). +'attach_attached/2'([],_). +'attach_attached/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\32=:=32 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,[C|K])) + ; + L is E\/32, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,J,[C])) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(32,[],[],[],[],[],[C])) + ), + 'attach_attached/2'(B,C). +'detach_attached/2'([],_). +'detach_attached/2'([A|B],C) :- + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\32=:=32 -> + 'chr sbag_del_element'(K,C,L), + ( L==[] -> + M is E/\ -33, + ( M==0 -> + del_attr(A,chr_translate_bootstrap1) + ; + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,J,[])) + ) + ; + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,L)) + ) + ; + true + ) + ; + true + ), + 'detach_attached/2'(B,C). +attach_increment([],_). +attach_increment([A|B],v(C,D,E,F,G,H,I)) :- + 'chr not_locked'(A), + ( get_attr(A,chr_translate_bootstrap1,J) -> + J=v(K,L,M,N,O,P,Q), + sort(L,R), + 'chr merge_attributes'(D,R,S), + sort(M,T), + 'chr merge_attributes'(E,T,U), + sort(N,V), + 'chr merge_attributes'(F,V,W), + sort(O,X), + 'chr merge_attributes'(G,X,Y), + sort(P,Z), + 'chr merge_attributes'(H,Z,A1), + sort(Q,B1), + 'chr merge_attributes'(I,B1,C1), + D1 is C\/K, + put_attr(A,chr_translate_bootstrap1,v(D1,S,U,W,Y,A1,C1)) + ; + put_attr(A,chr_translate_bootstrap1,v(C,D,E,F,G,H,I)) + ), + attach_increment(B,v(C,D,E,F,G,H,I)). +chr_translate_bootstrap1:attr_unify_hook(v(A,B,C,D,E,F,G),H) :- + sort(B,I), + sort(C,J), + sort(D,K), + sort(E,L), + sort(F,M), + sort(G,N), + ( var(H) -> + ( get_attr(H,chr_translate_bootstrap1,O) -> + O=v(P,Q,R,S,T,U,V), + sort(Q,W), + 'chr merge_attributes'(I,W,X), + sort(R,Y), + 'chr merge_attributes'(J,Y,Z), + sort(S,A1), + 'chr merge_attributes'(K,A1,B1), + sort(T,C1), + 'chr merge_attributes'(L,C1,D1), + sort(U,E1), + 'chr merge_attributes'(M,E1,F1), + sort(V,G1), + 'chr merge_attributes'(N,G1,H1), + I1 is A\/P, + put_attr(H,chr_translate_bootstrap1,v(I1,X,Z,B1,D1,F1,H1)), + 'chr run_suspensions_loop'([X,Z,B1,D1,F1,H1]) + ; + put_attr(H,chr_translate_bootstrap1,v(A,I,J,K,L,M,N)), + 'chr run_suspensions_loop'([I,J,K,L,M,N]) + ) + ; + ( compound(H) -> + term_variables(H,J1), + attach_increment(J1,v(A,I,J,K,L,M,N)) + ; + true + ), + 'chr run_suspensions_loop'([I,J,K,L,M,N]) + ). +constraint(A,B) :- + 'constraint/2__0'(A,B,_). +'constraint/2__0'(A,B,C) :- + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,G,_,_,_,_,_), + F/\1=:=1, + ( 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), + I=mutable(active), + J==A -> + true + ), + !, + ( var(C) -> + true + ; + 'chr remove_constraint_internal'(C,L), + 'detach_constraint/2'(L,C) + ), + B=K. +'constraint/2__0'(A,B,C) :- + 'chr via_1'(B,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,G,_,_,_,_,_), + F/\1=:=1, + 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), + I=mutable(active), + K==B, + !, + ( var(C) -> + true + ; + 'chr remove_constraint_internal'(C,L), + 'detach_constraint/2'(L,C) + ), + A=J. +'constraint/2__0'(A,B,C) :- + ( var(C) -> + 'chr insert_constraint_internal'(D,C,chr_translate_bootstrap1:'constraint/2__0'(A,B,C),constraint,[A,B]) + ; + 'chr activate_constraint'(D,C,_) + ), + 'attach_constraint/2'(D,C). +constraint_count(A) :- + 'constraint_count/1__0'(A,_). +'constraint_count/1__0'(A,B) :- + 'chr default_store'(C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,F,_,_,_,_), + E/\2=:=2, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I), + H=mutable(active), + !, + ( var(B) -> + true + ; + 'chr remove_constraint_internal'(B,J), + 'detach_constraint_count/1'(J,B) + ), + A=I. +'constraint_count/1__0'(A,B) :- + ( var(B) -> + 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'constraint_count/1__0'(A,B),constraint_count,[A]) + ; + 'chr activate_constraint'(C,B,_) + ), + 'attach_constraint_count/1'(C,B). +constraint_index(A,B) :- + 'constraint_index/2__0'(A,B,_). +'constraint_index/2__0'(A,B,C) :- + ( var(C) -> + 'chr insert_constraint_internal'(D,C,chr_translate_bootstrap1:'constraint_index/2__0'(A,B,C),constraint_index,[A,B]) + ; + 'chr activate_constraint'(D,C,_) + ), + 'attach_constraint_index/2'(D,C). +get_constraint_index(A,B) :- + 'get_constraint_index/2__0'(A,B,_). +'get_constraint_index/2__0'(A,B,_) :- + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,F,_,_,_), + E/\4=:=4, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), + H=mutable(active), + I==A, + !, + B=J. +'get_constraint_index/2__0'(_,_,_) :- + !, + fail. +max_constraint_index(A) :- + 'max_constraint_index/1__0'(A,_). +'max_constraint_index/1__0'(A,B) :- + ( var(B) -> + 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'max_constraint_index/1__0'(A,B),max_constraint_index,[A]) + ; + 'chr activate_constraint'(C,B,_) + ), + 'attach_max_constraint_index/1'(C,B). +get_max_constraint_index(A) :- + 'get_max_constraint_index/1__0'(A,_). +'get_max_constraint_index/1__0'(A,_) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,E,_,_), + D/\8=:=8, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H), + G=mutable(active), + !, + A=H. +'get_max_constraint_index/1__0'(_,_) :- + !, + fail. +target_module(A) :- + 'target_module/1__0'(A,_). +'target_module/1__0'(A,B) :- + ( var(B) -> + 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'target_module/1__0'(A,B),target_module,[A]) + ; + 'chr activate_constraint'(C,B,_) + ), + 'attach_target_module/1'(C,B). +get_target_module(A) :- + 'get_target_module/1__0'(A,_). +'get_target_module/1__0'(A,_) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,E,_), + D/\16=:=16, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H), + G=mutable(active), + !, + A=H. +'get_target_module/1__0'(A,_) :- + !, + A=user. +attached(A,B) :- + 'attached/2__0'(A,B,_). +'attached/2__0'(A,_,B) :- + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,_,_,_,F), + E/\32=:=32, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), + H=mutable(active), + I==A, + J==yes, + !, + ( var(B) -> + true + ; + 'chr remove_constraint_internal'(B,K), + 'detach_attached/2'(K,B) + ). +'attached/2__0'(A,B,C) :- + B==yes, + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,_,_,_,_,_,G), + F/\32=:=32, + !, + ( var(C) -> + 'chr allocate_constraint'(chr_translate_bootstrap1:'attached/2__0'(A,B,C),C,attached,[A,B]) + ; + true + ), + 'attached/2__0__0'(G,A,B,C). +'attached/2__0__0'([],A,B,C) :- + 'attached/2__1'(A,B,C). +'attached/2__0__0'([A|B],C,D,E) :- + ( A=suspension(_,F,_,_,_,_,G,_), + F=mutable(active), + G==C -> + 'chr remove_constraint_internal'(A,H), + 'detach_attached/2'(H,A), + 'attached/2__0__0'(B,C,D,E) + ; + 'attached/2__0__0'(B,C,D,E) + ). +'attached/2__0'(A,B,C) :- + ( var(C) -> + 'chr allocate_constraint'(chr_translate_bootstrap1:'attached/2__0'(A,B,C),C,attached,[A,B]) + ; + true + ), + 'attached/2__1'(A,B,C). +'attached/2__1'(A,_,B) :- + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,_,_,_,F), + E/\32=:=32, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), + H=mutable(active), + I==A, + J==no, + !, + ( var(B) -> + true + ; + 'chr remove_constraint_internal'(B,K), + 'detach_attached/2'(K,B) + ). +'attached/2__1'(A,B,C) :- + B==no, + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,_,_,_,_,_,G), + F/\32=:=32, + !, + 'attached/2__1__0'(G,A,B,C). +'attached/2__1__0'([],A,B,C) :- + 'attached/2__2'(A,B,C). +'attached/2__1__0'([A|B],C,D,E) :- + ( A=suspension(_,F,_,_,_,_,G,_), + F=mutable(active), + G==C -> + 'chr remove_constraint_internal'(A,H), + 'detach_attached/2'(H,A), + 'attached/2__1__0'(B,C,D,E) + ; + 'attached/2__1__0'(B,C,D,E) + ). +'attached/2__1'(A,B,C) :- + 'attached/2__2'(A,B,C). +'attached/2__2'(A,B,C) :- + B==maybe, + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,_,_,_,_,_,G), + F/\32=:=32, + ( 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), + I=mutable(active), + J==A, + K==maybe -> + true + ), + !, + ( var(C) -> + true + ; + 'chr remove_constraint_internal'(C,L), + 'detach_attached/2'(L,C) + ). +'attached/2__2'(_,_,A) :- + 'chr activate_constraint'(B,A,_), + 'attach_attached/2'(B,A). +is_attached(A) :- + 'is_attached/1__0'(A,_). +'is_attached/1__0'(A,_) :- + 'chr via_1'(A,B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,_,E), + D/\32=:=32, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H,I), + G=mutable(active), + H==A, + !, + ( I==no -> + fail + ; + true + ). +'is_attached/1__0'(_,_) :- + !. +chr_clear :- + 'chr_clear/0__0'(_). +'chr_clear/0__0'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,E,_,_,_,_,_), + D/\1=:=1, + !, + ( var(A) -> + 'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[]) + ; + true + ), + 'chr_clear/0__0__0'(E,A). +'chr_clear/0__0__0'([],A) :- + 'chr_clear/0__1'(A). +'chr_clear/0__0__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_constraint/2'(E,A), + 'chr_clear/0__0__0'(B,C) + ; + 'chr_clear/0__0__0'(B,C) + ). +'chr_clear/0__0'(A) :- + ( var(A) -> + 'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[]) + ; + true + ), + 'chr_clear/0__1'(A). +'chr_clear/0__1'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,E,_,_,_,_), + D/\2=:=2, + !, + 'chr_clear/0__1__0'(E,A). +'chr_clear/0__1__0'([],A) :- + 'chr_clear/0__2'(A). +'chr_clear/0__1__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_constraint_count/1'(E,A), + 'chr_clear/0__1__0'(B,C) + ; + 'chr_clear/0__1__0'(B,C) + ). +'chr_clear/0__1'(A) :- + 'chr_clear/0__2'(A). +'chr_clear/0__2'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,E,_,_,_), + D/\4=:=4, + !, + 'chr_clear/0__2__0'(E,A). +'chr_clear/0__2__0'([],A) :- + 'chr_clear/0__3'(A). +'chr_clear/0__2__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_constraint_index/2'(E,A), + 'chr_clear/0__2__0'(B,C) + ; + 'chr_clear/0__2__0'(B,C) + ). +'chr_clear/0__2'(A) :- + 'chr_clear/0__3'(A). +'chr_clear/0__3'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,E,_,_), + D/\8=:=8, + !, + 'chr_clear/0__3__0'(E,A). +'chr_clear/0__3__0'([],A) :- + 'chr_clear/0__4'(A). +'chr_clear/0__3__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_max_constraint_index/1'(E,A), + 'chr_clear/0__3__0'(B,C) + ; + 'chr_clear/0__3__0'(B,C) + ). +'chr_clear/0__3'(A) :- + 'chr_clear/0__4'(A). +'chr_clear/0__4'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,E,_), + D/\16=:=16, + !, + 'chr_clear/0__4__0'(E,A). +'chr_clear/0__4__0'([],A) :- + 'chr_clear/0__5'(A). +'chr_clear/0__4__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_target_module/1'(E,A), + 'chr_clear/0__4__0'(B,C) + ; + 'chr_clear/0__4__0'(B,C) + ). +'chr_clear/0__4'(A) :- + 'chr_clear/0__5'(A). +'chr_clear/0__5'(A) :- + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,_,E), + D/\32=:=32, + !, + 'chr_clear/0__5__0'(E,A). +'chr_clear/0__5__0'([],A) :- + 'chr_clear/0__6'(A). +'chr_clear/0__5__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), + D=mutable(active) -> + 'chr remove_constraint_internal'(A,E), + 'detach_attached/2'(E,A), + 'chr_clear/0__5__0'(B,C) + ; + 'chr_clear/0__5__0'(B,C) + ). +'chr_clear/0__5'(A) :- + 'chr_clear/0__6'(A). +'chr_clear/0__6'(_) :- + !. diff --git a/chr_translate_bootstrap2.pl b/chr_translate_bootstrap2.pl new file mode 100644 index 0000000..617ff93 --- /dev/null +++ b/chr_translate_bootstrap2.pl @@ -0,0 +1,3708 @@ +/* Generated by CHR bootstrap compiler + From: chr_translate_bootstrap2.chr + Date: Mon Jun 15 21:43:47 2009 + + + DO NOT EDIT. EDIT THE CHR FILE INSTEAD +*/ + +:-module(chr_translate,[chr_translate/2]). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(chr_runtime). +:-use_module(chr_hashtable_store). +:-style_check(-discontiguous). +:-use_module(library(lists),[append/3,append/2,member/2,delete/3,reverse/2,permutation/2]). +:-use_module(library(ordsets)). +:-use_module(hprolog). +:-use_module(pairlist). +:-use_module(a_star). +:-use_module(clean_code). +:-use_module(builtins). +:-use_module(find). +:-include(chr_op2). +chr_translate(A,B) :- + init_chr_pp_flags, + partition_clauses(A,C,D,E), + ( C==[] -> + insert_declarations(E,B) + ; + add_rules(D), + check_rules(D,C), + add_occurrences(D), + late_allocation(C), + unique_analyse_optimise(D,F), + check_attachments(C), + assume_constraint_stores(C), + set_constraint_indices(C,1), + constraints_code(C,F,G), + validate_store_type_assumptions(C), + store_management_preds(C,H), + insert_declarations(E,I), + chr_module_declaration(J), + append([I,H,G,J],B) + ). +store_management_preds(A,B) :- + generate_attach_detach_a_constraint_all(A,C), + generate_indexed_variables_clauses(A,D), + generate_attach_increment(E), + generate_attr_unify_hook(F), + generate_extra_clauses(A,G), + generate_insert_delete_constraints(A,H), + generate_store_code(A,I), + append([C,D,E,F,G,H,I],B). +specific_declarations([(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-discontiguous))|A],A). +insert_declarations(A,B) :- + specific_declarations(C,D), + ( A=[(:-module(E,F))|G] -> + B=[(:-module(E,F))|C], + D=G + ; + B=C, + D=A + ). +chr_module_declaration(A) :- + get_target_module(B), + ( B\==chr_translate -> + A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)] + ; + A=[] + ). +partition_clauses([],[],[],[]). +partition_clauses([A|B],C,D,E) :- + ( parse_rule(A,F) -> + C=G, + D=[F|H], + E=I + ; + ( is_declaration(A,J) -> + append(J,G,C), + D=H, + E=I + ) + ; + ( is_module_declaration(A,K) -> + target_module(K), + C=G, + D=H, + E=[A|I] + ) + ; + ( A=(handler _) -> + format('CHR compiler WARNING: ~w. +',[A]), + format(' `--> SICStus compatibility: ignoring handler/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=(rules _) -> + format('CHR compiler WARNING: ~w. +',[A]), + format(' `--> SICStus compatibility: ignoring rules/1 declaration. +',[]), + C=G, + D=H, + E=I + ) + ; + ( A=(:-chr_option(L,M)) -> + handle_option(L,M), + C=G, + D=H, + E=I + ) + ; + ( A=(:-chr_type _) -> + C=G, + D=H, + E=I + ) + ; + C=G, + D=H, + E=[A|I] + ), + partition_clauses(B,G,H,I). +is_declaration(A,B) :- + A=(:-C), + ( + C=..[chr_constraint,D] + ; + C=..[chr_constraint,D] + ), + conj2list(D,B). +parse_rule(A,B) :- + A=(C@D), + !, + rule(D,yes(C),B). +parse_rule(A,B) :- + rule(A,no,B). +rule(A,B,C) :- + A=(D pragma E), + !, + is_rule(D,F,G), + conj2list(E,H), + inc_rule_count(I), + C=pragma(F,G,H,B,I). +rule(A,B,C) :- + is_rule(A,D,E), + inc_rule_count(F), + C=pragma(D,E,[],B,F). +is_rule(A,B,C) :- + A=(D==>E), + !, + conj2list(D,F), + get_ids(F,G,H), + C=ids([],G), + ( E=(I '|' J) -> + B=rule([],H,I,J) + ; + B=rule([],H,true,E) + ). +is_rule(A,B,C) :- + A=(D<=>E), + !, + ( E=(F '|' G) -> + H=F, + I=G + ; + H=true, + I=E + ), + ( D=(J\K) -> + conj2list(J,L), + conj2list(K,M), + get_ids(L,N,O,0,P), + get_ids(M,Q,R,P,_), + C=ids(Q,N) + ; + conj2list(D,M), + O=[], + get_ids(M,Q,R), + C=ids(Q,[]) + ), + B=rule(R,O,H,I). +get_ids(A,B,C) :- + get_ids(A,B,C,0,_). +get_ids([],[],[],A,A). +get_ids([A|B],[C|D],[E|F],C,G) :- + ( A=E#C -> + true + ; + E=A + ), + H is C+1, + get_ids(B,D,F,H,G). +is_module_declaration((:-module(A)),A). +is_module_declaration((:-module(A,_)),A). +add_rules([]). +add_rules([A|B]) :- + A=pragma(_,_,_,_,C), + rule(C,A), + add_rules(B). +check_rules([],_). +check_rules([A|B],C) :- + check_rule(A,C), + check_rules(B,C). +check_rule(A,B) :- + check_rule_indexing(A), + A=pragma(C,_,D,_,_), + C=rule(E,F,_,_), + append(E,F,G), + check_head_constraints(G,B,A), + check_pragmas(D,A). +check_head_constraints([],_,_). +check_head_constraints([A|B],C,D) :- + functor(A,E,F), + ( member(E/F,C) -> + check_head_constraints(B,C,D) + ; + format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@. +',[E/F,format_rule(D)]), + format(' `--> Constraint should be one of ~w. +',[C]), + fail + ). +check_pragmas([],_). +check_pragmas([A|B],C) :- + check_pragma(A,C), + check_pragmas(B,C). +check_pragma(A,B) :- + var(A), + !, + format('CHR compiler ERROR: invalid pragma ~w in ~@. +',[A,format_rule(B)]), + format(' `--> Pragma should not be a variable! +',[]), + fail. +check_pragma(passive(A),B) :- + !, + B=pragma(_,ids(C,D),_,_,E), + ( memberchk_eq(A,C) -> + true + ; + ( memberchk_eq(A,D) -> + true + ) + ; + format('CHR compiler ERROR: invalid identifier ~w in pragma passive in ~@. +',[A,format_rule(B)]), + fail + ), + passive(E,A). +check_pragma(A,B) :- + A=unique(C,D), + !, + B=pragma(_,_,_,_,E), + pragma_unique(E,C,D), + format('CHR compiler WARNING: undocumented pragma ~w in ~@. +',[A,format_rule(B)]), + format(' `--> Only use this pragma if you know what you are doing. +',[]). +check_pragma(A,B) :- + A=already_in_heads, + !, + format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. +',[A,format_rule(B)]), + format(' `--> Pragma is ignored. Termination and correctness may be affected +',[]). +check_pragma(A,B) :- + A=already_in_head(_), + !, + format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. +',[A,format_rule(B)]), + format(' `--> Pragma is ignored. Termination and correctness may be affected +',[]). +check_pragma(A,B) :- + format('CHR compiler ERROR: invalid pragma ~w in ~@. +',[A,format_rule(B)]), + format(' `--> Pragma should be one of passive/1! +',[]), + fail. +format_rule(A) :- + A=pragma(_,_,_,B,C), + ( B=yes(D) -> + write('rule '), + write(D) + ; + write('rule number '), + write(C) + ). +check_rule_indexing(A) :- + A=pragma(B,_,_,_,_), + B=rule(C,D,E,_), + term_variables(C-D,F), + remove_anti_monotonic_guards(E,F,G), + check_indexing(C,G-D), + check_indexing(D,G-C). +remove_anti_monotonic_guards(A,B,C) :- + conj2list(A,D), + remove_anti_monotonic_guard_list(D,B,E), + list2conj(E,C). +remove_anti_monotonic_guard_list([],_,[]). +remove_anti_monotonic_guard_list([A|B],C,D) :- + ( A=var(E), + memberchk_eq(E,C) -> + D=F + ; + D=[A|F] + ), + remove_anti_monotonic_guard_list(B,C,F). +check_indexing([],_). +check_indexing([A|B],C) :- + functor(A,D,E), + A=..[_|F], + term_variables(B-C,G), + check_indexing(F,1,D/E,G), + check_indexing(B,[A|C]). +check_indexing([],_,_,_). +check_indexing([A|B],C,D,E) :- + ( is_indexed_argument(D,C) -> + true + ; + ( nonvar(A) -> + indexed_argument(D,C) + ) + ; + term_variables(B,F), + append(F,E,G), + ( memberchk_eq(A,G) -> + indexed_argument(D,C) + ; + true + ) + ), + H is C+1, + term_variables(A,I), + append(I,E,J), + check_indexing(B,H,D,J). +add_occurrences([]). +add_occurrences([A|B]) :- + A=pragma(rule(C,D,_,_),ids(E,F),_,_,G), + add_occurrences(C,E,G), + add_occurrences(D,F,G), + add_occurrences(B). +add_occurrences([],[],_). +add_occurrences([A|B],[C|D],E) :- + functor(A,F,G), + H=F/G, + get_max_occurrence(H,I), + J is I+1, + occurrence(H,J,E,C), + add_occurrences(B,D,E). +late_allocation([]). +late_allocation([A|B]) :- + allocation_occurrence(A,1), + late_allocation(B). +handle_option(A,B) :- + var(A), + !, + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> First argument should be an atom, not a variable. +',[]), + fail. +handle_option(A,B) :- + var(B), + !, + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> Second argument should be a nonvariable. +',[]), + fail. +handle_option(A,B) :- + option_definition(A,B,C), + !, + set_chr_pp_flags(C). +handle_option(A,B) :- + \+option_definition(A,_,_), + !, + format('CHR compiler WARNING: ~w. +',[option(A,B)]), + format(' `--> Invalid option name +',[]). +handle_option(A,B) :- + findall(C,option_definition(A,C,_),D), + format('CHR compiler ERROR: ~w. +',[option(A,B)]), + format(' `--> Invalid value ~w: should be one of ~w. +',[B,D]), + fail. +option_definition(optimize,experimental,A) :- + A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. +option_definition(optimize,full,A) :- + A=[unique_analyse_optimise-off,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. +option_definition(optimize,sicstus,A) :- + A=[unique_analyse_optimise-off,check_unnecessary_active-simplification,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. +option_definition(optimize,off,A) :- + A=[unique_analyse_optimise-off,check_unnecessary_active-off,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. +option_definition(check_guard_bindings,on,A) :- + A=[guard_locks-on]. +option_definition(check_guard_bindings,off,A) :- + A=[guard_locks-off]. +option_definition(reduced_indexing,on,A) :- + A=[reduced_indexing-on]. +option_definition(reduced_indexing,off,A) :- + A=[reduced_indexing-off]. +option_definition(mode,A,[]) :- + ( nonvar(A) -> + functor(A,B,C), + A=..[_|D], + constraint_mode(B/C,D) + ; + true + ). +option_definition(store,A-B,[]) :- + store_type(A,B). +option_definition(debug,on,A) :- + A=[debugable-on]. +option_definition(debug,off,A) :- + A=[debugable-off]. +option_definition(type_definition,_,[]). +option_definition(type_declaration,_,[]). +option_definition(verbosity,_,[]). +init_chr_pp_flags :- + chr_pp_flag_definition(A,[B|_]), + set_chr_pp_flag(A,B), + fail. +init_chr_pp_flags. +set_chr_pp_flags([]). +set_chr_pp_flags([A-B|C]) :- + set_chr_pp_flag(A,B), + set_chr_pp_flags(C). +set_chr_pp_flag(A,B) :- + atom_concat('$chr_pp_',A,C), + nb_setval(C,B). +chr_pp_flag_definition(unique_analyse_optimise,[on,off]). +chr_pp_flag_definition(check_unnecessary_active,[full,simplification,off]). +chr_pp_flag_definition(reorder_heads,[on,off]). +chr_pp_flag_definition(set_semantics_rule,[on,off]). +chr_pp_flag_definition(guard_via_reschedule,[on,off]). +chr_pp_flag_definition(guard_locks,[on,off]). +chr_pp_flag_definition(check_attachments,[on,off]). +chr_pp_flag_definition(debugable,[off,on]). +chr_pp_flag_definition(reduced_indexing,[on,off]). +chr_pp_flag(A,B) :- + atom_concat('$chr_pp_',A,C), + nb_getval(C,D), + ( D==[] -> + chr_pp_flag_definition(A,[B|_]) + ; + D=B + ). +generate_attach_detach_a_constraint_all([],[]). +generate_attach_detach_a_constraint_all([A|B],C) :- + ( may_trigger(A) -> + generate_attach_a_constraint(A,D), + generate_detach_a_constraint(A,E) + ; + D=[], + E=[] + ), + generate_attach_detach_a_constraint_all(B,F), + append([D,E,F],C). +generate_attach_a_constraint(A,[B,C]) :- + generate_attach_a_constraint_empty_list(A,B), + get_max_constraint_index(D), + ( D==1 -> + generate_attach_a_constraint_1_1(A,C) + ; + generate_attach_a_constraint_t_p(A,C) + ). +generate_attach_a_constraint_skeleton(A,B,C,D) :- + make_name(attach_,A,E), + F=..[E|B], + D=(F:-C). +generate_attach_a_constraint_empty_list(A,B) :- + generate_attach_a_constraint_skeleton(A,[[],_],true,B). +generate_attach_a_constraint_1_1(A,B) :- + C=[[D|E],F], + generate_attach_a_constraint_skeleton(A,C,G,B), + generate_attach_body_1(A,D,F,H), + make_name(attach_,A,I), + J=..[I,E,F], + G=(H,J). +generate_attach_body_1(_,A,B,C) :- + get_target_module(D), + C=(get_attr(A,D,E)->F=[B|E],put_attr(A,D,F);put_attr(A,D,[B])). +generate_attach_a_constraint_t_p(A,B) :- + C=[[D|E],F], + generate_attach_a_constraint_skeleton(A,C,G,B), + make_name(attach_,A,H), + I=..[H,E,F], + generate_attach_body_n(A,D,F,J), + G=(J,I). +generate_attach_body_n(A/B,C,D,E) :- + get_constraint_index(A/B,F), + or_pattern(F,G), + get_max_constraint_index(H), + make_attr(H,I,J,K), + nth1(F,J,L), + substitute_eq(L,J,[D|L],M), + make_attr(H,I,M,N), + substitute_eq(L,J,[D],O), + make_attr(H,P,O,Q), + copy_term_nat(J,R), + nth1(F,R,[D]), + delete(R,[D],S), + set_elems(S,[]), + make_attr(H,G,R,T), + get_target_module(U), + E=(get_attr(C,U,V)->V=K,(I/\G=:=G->put_attr(C,U,N);P is I\/G,put_attr(C,U,Q));put_attr(C,U,T)). +generate_detach_a_constraint(A,[B,C]) :- + generate_detach_a_constraint_empty_list(A,B), + get_max_constraint_index(D), + ( D==1 -> + generate_detach_a_constraint_1_1(A,C) + ; + generate_detach_a_constraint_t_p(A,C) + ). +generate_detach_a_constraint_empty_list(A,B) :- + make_name(detach_,A,C), + D=[[],_], + E=..[C|D], + B=(E:-true). +generate_detach_a_constraint_1_1(A,B) :- + make_name(detach_,A,C), + D=[[E|F],G], + H=..[C|D], + I=..[C,F,G], + generate_detach_body_1(A,E,G,J), + K=(J,I), + B=(H:-K). +generate_detach_body_1(_,A,B,C) :- + get_target_module(D), + C=(get_attr(A,D,E)->'chr sbag_del_element'(E,B,F),(F==[]->del_attr(A,D);put_attr(A,D,F));true). +generate_detach_a_constraint_t_p(A,B) :- + make_name(detach_,A,C), + D=[[E|F],G], + H=..[C|D], + I=..[C,F,G], + generate_detach_body_n(A,E,G,J), + K=(J,I), + B=(H:-K). +generate_detach_body_n(A/B,C,D,E) :- + get_constraint_index(A/B,F), + or_pattern(F,G), + and_pattern(F,H), + get_max_constraint_index(I), + make_attr(I,J,K,L), + nth1(F,K,M), + substitute_eq(M,K,[],N), + make_attr(I,O,N,P), + substitute_eq(M,K,Q,R), + make_attr(I,J,R,S), + get_target_module(T), + E=(get_attr(C,T,U)->U=L,(J/\G=:=G->'chr sbag_del_element'(M,D,Q),(Q==[]->O is J/\H,(O==0->del_attr(C,T);put_attr(C,T,P));put_attr(C,T,S));true);true). +generate_indexed_variables_clauses(A,B) :- + ( forsome(C,A,chr_translate:may_trigger(C)) -> + generate_indexed_variables_clauses_(A,B) + ; + B=[] + ). +generate_indexed_variables_clauses_([],[]). +generate_indexed_variables_clauses_([A|B],C) :- + ( + ( + is_attached(A) + ; + chr_pp_flag(debugable,on) + ) -> + C=[D|E], + generate_indexed_variables_clause(A,D) + ; + C=E + ), + generate_indexed_variables_clauses_(B,E). +generate_indexed_variables_clause(A/B,C) :- + functor(D,A,B), + get_constraint_mode(A/B,E), + D=..[_|F], + create_indexed_variables_body(F,E,G,1,A/B,H,I), + ( H==empty -> + J=(G=[]) + ; + ( I==0 -> + J=term_variables(K,G) + ) + ; + H=J + ), + C=('$indexed_variables'(K,G):-K=D,J). +create_indexed_variables_body([],[],_,_,_,empty,0). +create_indexed_variables_body([A|B],[C|D],E,F,G,H,I) :- + J is F+1, + create_indexed_variables_body(B,D,K,J,G,L,M), + ( C\== +, + is_indexed_argument(G,F) -> + ( L==empty -> + H=term_variables(A,E) + ; + H=(term_variables(A,E,K),L) + ), + I=M + ; + E=K, + H=L, + I is M+1 + ). +generate_extra_clauses(A,[B,C,D,E,F]) :- + ( chr_pp_flag(reduced_indexing,on) -> + global_indexed_variables_clause(A,E) + ; + E=(chr_indexed_variables(G,H):-'chr chr_indexed_variables'(G,H)) + ), + generate_remove_clause(B), + generate_activate_clause(C), + generate_allocate_clause(D), + generate_insert_constraint_internal(F). +generate_remove_clause(A) :- + A=(remove_constraint_internal(B,C,D):-arg(2,B,E),'chr get_mutable'(F,E),'chr update_mutable'(removed,E),(compound(F)->C=[],D=no;F==removed->C=[],D=no;D=yes,chr_indexed_variables(B,C))). +generate_activate_clause(A) :- + A=(activate_constraint(B,C,D,E):-arg(2,D,F),'chr get_mutable'(G,F),'chr update_mutable'(active,F),(nonvar(E)->true;arg(4,D,H),'chr get_mutable'(I,H),E is I+1,'chr update_mutable'(E,H)),(compound(G)->term_variables(G,C),'chr none_locked'(C),B=yes;G==removed->chr_indexed_variables(D,C),B=yes;C=[],B=no)). +generate_allocate_clause(A) :- + A=(allocate_constraint(B,C,D,E):-C=..[suspension,F,G,B,H,I,D|E],'chr create_mutable'(0,H),'chr empty_history'(J),'chr create_mutable'(J,I),chr_indexed_variables(C,K),'chr create_mutable'(passive(K),G),'chr gen_id'(F)). +generate_insert_constraint_internal(A) :- + A=(insert_constraint_internal(yes,B,C,D,E,F):-C=..[suspension,G,H,D,I,J,E|F],chr_indexed_variables(C,B),'chr none_locked'(B),'chr create_mutable'(active,H),'chr create_mutable'(0,I),'chr empty_history'(K),'chr create_mutable'(K,J),'chr gen_id'(G)). +global_indexed_variables_clause(A,B) :- + ( forsome(C,A,chr_translate:may_trigger(C)) -> + D=(E=..[_,_,_,_,_,_,F|_],'$indexed_variables'(F,G)) + ; + D=true, + G=[] + ), + B=(chr_indexed_variables(E,G):-D). +generate_attach_increment(A) :- + get_max_constraint_index(B), + ( B>0 -> + A=[C,D], + generate_attach_increment_empty(C), + ( B==1 -> + generate_attach_increment_one(D) + ; + generate_attach_increment_many(B,D) + ) + ; + A=[] + ). +generate_attach_increment_empty((attach_increment([],_):-true)). +generate_attach_increment_one(A) :- + B=attach_increment([C|D],E), + get_target_module(F), + G=('chr not_locked'(C),(get_attr(C,F,H)->sort(H,I),merge(E,I,J),put_attr(C,F,J);put_attr(C,F,E)),attach_increment(D,E)), + A=(B:-G). +generate_attach_increment_many(A,B) :- + make_attr(A,C,D,E), + make_attr(A,F,G,H), + I=attach_increment([J|K],E), + bagof(L,M^N^O^P^(member2(D,G,M-N),L=(sort(N,O),'chr merge_attributes'(M,O,P))),Q), + list2conj(Q,R), + bagof(S,T^U^V^member((T,'chr merge_attributes'(U,V,S)),Q),W), + make_attr(A,X,W,Y), + get_target_module(Z), + A1=('chr not_locked'(J),(get_attr(J,Z,B1)->B1=H,R,X is C\/F,put_attr(J,Z,Y);put_attr(J,Z,E)),attach_increment(K,E)), + B=(I:-A1). +generate_attr_unify_hook([A]) :- + get_max_constraint_index(B), + ( B==0 -> + get_target_module(C), + A=(attr_unify_hook(_,_):-write('ERROR: Unexpected triggering of attr_unify_hook/2 in module '),writeln(C)) + ; + ( B==1 -> + generate_attr_unify_hook_one(A) + ) + ; + generate_attr_unify_hook_many(B,A) + ). +generate_attr_unify_hook_one(A) :- + B=attr_unify_hook(C,D), + get_target_module(E), + make_run_suspensions(F,G), + make_run_suspensions(C,H), + I=(sort(C,J),(var(D)->(get_attr(D,E,K)->true;K=[]),sort(K,L),'chr merge_attributes'(J,L,F),put_attr(D,E,F),G;(compound(D)->term_variables(D,M),attach_increment(M,J);true),H)), + A=(B:-I). +generate_attr_unify_hook_many(A,B) :- + make_attr(A,C,D,E), + make_attr(A,F,G,H), + bagof(I,J^K^(member(J,D),I=sort(J,K)),L), + list2conj(L,M), + bagof(K,J^member(sort(J,K),L),N), + bagof(O,P^Q^R^S^(member2(N,G,P-Q),O=(sort(Q,R),'chr merge_attributes'(P,R,S))),T), + bagof(S,P^R^U^member((U,'chr merge_attributes'(P,R,S)),T),V), + list2conj(T,W), + make_attr(A,X,V,Y), + make_attr(A,C,N,Z), + A1=attr_unify_hook(E,B1), + get_target_module(C1), + make_run_suspensions_loop(V,D1), + make_run_suspensions_loop(N,E1), + F1=(M,(var(B1)->(get_attr(B1,C1,G1)->G1=H,W,X is C\/F,put_attr(B1,C1,Y),D1;put_attr(B1,C1,Z),E1);(compound(B1)->term_variables(B1,H1),attach_increment(H1,Z);true),E1)), + B=(A1:-F1). +make_run_suspensions(A,B) :- + ( chr_pp_flag(debugable,on) -> + B='chr run_suspensions_d'(A) + ; + B='chr run_suspensions'(A) + ). +make_run_suspensions_loop(A,B) :- + ( chr_pp_flag(debugable,on) -> + B='chr run_suspensions_loop_d'(A) + ; + B='chr run_suspensions_loop'(A) + ). +generate_insert_delete_constraints([],[]). +generate_insert_delete_constraints([A|B],C) :- + ( is_attached(A) -> + C=[D,E|F], + generate_insert_delete_constraint(A,D,E) + ; + C=F + ), + generate_insert_delete_constraints(B,F). +generate_insert_delete_constraint(A,B,C) :- + get_store_type(A,D), + generate_insert_constraint(D,A,B), + generate_delete_constraint(D,A,C). +generate_insert_constraint(A,B,C) :- + make_name('$insert_in_store_',B,D), + E=..[D,F], + generate_insert_constraint_body(A,B,F,G), + C=(E:-G). +generate_insert_constraint_body(default,A,B,C) :- + get_target_module(_), + get_max_constraint_index(D), + ( D==1 -> + generate_attach_body_1(A,E,B,F) + ; + generate_attach_body_n(A,E,B,F) + ), + C=('chr default_store'(E),F). +generate_insert_constraint_body(multi_hash(A),B,C,D) :- + generate_multi_hash_insert_constraint_bodies(A,B,C,D). +generate_insert_constraint_body(global_ground,A,B,C) :- + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,[B|E],G), + C=(F,G). +generate_insert_constraint_body(multi_store(A),B,C,D) :- + find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_insert_constraint_body(F,B,C,E)),G), + list2conj(G,D). +generate_multi_hash_insert_constraint_bodies([],_,_,true). +generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + make_get_store_goal(G,J,K), + E=(H,K,insert_ht(J,I,D)), + generate_multi_hash_insert_constraint_bodies(B,C,D,F). +generate_delete_constraint(A,B,C) :- + make_name('$delete_from_store_',B,D), + E=..[D,F], + generate_delete_constraint_body(A,B,F,G), + C=(E:-G). +generate_delete_constraint_body(default,A,B,C) :- + get_target_module(_), + get_max_constraint_index(D), + ( D==1 -> + generate_detach_body_1(A,E,B,F), + C=('chr default_store'(E),F) + ; + generate_detach_body_n(A,E,B,F), + C=('chr default_store'(E),F) + ). +generate_delete_constraint_body(multi_hash(A),B,C,D) :- + generate_multi_hash_delete_constraint_bodies(A,B,C,D). +generate_delete_constraint_body(global_ground,A,B,C) :- + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H). +generate_delete_constraint_body(multi_store(A),B,C,D) :- + find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_delete_constraint_body(F,B,C,E)),G), + list2conj(G,D). +generate_multi_hash_delete_constraint_bodies([],_,_,true). +generate_multi_hash_delete_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + make_get_store_goal(G,J,K), + E=(H,K,delete_ht(J,I,D)), + generate_multi_hash_delete_constraint_bodies(B,C,D,F). +generate_delete_constraint_call(A,B,C) :- + make_name('$delete_from_store_',A,D), + C=..[D,B]. +generate_insert_constraint_call(A,B,C) :- + make_name('$insert_in_store_',A,D), + C=..[D,B]. +generate_store_code(A,[B|C]) :- + enumerate_stores_code(A,B), + generate_store_code(A,C,[]). +generate_store_code([],A,A). +generate_store_code([A|B],C,D) :- + get_store_type(A,E), + generate_store_code(E,A,C,F), + generate_store_code(B,F,D). +generate_store_code(default,_,A,A). +generate_store_code(multi_hash(A),B,C,D) :- + multi_hash_store_initialisations(A,B,C,E), + multi_hash_via_lookups(A,B,E,D). +generate_store_code(global_ground,A,B,C) :- + global_ground_store_initialisation(A,B,C). +generate_store_code(multi_store(A),B,C,D) :- + multi_store_generate_store_code(A,B,C,D). +multi_store_generate_store_code([],_,A,A). +multi_store_generate_store_code([A|B],C,D,E) :- + generate_store_code(A,C,D,F), + multi_store_generate_store_code(B,C,F,E). +multi_hash_store_initialisations([],_,A,A). +multi_hash_store_initialisations([A|B],C,D,E) :- + multi_hash_store_name(C,A,F), + make_init_store_goal(F,G,H), + D=[(:-new_ht(G),H)|I], + multi_hash_store_initialisations(B,C,I,E). +global_ground_store_initialisation(A,B,C) :- + global_ground_store_name(A,D), + make_init_store_goal(D,[],E), + B=[(:-E)|C]. +multi_hash_via_lookups([],_,A,A). +multi_hash_via_lookups([A|B],C,D,E) :- + multi_hash_via_lookup_name(C,A,F), + G=..[F,H,I], + multi_hash_store_name(C,A,J), + make_get_store_goal(J,K,L), + M=(L,lookup_ht(K,H,I)), + D=[(G:-M)|N], + multi_hash_via_lookups(B,C,N,E). +multi_hash_via_lookup_name(A/B,C,D) :- + ( integer(C) -> + E=C + ; + ( is_list(C) -> + atom_concat_list(C,E) + ) + ), + atom_concat_list(['$via1_multi_hash_',A,/,B,-,E],D). +multi_hash_store_name(A/B,C,D) :- + get_target_module(E), + ( integer(C) -> + F=C + ; + ( is_list(C) -> + atom_concat_list(C,F) + ) + ), + atom_concat_list(['$chr_store_multi_hash_',E,:,A,/,B,-,F],D). +multi_hash_key(_/_,A,B,C,D) :- + ( + ( integer(A) -> + E=A + ; + A=[E] + ) -> + F is E+6, + C=arg(F,B,D) + ; + ( is_list(A) -> + sort(A,G), + find_with_var_identity(arg(H,B,I)-I,[B],(member(E,G),H is E+6),J), + pairup(K,L,J), + D=..[k|L], + list2conj(K,C) + ) + ). +multi_hash_key_args(A,B,C) :- + ( integer(A) -> + arg(A,B,D), + C=[D] + ; + ( is_list(A) -> + sort(A,E), + term_variables(B,F), + find_with_var_identity(D,F,(member(G,E),arg(G,B,D)),C) + ) + ). +global_ground_store_name(A/B,C) :- + get_target_module(D), + atom_concat_list(['$chr_store_global_ground_',D,:,A,/,B],C). +enumerate_stores_code(A,B) :- + C='$enumerate_suspensions'(D), + enumerate_store_bodies(A,D,E), + list2disj(E,F), + B=(C:-F). +enumerate_store_bodies([],_,[]). +enumerate_store_bodies([A|B],C,D) :- + ( is_attached(A) -> + get_store_type(A,E), + enumerate_store_body(E,A,C,F), + D=[F|G] + ; + D=G + ), + enumerate_store_bodies(B,C,G). +enumerate_store_body(default,A,B,C) :- + get_constraint_index(A,D), + get_target_module(E), + get_max_constraint_index(F), + G=('chr default_store'(H),get_attr(H,E,I)), + ( F>1 -> + J is D+1, + K=(arg(J,I,L),'chr sbag_member'(B,L)) + ; + K='chr sbag_member'(B,I) + ), + C=(G,K). +enumerate_store_body(multi_hash([A|_]),B,C,D) :- + multi_hash_enumerate_store_body(A,B,C,D). +enumerate_store_body(global_ground,A,B,C) :- + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + C=(F,'chr sbag_member'(B,E)). +enumerate_store_body(multi_store(A),B,C,D) :- + once((member(E,A),enumerate_store_body(E,B,C,D))). +multi_hash_enumerate_store_body(A,B,C,D) :- + multi_hash_store_name(B,A,E), + make_get_store_goal(E,F,G), + D=(G,value_ht(F,C)). +check_attachments(A) :- + ( chr_pp_flag(check_attachments,on) -> + check_constraint_attachments(A) + ; + true + ). +check_constraint_attachments([]). +check_constraint_attachments([A|B]) :- + check_constraint_attachment(A), + check_constraint_attachments(B). +check_constraint_attachment(A) :- + get_max_occurrence(A,B), + check_occurrences_attachment(A,1,B). +check_occurrences_attachment(A,B,C) :- + ( B>C -> + true + ; + check_occurrence_attachment(A,B), + D is B+1, + check_occurrences_attachment(A,D,C) + ). +check_occurrence_attachment(A,B) :- + get_occurrence(A,B,C,D), + get_rule(C,E), + E=pragma(rule(F,G,H,I),ids(J,K),_,_,_), + ( select2(D,L,J,F,_,_) -> + check_attachment_head1(L,D,C,F,G,H) + ; + ( select2(D,M,K,G,_,_) -> + check_attachment_head2(M,D,C,F,I) + ) + ). +check_attachment_head1(A,B,C,D,E,F) :- + functor(A,G,H), + ( D==[A], + E==[], + F==true, + A=..[_|I], + no_matching(I,[]), + \+is_passive(C,B) -> + attached(G/H,no) + ; + attached(G/H,maybe) + ). +no_matching([],_). +no_matching([A|B],C) :- + var(A), + \+memberchk_eq(A,C), + no_matching(B,[A|C]). +check_attachment_head2(A,B,C,D,E) :- + functor(A,F,G), + ( is_passive(C,B) -> + attached(F/G,maybe) + ; + ( D\==[], + E==true -> + attached(F/G,maybe) + ) + ; + attached(F/G,yes) + ). +all_attached([]). +all_attached([A|B]) :- + functor(A,C,D), + is_attached(C/D), + all_attached(B). +set_constraint_indices([],A) :- + B is A-1, + max_constraint_index(B). +set_constraint_indices([A|B],C) :- + ( + ( + may_trigger(A) + ; + is_attached(A), + get_store_type(A,default) + ) -> + constraint_index(A,C), + D is C+1, + set_constraint_indices(B,D) + ; + set_constraint_indices(B,C) + ). +constraints_code(A,B,C) :- + post_constraints(A,1), + constraints_code1(1,B,D,[]), + clean_clauses(D,C). +post_constraints([],A) :- + B is A-1, + constraint_count(B). +post_constraints([A/B|C],D) :- + constraint(A/B,D), + E is D+1, + post_constraints(C,E). +constraints_code1(A,B,C,D) :- + get_constraint_count(E), + ( A>E -> + D=C + ; + constraint_code(A,B,C,F), + G is A+1, + constraints_code1(G,B,F,D) + ). +constraint_code(A,B,C,D) :- + get_constraint(E,A), + constraint_prelude(E,F), + C=[F|G], + H=[0], + rules_code(B,A,H,I,G,J), + gen_cond_attach_clause(E,I,J,D). +constraint_prelude(A/B,C) :- + vars_susp(B,D,E,F), + G=..[A|D], + build_head(A,B,[0],F,H), + get_target_module(I), + J=..[A|D], + ( chr_pp_flag(debugable,on) -> + C=(G:-allocate_constraint(I:H,E,J,D),('chr debug_event'(call(E)),H;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) + ; + C=(G:-H) + ). +gen_cond_attach_clause(A/B,C,D,E) :- + ( is_attached(A/B) -> + ( C==[0] -> + ( may_trigger(A/B) -> + gen_cond_attach_goal(A/B,F,G,H,I) + ; + gen_insert_constraint_internal_goal(A/B,F,G,H,I) + ) + ; + vars_susp(B,H,I,G), + gen_uncond_attach_goal(A/B,I,F,_) + ), + ( chr_pp_flag(debugable,on) -> + J=..[A|H], + K='chr debug_event'(insert(J#I)) + ; + K=true + ), + build_head(A,B,C,G,L), + M=(L:-K,F), + D=[M|E] + ; + D=E + ). +gen_cond_attach_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + build_head(A,B,[0],D,G), + ( may_trigger(A/B) -> + make_name(attach_,A/B,H), + I=..[H,J,F] + ; + I=true + ), + get_target_module(K), + L=..[A|E], + generate_insert_constraint_call(A/B,F,M), + C=((var(F)->insert_constraint_internal(N,J,F,K:G,L,E);activate_constraint(N,J,F,_)),(N==yes->M,I;true)). +gen_insert_constraint_internal_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + build_head(A,B,[0],D,G), + ( may_trigger(A/B) -> + make_name(attach_,A/B,H), + I=..[H,J,F] + ; + I=true + ), + get_target_module(K), + L=..[A|E], + generate_insert_constraint_call(A/B,F,M), + C=(insert_constraint_internal(_,J,F,K:G,L,E),M,I). +gen_uncond_attach_goal(A,B,C,D) :- + ( may_trigger(A) -> + make_name(attach_,A,E), + F=..[E,G,B] + ; + F=true + ), + generate_insert_constraint_call(A,B,H), + C=(activate_constraint(I,G,B,D),(I==yes->H,F;true)). +rules_code([],_,A,A,B,B). +rules_code([A|B],C,D,E,F,G) :- + rule_code(A,C,D,H,F,I), + rules_code(B,C,H,E,I,G). +rule_code(A,B,C,D,E,F) :- + A=pragma(G,H,_,_,_), + H=ids(I,J), + G=rule(K,L,_,_), + heads1_code(K,[],I,[],A,B,C,E,M), + heads2_code(L,[],J,[],A,B,C,D,M,F). +heads1_code([],_,_,_,_,_,_,A,A). +heads1_code([A|B],C,[D|E],F,G,H,I,J,K) :- + G=pragma(L,_,_,_,M), + get_constraint(N/O,H), + ( functor(A,N,O), + \+is_passive(M,D), + \+check_unnecessary_active(A,C,L), + all_attached(B), + all_attached(C), + L=rule(_,P,_,_), + all_attached(P) -> + append(B,C,Q), + append(E,F,R), + head1_code(A,Q,R,G,N/O,H,I,J,S) + ; + J=S + ), + heads1_code(B,[A|C],E,[D|F],G,H,I,S,K). +head1_code(A,B,C,D,E,_,F,G,H) :- + D=pragma(I,_,_,_,J), + I=rule(_,K,_,_), + ( K==[] -> + reorder_heads(J,A,B,C,L,M), + simplification_code(A,L,M,D,E,F,G,H) + ; + simpagation_head1_code(A,B,C,D,E,F,G,H) + ). +heads2_code([],_,_,_,_,_,A,A,B,B). +heads2_code([A|B],C,[D|E],F,G,H,I,J,K,L) :- + G=pragma(M,_,_,_,N), + get_constraint(O/P,H), + ( functor(A,O,P), + \+is_passive(N,D), + \+check_unnecessary_active(A,C,M), + \+set_semantics_rule(G), + all_attached(B), + all_attached(C), + M=rule(Q,_,_,_), + all_attached(Q) -> + append(B,C,R), + append(E,F,S), + length(B,T), + head2_code(A,R,S,G,T,O/P,I,K,U), + inc_id(I,V), + gen_alloc_inc_clause(O/P,I,U,W) + ; + K=W, + V=I + ), + heads2_code(B,[A|C],E,[D|F],G,H,V,J,W,L). +head2_code(A,B,C,D,E,F,G,H,I) :- + D=pragma(J,_,_,_,K), + J=rule(L,_,_,_), + ( L==[] -> + reorder_heads(K,A,B,C,M,_), + propagation_code(A,M,J,K,E,F,G,H,I) + ; + simpagation_head2_code(A,B,C,D,F,G,H,I) + ). +gen_alloc_inc_clause(A/B,C,D,E) :- + vars_susp(B,F,G,H), + build_head(A,B,C,H,I), + inc_id(C,J), + build_head(A,B,J,H,K), + gen_allocation(C,F,G,A/B,H,L), + M=(I:-L,K), + D=[M|E]. +gen_cond_allocation(A,B,C,D,E) :- + gen_allocation(A,B,C,D,F), + E=(var(B)->F;true). +gen_allocation(A,B,C/D,E,F) :- + build_head(C,D,[0],E,G), + get_target_module(H), + I=..[C|A], + F=allocate_constraint(H:G,B,I,A). +gen_allocation(A,B,C,D,E,F) :- + ( A==[0] -> + ( is_attached(D) -> + ( may_trigger(D) -> + gen_cond_allocation(B,C,D,E,F) + ; + gen_allocation(B,C,D,E,F) + ) + ; + F=true + ) + ; + F=true + ). +guard_via_reschedule(A,B,C,D) :- + ( chr_pp_flag(guard_via_reschedule,on) -> + guard_via_reschedule_main(A,B,C,D) + ; + append(A,B,E), + list2conj(E,D) + ). +guard_via_reschedule_main(A,B,C,D) :- + initialize_unit_dictionary(C,E), + build_units(A,B,E,F), + dependency_reorder(F,G), + units2goal(G,D). +units2goal([],true). +units2goal([unit(_,A,_,_)|B],(A,C)) :- + units2goal(B,C). +dependency_reorder(A,B) :- + dependency_reorder(A,[],B). +dependency_reorder([],A,B) :- + reverse(A,B). +dependency_reorder([A|B],C,D) :- + A=unit(_,_,E,F), + ( E==fixed -> + G=[A|C] + ; + dependency_insert(C,A,F,G) + ), + dependency_reorder(B,G,D). +dependency_insert([],A,_,[A]). +dependency_insert([A|B],C,D,E) :- + A=unit(F,_,_,_), + ( memberchk(F,D) -> + E=[C,A|B] + ; + E=[A|G], + dependency_insert(B,C,D,G) + ). +build_units(A,B,C,D) :- + build_retrieval_units(A,1,E,C,F,D,G), + build_guard_units(B,E,F,G). +build_retrieval_units([],A,A,B,B,C,C). +build_retrieval_units([A|B],C,D,E,F,G,H) :- + term_variables(A,I), + update_unit_dictionary(I,C,E,J,[],K), + G=[unit(C,A,movable,K)|L], + M is C+1, + build_retrieval_units2(B,M,D,J,F,L,H). +build_retrieval_units2([],A,A,B,B,C,C). +build_retrieval_units2([A|B],C,D,E,F,G,H) :- + term_variables(A,I), + update_unit_dictionary(I,C,E,J,[],K), + G=[unit(C,A,fixed,K)|L], + M is C+1, + build_retrieval_units(B,M,D,J,F,L,H). +initialize_unit_dictionary(A,B) :- + term_variables(A,C), + pair_all_with(C,0,B). +update_unit_dictionary([],_,A,A,B,B). +update_unit_dictionary([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=D + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary(B,C,J,E,I,G). +build_guard_units(A,B,C,D) :- + ( A=[E] -> + D=[unit(B,E,fixed,[])] + ; + ( A=[E|F] -> + term_variables(E,G), + update_unit_dictionary2(G,B,C,H,[],I), + D=[unit(B,E,movable,I)|J], + K is B+1, + build_guard_units(F,K,H,J) + ) + ). +update_unit_dictionary2([],_,A,A,B,B). +update_unit_dictionary2([A|B],C,D,E,F,G) :- + ( lookup_eq(D,A,H) -> + ( + ( + H==C + ; + memberchk(H,F) + ) -> + I=F + ; + I=[H|F] + ), + J=[A-C|D] + ; + J=[A-C|D], + I=F + ), + update_unit_dictionary2(B,C,J,E,I,G). +unique_analyse_optimise(A,B) :- + ( chr_pp_flag(unique_analyse_optimise,on) -> + unique_analyse_optimise_main(A,1,[],B) + ; + B=A + ). +unique_analyse_optimise_main([],_,_,[]). +unique_analyse_optimise_main([A|B],C,D,[E|F]) :- + ( discover_unique_pattern(A,C,G) -> + H=[G|D] + ; + H=D + ), + A=pragma(I,J,K,L,M), + I=rule(N,O,_,_), + J=ids(P,Q), + apply_unique_patterns_to_constraints(N,P,H,R), + apply_unique_patterns_to_constraints(O,Q,H,S), + globalize_unique_pragmas(R,M), + globalize_unique_pragmas(S,M), + append([R,S,K],T), + E=pragma(I,J,T,L,M), + U is C+1, + unique_analyse_optimise_main(B,U,H,F). +globalize_unique_pragmas([],_). +globalize_unique_pragmas([unique(A,B)|C],D) :- + pragma_unique(D,A,B), + globalize_unique_pragmas(C,D). +apply_unique_patterns_to_constraints([],_,_,[]). +apply_unique_patterns_to_constraints([A|B],[C|D],E,F) :- + ( member(G,E), + apply_unique_pattern(A,C,G,H) -> + F=[H|I] + ; + F=I + ), + apply_unique_patterns_to_constraints(B,D,E,I). +apply_unique_pattern(A,B,C,D) :- + C=unique(E,F), + subsumes(A,E,G), + find_with_var_identity(H,G,(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L), + sort(L,M), + N=M, + D=unique(B,N). +subsumes(A,B,C) :- + empty_ds(D), + subsumes_aux(A,B,D,E), + ds_to_list(E,F), + build_unifier(F,C). +subsumes_aux(A,B,C,D) :- + ( compound(B), + functor(B,E,F) -> + compound(A), + functor(A,E,F), + subsumes_aux(F,A,B,C,D) + ; + ( A==B -> + D=C + ) + ; + ( var(B), + get_ds(A,C,G) -> + G==B, + D=C + ) + ; + var(B), + put_ds(A,C,B,D) + ). +subsumes_aux(0,_,_,A,A) :- + !. +subsumes_aux(A,B,C,D,E) :- + arg(A,B,F), + arg(A,C,G), + subsumes_aux(F,G,D,H), + I is A-1, + subsumes_aux(I,B,C,H,E). +build_unifier([],[]). +build_unifier([A-B|C],[B-A|D]) :- + build_unifier(C,D). +discover_unique_pattern(A,B,C) :- + A=pragma(D,_,_,E,B), + D=rule(F,G,H,_), + ( F=[I], + G=[J] -> + true + ; + ( F=[I,J], + G==[] -> + true + ) + ), + check_unique_constraints(I,J,H,B,K), + term_variables(I,L), + select_pragma_unique_variables(K,L,M), + N=unique(I,M), + copy_term_nat(N,C), + ( verbosity_on -> + format('Found unique pattern ~w in rule ~d~@ +',[C,B,(E=yes(O)->write([58,32]),write(O);true)]) + ; + true + ). +select_pragma_unique_variables([],_,[]). +select_pragma_unique_variables([A-B|C],D,E) :- + ( A==B -> + E=[A|F] + ; + once((\+memberchk_eq(A,D);\+memberchk_eq(B,D))), + E=F + ), + select_pragma_unique_variables(C,D,F). +check_unique_constraints(A,B,C,D,E) :- + \+any_passive_head(D), + variable_replacement(A-B,B-A,E), + copy_with_variable_replacement(C,F,E), + negate_b(C,G), + once(entails_b(G,F)). +check_unnecessary_active(A,B,C) :- + ( chr_pp_flag(check_unnecessary_active,full) -> + check_unnecessary_active_main(A,B,C) + ; + ( chr_pp_flag(check_unnecessary_active,simplification), + C=rule(_,[],_,_) -> + check_unnecessary_active_main(A,B,C) + ) + ; + fail + ). +check_unnecessary_active_main(A,B,C) :- + member(D,B), + variable_replacement(D,A,E), + copy_with_variable_replacement(C,F,E), + identical_rules(C,F), + !. +set_semantics_rule(A) :- + ( chr_pp_flag(set_semantics_rule,on) -> + set_semantics_rule_main(A) + ; + fail + ). +set_semantics_rule_main(A) :- + A=pragma(B,C,D,_,E), + B=rule([_],[_],true,_), + C=ids([F],[G]), + once(member(unique(F,H),D)), + once(member(unique(G,I),D)), + H==I, + \+is_passive(E,F). +identical_rules(rule(A,B,C,D),rule(E,F,G,H)) :- + C==G, + identical_bodies(D,H), + permutation(A,I), + I==E, + permutation(B,J), + J==F. +identical_bodies(A,B) :- + ( A=(C=D), + B=(E=F) -> + ( + C==E, + D==F + ; + C==F, + E==D + ), + ! + ; + A==B + ). +copy_with_variable_replacement(A,B,C) :- + ( var(A) -> + ( lookup_eq(C,A,B) -> + true + ; + A=B + ) + ; + functor(A,D,E), + functor(B,D,E), + A=..[_|F], + B=..[_|G], + copy_with_variable_replacement_l(F,G,C) + ). +copy_with_variable_replacement_l([],[],_). +copy_with_variable_replacement_l([A|B],[C|D],E) :- + copy_with_variable_replacement(A,C,E), + copy_with_variable_replacement_l(B,D,E). +variable_replacement(A,B,C) :- + variable_replacement(A,B,[],C). +variable_replacement(A,B,C,D) :- + ( var(A) -> + var(B), + ( lookup_eq(C,A,E) -> + E==B, + D=C + ; + D=[A-B|C] + ) + ; + A=..[F|G], + nonvar(B), + B=..[F|H], + variable_replacement_l(G,H,C,D) + ). +variable_replacement_l([],[],A,A). +variable_replacement_l([A|B],[C|D],E,F) :- + variable_replacement(A,C,E,G), + variable_replacement_l(B,D,G,F). +simplification_code(A,B,C,D,E/F,G,H,I) :- + D=pragma(J,_,K,_,_), + head_info(A,F,_,L,M,N), + build_head(E,F,G,M,O), + head_arg_matches(N,[],P,Q), + ( B==[] -> + R=[], + S=Q, + T=[] + ; + rest_heads_retrieval_and_matching(B,C,K,A,T,R,Q,S) + ), + guard_body_copies2(J,S,U,V), + guard_via_reschedule(T,U,O-P,W), + gen_uncond_susps_detachments(R,B,X), + gen_cond_susp_detachment(G,L,E/F,Y), + ( chr_pp_flag(debugable,on) -> + J=rule(_,_,Z,A1), + my_term_copy(Z-A1,S,_,B1-C1), + D1='chr debug_event'(try([L|E1],[],B1,C1)), + F1='chr debug_event'(apply([L|E1],[],B1,C1)) + ; + D1=true, + F1=true + ), + G1=(O:-P,W,D1,!,F1,X,Y,V), + H=[G1|I]. +head_arg_matches(A,B,C,D) :- + head_arg_matches_(A,B,E,D), + list2conj(E,C). +head_arg_matches_([],A,[],A). +head_arg_matches_([A-B|C],D,E,F) :- + ( var(A) -> + ( lookup_eq(D,A,G) -> + E=[B==G|H], + I=D + ; + I=[A-B|D], + E=H + ), + J=C + ; + ( atomic(A) -> + E=[B==A|H], + D=I, + J=C + ) + ; + A=..[_|K], + functor(A,L,M), + functor(N,L,M), + N=..[_|O], + E=[nonvar(B),B=N|H], + pairup(K,O,P), + append(P,C,J), + I=D + ), + head_arg_matches_(J,I,H,F). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H) :- + rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,[],[],[]). +rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K) :- + ( A=[_|_] -> + rest_heads_retrieval_and_matching_n(A,B,C,I,J,D,E,F,G,H,K) + ; + E=[], + F=[], + G=H + ). +rest_heads_retrieval_and_matching_n([],_,_,_,_,_,[],[],A,A,B) :- + instantiate_pattern_goals(B). +rest_heads_retrieval_and_matching_n([A|B],[C|D],E,F,G,H,[I,J|K],[L|M],N,O,P) :- + functor(A,Q,R), + get_store_type(Q/R,S), + ( S==default -> + passive_head_via(A,[H|F],P,N,I,T,U), + get_max_constraint_index(V), + ( V==1 -> + W=T + ; + get_constraint_index(Q/R,X), + make_attr(V,_,Y,T), + nth1(X,Y,W) + ) + ; + lookup_passive_head(S,A,[H|F],N,I,W), + U=P + ), + head_info(A,R,Z,_,_,A1), + head_arg_matches(A1,N,B1,C1), + D1=..[suspension,_,E1,_,_,_,_|Z], + different_from_other_susps(A,L,F,G,F1), + create_get_mutable_ref(active,E1,G1), + H1=('chr sbag_member'(L,W),L=D1,G1,F1,B1), + ( member(unique(C,I1),E), + check_unique_keys(I1,N) -> + J=(H1->true) + ; + J=H1 + ), + rest_heads_retrieval_and_matching_n(B,D,E,[A|F],[L|G],H,K,M,C1,O,U). +instantiate_pattern_goals([]). +instantiate_pattern_goals([_-attr(A,B,C)|D]) :- + get_max_constraint_index(E), + ( E==1 -> + C=true + ; + make_attr(E,F,_,A), + or_list(B,G), + !, + C=(F/\G=:=G) + ), + instantiate_pattern_goals(D). +check_unique_keys([],_). +check_unique_keys([A|B],C) :- + lookup_eq(C,A,_), + check_unique_keys(B,C). +different_from_other_susps(A,B,C,D,E) :- + ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> + list2conj(J,E) + ; + E=true + ). +passive_head_via(A,B,C,D,E,F,G) :- + functor(A,H,I), + get_constraint_index(H/I,J), + common_variables(A,B,K), + translate(K,D,L), + or_pattern(J,M), + ( permutation(L,N), + lookup_eq(C,N,attr(F,O,_)) -> + member(M,O), + !, + G=C, + E=true + ; + E=(P,Q), + gen_get_mod_constraints(L,P,F), + G=[L-attr(F,[M|_],Q)|C] + ). +common_variables(A,B,C) :- + term_variables(A,D), + term_variables(B,E), + intersect_eq(D,E,C). +gen_get_mod_constraints(A,B,C) :- + get_target_module(D), + ( A==[] -> + B=('chr default_store'(E),get_attr(E,D,F),F=C) + ; + ( A=[G] -> + H='chr via_1'(G,I) + ; + ( A=[G,J] -> + H='chr via_2'(G,J,I) + ) + ; + H='chr via'(A,I) + ), + B=(H,get_attr(I,D,F),F=C) + ). +guard_body_copies(A,B,C,D) :- + guard_body_copies2(A,B,E,D), + list2conj(E,C). +guard_body_copies2(A,B,C,D) :- + A=rule(_,_,E,F), + conj2list(E,G), + split_off_simple_guard(G,B,H,I), + my_term_copy(H-I,B,J,K-L), + append(K,[M],C), + term_variables(I,N), + term_variables(L,O), + ( chr_pp_flag(guard_locks,on), + find_with_var_identity('chr lock'(P)-'chr unlock'(P),B,(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) -> + once(pairup(S,T,R)) + ; + S=[], + T=[] + ), + list2conj(S,U), + list2conj(T,V), + list2conj(L,W), + M=(U,W,V), + my_term_copy(F,J,D). +split_off_simple_guard([],_,[],[]). +split_off_simple_guard([A|B],C,D,E) :- + ( simple_guard(A,C) -> + D=[A|F], + split_off_simple_guard(B,C,F,E) + ; + D=[], + E=[A|B] + ). +simple_guard(A,B) :- + binds_b(A,C), + \+ (member(D,C),lookup_eq(B,D,_)). +my_term_copy(A,B,C) :- + my_term_copy(A,B,_,C). +my_term_copy(A,B,C,D) :- + ( var(A) -> + ( lookup_eq(B,A,D) -> + C=B + ; + C=[A-D|B] + ) + ; + functor(A,E,F), + functor(D,E,F), + A=..[_|G], + D=..[_|H], + my_term_copy_list(G,B,C,H) + ). +my_term_copy_list([],A,A,[]). +my_term_copy_list([A|B],C,D,[E|F]) :- + my_term_copy(A,C,G,E), + my_term_copy_list(B,G,D,F). +gen_cond_susp_detachment(A,B,C,D) :- + ( is_attached(C) -> + ( A==[0], + \+may_trigger(C) -> + D=true + ; + gen_uncond_susp_detachment(B,C,E), + D=(var(B)->true;E) + ) + ; + D=true + ). +gen_uncond_susp_detachment(A,B,C) :- + ( is_attached(B) -> + ( may_trigger(B) -> + make_name(detach_,B,D), + E=..[D,F,A] + ; + E=true + ), + ( chr_pp_flag(debugable,on) -> + G='chr debug_event'(remove(A)) + ; + G=true + ), + generate_delete_constraint_call(B,A,H), + C=(G,remove_constraint_internal(A,F,I),(I==yes->H,E;true)) + ; + C=true + ). +gen_uncond_susps_detachments([],[],true). +gen_uncond_susps_detachments([A|B],[C|D],(E,F)) :- + functor(C,G,H), + gen_uncond_susp_detachment(A,G/H,E), + gen_uncond_susps_detachments(B,D,F). +simpagation_head1_code(A,B,C,D,E/F,G,H,I) :- + D=pragma(J,ids(_,K),L,_,M), + J=rule(_,N,O,P), + head_info(A,F,_,Q,R,S), + head_arg_matches(S,[],T,U), + build_head(E,F,G,R,V), + append(B,N,W), + append(C,K,X), + reorder_heads(M,A,W,X,Y,Z), + rest_heads_retrieval_and_matching(Y,Z,L,A,A1,B1,U,C1), + split_by_ids(Z,B1,C,D1,E1), + guard_body_copies2(J,C1,F1,G1), + guard_via_reschedule(A1,F1,V-T,H1), + gen_uncond_susps_detachments(D1,B,I1), + gen_cond_susp_detachment(G,Q,E/F,J1), + ( chr_pp_flag(debugable,on) -> + my_term_copy(O-P,C1,_,K1-L1), + M1='chr debug_event'(try([Q|D1],E1,K1,L1)), + N1='chr debug_event'(apply([Q|D1],E1,K1,L1)) + ; + M1=true, + N1=true + ), + O1=(V:-T,H1,M1,!,N1,I1,J1,G1), + H=[O1|I]. +split_by_ids([],[],_,[],[]). +split_by_ids([A|B],[C|D],E,F,G) :- + ( memberchk_eq(A,E) -> + F=[C|H], + G=I + ; + F=H, + G=[C|I] + ), + split_by_ids(B,D,E,H,I). +simpagation_head2_code(A,B,C,D,E,F,G,H) :- + D=pragma(I,ids(J,_),_,_,K), + I=rule(L,_,M,N), + reorder_heads(K,A,L,J,[O|P],[Q|R]), + simpagation_head2_prelude(A,O,[B,L,M,N],E,F,G,S), + extend_id(F,T), + simpagation_head2_worker(A,O,Q,P,R,B,C,D,E,T,S,H). +simpagation_head2_prelude(A,B,C,D/E,F,G,H) :- + head_info(A,E,I,J,K,L), + build_head(D,E,F,K,M), + head_arg_matches(L,[],N,O), + lookup_passive_head(B,[A],O,P,Q), + gen_allocation(F,I,J,D/E,K,R), + extend_id(F,S), + extra_active_delegate_variables(A,C,O,T), + append([Q|K],T,U), + build_head(D,E,S,U,V), + W=(M:-N,P,!,R,V), + G=[W|H]. +extra_active_delegate_variables(A,B,C,D) :- + A=..[_|E], + delegate_variables(A,B,C,E,D). +passive_delegate_variables(A,B,C,D,E) :- + term_variables(B,F), + delegate_variables(A,C,D,F,E). +delegate_variables(A,B,C,D,E) :- + term_variables(A,F), + term_variables(B,G), + intersect_eq(F,G,H), + list_difference_eq(H,D,I), + translate(I,C,E). +simpagation_head2_worker(A,B,C,D,E,F,G,H,I,J,K,L) :- + H=pragma(M,_,_,_,_), + M=rule(_,_,N,O), + simpagation_head2_worker_end(A,[B,D,F,N,O],I,J,K,P), + simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J,P,L). +simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I/J,K,L,M) :- + gen_var(N), + gen_var(O), + head_info(A,J,_,P,Q,R), + head_arg_matches(R,[],_,S), + H=pragma(T,_,U,_,V), + T=rule(_,_,W,X), + extra_active_delegate_variables(A,[B,D,F,W,X],S,Y), + append([[N|O]|Q],Y,Z), + build_head(I,J,K,Z,A1), + functor(B,_,B1), + head_info(B,B1,C1,_,_,D1), + head_arg_matches(D1,S,E1,F1), + G1=..[suspension,_,H1,_,_,_,_|C1], + create_get_mutable_ref(active,H1,I1), + J1=(N=G1,I1), + ( + ( + D\==[] + ; + F\==[] + ) -> + append(D,F,K1), + append(E,G,L1), + reorder_heads(V,B-A,K1,L1,M1,N1), + rest_heads_retrieval_and_matching(M1,N1,U,[B,A],O1,P1,F1,Q1,[B],[N],[]), + split_by_ids(N1,P1,E,R1,S1) + ; + O1=[], + R1=[], + S1=[], + Q1=F1 + ), + gen_uncond_susps_detachments([N|R1],[B|D],T1), + append([O|Q],Y,U1), + build_head(I,J,K,U1,V1), + append([[]|Q],Y,W1), + build_head(I,J,K,W1,X1), + guard_body_copies2(T,Q1,Y1,Z1), + guard_via_reschedule(O1,Y1,v(A1,J1,E1),A2), + ( Z1\==true -> + gen_uncond_attach_goal(I/J,P,B2,C2), + gen_state_cond_call(P,J,V1,C2,D2), + gen_state_cond_call(P,J,X1,C2,E2) + ; + B2=true, + D2=V1, + E2=X1 + ), + ( chr_pp_flag(debugable,on) -> + my_term_copy(W-X,Q1,_,F2-G2), + H2='chr debug_event'(try([N|R1],[P|S1],F2,G2)), + I2='chr debug_event'(apply([N|R1],[P|S1],F2,G2)) + ; + H2=true, + I2=true + ), + ( member(unique(C,J2),U), + check_unique_keys(J2,S) -> + K2=(A1:-J1,E1->(A2,H2->I2,T1,B2,Z1,E2;X1);V1) + ; + K2=(A1:-J1,E1,A2,H2->I2,T1,B2,Z1,D2;V1) + ), + L=[K2|M]. +gen_state_cond_call(A,B,C,D,E) :- + length(F,B), + G=..[suspension,_,H,_,I,_,_|F], + create_get_mutable_ref(active,H,J), + create_get_mutable_ref(D,I,K), + E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true). +simpagation_head2_worker_end(A,B,C/D,E,F,G) :- + head_info(A,D,_,_,H,I), + head_arg_matches(I,[],_,J), + extra_active_delegate_variables(A,B,J,K), + append([[]|H],K,L), + build_head(C,D,E,L,M), + next_id(E,N), + build_head(C,D,N,H,O), + P=(M:-O), + F=[P|G]. +propagation_code(A,B,C,D,E,F,G,H,I) :- + ( B==[] -> + propagation_single_headed(A,C,D,F,G,H,I) + ; + propagation_multi_headed(A,B,C,D,E,F,G,H,I) + ). +propagation_single_headed(A,B,C,D/E,F,G,H) :- + head_info(A,E,I,J,K,L), + build_head(D,E,F,K,M), + inc_id(F,N), + build_head(D,E,N,K,O), + P=O, + head_arg_matches(L,[],Q,R), + guard_body_copies(B,R,S,T), + gen_allocation(F,I,J,D/E,K,U), + gen_uncond_attach_goal(D/E,J,V,W), + gen_state_cond_call(J,E,P,W,X), + ( chr_pp_flag(debugable,on) -> + B=rule(_,_,Y,Z), + my_term_copy(Y-Z,R,_,A1-B1), + C1='chr debug_event'(try([],[J],A1,B1)), + D1='chr debug_event'(apply([],[J],A1,B1)) + ; + C1=true, + D1=true + ), + E1=(M:-Q,U,'chr novel_production'(J,C),S,C1,!,D1,'chr extend_history'(J,C),V,T,X), + G=[E1|H]. +propagation_multi_headed(A,B,C,D,E,F,G,H,I) :- + B=[J|K], + propagation_prelude(A,B,C,F,G,H,L), + extend_id(G,M), + propagation_nested_code(K,[J,A],C,D,E,F,M,L,I). +propagation_prelude(A,[B|C],D,E/F,G,H,I) :- + head_info(A,F,J,K,L,M), + build_head(E,F,G,L,N), + head_arg_matches(M,[],O,P), + D=rule(_,_,Q,R), + extra_active_delegate_variables(A,[B,C,Q,R],P,S), + lookup_passive_head(B,[A],P,T,U), + gen_allocation(G,J,K,E/F,L,V), + extend_id(G,W), + append([U|L],S,X), + build_head(E,F,W,X,Y), + Z=Y, + A1=(N:-O,T,!,V,Z), + H=[A1|I]. +propagation_nested_code([],[A|B],C,D,E,F,G,H,I) :- + propagation_end([A|B],[],C,F,G,H,J), + propagation_body(A,B,C,D,E,F,G,J,I). +propagation_nested_code([A|B],C,D,E,F,G,H,I,J) :- + propagation_end(C,[A|B],D,G,H,I,K), + propagation_accumulator([A|B],C,D,G,H,K,L), + inc_id(H,M), + propagation_nested_code(B,[A|C],D,E,F,G,M,L,J). +propagation_body(A,B,C,D,E,F/G,H,I,J) :- + C=rule(_,_,K,L), + get_prop_inner_loop_vars(B,[A,K,L],M,N,O,P), + gen_var(Q), + gen_var(R), + functor(A,_,S), + gen_vars(S,T), + U=..[suspension,_,V,_,_,_,_|T], + create_get_mutable_ref(active,V,W), + X=(Q=U,W), + Y=[[Q|R]|M], + build_head(F,G,H,Y,Z), + A1=[R|M], + build_head(F,G,H,A1,B1), + C1=B1, + A=..[_|D1], + pairup(D1,T,E1), + head_arg_matches(E1,N,F1,G1), + different_from_other_susps(A,Q,B,P,H1), + guard_body_copies(C,G1,I1,J1), + gen_uncond_attach_goal(F/G,O,K1,L1), + gen_state_cond_call(O,G,C1,L1,M1), + history_susps(E,[Q|P],O,[],N1), + bagof('chr novel_production'(O1,P1),(member(O1,N1),P1=Q1),R1), + list2conj(R1,S1), + T1=..[t,D|N1], + ( chr_pp_flag(debugable,on) -> + C=rule(_,_,K,L), + my_term_copy(K-L,G1,_,U1-V1), + W1='chr debug_event'(try([],[O,Q|P],U1,V1)), + X1='chr debug_event'(apply([],[O,Q|P],U1,V1)) + ; + W1=true, + X1=true + ), + Y1=(Z:-X,H1,F1,Q1=T1,S1,I1,W1->X1,'chr extend_history'(O,Q1),K1,J1,M1;C1), + I=[Y1|J]. +history_susps(A,B,C,D,E) :- + ( A==0 -> + reverse(B,F), + append(F,[C|D],E) + ; + B=[G|H], + I is A-1, + history_susps(I,H,C,[G|D],E) + ). +get_prop_inner_loop_vars([A],B,C,D,E,[]) :- + !, + functor(A,_,F), + head_info(A,F,_,E,G,H), + head_arg_matches(H,[],_,D), + extra_active_delegate_variables(A,B,D,I), + append(G,I,C). +get_prop_inner_loop_vars([A|B],C,D,E,F,[G|H]) :- + get_prop_inner_loop_vars(B,[A|C],I,J,F,H), + functor(A,_,K), + gen_var(L), + head_info(A,K,_,G,_,M), + head_arg_matches(M,J,_,E), + passive_delegate_variables(A,B,C,E,N), + append(N,[G,L|I],D). +propagation_end([A|B],C,D,E/F,G,H,I) :- + D=rule(_,_,J,K), + gen_var_susp_list_for(B,[A,C,J,K],_,L,M,N), + O=[[]|L], + build_head(E,F,G,O,P), + ( G=[0|_] -> + next_id(G,Q), + R=M + ; + dec_id(G,Q), + R=[N|M] + ), + build_head(E,F,Q,R,S), + T=S, + U=(P:-T), + H=[U|I]. +gen_var_susp_list_for([A],B,C,D,E,F) :- + !, + functor(A,_,G), + head_info(A,G,_,F,E,H), + head_arg_matches(H,[],_,C), + extra_active_delegate_variables(A,B,C,I), + append(E,I,D). +gen_var_susp_list_for([A|B],C,D,E,F,G) :- + gen_var_susp_list_for(B,[A|C],H,F,_,_), + functor(A,_,I), + gen_var(G), + head_info(A,I,_,J,_,K), + head_arg_matches(K,H,_,D), + passive_delegate_variables(A,B,C,D,L), + append(L,[J,G|F],E). +propagation_accumulator([A|B],[C|D],E,F/G,H,I,J) :- + E=rule(_,_,K,L), + pre_vars_and_susps(D,[C,A,B,K,L],M,N,O), + gen_var(P), + functor(C,_,Q), + gen_vars(Q,R), + head_info(C,Q,R,S,_,T), + head_arg_matches(T,N,U,V), + W=..[suspension,_,X,_,_,_,_|R], + different_from_other_susps(C,S,D,O,Y), + create_get_mutable_ref(active,X,Z), + A1=(S=W,Z,Y,U), + lookup_passive_head(A,[C|D],V,B1,C1), + inc_id(H,D1), + E1=[[S|P]|M], + build_head(F,G,H,E1,F1), + passive_delegate_variables(C,D,[A,B,K,L],V,G1), + append([C1|G1],[S,P|M],H1), + build_head(F,G,D1,H1,I1), + J1=[P|M], + build_head(F,G,H,J1,K1), + L1=(F1:-A1,B1->I1;K1), + I=[L1|J]. +pre_vars_and_susps([A],B,C,D,[]) :- + !, + functor(A,_,E), + head_info(A,E,_,_,F,G), + head_arg_matches(G,[],_,D), + extra_active_delegate_variables(A,B,D,H), + append(F,H,C). +pre_vars_and_susps([A|B],C,D,E,[F|G]) :- + pre_vars_and_susps(B,[A|C],H,I,G), + functor(A,_,J), + gen_var(K), + head_info(A,J,_,F,_,L), + head_arg_matches(L,I,_,E), + passive_delegate_variables(A,B,C,E,M), + append(M,[F,K|H],D). +reorder_heads(A,B,C,D,E,F) :- + ( chr_pp_flag(reorder_heads,on) -> + reorder_heads_main(A,B,C,D,E,F) + ; + E=C, + F=D + ). +reorder_heads_main(A,B,C,D,E,F) :- + term_variables(B,G), + H=entry([],[],G,C,D,A), + a_star(H,I^(chr_translate:final_data(I)),J^K^L^(chr_translate:expand_data(J,K,L)),M), + M=entry(N,O,_,_,_,_), + reverse(N,E), + reverse(O,F). +final_data(A) :- + A=entry(_,_,_,_,[],_). +expand_data(A,B,C) :- + A=entry(D,E,F,G,H,I), + term_variables(A,_), + B=entry([J|D],[K|E],L,M,N,I), + select2(J,K,G,H,M,N), + order_score(J,K,F,M,I,C), + term_variables([J|F],L). +order_score(A,B,C,D,E,F) :- + functor(A,G,H), + get_store_type(G/H,I), + order_score(I,A,B,C,D,E,F). +order_score(default,A,_,B,C,_,D) :- + term_variables(A,E), + term_variables(C,_), + order_score_vars(E,B,C,0,D). +order_score(multi_hash(A),B,_,C,_,_,D) :- + order_score_indexes(A,B,C,0,D). +order_score(global_ground,A,B,_,_,C,D) :- + functor(A,_,E), + ( get_pragma_unique(C,B,F), + F==[] -> + D=1 + ; + ( E==0 -> + D=10 + ) + ; + ( E>0 -> + D=100 + ) + ). +order_score(multi_store(A),B,C,D,E,F,G) :- + find_with_var_identity(H,t(B,D,E),(member(I,A),chr_translate:order_score(I,B,C,D,E,F,H)),J), + min_list(J,G). +order_score_indexes([],_,_,A,A) :- + A>0. +order_score_indexes([A|B],C,D,E,F) :- + multi_hash_key_args(A,C,G), + ( forall(H,G,hprolog:memberchk_eq(H,D)) -> + I is E+10 + ; + I=E + ), + order_score_indexes(B,C,D,I,F). +order_score_vars([],_,_,A,B) :- + ( A==0 -> + B=0 + ; + B=A + ). +order_score_vars([A|B],C,D,E,F) :- + ( memberchk_eq(A,C) -> + G is E+10 + ; + ( memberchk_eq(A,D) -> + G is E+100 + ) + ; + G=E + ), + order_score_vars(B,C,D,G,F). +create_get_mutable_ref(A,B,C) :- + C=(B=mutable(A)). +gen_var(_). +gen_vars(A,B) :- + length(B,A). +head_info(A,B,C,D,E,F) :- + vars_susp(B,C,D,E), + A=..[_|G], + pairup(G,C,F). +inc_id([A|B],[C|B]) :- + C is A+1. +dec_id([A|B],[C|B]) :- + C is A-1. +extend_id(A,[0|A]). +next_id([_,A|B],[C|B]) :- + C is A+1. +build_head(A,B,C,D,E) :- + buildName(A,B,C,F), + E=..[F|D]. +buildName(A,B,C,D) :- + atom_concat(A,/,E), + atomic_concat(E,B,F), + buildName_(C,F,D). +buildName_([],A,A). +buildName_([A|B],C,D) :- + buildName_(B,C,E), + atom_concat(E,'__',F), + atomic_concat(F,A,D). +vars_susp(A,B,C,D) :- + length(B,A), + append(B,[C],D). +make_attr(A,B,C,D) :- + length(C,A), + D=..[v,B|C]. +or_pattern(A,B) :- + C is A-1, + B is 1< + list2conj(B,C) + ; + C=(A,D), + list2conj(B,D) + ). +list2disj([],fail). +list2disj([A],B) :- + !, + B=A. +list2disj([A|B],C) :- + ( A==fail -> + list2disj(B,C) + ; + C=(A;D), + list2disj(B,D) + ). +atom_concat_list([A],A) :- + !. +atom_concat_list([A|B],C) :- + atom_concat_list(B,D), + atomic_concat(A,D,C). +atomic_concat(A,B,C) :- + make_atom(A,D), + make_atom(B,E), + atom_concat(D,E,C). +make_atom(A,B) :- + ( atom(A) -> + B=A + ; + ( number(A) -> + number_codes(A,C), + atom_codes(B,C) + ) + ). +make_name(A,B/C,D) :- + atom_concat_list([A,B,/,C],D). +set_elems([],_). +set_elems([A|B],A) :- + set_elems(B,A). +member2([A|_],[B|_],A-B). +member2([_|A],[_|B],C) :- + member2(A,B,C). +select2(A,B,[A|C],[B|D],C,D). +select2(A,B,[C|D],[E|F],[C|G],[E|H]) :- + select2(A,B,D,F,G,H). +pair_all_with([],_,[]). +pair_all_with([A|B],C,[A-C|D]) :- + pair_all_with(B,C,D). +lookup_passive_head(A,B,C,D,E) :- + functor(A,F,G), + get_store_type(F/G,H), + lookup_passive_head(H,A,B,C,D,E). +lookup_passive_head(default,A,B,C,D,E) :- + passive_head_via(A,B,[],C,D,F,G), + instantiate_pattern_goals(G), + get_max_constraint_index(H), + ( H==1 -> + E=F + ; + functor(A,I,J), + get_constraint_index(I/J,K), + make_attr(H,_,L,F), + nth1(K,L,E) + ). +lookup_passive_head(multi_hash(A),B,_,C,D,E) :- + once((member(F,A),multi_hash_key_args(F,B,G),translate(G,C,H))), + ( H=[I] -> + true + ; + I=..[k|H] + ), + functor(B,J,K), + multi_hash_via_lookup_name(J/K,F,L), + D=..[L,I,E], + update_store_type(J/K,multi_hash([F])). +lookup_passive_head(global_ground,A,_,_,B,C) :- + functor(A,D,E), + global_ground_store_name(D/E,F), + make_get_store_goal(F,C,B), + update_store_type(D/E,global_ground). +lookup_passive_head(multi_store(A),B,C,D,E,F) :- + once((member(G,A),lookup_passive_head(G,B,C,D,E,F))). +assume_constraint_stores([]). +assume_constraint_stores([A|B]) :- + ( \+may_trigger(A), + is_attached(A), + get_store_type(A,default) -> + get_indexed_arguments(A,C), + findall(D,(sublist(D,C),D\==[]),E), + assumed_store_type(A,multi_store([multi_hash(E),global_ground])) + ; + true + ), + assume_constraint_stores(B). +get_indexed_arguments(A,B) :- + A=_/C, + get_indexed_arguments(1,C,A,B). +get_indexed_arguments(A,B,C,D) :- + ( A>B -> + D=[] + ; + ( is_indexed_argument(C,A) -> + D=[A|E] + ; + D=E + ), + F is A+1, + get_indexed_arguments(F,B,C,E) + ). +validate_store_type_assumptions([]). +validate_store_type_assumptions([A|B]) :- + validate_store_type_assumption(A), + validate_store_type_assumptions(B). +verbosity_on :- + prolog_flag(verbose,A), + A==yes. +attr_unify_hook(_,_) :- + write('ERROR: Unexpected triggering of attr_unify_hook/2 in module '), + writeln(chr_translate). +remove_constraint_internal(A,B,C) :- + arg(2,A,D), + 'chr get_mutable'(E,D), + 'chr update_mutable'(removed,D), + ( compound(E) -> + B=[], + C=no + ; + ( E==removed -> + B=[], + C=no + ) + ; + C=yes, + chr_indexed_variables(A,B) + ). +activate_constraint(A,B,C,D) :- + arg(2,C,E), + 'chr get_mutable'(F,E), + 'chr update_mutable'(active,E), + ( nonvar(D) -> + true + ; + arg(4,C,G), + 'chr get_mutable'(H,G), + D is H+1, + 'chr update_mutable'(D,G) + ), + ( compound(F) -> + term_variables(F,B), + 'chr none_locked'(B), + A=yes + ; + ( F==removed -> + chr_indexed_variables(C,B), + A=yes + ) + ; + B=[], + A=no + ). +allocate_constraint(A,B,C,D) :- + B=..[suspension,E,F,A,G,H,C|D], + 'chr create_mutable'(0,G), + 'chr empty_history'(I), + 'chr create_mutable'(I,H), + chr_indexed_variables(B,J), + 'chr create_mutable'(passive(J),F), + 'chr gen_id'(E). +chr_indexed_variables(_,[]). +insert_constraint_internal(yes,A,B,C,D,E) :- + B=..[suspension,F,G,C,H,I,D|E], + chr_indexed_variables(B,A), + 'chr none_locked'(A), + 'chr create_mutable'(active,G), + 'chr create_mutable'(0,H), + 'chr empty_history'(J), + 'chr create_mutable'(J,I), + 'chr gen_id'(F). +'$insert_in_store_constraint/2'(A) :- + arg(8,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), + insert_ht(C,B,A), + true. +'$delete_from_store_constraint/2'(A) :- + arg(8,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), + delete_ht(C,B,A), + true. +'$insert_in_store_constraint_count/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',B), + b_setval('$chr_store_global_ground_chr_translate:constraint_count/1',[A|B]). +'$delete_from_store_constraint_count/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',B), + 'chr sbag_del_element'(B,A,C), + b_setval('$chr_store_global_ground_chr_translate:constraint_count/1',C). +'$insert_in_store_constraint_index/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_constraint_index/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_max_constraint_index/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',B), + b_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',[A|B]). +'$delete_from_store_max_constraint_index/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',B), + 'chr sbag_del_element'(B,A,C), + b_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',C). +'$insert_in_store_target_module/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:target_module/1',B), + b_setval('$chr_store_global_ground_chr_translate:target_module/1',[A|B]). +'$delete_from_store_target_module/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:target_module/1',B), + 'chr sbag_del_element'(B,A,C), + b_setval('$chr_store_global_ground_chr_translate:target_module/1',C). +'$insert_in_store_attached/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_attached/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_indexed_argument/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_indexed_argument/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_constraint_mode/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_constraint_mode/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_store_type/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_store_type/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_actual_store_types/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_actual_store_types/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_assumed_store_type/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_assumed_store_type/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_rule_count/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',B), + b_setval('$chr_store_global_ground_chr_translate:rule_count/1',[A|B]). +'$delete_from_store_rule_count/1'(A) :- + nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',B), + 'chr sbag_del_element'(B,A,C), + b_setval('$chr_store_global_ground_chr_translate:rule_count/1',C). +'$insert_in_store_passive/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_passive/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_pragma_unique/3'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_pragma_unique/3'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_occurrence/4'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_occurrence/4'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_max_occurrence/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_max_occurrence/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), + delete_ht(C,B,A), + true. +'$insert_in_store_allocation_occurrence/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), + insert_ht(C,B,A), + true, + nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[A|D]). +'$delete_from_store_allocation_occurrence/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), + delete_ht(C,B,A), + true, + nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + 'chr sbag_del_element'(D,A,E), + b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',E). +'$insert_in_store_rule/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), + insert_ht(C,B,A), + true. +'$delete_from_store_rule/2'(A) :- + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), + delete_ht(C,B,A), + true. +'$enumerate_suspensions'(A) :- + ( + nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',B), + value_ht(B,A) + ; + nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',C), + 'chr sbag_member'(A,C) + ; + nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',D), + value_ht(D,A) + ; + nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',E), + 'chr sbag_member'(A,E) + ; + nb_getval('$chr_store_global_ground_chr_translate:target_module/1',F), + 'chr sbag_member'(A,F) + ; + nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',G), + value_ht(G,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',H), + value_ht(H,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',I), + value_ht(I,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',J), + value_ht(J,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',K), + value_ht(K,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',L), + value_ht(L,A) + ; + nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',M), + 'chr sbag_member'(A,M) + ; + nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',N), + value_ht(N,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',O), + value_ht(O,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',P), + value_ht(P,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',Q), + value_ht(Q,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',R), + value_ht(R,A) + ; + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',S), + value_ht(S,A) + ). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint/2-2',A). +'$via1_multi_hash_constraint/2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), + lookup_ht(C,A,B). +:-nb_setval('$chr_store_global_ground_chr_translate:constraint_count/1',[]). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',A). +'$via1_multi_hash_constraint_index/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), + lookup_ht(C,A,B). +:-nb_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',[]). +:-nb_setval('$chr_store_global_ground_chr_translate:target_module/1',[]). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:attached/2-1',A). +'$via1_multi_hash_attached/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',A). +'$via1_multi_hash_indexed_argument/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',A). +'$via1_multi_hash_constraint_mode/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:store_type/2-1',A). +'$via1_multi_hash_store_type/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',A). +'$via1_multi_hash_actual_store_types/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',A). +'$via1_multi_hash_assumed_store_type/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), + lookup_ht(C,A,B). +:-nb_setval('$chr_store_global_ground_chr_translate:rule_count/1',[]). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:passive/2-1',A). +'$via1_multi_hash_passive/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',A). +'$via1_multi_hash_pragma_unique/3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:occurrence/4-1',A). +'$via1_multi_hash_occurrence/4-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',A). +'$via1_multi_hash_max_occurrence/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), + lookup_ht(C,A,B). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',A). +'$via1_multi_hash_allocation_occurrence/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), + lookup_ht(C,A,B). +:-nb_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[]). +:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:rule/2-1',A). +'$via1_multi_hash_rule/2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), + lookup_ht(C,A,B). +constraint(A,B) :- + 'constraint/2__0'(A,B,_). +'constraint/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'constraint/2__0'(A,B,C),constraint(A,B),[A,B]), + '$insert_in_store_constraint/2'(C). +get_constraint(A,B) :- + 'get_constraint/2__0'(A,B,_). +'get_constraint/2__0'(A,B,_) :- + '$via1_multi_hash_constraint/2-2'(B,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + F==B, + !, + A=E. +'get_constraint/2__0'(_,_,_) :- + !, + fail. +constraint_count(A) :- + 'constraint_count/1__0'(A,_). +'constraint_count/1__0'(A,B) :- + insert_constraint_internal(_,_,B,chr_translate:'constraint_count/1__0'(A,B),constraint_count(A),[A]), + '$insert_in_store_constraint_count/1'(B). +get_constraint_count(A) :- + 'get_constraint_count/1__0'(A,_). +'get_constraint_count/1__0'(A,_) :- + nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D), + E=mutable(active), + !, + A=D. +'get_constraint_count/1__0'(A,_) :- + !, + A=0. +constraint_index(A,B) :- + 'constraint_index/2__0'(A,B,_). +'constraint_index/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'constraint_index/2__0'(A,B,C),constraint_index(A,B),[A,B]), + '$insert_in_store_constraint_index/2'(C). +get_constraint_index(A,B) :- + 'get_constraint_index/2__0'(A,B,_). +'get_constraint_index/2__0'(A,B,_) :- + '$via1_multi_hash_constraint_index/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_constraint_index/2__0'(_,_,_) :- + !, + fail. +max_constraint_index(A) :- + 'max_constraint_index/1__0'(A,_). +'max_constraint_index/1__0'(A,B) :- + insert_constraint_internal(_,_,B,chr_translate:'max_constraint_index/1__0'(A,B),max_constraint_index(A),[A]), + '$insert_in_store_max_constraint_index/1'(B). +get_max_constraint_index(A) :- + 'get_max_constraint_index/1__0'(A,_). +'get_max_constraint_index/1__0'(A,_) :- + nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D), + E=mutable(active), + !, + A=D. +'get_max_constraint_index/1__0'(A,_) :- + !, + A=0. +target_module(A) :- + 'target_module/1__0'(A,_). +'target_module/1__0'(A,B) :- + insert_constraint_internal(_,_,B,chr_translate:'target_module/1__0'(A,B),target_module(A),[A]), + '$insert_in_store_target_module/1'(B). +get_target_module(A) :- + 'get_target_module/1__0'(A,_). +'get_target_module/1__0'(A,_) :- + nb_getval('$chr_store_global_ground_chr_translate:target_module/1',C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D), + E=mutable(active), + !, + A=D. +'get_target_module/1__0'(A,_) :- + !, + A=user. +attached(A,B) :- + 'attached/2__0'(A,B,_). +'attached/2__0'(A,_,_) :- + '$via1_multi_hash_attached/2-1'(A,C), + 'chr sbag_member'(B,C), + B=suspension(_,F,_,_,_,_,D,E), + F=mutable(active), + D==A, + E==yes, + !. +'attached/2__0'(A,B,C) :- + B==yes, + '$via1_multi_hash_attached/2-1'(A,D), + !, + allocate_constraint(chr_translate:'attached/2__0'(A,B,C),C,attached(A,B),[A,B]), + 'attached/2__0__0'(D,A,B,C). +'attached/2__0__0'([],A,B,C) :- + 'attached/2__1'(A,B,C). +'attached/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,G,_,_,_,_,F,_), + G=mutable(active), + F==A -> + remove_constraint_internal(D,_,H), + ( H==yes -> + '$delete_from_store_attached/2'(D) + ; + true + ), + 'attached/2__0__0'(E,A,B,C) + ; + 'attached/2__0__0'(E,A,B,C) + ). +'attached/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'attached/2__0'(A,B,C),C,attached(A,B),[A,B]), + 'attached/2__1'(A,B,C). +'attached/2__1'(A,_,B) :- + '$via1_multi_hash_attached/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + F==no, + !, + ( var(B) -> + true + ; + remove_constraint_internal(B,_,H), + ( H==yes -> + '$delete_from_store_attached/2'(B) + ; + true + ) + ). +'attached/2__1'(A,B,C) :- + B==no, + '$via1_multi_hash_attached/2-1'(A,D), + !, + 'attached/2__1__0'(D,A,B,C). +'attached/2__1__0'([],A,B,C) :- + 'attached/2__2'(A,B,C). +'attached/2__1__0'([D|E],A,B,C) :- + ( D=suspension(_,G,_,_,_,_,F,_), + G=mutable(active), + F==A -> + remove_constraint_internal(D,_,H), + ( H==yes -> + '$delete_from_store_attached/2'(D) + ; + true + ), + 'attached/2__1__0'(E,A,B,C) + ; + 'attached/2__1__0'(E,A,B,C) + ). +'attached/2__1'(A,B,C) :- + 'attached/2__2'(A,B,C). +'attached/2__2'(A,B,C) :- + B==maybe, + '$via1_multi_hash_attached/2-1'(A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==maybe, + !, + ( var(C) -> + true + ; + remove_constraint_internal(C,_,I), + ( I==yes -> + '$delete_from_store_attached/2'(C) + ; + true + ) + ) + ; + !, + 'attached/2__2__0'(E,A,B,C) + ). +'attached/2__2__0'([],A,B,C) :- + 'attached/2__3'(A,B,C). +'attached/2__2__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==maybe -> + remove_constraint_internal(D,_,I), + ( I==yes -> + '$delete_from_store_attached/2'(D) + ; + true + ), + 'attached/2__2__0'(E,A,B,C) + ; + 'attached/2__2__0'(E,A,B,C) + ). +'attached/2__2'(A,B,C) :- + 'attached/2__3'(A,B,C). +'attached/2__3'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_attached/2'(A) + ; + true + ). +is_attached(A) :- + 'is_attached/1__0'(A,_). +'is_attached/1__0'(A,_) :- + '$via1_multi_hash_attached/2-1'(A,C), + 'chr sbag_member'(B,C), + B=suspension(_,F,_,_,_,_,D,E), + F=mutable(active), + D==A, + !, + E\==no. +'is_attached/1__0'(_,_) :- + !. +indexed_argument(A,B) :- + 'indexed_argument/2__0'(A,B,_). +'indexed_argument/2__0'(A,B,C) :- + '$via1_multi_hash_indexed_argument/2-1'(A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==B, + ! + ; + !, + allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]), + 'indexed_argument/2__0__0'(E,A,B,C) + ). +'indexed_argument/2__0__0'([],A,B,C) :- + 'indexed_argument/2__1'(A,B,C). +'indexed_argument/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==B -> + remove_constraint_internal(D,_,I), + ( I==yes -> + '$delete_from_store_indexed_argument/2'(D) + ; + true + ), + 'indexed_argument/2__0__0'(E,A,B,C) + ; + 'indexed_argument/2__0__0'(E,A,B,C) + ). +'indexed_argument/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]), + 'indexed_argument/2__1'(A,B,C). +'indexed_argument/2__1'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_indexed_argument/2'(A) + ; + true + ). +is_indexed_argument(A,B) :- + 'is_indexed_argument/2__0'(A,B,_). +'is_indexed_argument/2__0'(A,B,_) :- + '$via1_multi_hash_indexed_argument/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + F==B, + !. +'is_indexed_argument/2__0'(_,_,_) :- + !, + fail. +constraint_mode(A,B) :- + 'constraint_mode/2__0'(A,B,_). +'constraint_mode/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'constraint_mode/2__0'(A,B,C),constraint_mode(A,B),[A,B]), + '$insert_in_store_constraint_mode/2'(C). +get_constraint_mode(A,B) :- + 'get_constraint_mode/2__0'(A,B,_). +'get_constraint_mode/2__0'(A,B,_) :- + '$via1_multi_hash_constraint_mode/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_constraint_mode/2__0'(A,B,_) :- + !, + A=_/C, + length(B,C), + set_elems(B,?). +may_trigger(A) :- + 'may_trigger/1__0'(A,_). +'may_trigger/1__0'(A,_) :- + !, + is_attached(A), + get_constraint_mode(A,B), + has_nonground_indexed_argument(A,1,B). +has_nonground_indexed_argument(A,B,C) :- + 'has_nonground_indexed_argument/3__0'(A,B,C,_). +'has_nonground_indexed_argument/3__0'(A,B,C,_) :- + nonvar(C), + C=[D|E], + !, + ( is_indexed_argument(A,B), + D\== + -> + true + ; + F is B+1, + has_nonground_indexed_argument(A,F,E) + ). +'has_nonground_indexed_argument/3__0'(_,_,_,_) :- + !, + fail. +store_type(A,B) :- + 'store_type/2__0'(A,B,_). +'store_type/2__0'(A,B,_) :- + nonvar(B), + B=atom_hash(C), + !, + store_type(A,multi_hash([C])). +'store_type/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'store_type/2__0'(A,B,C),store_type(A,B),[A,B]), + '$insert_in_store_store_type/2'(C). +get_store_type(A,B) :- + 'get_store_type/2__0'(A,B,_). +'get_store_type/2__0'(A,B,_) :- + '$via1_multi_hash_store_type/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_store_type/2__0'(A,B,_) :- + '$via1_multi_hash_assumed_store_type/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_store_type/2__0'(_,A,_) :- + !, + A=default. +update_store_type(A,B) :- + 'update_store_type/2__0'(A,B,_). +'update_store_type/2__0'(A,B,_) :- + '$via1_multi_hash_actual_store_types/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + ( + 'chr lock'(B), + 'chr lock'(F), + member(B,F), + 'chr unlock'(B), + 'chr unlock'(F), + ! + ; + !, + remove_constraint_internal(C,_,H), + ( H==yes -> + '$delete_from_store_actual_store_types/2'(C) + ; + true + ), + actual_store_types(A,[B|F]) + ). +'update_store_type/2__0'(A,B,_) :- + !, + actual_store_types(A,[B]). +actual_store_types(A,B) :- + 'actual_store_types/2__0'(A,B,_). +'actual_store_types/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'actual_store_types/2__0'(A,B,C),actual_store_types(A,B),[A,B]), + '$insert_in_store_actual_store_types/2'(C). +assumed_store_type(A,B) :- + 'assumed_store_type/2__0'(A,B,_). +'assumed_store_type/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'assumed_store_type/2__0'(A,B,C),assumed_store_type(A,B),[A,B]), + '$insert_in_store_assumed_store_type/2'(C). +validate_store_type_assumption(A) :- + 'validate_store_type_assumption/1__0'(A,_). +'validate_store_type_assumption/1__0'(A,_) :- + '$via1_multi_hash_assumed_store_type/2-1'(A,H), + '$via1_multi_hash_actual_store_types/2-1'(A,C), + 'chr sbag_member'(B,C), + B=suspension(_,F,_,_,_,_,D,E), + F=mutable(active), + D==A, + 'chr sbag_member'(G,H), + G=suspension(_,J,_,_,_,_,I,_), + J=mutable(active), + I==A, + !, + remove_constraint_internal(B,_,K), + ( K==yes -> + '$delete_from_store_actual_store_types/2'(B) + ; + true + ), + remove_constraint_internal(G,_,L), + ( L==yes -> + '$delete_from_store_assumed_store_type/2'(G) + ; + true + ), + store_type(A,multi_store(E)). +'validate_store_type_assumption/1__0'(A,_) :- + '$via1_multi_hash_store_type/2-1'(A,H), + '$via1_multi_hash_actual_store_types/2-1'(A,C), + 'chr sbag_member'(B,C), + B=suspension(_,F,_,_,_,_,D,E), + F=mutable(active), + D==A, + 'chr sbag_member'(G,H), + G=suspension(_,J,_,_,_,_,I,_), + J=mutable(active), + I==A, + !, + remove_constraint_internal(B,_,K), + ( K==yes -> + '$delete_from_store_actual_store_types/2'(B) + ; + true + ), + remove_constraint_internal(G,_,L), + ( L==yes -> + '$delete_from_store_store_type/2'(G) + ; + true + ), + store_type(A,multi_store(E)). +'validate_store_type_assumption/1__0'(_,_) :- + !. +rule_count(A) :- + 'rule_count/1__0'(A,_). +'rule_count/1__0'(A,B) :- + insert_constraint_internal(_,_,B,chr_translate:'rule_count/1__0'(A,B),rule_count(A),[A]), + '$insert_in_store_rule_count/1'(B). +inc_rule_count(A) :- + 'inc_rule_count/1__0'(A,_). +'inc_rule_count/1__0'(A,_) :- + nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D), + E=mutable(active), + !, + remove_constraint_internal(B,_,F), + ( F==yes -> + '$delete_from_store_rule_count/1'(B) + ; + true + ), + A is D+1, + rule_count(A). +'inc_rule_count/1__0'(A,_) :- + !, + A=1, + rule_count(A). +get_rule_count(A) :- + 'get_rule_count/1__0'(A,_). +'get_rule_count/1__0'(A,_) :- + nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D), + E=mutable(active), + !, + A=D. +'get_rule_count/1__0'(A,_) :- + !, + A=0. +passive(A,B) :- + 'passive/2__0'(A,B,_). +'passive/2__0'(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + !, + allocate_constraint(chr_translate:'passive/2__0'(A,B,C),C,passive(A,B),[A,B]), + 'passive/2__0__0'(D,A,B,C). +'passive/2__0__0'([],A,B,C) :- + 'passive/2__1'(A,B,C). +'passive/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + '$via1_multi_hash_occurrence/4-1'(F,J), + 'chr sbag_member'(I,J), + I=suspension(_,O,_,_,_,_,K,L,M,N), + O=mutable(active), + K==F, + L==G, + M==A, + N==B -> + remove_constraint_internal(D,_,P), + ( P==yes -> + '$delete_from_store_allocation_occurrence/2'(D) + ; + true + ), + activate_constraint(R,_,C,S), + ( R==yes -> + '$insert_in_store_passive/2'(C) + ; + true + ), + Q is G+1, + allocation_occurrence(F,Q), + ( C=suspension(_,T,_,U,_,_,_,_), + T=mutable(active), + U=mutable(S) -> + 'chr update_mutable'(inactive,T), + 'passive/2__0__0'(E,A,B,C) + ; + true + ) + ; + 'passive/2__0__0'(E,A,B,C) + ). +'passive/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'passive/2__0'(A,B,C),C,passive(A,B),[A,B]), + 'passive/2__1'(A,B,C). +'passive/2__1'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_passive/2'(A) + ; + true + ). +is_passive(A,B) :- + 'is_passive/2__0'(A,B,_). +'is_passive/2__0'(A,B,_) :- + '$via1_multi_hash_passive/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + F==B, + !. +'is_passive/2__0'(_,_,_) :- + !, + fail. +any_passive_head(A) :- + 'any_passive_head/1__0'(A,_). +'any_passive_head/1__0'(A,_) :- + '$via1_multi_hash_passive/2-1'(A,C), + 'chr sbag_member'(B,C), + B=suspension(_,E,_,_,_,_,D,_), + E=mutable(active), + D==A, + !. +'any_passive_head/1__0'(_,_) :- + !, + fail. +pragma_unique(A,B,C) :- + 'pragma_unique/3__0'(A,B,C,_). +'pragma_unique/3__0'(A,B,C,D) :- + insert_constraint_internal(_,_,D,chr_translate:'pragma_unique/3__0'(A,B,C,D),pragma_unique(A,B,C),[A,B,C]), + '$insert_in_store_pragma_unique/3'(D). +get_pragma_unique(A,B,C) :- + 'get_pragma_unique/3__0'(A,B,C,_). +'get_pragma_unique/3__0'(A,B,C,_) :- + '$via1_multi_hash_pragma_unique/3-1'(A,E), + 'chr sbag_member'(D,E), + D=suspension(_,I,_,_,_,_,F,G,H), + I=mutable(active), + F==A, + G==B, + !, + C=H. +'get_pragma_unique/3__0'(_,_,_,_) :- + !. +occurrence(A,B,C,D) :- + 'occurrence/4__0'(A,B,C,D,_). +'occurrence/4__0'(A,B,C,D,E) :- + allocate_constraint(chr_translate:'occurrence/4__0'(A,B,C,D,E),E,occurrence(A,B,C,D),[A,B,C,D]), + ( + 'chr novel_production'(E,46), + !, + 'chr extend_history'(E,46), + activate_constraint(F,_,E,G), + ( F==yes -> + '$insert_in_store_occurrence/4'(E) + ; + true + ), + max_occurrence(A,B), + ( E=suspension(_,H,_,I,_,_,_,_,_,_), + H=mutable(active), + I=mutable(G) -> + 'chr update_mutable'(inactive,H), + 'occurrence/4__1'(A,B,C,D,E) + ; + true + ) + ; + 'occurrence/4__1'(A,B,C,D,E) + ). +'occurrence/4__1'(A,B,C,D,E) :- + '$via1_multi_hash_allocation_occurrence/2-1'(A,F), + !, + 'occurrence/4__1__0'(F,A,B,C,D,E). +'occurrence/4__1__0'([],A,B,C,D,E) :- + 'occurrence/4__2'(A,B,C,D,E). +'occurrence/4__1__0'([F|G],A,B,C,D,E) :- + ( F=suspension(_,J,_,_,_,_,H,I), + J=mutable(active), + H==A, + I==B, + '$via1_multi_hash_rule/2-1'(C,L), + 'chr sbag_member'(K,L), + K=suspension(_,O,_,_,_,_,M,N), + O=mutable(active), + M==C, + 'chr lock'(N), + 'chr lock'(D), + N=pragma(_,ids(_,_),_,_,_), + member(D,_), + 'chr unlock'(N), + 'chr unlock'(D) -> + remove_constraint_internal(F,_,P), + ( P==yes -> + '$delete_from_store_allocation_occurrence/2'(F) + ; + true + ), + activate_constraint(R,_,E,S), + ( R==yes -> + '$insert_in_store_occurrence/4'(E) + ; + true + ), + Q is B+1, + allocation_occurrence(A,Q), + ( E=suspension(_,T,_,U,_,_,_,_,_,_), + T=mutable(active), + U=mutable(S) -> + 'chr update_mutable'(inactive,T), + 'occurrence/4__1__0'(G,A,B,C,D,E) + ; + true + ) + ; + 'occurrence/4__1__0'(G,A,B,C,D,E) + ). +'occurrence/4__1'(A,B,C,D,E) :- + 'occurrence/4__2'(A,B,C,D,E). +'occurrence/4__2'(A,B,C,D,E) :- + '$via1_multi_hash_allocation_occurrence/2-1'(A,F), + !, + 'occurrence/4__2__0'(F,A,B,C,D,E). +'occurrence/4__2__0'([],A,B,C,D,E) :- + 'occurrence/4__3'(A,B,C,D,E). +'occurrence/4__2__0'([F|G],A,B,C,D,E) :- + ( F=suspension(_,J,_,_,_,_,H,I), + J=mutable(active), + H==A, + I==B, + '$via1_multi_hash_rule/2-1'(C,L), + 'chr sbag_member'(K,L), + K=suspension(_,O,_,_,_,_,M,N), + O=mutable(active), + M==C, + 'chr lock'(N), + N=pragma(rule(_,_,_,true),_,_,_,_), + 'chr unlock'(N) -> + remove_constraint_internal(F,_,P), + ( P==yes -> + '$delete_from_store_allocation_occurrence/2'(F) + ; + true + ), + activate_constraint(R,_,E,S), + ( R==yes -> + '$insert_in_store_occurrence/4'(E) + ; + true + ), + Q is B+1, + allocation_occurrence(A,Q), + ( E=suspension(_,T,_,U,_,_,_,_,_,_), + T=mutable(active), + U=mutable(S) -> + 'chr update_mutable'(inactive,T), + 'occurrence/4__2__0'(G,A,B,C,D,E) + ; + true + ) + ; + 'occurrence/4__2__0'(G,A,B,C,D,E) + ). +'occurrence/4__2'(A,B,C,D,E) :- + 'occurrence/4__3'(A,B,C,D,E). +'occurrence/4__3'(A,B,C,D,E) :- + '$via1_multi_hash_allocation_occurrence/2-1'(A,F), + !, + 'occurrence/4__3__0'(F,A,B,C,D,E). +'occurrence/4__3__0'([],A,B,C,D,E) :- + 'occurrence/4__4'(A,B,C,D,E). +'occurrence/4__3__0'([F|G],A,B,C,D,E) :- + ( F=suspension(_,J,_,_,_,_,H,I), + J=mutable(active), + H==A, + I==B, + '$via1_multi_hash_passive/2-1'(C,L), + 'chr sbag_member'(K,L), + K=suspension(_,O,_,_,_,_,M,N), + O=mutable(active), + M==C, + N==D -> + remove_constraint_internal(F,_,P), + ( P==yes -> + '$delete_from_store_allocation_occurrence/2'(F) + ; + true + ), + activate_constraint(R,_,E,S), + ( R==yes -> + '$insert_in_store_occurrence/4'(E) + ; + true + ), + Q is B+1, + allocation_occurrence(A,Q), + ( E=suspension(_,T,_,U,_,_,_,_,_,_), + T=mutable(active), + U=mutable(S) -> + 'chr update_mutable'(inactive,T), + 'occurrence/4__3__0'(G,A,B,C,D,E) + ; + true + ) + ; + 'occurrence/4__3__0'(G,A,B,C,D,E) + ). +'occurrence/4__3'(A,B,C,D,E) :- + 'occurrence/4__4'(A,B,C,D,E). +'occurrence/4__4'(_,_,_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_occurrence/4'(A) + ; + true + ). +get_occurrence(A,B,C,D) :- + 'get_occurrence/4__0'(A,B,C,D,_). +'get_occurrence/4__0'(A,B,C,D,_) :- + '$via1_multi_hash_occurrence/4-1'(A,F), + 'chr sbag_member'(E,F), + E=suspension(_,K,_,_,_,_,G,H,I,J), + K=mutable(active), + G==A, + H==B, + !, + I=C, + J=D. +'get_occurrence/4__0'(_,_,_,_,_) :- + !, + fail. +max_occurrence(A,B) :- + 'max_occurrence/2__0'(A,B,_). +'max_occurrence/2__0'(A,B,C) :- + '$via1_multi_hash_max_occurrence/2-1'(A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G>=B, + ! + ; + !, + allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]), + 'max_occurrence/2__0__0'(E,A,B,C) + ). +'max_occurrence/2__0__0'([],A,B,C) :- + 'max_occurrence/2__1'(A,B,C). +'max_occurrence/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + B>=G -> + remove_constraint_internal(D,_,I), + ( I==yes -> + '$delete_from_store_max_occurrence/2'(D) + ; + true + ), + 'max_occurrence/2__0__0'(E,A,B,C) + ; + 'max_occurrence/2__0__0'(E,A,B,C) + ). +'max_occurrence/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]), + 'max_occurrence/2__1'(A,B,C). +'max_occurrence/2__1'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_max_occurrence/2'(A) + ; + true + ). +get_max_occurrence(A,B) :- + 'get_max_occurrence/2__0'(A,B,_). +'get_max_occurrence/2__0'(A,B,_) :- + '$via1_multi_hash_max_occurrence/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_max_occurrence/2__0'(_,A,_) :- + !, + A=0. +allocation_occurrence(A,B) :- + 'allocation_occurrence/2__0'(A,B,_). +'allocation_occurrence/2__0'(A,B,_) :- + '$via1_multi_hash_occurrence/4-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,I,_,_,_,_,E,F,G,H), + I=mutable(active), + E==A, + F==B, + ( + '$via1_multi_hash_rule/2-1'(G,K), + 'chr sbag_member'(J,K), + J=suspension(_,N,_,_,_,_,L,M), + N=mutable(active), + L==G, + 'chr lock'(M), + ( + 'chr lock'(H), + M=pragma(_,ids(_,_),_,_,_), + member(H,_), + 'chr unlock'(M), + 'chr unlock'(H), + !, + O is B+1, + allocation_occurrence(A,O) + ; + M=pragma(rule(_,_,_,true),_,_,_,_), + 'chr unlock'(M), + !, + P is B+1, + allocation_occurrence(A,P) + ) + ; + '$via1_multi_hash_passive/2-1'(G,R), + 'chr sbag_member'(Q,R), + Q=suspension(_,U,_,_,_,_,S,T), + U=mutable(active), + S==G, + T==H, + !, + V is B+1, + allocation_occurrence(A,V) + ). +'allocation_occurrence/2__0'(A,B,C) :- + insert_constraint_internal(_,_,C,chr_translate:'allocation_occurrence/2__0'(A,B,C),allocation_occurrence(A,B),[A,B]), + '$insert_in_store_allocation_occurrence/2'(C). +get_allocation_occurrence(A,B) :- + 'get_allocation_occurrence/2__0'(A,B,_). +'get_allocation_occurrence/2__0'(A,B,_) :- + '$via1_multi_hash_allocation_occurrence/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_allocation_occurrence/2__0'(_,_,_) :- + !, + fail. +rule(A,B) :- + 'rule/2__0'(A,B,_). +'rule/2__0'(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + !, + allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]), + 'rule/2__0__0'(D,A,B,C). +'rule/2__0__0'([],A,B,C) :- + 'rule/2__1'(A,B,C). +'rule/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + '$via1_multi_hash_occurrence/4-1'(F,J), + 'chr sbag_member'(I,J), + I=suspension(_,O,_,_,_,_,K,L,M,N), + O=mutable(active), + K==F, + L==G, + M==A, + 'chr lock'(B), + 'chr lock'(N), + B=pragma(_,ids(_,_),_,_,_), + member(N,_), + 'chr unlock'(B), + 'chr unlock'(N) -> + remove_constraint_internal(D,_,P), + ( P==yes -> + '$delete_from_store_allocation_occurrence/2'(D) + ; + true + ), + activate_constraint(R,_,C,S), + ( R==yes -> + '$insert_in_store_rule/2'(C) + ; + true + ), + Q is G+1, + allocation_occurrence(F,Q), + ( C=suspension(_,T,_,U,_,_,_,_), + T=mutable(active), + U=mutable(S) -> + 'chr update_mutable'(inactive,T), + 'rule/2__0__0'(E,A,B,C) + ; + true + ) + ; + 'rule/2__0__0'(E,A,B,C) + ). +'rule/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]), + 'rule/2__1'(A,B,C). +'rule/2__1'(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + !, + 'rule/2__1__0'(D,A,B,C). +'rule/2__1__0'([],A,B,C) :- + 'rule/2__2'(A,B,C). +'rule/2__1__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + '$via1_multi_hash_occurrence/4-1'(F,J), + 'chr sbag_member'(I,J), + I=suspension(_,N,_,_,_,_,K,L,M,_), + N=mutable(active), + K==F, + L==G, + M==A, + 'chr lock'(B), + B=pragma(rule(_,_,_,true),_,_,_,_), + 'chr unlock'(B) -> + remove_constraint_internal(D,_,O), + ( O==yes -> + '$delete_from_store_allocation_occurrence/2'(D) + ; + true + ), + activate_constraint(Q,_,C,R), + ( Q==yes -> + '$insert_in_store_rule/2'(C) + ; + true + ), + P is G+1, + allocation_occurrence(F,P), + ( C=suspension(_,S,_,T,_,_,_,_), + S=mutable(active), + T=mutable(R) -> + 'chr update_mutable'(inactive,S), + 'rule/2__1__0'(E,A,B,C) + ; + true + ) + ; + 'rule/2__1__0'(E,A,B,C) + ). +'rule/2__1'(A,B,C) :- + 'rule/2__2'(A,B,C). +'rule/2__2'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_rule/2'(A) + ; + true + ). +get_rule(A,B) :- + 'get_rule/2__0'(A,B,_). +'get_rule/2__0'(A,B,_) :- + '$via1_multi_hash_rule/2-1'(A,D), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + !, + B=F. +'get_rule/2__0'(_,_,_) :- + !, + fail. diff --git a/dead.package b/dead.package deleted file mode 100644 index 9ed1316..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Fails to build with GCC 7, upstream does not respond (bug #1421711). diff --git a/guard_entailment.pl b/guard_entailment.pl new file mode 100644 index 0000000..6c3a81a --- /dev/null +++ b/guard_entailment.pl @@ -0,0 +1,18061 @@ +/* Generated by CHR bootstrap compiler + From: guard_entailment.chr + Date: Mon Jun 15 21:43:57 2009 + + + DO NOT EDIT. EDIT THE CHR FILE INSTEAD +*/ + +:-module(guard_entailment,[entails_guard/2,simplify_guards/5]). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-include(chr_op). +:-use_module(hprolog). +:-use_module(builtins). +:-use_module(chr_compiler_errors). +entails_guard(A,B) :- + copy_term_nat((A,B),(C,D)), + term_variables(C,E), + variables(E), + sort(C,F), + entails_guard2(F), + !, + test(D), + !, + cleanup. +entails_guard2([]). +entails_guard2([A|B]) :- + known(A), + entails_guard2(B). +simplify_guards(A,B,C,D,E) :- + copy_term_nat((A,C),(F,G)), + term_variables(F,H), + variables(H), + sort(F,I), + entails_guard2(I), + !, + simplify(G,J), + simplified(C,J,D,B,E), + !, + cleanup. +simplified([],[],[],A,A). +simplified([A|B],[keep|C],[A|D],E,F) :- + simplified(B,C,D,E,F). +simplified([_|_],[fail|_],fail,A,A). +simplified([A|B],[true|C],[D|E],F,G) :- + builtins:binds_b(A,H), + term_variables(B,I), + intersect_eq(H,I,J), + !, + ( J=[] -> + term_variables(F,K), + intersect_eq(H,K,L), + !, + ( L=[] -> + D=true, + G=M + ; + D=true, + G=(A,M) + ) + ; + D=A, + G=M + ), + simplified(B,C,E,F,M). +simplify([],[]). +simplify([A|B],[C|D]) :- + ( \+try(true,A) -> + C=true + ; + builtins:negate_b(A,E), + ( \+try(true,E) -> + C=fail + ; + C=keep + ) + ), + known(A), + simplify(B,D). +try(A,B) :- + ( known(A) -> + true + ; + chr_error(internal,'Entailment Checker: try/2. +',[]) + ), + ( test(B) -> + fail + ; + true + ). +add_args_unif([],[],true). +add_args_unif([A|B],[C|D],(A=C,E)) :- + add_args_unif(B,D,E). +add_args_nunif([],[],fail). +add_args_nunif([A|B],[C|D],(A\=C;E)) :- + add_args_nunif(B,D,E). +add_args_nmatch([],[],fail). +add_args_nmatch([A|B],[C|D],(A\==C;E)) :- + add_args_nmatch(B,D,E). +all_unique_vars(A,B) :- + all_unique_vars(A,B,[]). +all_unique_vars([],_,_). +all_unique_vars([A|B],C,D) :- + var(A), + \+memberchk_eq(A,C), + \+memberchk_eq(A,D), + all_unique_vars(B,[A|D]). +:-use_module(chr(chr_runtime)). +attach_variables___1([],_). +attach_variables___1([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1=:=1 -> + B1=v(Y,[C|D],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/1, + B1=v(Z,[C],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(1,[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + attach_variables___1(B,C). +detach_variables___1([],_). +detach_variables___1([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1=:=1 -> + 'chr sbag_del_element'(D,C,A1), + ( A1==[] -> + Z is Y/\ -2, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,[],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,A1,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + detach_variables___1(B,C). +'attach_known/1_1_$default___1'([],_). +'attach_known/1_1_$default___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2=:=2 -> + B1=v(Y,D,[C|E],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/2, + B1=v(Z,D,[C],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(2,[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$default___1'(B,C). +'detach_known/1_1_$default___1'([],_). +'detach_known/1_1_$default___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2=:=2 -> + 'chr sbag_del_element'(E,C,A1), + ( A1==[] -> + Z is Y/\ -3, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,[],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,A1,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$default___1'(B,C). +'attach_known/1_1_$special_;/2___2'([],_). +'attach_known/1_1_$special_;/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4=:=4 -> + B1=v(Y,D,E,[C|F],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/4, + B1=v(Z,D,E,[C],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(4,[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_;/2___2'(B,C). +'detach_known/1_1_$special_;/2___2'([],_). +'detach_known/1_1_$special_;/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4=:=4 -> + 'chr sbag_del_element'(F,C,A1), + ( A1==[] -> + Z is Y/\ -5, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,[],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,A1,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_;/2___2'(B,C). +'attach_known/1_1_$special_nonvar/1___1'([],_). +'attach_known/1_1_$special_nonvar/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8=:=8 -> + B1=v(Y,D,E,F,[C|G],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/8, + B1=v(Z,D,E,F,[C],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(8,[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_nonvar/1___1'(B,C). +'detach_known/1_1_$special_nonvar/1___1'([],_). +'detach_known/1_1_$special_nonvar/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8=:=8 -> + 'chr sbag_del_element'(G,C,A1), + ( A1==[] -> + Z is Y/\ -9, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,[],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,A1,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_nonvar/1___1'(B,C). +'attach_known/1_1_$special_var/1___1'([],_). +'attach_known/1_1_$special_var/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16=:=16 -> + B1=v(Y,D,E,F,G,[C|H],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/16, + B1=v(Z,D,E,F,G,[C],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(16,[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_var/1___1'(B,C). +'detach_known/1_1_$special_var/1___1'([],_). +'detach_known/1_1_$special_var/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16=:=16 -> + 'chr sbag_del_element'(H,C,A1), + ( A1==[] -> + Z is Y/\ -17, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,[],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,A1,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_var/1___1'(B,C). +'attach_known/1_1_$special_atom/1___1'([],_). +'attach_known/1_1_$special_atom/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32=:=32 -> + B1=v(Y,D,E,F,G,H,[C|I],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/32, + B1=v(Z,D,E,F,G,H,[C],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(32,[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_atom/1___1'(B,C). +'detach_known/1_1_$special_atom/1___1'([],_). +'detach_known/1_1_$special_atom/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32=:=32 -> + 'chr sbag_del_element'(I,C,A1), + ( A1==[] -> + Z is Y/\ -33, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,[],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,A1,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_atom/1___1'(B,C). +'attach_known/1_1_$special_atomic/1___1'([],_). +'attach_known/1_1_$special_atomic/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\64=:=64 -> + B1=v(Y,D,E,F,G,H,I,[C|J],K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/64, + B1=v(Z,D,E,F,G,H,I,[C],K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(64,[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_atomic/1___1'(B,C). +'detach_known/1_1_$special_atomic/1___1'([],_). +'detach_known/1_1_$special_atomic/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\64=:=64 -> + 'chr sbag_del_element'(J,C,A1), + ( A1==[] -> + Z is Y/\ -65, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,[],K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,A1,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_atomic/1___1'(B,C). +'attach_known/1_1_$special_compound/1___1'([],_). +'attach_known/1_1_$special_compound/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\128=:=128 -> + B1=v(Y,D,E,F,G,H,I,J,[C|K],L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/128, + B1=v(Z,D,E,F,G,H,I,J,[C],L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(128,[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_compound/1___1'(B,C). +'detach_known/1_1_$special_compound/1___1'([],_). +'detach_known/1_1_$special_compound/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\128=:=128 -> + 'chr sbag_del_element'(K,C,A1), + ( A1==[] -> + Z is Y/\ -129, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,[],L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,A1,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_compound/1___1'(B,C). +'attach_known/1_1_$special_ground/1___1'([],_). +'attach_known/1_1_$special_ground/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\256=:=256 -> + B1=v(Y,D,E,F,G,H,I,J,K,[C|L],M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/256, + B1=v(Z,D,E,F,G,H,I,J,K,[C],M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(256,[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_ground/1___1'(B,C). +'detach_known/1_1_$special_ground/1___1'([],_). +'detach_known/1_1_$special_ground/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\256=:=256 -> + 'chr sbag_del_element'(L,C,A1), + ( A1==[] -> + Z is Y/\ -257, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,[],M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,A1,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_ground/1___1'(B,C). +'attach_known/1_1_$special_integer/1___1'([],_). +'attach_known/1_1_$special_integer/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\512=:=512 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,[C|M],N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/512, + B1=v(Z,D,E,F,G,H,I,J,K,L,[C],N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(512,[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_integer/1___1'(B,C). +'detach_known/1_1_$special_integer/1___1'([],_). +'detach_known/1_1_$special_integer/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\512=:=512 -> + 'chr sbag_del_element'(M,C,A1), + ( A1==[] -> + Z is Y/\ -513, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,[],N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,A1,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_integer/1___1'(B,C). +'attach_known/1_1_$special_float/1___1'([],_). +'attach_known/1_1_$special_float/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1024=:=1024 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,[C|N],O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/1024, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,[C],O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(1024,[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_float/1___1'(B,C). +'detach_known/1_1_$special_float/1___1'([],_). +'detach_known/1_1_$special_float/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1024=:=1024 -> + 'chr sbag_del_element'(N,C,A1), + ( A1==[] -> + Z is Y/\ -1025, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,[],O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,A1,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_float/1___1'(B,C). +'attach_known/1_1_$special_number/1___1'([],_). +'attach_known/1_1_$special_number/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2048=:=2048 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,[C|O],P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/2048, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,[C],P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(2048,[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_number/1___1'(B,C). +'detach_known/1_1_$special_number/1___1'([],_). +'detach_known/1_1_$special_number/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2048=:=2048 -> + 'chr sbag_del_element'(O,C,A1), + ( A1==[] -> + Z is Y/\ -2049, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,[],P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,A1,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_number/1___1'(B,C). +'attach_known/1_1_$special_=\\=/2___2'([],_). +'attach_known/1_1_$special_=\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4096=:=4096 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,[C|P],Q,R,S,T,U,V,W,X) + ; + Z is Y\/4096, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,[C],Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(4096,[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_=\\=/2___2'(B,C). +'detach_known/1_1_$special_=\\=/2___2'([],_). +'detach_known/1_1_$special_=\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4096=:=4096 -> + 'chr sbag_del_element'(P,C,A1), + ( A1==[] -> + Z is Y/\ -4097, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,[],Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,A1,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=\\=/2___2'(B,C). +'attach_known/1_1_$special_\\+/1___1'([],_). +'attach_known/1_1_$special_\\+/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8192=:=8192 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,[C|Q],R,S,T,U,V,W,X) + ; + Z is Y\/8192, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,[C],R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(8192,[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_\\+/1___1'(B,C). +'detach_known/1_1_$special_\\+/1___1'([],_). +'detach_known/1_1_$special_\\+/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8192=:=8192 -> + 'chr sbag_del_element'(Q,C,A1), + ( A1==[] -> + Z is Y/\ -8193, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,[],R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,A1,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\+/1___1'(B,C). +'attach_known/1_1_$special_functor/3___3'([],_). +'attach_known/1_1_$special_functor/3___3'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16384=:=16384 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[C|R],S,T,U,V,W,X) + ; + Z is Y\/16384, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[C],S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(16384,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_functor/3___3'(B,C). +'detach_known/1_1_$special_functor/3___3'([],_). +'detach_known/1_1_$special_functor/3___3'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16384=:=16384 -> + 'chr sbag_del_element'(R,C,A1), + ( A1==[] -> + Z is Y/\ -16385, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[],S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,A1,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_functor/3___3'(B,C). +'attach_known/1_1_$special_\\=/2___2'([],_). +'attach_known/1_1_$special_\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32768=:=32768 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[C|S],T,U,V,W,X) + ; + Z is Y\/32768, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[C],T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(32768,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_\\=/2___2'(B,C). +'detach_known/1_1_$special_\\=/2___2'([],_). +'detach_known/1_1_$special_\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32768=:=32768 -> + 'chr sbag_del_element'(S,C,A1), + ( A1==[] -> + Z is Y/\ -32769, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[],T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,A1,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\=/2___2'(B,C). +'attach_known/1_1_$special_=/2___2'([],_). +'attach_known/1_1_$special_=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\65536=:=65536 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[C|T],U,V,W,X) + ; + Z is Y\/65536, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[C],U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(65536,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[])) + ), + 'attach_known/1_1_$special_=/2___2'(B,C). +'detach_known/1_1_$special_=/2___2'([],_). +'detach_known/1_1_$special_=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\65536=:=65536 -> + 'chr sbag_del_element'(T,C,A1), + ( A1==[] -> + Z is Y/\ -65537, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[],U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,A1,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=/2___2'(B,C). +'attach_known/1_1_$special_\\==/2___2'([],_). +'attach_known/1_1_$special_\\==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\131072=:=131072 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[C|U],V,W,X) + ; + Z is Y\/131072, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[C],V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(131072,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[])) + ), + 'attach_known/1_1_$special_\\==/2___2'(B,C). +'detach_known/1_1_$special_\\==/2___2'([],_). +'detach_known/1_1_$special_\\==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\131072=:=131072 -> + 'chr sbag_del_element'(U,C,A1), + ( A1==[] -> + Z is Y/\ -131073, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[],V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,A1,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\==/2___2'(B,C). +'attach_known/1_1_$special_==/2___2'([],_). +'attach_known/1_1_$special_==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\262144=:=262144 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[C|V],W,X) + ; + Z is Y\/262144, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[C],W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(262144,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[])) + ), + 'attach_known/1_1_$special_==/2___2'(B,C). +'detach_known/1_1_$special_==/2___2'([],_). +'detach_known/1_1_$special_==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\262144=:=262144 -> + 'chr sbag_del_element'(V,C,A1), + ( A1==[] -> + Z is Y/\ -262145, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[],W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,A1,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_==/2___2'(B,C). +'attach_known/1_1_$special_= + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\524288=:=524288 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[C|W],X) + ; + Z is Y\/524288, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[C],X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(524288,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[])) + ), + 'attach_known/1_1_$special_= + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\524288=:=524288 -> + 'chr sbag_del_element'(W,C,A1), + ( A1==[] -> + Z is Y/\ -524289, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[],X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,A1,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_= + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1048576=:=1048576 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[C|X]) + ; + Z is Y\/1048576, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[C]) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(1048576,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C])) + ), + 'attach_known/1_1_$special_=:=/2___2'(B,C). +'detach_known/1_1_$special_=:=/2___2'([],_). +'detach_known/1_1_$special_=:=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1048576=:=1048576 -> + 'chr sbag_del_element'(X,C,A1), + ( A1==[] -> + Z is Y/\ -1048577, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[])) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,A1)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=:=/2___2'(B,C). +attach_increment([],_). +attach_increment([B|C],A) :- + 'chr not_locked'(B), + ( get_attr(B,guard_entailment,M3) -> + A=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + M3=v(U1,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1), + sort(Z,V1), + 'chr merge_attributes'(D,V1,W1), + sort(A1,X1), + 'chr merge_attributes'(E,X1,Y1), + sort(B1,Z1), + 'chr merge_attributes'(F,Z1,A2), + sort(C1,B2), + 'chr merge_attributes'(G,B2,C2), + sort(D1,D2), + 'chr merge_attributes'(H,D2,E2), + sort(E1,F2), + 'chr merge_attributes'(I,F2,G2), + sort(F1,H2), + 'chr merge_attributes'(J,H2,I2), + sort(G1,J2), + 'chr merge_attributes'(K,J2,K2), + sort(H1,L2), + 'chr merge_attributes'(L,L2,M2), + sort(I1,N2), + 'chr merge_attributes'(M,N2,O2), + sort(J1,P2), + 'chr merge_attributes'(N,P2,Q2), + sort(K1,R2), + 'chr merge_attributes'(O,R2,S2), + sort(L1,T2), + 'chr merge_attributes'(P,T2,U2), + sort(M1,V2), + 'chr merge_attributes'(Q,V2,W2), + sort(N1,X2), + 'chr merge_attributes'(R,X2,Y2), + sort(O1,Z2), + 'chr merge_attributes'(S,Z2,A3), + sort(P1,B3), + 'chr merge_attributes'(T,B3,C3), + sort(Q1,D3), + 'chr merge_attributes'(U,D3,E3), + sort(R1,F3), + 'chr merge_attributes'(V,F3,G3), + sort(S1,H3), + 'chr merge_attributes'(W,H3,I3), + sort(T1,J3), + 'chr merge_attributes'(X,J3,K3), + L3 is Y\/U1, + put_attr(B,guard_entailment,v(L3,W1,Y1,A2,C2,E2,G2,I2,K2,M2,O2,Q2,S2,U2,W2,Y2,A3,C3,E3,G3,I3,K3)) + ; + put_attr(B,guard_entailment,A) + ), + attach_increment(C,A). +attr_unify_hook(v(W,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V),A) :- + sort(B,X), + sort(C,Y), + sort(D,Z), + sort(E,A1), + sort(F,B1), + sort(G,C1), + sort(H,D1), + sort(I,E1), + sort(J,F1), + sort(K,G1), + sort(L,H1), + sort(M,I1), + sort(N,J1), + sort(O,K1), + sort(P,L1), + sort(Q,M1), + sort(R,N1), + sort(S,O1), + sort(T,P1), + sort(U,Q1), + sort(V,R1), + ( var(A) -> + ( get_attr(A,guard_entailment,F4) -> + F4=v(N2,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2), + sort(S1,O2), + 'chr merge_attributes'(X,O2,P2), + sort(T1,Q2), + 'chr merge_attributes'(Y,Q2,R2), + sort(U1,S2), + 'chr merge_attributes'(Z,S2,T2), + sort(V1,U2), + 'chr merge_attributes'(A1,U2,V2), + sort(W1,W2), + 'chr merge_attributes'(B1,W2,X2), + sort(X1,Y2), + 'chr merge_attributes'(C1,Y2,Z2), + sort(Y1,A3), + 'chr merge_attributes'(D1,A3,B3), + sort(Z1,C3), + 'chr merge_attributes'(E1,C3,D3), + sort(A2,E3), + 'chr merge_attributes'(F1,E3,F3), + sort(B2,G3), + 'chr merge_attributes'(G1,G3,H3), + sort(C2,I3), + 'chr merge_attributes'(H1,I3,J3), + sort(D2,K3), + 'chr merge_attributes'(I1,K3,L3), + sort(E2,M3), + 'chr merge_attributes'(J1,M3,N3), + sort(F2,O3), + 'chr merge_attributes'(K1,O3,P3), + sort(G2,Q3), + 'chr merge_attributes'(L1,Q3,R3), + sort(H2,S3), + 'chr merge_attributes'(M1,S3,T3), + sort(I2,U3), + 'chr merge_attributes'(N1,U3,V3), + sort(J2,W3), + 'chr merge_attributes'(O1,W3,X3), + sort(K2,Y3), + 'chr merge_attributes'(P1,Y3,Z3), + sort(L2,A4), + 'chr merge_attributes'(Q1,A4,B4), + sort(M2,C4), + 'chr merge_attributes'(R1,C4,D4), + E4 is W\/N2, + put_attr(A,guard_entailment,v(E4,P2,R2,T2,V2,X2,Z2,B3,D3,F3,H3,J3,L3,N3,P3,R3,T3,V3,X3,Z3,B4,D4)), + '$run_suspensions_variables___1'(X), + '$run_suspensions_known/1_1_$default___1'(Y), + '$run_suspensions_known/1_1_$special_;/2___2'(T2), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(A1), + '$run_suspensions_known/1_1_$special_var/1___1'(B1), + '$run_suspensions_known/1_1_$special_atom/1___1'(C1), + '$run_suspensions_known/1_1_$special_atomic/1___1'(D1), + '$run_suspensions_known/1_1_$special_compound/1___1'(E1), + '$run_suspensions_known/1_1_$special_ground/1___1'(F1), + '$run_suspensions_known/1_1_$special_integer/1___1'(H3), + '$run_suspensions_known/1_1_$special_float/1___1'(J3), + '$run_suspensions_known/1_1_$special_number/1___1'(L3), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(N3), + '$run_suspensions_known/1_1_$special_\\+/1___1'(P3), + '$run_suspensions_known/1_1_$special_functor/3___3'(R3), + '$run_suspensions_known/1_1_$special_\\=/2___2'(T3), + '$run_suspensions_known/1_1_$special_=/2___2'(V3), + '$run_suspensions_known/1_1_$special_\\==/2___2'(X3), + '$run_suspensions_known/1_1_$special_==/2___2'(Z3), + '$run_suspensions_known/1_1_$special_= + term_variables(A,G4), + attach_increment(G4,v(W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1)) + ; + true + ), + '$run_suspensions_variables___1'(X), + '$run_suspensions_known/1_1_$default___1'(Y), + '$run_suspensions_known/1_1_$special_;/2___2'(Z), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(A1), + '$run_suspensions_known/1_1_$special_var/1___1'(B1), + '$run_suspensions_known/1_1_$special_atom/1___1'(C1), + '$run_suspensions_known/1_1_$special_atomic/1___1'(D1), + '$run_suspensions_known/1_1_$special_compound/1___1'(E1), + '$run_suspensions_known/1_1_$special_ground/1___1'(F1), + '$run_suspensions_known/1_1_$special_integer/1___1'(G1), + '$run_suspensions_known/1_1_$special_float/1___1'(H1), + '$run_suspensions_known/1_1_$special_number/1___1'(I1), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(J1), + '$run_suspensions_known/1_1_$special_\\+/1___1'(K1), + '$run_suspensions_known/1_1_$special_functor/3___3'(L1), + '$run_suspensions_known/1_1_$special_\\=/2___2'(M1), + '$run_suspensions_known/1_1_$special_=/2___2'(N1), + '$run_suspensions_known/1_1_$special_\\==/2___2'(O1), + '$run_suspensions_known/1_1_$special_==/2___2'(P1), + '$run_suspensions_known/1_1_$special_= + fail + ; + true + ). +'$extend_history'(A,B) :- + arg(3,A,C), + hprolog:put_ds(B,C,x,D), + setarg(3,A,D). +'$run_suspensions_variables___1'([]). +'$run_suspensions_variables___1'([A|B]) :- + A=suspension(_,C,_,D), + ( C==active -> + setarg(2,A,triggered), + variables___1__0(D,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_variables___1'(B). +'$run_suspensions_known/1_1_$default___1'([]). +'$run_suspensions_known/1_1_$default___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$default___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$default___1'(B). +'$run_suspensions_known/1_1_$special_;/2___2'([]). +'$run_suspensions_known/1_1_$special_;/2___2'([A|B]) :- + A=suspension(_,C,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(3,A,G), + 'known/1_1_$special_;/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_;/2___2'(B). +'$run_suspensions_known/1_1_$special_nonvar/1___1'([]). +'$run_suspensions_known/1_1_$special_nonvar/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_nonvar/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(B). +'$run_suspensions_known/1_1_$special_var/1___1'([]). +'$run_suspensions_known/1_1_$special_var/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_var/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_var/1___1'(B). +'$run_suspensions_known/1_1_$special_atom/1___1'([]). +'$run_suspensions_known/1_1_$special_atom/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_atom/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_atom/1___1'(B). +'$run_suspensions_known/1_1_$special_atomic/1___1'([]). +'$run_suspensions_known/1_1_$special_atomic/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_atomic/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_atomic/1___1'(B). +'$run_suspensions_known/1_1_$special_compound/1___1'([]). +'$run_suspensions_known/1_1_$special_compound/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_compound/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_compound/1___1'(B). +'$run_suspensions_known/1_1_$special_ground/1___1'([]). +'$run_suspensions_known/1_1_$special_ground/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_ground/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_ground/1___1'(B). +'$run_suspensions_known/1_1_$special_integer/1___1'([]). +'$run_suspensions_known/1_1_$special_integer/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_integer/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_integer/1___1'(B). +'$run_suspensions_known/1_1_$special_float/1___1'([]). +'$run_suspensions_known/1_1_$special_float/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_float/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_float/1___1'(B). +'$run_suspensions_known/1_1_$special_number/1___1'([]). +'$run_suspensions_known/1_1_$special_number/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_number/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_number/1___1'(B). +'$run_suspensions_known/1_1_$special_=\\=/2___2'([]). +'$run_suspensions_known/1_1_$special_=\\=/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_=\\=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(B). +'$run_suspensions_known/1_1_$special_\\+/1___1'([]). +'$run_suspensions_known/1_1_$special_\\+/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_\\+/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\+/1___1'(B). +'$run_suspensions_known/1_1_$special_functor/3___3'([]). +'$run_suspensions_known/1_1_$special_functor/3___3'([A|B]) :- + A=suspension(_,C,D,_,E,F,G), + ( C==active -> + setarg(2,A,triggered), + H is D+1, + setarg(3,A,H), + 'known/1_1_$special_functor/3___3__0'(E,F,G,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_functor/3___3'(B). +'$run_suspensions_known/1_1_$special_\\=/2___2'([]). +'$run_suspensions_known/1_1_$special_\\=/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_\\=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\=/2___2'(B). +'$run_suspensions_known/1_1_$special_=/2___2'([]). +'$run_suspensions_known/1_1_$special_=/2___2'([A|B]) :- + A=suspension(_,C,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(3,A,G), + 'known/1_1_$special_=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=/2___2'(B). +'$run_suspensions_known/1_1_$special_\\==/2___2'([]). +'$run_suspensions_known/1_1_$special_\\==/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_\\==/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\==/2___2'(B). +'$run_suspensions_known/1_1_$special_==/2___2'([]). +'$run_suspensions_known/1_1_$special_==/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_==/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_==/2___2'(B). +'$run_suspensions_known/1_1_$special_= + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_= + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_= + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_=:=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=:=/2___2'(B). +'$enumerate_constraints'(A) :- + ( nonvar(A) -> + functor(A,B,_), + '$enumerate_constraints'(B,A) + ; + '$enumerate_constraints'(_,A) + ). +'$enumerate_constraints'(variables,A) :- + nb_getval('$chr_store_global_list_guard_entailment____variables___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=variables(D). +'$enumerate_constraints'('known/1_1_$default',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$default'(D). +'$enumerate_constraints'('known/1_1_$special_;/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A='known/1_1_$special_;/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_nonvar/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_nonvar/1'(D). +'$enumerate_constraints'('known/1_1_$special_var/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_var/1'(D). +'$enumerate_constraints'('known/1_1_$special_atom/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_atom/1'(D). +'$enumerate_constraints'('known/1_1_$special_atomic/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_atomic/1'(D). +'$enumerate_constraints'('known/1_1_$special_compound/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_compound/1'(D). +'$enumerate_constraints'('known/1_1_$special_ground/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_ground/1'(D). +'$enumerate_constraints'('known/1_1_$special_integer/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_integer/1'(D). +'$enumerate_constraints'('known/1_1_$special_float/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_float/1'(D). +'$enumerate_constraints'('known/1_1_$special_number/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_number/1'(D). +'$enumerate_constraints'('known/1_1_$special_=\\=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_=\\=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_\\+/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_\\+/1'(D). +'$enumerate_constraints'('known/1_1_$special_functor/3',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F), + A='known/1_1_$special_functor/3'(D,E,F). +'$enumerate_constraints'('known/1_1_$special_\\=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_\\=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A='known/1_1_$special_=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_\\==/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_\\==/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_==/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_==/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_==H1), + !, + 'known/1_1_$special_>=/2'(G1,H1) + ) + ; + A=(I1>J1), + !, + 'known/1_1_$special_>/2'(I1,J1) + ) + ; + A=(K1==N), + !, + 'test/1_1_$special_>=/2'(M,N) + ) + ; + A=(O>P), + !, + 'test/1_1_$special_>/2'(O,P) + ) + ; + A=(Q=\=R), + !, + 'test/1_1_$special_=\\=/2'(Q,R) + ) + ; + A=(S= + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,A), + cleanup___0__0__0__1(B) + ; + cleanup___0__0__0__1(B) + ). +cleanup :- + cleanup___0__1. +cleanup___0__1 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',A), + !, + cleanup___0__1__0__2(A). +cleanup___0__1__0__2([]) :- + cleanup___0__2. +cleanup___0__1__0__2([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(C,A), + cleanup___0__1__0__2(B) + ; + cleanup___0__1__0__2(B) + ). +cleanup___0__1 :- + cleanup___0__2. +cleanup___0__2 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',A), + !, + cleanup___0__2__0__3(A). +cleanup___0__2__0__3([]) :- + cleanup___0__3. +cleanup___0__2__0__3([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(C,A), + cleanup___0__2__0__3(B) + ; + cleanup___0__2__0__3(B) + ). +cleanup___0__2 :- + cleanup___0__3. +cleanup___0__3 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',A), + !, + cleanup___0__3__0__4(A). +cleanup___0__3__0__4([]) :- + cleanup___0__4. +cleanup___0__3__0__4([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(C,A), + cleanup___0__3__0__4(B) + ; + cleanup___0__3__0__4(B) + ). +cleanup___0__3 :- + cleanup___0__4. +cleanup___0__4 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',A), + !, + cleanup___0__4__0__5(A). +cleanup___0__4__0__5([]) :- + cleanup___0__5. +cleanup___0__4__0__5([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(C,A), + cleanup___0__4__0__5(B) + ; + cleanup___0__4__0__5(B) + ). +cleanup___0__4 :- + cleanup___0__5. +cleanup___0__5 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',A), + !, + cleanup___0__5__0__6(A). +cleanup___0__5__0__6([]) :- + cleanup___0__6. +cleanup___0__5__0__6([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C,A), + cleanup___0__5__0__6(B) + ; + cleanup___0__5__0__6(B) + ). +cleanup___0__5 :- + cleanup___0__6. +cleanup___0__6 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',A), + !, + cleanup___0__6__0__7(A). +cleanup___0__6__0__7([]) :- + cleanup___0__7. +cleanup___0__6__0__7([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(C,A), + cleanup___0__6__0__7(B) + ; + cleanup___0__6__0__7(B) + ). +cleanup___0__6 :- + cleanup___0__7. +cleanup___0__7 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',A), + !, + cleanup___0__7__0__8(A). +cleanup___0__7__0__8([]) :- + cleanup___0__8. +cleanup___0__7__0__8([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,A), + cleanup___0__7__0__8(B) + ; + cleanup___0__7__0__8(B) + ). +cleanup___0__7 :- + cleanup___0__8. +cleanup___0__8 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',A), + !, + cleanup___0__8__0__9(A). +cleanup___0__8__0__9([]) :- + cleanup___0__9. +cleanup___0__8__0__9([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,A), + cleanup___0__8__0__9(B) + ; + cleanup___0__8__0__9(B) + ). +cleanup___0__8 :- + cleanup___0__9. +cleanup___0__9 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',A), + !, + cleanup___0__9__0__10(A). +cleanup___0__9__0__10([]) :- + cleanup___0__10. +cleanup___0__9__0__10([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,A), + cleanup___0__9__0__10(B) + ; + cleanup___0__9__0__10(B) + ). +cleanup___0__9 :- + cleanup___0__10. +cleanup___0__10 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',A), + !, + cleanup___0__10__0__11(A). +cleanup___0__10__0__11([]) :- + cleanup___0__11. +cleanup___0__10__0__11([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(C,A), + cleanup___0__10__0__11(B) + ; + cleanup___0__10__0__11(B) + ). +cleanup___0__10 :- + cleanup___0__11. +cleanup___0__11 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A), + !, + cleanup___0__11__0__12(A). +cleanup___0__11__0__12([]) :- + cleanup___0__12. +cleanup___0__11__0__12([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(C,A), + cleanup___0__11__0__12(B) + ; + cleanup___0__11__0__12(B) + ). +cleanup___0__11 :- + cleanup___0__12. +cleanup___0__12 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',A), + !, + cleanup___0__12__0__13(A). +cleanup___0__12__0__13([]) :- + cleanup___0__13. +cleanup___0__12__0__13([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,H,I,J), + setarg(2,A,removed), + term_variables(term(H,I,J),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(C,A), + cleanup___0__12__0__13(B) + ; + cleanup___0__12__0__13(B) + ). +cleanup___0__12 :- + cleanup___0__13. +cleanup___0__13 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A), + !, + cleanup___0__13__0__14(A). +cleanup___0__13__0__14([]) :- + cleanup___0__14. +cleanup___0__13__0__14([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(C,A), + cleanup___0__13__0__14(B) + ; + cleanup___0__13__0__14(B) + ). +cleanup___0__13 :- + cleanup___0__14. +cleanup___0__14 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',A), + !, + cleanup___0__14__0__15(A). +cleanup___0__14__0__15([]) :- + cleanup___0__15. +cleanup___0__14__0__15([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(C,A), + cleanup___0__14__0__15(B) + ; + cleanup___0__14__0__15(B) + ). +cleanup___0__14 :- + cleanup___0__15. +cleanup___0__15 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',A), + !, + cleanup___0__15__0__17(A). +cleanup___0__15__0__17([]) :- + cleanup___0__16. +cleanup___0__15__0__17([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(C,A), + cleanup___0__15__0__17(B) + ; + cleanup___0__15__0__17(B) + ). +cleanup___0__15 :- + cleanup___0__16. +cleanup___0__16 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',A), + !, + cleanup___0__16__0__18(A). +cleanup___0__16__0__18([]) :- + cleanup___0__17. +cleanup___0__16__0__18([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(C,A), + cleanup___0__16__0__18(B) + ; + cleanup___0__16__0__18(B) + ). +cleanup___0__16 :- + cleanup___0__17. +cleanup___0__17 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C,A), + cleanup___0__18__0__24(B) + ; + cleanup___0__18__0__24(B) + ). +cleanup___0__18 :- + cleanup___0__19. +cleanup___0__19 :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',A), + !, + cleanup___0__19__0__25(A). +cleanup___0__19__0__25([]) :- + cleanup___0__20. +cleanup___0__19__0__25([A|B]) :- + ( A=suspension(_,active,_) -> + setarg(2,A,removed), + arg(3,A,C), + ( var(C) -> + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',D), + D=[_|E], + b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',E), + ( E=[F|_] -> + setarg(3,F,_) + ; + true + ) + ; + C=[_,_|E], + setarg(2,C,E), + ( E=[F|_] -> + setarg(3,F,C) + ; + true + ) + ), + cleanup___0__19__0__25(B) + ; + cleanup___0__19__0__25(B) + ). +cleanup___0__19 :- + cleanup___0__20. +cleanup___0__20 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',A), + !, + cleanup___0__20__0__26(A). +cleanup___0__20__0__26([]) :- + cleanup___0__21. +cleanup___0__20__0__26([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(C,A), + cleanup___0__20__0__26(B) + ; + cleanup___0__20__0__26(B) + ). +cleanup___0__20 :- + cleanup___0__21. +cleanup___0__21 :- + nb_getval('$chr_store_global_list_guard_entailment____variables___1',A), + !, + cleanup___0__21__0__27(A). +cleanup___0__21__0__27([]) :- + cleanup___0__22. +cleanup___0__21__0__27([A|B]) :- + ( A=suspension(_,active,_,_) -> + A=suspension(_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(3,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____variables___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_variables___1(C,A), + cleanup___0__21__0__27(B) + ; + cleanup___0__21__0__27(B) + ). +cleanup___0__21 :- + cleanup___0__22. +cleanup___0__22. +variables(A) :- + variables___1__0(A,_). +variables___1__0(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), + 'chr sbag_member'(C,G), + C=suspension(_,active,_,_,D,E,F), + ground(F), + ground(E), + var(D), + !, + C=suspension(_,_,_,_,U,V,W), + setarg(2,C,removed), + term_variables(term(U,V,W),J), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(J,C), + ( var(B) -> + true + ; + B=suspension(_,_,_,P), + setarg(2,B,removed), + term_variables(P,K), + arg(3,B,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____variables___1',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_variables___1(K,B) + ), + functor(D,E,F), + D=..[_|H], + append(H,A,I), + variables(I). +variables___1__0(A,B) :- + ( var(B) -> + B=suspension(D,active,_,A), + term_variables(A,C), + 'chr none_locked'(C), + 'chr gen_id'(D), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',E), + F=[B|E], + b_setval('$chr_store_global_list_guard_entailment____variables___1',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + attach_variables___1(C,B) + ; + setarg(2,B,active) + ). +'test/1_1_$default'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$default'(A) :- + nonvar(A), + ( + ( + ( + ( + ( + A=nonvar(B), + ( 'chr newvia_1'(B,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==B, + ! + ; + A=var(H), + ( 'chr newvia_1'(H,L) -> + get_attr(L,guard_entailment,M), + M=v(_,_,_,_,_,K,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K) + ), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,J), + J==H, + ! + ) + ; + A=atom(N), + ( 'chr newvia_1'(N,R) -> + get_attr(R,guard_entailment,S), + S=v(_,_,_,_,_,_,Q,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',Q) + ), + 'chr sbag_member'(O,Q), + O=suspension(_,active,_,_,_,P), + P==N, + ! + ) + ; + A=atomic(T), + ( 'chr newvia_1'(T,X) -> + get_attr(X,guard_entailment,Y), + Y=v(_,_,_,_,_,_,_,W,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',W) + ), + 'chr sbag_member'(U,W), + U=suspension(_,active,_,_,_,V), + V==T, + ! + ) + ; + A=compound(Z), + ( 'chr newvia_1'(Z,D1) -> + get_attr(D1,guard_entailment,E1), + E1=v(_,_,_,_,_,_,_,_,C1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',C1) + ), + 'chr sbag_member'(A1,C1), + A1=suspension(_,active,_,_,_,B1), + B1==Z, + ! + ) + ; + A=(F1\=G1), + ( 'chr newvia_2'(F1,G1,L1) -> + get_attr(L1,guard_entailment,M1), + M1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,K1,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',K1) + ), + 'chr sbag_member'(H1,K1), + H1=suspension(_,active,_,_,_,I1,J1), + I1==F1, + J1==G1, + ! + ). +'test/1_1_$default'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C), + C==A, + !. +'test/1_1_$default'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,A), + !, + negate_b(C,F), + known(F), + \+try(D,A). +'test/1_1_$default'(_) :- + fail. +'test/1_1_$special_,/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_,/2'(A,B) :- + test(A), + known(A), + test(B). +'test/1_1_$special_\\+/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_\\+/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C), + C==A, + !. +'test/1_1_$special_\\+/1'(A) :- + nonvar(A), + ( + ( + ( + ( + ( + ( + ( + A=functor(B,C,D), + nonvar(B), + ( + 'chr lock'(B), + 'chr lock'(C), + 'chr lock'(D), + functor(B,C,D), + 'chr unlock'(B), + 'chr unlock'(C), + 'chr unlock'(D), + !, + fail + ; + ! + ) + ; + A=ground(E), + ground(E), + !, + fail + ) + ; + A=number(F), + number(F), + !, + fail + ) + ; + A=float(G), + float(G), + !, + fail + ) + ; + A=integer(H), + integer(H), + !, + fail + ) + ; + A=number(I), + nonvar(I), + ! + ) + ; + A=float(J), + nonvar(J), + ! + ) + ; + A=integer(K), + nonvar(K), + ! + ). +'test/1_1_$special_\\+/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,\+A), + !, + negate_b(C,F), + known(F), + \+try(D,\+A). +'test/1_1_$special_\\+/1'(_) :- + fail. +'test/1_1_$special_integer/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_integer/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_integer/1'(A) :- + integer(A), + !. +'test/1_1_$special_integer/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_integer/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,integer(A)), + !, + negate_b(C,F), + known(F), + \+try(D,integer(A)). +'test/1_1_$special_integer/1'(_) :- + fail. +'test/1_1_$special_float/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_float/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_float/1'(A) :- + float(A), + !. +'test/1_1_$special_float/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_float/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,float(A)), + !, + negate_b(C,F), + known(F), + \+try(D,float(A)). +'test/1_1_$special_float/1'(_) :- + fail. +'test/1_1_$special_number/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_number/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_number/1'(A) :- + number(A), + !. +'test/1_1_$special_number/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_number/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,number(A)), + !, + negate_b(C,F), + known(F), + \+try(D,number(A)). +'test/1_1_$special_number/1'(_) :- + fail. +'test/1_1_$special_ground/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_ground/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_ground/1'(A) :- + ground(A), + !. +'test/1_1_$special_ground/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,ground(A)), + !, + negate_b(C,F), + known(F), + \+try(D,ground(A)). +'test/1_1_$special_ground/1'(_) :- + fail. +'test/1_1_$special_=:=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_=:=/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=:=/2'(A,B) :- + A==B, + !. +'test/1_1_$special_=:=/2'(A,B) :- + ground(B), + ground(A), + ( + A=:=B, + ! + ; + !, + fail + ). +'test/1_1_$special_=:=/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=:=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=:=B). +'test/1_1_$special_=:=/2'(_,_) :- + fail. +'test/1_1_$special_==/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_==/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_==/2'(A,B) :- + A==B, + !. +'test/1_1_$special_==/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A==B), + !, + negate_b(D,G), + known(G), + \+try(E,A==B). +'test/1_1_$special_==/2'(_,_) :- + fail. +'test/1_1_$special_true/0' :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_true/0'. +'test/1_1_$special_functor/3'(_,_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_functor/3'(A,B,C) :- + ( 'chr newvia'([A,B,C],I) -> + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,H,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',H) + ), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,E,F,G), + E==A, + F==B, + G==C, + !. +'test/1_1_$special_functor/3'(A,B,C) :- + ground(C), + ground(B), + var(A), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + 'chr lock'(A), + 'chr lock'(E), + \+memberchk_eq(A,E), + 'chr unlock'(A), + 'chr unlock'(E), + !, + functor(A,B,C). +'test/1_1_$special_functor/3'(A,B,C) :- + nonvar(A), + ( + 'chr lock'(A), + 'chr lock'(B), + 'chr lock'(C), + functor(A,B,C), + 'chr unlock'(A), + 'chr unlock'(B), + 'chr unlock'(C), + ! + ; + !, + fail + ). +'test/1_1_$special_functor/3'(A,B,C) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + !, + D=suspension(_,_,_,_,N,O), + setarg(2,D,removed), + term_variables(term(N,O),I), + arg(4,D,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,D), + \+try(E,functor(A,B,C)), + !, + negate_b(E,H), + known(H), + \+try(F,functor(A,B,C)). +'test/1_1_$special_functor/3'(_,_,_) :- + fail. +'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_=/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=/2'(A,B) :- + ground(B), + ground(A), + !, + A=B. +'test/1_1_$special_=/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=B). +'test/1_1_$special_=/2'(_,_) :- + fail. +'test/1_1_$special_;/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_;/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,F,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_;/2'(A,B) :- + A==fail, + !, + test(B). +'test/1_1_$special_;/2'(A,B) :- + B==fail, + !, + test(A). +'test/1_1_$special_;/2'(A,B) :- + negate_b(A,C), + negate_b(B,D), + ( + known(D), + test(A) + ; + known(C), + test(B) + ). +'test/1_1_$special_is/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_is/2'(A,B) :- + 'test/1_1_$special_=:=/2'(A,B). +'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_>=/2'(A,B) :- + 'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_>/2'(A,B) :- + 'test/1_1_$special_ + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=\\=/2'(A,B) :- + number(B), + ( 'chr newvia_1'(A,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=E, + ! + ; + E==A, + number(D), + B + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=\=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=\=B). +'test/1_1_$special_=\\=/2'(_,_) :- + fail. +'test/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + number(E), + E= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==B, + number(E), + A= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_\\==/2'(A,B) :- + nonvar(B), + 'chr lock'(B), + functor(B,C,D), + 'chr unlock'(B), + !, + B=..[_|E], + length(F,D), + G=..[C|F], + add_args_nmatch(F,E,H), + I=(\+functor(A,C,D);functor(A,C,D),A=G,H), + test(I). +'test/1_1_$special_\\==/2'(A,B) :- + nonvar(A), + !, + 'test/1_1_$special_\\==/2'(B,A). +'test/1_1_$special_\\==/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A\==B), + !, + negate_b(D,G), + known(G), + \+try(E,A\==B). +'test/1_1_$special_\\==/2'(_,_) :- + fail. +'known/1_1_$default'(A) :- + 'known/1_1_$default___1__0'(A,_). +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(H,B) + ) + ). +'known/1_1_$default___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(D,A) + ) + ). +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$default___1__0__0__6'(C,A,B). +'known/1_1_$default___1__0__0__6'([],B,A) :- + 'known/1_1_$default___1__1'(B,A). +'known/1_1_$default___1__0__0__6'([E|G],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + F==A -> + E=suspension(_,_,_,_,U,V), + setarg(2,E,removed), + term_variables(term(U,V),H), + arg(4,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,E), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + 'chr none_locked'(I), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',N), + O=[B|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + 'attach_known/1_1_$default___1'(I,B) + ; + true + ), + known(D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$default___1__0__0__6'(G,A,B) + ; + true + ) + ; + 'known/1_1_$default___1__0__0__6'(G,A,B) + ). +'known/1_1_$default___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$default___1__1'(A,B). +'known/1_1_$default___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$default___1__1__0__7'(C,A,B). +'known/1_1_$default___1__1__0__7'([],B,A) :- + 'known/1_1_$default___1__2'(B,A). +'known/1_1_$default___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$default___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$default___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$default___1__1__0__7'(H,A,B) + ). +'known/1_1_$default___1__1'(A,B) :- + 'known/1_1_$default___1__2'(A,B). +'known/1_1_$default___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$default___1'(B,A) + ; + true + ). +'known/1_1_$special_;/2'(A,B) :- + 'known/1_1_$special_;/2___2__0'(A,B,_). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,G,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,C) + ) + ). +'known/1_1_$special_;/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,A) + ) + ). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I;J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(4,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_;/2___2__0'(A,B,C) :- + nonvar(A), + A=(\+D), + nonvar(D), + D=(E;F), + ( 'chr newvia_2'(E,F,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,J,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J) + ), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,H,I), + H==E, + I==F, + !, + ( var(C) -> + true + ; + C=suspension(_,R,_,_,S,T), + setarg(2,C,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T),M), + arg(4,C,N), + ( var(N) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O), + O=[_|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P), + ( P=[Q|_] -> + setarg(4,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(4,Q,N) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_;/2___2__0__0__7'(D,A,B,C). +'known/1_1_$special_;/2___2__0__0__7'([],B,C,A) :- + 'known/1_1_$special_;/2___2__1'(B,C,A). +'known/1_1_$special_;/2___2__0__0__7'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H;I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(3,C,N), + M is N+1, + setarg(3,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_;/2___2__0__0__7'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_;/2___2__0__0__7'(J,A,B,C) + ). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_;/2___2__1'(A,B,C). +'known/1_1_$special_;/2___2__1'(A,B,C) :- + nonvar(A), + ( + A=(\+D), + ( + nonvar(D), + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + D=nonvar(E), + ( 'chr newvia_1'(E,I) -> + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,H,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',H) + ), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,_,G), + G==E, + !, + ( var(C) -> + true + ; + C=suspension(_,Q11,_,_,R11,S11), + setarg(2,C,removed), + ( Q11==not_stored_yet -> + K=[] + ; + term_variables(term(R11,S11),K), + arg(4,C,M11), + ( var(M11) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N11), + N11=[_|O11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O11), + ( O11=[P11|_] -> + setarg(4,P11,_) + ; + true + ) + ; + M11=[_,_|O11], + setarg(2,M11,O11), + ( O11=[P11|_] -> + setarg(4,P11,M11) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,C) + ) + ), + known(B) + ; + D=var(L), + ( 'chr newvia_1'(L,P) -> + get_attr(P,guard_entailment,Q), + Q=v(_,_,_,_,_,O,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',O) + ), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,N), + N==L, + !, + ( var(C) -> + true + ; + C=suspension(_,J11,_,_,K11,L11), + setarg(2,C,removed), + ( J11==not_stored_yet -> + R=[] + ; + term_variables(term(K11,L11),R), + arg(4,C,F11), + ( var(F11) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G11), + G11=[_|H11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H11), + ( H11=[I11|_] -> + setarg(4,I11,_) + ; + true + ) + ; + F11=[_,_|H11], + setarg(2,F11,H11), + ( H11=[I11|_] -> + setarg(4,I11,F11) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R,C) + ) + ), + known(B) + ) + ; + D=atom(S), + ( 'chr newvia_1'(S,W) -> + get_attr(W,guard_entailment,X), + X=v(_,_,_,_,_,_,V,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',V) + ), + 'chr sbag_member'(T,V), + T=suspension(_,active,_,_,_,U), + U==S, + !, + ( var(C) -> + true + ; + C=suspension(_,C11,_,_,D11,E11), + setarg(2,C,removed), + ( C11==not_stored_yet -> + Y=[] + ; + term_variables(term(D11,E11),Y), + arg(4,C,Y10), + ( var(Y10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z10), + Z10=[_|A11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A11), + ( A11=[B11|_] -> + setarg(4,B11,_) + ; + true + ) + ; + Y10=[_,_|A11], + setarg(2,Y10,A11), + ( A11=[B11|_] -> + setarg(4,B11,Y10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y,C) + ) + ), + known(B) + ) + ; + D=atomic(Z), + ( 'chr newvia_1'(Z,D1) -> + get_attr(D1,guard_entailment,E1), + E1=v(_,_,_,_,_,_,_,C1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',C1) + ), + 'chr sbag_member'(A1,C1), + A1=suspension(_,active,_,_,_,B1), + B1==Z, + !, + ( var(C) -> + true + ; + C=suspension(_,V10,_,_,W10,X10), + setarg(2,C,removed), + ( V10==not_stored_yet -> + F1=[] + ; + term_variables(term(W10,X10),F1), + arg(4,C,R10), + ( var(R10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S10), + S10=[_|T10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T10), + ( T10=[U10|_] -> + setarg(4,U10,_) + ; + true + ) + ; + R10=[_,_|T10], + setarg(2,R10,T10), + ( T10=[U10|_] -> + setarg(4,U10,R10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(F1,C) + ) + ), + known(B) + ) + ; + D=compound(G1), + ( 'chr newvia_1'(G1,K1) -> + get_attr(K1,guard_entailment,L1), + L1=v(_,_,_,_,_,_,_,_,J1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J1) + ), + 'chr sbag_member'(H1,J1), + H1=suspension(_,active,_,_,_,I1), + I1==G1, + !, + ( var(C) -> + true + ; + C=suspension(_,O10,_,_,P10,Q10), + setarg(2,C,removed), + ( O10==not_stored_yet -> + M1=[] + ; + term_variables(term(P10,Q10),M1), + arg(4,C,K10), + ( var(K10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L10), + L10=[_|M10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M10), + ( M10=[N10|_] -> + setarg(4,N10,_) + ; + true + ) + ; + K10=[_,_|M10], + setarg(2,K10,M10), + ( M10=[N10|_] -> + setarg(4,N10,K10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M1,C) + ) + ), + known(B) + ) + ; + D=ground(N1), + ( 'chr newvia_1'(N1,R1) -> + get_attr(R1,guard_entailment,S1), + S1=v(_,_,_,_,_,_,_,_,_,Q1,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',Q1) + ), + 'chr sbag_member'(O1,Q1), + O1=suspension(_,active,_,_,_,P1), + P1==N1, + !, + ( var(C) -> + true + ; + C=suspension(_,H10,_,_,I10,J10), + setarg(2,C,removed), + ( H10==not_stored_yet -> + T1=[] + ; + term_variables(term(I10,J10),T1), + arg(4,C,D10), + ( var(D10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E10), + E10=[_|F10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F10), + ( F10=[G10|_] -> + setarg(4,G10,_) + ; + true + ) + ; + D10=[_,_|F10], + setarg(2,D10,F10), + ( F10=[G10|_] -> + setarg(4,G10,D10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(T1,C) + ) + ), + known(B) + ) + ; + D=integer(U1), + ( 'chr newvia_1'(U1,Y1) -> + get_attr(Y1,guard_entailment,Z1), + Z1=v(_,_,_,_,_,_,_,_,_,_,X1,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',X1) + ), + 'chr sbag_member'(V1,X1), + V1=suspension(_,active,_,_,_,W1), + W1==U1, + !, + ( var(C) -> + true + ; + C=suspension(_,A10,_,_,B10,C10), + setarg(2,C,removed), + ( A10==not_stored_yet -> + A2=[] + ; + term_variables(term(B10,C10),A2), + arg(4,C,W9), + ( var(W9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X9), + X9=[_|Y9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y9), + ( Y9=[Z9|_] -> + setarg(4,Z9,_) + ; + true + ) + ; + W9=[_,_|Y9], + setarg(2,W9,Y9), + ( Y9=[Z9|_] -> + setarg(4,Z9,W9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(A2,C) + ) + ), + known(B) + ) + ; + D=float(B2), + ( 'chr newvia_1'(B2,F2) -> + get_attr(F2,guard_entailment,G2), + G2=v(_,_,_,_,_,_,_,_,_,_,_,E2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E2) + ), + 'chr sbag_member'(C2,E2), + C2=suspension(_,active,_,_,_,D2), + D2==B2, + !, + ( var(C) -> + true + ; + C=suspension(_,T9,_,_,U9,V9), + setarg(2,C,removed), + ( T9==not_stored_yet -> + H2=[] + ; + term_variables(term(U9,V9),H2), + arg(4,C,P9), + ( var(P9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q9), + Q9=[_|R9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R9), + ( R9=[S9|_] -> + setarg(4,S9,_) + ; + true + ) + ; + P9=[_,_|R9], + setarg(2,P9,R9), + ( R9=[S9|_] -> + setarg(4,S9,P9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H2,C) + ) + ), + known(B) + ) + ; + D=number(I2), + ( 'chr newvia_1'(I2,M2) -> + get_attr(M2,guard_entailment,N2), + N2=v(_,_,_,_,_,_,_,_,_,_,_,_,L2,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',L2) + ), + 'chr sbag_member'(J2,L2), + J2=suspension(_,active,_,_,_,K2), + K2==I2, + !, + ( var(C) -> + true + ; + C=suspension(_,M9,_,_,N9,O9), + setarg(2,C,removed), + ( M9==not_stored_yet -> + O2=[] + ; + term_variables(term(N9,O9),O2), + arg(4,C,I9), + ( var(I9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J9), + J9=[_|K9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K9), + ( K9=[L9|_] -> + setarg(4,L9,_) + ; + true + ) + ; + I9=[_,_|K9], + setarg(2,I9,K9), + ( K9=[L9|_] -> + setarg(4,L9,I9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O2,C) + ) + ), + known(B) + ) + ; + D=(P2=\=Q2), + ( 'chr newvia_2'(P2,Q2,V2) -> + get_attr(V2,guard_entailment,W2), + W2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,U2,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U2) + ), + 'chr sbag_member'(R2,U2), + R2=suspension(_,active,_,_,_,S2,T2), + S2==P2, + T2==Q2, + !, + ( var(C) -> + true + ; + C=suspension(_,F9,_,_,G9,H9), + setarg(2,C,removed), + ( F9==not_stored_yet -> + X2=[] + ; + term_variables(term(G9,H9),X2), + arg(4,C,B9), + ( var(B9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C9), + C9=[_|D9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D9), + ( D9=[E9|_] -> + setarg(4,E9,_) + ; + true + ) + ; + B9=[_,_|D9], + setarg(2,B9,D9), + ( D9=[E9|_] -> + setarg(4,E9,B9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(X2,C) + ) + ), + known(B) + ) + ; + D=(\+Y2), + ( 'chr newvia_1'(Y2,C3) -> + get_attr(C3,guard_entailment,D3), + D3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,B3,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',B3) + ), + 'chr sbag_member'(Z2,B3), + Z2=suspension(_,active,_,_,A3), + A3==Y2, + !, + ( var(C) -> + true + ; + C=suspension(_,Y8,_,_,Z8,A9), + setarg(2,C,removed), + ( Y8==not_stored_yet -> + E3=[] + ; + term_variables(term(Z8,A9),E3), + arg(4,C,U8), + ( var(U8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V8), + V8=[_|W8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W8), + ( W8=[X8|_] -> + setarg(4,X8,_) + ; + true + ) + ; + U8=[_,_|W8], + setarg(2,U8,W8), + ( W8=[X8|_] -> + setarg(4,X8,U8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(E3,C) + ) + ), + known(B) + ) + ; + D=functor(F3,G3,H3), + ( 'chr newvia'([F3,G3,H3],N3) -> + get_attr(N3,guard_entailment,O3), + O3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,M3,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',M3) + ), + 'chr sbag_member'(I3,M3), + I3=suspension(_,active,_,_,J3,K3,L3), + J3==F3, + K3==G3, + L3==H3, + !, + ( var(C) -> + true + ; + C=suspension(_,R8,_,_,S8,T8), + setarg(2,C,removed), + ( R8==not_stored_yet -> + P3=[] + ; + term_variables(term(S8,T8),P3), + arg(4,C,N8), + ( var(N8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O8), + O8=[_|P8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P8), + ( P8=[Q8|_] -> + setarg(4,Q8,_) + ; + true + ) + ; + N8=[_,_|P8], + setarg(2,N8,P8), + ( P8=[Q8|_] -> + setarg(4,Q8,N8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(P3,C) + ) + ), + known(B) + ) + ; + D=(Q3\=R3), + ( 'chr newvia_2'(Q3,R3,W3) -> + get_attr(W3,guard_entailment,X3), + X3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,V3,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',V3) + ), + 'chr sbag_member'(S3,V3), + S3=suspension(_,active,_,_,_,T3,U3), + T3==Q3, + U3==R3, + !, + ( var(C) -> + true + ; + C=suspension(_,K8,_,_,L8,M8), + setarg(2,C,removed), + ( K8==not_stored_yet -> + Y3=[] + ; + term_variables(term(L8,M8),Y3), + arg(4,C,G8), + ( var(G8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H8), + H8=[_|I8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I8), + ( I8=[J8|_] -> + setarg(4,J8,_) + ; + true + ) + ; + G8=[_,_|I8], + setarg(2,G8,I8), + ( I8=[J8|_] -> + setarg(4,J8,G8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y3,C) + ) + ), + known(B) + ) + ; + D=(Z3=A4), + ( 'chr newvia_2'(Z3,A4,F4) -> + get_attr(F4,guard_entailment,G4), + G4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,E4,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E4) + ), + 'chr sbag_member'(B4,E4), + B4=suspension(_,active,_,_,C4,D4), + C4==Z3, + D4==A4, + !, + ( var(C) -> + true + ; + C=suspension(_,D8,_,_,E8,F8), + setarg(2,C,removed), + ( D8==not_stored_yet -> + H4=[] + ; + term_variables(term(E8,F8),H4), + arg(4,C,Z7), + ( var(Z7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A8), + A8=[_|B8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B8), + ( B8=[C8|_] -> + setarg(4,C8,_) + ; + true + ) + ; + Z7=[_,_|B8], + setarg(2,Z7,B8), + ( B8=[C8|_] -> + setarg(4,C8,Z7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H4,C) + ) + ), + known(B) + ) + ; + D=(I4\==J4), + ( 'chr newvia_2'(I4,J4,O4) -> + get_attr(O4,guard_entailment,P4), + P4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,N4,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N4) + ), + 'chr sbag_member'(K4,N4), + K4=suspension(_,active,_,_,_,L4,M4), + L4==I4, + M4==J4, + !, + ( var(C) -> + true + ; + C=suspension(_,W7,_,_,X7,Y7), + setarg(2,C,removed), + ( W7==not_stored_yet -> + Q4=[] + ; + term_variables(term(X7,Y7),Q4), + arg(4,C,S7), + ( var(S7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T7), + T7=[_|U7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U7), + ( U7=[V7|_] -> + setarg(4,V7,_) + ; + true + ) + ; + S7=[_,_|U7], + setarg(2,S7,U7), + ( U7=[V7|_] -> + setarg(4,V7,S7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Q4,C) + ) + ), + known(B) + ) + ; + D=(R4==S4), + ( 'chr newvia_2'(R4,S4,X4) -> + get_attr(X4,guard_entailment,Y4), + Y4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,W4,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',W4) + ), + 'chr sbag_member'(T4,W4), + T4=suspension(_,active,_,_,_,U4,V4), + U4==R4, + V4==S4, + !, + ( var(C) -> + true + ; + C=suspension(_,P7,_,_,Q7,R7), + setarg(2,C,removed), + ( P7==not_stored_yet -> + Z4=[] + ; + term_variables(term(Q7,R7),Z4), + arg(4,C,L7), + ( var(L7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M7), + M7=[_|N7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N7), + ( N7=[O7|_] -> + setarg(4,O7,_) + ; + true + ) + ; + L7=[_,_|N7], + setarg(2,L7,N7), + ( N7=[O7|_] -> + setarg(4,O7,L7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z4,C) + ) + ), + known(B) + ) + ; + D=(A5= + get_attr(G5,guard_entailment,H5), + H5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F5,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,I7,_,_,J7,K7), + setarg(2,C,removed), + ( I7==not_stored_yet -> + I5=[] + ; + term_variables(term(J7,K7),I5), + arg(4,C,E7), + ( var(E7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F7), + F7=[_|G7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G7), + ( G7=[H7|_] -> + setarg(4,H7,_) + ; + true + ) + ; + E7=[_,_|G7], + setarg(2,E7,G7), + ( G7=[H7|_] -> + setarg(4,H7,E7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I5,C) + ) + ), + known(B) + ) + ; + D=(J5=:=K5), + ( 'chr newvia_2'(J5,K5,P5) -> + get_attr(P5,guard_entailment,Q5), + Q5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,O5) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O5) + ), + 'chr sbag_member'(L5,O5), + L5=suspension(_,active,_,_,_,M5,N5), + M5==J5, + N5==K5, + !, + ( var(C) -> + true + ; + C=suspension(_,B7,_,_,C7,D7), + setarg(2,C,removed), + ( B7==not_stored_yet -> + R5=[] + ; + term_variables(term(C7,D7),R5), + arg(4,C,X6), + ( var(X6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y6), + Y6=[_|Z6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z6), + ( Z6=[A7|_] -> + setarg(4,A7,_) + ; + true + ) + ; + X6=[_,_|Z6], + setarg(2,X6,Z6), + ( Z6=[A7|_] -> + setarg(4,A7,X6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R5,C) + ) + ), + known(B) + ) + ; + ( 'chr newvia_1'(D,V5) -> + get_attr(V5,guard_entailment,W5), + W5=v(_,_,U5,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',U5) + ), + 'chr sbag_member'(S5,U5), + S5=suspension(_,active,_,_,T5), + T5==D, + !, + ( var(C) -> + true + ; + C=suspension(_,U6,_,_,V6,W6), + setarg(2,C,removed), + ( U6==not_stored_yet -> + X5=[] + ; + term_variables(term(V6,W6),X5), + arg(4,C,Q6), + ( var(Q6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R6), + R6=[_|S6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S6), + ( S6=[T6|_] -> + setarg(4,T6,_) + ; + true + ) + ; + Q6=[_,_|S6], + setarg(2,Q6,S6), + ( S6=[T6|_] -> + setarg(4,T6,Q6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(X5,C) + ) + ), + known(B) + ) + ; + A=(Y5,_), + nonvar(Y5), + Y5=(\+Z5), + nonvar(Z5), + Z5=(A6;B6), + ( 'chr newvia_2'(A6,B6,G6) -> + get_attr(G6,guard_entailment,H6), + H6=v(_,_,_,F6,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F6) + ), + 'chr sbag_member'(C6,F6), + C6=suspension(_,active,_,_,D6,E6), + D6==A6, + E6==B6, + !, + ( var(C) -> + true + ; + C=suspension(_,N6,_,_,O6,P6), + setarg(2,C,removed), + ( N6==not_stored_yet -> + I6=[] + ; + term_variables(term(O6,P6),I6), + arg(4,C,J6), + ( var(J6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K6), + K6=[_|L6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L6), + ( L6=[M6|_] -> + setarg(4,M6,_) + ; + true + ) + ; + J6=[_,_|L6], + setarg(2,J6,L6), + ( L6=[M6|_] -> + setarg(4,M6,J6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I6,C) + ) + ), + known(B) + ). +'known/1_1_$special_;/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_;/2___2__1__0__34'(D,A,B,C). +'known/1_1_$special_;/2___2__1__0__34'([],B,C,A) :- + 'known/1_1_$special_;/2___2__2'(B,C,A). +'known/1_1_$special_;/2___2__1__0__34'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I;J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(3,C,O), + N is O+1, + setarg(3,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_;/2___2__1__0__34'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_;/2___2__1__0__34'(K,A,B,C) + ). +'known/1_1_$special_;/2___2__1'(A,B,C) :- + 'known/1_1_$special_;/2___2__2'(A,B,C). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + nonvar(A), + A=(D,_), + nonvar(D), + D=(\+E), + ( + nonvar(E), + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + E=nonvar(F), + ( 'chr newvia_1'(F,J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,I,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',I) + ), + 'chr sbag_member'(G,I), + G=suspension(_,active,_,_,H), + H==F, + !, + ( var(C) -> + true + ; + C=suspension(_,Z10,_,_,A11,B11), + setarg(2,C,removed), + ( Z10==not_stored_yet -> + L=[] + ; + term_variables(term(A11,B11),L), + arg(4,C,V10), + ( var(V10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W10), + W10=[_|X10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X10), + ( X10=[Y10|_] -> + setarg(4,Y10,_) + ; + true + ) + ; + V10=[_,_|X10], + setarg(2,V10,X10), + ( X10=[Y10|_] -> + setarg(4,Y10,V10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,C) + ) + ), + known(B) + ; + E=var(M), + ( 'chr newvia_1'(M,Q) -> + get_attr(Q,guard_entailment,R), + R=v(_,_,_,_,_,P,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P) + ), + 'chr sbag_member'(N,P), + N=suspension(_,active,_,_,O), + O==M, + !, + ( var(C) -> + true + ; + C=suspension(_,S10,_,_,T10,U10), + setarg(2,C,removed), + ( S10==not_stored_yet -> + S=[] + ; + term_variables(term(T10,U10),S), + arg(4,C,O10), + ( var(O10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P10), + P10=[_|Q10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q10), + ( Q10=[R10|_] -> + setarg(4,R10,_) + ; + true + ) + ; + O10=[_,_|Q10], + setarg(2,O10,Q10), + ( Q10=[R10|_] -> + setarg(4,R10,O10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(S,C) + ) + ), + known(B) + ) + ; + E=atom(T), + ( 'chr newvia_1'(T,X) -> + get_attr(X,guard_entailment,Y), + Y=v(_,_,_,_,_,_,W,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',W) + ), + 'chr sbag_member'(U,W), + U=suspension(_,active,_,_,_,V), + V==T, + !, + ( var(C) -> + true + ; + C=suspension(_,L10,_,_,M10,N10), + setarg(2,C,removed), + ( L10==not_stored_yet -> + Z=[] + ; + term_variables(term(M10,N10),Z), + arg(4,C,H10), + ( var(H10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I10), + I10=[_|J10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J10), + ( J10=[K10|_] -> + setarg(4,K10,_) + ; + true + ) + ; + H10=[_,_|J10], + setarg(2,H10,J10), + ( J10=[K10|_] -> + setarg(4,K10,H10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z,C) + ) + ), + known(B) + ) + ; + E=atomic(A1), + ( 'chr newvia_1'(A1,E1) -> + get_attr(E1,guard_entailment,F1), + F1=v(_,_,_,_,_,_,_,D1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',D1) + ), + 'chr sbag_member'(B1,D1), + B1=suspension(_,active,_,_,_,C1), + C1==A1, + !, + ( var(C) -> + true + ; + C=suspension(_,E10,_,_,F10,G10), + setarg(2,C,removed), + ( E10==not_stored_yet -> + G1=[] + ; + term_variables(term(F10,G10),G1), + arg(4,C,A10), + ( var(A10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B10), + B10=[_|C10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C10), + ( C10=[D10|_] -> + setarg(4,D10,_) + ; + true + ) + ; + A10=[_,_|C10], + setarg(2,A10,C10), + ( C10=[D10|_] -> + setarg(4,D10,A10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G1,C) + ) + ), + known(B) + ) + ; + E=compound(H1), + ( 'chr newvia_1'(H1,L1) -> + get_attr(L1,guard_entailment,M1), + M1=v(_,_,_,_,_,_,_,_,K1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',K1) + ), + 'chr sbag_member'(I1,K1), + I1=suspension(_,active,_,_,_,J1), + J1==H1, + !, + ( var(C) -> + true + ; + C=suspension(_,X9,_,_,Y9,Z9), + setarg(2,C,removed), + ( X9==not_stored_yet -> + N1=[] + ; + term_variables(term(Y9,Z9),N1), + arg(4,C,T9), + ( var(T9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U9), + U9=[_|V9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V9), + ( V9=[W9|_] -> + setarg(4,W9,_) + ; + true + ) + ; + T9=[_,_|V9], + setarg(2,T9,V9), + ( V9=[W9|_] -> + setarg(4,W9,T9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N1,C) + ) + ), + known(B) + ) + ; + E=ground(O1), + ( 'chr newvia_1'(O1,S1) -> + get_attr(S1,guard_entailment,T1), + T1=v(_,_,_,_,_,_,_,_,_,R1,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',R1) + ), + 'chr sbag_member'(P1,R1), + P1=suspension(_,active,_,_,_,Q1), + Q1==O1, + !, + ( var(C) -> + true + ; + C=suspension(_,Q9,_,_,R9,S9), + setarg(2,C,removed), + ( Q9==not_stored_yet -> + U1=[] + ; + term_variables(term(R9,S9),U1), + arg(4,C,M9), + ( var(M9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N9), + N9=[_|O9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O9), + ( O9=[P9|_] -> + setarg(4,P9,_) + ; + true + ) + ; + M9=[_,_|O9], + setarg(2,M9,O9), + ( O9=[P9|_] -> + setarg(4,P9,M9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(U1,C) + ) + ), + known(B) + ) + ; + E=integer(V1), + ( 'chr newvia_1'(V1,Z1) -> + get_attr(Z1,guard_entailment,A2), + A2=v(_,_,_,_,_,_,_,_,_,_,Y1,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',Y1) + ), + 'chr sbag_member'(W1,Y1), + W1=suspension(_,active,_,_,_,X1), + X1==V1, + !, + ( var(C) -> + true + ; + C=suspension(_,J9,_,_,K9,L9), + setarg(2,C,removed), + ( J9==not_stored_yet -> + B2=[] + ; + term_variables(term(K9,L9),B2), + arg(4,C,F9), + ( var(F9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G9), + G9=[_|H9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H9), + ( H9=[I9|_] -> + setarg(4,I9,_) + ; + true + ) + ; + F9=[_,_|H9], + setarg(2,F9,H9), + ( H9=[I9|_] -> + setarg(4,I9,F9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(B2,C) + ) + ), + known(B) + ) + ; + E=float(C2), + ( 'chr newvia_1'(C2,G2) -> + get_attr(G2,guard_entailment,H2), + H2=v(_,_,_,_,_,_,_,_,_,_,_,F2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F2) + ), + 'chr sbag_member'(D2,F2), + D2=suspension(_,active,_,_,_,E2), + E2==C2, + !, + ( var(C) -> + true + ; + C=suspension(_,C9,_,_,D9,E9), + setarg(2,C,removed), + ( C9==not_stored_yet -> + I2=[] + ; + term_variables(term(D9,E9),I2), + arg(4,C,Y8), + ( var(Y8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z8), + Z8=[_|A9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A9), + ( A9=[B9|_] -> + setarg(4,B9,_) + ; + true + ) + ; + Y8=[_,_|A9], + setarg(2,Y8,A9), + ( A9=[B9|_] -> + setarg(4,B9,Y8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I2,C) + ) + ), + known(B) + ) + ; + E=number(J2), + ( 'chr newvia_1'(J2,N2) -> + get_attr(N2,guard_entailment,O2), + O2=v(_,_,_,_,_,_,_,_,_,_,_,_,M2,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',M2) + ), + 'chr sbag_member'(K2,M2), + K2=suspension(_,active,_,_,_,L2), + L2==J2, + !, + ( var(C) -> + true + ; + C=suspension(_,V8,_,_,W8,X8), + setarg(2,C,removed), + ( V8==not_stored_yet -> + P2=[] + ; + term_variables(term(W8,X8),P2), + arg(4,C,R8), + ( var(R8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S8), + S8=[_|T8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T8), + ( T8=[U8|_] -> + setarg(4,U8,_) + ; + true + ) + ; + R8=[_,_|T8], + setarg(2,R8,T8), + ( T8=[U8|_] -> + setarg(4,U8,R8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(P2,C) + ) + ), + known(B) + ) + ; + E=(Q2=\=R2), + ( 'chr newvia_2'(Q2,R2,W2) -> + get_attr(W2,guard_entailment,X2), + X2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,V2,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',V2) + ), + 'chr sbag_member'(S2,V2), + S2=suspension(_,active,_,_,_,T2,U2), + T2==Q2, + U2==R2, + !, + ( var(C) -> + true + ; + C=suspension(_,O8,_,_,P8,Q8), + setarg(2,C,removed), + ( O8==not_stored_yet -> + Y2=[] + ; + term_variables(term(P8,Q8),Y2), + arg(4,C,K8), + ( var(K8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L8), + L8=[_|M8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M8), + ( M8=[N8|_] -> + setarg(4,N8,_) + ; + true + ) + ; + K8=[_,_|M8], + setarg(2,K8,M8), + ( M8=[N8|_] -> + setarg(4,N8,K8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y2,C) + ) + ), + known(B) + ) + ; + E=(\+Z2), + ( 'chr newvia_1'(Z2,D3) -> + get_attr(D3,guard_entailment,E3), + E3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,C3,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C3) + ), + 'chr sbag_member'(A3,C3), + A3=suspension(_,active,_,_,B3), + B3==Z2, + !, + ( var(C) -> + true + ; + C=suspension(_,H8,_,_,I8,J8), + setarg(2,C,removed), + ( H8==not_stored_yet -> + F3=[] + ; + term_variables(term(I8,J8),F3), + arg(4,C,D8), + ( var(D8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E8), + E8=[_|F8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F8), + ( F8=[G8|_] -> + setarg(4,G8,_) + ; + true + ) + ; + D8=[_,_|F8], + setarg(2,D8,F8), + ( F8=[G8|_] -> + setarg(4,G8,D8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(F3,C) + ) + ), + known(B) + ) + ; + E=functor(G3,H3,I3), + ( 'chr newvia'([G3,H3,I3],O3) -> + get_attr(O3,guard_entailment,P3), + P3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,N3,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N3) + ), + 'chr sbag_member'(J3,N3), + J3=suspension(_,active,_,_,K3,L3,M3), + K3==G3, + L3==H3, + M3==I3, + !, + ( var(C) -> + true + ; + C=suspension(_,A8,_,_,B8,C8), + setarg(2,C,removed), + ( A8==not_stored_yet -> + Q3=[] + ; + term_variables(term(B8,C8),Q3), + arg(4,C,W7), + ( var(W7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X7), + X7=[_|Y7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,_) + ; + true + ) + ; + W7=[_,_|Y7], + setarg(2,W7,Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,W7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Q3,C) + ) + ), + known(B) + ) + ; + E=(R3\=S3), + ( 'chr newvia_2'(R3,S3,X3) -> + get_attr(X3,guard_entailment,Y3), + Y3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,W3,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',W3) + ), + 'chr sbag_member'(T3,W3), + T3=suspension(_,active,_,_,_,U3,V3), + U3==R3, + V3==S3, + !, + ( var(C) -> + true + ; + C=suspension(_,T7,_,_,U7,V7), + setarg(2,C,removed), + ( T7==not_stored_yet -> + Z3=[] + ; + term_variables(term(U7,V7),Z3), + arg(4,C,P7), + ( var(P7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q7), + Q7=[_|R7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R7), + ( R7=[S7|_] -> + setarg(4,S7,_) + ; + true + ) + ; + P7=[_,_|R7], + setarg(2,P7,R7), + ( R7=[S7|_] -> + setarg(4,S7,P7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z3,C) + ) + ), + known(B) + ) + ; + E=(A4=B4), + ( 'chr newvia_2'(A4,B4,G4) -> + get_attr(G4,guard_entailment,H4), + H4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F4,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F4) + ), + 'chr sbag_member'(C4,F4), + C4=suspension(_,active,_,_,D4,E4), + D4==A4, + E4==B4, + !, + ( var(C) -> + true + ; + C=suspension(_,M7,_,_,N7,O7), + setarg(2,C,removed), + ( M7==not_stored_yet -> + I4=[] + ; + term_variables(term(N7,O7),I4), + arg(4,C,I7), + ( var(I7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J7), + J7=[_|K7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K7), + ( K7=[L7|_] -> + setarg(4,L7,_) + ; + true + ) + ; + I7=[_,_|K7], + setarg(2,I7,K7), + ( K7=[L7|_] -> + setarg(4,L7,I7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I4,C) + ) + ), + known(B) + ) + ; + E=(J4\==K4), + ( 'chr newvia_2'(J4,K4,P4) -> + get_attr(P4,guard_entailment,Q4), + Q4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,O4,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O4) + ), + 'chr sbag_member'(L4,O4), + L4=suspension(_,active,_,_,_,M4,N4), + M4==J4, + N4==K4, + !, + ( var(C) -> + true + ; + C=suspension(_,F7,_,_,G7,H7), + setarg(2,C,removed), + ( F7==not_stored_yet -> + R4=[] + ; + term_variables(term(G7,H7),R4), + arg(4,C,B7), + ( var(B7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C7), + C7=[_|D7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D7), + ( D7=[E7|_] -> + setarg(4,E7,_) + ; + true + ) + ; + B7=[_,_|D7], + setarg(2,B7,D7), + ( D7=[E7|_] -> + setarg(4,E7,B7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R4,C) + ) + ), + known(B) + ) + ; + E=(S4==T4), + ( 'chr newvia_2'(S4,T4,Y4) -> + get_attr(Y4,guard_entailment,Z4), + Z4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X4,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',X4) + ), + 'chr sbag_member'(U4,X4), + U4=suspension(_,active,_,_,_,V4,W4), + V4==S4, + W4==T4, + !, + ( var(C) -> + true + ; + C=suspension(_,Y6,_,_,Z6,A7), + setarg(2,C,removed), + ( Y6==not_stored_yet -> + A5=[] + ; + term_variables(term(Z6,A7),A5), + arg(4,C,U6), + ( var(U6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V6), + V6=[_|W6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W6), + ( W6=[X6|_] -> + setarg(4,X6,_) + ; + true + ) + ; + U6=[_,_|W6], + setarg(2,U6,W6), + ( W6=[X6|_] -> + setarg(4,X6,U6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(A5,C) + ) + ), + known(B) + ) + ; + E=(B5= + get_attr(H5,guard_entailment,I5), + I5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G5,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,R6,_,_,S6,T6), + setarg(2,C,removed), + ( R6==not_stored_yet -> + J5=[] + ; + term_variables(term(S6,T6),J5), + arg(4,C,N6), + ( var(N6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O6), + O6=[_|P6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P6), + ( P6=[Q6|_] -> + setarg(4,Q6,_) + ; + true + ) + ; + N6=[_,_|P6], + setarg(2,N6,P6), + ( P6=[Q6|_] -> + setarg(4,Q6,N6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J5,C) + ) + ), + known(B) + ) + ; + E=(K5=:=L5), + ( 'chr newvia_2'(K5,L5,Q5) -> + get_attr(Q5,guard_entailment,R5), + R5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,P5) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P5) + ), + 'chr sbag_member'(M5,P5), + M5=suspension(_,active,_,_,_,N5,O5), + N5==K5, + O5==L5, + !, + ( var(C) -> + true + ; + C=suspension(_,K6,_,_,L6,M6), + setarg(2,C,removed), + ( K6==not_stored_yet -> + S5=[] + ; + term_variables(term(L6,M6),S5), + arg(4,C,G6), + ( var(G6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H6), + H6=[_|I6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I6), + ( I6=[J6|_] -> + setarg(4,J6,_) + ; + true + ) + ; + G6=[_,_|I6], + setarg(2,G6,I6), + ( I6=[J6|_] -> + setarg(4,J6,G6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(S5,C) + ) + ), + known(B) + ) + ; + ( 'chr newvia_1'(E,W5) -> + get_attr(W5,guard_entailment,X5), + X5=v(_,_,V5,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',V5) + ), + 'chr sbag_member'(T5,V5), + T5=suspension(_,active,_,_,U5), + U5==E, + !, + ( var(C) -> + true + ; + C=suspension(_,D6,_,_,E6,F6), + setarg(2,C,removed), + ( D6==not_stored_yet -> + Y5=[] + ; + term_variables(term(E6,F6),Y5), + arg(4,C,Z5), + ( var(Z5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A6), + A6=[_|B6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B6), + ( B6=[C6|_] -> + setarg(4,C6,_) + ; + true + ) + ; + Z5=[_,_|B6], + setarg(2,Z5,B6), + ( B6=[C6|_] -> + setarg(4,C6,Z5) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y5,C) + ) + ), + known(B) + ). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(A,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E==A, + !, + ( var(C) -> + true + ; + C=suspension(_,N,_,_,O,P), + setarg(2,C,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(4,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + nonvar(A), + A=(D,_), + ( 'chr newvia_1'(D,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G) + ), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + F==D, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + A==fail, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + B==fail, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,C) + ) + ), + known(A). +'known/1_1_$special_;/2___2__2'(A,_,B) :- + A==true, + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,I,J), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(term(I,J),C), + arg(4,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,B) + ) + ). +'known/1_1_$special_;/2___2__2'(_,A,B) :- + A==true, + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,I,J), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(term(I,J),C), + arg(4,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,B) + ) + ). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + nonvar(A), + A=(\+D), + nonvar(D), + D=functor(E,F,G), + ( + ( + ( 'chr newvia_1'(E,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',J) + ), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,I,_,_), + I==E, + !, + ( var(C) -> + true + ; + C=suspension(_,H1,_,_,I1,J1), + setarg(2,C,removed), + ( H1==not_stored_yet -> + M=[] + ; + term_variables(term(I1,J1),M), + arg(4,C,D1), + ( var(D1) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E1), + E1=[_|F1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F1), + ( F1=[G1|_] -> + setarg(4,G1,_) + ; + true + ) + ; + D1=[_,_|F1], + setarg(2,D1,F1), + ( F1=[G1|_] -> + setarg(4,G1,D1) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,C) + ) + ) + ; + nonvar(E), + 'chr lock'(E), + 'chr lock'(F), + 'chr lock'(G), + functor(E,F,G), + 'chr unlock'(E), + 'chr unlock'(F), + 'chr unlock'(G), + !, + ( var(C) -> + true + ; + C=suspension(_,A1,_,_,B1,C1), + setarg(2,C,removed), + ( A1==not_stored_yet -> + N=[] + ; + term_variables(term(B1,C1),N), + arg(4,C,W), + ( var(W) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + X=[_|Y], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y), + ( Y=[Z|_] -> + setarg(4,Z,_) + ; + true + ) + ; + W=[_,_|Y], + setarg(2,W,Y), + ( Y=[Z|_] -> + setarg(4,Z,W) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N,C) + ) + ), + known(B) + ) + ; + nonvar(E), + 'chr lock'(E), + 'chr lock'(F), + 'chr lock'(G), + \+functor(E,F,G), + 'chr unlock'(E), + 'chr unlock'(F), + 'chr unlock'(G), + !, + ( var(C) -> + true + ; + C=suspension(_,T,_,_,U,V), + setarg(2,C,removed), + ( T==not_stored_yet -> + O=[] + ; + term_variables(term(U,V),O), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O,C) + ) + ) + ). +'known/1_1_$special_;/2___2__2'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(B,A) + ; + true + ). +'known/1_1_$special_nonvar/1'(A) :- + 'known/1_1_$special_nonvar/1___1__0'(A,_). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(H,B) + ) + ). +'known/1_1_$special_nonvar/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(D,A) + ) + ). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=nonvar(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_nonvar/1___1__0__0__7'(C,A,B). +'known/1_1_$special_nonvar/1___1__0__0__7'([],B,A) :- + 'known/1_1_$special_nonvar/1___1__1'(B,A). +'known/1_1_$special_nonvar/1___1__0__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=nonvar(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_nonvar/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_nonvar/1___1__0__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_nonvar/1___1__0__0__7'(H,A,B) + ). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_nonvar/1___1__1'(A,B). +'known/1_1_$special_nonvar/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_nonvar/1___1__1__0__8'(C,A,B). +'known/1_1_$special_nonvar/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_nonvar/1___1__2'(B,A). +'known/1_1_$special_nonvar/1___1__1__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=nonvar(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_nonvar/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_nonvar/1___1__1__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_nonvar/1___1__1__0__8'(I,A,B) + ). +'known/1_1_$special_nonvar/1___1__1'(A,B) :- + 'known/1_1_$special_nonvar/1___1__2'(A,B). +'known/1_1_$special_nonvar/1___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$special_nonvar/1___1'(B,A) + ; + true + ). +'known/1_1_$special_var/1'(A) :- + 'known/1_1_$special_var/1___1__0'(A,_). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(H,B) + ) + ). +'known/1_1_$special_var/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(D,A) + ) + ). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=var(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_var/1___1__0__0__7'(C,A,B). +'known/1_1_$special_var/1___1__0__0__7'([],B,A) :- + 'known/1_1_$special_var/1___1__1'(B,A). +'known/1_1_$special_var/1___1__0__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=var(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_var/1___1__0__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_var/1___1__0__0__7'(H,A,B) + ). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_var/1___1__1'(A,B). +'known/1_1_$special_var/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_var/1___1__1__0__8'(C,A,B). +'known/1_1_$special_var/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_var/1___1__2'(B,A). +'known/1_1_$special_var/1___1__1__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=var(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_var/1___1__1__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_var/1___1__1__0__8'(I,A,B) + ). +'known/1_1_$special_var/1___1__1'(A,B) :- + 'known/1_1_$special_var/1___1__2'(A,B). +'known/1_1_$special_var/1___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(B,A) + ; + true + ). +'known/1_1_$special_atom/1'(A) :- + 'known/1_1_$special_atom/1___1__0'(A,_). +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(H,B) + ) + ). +'known/1_1_$special_atom/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(D,A) + ) + ). +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=atom(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,239), + !, + '$extend_history'(B,239), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__1'(A,B) + ). +'known/1_1_$special_atom/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atom/1___1__1__0__7'(C,A,B). +'known/1_1_$special_atom/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_atom/1___1__2'(B,A). +'known/1_1_$special_atom/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=atom(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_atom/1___1__1'(A,B) :- + 'known/1_1_$special_atom/1___1__2'(A,B). +'known/1_1_$special_atom/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atom/1___1__2__0__8'(C,A,B). +'known/1_1_$special_atom/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_atom/1___1__3'(B,A). +'known/1_1_$special_atom/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=atom(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_atom/1___1__2'(A,B) :- + 'known/1_1_$special_atom/1___1__3'(A,B). +'known/1_1_$special_atom/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(B,A) + ; + true + ). +'known/1_1_$special_atomic/1'(A) :- + 'known/1_1_$special_atomic/1___1__0'(A,_). +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(H,B) + ) + ). +'known/1_1_$special_atomic/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(D,A) + ) + ). +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=atomic(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,237), + !, + '$extend_history'(B,237), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__1'(A,B) + ). +'known/1_1_$special_atomic/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atomic/1___1__1__0__7'(C,A,B). +'known/1_1_$special_atomic/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_atomic/1___1__2'(B,A). +'known/1_1_$special_atomic/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=atomic(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_atomic/1___1__1'(A,B) :- + 'known/1_1_$special_atomic/1___1__2'(A,B). +'known/1_1_$special_atomic/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atomic/1___1__2__0__8'(C,A,B). +'known/1_1_$special_atomic/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_atomic/1___1__3'(B,A). +'known/1_1_$special_atomic/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=atomic(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_atomic/1___1__2'(A,B) :- + 'known/1_1_$special_atomic/1___1__3'(A,B). +'known/1_1_$special_atomic/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(B,A) + ; + true + ). +'known/1_1_$special_compound/1'(A) :- + 'known/1_1_$special_compound/1___1__0'(A,_). +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(H,B) + ) + ). +'known/1_1_$special_compound/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(D,A) + ) + ). +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=compound(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,236), + !, + '$extend_history'(B,236), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__1'(A,B) + ). +'known/1_1_$special_compound/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_compound/1___1__1__0__7'(C,A,B). +'known/1_1_$special_compound/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_compound/1___1__2'(B,A). +'known/1_1_$special_compound/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=compound(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_compound/1___1__1'(A,B) :- + 'known/1_1_$special_compound/1___1__2'(A,B). +'known/1_1_$special_compound/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_compound/1___1__2__0__8'(C,A,B). +'known/1_1_$special_compound/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_compound/1___1__3'(B,A). +'known/1_1_$special_compound/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=compound(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_compound/1___1__2'(A,B) :- + 'known/1_1_$special_compound/1___1__3'(A,B). +'known/1_1_$special_compound/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(B,A) + ; + true + ). +'known/1_1_$special_ground/1'(A) :- + 'known/1_1_$special_ground/1___1__0'(A,_). +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(H,B) + ) + ). +'known/1_1_$special_ground/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(D,A) + ) + ). +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=ground(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,235), + !, + '$extend_history'(B,235), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__1'(A,B) + ). +'known/1_1_$special_ground/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_ground/1___1__1__0__7'(C,A,B). +'known/1_1_$special_ground/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_ground/1___1__2'(B,A). +'known/1_1_$special_ground/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=ground(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_ground/1___1__1'(A,B) :- + 'known/1_1_$special_ground/1___1__2'(A,B). +'known/1_1_$special_ground/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_ground/1___1__2__0__8'(C,A,B). +'known/1_1_$special_ground/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_ground/1___1__3'(B,A). +'known/1_1_$special_ground/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=ground(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_ground/1___1__2'(A,B) :- + 'known/1_1_$special_ground/1___1__3'(A,B). +'known/1_1_$special_ground/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(B,A) + ; + true + ). +'known/1_1_$special_integer/1'(A) :- + 'known/1_1_$special_integer/1___1__0'(A,_). +'known/1_1_$special_integer/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(H,B) + ) + ). +'known/1_1_$special_integer/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(D,A) + ) + ). +'known/1_1_$special_integer/1___1__0'(A,B) :- + nonvar(A), + \+integer(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_integer/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,199), + !, + '$extend_history'(B,199), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_number/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__1'(A,B) + ). +'known/1_1_$special_integer/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=integer(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_integer/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_integer/1___1__1__0__8'(C,A,B). +'known/1_1_$special_integer/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_integer/1___1__2'(B,A). +'known/1_1_$special_integer/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=integer(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_integer/1___1__1'(A,B) :- + 'known/1_1_$special_integer/1___1__2'(A,B). +'known/1_1_$special_integer/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_integer/1___1__2__0__9'(C,A,B). +'known/1_1_$special_integer/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_integer/1___1__3'(B,A). +'known/1_1_$special_integer/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=integer(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_integer/1___1__2'(A,B) :- + 'known/1_1_$special_integer/1___1__3'(A,B). +'known/1_1_$special_integer/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(B,A) + ; + true + ). +'known/1_1_$special_float/1'(A) :- + 'known/1_1_$special_float/1___1__0'(A,_). +'known/1_1_$special_float/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(H,B) + ) + ). +'known/1_1_$special_float/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(D,A) + ) + ). +'known/1_1_$special_float/1___1__0'(A,B) :- + nonvar(A), + \+float(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_float/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,200), + !, + '$extend_history'(B,200), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_number/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__1'(A,B) + ). +'known/1_1_$special_float/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=float(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_float/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_float/1___1__1__0__8'(C,A,B). +'known/1_1_$special_float/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_float/1___1__2'(B,A). +'known/1_1_$special_float/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=float(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_float/1___1__1'(A,B) :- + 'known/1_1_$special_float/1___1__2'(A,B). +'known/1_1_$special_float/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_float/1___1__2__0__9'(C,A,B). +'known/1_1_$special_float/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_float/1___1__3'(B,A). +'known/1_1_$special_float/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=float(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_float/1___1__2'(A,B) :- + 'known/1_1_$special_float/1___1__3'(A,B). +'known/1_1_$special_float/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(B,A) + ; + true + ). +'known/1_1_$special_number/1'(A) :- + 'known/1_1_$special_number/1___1__0'(A,_). +'known/1_1_$special_number/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(H,B) + ) + ). +'known/1_1_$special_number/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(D,A) + ) + ). +'known/1_1_$special_number/1___1__0'(A,B) :- + nonvar(A), + \+number(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_number/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=number(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_number/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,238), + !, + '$extend_history'(B,238), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__1'(A,B) + ). +'known/1_1_$special_number/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_number/1___1__1__0__8'(C,A,B). +'known/1_1_$special_number/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_number/1___1__2'(B,A). +'known/1_1_$special_number/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=number(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_number/1___1__1'(A,B) :- + 'known/1_1_$special_number/1___1__2'(A,B). +'known/1_1_$special_number/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_number/1___1__2__0__9'(C,A,B). +'known/1_1_$special_number/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_number/1___1__3'(B,A). +'known/1_1_$special_number/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=number(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_number/1___1__2'(A,B) :- + 'known/1_1_$special_number/1___1__3'(A,B). +'known/1_1_$special_number/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(B,A) + ; + true + ). +'known/1_1_$special_=\\=/2'(A,B) :- + 'known/1_1_$special_=\\=/2___2__0'(A,B,_). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(J,C) + ) + ). +'known/1_1_$special_=\\=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,A) + ) + ). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=\\=/2___2__0__0__5'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__0__0__5'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__1'(B,C,A). +'known/1_1_$special_=\\=/2___2__0__0__5'([F|J],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + ( 'chr newvia_2'(C,E,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__0__1__5'(G,E,F,J,B,C,A) + ; + 'known/1_1_$special_=\\=/2___2__0__0__5'(J,B,C,A) + ). +'known/1_1_$special_=\\=/2___2__0__1__5'([],_,_,A,C,D,B) :- + 'known/1_1_$special_=\\=/2___2__0__0__5'(A,C,D,B). +'known/1_1_$special_=\\=/2___2__0__1__5'([I|M],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,_,G,H), + G==E, + H==F, + ( 'chr newvia_2'(D,E,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,J,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__0__2__5'(J,I,M,F,A,B,D,E,C) + ; + 'known/1_1_$special_=\\=/2___2__0__1__5'(M,F,A,B,D,E,C) + ). +'known/1_1_$special_=\\=/2___2__0__2__5'([],_,A,G,B,C,E,F,D) :- + 'known/1_1_$special_=\\=/2___2__0__1__5'(A,G,B,C,E,F,D). +'known/1_1_$special_=\\=/2___2__0__2__5'([K|L],A,B,H,C,D,F,G,E) :- + ( K=suspension(_,active,_,_,_,I,J), + K\==A, + I==F, + J==G, + O=t(188,K,E,A,C), + '$novel_production'(K,O), + '$novel_production'(E,O), + '$novel_production'(A,O), + '$novel_production'(C,O) -> + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + U=[E|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( T=[V|_] -> + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,E) + ; + true + ), + 'known/1_1_$special_=\\=/2'(F,H), + ( E=suspension(_,active,_,N,_,_,_) -> + setarg(2,E,inactive), + 'known/1_1_$special_=\\=/2___2__0__2__5'(L,A,B,H,C,D,F,G,E) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__0__2__5'(L,A,B,H,C,D,F,G,E) + ). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=\\=/2___2__1'(A,B,C). +'known/1_1_$special_=\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__1__1__6'(G,D,F,J,B,C,A) + ; + 'known/1_1_$special_=\\=/2___2__1__0__6'(J,B,C,A) + ). +'known/1_1_$special_=\\=/2___2__1__1__6'([],_,_,A,C,D,B) :- + 'known/1_1_$special_=\\=/2___2__1__0__6'(A,C,D,B). +'known/1_1_$special_=\\=/2___2__1__1__6'([I|M],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,_,G,H), + I\==A, + G==D, + H==E, + ( 'chr newvia_2'(F,D,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_=\\=/2___2__1__2__6'(J,I,M,F,A,B,D,E,C) + ; + 'known/1_1_$special_=\\=/2___2__1__1__6'(M,F,A,B,D,E,C) + ). +'known/1_1_$special_=\\=/2___2__1__2__6'([],_,A,G,B,C,E,F,D) :- + 'known/1_1_$special_=\\=/2___2__1__1__6'(A,G,B,C,E,F,D). +'known/1_1_$special_=\\=/2___2__1__2__6'([K|L],A,B,H,C,D,F,G,E) :- + ( K=suspension(_,active,_,_,_,I,J), + I==H, + J==F, + O=t(188,C,K,A,E), + '$novel_production'(C,O), + '$novel_production'(K,O), + '$novel_production'(A,O), + '$novel_production'(E,O) -> + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + U=[E|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( T=[V|_] -> + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,E) + ; + true + ), + 'known/1_1_$special_=\\=/2'(H,G), + ( E=suspension(_,active,_,N,_,_,_) -> + setarg(2,E,inactive), + 'known/1_1_$special_=\\=/2___2__1__2__6'(L,A,B,H,C,D,F,G,E) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__1__2__6'(L,A,B,H,C,D,F,G,E) + ). +'known/1_1_$special_=\\=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__2'(A,B,C). +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + number(B), + number(A), + A=:=B, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + '$novel_production'(C,195), + !, + '$extend_history'(C,195), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__3'(A,B,C) + ; + true + ). +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__3'(A,B,C). +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=\=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=\\=/2___2__3__0__12'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__3__0__12'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__4'(B,C,A). +'known/1_1_$special_=\\=/2___2__3__0__12'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=\=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__3__0__12'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__3__0__12'(J,A,B,C) + ). +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__4'(A,B,C). +'known/1_1_$special_=\\=/2___2__4'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=\\=/2___2__4__0__13'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__4__0__13'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__5'(B,C,A). +'known/1_1_$special_=\\=/2___2__4__0__13'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=\=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__4__0__13'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__4__0__13'(K,A,B,C) + ). +'known/1_1_$special_=\\=/2___2__4'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__5'(A,B,C). +'known/1_1_$special_=\\=/2___2__5'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_\\+/1'(A) :- + 'known/1_1_$special_\\+/1___1__0'(A,_). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(H,B) + ) + ). +'known/1_1_$special_\\+/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D,A) + ) + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + nonvar(A), + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + A=functor(C,D,E), + nonvar(C), + 'chr lock'(C), + 'chr lock'(D), + 'chr lock'(E), + functor(C,D,E), + 'chr unlock'(C), + 'chr unlock'(D), + 'chr unlock'(E), + !, + ( var(B) -> + true + ; + B=suspension(_,R8,_,_,S8), + setarg(2,B,removed), + ( R8==not_stored_yet -> + F=[] + ; + term_variables(S8,F), + arg(4,B,N8), + ( var(N8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O8), + O8=[_|P8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P8), + ( P8=[Q8|_] -> + setarg(4,Q8,_) + ; + true + ) + ; + N8=[_,_|P8], + setarg(2,N8,P8), + ( P8=[Q8|_] -> + setarg(4,Q8,N8) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F,B) + ) + ), + 'known/1_1_$special_fail/0' + ; + A=(G;H), + ( 'chr newvia_2'(G,H,M) -> + get_attr(M,guard_entailment,N), + N=v(_,_,_,L,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L) + ), + 'chr sbag_member'(I,L), + I=suspension(_,active,_,_,J,K), + J==G, + K==H, + !, + I=suspension(_,_,_,_,L8,M8), + setarg(2,I,removed), + term_variables(term(L8,M8),O), + arg(4,I,H8), + ( var(H8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I8), + I8=[_|J8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J8), + ( J8=[K8|_] -> + setarg(4,K8,_) + ; + true + ) + ; + H8=[_,_|J8], + setarg(2,H8,J8), + ( J8=[K8|_] -> + setarg(4,K8,H8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O,I), + ( var(B) -> + true + ; + B=suspension(_,F8,_,_,G8), + setarg(2,B,removed), + ( F8==not_stored_yet -> + P=[] + ; + term_variables(G8,P), + arg(4,B,B8), + ( var(B8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C8), + C8=[_|D8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D8), + ( D8=[E8|_] -> + setarg(4,E8,_) + ; + true + ) + ; + B8=[_,_|D8], + setarg(2,B8,D8), + ( D8=[E8|_] -> + setarg(4,E8,B8) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(P,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=nonvar(Q), + ( 'chr newvia_1'(Q,U) -> + get_attr(U,guard_entailment,V), + V=v(_,_,_,_,T,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',T) + ), + 'chr sbag_member'(R,T), + R=suspension(_,active,_,_,S), + S==Q, + !, + R=suspension(_,_,_,_,A8), + setarg(2,R,removed), + term_variables(A8,W), + arg(4,R,W7), + ( var(W7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',X7), + X7=[_|Y7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,_) + ; + true + ) + ; + W7=[_,_|Y7], + setarg(2,W7,Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,W7) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(W,R), + ( var(B) -> + true + ; + B=suspension(_,U7,_,_,V7), + setarg(2,B,removed), + ( U7==not_stored_yet -> + X=[] + ; + term_variables(V7,X), + arg(4,B,Q7), + ( var(Q7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R7), + R7=[_|S7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S7), + ( S7=[T7|_] -> + setarg(4,T7,_) + ; + true + ) + ; + Q7=[_,_|S7], + setarg(2,Q7,S7), + ( S7=[T7|_] -> + setarg(4,T7,Q7) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(X,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=var(Y), + ( 'chr newvia_1'(Y,C1) -> + get_attr(C1,guard_entailment,D1), + D1=v(_,_,_,_,_,B1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',B1) + ), + 'chr sbag_member'(Z,B1), + Z=suspension(_,active,_,_,A1), + A1==Y, + !, + Z=suspension(_,_,_,_,P7), + setarg(2,Z,removed), + term_variables(P7,E1), + arg(4,Z,L7), + ( var(L7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',M7), + M7=[_|N7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',N7), + ( N7=[O7|_] -> + setarg(4,O7,_) + ; + true + ) + ; + L7=[_,_|N7], + setarg(2,L7,N7), + ( N7=[O7|_] -> + setarg(4,O7,L7) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(E1,Z), + ( var(B) -> + true + ; + B=suspension(_,J7,_,_,K7), + setarg(2,B,removed), + ( J7==not_stored_yet -> + F1=[] + ; + term_variables(K7,F1), + arg(4,B,F7), + ( var(F7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G7), + G7=[_|H7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H7), + ( H7=[I7|_] -> + setarg(4,I7,_) + ; + true + ) + ; + F7=[_,_|H7], + setarg(2,F7,H7), + ( H7=[I7|_] -> + setarg(4,I7,F7) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=atom(G1), + ( 'chr newvia_1'(G1,K1) -> + get_attr(K1,guard_entailment,L1), + L1=v(_,_,_,_,_,_,J1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J1) + ), + 'chr sbag_member'(H1,J1), + H1=suspension(_,active,_,_,_,I1), + I1==G1, + !, + H1=suspension(_,_,_,_,_,E7), + setarg(2,H1,removed), + term_variables(E7,M1), + arg(5,H1,A7), + ( var(A7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',B7), + B7=[_|C7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',C7), + ( C7=[D7|_] -> + setarg(5,D7,_) + ; + true + ) + ; + A7=[_,_|C7], + setarg(2,A7,C7), + ( C7=[D7|_] -> + setarg(5,D7,A7) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(M1,H1), + ( var(B) -> + true + ; + B=suspension(_,Y6,_,_,Z6), + setarg(2,B,removed), + ( Y6==not_stored_yet -> + N1=[] + ; + term_variables(Z6,N1), + arg(4,B,U6), + ( var(U6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V6), + V6=[_|W6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',W6), + ( W6=[X6|_] -> + setarg(4,X6,_) + ; + true + ) + ; + U6=[_,_|W6], + setarg(2,U6,W6), + ( W6=[X6|_] -> + setarg(4,X6,U6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(N1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=atomic(O1), + ( 'chr newvia_1'(O1,S1) -> + get_attr(S1,guard_entailment,T1), + T1=v(_,_,_,_,_,_,_,R1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',R1) + ), + 'chr sbag_member'(P1,R1), + P1=suspension(_,active,_,_,_,Q1), + Q1==O1, + !, + P1=suspension(_,_,_,_,_,T6), + setarg(2,P1,removed), + term_variables(T6,U1), + arg(5,P1,P6), + ( var(P6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',Q6), + Q6=[_|R6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',R6), + ( R6=[S6|_] -> + setarg(5,S6,_) + ; + true + ) + ; + P6=[_,_|R6], + setarg(2,P6,R6), + ( R6=[S6|_] -> + setarg(5,S6,P6) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(U1,P1), + ( var(B) -> + true + ; + B=suspension(_,N6,_,_,O6), + setarg(2,B,removed), + ( N6==not_stored_yet -> + V1=[] + ; + term_variables(O6,V1), + arg(4,B,J6), + ( var(J6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K6), + K6=[_|L6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L6), + ( L6=[M6|_] -> + setarg(4,M6,_) + ; + true + ) + ; + J6=[_,_|L6], + setarg(2,J6,L6), + ( L6=[M6|_] -> + setarg(4,M6,J6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(V1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=compound(W1), + ( 'chr newvia_1'(W1,A2) -> + get_attr(A2,guard_entailment,B2), + B2=v(_,_,_,_,_,_,_,_,Z1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',Z1) + ), + 'chr sbag_member'(X1,Z1), + X1=suspension(_,active,_,_,_,Y1), + Y1==W1, + !, + X1=suspension(_,_,_,_,_,I6), + setarg(2,X1,removed), + term_variables(I6,C2), + arg(5,X1,E6), + ( var(E6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F6), + F6=[_|G6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G6), + ( G6=[H6|_] -> + setarg(5,H6,_) + ; + true + ) + ; + E6=[_,_|G6], + setarg(2,E6,G6), + ( G6=[H6|_] -> + setarg(5,H6,E6) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C2,X1), + ( var(B) -> + true + ; + B=suspension(_,C6,_,_,D6), + setarg(2,B,removed), + ( C6==not_stored_yet -> + D2=[] + ; + term_variables(D6,D2), + arg(4,B,Y5), + ( var(Y5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Z5), + Z5=[_|A6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A6), + ( A6=[B6|_] -> + setarg(4,B6,_) + ; + true + ) + ; + Y5=[_,_|A6], + setarg(2,Y5,A6), + ( A6=[B6|_] -> + setarg(4,B6,Y5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=ground(E2), + ( 'chr newvia_1'(E2,I2) -> + get_attr(I2,guard_entailment,J2), + J2=v(_,_,_,_,_,_,_,_,_,H2,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',H2) + ), + 'chr sbag_member'(F2,H2), + F2=suspension(_,active,_,_,_,G2), + G2==E2, + !, + F2=suspension(_,_,_,_,_,X5), + setarg(2,F2,removed), + term_variables(X5,K2), + arg(5,F2,T5), + ( var(T5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',U5), + U5=[_|V5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',V5), + ( V5=[W5|_] -> + setarg(5,W5,_) + ; + true + ) + ; + T5=[_,_|V5], + setarg(2,T5,V5), + ( V5=[W5|_] -> + setarg(5,W5,T5) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(K2,F2), + ( var(B) -> + true + ; + B=suspension(_,R5,_,_,S5), + setarg(2,B,removed), + ( R5==not_stored_yet -> + L2=[] + ; + term_variables(S5,L2), + arg(4,B,N5), + ( var(N5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O5), + O5=[_|P5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P5), + ( P5=[Q5|_] -> + setarg(4,Q5,_) + ; + true + ) + ; + N5=[_,_|P5], + setarg(2,N5,P5), + ( P5=[Q5|_] -> + setarg(4,Q5,N5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(L2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=integer(M2), + ( 'chr newvia_1'(M2,Q2) -> + get_attr(Q2,guard_entailment,R2), + R2=v(_,_,_,_,_,_,_,_,_,_,P2,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P2) + ), + 'chr sbag_member'(N2,P2), + N2=suspension(_,active,_,_,_,O2), + O2==M2, + !, + N2=suspension(_,_,_,_,_,M5), + setarg(2,N2,removed), + term_variables(M5,S2), + arg(5,N2,I5), + ( var(I5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J5), + J5=[_|K5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',K5), + ( K5=[L5|_] -> + setarg(5,L5,_) + ; + true + ) + ; + I5=[_,_|K5], + setarg(2,I5,K5), + ( K5=[L5|_] -> + setarg(5,L5,I5) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(S2,N2), + ( var(B) -> + true + ; + B=suspension(_,G5,_,_,H5), + setarg(2,B,removed), + ( G5==not_stored_yet -> + T2=[] + ; + term_variables(H5,T2), + arg(4,B,C5), + ( var(C5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D5), + D5=[_|E5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E5), + ( E5=[F5|_] -> + setarg(4,F5,_) + ; + true + ) + ; + C5=[_,_|E5], + setarg(2,C5,E5), + ( E5=[F5|_] -> + setarg(4,F5,C5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=float(U2), + ( 'chr newvia_1'(U2,Y2) -> + get_attr(Y2,guard_entailment,Z2), + Z2=v(_,_,_,_,_,_,_,_,_,_,_,X2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',X2) + ), + 'chr sbag_member'(V2,X2), + V2=suspension(_,active,_,_,_,W2), + W2==U2, + !, + V2=suspension(_,_,_,_,_,B5), + setarg(2,V2,removed), + term_variables(B5,A3), + arg(5,V2,X4), + ( var(X4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Y4), + Y4=[_|Z4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Z4), + ( Z4=[A5|_] -> + setarg(5,A5,_) + ; + true + ) + ; + X4=[_,_|Z4], + setarg(2,X4,Z4), + ( Z4=[A5|_] -> + setarg(5,A5,X4) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(A3,V2), + ( var(B) -> + true + ; + B=suspension(_,V4,_,_,W4), + setarg(2,B,removed), + ( V4==not_stored_yet -> + B3=[] + ; + term_variables(W4,B3), + arg(4,B,R4), + ( var(R4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S4), + S4=[_|T4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',T4), + ( T4=[U4|_] -> + setarg(4,U4,_) + ; + true + ) + ; + R4=[_,_|T4], + setarg(2,R4,T4), + ( T4=[U4|_] -> + setarg(4,U4,R4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(B3,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=number(C3), + ( 'chr newvia_1'(C3,G3) -> + get_attr(G3,guard_entailment,H3), + H3=v(_,_,_,_,_,_,_,_,_,_,_,_,F3,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F3) + ), + 'chr sbag_member'(D3,F3), + D3=suspension(_,active,_,_,_,E3), + E3==C3, + !, + D3=suspension(_,_,_,_,_,Q4), + setarg(2,D3,removed), + term_variables(Q4,I3), + arg(5,D3,M4), + ( var(M4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',N4), + N4=[_|O4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',O4), + ( O4=[P4|_] -> + setarg(5,P4,_) + ; + true + ) + ; + M4=[_,_|O4], + setarg(2,M4,O4), + ( O4=[P4|_] -> + setarg(5,P4,M4) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(I3,D3), + ( var(B) -> + true + ; + B=suspension(_,K4,_,_,L4), + setarg(2,B,removed), + ( K4==not_stored_yet -> + J3=[] + ; + term_variables(L4,J3), + arg(4,B,G4), + ( var(G4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H4), + H4=[_|I4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',I4), + ( I4=[J4|_] -> + setarg(4,J4,_) + ; + true + ) + ; + G4=[_,_|I4], + setarg(2,G4,I4), + ( I4=[J4|_] -> + setarg(4,J4,G4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J3,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(K3=\=L3), + ( 'chr newvia_2'(K3,L3,Q3) -> + get_attr(Q3,guard_entailment,R3), + R3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,P3,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',P3) + ), + 'chr sbag_member'(M3,P3), + M3=suspension(_,active,_,_,_,N3,O3), + N3==K3, + O3==L3, + !, + M3=suspension(_,_,_,_,_,E4,F4), + setarg(2,M3,removed), + term_variables(term(E4,F4),S3), + arg(5,M3,A4), + ( var(A4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',B4), + B4=[_|C4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',C4), + ( C4=[D4|_] -> + setarg(5,D4,_) + ; + true + ) + ; + A4=[_,_|C4], + setarg(2,A4,C4), + ( C4=[D4|_] -> + setarg(5,D4,A4) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(S3,M3), + ( var(B) -> + true + ; + B=suspension(_,Y3,_,_,Z3), + setarg(2,B,removed), + ( Y3==not_stored_yet -> + T3=[] + ; + term_variables(Z3,T3), + arg(4,B,U3), + ( var(U3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V3), + V3=[_|W3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',W3), + ( W3=[X3|_] -> + setarg(4,X3,_) + ; + true + ) + ; + U3=[_,_|W3], + setarg(2,U3,W3), + ( W3=[X3|_] -> + setarg(4,X3,U3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T3,B) + ) + ), + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=(\+H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\+/1___1__0'(A,B) :- + nonvar(A), + ( + ( + ( + ( + ( + ( + ( + A=(\+C), + ( 'chr newvia_1'(C,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E==C, + !, + D=suspension(_,_,_,_,V6), + setarg(2,D,removed), + term_variables(V6,I), + arg(4,D,R6), + ( var(R6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S6), + S6=[_|T6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',T6), + ( T6=[U6|_] -> + setarg(4,U6,_) + ; + true + ) + ; + R6=[_,_|T6], + setarg(2,R6,T6), + ( T6=[U6|_] -> + setarg(4,U6,R6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,D), + ( var(B) -> + true + ; + B=suspension(_,P6,_,_,Q6), + setarg(2,B,removed), + ( P6==not_stored_yet -> + J=[] + ; + term_variables(Q6,J), + arg(4,B,L6), + ( var(L6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M6), + M6=[_|N6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N6), + ( N6=[O6|_] -> + setarg(4,O6,_) + ; + true + ) + ; + L6=[_,_|N6], + setarg(2,L6,N6), + ( N6=[O6|_] -> + setarg(4,O6,L6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0' + ; + A=functor(K,L,M), + ( 'chr newvia'([K,L,M],S) -> + get_attr(S,guard_entailment,T), + T=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,R,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',R) + ), + 'chr sbag_member'(N,R), + N=suspension(_,active,_,_,O,P,Q), + O==K, + P==L, + Q==M, + !, + N=suspension(_,_,_,_,I6,J6,K6), + setarg(2,N,removed), + term_variables(term(I6,J6,K6),U), + arg(4,N,E6), + ( var(E6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F6), + F6=[_|G6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G6), + ( G6=[H6|_] -> + setarg(4,H6,_) + ; + true + ) + ; + E6=[_,_|G6], + setarg(2,E6,G6), + ( G6=[H6|_] -> + setarg(4,H6,E6) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(U,N), + ( var(B) -> + true + ; + B=suspension(_,C6,_,_,D6), + setarg(2,B,removed), + ( C6==not_stored_yet -> + V=[] + ; + term_variables(D6,V), + arg(4,B,Y5), + ( var(Y5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Z5), + Z5=[_|A6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A6), + ( A6=[B6|_] -> + setarg(4,B6,_) + ; + true + ) + ; + Y5=[_,_|A6], + setarg(2,Y5,A6), + ( A6=[B6|_] -> + setarg(4,B6,Y5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(V,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(W\=X), + ( 'chr newvia_2'(W,X,C1) -> + get_attr(C1,guard_entailment,D1), + D1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,B1,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',B1) + ), + 'chr sbag_member'(Y,B1), + Y=suspension(_,active,_,_,_,Z,A1), + Z==W, + A1==X, + !, + Y=suspension(_,_,_,_,_,W5,X5), + setarg(2,Y,removed), + term_variables(term(W5,X5),E1), + arg(5,Y,S5), + ( var(S5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T5), + T5=[_|U5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',U5), + ( U5=[V5|_] -> + setarg(5,V5,_) + ; + true + ) + ; + S5=[_,_|U5], + setarg(2,S5,U5), + ( U5=[V5|_] -> + setarg(5,V5,S5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(E1,Y), + ( var(B) -> + true + ; + B=suspension(_,Q5,_,_,R5), + setarg(2,B,removed), + ( Q5==not_stored_yet -> + F1=[] + ; + term_variables(R5,F1), + arg(4,B,M5), + ( var(M5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N5), + N5=[_|O5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O5), + ( O5=[P5|_] -> + setarg(4,P5,_) + ; + true + ) + ; + M5=[_,_|O5], + setarg(2,M5,O5), + ( O5=[P5|_] -> + setarg(4,P5,M5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(G1=H1), + ( 'chr newvia_2'(G1,H1,M1) -> + get_attr(M1,guard_entailment,N1), + N1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,L1,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',L1) + ), + 'chr sbag_member'(I1,L1), + I1=suspension(_,active,_,_,J1,K1), + J1==G1, + K1==H1, + !, + I1=suspension(_,_,_,_,K5,L5), + setarg(2,I1,removed), + term_variables(term(K5,L5),O1), + arg(4,I1,G5), + ( var(G5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H5), + H5=[_|I5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I5), + ( I5=[J5|_] -> + setarg(4,J5,_) + ; + true + ) + ; + G5=[_,_|I5], + setarg(2,G5,I5), + ( I5=[J5|_] -> + setarg(4,J5,G5) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(O1,I1), + ( var(B) -> + true + ; + B=suspension(_,E5,_,_,F5), + setarg(2,B,removed), + ( E5==not_stored_yet -> + P1=[] + ; + term_variables(F5,P1), + arg(4,B,A5), + ( var(A5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',B5), + B5=[_|C5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C5), + ( C5=[D5|_] -> + setarg(4,D5,_) + ; + true + ) + ; + A5=[_,_|C5], + setarg(2,A5,C5), + ( C5=[D5|_] -> + setarg(4,D5,A5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(P1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(Q1\==R1), + ( 'chr newvia_2'(Q1,R1,W1) -> + get_attr(W1,guard_entailment,X1), + X1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,V1,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',V1) + ), + 'chr sbag_member'(S1,V1), + S1=suspension(_,active,_,_,_,T1,U1), + T1==Q1, + U1==R1, + !, + S1=suspension(_,_,_,_,_,Y4,Z4), + setarg(2,S1,removed), + term_variables(term(Y4,Z4),Y1), + arg(5,S1,U4), + ( var(U4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',V4), + V4=[_|W4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',W4), + ( W4=[X4|_] -> + setarg(5,X4,_) + ; + true + ) + ; + U4=[_,_|W4], + setarg(2,U4,W4), + ( W4=[X4|_] -> + setarg(5,X4,U4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(Y1,S1), + ( var(B) -> + true + ; + B=suspension(_,S4,_,_,T4), + setarg(2,B,removed), + ( S4==not_stored_yet -> + Z1=[] + ; + term_variables(T4,Z1), + arg(4,B,O4), + ( var(O4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P4), + P4=[_|Q4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q4), + ( Q4=[R4|_] -> + setarg(4,R4,_) + ; + true + ) + ; + O4=[_,_|Q4], + setarg(2,O4,Q4), + ( Q4=[R4|_] -> + setarg(4,R4,O4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(Z1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(A2==B2), + ( 'chr newvia_2'(A2,B2,G2) -> + get_attr(G2,guard_entailment,H2), + H2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F2,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F2) + ), + 'chr sbag_member'(C2,F2), + C2=suspension(_,active,_,_,_,D2,E2), + D2==A2, + E2==B2, + !, + C2=suspension(_,_,_,_,_,M4,N4), + setarg(2,C2,removed), + term_variables(term(M4,N4),I2), + arg(5,C2,I4), + ( var(I4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J4), + J4=[_|K4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K4), + ( K4=[L4|_] -> + setarg(5,L4,_) + ; + true + ) + ; + I4=[_,_|K4], + setarg(2,I4,K4), + ( K4=[L4|_] -> + setarg(5,L4,I4) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(I2,C2), + ( var(B) -> + true + ; + B=suspension(_,G4,_,_,H4), + setarg(2,B,removed), + ( G4==not_stored_yet -> + J2=[] + ; + term_variables(H4,J2), + arg(4,B,C4), + ( var(C4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D4), + D4=[_|E4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E4), + ( E4=[F4|_] -> + setarg(4,F4,_) + ; + true + ) + ; + C4=[_,_|E4], + setarg(2,C4,E4), + ( E4=[F4|_] -> + setarg(4,F4,C4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(K2= + get_attr(Q2,guard_entailment,R2), + R2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,P2,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Z3,_) + ; + true + ) + ; + W3=[_,_|Y3], + setarg(2,W3,Y3), + ( Y3=[Z3|_] -> + setarg(5,Z3,W3) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + B=suspension(_,U3,_,_,V3), + setarg(2,B,removed), + ( U3==not_stored_yet -> + T2=[] + ; + term_variables(V3,T2), + arg(4,B,Q3), + ( var(Q3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R3), + R3=[_|S3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S3), + ( S3=[T3|_] -> + setarg(4,T3,_) + ; + true + ) + ; + Q3=[_,_|S3], + setarg(2,Q3,S3), + ( S3=[T3|_] -> + setarg(4,T3,Q3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(U2=:=V2), + ( 'chr newvia_2'(U2,V2,A3) -> + get_attr(A3,guard_entailment,B3), + B3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,Z2) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',Z2) + ), + 'chr sbag_member'(W2,Z2), + W2=suspension(_,active,_,_,_,X2,Y2), + X2==U2, + Y2==V2, + !, + W2=suspension(_,_,_,_,_,O3,P3), + setarg(2,W2,removed), + term_variables(term(O3,P3),C3), + arg(5,W2,K3), + ( var(K3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',L3), + L3=[_|M3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M3), + ( M3=[N3|_] -> + setarg(5,N3,_) + ; + true + ) + ; + K3=[_,_|M3], + setarg(2,K3,M3), + ( M3=[N3|_] -> + setarg(5,N3,K3) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C3,W2), + ( var(B) -> + true + ; + B=suspension(_,I3,_,_,J3), + setarg(2,B,removed), + ( I3==not_stored_yet -> + D3=[] + ; + term_variables(J3,D3), + arg(4,B,E3), + ( var(E3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F3), + F3=[_|G3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G3), + ( G3=[H3|_] -> + setarg(4,H3,_) + ; + true + ) + ; + E3=[_,_|G3], + setarg(2,E3,G3), + ( G3=[H3|_] -> + setarg(4,H3,E3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D3,B) + ) + ), + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_\\+/1___1__0__0__33'(C,A,B). +'known/1_1_$special_\\+/1___1__0__0__33'([],B,A) :- + 'known/1_1_$special_\\+/1___1__1'(B,A). +'known/1_1_$special_\\+/1___1__0__0__33'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=(\+G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__0__0__33'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__0__0__33'(H,A,B) + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_\\+/1___1__1'(A,B). +'known/1_1_$special_\\+/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__1__0__34'(C,A,B). +'known/1_1_$special_\\+/1___1__1__0__34'([],B,A) :- + 'known/1_1_$special_\\+/1___1__2'(B,A). +'known/1_1_$special_\\+/1___1__1__0__34'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=(\+H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__1__0__34'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__1__0__34'(I,A,B) + ). +'known/1_1_$special_\\+/1___1__1'(A,B) :- + 'known/1_1_$special_\\+/1___1__2'(A,B). +'known/1_1_$special_\\+/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__2__0__35'(C,A,B). +'known/1_1_$special_\\+/1___1__2__0__35'([],B,A) :- + 'known/1_1_$special_\\+/1___1__3'(B,A). +'known/1_1_$special_\\+/1___1__2__0__35'([E|F],A,B) :- + ( E=suspension(_,active,_,_,C,D), + C==A -> + E=suspension(_,_,_,_,T,U), + setarg(2,E,removed), + term_variables(term(T,U),G), + arg(4,E,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,E), + arg(2,B,K), + setarg(2,B,active), + arg(3,B,J), + I is J+1, + setarg(3,B,I), + ( K==not_stored_yet -> + B=suspension(_,_,_,_,L), + term_variables(L,H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M), + N=[B|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(H,B) + ; + true + ), + known(D), + ( B=suspension(_,active,I,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__2__0__35'(F,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__2__0__35'(F,A,B) + ). +'known/1_1_$special_\\+/1___1__2'(A,B) :- + 'known/1_1_$special_\\+/1___1__3'(A,B). +'known/1_1_$special_\\+/1___1__3'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__3__0__36'(C,A,B). +'known/1_1_$special_\\+/1___1__3__0__36'([],B,A) :- + 'known/1_1_$special_\\+/1___1__4'(B,A). +'known/1_1_$special_\\+/1___1__3__0__36'([E|G],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + F==A -> + E=suspension(_,_,_,_,U,V), + setarg(2,E,removed), + term_variables(term(U,V),H), + arg(4,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,E), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + 'chr none_locked'(I), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N), + O=[B|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(I,B) + ; + true + ), + known(D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__3__0__36'(G,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__3__0__36'(G,A,B) + ). +'known/1_1_$special_\\+/1___1__3'(A,B) :- + 'known/1_1_$special_\\+/1___1__4'(A,B). +'known/1_1_$special_\\+/1___1__4'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(B,A) + ; + true + ). +'known/1_1_$special_functor/3'(A,B,C) :- + 'known/1_1_$special_functor/3___3__0'(A,B,C,_). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,I,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,_,F,G,H), + F==A, + G==B, + H==C, + !, + ( var(D) -> + true + ; + D=suspension(_,Q,_,_,R,S,T), + setarg(2,D,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S,T),L), + arg(4,D,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(L,D) + ) + ). +'known/1_1_$special_functor/3___3__0'(_,_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K,L), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K,L),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(D,A) + ) + ). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ground(C), + ground(B), + var(A), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + !, + E=suspension(_,_,_,X), + setarg(2,E,removed), + term_variables(X,J), + arg(3,E,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____variables___1',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_variables___1(J,E), + ( var(D) -> + true + ; + D=suspension(_,P,_,_,Q,R,S), + setarg(2,D,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R,S),K), + arg(4,D,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N), + ( N=[O|_] -> + setarg(4,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(4,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(K,D) + ) + ), + functor(A,B,C), + A=..[_|H], + append(H,F,I), + variables(I). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + nonvar(A), + 'chr lock'(A), + 'chr lock'(B), + 'chr lock'(C), + \+functor(A,B,C), + 'chr unlock'(A), + 'chr unlock'(B), + 'chr unlock'(C), + !, + ( var(D) -> + true + ; + D=suspension(_,J,_,_,K,L,M), + setarg(2,D,removed), + ( J==not_stored_yet -> + E=[] + ; + term_variables(term(K,L,M),E), + arg(4,D,F), + ( var(F) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), + G=[_|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(E,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + nonvar(C), + nonvar(B), + ( 'chr newvia_1'(A,J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,I,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,_,F,G,H), + F==A, + nonvar(H), + nonvar(G), + !, + E=suspension(_,_,_,_,Z,A1,B1), + setarg(2,E,removed), + term_variables(term(Z,A1,B1),L), + arg(4,E,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(L,E), + ( var(D) -> + true + ; + D=suspension(_,R,_,_,S,T,U), + setarg(2,D,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T,U),M), + arg(4,D,N), + ( var(N) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',O), + O=[_|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',P), + ( P=[Q|_] -> + setarg(4,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(4,Q,N) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(M,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G) + ), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + nonvar(F), + F=functor(J,K,L), + J==A, + K==B, + L==C, + !, + E=suspension(_,_,_,_,A1), + setarg(2,E,removed), + term_variables(A1,M), + arg(4,E,W), + ( var(W) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',X), + X=[_|Y], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Y), + ( Y=[Z|_] -> + setarg(4,Z,_) + ; + true + ) + ; + W=[_,_|Y], + setarg(2,W,Y), + ( Y=[Z|_] -> + setarg(4,Z,W) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(M,E), + ( var(D) -> + true + ; + D=suspension(_,S,_,_,T,U,V), + setarg(2,D,removed), + ( S==not_stored_yet -> + N=[] + ; + term_variables(term(T,U,V),N), + arg(4,D,O), + ( var(O) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',P), + P=[_|Q], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',Q), + ( Q=[R|_] -> + setarg(4,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(4,R,O) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(N,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + ( var(D) -> + D=suspension(H,not_stored_yet,0,_,A,B,C), + 'chr gen_id'(H) + ; + true + ), + 'known/1_1_$special_functor/3___3__0__0__10'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__0__0__10'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__1'(B,C,D,A). +'known/1_1_$special_functor/3___3__0__0__10'([G|L],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + nonvar(E), + E=(\+H), + nonvar(H), + H=functor(I,J,K), + I==A, + J==B, + K==C -> + G=suspension(_,_,_,_,B1,C1), + setarg(2,G,removed), + term_variables(term(B1,C1),M), + arg(4,G,X), + ( var(X) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z), + ( Z=[A1|_] -> + setarg(4,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(4,A1,X) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,G), + arg(2,D,Q), + setarg(2,D,active), + arg(3,D,P), + O is P+1, + setarg(3,D,O), + ( Q==not_stored_yet -> + D=suspension(_,_,_,_,R,S,T), + term_variables(term(R,S,T),N), + 'chr none_locked'(N), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',U), + V=[D|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(N,D) + ; + true + ), + known(F), + ( D=suspension(_,active,O,_,_,_,_) -> + setarg(2,D,inactive), + 'known/1_1_$special_functor/3___3__0__0__10'(L,A,B,C,D) + ; + true + ) + ; + 'known/1_1_$special_functor/3___3__0__0__10'(L,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( var(D) -> + D=suspension(E,not_stored_yet,0,_,A,B,C), + 'chr gen_id'(E) + ; + true + ), + 'known/1_1_$special_functor/3___3__1'(A,B,C,D). +'known/1_1_$special_functor/3___3__1'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + 'known/1_1_$special_functor/3___3__1__0__11'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__1__0__11'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__2'(B,C,D,A). +'known/1_1_$special_functor/3___3__1__0__11'([G|M],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + nonvar(E), + E=(H,_), + nonvar(H), + H=(\+I), + nonvar(I), + I=functor(J,K,L), + J==A, + K==B, + L==C -> + G=suspension(_,_,_,_,C1,D1), + setarg(2,G,removed), + term_variables(term(C1,D1),N), + arg(4,G,Y), + ( var(Y) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z), + Z=[_|A1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A1), + ( A1=[B1|_] -> + setarg(4,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(4,B1,Y) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N,G), + arg(2,D,R), + setarg(2,D,active), + arg(3,D,Q), + P is Q+1, + setarg(3,D,P), + ( R==not_stored_yet -> + D=suspension(_,_,_,_,S,T,U), + term_variables(term(S,T,U),O), + 'chr none_locked'(O), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',V), + W=[D|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(O,D) + ; + true + ), + known(F), + ( D=suspension(_,active,P,_,_,_,_) -> + setarg(2,D,inactive), + 'known/1_1_$special_functor/3___3__1__0__11'(M,A,B,C,D) + ; + true + ) + ; + 'known/1_1_$special_functor/3___3__1__0__11'(M,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__1'(A,B,C,D) :- + 'known/1_1_$special_functor/3___3__2'(A,B,C,D). +'known/1_1_$special_functor/3___3__2'(A,B,C,D) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + 'known/1_1_$special_functor/3___3__2__0__12'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__2__0__12'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__3'(B,C,D,A). +'known/1_1_$special_functor/3___3__2__0__12'([F|I],A,B,C,D) :- + ( F=suspension(_,active,_,_,E,_), + nonvar(E), + E=(\+G), + nonvar(G), + G=functor(H,_,_), + H==A -> + F=suspension(_,_,_,_,O,P), + setarg(2,F,removed), + term_variables(term(O,P),J), + arg(4,F,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,F), + 'known/1_1_$special_functor/3___3__2__0__12'(I,A,B,C,D) + ; + 'known/1_1_$special_functor/3___3__2__0__12'(I,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__2'(A,B,C,D) :- + 'known/1_1_$special_functor/3___3__3'(A,B,C,D). +'known/1_1_$special_functor/3___3__3'(_,_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G,H), + term_variables(term(F,G,H),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I), + J=[A|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(B,A) + ; + true + ). +'known/1_1_$special_\\=/2'(A,B) :- + 'known/1_1_$special_\\=/2___2__0'(A,B,_). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(J,C) + ) + ). +'known/1_1_$special_\\=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,A) + ) + ). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ground(B), + ground(A), + 'chr lock'(A), + 'chr lock'(B), + A=B, + 'chr unlock'(A), + 'chr unlock'(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + nonvar(B), + ( + var(A), + 'chr lock'(B), + functor(B,D,E), + E>0, + 'chr unlock'(B), + !, + ( var(C) -> + true + ; + C=suspension(_,C1,_,_,_,D1,E1), + setarg(2,C,removed), + ( C1==not_stored_yet -> + K=[] + ; + term_variables(term(D1,E1),K), + arg(5,C,Y), + ( var(Y) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',Z), + Z=[_|A1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A1), + ( A1=[B1|_] -> + setarg(5,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(5,B1,Y) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(K,C) + ) + ), + length(F,E), + B=..[D|G], + H=..[D|F], + add_args_nunif(G,F,I), + J=(\+functor(A,D,E);A=H,I), + known(J) + ; + nonvar(A), + 'chr lock'(A), + functor(A,L,M), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,V,_,_,_,W,X), + setarg(2,C,removed), + ( V==not_stored_yet -> + Q=[] + ; + term_variables(term(W,X),Q), + arg(5,C,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T), + ( T=[U|_] -> + setarg(5,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(5,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(Q,C) + ) + ), + ( functor(B,L,M) -> + A=..[L|N], + B=..[L|O], + add_args_nunif(N,O,P), + known(P) + ; + true + ) + ). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,182), + !, + '$extend_history'(C,182), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_\\=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__1'(A,B,C) + ). +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I\=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\=/2___2__1__0__11'(D,A,B,C). +'known/1_1_$special_\\=/2___2__1__0__11'([],B,C,A) :- + 'known/1_1_$special_\\=/2___2__2'(B,C,A). +'known/1_1_$special_\\=/2___2__1__0__11'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H\=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__1__0__11'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__1__0__11'(J,A,B,C) + ). +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + 'known/1_1_$special_\\=/2___2__2'(A,B,C). +'known/1_1_$special_\\=/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\=/2___2__2__0__12'(D,A,B,C). +'known/1_1_$special_\\=/2___2__2__0__12'([],B,C,A) :- + 'known/1_1_$special_\\=/2___2__3'(B,C,A). +'known/1_1_$special_\\=/2___2__2__0__12'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I\=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__2__0__12'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__2__0__12'(K,A,B,C) + ). +'known/1_1_$special_\\=/2___2__2'(A,B,C) :- + 'known/1_1_$special_\\=/2___2__3'(A,B,C). +'known/1_1_$special_\\=/2___2__3'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_=/2___2__0'(A,B,_). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(J,C) + ) + ). +'known/1_1_$special_=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,A) + ) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ), + A=B. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + var(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ), + A=B. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + 'chr lock'(A), + functor(A,D,E), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,K,_,_,L,M), + setarg(2,C,removed), + ( K==not_stored_yet -> + F=[] + ; + term_variables(term(L,M),F), + arg(4,C,G), + ( var(G) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H), + H=[_|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(F,C) + ) + ), + ( functor(B,D,E), + A=B -> + true + ; + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(4,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=/2___2__0__0__10'(D,A,B,C). +'known/1_1_$special_=/2___2__0__0__10'([],B,C,A) :- + 'known/1_1_$special_=/2___2__1'(B,C,A). +'known/1_1_$special_=/2___2__0__0__10'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(3,C,N), + M is N+1, + setarg(3,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=/2___2__0__0__10'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=/2___2__0__0__10'(J,A,B,C) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=/2___2__1'(A,B,C). +'known/1_1_$special_=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=/2___2__1__0__11'(D,A,B,C). +'known/1_1_$special_=/2___2__1__0__11'([],B,C,A) :- + 'known/1_1_$special_=/2___2__2'(B,C,A). +'known/1_1_$special_=/2___2__1__0__11'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(3,C,O), + N is O+1, + setarg(3,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=/2___2__1__0__11'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=/2___2__1__0__11'(K,A,B,C) + ). +'known/1_1_$special_=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=/2___2__2'(A,B,C). +'known/1_1_$special_=/2___2__2'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_,/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'known/1_1_$special_,/2'(A,B) :- + known(A), + known(B). +'known/1_1_$special_\\==/2'(A,B) :- + 'known/1_1_$special_\\==/2___2__0'(A,B,_). +'known/1_1_$special_\\==/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(J,C) + ) + ). +'known/1_1_$special_\\==/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,138), + number(A), + !, + '$extend_history'(C,138), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__1'(A,B,C) + ). +'known/1_1_$special_\\==/2___2__1'(A,B,C) :- + '$novel_production'(C,139), + number(B), + !, + '$extend_history'(C,139), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__2'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__1'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__2'(A,B,C). +'known/1_1_$special_\\==/2___2__2'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(D,A) + ) + ). +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I\==J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__2__0__9'(D,A,B,C). +'known/1_1_$special_\\==/2___2__2__0__9'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__3'(B,C,A). +'known/1_1_$special_\\==/2___2__2__0__9'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(229,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_\\==/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_\\==/2___2__2__0__9'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__2__0__9'(G,B,C,A) + ). +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__3'(A,B,C). +'known/1_1_$special_\\==/2___2__3'(A,B,C) :- + '$novel_production'(C,231), + !, + '$extend_history'(C,231), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_\\==/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__4'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__3'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__4'(A,B,C). +'known/1_1_$special_\\==/2___2__4'(A,B,C) :- + B==A, + '$novel_production'(C,232), + !, + '$extend_history'(C,232), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_fail/0', + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__5'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__4'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__5'(A,B,C). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + nonvar(B), + nonvar(A), + 'chr lock'(A), + functor(A,D,E), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,N,_,_,_,O,P), + setarg(2,C,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(I,C) + ) + ), + ( functor(B,D,E) -> + A=..[D|F], + B=..[D|G], + add_args_nmatch(F,G,H), + known(H) + ; + true + ). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__5__0__13'(D,A,B,C). +'known/1_1_$special_\\==/2___2__5__0__13'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__6'(B,C,A). +'known/1_1_$special_\\==/2___2__5__0__13'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H\==I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__5__0__13'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__5__0__13'(J,A,B,C) + ). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__6'(A,B,C). +'known/1_1_$special_\\==/2___2__6'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__6__0__14'(D,A,B,C). +'known/1_1_$special_\\==/2___2__6__0__14'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__7'(B,C,A). +'known/1_1_$special_\\==/2___2__6__0__14'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I\==J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__6__0__14'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__6__0__14'(K,A,B,C) + ). +'known/1_1_$special_\\==/2___2__6'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__7'(A,B,C). +'known/1_1_$special_\\==/2___2__7'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(B,A) + ; + true + ). +'known/1_1_$special_==/2'(A,B) :- + 'known/1_1_$special_==/2___2__0'(A,B,_). +'known/1_1_$special_==/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(J,C) + ) + ). +'known/1_1_$special_==/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,136), + number(A), + !, + '$extend_history'(C,136), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__1'(A,B,C) + ). +'known/1_1_$special_==/2___2__1'(A,B,C) :- + '$novel_production'(C,137), + number(B), + !, + '$extend_history'(C,137), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__2'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__1'(A,B,C) :- + 'known/1_1_$special_==/2___2__2'(A,B,C). +'known/1_1_$special_==/2___2__2'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(D,A) + ) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(D,C) + ) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I==J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__2__0__10'(D,A,B,C). +'known/1_1_$special_==/2___2__2__0__10'([],B,C,A) :- + 'known/1_1_$special_==/2___2__3'(B,C,A). +'known/1_1_$special_==/2___2__2__0__10'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(228,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_==/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__2__0__10'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__2__0__10'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + 'known/1_1_$special_==/2___2__3'(A,B,C). +'known/1_1_$special_==/2___2__3'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__3__0__11'(D,A,B,C). +'known/1_1_$special_==/2___2__3__0__11'([],B,C,A) :- + 'known/1_1_$special_==/2___2__4'(B,C,A). +'known/1_1_$special_==/2___2__3__0__11'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(228,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_==/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__3__0__11'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__3__0__11'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__3'(A,B,C) :- + 'known/1_1_$special_==/2___2__4'(A,B,C). +'known/1_1_$special_==/2___2__4'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__4__0__12'(D,A,B,C). +'known/1_1_$special_==/2___2__4__0__12'([],B,C,A) :- + 'known/1_1_$special_==/2___2__5'(B,C,A). +'known/1_1_$special_==/2___2__4__0__12'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(229,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_\\==/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__4__0__12'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__4__0__12'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__4'(A,B,C) :- + 'known/1_1_$special_==/2___2__5'(A,B,C). +'known/1_1_$special_==/2___2__5'(A,B,C) :- + '$novel_production'(C,230), + !, + '$extend_history'(C,230), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_==/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__6'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__5'(A,B,C) :- + 'known/1_1_$special_==/2___2__6'(A,B,C). +'known/1_1_$special_==/2___2__6'(A,B,C) :- + '$novel_production'(C,234), + !, + '$extend_history'(C,234), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__7'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__6'(A,B,C) :- + 'known/1_1_$special_==/2___2__7'(A,B,C). +'known/1_1_$special_==/2___2__7'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__7__0__15'(D,A,B,C). +'known/1_1_$special_==/2___2__7__0__15'([],B,C,A) :- + 'known/1_1_$special_==/2___2__8'(B,C,A). +'known/1_1_$special_==/2___2__7__0__15'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H==I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__7__0__15'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__7__0__15'(J,A,B,C) + ). +'known/1_1_$special_==/2___2__7'(A,B,C) :- + 'known/1_1_$special_==/2___2__8'(A,B,C). +'known/1_1_$special_==/2___2__8'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__8__0__16'(D,A,B,C). +'known/1_1_$special_==/2___2__8__0__16'([],B,C,A) :- + 'known/1_1_$special_==/2___2__9'(B,C,A). +'known/1_1_$special_==/2___2__8__0__16'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I==J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__8__0__16'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__8__0__16'(K,A,B,C) + ). +'known/1_1_$special_==/2___2__8'(A,B,C) :- + 'known/1_1_$special_==/2___2__9'(A,B,C). +'known/1_1_$special_==/2___2__9'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(B,A) + ; + true + ). +'known/1_1_$special_is/2'(A,B) :- + 'known/1_1_$special_=:=/2'(A,B). +'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_ + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=B, + !, + ( var(C) -> + true + ; + C=suspension(_,W,_,_,_,X,Y), + setarg(2,C,removed), + ( W==not_stored_yet -> + D=[] + ; + term_variables(term(X,Y),D), + arg(5,C,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,H,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + F=suspension(_,_,_,_,_,M,N), + setarg(2,F,removed), + term_variables(term(M,N),H), + arg(5,F,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + F=suspension(_,_,_,_,_,M,N), + setarg(2,F,removed), + term_variables(term(M,N),H), + arg(5,F,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_= + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,A,inactive), + 'known/1_1_$special_= + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,A,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',D) + ), + !, + 'known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_= + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_= + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,E,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ) -> + 'known/1_1_$special_= + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_= + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,E,inactive), + 'known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_= + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,C,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_= + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,C,inactive), + 'known/1_1_$special_= + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(J,C) + ) + ). +'known/1_1_$special_=:=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,A) + ) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,C) + ) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + number(B), + number(A), + A=\=B, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=:=/2___2__0__0__11'(D,A,B,C). +'known/1_1_$special_=:=/2___2__0__0__11'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__1'(B,C,A). +'known/1_1_$special_=:=/2___2__0__0__11'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(193,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J), + B\==E -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_=:=/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_=:=/2___2__0__0__11'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__0__0__11'(G,B,C,A) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=:=/2___2__1'(A,B,C). +'known/1_1_$special_=:=/2___2__1'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__1__0__12'(D,A,B,C). +'known/1_1_$special_=:=/2___2__1__0__12'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__2'(B,C,A). +'known/1_1_$special_=:=/2___2__1__0__12'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(193,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J), + D\==C -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_=:=/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_=:=/2___2__1__0__12'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__1__0__12'(G,B,C,A) + ). +'known/1_1_$special_=:=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__2'(A,B,C). +'known/1_1_$special_=:=/2___2__2'(A,B,C) :- + '$novel_production'(C,194), + !, + '$extend_history'(C,194), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__3'(A,B,C) + ; + true + ). +'known/1_1_$special_=:=/2___2__2'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__3'(A,B,C). +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=:=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__3__0__15'(D,A,B,C). +'known/1_1_$special_=:=/2___2__3__0__15'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__4'(B,C,A). +'known/1_1_$special_=:=/2___2__3__0__15'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=:=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__3__0__15'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__3__0__15'(J,A,B,C) + ). +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__4'(A,B,C). +'known/1_1_$special_=:=/2___2__4'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__4__0__16'(D,A,B,C). +'known/1_1_$special_=:=/2___2__4__0__16'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__5'(B,C,A). +'known/1_1_$special_=:=/2___2__4__0__16'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=:=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__4__0__16'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__4__0__16'(K,A,B,C) + ). +'known/1_1_$special_=:=/2___2__4'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__5'(A,B,C). +'known/1_1_$special_=:=/2___2__5'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_fail/0' :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'known/1_1_$special_fail/0' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A), + !, + 'known/1_1_$special_fail/0___0__0__0__24'(A). +'known/1_1_$special_fail/0___0__0__0__24'([]) :- + 'known/1_1_$special_fail/0___0__1'. +'known/1_1_$special_fail/0___0__0__0__24'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,A), + 'known/1_1_$special_fail/0___0__0__0__24'(B) + ; + 'known/1_1_$special_fail/0___0__0__0__24'(B) + ). +'known/1_1_$special_fail/0' :- + 'known/1_1_$special_fail/0___0__1'. +'known/1_1_$special_fail/0___0__1' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',A), + !, + 'known/1_1_$special_fail/0___0__1__0__25'(A). +'known/1_1_$special_fail/0___0__1__0__25'([]) :- + 'known/1_1_$special_fail/0___0__2'. +'known/1_1_$special_fail/0___0__1__0__25'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(C,A), + 'known/1_1_$special_fail/0___0__1__0__25'(B) + ; + 'known/1_1_$special_fail/0___0__1__0__25'(B) + ). +'known/1_1_$special_fail/0___0__1' :- + 'known/1_1_$special_fail/0___0__2'. +'known/1_1_$special_fail/0___0__2' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',A), + !, + 'known/1_1_$special_fail/0___0__2__0__26'(A). +'known/1_1_$special_fail/0___0__2__0__26'([]) :- + 'known/1_1_$special_fail/0___0__3'. +'known/1_1_$special_fail/0___0__2__0__26'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(C,A), + 'known/1_1_$special_fail/0___0__2__0__26'(B) + ; + 'known/1_1_$special_fail/0___0__2__0__26'(B) + ). +'known/1_1_$special_fail/0___0__2' :- + 'known/1_1_$special_fail/0___0__3'. +'known/1_1_$special_fail/0___0__3' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',A), + !, + 'known/1_1_$special_fail/0___0__3__0__27'(A). +'known/1_1_$special_fail/0___0__3__0__27'([]) :- + 'known/1_1_$special_fail/0___0__4'. +'known/1_1_$special_fail/0___0__3__0__27'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(C,A), + 'known/1_1_$special_fail/0___0__3__0__27'(B) + ; + 'known/1_1_$special_fail/0___0__3__0__27'(B) + ). +'known/1_1_$special_fail/0___0__3' :- + 'known/1_1_$special_fail/0___0__4'. +'known/1_1_$special_fail/0___0__4' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',A), + !, + 'known/1_1_$special_fail/0___0__4__0__28'(A). +'known/1_1_$special_fail/0___0__4__0__28'([]) :- + 'known/1_1_$special_fail/0___0__5'. +'known/1_1_$special_fail/0___0__4__0__28'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(C,A), + 'known/1_1_$special_fail/0___0__4__0__28'(B) + ; + 'known/1_1_$special_fail/0___0__4__0__28'(B) + ). +'known/1_1_$special_fail/0___0__4' :- + 'known/1_1_$special_fail/0___0__5'. +'known/1_1_$special_fail/0___0__5' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',A), + !, + 'known/1_1_$special_fail/0___0__5__0__29'(A). +'known/1_1_$special_fail/0___0__5__0__29'([]) :- + 'known/1_1_$special_fail/0___0__6'. +'known/1_1_$special_fail/0___0__5__0__29'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C,A), + 'known/1_1_$special_fail/0___0__5__0__29'(B) + ; + 'known/1_1_$special_fail/0___0__5__0__29'(B) + ). +'known/1_1_$special_fail/0___0__5' :- + 'known/1_1_$special_fail/0___0__6'. +'known/1_1_$special_fail/0___0__6' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',A), + !, + 'known/1_1_$special_fail/0___0__6__0__30'(A). +'known/1_1_$special_fail/0___0__6__0__30'([]) :- + 'known/1_1_$special_fail/0___0__7'. +'known/1_1_$special_fail/0___0__6__0__30'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(C,A), + 'known/1_1_$special_fail/0___0__6__0__30'(B) + ; + 'known/1_1_$special_fail/0___0__6__0__30'(B) + ). +'known/1_1_$special_fail/0___0__6' :- + 'known/1_1_$special_fail/0___0__7'. +'known/1_1_$special_fail/0___0__7' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',A), + !, + 'known/1_1_$special_fail/0___0__7__0__31'(A). +'known/1_1_$special_fail/0___0__7__0__31'([]) :- + 'known/1_1_$special_fail/0___0__8'. +'known/1_1_$special_fail/0___0__7__0__31'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,A), + 'known/1_1_$special_fail/0___0__7__0__31'(B) + ; + 'known/1_1_$special_fail/0___0__7__0__31'(B) + ). +'known/1_1_$special_fail/0___0__7' :- + 'known/1_1_$special_fail/0___0__8'. +'known/1_1_$special_fail/0___0__8' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',A), + !, + 'known/1_1_$special_fail/0___0__8__0__32'(A). +'known/1_1_$special_fail/0___0__8__0__32'([]) :- + 'known/1_1_$special_fail/0___0__9'. +'known/1_1_$special_fail/0___0__8__0__32'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,A), + 'known/1_1_$special_fail/0___0__8__0__32'(B) + ; + 'known/1_1_$special_fail/0___0__8__0__32'(B) + ). +'known/1_1_$special_fail/0___0__8' :- + 'known/1_1_$special_fail/0___0__9'. +'known/1_1_$special_fail/0___0__9' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',A), + !, + 'known/1_1_$special_fail/0___0__9__0__33'(A). +'known/1_1_$special_fail/0___0__9__0__33'([]) :- + 'known/1_1_$special_fail/0___0__10'. +'known/1_1_$special_fail/0___0__9__0__33'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,A), + 'known/1_1_$special_fail/0___0__9__0__33'(B) + ; + 'known/1_1_$special_fail/0___0__9__0__33'(B) + ). +'known/1_1_$special_fail/0___0__9' :- + 'known/1_1_$special_fail/0___0__10'. +'known/1_1_$special_fail/0___0__10' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__10__0__34'(A). +'known/1_1_$special_fail/0___0__10__0__34'([]) :- + 'known/1_1_$special_fail/0___0__11'. +'known/1_1_$special_fail/0___0__10__0__34'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__10__0__34'(B) + ; + 'known/1_1_$special_fail/0___0__10__0__34'(B) + ). +'known/1_1_$special_fail/0___0__10' :- + 'known/1_1_$special_fail/0___0__11'. +'known/1_1_$special_fail/0___0__11' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A), + !, + 'known/1_1_$special_fail/0___0__11__0__35'(A). +'known/1_1_$special_fail/0___0__11__0__35'([]) :- + 'known/1_1_$special_fail/0___0__12'. +'known/1_1_$special_fail/0___0__11__0__35'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(C,A), + 'known/1_1_$special_fail/0___0__11__0__35'(B) + ; + 'known/1_1_$special_fail/0___0__11__0__35'(B) + ). +'known/1_1_$special_fail/0___0__11' :- + 'known/1_1_$special_fail/0___0__12'. +'known/1_1_$special_fail/0___0__12' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',A), + !, + 'known/1_1_$special_fail/0___0__12__0__36'(A). +'known/1_1_$special_fail/0___0__12__0__36'([]) :- + 'known/1_1_$special_fail/0___0__13'. +'known/1_1_$special_fail/0___0__12__0__36'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,H,I,J), + setarg(2,A,removed), + term_variables(term(H,I,J),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(C,A), + 'known/1_1_$special_fail/0___0__12__0__36'(B) + ; + 'known/1_1_$special_fail/0___0__12__0__36'(B) + ). +'known/1_1_$special_fail/0___0__12' :- + 'known/1_1_$special_fail/0___0__13'. +'known/1_1_$special_fail/0___0__13' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__13__0__37'(A). +'known/1_1_$special_fail/0___0__13__0__37'([]) :- + 'known/1_1_$special_fail/0___0__14'. +'known/1_1_$special_fail/0___0__13__0__37'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__13__0__37'(B) + ; + 'known/1_1_$special_fail/0___0__13__0__37'(B) + ). +'known/1_1_$special_fail/0___0__13' :- + 'known/1_1_$special_fail/0___0__14'. +'known/1_1_$special_fail/0___0__14' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__14__0__38'(A). +'known/1_1_$special_fail/0___0__14__0__38'([]) :- + 'known/1_1_$special_fail/0___0__15'. +'known/1_1_$special_fail/0___0__14__0__38'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__14__0__38'(B) + ; + 'known/1_1_$special_fail/0___0__14__0__38'(B) + ). +'known/1_1_$special_fail/0___0__14' :- + 'known/1_1_$special_fail/0___0__15'. +'known/1_1_$special_fail/0___0__15' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',A), + !, + 'known/1_1_$special_fail/0___0__15__0__40'(A). +'known/1_1_$special_fail/0___0__15__0__40'([]) :- + 'known/1_1_$special_fail/0___0__16'. +'known/1_1_$special_fail/0___0__15__0__40'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(C,A), + 'known/1_1_$special_fail/0___0__15__0__40'(B) + ; + 'known/1_1_$special_fail/0___0__15__0__40'(B) + ). +'known/1_1_$special_fail/0___0__15' :- + 'known/1_1_$special_fail/0___0__16'. +'known/1_1_$special_fail/0___0__16' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',A), + !, + 'known/1_1_$special_fail/0___0__16__0__41'(A). +'known/1_1_$special_fail/0___0__16__0__41'([]) :- + 'known/1_1_$special_fail/0___0__17'. +'known/1_1_$special_fail/0___0__16__0__41'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(C,A), + 'known/1_1_$special_fail/0___0__16__0__41'(B) + ; + 'known/1_1_$special_fail/0___0__16__0__41'(B) + ). +'known/1_1_$special_fail/0___0__16' :- + 'known/1_1_$special_fail/0___0__17'. +'known/1_1_$special_fail/0___0__17' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__18__0__47'(B) + ; + 'known/1_1_$special_fail/0___0__18__0__47'(B) + ). +'known/1_1_$special_fail/0___0__18' :- + 'known/1_1_$special_fail/0___0__19'. +'known/1_1_$special_fail/0___0__19' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',A), + !, + 'known/1_1_$special_fail/0___0__19__0__50'(A). +'known/1_1_$special_fail/0___0__19__0__50'([]) :- + 'known/1_1_$special_fail/0___0__20'. +'known/1_1_$special_fail/0___0__19__0__50'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(C,A), + 'known/1_1_$special_fail/0___0__19__0__50'(B) + ; + 'known/1_1_$special_fail/0___0__19__0__50'(B) + ). +'known/1_1_$special_fail/0___0__19' :- + 'known/1_1_$special_fail/0___0__20'. +'known/1_1_$special_fail/0___0__20' :- + A=suspension(B,active,_), + 'chr gen_id'(B), + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ). +:-multifile chr:'$chr_module'/1. +chr:'$chr_module'(guard_entailment). +end_of_file. diff --git a/sources b/sources new file mode 100644 index 0000000..3f3fc92 --- /dev/null +++ b/sources @@ -0,0 +1,5 @@ +d04265acead9286b363f7209ac382490 Yap-5.1.3.tar.gz +89b0825d04a5615b78ca0ff67908b047 chr_translate_bootstrap1.pl +ebbc6fe2972f03696e8b5397b0076726 chr_translate_bootstrap2.pl +773fa939564fb229fc7e541e5a74515a chr_translate.pl +72541b7579caf15bebe19fc2fc80dd08 guard_entailment.pl diff --git a/yap.spec b/yap.spec new file mode 100644 index 0000000..155f9ef --- /dev/null +++ b/yap.spec @@ -0,0 +1,217 @@ +Name: yap +Version: 5.1.3 +Release: 1%{?dist} + +Summary: High-performance Prolog Compiler + +Group: Development/Languages +License: Artistic 2.0 or LGPLv2+ +Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-%{version}.tar.gz +Source1: guard_entailment.pl +Source2: chr_translate_bootstrap1.pl +Source3: chr_translate_bootstrap2.pl +Source4: chr_translate.pl +Patch1: Yap-noni386.patch +Patch2: Yap-creat.patch +# config.sub in the tarball is too old for ppc64 +Patch3: Yap-5.1.1-config.sub.patch +URL: http://www.ncc.up.pt/~vsc/Yap +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: readline-devel, gmp-devel, texinfo +Requires(post): /sbin/install-info, /sbin/ldconfig +Requires(postun): /sbin/install-info, /sbin/ldconfig + +%description +A high-performance Prolog compiler developed at LIACC, Universidade do +Porto. The Prolog engine is based in the WAM (Warren Abstract +Machine), with several optimizations for better performance. YAP +follows the Edinburgh tradition, and is largely compatible with the +ISO-Prolog standard and with Quintus and SICStus Prolog. + + +%package devel +Summary: C-Interface development files for Yap +Group: Development/Languages +Requires: %{name} = %{version}-%{release} + +%description devel +C-Interface development files for Yap. + + +%package docs +Summary: Documentation for Yap +Group: Development/Languages +Requires: %{name} = %{version}-%{release} + +%description docs +Documentation for Yap. + + +%prep +%setup -q -n Yap-%{version} +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +find -name CVS -print0 | xargs -0 rm -rf +cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr + +# remove redundant rpath +sed -i '/-Wl,-R/d' configure +# add soname to library +sed -i 's/@YAPLIB@/@YAPLIB@.%{version}/g' Makefile.in +sed -i 's/@DYNYAPLIB@/@DYNYAPLIB@.%{version}/g' Makefile.in +sed -i 's/@DYNLIB_LD@/@DYNLIB_LD@ -Wl,-soname=@YAPLIB@.%{version} /g' Makefile.in + +find -name Makefile.in | xargs sed -i 's|$(ROOTDIR)/lib|$(ROOTDIR)/%{_lib}|' +find -name Makefile.in | xargs sed -i 's|$(EROOTDIR)/lib|$(EROOTDIR)/%{_lib}|' + + +%build +# % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') +%configure \ + --enable-coroutining \ + --enable-max-performance \ + --enable-depth-limit \ + --enable-dynamic-loading +make %{?_smp_mflags} +(cd docs; make info) + + +%install +rm -rf $RPM_BUILD_ROOT +make DESTDIR=$RPM_BUILD_ROOT install +mkdir -p $RPM_BUILD_ROOT%{_infodir} +cp -f docs/yap.info* $RPM_BUILD_ROOT%{_infodir} +cp -f LGPL/pillow/doc/pillow_doc.info $RPM_BUILD_ROOT%{_infodir} + +# fix permissions and flags +chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* +chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/* +find -name '*.lgt' -exec chmod 0644 '{}' ';' +find -name '*.h' -exec chmod 0644 '{}' ';' +find -name '*.c' -exec chmod 0644 '{}' ';' + +(cd $RPM_BUILD_ROOT%{_libdir}; ln -sf libYap.so.%{version} libYap.so) + +# move examples to docdir +mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +#mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples + +%post +/sbin/install-info %{_infodir}/yap.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : +/sbin/install-info %{_infodir}/pillow_doc.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : +/sbin/ldconfig + + +%postun +if [ $1 -eq 0 ]; then + /sbin/install-info --delete %{_infodir}/yap.info %{_infodir}/dir 2>/dev/null || : + /sbin/install-info --delete %{_infodir}/pillow_doc.info %{_infodir}/dir 2>/dev/null || : +fi +/sbin/ldconfig + + +%clean +rm -rf $RPM_BUILD_ROOT + + +%files +%defattr(-,root,root,-) +%doc README +%doc changes* +%{_bindir}/yap +%{_datadir}/Yap +%{_libdir}/Yap +%{_libdir}/libYap.so* +%{_infodir}/* + + +%files devel +%defattr(-,root,root,-) +%{_libdir}/libYap.so +%{_includedir}/Yap + + +%files docs +%defattr(-,root,root,-) +%doc LGPL/pillow/doc/pillow_doc_html/* +%doc LGPL/pillow/doc/article.ps.gz +%doc --parent Logtalk/manuals +%doc --parent Logtalk/examples + + +%changelog +* Mon Jun 15 2009 Gerard Milmeister - 5.1.3-1 +- new release 5.1.3 + +* Sun Mar 01 2009 Ralf Corsépius - 5.1.1-13 +- Add Yap-5.1.1-config.sub.patch: + Upgrade outdated config.sub to fix rebuild breakdown on ppc64. + +* Fri Jul 11 2008 Tom "spot" Callaway - 5.1.1-11 +- fix license tag + +* Thu Apr 10 2008 Gerard Milmeister - 5.1.1-10 +- enable rpm_opt_flags +- patch for incorrect open call with O_CREAT + +* Mon Feb 18 2008 Fedora Release Engineering - 5.1.1-9 +- Autorebuild for GCC 4.3 + +* Sat Oct 20 2007 Gerard Milmeister - 5.1.1-8 +- fix library path for 64-bit platforms + +* Wed Aug 29 2007 Gerard Milmeister - 5.1.1-7 +- replaced ld -shared with gcc -shared + +* Wed Aug 29 2007 Fedora Release Engineering - 5.1.1-6 +- Rebuild for selinux ppc32 issue. + +* Thu Jul 5 2007 Gerard Milmeister - 5.1.1-5 +- also build libYap.so + +* Fri May 11 2007 Gerard Milmeister - 5.1.1-3 +- remove -fstack-protector from optflags in order to enable + loading of .so modules + +* Mon Aug 28 2006 Gerard Milmeister - 5.1.1-2 +- Rebuild for FE6 + +* Mon May 1 2006 Gerard Milmeister - 5.1.1-1 +- new version 5.1.1 +- split off devel and docs packages + +* Fri Feb 17 2006 Gerard Milmeister - 5.0.1-2 +- Rebuild for Fedora Extras 5 + +* Tue Oct 25 2005 Gerard Milmeister - 5.0.1-1 +- New Version 5.0.1 + +* Wed Sep 7 2005 Gerard Milmeister - 5.0.0-1 +- New Version 5.0.0 + +* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-5 +- Use %{_prefix}/lib for x86_64 + +* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-4 +- Fix for non-i386 compilers + +* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-3 +- Compiler fix for FC4 + +* Fri Apr 7 2005 Michael Schwendt +- rebuilt + +* Sat Feb 12 2005 Gerard Milmeister - 0:4.5.5-1 +- New Version 4.5.5 + +* Mon Nov 29 2004 Gerard Milmeister - 0:4.5.3-0.fdr.1 +- New Version 4.5.3 + +* Sat Mar 13 2004 Gerard Milmeister - 0:4.5.2-0.fdr.1 +- New Version 4.5.2 + +* Sat Nov 22 2003 Gerard Milmeister - 0:4.4.3-0.fdr.1 +- First Fedora release