This section describes the options available when the system prompts you after printing out a debugging message. Most of them you know from the standard Prolog debugger. All the options are one letter mnemonics, some of which can be optionally followed by a decimal integer. They are read from the standard input stream up to the end of the line (Return, <RET>). Blanks will be ignored.
The only option that you really have to remember is h.  This
provides help in the form of the following list of available options.
     CHR debugging options:
        <cr>   creep            c      creep
         l     leap
         s     skip             s <i>  skip (ancestor i)
         g     ancestors
         &     constraints      & <i>  constraints (details)
         n     nodebug          =      debugging
         +     spy this
         -     nospy this       .      show rule
         <     reset printdepth < <n>  set printdepth
         a     abort            b      break
         ?     help             h      help
     
     exit port or the fail port). This
includes ports with spypoints set; they will be masked out
during the skip.  The command can be used with a numeric argument
to skip the execution up to and including the ancestor indicated
by the argument.  Example:
                     ...
                4   - exit    prime(8)#<c6> ? g
          Ancestors:
                1   1 apply   eratosthenes:rule(2) @ primes(10)#<c1>
                2   1 apply   eratosthenes:rule(2) @ primes(9)#<c3>
                3   1 apply   eratosthenes:rule(2) @ primes(8)#<c5>
                4   - call    prime(8)#<c6>
          
                4   - exit    prime(8)#<c6> ? s 2
                2   - exit    primes(9)#<c3> ? <RET>
          
     call
entries in the stack.  The subsequent application of a rule replaces the
call entry in the stack with an apply entry. Later the constraint
shows again as redo or fail entry.  Example:
                     0   - call    primes(10)#<c1> ? <RET>
                1   1 try     eratosthenes:rule(2) @ primes(10)#<c1> ? g
          
          Ancestors:
                1   - call    primes(10)#<c1>
          
                1   1 try     eratosthenes:rule(2) @ primes(10)#<c1> ? <RET>
                1   1 apply   eratosthenes:rule(2) @ primes(10)#<c1> ? <RET>
                1   - call    prime(10)#<c2> ? <RET>
                2   - insert  prime(10)#<c2>
                2   - exit    prime(10)#<c2> ? g
          
          Ancestors:
                1   1 apply   eratosthenes:rule(2) @ primes(10)#<c1>
                2   - call    prime(10)#<c2>
          
     chr_debugging/0
                8   1 apply   era:absorb(8) @ prime(4)#<c14> \ prime(8)#<c6> ? .
          
           absorb(8) @
            prime(4)#<c14> \
              prime(8)#<c6> <=>
          
              8 mod 4=:=0
              |
              true.
          
     abort/0.
     break/0, thus
putting you at a recursive top-level.  When you end the break (entering
^D) you will be re-prompted at the port at which you
broke. The CHR debugger is temporarily switched off as you call the
break and will be switched on again when you finish the break and go
back to the old execution.  Any changes to the CHR leashing or to
spypoints during the break will remain in effect.