/*  Generated by CHR bootstrap compiler
    From: /tmp/pkgbuild/lang/swi-prolog-lite/work.sparc64/swipl-8.0.2/packages/chr/guard_entailment.chr
    Date: Fri Jan 15 12:33:02 2021

    DO NOT EDIT.  EDIT THE CHR FILE INSTEAD
*/

:- module(guard_entailment,
          [ entails_guard/2,
            simplify_guards/5
          ]).
:- use_module(chr(chr_runtime)).
:- style_check(- (discontiguous)).
:- style_check(-singleton).
:- style_check(-no_effect).
:- include(chr(chr_op)).
:- use_module(library(dialect/hprolog)).
:- use_module(chr(builtins)).
:- use_module(chr(chr_compiler_errors)).
entails_guard(A, B) :-
    copy_term_nat((A, B),  (C, F)),
    term_variables(C, D),
    variables(D),
    sort(C, E),
    entails_guard2(E),
    !,
    test(F),
    !,
    cleanup.
entails_guard2([]).
entails_guard2([A|B]) :-
    known(A),
    entails_guard2(B).
simplify_guards(A, I, B, H, J) :-
    copy_term_nat((A, B),  (C, F)),
    term_variables(C, D),
    variables(D),
    sort(C, E),
    entails_guard2(E),
    !,
    simplify(F, G),
    simplified(B, G, H, I, J),
    !,
    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|L], [I|M], F, J) :-
    builtins:binds_b(A, C),
    term_variables(B, D),
    intersect_eq(C, D, E),
    !,
    (   E=[]
    ->  term_variables(F, G),
        intersect_eq(C, G, H),
        !,
        (   H=[]
        ->  I=true,
            J=K
        ;   I=true,
            J=(A, K)
        )
    ;   I=A,
        J=K
    ),
    simplified(B, L, M, F, K).
simplify([], []).
simplify([A|D], [B|E]) :-
    (   \+ try(true, A)
    ->  B=true
    ;   builtins:negate_b(A, C),
        (   \+ try(true, C)
        ->  B=fail
        ;   B=keep
        )
    ),
    known(A),
    simplify(D, E).
try(A, B) :-
    (   known(A)
    ->  true
    ;   chr_error(internal, 'Entailment Checker: try/2.\n', [])
    ),
    (   test(B)
    ->  fail
    ;   true
    ).
add_args_unif([], [], true).
add_args_unif([A|C], [B|D],  (A=B, E)) :-
    add_args_unif(C, D, E).
add_args_nunif([], [], fail).
add_args_nunif([A|C], [B|D],  (A\=B;E)) :-
    add_args_nunif(C, D, E).
add_args_nmatch([], [], fail).
add_args_nmatch([A|C], [B|D],  (A\==B;E)) :-
    add_args_nmatch(C, D, E).
all_unique_vars(A, B) :-
    all_unique_vars(A, B, []).
all_unique_vars([], _, _).
all_unique_vars([A|D], B, C) :-
    var(A),
    \+ memberchk_eq(A, B),
    \+ memberchk_eq(A, C),
    all_unique_vars(D, [A|C]).
:- use_module(chr(chr_runtime)).
attach_variables___1([], _).
attach_variables___1([A|B1], D) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\1=:=1
          ->  Z=v(C, [D|E], F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/1,
              Z=v(A1, [D], F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(1,
                   [D],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    attach_variables___1(B1, D).
detach_variables___1([], _).
detach_variables___1([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, D, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\1=:=1
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -2,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               [],
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           F,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    detach_variables___1(B1, E).
'attach_known/1_1_$default___1'([], _).
'attach_known/1_1_$default___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\2=:=2
          ->  Z=v(C, D, [E|F], G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/2,
              Z=v(A1, D, [E], G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(2,
                   [],
                   [E],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$default___1'(B1, E).
'detach_known/1_1_$default___1'([], _).
'detach_known/1_1_$default___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, D, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\2=:=2
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -3,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               [],
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           F,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$default___1'(B1, E).
'attach_known/1_1_$special_;/2___2'([], _).
'attach_known/1_1_$special_;/2___2'([A|B1], F) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\4=:=4
          ->  Z=v(C, D, E, [F|G], H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/4,
              Z=v(A1, D, E, [F], H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(4,
                   [],
                   [],
                   [F],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_;/2___2'(B1, F).
'detach_known/1_1_$special_;/2___2'([], _).
'detach_known/1_1_$special_;/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, D, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\4=:=4
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -5,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               [],
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           F,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_;/2___2'(B1, E).
'attach_known/1_1_$special_nonvar/1___1'([], _).
'attach_known/1_1_$special_nonvar/1___1'([A|B1], G) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\8=:=8
          ->  Z=v(C, D, E, F, [G|H], I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/8,
              Z=v(A1, D, E, F, [G], I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(8,
                   [],
                   [],
                   [],
                   [G],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_nonvar/1___1'(B1, G).
'detach_known/1_1_$special_nonvar/1___1'([], _).
'detach_known/1_1_$special_nonvar/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, D, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\8=:=8
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -9,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               [],
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           F,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_nonvar/1___1'(B1, E).
'attach_known/1_1_$special_var/1___1'([], _).
'attach_known/1_1_$special_var/1___1'([A|B1], H) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\16=:=16
          ->  Z=v(C, D, E, F, G, [H|I], J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/16,
              Z=v(A1, D, E, F, G, [H], J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(16,
                   [],
                   [],
                   [],
                   [],
                   [H],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_var/1___1'(B1, H).
'detach_known/1_1_$special_var/1___1'([], _).
'detach_known/1_1_$special_var/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, D, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\16=:=16
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -17,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               [],
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           F,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_var/1___1'(B1, E).
'attach_known/1_1_$special_atom/1___1'([], _).
'attach_known/1_1_$special_atom/1___1'([A|B1], I) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\32=:=32
          ->  Z=v(C, D, E, F, G, H, [I|J], K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/32,
              Z=v(A1, D, E, F, G, H, [I], K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(32,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [I],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_atom/1___1'(B1, I).
'detach_known/1_1_$special_atom/1___1'([], _).
'detach_known/1_1_$special_atom/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, D, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\32=:=32
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -33,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               [],
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           F,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_atom/1___1'(B1, E).
'attach_known/1_1_$special_atomic/1___1'([], _).
'attach_known/1_1_$special_atomic/1___1'([A|B1], J) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\64=:=64
          ->  Z=v(C, D, E, F, G, H, I, [J|K], L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/64,
              Z=v(A1, D, E, F, G, H, I, [J], L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(64,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [J],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_atomic/1___1'(B1, J).
'detach_known/1_1_$special_atomic/1___1'([], _).
'detach_known/1_1_$special_atomic/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, D, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\64=:=64
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -65,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               [],
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           F,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_atomic/1___1'(B1, E).
'attach_known/1_1_$special_compound/1___1'([], _).
'attach_known/1_1_$special_compound/1___1'([A|B1], K) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\128=:=128
          ->  Z=v(C, D, E, F, G, H, I, J, [K|L], M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/128,
              Z=v(A1, D, E, F, G, H, I, J, [K], M, N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(128,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [K],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_compound/1___1'(B1, K).
'detach_known/1_1_$special_compound/1___1'([], _).
'detach_known/1_1_$special_compound/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, D, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\128=:=128
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -129,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               [],
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           F,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_compound/1___1'(B1, E).
'attach_known/1_1_$special_ground/1___1'([], _).
'attach_known/1_1_$special_ground/1___1'([A|B1], L) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, M, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\256=:=256
          ->  Z=v(C, D, E, F, G, H, I, J, K, [L|M], N, O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/256,
              Z=v(A1, D, E, F, G, H, I, J, K, [L], N, O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(256,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [L],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_ground/1___1'(B1, L).
'detach_known/1_1_$special_ground/1___1'([], _).
'detach_known/1_1_$special_ground/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, D, P, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\256=:=256
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -257,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               [],
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           F,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_ground/1___1'(B1, E).
'attach_known/1_1_$special_integer/1___1'([], _).
'attach_known/1_1_$special_integer/1___1'([A|B1], M) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, N, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\512=:=512
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, [M|N], O, P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/512,
              Z=v(A1, D, E, F, G, H, I, J, K, L, [M], O, P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(512,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [M],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_integer/1___1'(B1, M).
'detach_known/1_1_$special_integer/1___1'([], _).
'detach_known/1_1_$special_integer/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, D, Q, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\512=:=512
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -513,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               [],
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           F,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_integer/1___1'(B1, E).
'attach_known/1_1_$special_float/1___1'([], _).
'attach_known/1_1_$special_float/1___1'([A|B1], N) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, O, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\1024=:=1024
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, [N|O], P, Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/1024,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, [N], P, Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(1024,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [N],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_float/1___1'(B1, N).
'detach_known/1_1_$special_float/1___1'([], _).
'detach_known/1_1_$special_float/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, D, R, S, T, U, V, W, X, Y, Z, A1),
        (   C/\1024=:=1024
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -1025,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               [],
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           F,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_float/1___1'(B1, E).
'attach_known/1_1_$special_number/1___1'([], _).
'attach_known/1_1_$special_number/1___1'([A|B1], O) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, P, Q, R, S, T, U, V, W, X, Y),
          (   C/\2048=:=2048
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, [O|P], Q, R, S, T, U, V, W, X, Y)
          ;   A1 is C\/2048,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, [O], Q, R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(2048,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [O],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_number/1___1'(B1, O).
'detach_known/1_1_$special_number/1___1'([], _).
'detach_known/1_1_$special_number/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, D, S, T, U, V, W, X, Y, Z, A1),
        (   C/\2048=:=2048
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -2049,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               [],
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           F,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_number/1___1'(B1, E).
'attach_known/1_1_$special_=\\=/2___2'([], _).
'attach_known/1_1_$special_=\\=/2___2'([A|B1], P) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, Q, R, S, T, U, V, W, X, Y),
          (   C/\4096=:=4096
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, [P|Q], R, S, T, U, V, W, X, Y)
          ;   A1 is C\/4096,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, [P], R, S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(4096,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [P],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_=\\=/2___2'(B1, P).
'detach_known/1_1_$special_=\\=/2___2'([], _).
'detach_known/1_1_$special_=\\=/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, D, T, U, V, W, X, Y, Z, A1),
        (   C/\4096=:=4096
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -4097,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               [],
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           F,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_=\\=/2___2'(B1, E).
'attach_known/1_1_$special_\\+/1___1'([], _).
'attach_known/1_1_$special_\\+/1___1'([A|B1], Q) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U, V, W, X, Y),
          (   C/\8192=:=8192
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, [Q|R], S, T, U, V, W, X, Y)
          ;   A1 is C\/8192,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, [Q], S, T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(8192,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [Q],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_\\+/1___1'(B1, Q).
'detach_known/1_1_$special_\\+/1___1'([], _).
'detach_known/1_1_$special_\\+/1___1'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, D, U, V, W, X, Y, Z, A1),
        (   C/\8192=:=8192
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -8193,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               [],
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           F,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_\\+/1___1'(B1, E).
'attach_known/1_1_$special_functor/3___3'([], _).
'attach_known/1_1_$special_functor/3___3'([A|B1], R) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, S, T, U, V, W, X, Y),
          (   C/\16384=:=16384
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, [R|S], T, U, V, W, X, Y)
          ;   A1 is C\/16384,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, [R], T, U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(16384,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [R],
                   [],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_functor/3___3'(B1, R).
'detach_known/1_1_$special_functor/3___3'([], _).
'detach_known/1_1_$special_functor/3___3'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, D, V, W, X, Y, Z, A1),
        (   C/\16384=:=16384
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -16385,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               [],
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           F,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_functor/3___3'(B1, E).
'attach_known/1_1_$special_\\=/2___2'([], _).
'attach_known/1_1_$special_\\=/2___2'([A|B1], S) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, T, U, V, W, X, Y),
          (   C/\32768=:=32768
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, [S|T], U, V, W, X, Y)
          ;   A1 is C\/32768,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, [S], U, V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(32768,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [S],
                   [],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_\\=/2___2'(B1, S).
'detach_known/1_1_$special_\\=/2___2'([], _).
'detach_known/1_1_$special_\\=/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, D, W, X, Y, Z, A1),
        (   C/\32768=:=32768
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -32769,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               [],
                               W,
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           F,
                           W,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_\\=/2___2'(B1, E).
'attach_known/1_1_$special_=/2___2'([], _).
'attach_known/1_1_$special_=/2___2'([A|B1], T) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y),
          (   C/\65536=:=65536
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, [T|U], V, W, X, Y)
          ;   A1 is C\/65536,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, [T], V, W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(65536,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [T],
                   [],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_=/2___2'(B1, T).
'detach_known/1_1_$special_=/2___2'([], _).
'detach_known/1_1_$special_=/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, D, X, Y, Z, A1),
        (   C/\65536=:=65536
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -65537,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               [],
                               X,
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           F,
                           X,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_=/2___2'(B1, E).
'attach_known/1_1_$special_\\==/2___2'([], _).
'attach_known/1_1_$special_\\==/2___2'([A|B1], U) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, V, W, X, Y),
          (   C/\131072=:=131072
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, [U|V], W, X, Y)
          ;   A1 is C\/131072,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, [U], W, X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(131072,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [U],
                   [],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_\\==/2___2'(B1, U).
'detach_known/1_1_$special_\\==/2___2'([], _).
'detach_known/1_1_$special_\\==/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, D, Y, Z, A1),
        (   C/\131072=:=131072
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -131073,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               [],
                               Y,
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           F,
                           Y,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_\\==/2___2'(B1, E).
'attach_known/1_1_$special_==/2___2'([], _).
'attach_known/1_1_$special_==/2___2'([A|B1], V) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, W, X, Y),
          (   C/\262144=:=262144
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, [V|W], X, Y)
          ;   A1 is C\/262144,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, [V], X, Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(262144,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [V],
                   [],
                   []))
    ),
    'attach_known/1_1_$special_==/2___2'(B1, V).
'detach_known/1_1_$special_==/2___2'([], _).
'detach_known/1_1_$special_==/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, D, Z, A1),
        (   C/\262144=:=262144
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -262145,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               [],
                               Z,
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           F,
                           Z,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_==/2___2'(B1, E).
'attach_known/1_1_$special_=</2___2'([], _).
'attach_known/1_1_$special_=</2___2'([A|B1], W) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y),
          (   C/\524288=:=524288
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, [W|X], Y)
          ;   A1 is C\/524288,
              Z=v(A1, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, [W], Y)
          )
        ),
        put_attr(A, guard_entailment, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(524288,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [W],
                   []))
    ),
    'attach_known/1_1_$special_=</2___2'(B1, W).
'detach_known/1_1_$special_=</2___2'([], _).
'detach_known/1_1_$special_=</2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, D, A1),
        (   C/\524288=:=524288
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -524289,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               [],
                               A1))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           F,
                           A1))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_=</2___2'(B1, E).
'attach_known/1_1_$special_=:=/2___2'([], _).
'attach_known/1_1_$special_=:=/2___2'([A|B1], X) :-
    (   get_attr(A, guard_entailment, B)
    ->  ( B=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, Y),
          (   C/\1048576=:=1048576
          ->  Z=v(C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, [X|Y])
          ;   A1 is C\/1048576,
              Z=v(A1, D, 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, Z)
    ;   put_attr(A,
                 guard_entailment,
                 v(1048576,
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [],
                   [X]))
    ),
    'attach_known/1_1_$special_=:=/2___2'(B1, X).
'detach_known/1_1_$special_=:=/2___2'([], _).
'detach_known/1_1_$special_=:=/2___2'([A|B1], E) :-
    (   get_attr(A, guard_entailment, B)
    ->  B=v(C, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1, D),
        (   C/\1048576=:=1048576
        ->  'chr sbag_del_element'(D, E, F),
            (   F==[]
            ->  G is C/\ -1048577,
                (   G==0
                ->  del_attr(A, guard_entailment)
                ;   put_attr(A,
                             guard_entailment,
                             v(G,
                               H,
                               I,
                               J,
                               K,
                               L,
                               M,
                               N,
                               O,
                               P,
                               Q,
                               R,
                               S,
                               T,
                               U,
                               V,
                               W,
                               X,
                               Y,
                               Z,
                               A1,
                               []))
                )
            ;   put_attr(A,
                         guard_entailment,
                         v(C,
                           H,
                           I,
                           J,
                           K,
                           L,
                           M,
                           N,
                           O,
                           P,
                           Q,
                           R,
                           S,
                           T,
                           U,
                           V,
                           W,
                           X,
                           Y,
                           Z,
                           A1,
                           F))
            )
        ;   true
        )
    ;   true
    ),
    'detach_known/1_1_$special_=:=/2___2'(B1, E).
attach_increment([], _).
attach_increment([A|M3], B) :-
    'chr not_locked'(A),
    (   get_attr(A, guard_entailment, C)
    ->  ( B=v(O2, E, H, K, N, Q, T, W, Z, C1, F1, I1, L1, O1, R1, U1, X1, A2, D2, G2, J2, M2),
          C=v(P2, D, G, J, M, P, S, V, Y, B1, E1, H1, K1, N1, Q1, T1, W1, Z1, C2, F2, I2, L2),
          ( ( sort(D, F),
              'chr merge_attributes'(E, F, R2)
            ),
            ( sort(G, I),
              'chr merge_attributes'(H, I, S2)
            ),
            ( sort(J, L),
              'chr merge_attributes'(K, L, T2)
            ),
            ( sort(M, O),
              'chr merge_attributes'(N, O, U2)
            ),
            ( sort(P, R),
              'chr merge_attributes'(Q, R, V2)
            ),
            ( sort(S, U),
              'chr merge_attributes'(T, U, W2)
            ),
            ( sort(V, X),
              'chr merge_attributes'(W, X, X2)
            ),
            ( sort(Y, A1),
              'chr merge_attributes'(Z, A1, Y2)
            ),
            ( sort(B1, D1),
              'chr merge_attributes'(C1, D1, Z2)
            ),
            ( sort(E1, G1),
              'chr merge_attributes'(F1, G1, A3)
            ),
            ( sort(H1, J1),
              'chr merge_attributes'(I1, J1, B3)
            ),
            ( sort(K1, M1),
              'chr merge_attributes'(L1, M1, C3)
            ),
            ( sort(N1, P1),
              'chr merge_attributes'(O1, P1, D3)
            ),
            ( sort(Q1, S1),
              'chr merge_attributes'(R1, S1, E3)
            ),
            ( sort(T1, V1),
              'chr merge_attributes'(U1, V1, F3)
            ),
            ( sort(W1, Y1),
              'chr merge_attributes'(X1, Y1, G3)
            ),
            ( sort(Z1, B2),
              'chr merge_attributes'(A2, B2, H3)
            ),
            ( sort(C2, E2),
              'chr merge_attributes'(D2, E2, I3)
            ),
            ( sort(F2, H2),
              'chr merge_attributes'(G2, H2, J3)
            ),
            ( sort(I2, K2),
              'chr merge_attributes'(J2, K2, K3)
            ),
            sort(L2, N2),
            'chr merge_attributes'(M2, N2, L3)
          ),
          Q2 is O2\/P2
        ),
        put_attr(A,
                 guard_entailment,
                 v(Q2,
                   R2,
                   S2,
                   T2,
                   U2,
                   V2,
                   W2,
                   X2,
                   Y2,
                   Z2,
                   A3,
                   B3,
                   C3,
                   D3,
                   E3,
                   F3,
                   G3,
                   H3,
                   I3,
                   J3,
                   K3,
                   L3))
    ;   put_attr(A, guard_entailment, B)
    ),
    attach_increment(M3, B).
attribute_goals(_, A, A).
attr_unify_hook(v(I3, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U), V) :-
    sort(A, Y),
    sort(B, B1),
    sort(C, E1),
    sort(D, H1),
    sort(E, K1),
    sort(F, N1),
    sort(G, Q1),
    sort(H, T1),
    sort(I, W1),
    sort(J, Z1),
    sort(K, C2),
    sort(L, F2),
    sort(M, I2),
    sort(N, L2),
    sort(O, O2),
    sort(P, R2),
    sort(Q, U2),
    sort(R, X2),
    sort(S, A3),
    sort(T, D3),
    sort(U, G3),
    (   var(V)
    ->  (   get_attr(V, guard_entailment, W)
        ->  ( W=v(J3, X, A1, D1, G1, J1, M1, P1, S1, V1, Y1, B2, E2, H2, K2, N2, Q2, T2, W2, Z2, C3, F3),
              ( ( sort(X, Z),
                  'chr merge_attributes'(Y, Z, L3)
                ),
                ( sort(A1, C1),
                  'chr merge_attributes'(B1, C1, M3)
                ),
                ( sort(D1, F1),
                  'chr merge_attributes'(E1, F1, N3)
                ),
                ( sort(G1, I1),
                  'chr merge_attributes'(H1, I1, O3)
                ),
                ( sort(J1, L1),
                  'chr merge_attributes'(K1, L1, P3)
                ),
                ( sort(M1, O1),
                  'chr merge_attributes'(N1, O1, Q3)
                ),
                ( sort(P1, R1),
                  'chr merge_attributes'(Q1, R1, R3)
                ),
                ( sort(S1, U1),
                  'chr merge_attributes'(T1, U1, S3)
                ),
                ( sort(V1, X1),
                  'chr merge_attributes'(W1, X1, T3)
                ),
                ( sort(Y1, A2),
                  'chr merge_attributes'(Z1, A2, U3)
                ),
                ( sort(B2, D2),
                  'chr merge_attributes'(C2, D2, V3)
                ),
                ( sort(E2, G2),
                  'chr merge_attributes'(F2, G2, W3)
                ),
                ( sort(H2, J2),
                  'chr merge_attributes'(I2, J2, X3)
                ),
                ( sort(K2, M2),
                  'chr merge_attributes'(L2, M2, Y3)
                ),
                ( sort(N2, P2),
                  'chr merge_attributes'(O2, P2, Z3)
                ),
                ( sort(Q2, S2),
                  'chr merge_attributes'(R2, S2, A4)
                ),
                ( sort(T2, V2),
                  'chr merge_attributes'(U2, V2, B4)
                ),
                ( sort(W2, Y2),
                  'chr merge_attributes'(X2, Y2, C4)
                ),
                ( sort(Z2, B3),
                  'chr merge_attributes'(A3, B3, D4)
                ),
                ( sort(C3, E3),
                  'chr merge_attributes'(D3, E3, E4)
                ),
                sort(F3, H3),
                'chr merge_attributes'(G3, H3, F4)
              ),
              K3 is I3\/J3
            ),
            put_attr(V,
                     guard_entailment,
                     v(K3,
                       L3,
                       M3,
                       N3,
                       O3,
                       P3,
                       Q3,
                       R3,
                       S3,
                       T3,
                       U3,
                       V3,
                       W3,
                       X3,
                       Y3,
                       Z3,
                       A4,
                       B4,
                       C4,
                       D4,
                       E4,
                       F4)),
            '$run_suspensions_variables___1'(Y),
            '$run_suspensions_known/1_1_$default___1'(B1),
            '$run_suspensions_known/1_1_$special_;/2___2'(N3),
            '$run_suspensions_known/1_1_$special_nonvar/1___1'(H1),
            '$run_suspensions_known/1_1_$special_var/1___1'(K1),
            '$run_suspensions_known/1_1_$special_atom/1___1'(N1),
            '$run_suspensions_known/1_1_$special_atomic/1___1'(Q1),
            '$run_suspensions_known/1_1_$special_compound/1___1'(T1),
            '$run_suspensions_known/1_1_$special_ground/1___1'(W1),
            '$run_suspensions_known/1_1_$special_integer/1___1'(U3),
            '$run_suspensions_known/1_1_$special_float/1___1'(V3),
            '$run_suspensions_known/1_1_$special_number/1___1'(W3),
            '$run_suspensions_known/1_1_$special_=\\=/2___2'(X3),
            '$run_suspensions_known/1_1_$special_\\+/1___1'(Y3),
            '$run_suspensions_known/1_1_$special_functor/3___3'(Z3),
            '$run_suspensions_known/1_1_$special_\\=/2___2'(A4),
            '$run_suspensions_known/1_1_$special_=/2___2'(B4),
            '$run_suspensions_known/1_1_$special_\\==/2___2'(C4),
            '$run_suspensions_known/1_1_$special_==/2___2'(D4),
            '$run_suspensions_known/1_1_$special_=</2___2'(E4),
            '$run_suspensions_known/1_1_$special_=:=/2___2'(F4)
        ;   put_attr(V,
                     guard_entailment,
                     v(I3,
                       Y,
                       B1,
                       E1,
                       H1,
                       K1,
                       N1,
                       Q1,
                       T1,
                       W1,
                       Z1,
                       C2,
                       F2,
                       I2,
                       L2,
                       O2,
                       R2,
                       U2,
                       X2,
                       A3,
                       D3,
                       G3)),
            '$run_suspensions_variables___1'(Y),
            '$run_suspensions_known/1_1_$default___1'(B1),
            '$run_suspensions_known/1_1_$special_;/2___2'(E1),
            '$run_suspensions_known/1_1_$special_nonvar/1___1'(H1),
            '$run_suspensions_known/1_1_$special_var/1___1'(K1),
            '$run_suspensions_known/1_1_$special_atom/1___1'(N1),
            '$run_suspensions_known/1_1_$special_atomic/1___1'(Q1),
            '$run_suspensions_known/1_1_$special_compound/1___1'(T1),
            '$run_suspensions_known/1_1_$special_ground/1___1'(W1),
            '$run_suspensions_known/1_1_$special_integer/1___1'(Z1),
            '$run_suspensions_known/1_1_$special_float/1___1'(C2),
            '$run_suspensions_known/1_1_$special_number/1___1'(F2),
            '$run_suspensions_known/1_1_$special_=\\=/2___2'(I2),
            '$run_suspensions_known/1_1_$special_\\+/1___1'(L2),
            '$run_suspensions_known/1_1_$special_functor/3___3'(O2),
            '$run_suspensions_known/1_1_$special_\\=/2___2'(R2),
            '$run_suspensions_known/1_1_$special_=/2___2'(U2),
            '$run_suspensions_known/1_1_$special_\\==/2___2'(X2),
            '$run_suspensions_known/1_1_$special_==/2___2'(A3),
            '$run_suspensions_known/1_1_$special_=</2___2'(D3),
            '$run_suspensions_known/1_1_$special_=:=/2___2'(G3)
        )
    ;   (   compound(V)
        ->  term_variables(V, G4),
            attach_increment(G4,
                             v(I3,
                               Y,
                               B1,
                               E1,
                               H1,
                               K1,
                               N1,
                               Q1,
                               T1,
                               W1,
                               Z1,
                               C2,
                               F2,
                               I2,
                               L2,
                               O2,
                               R2,
                               U2,
                               X2,
                               A3,
                               D3,
                               G3))
        ;   true
        ),
        '$run_suspensions_variables___1'(Y),
        '$run_suspensions_known/1_1_$default___1'(B1),
        '$run_suspensions_known/1_1_$special_;/2___2'(E1),
        '$run_suspensions_known/1_1_$special_nonvar/1___1'(H1),
        '$run_suspensions_known/1_1_$special_var/1___1'(K1),
        '$run_suspensions_known/1_1_$special_atom/1___1'(N1),
        '$run_suspensions_known/1_1_$special_atomic/1___1'(Q1),
        '$run_suspensions_known/1_1_$special_compound/1___1'(T1),
        '$run_suspensions_known/1_1_$special_ground/1___1'(W1),
        '$run_suspensions_known/1_1_$special_integer/1___1'(Z1),
        '$run_suspensions_known/1_1_$special_float/1___1'(C2),
        '$run_suspensions_known/1_1_$special_number/1___1'(F2),
        '$run_suspensions_known/1_1_$special_=\\=/2___2'(I2),
        '$run_suspensions_known/1_1_$special_\\+/1___1'(L2),
        '$run_suspensions_known/1_1_$special_functor/3___3'(O2),
        '$run_suspensions_known/1_1_$special_\\=/2___2'(R2),
        '$run_suspensions_known/1_1_$special_=/2___2'(U2),
        '$run_suspensions_known/1_1_$special_\\==/2___2'(X2),
        '$run_suspensions_known/1_1_$special_==/2___2'(A3),
        '$run_suspensions_known/1_1_$special_=</2___2'(D3),
        '$run_suspensions_known/1_1_$special_=:=/2___2'(G3)
    ).
'$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_variables___1'([]).
'$run_suspensions_variables___1'([A|D]) :-
    A=suspension(_, B, _, C),
    (   B==active
    ->  setarg(2, A, triggered),
        variables___1__0(C, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_variables___1'(D).
'$run_suspensions_known/1_1_$default___1'([]).
'$run_suspensions_known/1_1_$default___1'([A|F]) :-
    A=suspension(_, B, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$default___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$default___1'(F).
'$run_suspensions_known/1_1_$special_;/2___2'([]).
'$run_suspensions_known/1_1_$special_;/2___2'([A|G]) :-
    A=suspension(_, B, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_;/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_;/2___2'(G).
'$run_suspensions_known/1_1_$special_nonvar/1___1'([]).
'$run_suspensions_known/1_1_$special_nonvar/1___1'([A|F]) :-
    A=suspension(_, B, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_nonvar/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_nonvar/1___1'(F).
'$run_suspensions_known/1_1_$special_var/1___1'([]).
'$run_suspensions_known/1_1_$special_var/1___1'([A|F]) :-
    A=suspension(_, B, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_var/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_var/1___1'(F).
'$run_suspensions_known/1_1_$special_atom/1___1'([]).
'$run_suspensions_known/1_1_$special_atom/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_atom/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_atom/1___1'(F).
'$run_suspensions_known/1_1_$special_atomic/1___1'([]).
'$run_suspensions_known/1_1_$special_atomic/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_atomic/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_atomic/1___1'(F).
'$run_suspensions_known/1_1_$special_compound/1___1'([]).
'$run_suspensions_known/1_1_$special_compound/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_compound/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_compound/1___1'(F).
'$run_suspensions_known/1_1_$special_ground/1___1'([]).
'$run_suspensions_known/1_1_$special_ground/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_ground/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_ground/1___1'(F).
'$run_suspensions_known/1_1_$special_integer/1___1'([]).
'$run_suspensions_known/1_1_$special_integer/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_integer/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_integer/1___1'(F).
'$run_suspensions_known/1_1_$special_float/1___1'([]).
'$run_suspensions_known/1_1_$special_float/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_float/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_float/1___1'(F).
'$run_suspensions_known/1_1_$special_number/1___1'([]).
'$run_suspensions_known/1_1_$special_number/1___1'([A|F]) :-
    A=suspension(_, B, _, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_number/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_number/1___1'(F).
'$run_suspensions_known/1_1_$special_=\\=/2___2'([]).
'$run_suspensions_known/1_1_$special_=\\=/2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_=\\=/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_=\\=/2___2'(G).
'$run_suspensions_known/1_1_$special_\\+/1___1'([]).
'$run_suspensions_known/1_1_$special_\\+/1___1'([A|F]) :-
    A=suspension(_, B, C, _, E),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_\\+/1___1__0'(E, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_\\+/1___1'(F).
'$run_suspensions_known/1_1_$special_functor/3___3'([]).
'$run_suspensions_known/1_1_$special_functor/3___3'([A|H]) :-
    A=suspension(_, B, C, _, E, F, G),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_functor/3___3__0'(E, F, G, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_functor/3___3'(H).
'$run_suspensions_known/1_1_$special_\\=/2___2'([]).
'$run_suspensions_known/1_1_$special_\\=/2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_\\=/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_\\=/2___2'(G).
'$run_suspensions_known/1_1_$special_=/2___2'([]).
'$run_suspensions_known/1_1_$special_=/2___2'([A|G]) :-
    A=suspension(_, B, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(3, A, D)
        ),
        'known/1_1_$special_=/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_=/2___2'(G).
'$run_suspensions_known/1_1_$special_\\==/2___2'([]).
'$run_suspensions_known/1_1_$special_\\==/2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_\\==/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_\\==/2___2'(G).
'$run_suspensions_known/1_1_$special_==/2___2'([]).
'$run_suspensions_known/1_1_$special_==/2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_==/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_==/2___2'(G).
'$run_suspensions_known/1_1_$special_=</2___2'([]).
'$run_suspensions_known/1_1_$special_=</2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_=</2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_=</2___2'(G).
'$run_suspensions_known/1_1_$special_=:=/2___2'([]).
'$run_suspensions_known/1_1_$special_=:=/2___2'([A|G]) :-
    A=suspension(_, B, _, C, _, E, F),
    (   B==active
    ->  setarg(2, A, triggered),
        ( D is C+1,
          setarg(4, A, D)
        ),
        'known/1_1_$special_=:=/2___2__0'(E, F, A),
        (   B==triggered
        ->  setarg(2, A, active)
        ;   true
        )
    ;   true
    ),
    '$run_suspensions_known/1_1_$special_=:=/2___2'(G).
'$enumerate_constraints'(A) :-
    (   nonvar(A)
    ->  functor(A, B, _),
        '$enumerate_constraints'(B, A)
    ;   '$enumerate_constraints'(_, A)
    ).
'$enumerate_constraints'(variables, C) :-
    nb_current('$chr_store_global_list_guard_entailment____variables___1',
               A),
    member(B, A),
    B=suspension(_, _, _, D),
    C=variables(D).
'$enumerate_constraints'('known/1_1_$default', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D),
    C='known/1_1_$default'(D).
'$enumerate_constraints'('known/1_1_$special_;/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D, E),
    C='known/1_1_$special_;/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_nonvar/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D),
    C='known/1_1_$special_nonvar/1'(D).
'$enumerate_constraints'('known/1_1_$special_var/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D),
    C='known/1_1_$special_var/1'(D).
'$enumerate_constraints'('known/1_1_$special_atom/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_atom/1'(D).
'$enumerate_constraints'('known/1_1_$special_atomic/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_atomic/1'(D).
'$enumerate_constraints'('known/1_1_$special_compound/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_compound/1'(D).
'$enumerate_constraints'('known/1_1_$special_ground/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_ground/1'(D).
'$enumerate_constraints'('known/1_1_$special_integer/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_integer/1'(D).
'$enumerate_constraints'('known/1_1_$special_float/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_float/1'(D).
'$enumerate_constraints'('known/1_1_$special_number/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D),
    C='known/1_1_$special_number/1'(D).
'$enumerate_constraints'('known/1_1_$special_=\\=/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_=\\=/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_\\+/1', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D),
    C='known/1_1_$special_\\+/1'(D).
'$enumerate_constraints'('known/1_1_$special_functor/3', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D, E, F),
    C='known/1_1_$special_functor/3'(D, E, F).
'$enumerate_constraints'('known/1_1_$special_\\=/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_\\=/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_=/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, D, E),
    C='known/1_1_$special_=/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_\\==/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_\\==/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_==/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_==/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_=</2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_=</2'(D, E).
'$enumerate_constraints'('known/1_1_$special_=:=/2', C) :-
    nb_current('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
               A),
    member(B, A),
    B=suspension(_, _, _, _, _, D, E),
    C='known/1_1_$special_=:=/2'(D, E).
'$enumerate_constraints'('known/1_1_$special_fail/0', C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, _, _),
    C='known/1_1_$special_fail/0'.
'$chr_initialization' :-
    nb_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
              []),
    nb_setval('$chr_store_global_list_guard_entailment____variables___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_guard_entailment____known/1_1_$special_fail/0___0').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____known/1_1_$default___1').
'$chr_prolog_global_variable'('$chr_store_global_list_guard_entailment____variables___1').
known(A) :-
    nonvar(A),
    (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   A=(B;C),
                                                                                                !,
                                                                                                'known/1_1_$special_;/2'(B,
                                                                                                                         C)
                                                                                            ;   A=nonvar(D),
                                                                                                !,
                                                                                                'known/1_1_$special_nonvar/1'(D)
                                                                                            )
                                                                                        ;   A=var(E),
                                                                                            !,
                                                                                            'known/1_1_$special_var/1'(E)
                                                                                        )
                                                                                    ;   A=atom(F),
                                                                                        !,
                                                                                        'known/1_1_$special_atom/1'(F)
                                                                                    )
                                                                                ;   A=atomic(G),
                                                                                    !,
                                                                                    'known/1_1_$special_atomic/1'(G)
                                                                                )
                                                                            ;   A=compound(H),
                                                                                !,
                                                                                'known/1_1_$special_compound/1'(H)
                                                                            )
                                                                        ;   A=ground(I),
                                                                            !,
                                                                            'known/1_1_$special_ground/1'(I)
                                                                        )
                                                                    ;   A=integer(J),
                                                                        !,
                                                                        'known/1_1_$special_integer/1'(J)
                                                                    )
                                                                ;   A=float(K),
                                                                    !,
                                                                    'known/1_1_$special_float/1'(K)
                                                                )
                                                            ;   A=number(L),
                                                                !,
                                                                'known/1_1_$special_number/1'(L)
                                                            )
                                                        ;   A=(M=\=N),
                                                            !,
                                                            'known/1_1_$special_=\\=/2'(M,
                                                                                        N)
                                                        )
                                                    ;   A=(\+O),
                                                        !,
                                                        'known/1_1_$special_\\+/1'(O)
                                                    )
                                                ;   A=functor(P, Q, R),
                                                    !,
                                                    'known/1_1_$special_functor/3'(P,
                                                                                   Q,
                                                                                   R)
                                                )
                                            ;   A=(S\=T),
                                                !,
                                                'known/1_1_$special_\\=/2'(S,
                                                                           T)
                                            )
                                        ;   A=(U=V),
                                            !,
                                            'known/1_1_$special_=/2'(U,
                                                                     V)
                                        )
                                    ;   A=(W, X),
                                        !,
                                        'known/1_1_$special_,/2'(W,
                                                                 X)
                                    )
                                ;   A=(Y\==Z),
                                    !,
                                    'known/1_1_$special_\\==/2'(Y,
                                                                Z)
                                )
                            ;   A=(A1==B1),
                                !,
                                'known/1_1_$special_==/2'(A1, B1)
                            )
                        ;   A=(C1 is D1),
                            !,
                            'known/1_1_$special_is/2'(C1, D1)
                        )
                    ;   A=(E1<F1),
                        !,
                        'known/1_1_$special_</2'(E1, F1)
                    )
                ;   A=(G1>=H1),
                    !,
                    'known/1_1_$special_>=/2'(G1, H1)
                )
            ;   A=(I1>J1),
                !,
                'known/1_1_$special_>/2'(I1, J1)
            )
        ;   A=(K1=<L1),
            !,
            'known/1_1_$special_=</2'(K1, L1)
        )
    ;   A=(M1=:=N1),
        !,
        'known/1_1_$special_=:=/2'(M1, N1)
    ).
known(A) :-
    A==fail,
    !,
    'known/1_1_$special_fail/0'.
known(A) :-
    'known/1_1_$default'(A).
test(A) :-
    nonvar(A),
    (   (   (   (   (   (   (   A=(B, C),
                                !,
                                'test/1_1_$special_,/2'(B, C)
                            ;   A=(\+D),
                                !,
                                'test/1_1_$special_\\+/1'(D)
                            )
                        ;   A=integer(E),
                            !,
                            'test/1_1_$special_integer/1'(E)
                        )
                    ;   A=float(F),
                        !,
                        'test/1_1_$special_float/1'(F)
                    )
                ;   A=number(G),
                    !,
                    'test/1_1_$special_number/1'(G)
                )
            ;   A=ground(H),
                !,
                'test/1_1_$special_ground/1'(H)
            )
        ;   A=(I=:=J),
            !,
            'test/1_1_$special_=:=/2'(I, J)
        )
    ;   A=(K==L),
        !,
        'test/1_1_$special_==/2'(K, L)
    ).
test(A) :-
    A==true,
    !,
    'test/1_1_$special_true/0'.
test(A) :-
    nonvar(A),
    (   (   (   (   (   (   (   (   (   A=functor(B, C, D),
                                        !,
                                        'test/1_1_$special_functor/3'(B,
                                                                      C,
                                                                      D)
                                    ;   A=(E=F),
                                        !,
                                        'test/1_1_$special_=/2'(E, F)
                                    )
                                ;   A=(G;H),
                                    !,
                                    'test/1_1_$special_;/2'(G, H)
                                )
                            ;   A=(I is J),
                                !,
                                'test/1_1_$special_is/2'(I, J)
                            )
                        ;   A=(K<L),
                            !,
                            'test/1_1_$special_</2'(K, L)
                        )
                    ;   A=(M>=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=<T),
            !,
            'test/1_1_$special_=</2'(S, T)
        )
    ;   A=(U\==V),
        !,
        'test/1_1_$special_\\==/2'(U, V)
    ).
test(A) :-
    'test/1_1_$default'(A).
cleanup :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    !,
    cleanup___0__0__0__1(A).
cleanup___0__0__0__1([]) :-
    cleanup___0__1.
cleanup___0__0__0__1([A|I]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__0__0__1(I)
    ;   cleanup___0__0__0__1(I)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_nonvar/1___1'(G, A)
        ),
        cleanup___0__1__0__2(H)
    ;   cleanup___0__1__0__2(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_var/1___1'(G, A)
        ),
        cleanup___0__2__0__3(H)
    ;   cleanup___0__2__0__3(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_atom/1___1'(G, A)
        ),
        cleanup___0__3__0__4(H)
    ;   cleanup___0__3__0__4(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_atomic/1___1'(G, A)
        ),
        cleanup___0__4__0__5(H)
    ;   cleanup___0__4__0__5(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_compound/1___1'(G, A)
        ),
        cleanup___0__5__0__6(H)
    ;   cleanup___0__5__0__6(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_ground/1___1'(G, A)
        ),
        cleanup___0__6__0__7(H)
    ;   cleanup___0__6__0__7(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_integer/1___1'(G, A)
        ),
        cleanup___0__7__0__8(H)
    ;   cleanup___0__7__0__8(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_float/1___1'(G, A)
        ),
        cleanup___0__8__0__9(H)
    ;   cleanup___0__8__0__9(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_number/1___1'(G, A)
        ),
        cleanup___0__9__0__10(H)
    ;   cleanup___0__9__0__10(H)
    ).
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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__10__0__11(I)
    ;   cleanup___0__10__0__11(I)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_\\+/1___1'(G, A)
        ),
        cleanup___0__11__0__12(H)
    ;   cleanup___0__11__0__12(H)
    ).
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|J]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C, D),
          setarg(2, A, removed),
          term_variables(term(B, C, D), I),
          ( 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'(I, A)
        ),
        cleanup___0__12__0__13(J)
    ;   cleanup___0__12__0__13(J)
    ).
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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__13__0__14(I)
    ;   cleanup___0__13__0__14(I)
    ).
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|I]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__14__0__15(I)
    ;   cleanup___0__14__0__15(I)
    ).
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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__15__0__17(I)
    ;   cleanup___0__15__0__17(I)
    ).
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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__16__0__18(I)
    ;   cleanup___0__16__0__18(I)
    ).
cleanup___0__16 :-
    cleanup___0__17.
cleanup___0__17 :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
              A),
    !,
    cleanup___0__17__0__23(A).
cleanup___0__17__0__23([]) :-
    cleanup___0__18.
cleanup___0__17__0__23([A|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__17__0__23(I)
    ;   cleanup___0__17__0__23(I)
    ).
cleanup___0__17 :-
    cleanup___0__18.
cleanup___0__18 :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
              A),
    !,
    cleanup___0__18__0__24(A).
cleanup___0__18__0__24([]) :-
    cleanup___0__19.
cleanup___0__18__0__24([A|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        cleanup___0__18__0__24(I)
    ;   cleanup___0__18__0__24(I)
    ).
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|F]) :-
    (   A=suspension(_, active, _)
    ->  ( setarg(2, A, removed),
          arg(3, A, B),
          (   var(B)
          ->  nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
                        C),
              C=[_|D],
              b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
                       D),
              (   D=[E|_]
              ->  setarg(3, E, _)
              ;   true
              )
          ;   B=[_, _|D],
              setarg(2, B, D),
              (   D=[E|_]
              ->  setarg(3, E, B)
              ;   true
              )
          )
        ),
        cleanup___0__19__0__25(F)
    ;   cleanup___0__19__0__25(F)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$default___1'(G, A)
        ),
        cleanup___0__20__0__26(H)
    ;   cleanup___0__20__0__26(H)
    ).
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|H]) :-
    (   A=suspension(_, active, _, _)
    ->  ( A=suspension(_, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(3, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____variables___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____variables___1',
                         E),
                (   E=[F|_]
                ->  setarg(3, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(3, F, C)
                ;   true
                )
            )
          ),
          detach_variables___1(G, A)
        ),
        cleanup___0__21__0__27(H)
    ;   cleanup___0__21__0__27(H)
    ).
cleanup___0__21 :-
    cleanup___0__22.
cleanup___0__22.
variables(A) :-
    variables___1__0(A, _).
variables___1__0(V, N) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
              A),
    member(B, A),
    B=suspension(_, active, _, _, E, D, C),
    ground(C),
    ground(D),
    var(E),
    !,
    B=suspension(_, _, _, _, F, G, H),
    setarg(2, B, removed),
    term_variables(term(F, G, H), M),
    arg(4, B, I),
    (   var(I)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                  J),
        J=[_|K],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                 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_functor/3___3'(M, B),
    (   var(N)
    ->  true
    ;   N=suspension(_, _, _, O),
        setarg(2, N, removed),
        term_variables(O, T),
        ( arg(3, N, P),
          (   var(P)
          ->  nb_getval('$chr_store_global_list_guard_entailment____variables___1',
                        Q),
              Q=[_|R],
              b_setval('$chr_store_global_list_guard_entailment____variables___1',
                       R),
              (   R=[S|_]
              ->  setarg(3, S, _)
              ;   true
              )
          ;   P=[_, _|R],
              setarg(2, P, R),
              (   R=[S|_]
              ->  setarg(3, S, P)
              ;   true
              )
          )
        ),
        detach_variables___1(T, N)
    ),
    functor(E, D, C),
    E=..[_|U],
    append(U, V, W),
    variables(W).
variables___1__0(B, A) :-
    (   var(A)
    ->  ( A=suspension(D, active, _, B),
          term_variables(B, C),
          'chr none_locked'(C),
          'chr gen_id'(D)
        ),
        ( nb_getval('$chr_store_global_list_guard_entailment____variables___1',
                    E),
          F=[A|E],
          b_setval('$chr_store_global_list_guard_entailment____variables___1',
                   F),
          (   E=[G|_]
          ->  setarg(3, G, F)
          ;   true
          )
        ),
        attach_variables___1(C, A)
    ;   setarg(2, A, active)
    ).
'test/1_1_$default'(_) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$default'(A) :-
    nonvar(A),
    (   (   (   (   (   A=nonvar(B),
                        (   'chr newvia_1'(B, C)
                        ->  get_attr(C, guard_entailment, D),
                            D=v(_, _, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                      E)
                        ),
                        member(F, E),
                        F=suspension(_, active, _, _, G),
                        G==B,
                        !
                    ;   A=var(H),
                        (   'chr newvia_1'(H, I)
                        ->  get_attr(I, guard_entailment, J),
                            J=v(_, _, _, _, _, K, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                      K)
                        ),
                        member(L, K),
                        L=suspension(_, active, _, _, M),
                        M==H,
                        !
                    )
                ;   A=atom(N),
                    (   'chr newvia_1'(N, O)
                    ->  get_attr(O, guard_entailment, P),
                        P=v(_, _, _, _, _, _, Q, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                  Q)
                    ),
                    member(R, Q),
                    R=suspension(_, active, _, _, _, S),
                    S==N,
                    !
                )
            ;   A=atomic(T),
                (   'chr newvia_1'(T, U)
                ->  get_attr(U, guard_entailment, V),
                    V=v(_, _, _, _, _, _, _, W, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                              W)
                ),
                member(X, W),
                X=suspension(_, active, _, _, _, Y),
                Y==T,
                !
            )
        ;   A=compound(Z),
            (   'chr newvia_1'(Z, A1)
            ->  get_attr(A1, guard_entailment, B1),
                B1=v(_, _, _, _, _, _, _, _, C1, _, _, _, _, _, _, _, _, _, _, _, _, _)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                          C1)
            ),
            member(D1, C1),
            D1=suspension(_, active, _, _, _, E1),
            E1==Z,
            !
        )
    ;   A=(F1\=G1),
        (   'chr newvia_2'(F1, G1, H1)
        ->  get_attr(H1, guard_entailment, I1),
            I1=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, J1, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                      J1)
        ),
        member(K1, J1),
        K1=suspension(_, active, _, _, _, L1, M1),
        L1==F1,
        M1==G1,
        !
    ).
'test/1_1_$default'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !.
'test/1_1_$default'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, K).
'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',
              A),
    member(B, A),
    B=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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_\\+/1'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==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'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, \+K),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, \+K).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_integer/1'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==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'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, integer(K)),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, integer(K)).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_float/1'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==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'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, float(K)),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, float(K)).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_number/1'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==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'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, number(K)),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, number(K)).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_ground/1'(A) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !.
'test/1_1_$special_ground/1'(A) :-
    ground(A),
    !.
'test/1_1_$special_ground/1'(K) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, M),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, ground(K)),
    !,
    negate_b(J, L),
    known(L),
    \+ try(M, ground(K)).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_=:=/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_=:=/2'(A, B) :-
    A==B,
    !.
'test/1_1_$special_=:=/2'(B, A) :-
    ( ground(A),
      ground(B)
    ),
    (   B=:=A,
        !
    ;   !,
        fail
    ).
'test/1_1_$special_=:=/2'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K=:=L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K=:=L).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_==/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_==/2'(A, B) :-
    A==B,
    !.
'test/1_1_$special_==/2'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K==L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K==L).
'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',
              A),
    member(B, A),
    B=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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_functor/3'(A, B, C) :-
    (   'chr newvia'([A, B, C], D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, F, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                  F)
    ),
    member(G, F),
    G=suspension(_, active, _, _, H, I, J),
    H==A,
    I==B,
    J==C,
    !.
'test/1_1_$special_functor/3'(C, B, A) :-
    ground(A),
    ground(B),
    var(C),
    nb_getval('$chr_store_global_list_guard_entailment____variables___1',
              D),
    member(E, D),
    E=suspension(_, active, _, F),
    'chr lock'(C),
    'chr lock'(F),
    \+ memberchk_eq(C, F),
    'chr unlock'(C),
    'chr unlock'(F),
    !,
    functor(C, B, A).
'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'(K, L, M) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, O),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, functor(K, L, M)),
    !,
    negate_b(J, N),
    known(N),
    \+ try(O, functor(K, L, M)).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_=/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_=/2'(B, A) :-
    ground(A),
    ground(B),
    !,
    B=A.
'test/1_1_$special_=/2'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K=L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K=L).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_;/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_;/2'(A, B) :-
    A==fail,
    !,
    test(B).
'test/1_1_$special_;/2'(B, A) :-
    A==fail,
    !,
    test(B).
'test/1_1_$special_;/2'(A, B) :-
    negate_b(A, D),
    negate_b(B, C),
    (   known(C),
        test(A)
    ;   known(D),
        test(B)
    ).
'test/1_1_$special_is/2'(_, _) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_</2'(A, B) :-
    'test/1_1_$special_,/2'(A=<B, A=\=B).
'test/1_1_$special_>=/2'(_, _) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_>=/2'(B, A) :-
    '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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_>/2'(B, A) :-
    '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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_=\\=/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_=\\=/2'(B, A) :-
    ( number(A),
      (   'chr newvia_1'(B, C)
      ->  get_attr(C, guard_entailment, D),
          D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
      ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                    E)
      ),
      member(F, E),
      F=suspension(_, active, _, _, _, G, H)
    ),
    (   G==B,
        number(H),
        A>H,
        !
    ;   H==B,
        number(G),
        A<G,
        !
    ).
'test/1_1_$special_=\\=/2'(B, A) :-
    ( ground(A),
      ground(B)
    ),
    (   B=\=A,
        !
    ;   !,
        fail
    ).
'test/1_1_$special_=\\=/2'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K=\=L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K=\=L).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_=</2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_=</2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_=</2'(B, A) :-
    number(A),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==B,
    number(H),
    H=<A,
    !.
'test/1_1_$special_=</2'(A, B) :-
    number(A),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==B,
    number(H),
    A=<H,
    !.
'test/1_1_$special_=</2'(B, A) :-
    number(A),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==B,
    number(H),
    H=<A,
    !.
'test/1_1_$special_=</2'(A, B) :-
    number(A),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, H, G),
    G==B,
    number(H),
    A=<H,
    !.
'test/1_1_$special_=</2'(A, B) :-
    A==B,
    !.
'test/1_1_$special_=</2'(B, A) :-
    ( ground(A),
      ground(B)
    ),
    (   B=<A,
        !
    ;   !,
        fail
    ).
'test/1_1_$special_=</2'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K=<L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K=<L).
'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',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !.
'test/1_1_$special_\\==/2'(A, B) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !.
'test/1_1_$special_\\==/2'(F, A) :-
    nonvar(A),
    'chr lock'(A),
    functor(A, C, B),
    'chr unlock'(A),
    !,
    A=..[_|E],
    length(D, B),
    G=..[C|D],
    add_args_nmatch(D, E, H),
    I=(\+functor(F, C, B);functor(F, C, B), F=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'(K, L) :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
              A),
    member(B, A),
    B=suspension(_, active, _, _, J, N),
    !,
    B=suspension(_, _, _, _, C, D),
    setarg(2, B, removed),
    term_variables(term(C, D), I),
    arg(4, B, 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'(I, B),
    \+ try(J, K\==L),
    !,
    negate_b(J, M),
    known(M),
    \+ try(N, K\==L).
'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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(4, G, K),
              (   var(K)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                            L),
                  L=[_|M],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___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_$default___1'(J, G)
        )
    ).
'known/1_1_$default___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(4, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(4, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(4, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$default___1'(F, C)
        )
    ).
'known/1_1_$default___1__0'(A, M) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    E=suspension(_, _, _, _, G),
    setarg(2, E, removed),
    term_variables(G, L),
    arg(4, E, H),
    (   var(H)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  I),
        I=[_|J],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                 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_\\+/1___1'(L, E),
    (   var(M)
    ->  true
    ;   M=suspension(_, N, _, _, O),
        setarg(2, M, removed),
        (   N==not_stored_yet
        ->  P=[]
        ;   term_variables(O, P),
            ( arg(4, M, Q),
              (   var(Q)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                            R),
                  R=[_|S],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___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_$default___1'(P, M)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$default___1__0'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(F, not_stored_yet, 0, _, A),
        'chr gen_id'(F)
    ;   true
    ),
    'known/1_1_$default___1__0__0__6'(D, A, E).
'known/1_1_$default___1__0__0__6'([], A, B) :-
    'known/1_1_$default___1__1'(A, B).
'known/1_1_$default___1__0__0__6'([A|V], D, L) :-
    (   A=suspension(_, active, _, _, B, U),
        nonvar(B),
        B=(\+C),
        C==D
    ->  ( A=suspension(_, _, _, _, E, F),
          setarg(2, A, removed),
          term_variables(term(E, F), K),
          ( arg(4, A, 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'(K, A)
        ),
        ( arg(2, L, O),
          setarg(2, L, active),
          ( arg(3, L, M),
            N is M+1,
            setarg(3, L, N)
          ),
          (   O==not_stored_yet
          ->  L=suspension(_, _, _, _, P),
              term_variables(P, Q),
              'chr none_locked'(Q),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                          R),
                S=[L|R],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                         S),
                (   R=[T|_]
                ->  setarg(4, T, S)
                ;   true
                )
              ),
              'attach_known/1_1_$default___1'(Q, L)
          ;   true
          )
        ),
        known(U),
        (   L=suspension(_, active, N, _, _)
        ->  setarg(2, L, inactive),
            'known/1_1_$default___1__0__0__6'(V, D, L)
        ;   true
        )
    ;   'known/1_1_$default___1__0__0__6'(V, D, L)
    ).
'known/1_1_$default___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    'known/1_1_$default___1__1'(B, A).
'known/1_1_$default___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$default___1__1__0__7'(D, A, E).
'known/1_1_$default___1__1__0__7'([], A, B) :-
    'known/1_1_$default___1__2'(A, B).
'known/1_1_$default___1__1__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(3, M, N),
            O is N+1,
            setarg(3, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                         T),
                (   S=[U|_]
                ->  setarg(4, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$default___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$default___1__1__0__7'(W, E, M)
        ;   true
        )
    ;   'known/1_1_$default___1__1__0__7'(W, E, M)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(4, I, 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, I)
        )
    ).
'known/1_1_$special_;/2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(4, C, 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, C)
        )
    ).
'known/1_1_$special_;/2___2__0'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H;I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(4, P, 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'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_;/2___2__0'(A, T, K) :-
    nonvar(A),
    A=(\+B),
    nonvar(B),
    B=(C;D),
    (   'chr newvia_2'(C, D, E)
    ->  get_attr(E, guard_entailment, F),
        F=v(_, _, _, G, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  G)
    ),
    member(H, G),
    H=suspension(_, active, _, _, I, J),
    I==C,
    J==D,
    !,
    (   var(K)
    ->  true
    ;   K=suspension(_, L, _, _, M, N),
        setarg(2, K, removed),
        (   L==not_stored_yet
        ->  O=[]
        ;   term_variables(term(M, N), O),
            ( arg(4, K, 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, K)
        )
    ),
    known(T).
'known/1_1_$special_;/2___2__0'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    (   var(F)
    ->  F=suspension(G, not_stored_yet, 0, _, A, B),
        'chr gen_id'(G)
    ;   true
    ),
    'known/1_1_$special_;/2___2__0__0__7'(E, A, B, F).
'known/1_1_$special_;/2___2__0__0__7'([], A, B, C) :-
    'known/1_1_$special_;/2___2__1'(A, B, C).
'known/1_1_$special_;/2___2__0__0__7'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D;F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(3, O, P),
            Q is P+1,
            setarg(3, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(4, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_;/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_;/2___2__0__0__7'(Z,
                                                  E,
                                                  G,
                                                  O)
        ;   true
        )
    ;   'known/1_1_$special_;/2___2__0__0__7'(Z, E, G, O)
    ).
'known/1_1_$special_;/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    'known/1_1_$special_;/2___2__1'(B, C, A).
'known/1_1_$special_;/2___2__1'(A, R, I) :-
    nonvar(A),
    (   A=(\+B),
        (   nonvar(B),
            (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   B=nonvar(C),
                                                                                (   'chr newvia_1'(C,
                                                                                                   D)
                                                                                ->  get_attr(D,
                                                                                             guard_entailment,
                                                                                             E),
                                                                                    E=v(_, _, _, _, F, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                                                                              F)
                                                                                ),
                                                                                member(G,
                                                                                       F),
                                                                                G=suspension(_, active, _, _, H),
                                                                                H==C,
                                                                                !,
                                                                                (   var(I)
                                                                                ->  true
                                                                                ;   I=suspension(_, J, _, _, K, L),
                                                                                    setarg(2,
                                                                                           I,
                                                                                           removed),
                                                                                    (   J==not_stored_yet
                                                                                    ->  M=[]
                                                                                    ;   term_variables(term(K,
                                                                                                            L),
                                                                                                       M),
                                                                                        ( arg(4,
                                                                                              I,
                                                                                              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,
                                                                                                                            I)
                                                                                    )
                                                                                ),
                                                                                known(R)
                                                                            ;   B=var(S),
                                                                                (   'chr newvia_1'(S,
                                                                                                   T)
                                                                                ->  get_attr(T,
                                                                                             guard_entailment,
                                                                                             U),
                                                                                    U=v(_, _, _, _, _, V, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                                                                              V)
                                                                                ),
                                                                                member(W,
                                                                                       V),
                                                                                W=suspension(_, active, _, _, X),
                                                                                X==S,
                                                                                !,
                                                                                (   var(I)
                                                                                ->  true
                                                                                ;   I=suspension(_, Y, _, _, Z, A1),
                                                                                    setarg(2,
                                                                                           I,
                                                                                           removed),
                                                                                    (   Y==not_stored_yet
                                                                                    ->  B1=[]
                                                                                    ;   term_variables(term(Z,
                                                                                                            A1),
                                                                                                       B1),
                                                                                        ( arg(4,
                                                                                              I,
                                                                                              C1),
                                                                                          (   var(C1)
                                                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                        D1),
                                                                                              D1=[_|E1],
                                                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                       E1),
                                                                                              (   E1=[F1|_]
                                                                                              ->  setarg(4,
                                                                                                         F1,
                                                                                                         _)
                                                                                              ;   true
                                                                                              )
                                                                                          ;   C1=[_, _|E1],
                                                                                              setarg(2,
                                                                                                     C1,
                                                                                                     E1),
                                                                                              (   E1=[F1|_]
                                                                                              ->  setarg(4,
                                                                                                         F1,
                                                                                                         C1)
                                                                                              ;   true
                                                                                              )
                                                                                          )
                                                                                        ),
                                                                                        'detach_known/1_1_$special_;/2___2'(B1,
                                                                                                                            I)
                                                                                    )
                                                                                ),
                                                                                known(R)
                                                                            )
                                                                        ;   B=atom(G1),
                                                                            (   'chr newvia_1'(G1,
                                                                                               H1)
                                                                            ->  get_attr(H1,
                                                                                         guard_entailment,
                                                                                         I1),
                                                                                I1=v(_, _, _, _, _, _, J1, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                                                                          J1)
                                                                            ),
                                                                            member(K1,
                                                                                   J1),
                                                                            K1=suspension(_, active, _, _, _, L1),
                                                                            L1==G1,
                                                                            !,
                                                                            (   var(I)
                                                                            ->  true
                                                                            ;   I=suspension(_, M1, _, _, N1, O1),
                                                                                setarg(2,
                                                                                       I,
                                                                                       removed),
                                                                                (   M1==not_stored_yet
                                                                                ->  P1=[]
                                                                                ;   term_variables(term(N1,
                                                                                                        O1),
                                                                                                   P1),
                                                                                    ( arg(4,
                                                                                          I,
                                                                                          Q1),
                                                                                      (   var(Q1)
                                                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                    R1),
                                                                                          R1=[_|S1],
                                                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                   S1),
                                                                                          (   S1=[T1|_]
                                                                                          ->  setarg(4,
                                                                                                     T1,
                                                                                                     _)
                                                                                          ;   true
                                                                                          )
                                                                                      ;   Q1=[_, _|S1],
                                                                                          setarg(2,
                                                                                                 Q1,
                                                                                                 S1),
                                                                                          (   S1=[T1|_]
                                                                                          ->  setarg(4,
                                                                                                     T1,
                                                                                                     Q1)
                                                                                          ;   true
                                                                                          )
                                                                                      )
                                                                                    ),
                                                                                    'detach_known/1_1_$special_;/2___2'(P1,
                                                                                                                        I)
                                                                                )
                                                                            ),
                                                                            known(R)
                                                                        )
                                                                    ;   B=atomic(U1),
                                                                        (   'chr newvia_1'(U1,
                                                                                           V1)
                                                                        ->  get_attr(V1,
                                                                                     guard_entailment,
                                                                                     W1),
                                                                            W1=v(_, _, _, _, _, _, _, X1, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                                                                                      X1)
                                                                        ),
                                                                        member(Y1,
                                                                               X1),
                                                                        Y1=suspension(_, active, _, _, _, Z1),
                                                                        Z1==U1,
                                                                        !,
                                                                        (   var(I)
                                                                        ->  true
                                                                        ;   I=suspension(_, A2, _, _, B2, C2),
                                                                            setarg(2,
                                                                                   I,
                                                                                   removed),
                                                                            (   A2==not_stored_yet
                                                                            ->  D2=[]
                                                                            ;   term_variables(term(B2,
                                                                                                    C2),
                                                                                               D2),
                                                                                ( arg(4,
                                                                                      I,
                                                                                      E2),
                                                                                  (   var(E2)
                                                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                F2),
                                                                                      F2=[_|G2],
                                                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                               G2),
                                                                                      (   G2=[H2|_]
                                                                                      ->  setarg(4,
                                                                                                 H2,
                                                                                                 _)
                                                                                      ;   true
                                                                                      )
                                                                                  ;   E2=[_, _|G2],
                                                                                      setarg(2,
                                                                                             E2,
                                                                                             G2),
                                                                                      (   G2=[H2|_]
                                                                                      ->  setarg(4,
                                                                                                 H2,
                                                                                                 E2)
                                                                                      ;   true
                                                                                      )
                                                                                  )
                                                                                ),
                                                                                'detach_known/1_1_$special_;/2___2'(D2,
                                                                                                                    I)
                                                                            )
                                                                        ),
                                                                        known(R)
                                                                    )
                                                                ;   B=compound(I2),
                                                                    (   'chr newvia_1'(I2,
                                                                                       J2)
                                                                    ->  get_attr(J2,
                                                                                 guard_entailment,
                                                                                 K2),
                                                                        K2=v(_, _, _, _, _, _, _, _, L2, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                                                                                  L2)
                                                                    ),
                                                                    member(M2,
                                                                           L2),
                                                                    M2=suspension(_, active, _, _, _, N2),
                                                                    N2==I2,
                                                                    !,
                                                                    (   var(I)
                                                                    ->  true
                                                                    ;   I=suspension(_, O2, _, _, P2, Q2),
                                                                        setarg(2,
                                                                               I,
                                                                               removed),
                                                                        (   O2==not_stored_yet
                                                                        ->  R2=[]
                                                                        ;   term_variables(term(P2,
                                                                                                Q2),
                                                                                           R2),
                                                                            ( arg(4,
                                                                                  I,
                                                                                  S2),
                                                                              (   var(S2)
                                                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                            T2),
                                                                                  T2=[_|U2],
                                                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                           U2),
                                                                                  (   U2=[V2|_]
                                                                                  ->  setarg(4,
                                                                                             V2,
                                                                                             _)
                                                                                  ;   true
                                                                                  )
                                                                              ;   S2=[_, _|U2],
                                                                                  setarg(2,
                                                                                         S2,
                                                                                         U2),
                                                                                  (   U2=[V2|_]
                                                                                  ->  setarg(4,
                                                                                             V2,
                                                                                             S2)
                                                                                  ;   true
                                                                                  )
                                                                              )
                                                                            ),
                                                                            'detach_known/1_1_$special_;/2___2'(R2,
                                                                                                                I)
                                                                        )
                                                                    ),
                                                                    known(R)
                                                                )
                                                            ;   B=ground(W2),
                                                                (   'chr newvia_1'(W2,
                                                                                   X2)
                                                                ->  get_attr(X2,
                                                                             guard_entailment,
                                                                             Y2),
                                                                    Y2=v(_, _, _, _, _, _, _, _, _, Z2, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                                                                              Z2)
                                                                ),
                                                                member(A3,
                                                                       Z2),
                                                                A3=suspension(_, active, _, _, _, B3),
                                                                B3==W2,
                                                                !,
                                                                (   var(I)
                                                                ->  true
                                                                ;   I=suspension(_, C3, _, _, D3, E3),
                                                                    setarg(2,
                                                                           I,
                                                                           removed),
                                                                    (   C3==not_stored_yet
                                                                    ->  F3=[]
                                                                    ;   term_variables(term(D3,
                                                                                            E3),
                                                                                       F3),
                                                                        ( arg(4,
                                                                              I,
                                                                              G3),
                                                                          (   var(G3)
                                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                        H3),
                                                                              H3=[_|I3],
                                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                       I3),
                                                                              (   I3=[J3|_]
                                                                              ->  setarg(4,
                                                                                         J3,
                                                                                         _)
                                                                              ;   true
                                                                              )
                                                                          ;   G3=[_, _|I3],
                                                                              setarg(2,
                                                                                     G3,
                                                                                     I3),
                                                                              (   I3=[J3|_]
                                                                              ->  setarg(4,
                                                                                         J3,
                                                                                         G3)
                                                                              ;   true
                                                                              )
                                                                          )
                                                                        ),
                                                                        'detach_known/1_1_$special_;/2___2'(F3,
                                                                                                            I)
                                                                    )
                                                                ),
                                                                known(R)
                                                            )
                                                        ;   B=integer(K3),
                                                            (   'chr newvia_1'(K3,
                                                                               L3)
                                                            ->  get_attr(L3,
                                                                         guard_entailment,
                                                                         M3),
                                                                M3=v(_, _, _, _, _, _, _, _, _, _, N3, _, _, _, _, _, _, _, _, _, _, _)
                                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                                                                          N3)
                                                            ),
                                                            member(O3,
                                                                   N3),
                                                            O3=suspension(_, active, _, _, _, P3),
                                                            P3==K3,
                                                            !,
                                                            (   var(I)
                                                            ->  true
                                                            ;   I=suspension(_, Q3, _, _, R3, S3),
                                                                setarg(2,
                                                                       I,
                                                                       removed),
                                                                (   Q3==not_stored_yet
                                                                ->  T3=[]
                                                                ;   term_variables(term(R3,
                                                                                        S3),
                                                                                   T3),
                                                                    ( arg(4,
                                                                          I,
                                                                          U3),
                                                                      (   var(U3)
                                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                    V3),
                                                                          V3=[_|W3],
                                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                   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_;/2___2'(T3,
                                                                                                        I)
                                                                )
                                                            ),
                                                            known(R)
                                                        )
                                                    ;   B=float(Y3),
                                                        (   'chr newvia_1'(Y3,
                                                                           Z3)
                                                        ->  get_attr(Z3,
                                                                     guard_entailment,
                                                                     A4),
                                                            A4=v(_, _, _, _, _, _, _, _, _, _, _, B4, _, _, _, _, _, _, _, _, _, _)
                                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                                                                      B4)
                                                        ),
                                                        member(C4,
                                                               B4),
                                                        C4=suspension(_, active, _, _, _, D4),
                                                        D4==Y3,
                                                        !,
                                                        (   var(I)
                                                        ->  true
                                                        ;   I=suspension(_, E4, _, _, F4, G4),
                                                            setarg(2,
                                                                   I,
                                                                   removed),
                                                            (   E4==not_stored_yet
                                                            ->  H4=[]
                                                            ;   term_variables(term(F4,
                                                                                    G4),
                                                                               H4),
                                                                ( arg(4,
                                                                      I,
                                                                      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(4,
                                                                                 L4,
                                                                                 _)
                                                                      ;   true
                                                                      )
                                                                  ;   I4=[_, _|K4],
                                                                      setarg(2,
                                                                             I4,
                                                                             K4),
                                                                      (   K4=[L4|_]
                                                                      ->  setarg(4,
                                                                                 L4,
                                                                                 I4)
                                                                      ;   true
                                                                      )
                                                                  )
                                                                ),
                                                                'detach_known/1_1_$special_;/2___2'(H4,
                                                                                                    I)
                                                            )
                                                        ),
                                                        known(R)
                                                    )
                                                ;   B=number(M4),
                                                    (   'chr newvia_1'(M4,
                                                                       N4)
                                                    ->  get_attr(N4,
                                                                 guard_entailment,
                                                                 O4),
                                                        O4=v(_, _, _, _, _, _, _, _, _, _, _, _, P4, _, _, _, _, _, _, _, _, _)
                                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                                                                  P4)
                                                    ),
                                                    member(Q4,
                                                           P4),
                                                    Q4=suspension(_, active, _, _, _, R4),
                                                    R4==M4,
                                                    !,
                                                    (   var(I)
                                                    ->  true
                                                    ;   I=suspension(_, S4, _, _, T4, U4),
                                                        setarg(2,
                                                               I,
                                                               removed),
                                                        (   S4==not_stored_yet
                                                        ->  V4=[]
                                                        ;   term_variables(term(T4,
                                                                                U4),
                                                                           V4),
                                                            ( arg(4,
                                                                  I,
                                                                  W4),
                                                              (   var(W4)
                                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                            X4),
                                                                  X4=[_|Y4],
                                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                           Y4),
                                                                  (   Y4=[Z4|_]
                                                                  ->  setarg(4,
                                                                             Z4,
                                                                             _)
                                                                  ;   true
                                                                  )
                                                              ;   W4=[_, _|Y4],
                                                                  setarg(2,
                                                                         W4,
                                                                         Y4),
                                                                  (   Y4=[Z4|_]
                                                                  ->  setarg(4,
                                                                             Z4,
                                                                             W4)
                                                                  ;   true
                                                                  )
                                                              )
                                                            ),
                                                            'detach_known/1_1_$special_;/2___2'(V4,
                                                                                                I)
                                                        )
                                                    ),
                                                    known(R)
                                                )
                                            ;   B=(A5=\=B5),
                                                (   'chr newvia_2'(A5,
                                                                   B5,
                                                                   C5)
                                                ->  get_attr(C5,
                                                             guard_entailment,
                                                             D5),
                                                    D5=v(_, _, _, _, _, _, _, _, _, _, _, _, _, E5, _, _, _, _, _, _, _, _)
                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                                                              E5)
                                                ),
                                                member(F5, E5),
                                                F5=suspension(_, active, _, _, _, G5, H5),
                                                G5==A5,
                                                H5==B5,
                                                !,
                                                (   var(I)
                                                ->  true
                                                ;   I=suspension(_, I5, _, _, J5, K5),
                                                    setarg(2, I, removed),
                                                    (   I5==not_stored_yet
                                                    ->  L5=[]
                                                    ;   term_variables(term(J5,
                                                                            K5),
                                                                       L5),
                                                        ( arg(4,
                                                              I,
                                                              M5),
                                                          (   var(M5)
                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                        N5),
                                                              N5=[_|O5],
                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                       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_;/2___2'(L5,
                                                                                            I)
                                                    )
                                                ),
                                                known(R)
                                            )
                                        ;   B=(\+Q5),
                                            (   'chr newvia_1'(Q5,
                                                               R5)
                                            ->  get_attr(R5,
                                                         guard_entailment,
                                                         S5),
                                                S5=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, T5, _, _, _, _, _, _, _)
                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                          T5)
                                            ),
                                            member(U5, T5),
                                            U5=suspension(_, active, _, _, V5),
                                            V5==Q5,
                                            !,
                                            (   var(I)
                                            ->  true
                                            ;   I=suspension(_, W5, _, _, X5, Y5),
                                                setarg(2, I, removed),
                                                (   W5==not_stored_yet
                                                ->  Z5=[]
                                                ;   term_variables(term(X5,
                                                                        Y5),
                                                                   Z5),
                                                    ( arg(4, I, A6),
                                                      (   var(A6)
                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                    B6),
                                                          B6=[_|C6],
                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                   C6),
                                                          (   C6=[D6|_]
                                                          ->  setarg(4,
                                                                     D6,
                                                                     _)
                                                          ;   true
                                                          )
                                                      ;   A6=[_, _|C6],
                                                          setarg(2,
                                                                 A6,
                                                                 C6),
                                                          (   C6=[D6|_]
                                                          ->  setarg(4,
                                                                     D6,
                                                                     A6)
                                                          ;   true
                                                          )
                                                      )
                                                    ),
                                                    'detach_known/1_1_$special_;/2___2'(Z5,
                                                                                        I)
                                                )
                                            ),
                                            known(R)
                                        )
                                    ;   B=functor(E6, F6, G6),
                                        (   'chr newvia'(
                                                         [ E6,
                                                           F6,
                                                           G6
                                                         ],
                                                         H6)
                                        ->  get_attr(H6,
                                                     guard_entailment,
                                                     I6),
                                            I6=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, J6, _, _, _, _, _, _)
                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                                                      J6)
                                        ),
                                        member(K6, J6),
                                        K6=suspension(_, active, _, _, L6, M6, N6),
                                        L6==E6,
                                        M6==F6,
                                        N6==G6,
                                        !,
                                        (   var(I)
                                        ->  true
                                        ;   I=suspension(_, O6, _, _, P6, Q6),
                                            setarg(2, I, removed),
                                            (   O6==not_stored_yet
                                            ->  R6=[]
                                            ;   term_variables(term(P6,
                                                                    Q6),
                                                               R6),
                                                ( arg(4, I, S6),
                                                  (   var(S6)
                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                T6),
                                                      T6=[_|U6],
                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                               U6),
                                                      (   U6=[V6|_]
                                                      ->  setarg(4,
                                                                 V6,
                                                                 _)
                                                      ;   true
                                                      )
                                                  ;   S6=[_, _|U6],
                                                      setarg(2,
                                                             S6,
                                                             U6),
                                                      (   U6=[V6|_]
                                                      ->  setarg(4,
                                                                 V6,
                                                                 S6)
                                                      ;   true
                                                      )
                                                  )
                                                ),
                                                'detach_known/1_1_$special_;/2___2'(R6,
                                                                                    I)
                                            )
                                        ),
                                        known(R)
                                    )
                                ;   B=(W6\=X6),
                                    (   'chr newvia_2'(W6,
                                                       X6,
                                                       Y6)
                                    ->  get_attr(Y6,
                                                 guard_entailment,
                                                 Z6),
                                        Z6=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, A7, _, _, _, _, _)
                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                                                  A7)
                                    ),
                                    member(B7, A7),
                                    B7=suspension(_, active, _, _, _, C7, D7),
                                    C7==W6,
                                    D7==X6,
                                    !,
                                    (   var(I)
                                    ->  true
                                    ;   I=suspension(_, E7, _, _, F7, G7),
                                        setarg(2, I, removed),
                                        (   E7==not_stored_yet
                                        ->  H7=[]
                                        ;   term_variables(term(F7,
                                                                G7),
                                                           H7),
                                            ( arg(4, I, 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'(H7,
                                                                                I)
                                        )
                                    ),
                                    known(R)
                                )
                            ;   B=(M7=N7),
                                (   'chr newvia_2'(M7,
                                                   N7,
                                                   O7)
                                ->  get_attr(O7,
                                             guard_entailment,
                                             P7),
                                    P7=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, Q7, _, _, _, _)
                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                                              Q7)
                                ),
                                member(R7, Q7),
                                R7=suspension(_, active, _, _, S7, T7),
                                S7==M7,
                                T7==N7,
                                !,
                                (   var(I)
                                ->  true
                                ;   I=suspension(_, U7, _, _, V7, W7),
                                    setarg(2, I, removed),
                                    (   U7==not_stored_yet
                                    ->  X7=[]
                                    ;   term_variables(term(V7,
                                                            W7),
                                                       X7),
                                        ( arg(4, I, Y7),
                                          (   var(Y7)
                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                        Z7),
                                              Z7=[_|A8],
                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                       A8),
                                              (   A8=[B8|_]
                                              ->  setarg(4, B8, _)
                                              ;   true
                                              )
                                          ;   Y7=[_, _|A8],
                                              setarg(2, Y7, A8),
                                              (   A8=[B8|_]
                                              ->  setarg(4,
                                                         B8,
                                                         Y7)
                                              ;   true
                                              )
                                          )
                                        ),
                                        'detach_known/1_1_$special_;/2___2'(X7,
                                                                            I)
                                    )
                                ),
                                known(R)
                            )
                        ;   B=(C8\==D8),
                            (   'chr newvia_2'(C8, D8, E8)
                            ->  get_attr(E8, guard_entailment, F8),
                                F8=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, G8, _, _, _)
                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                                          G8)
                            ),
                            member(H8, G8),
                            H8=suspension(_, active, _, _, _, I8, J8),
                            I8==C8,
                            J8==D8,
                            !,
                            (   var(I)
                            ->  true
                            ;   I=suspension(_, K8, _, _, L8, M8),
                                setarg(2, I, removed),
                                (   K8==not_stored_yet
                                ->  N8=[]
                                ;   term_variables(term(L8, M8),
                                                   N8),
                                    ( arg(4, I, O8),
                                      (   var(O8)
                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                    P8),
                                          P8=[_|Q8],
                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                   Q8),
                                          (   Q8=[R8|_]
                                          ->  setarg(4, R8, _)
                                          ;   true
                                          )
                                      ;   O8=[_, _|Q8],
                                          setarg(2, O8, Q8),
                                          (   Q8=[R8|_]
                                          ->  setarg(4, R8, O8)
                                          ;   true
                                          )
                                      )
                                    ),
                                    'detach_known/1_1_$special_;/2___2'(N8,
                                                                        I)
                                )
                            ),
                            known(R)
                        )
                    ;   B=(S8==T8),
                        (   'chr newvia_2'(S8, T8, U8)
                        ->  get_attr(U8, guard_entailment, V8),
                            V8=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, W8, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                                      W8)
                        ),
                        member(X8, W8),
                        X8=suspension(_, active, _, _, _, Y8, Z8),
                        Y8==S8,
                        Z8==T8,
                        !,
                        (   var(I)
                        ->  true
                        ;   I=suspension(_, A9, _, _, B9, C9),
                            setarg(2, I, removed),
                            (   A9==not_stored_yet
                            ->  D9=[]
                            ;   term_variables(term(B9, C9),
                                               D9),
                                ( arg(4, I, E9),
                                  (   var(E9)
                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                F9),
                                      F9=[_|G9],
                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                               G9),
                                      (   G9=[H9|_]
                                      ->  setarg(4, H9, _)
                                      ;   true
                                      )
                                  ;   E9=[_, _|G9],
                                      setarg(2, E9, G9),
                                      (   G9=[H9|_]
                                      ->  setarg(4, H9, E9)
                                      ;   true
                                      )
                                  )
                                ),
                                'detach_known/1_1_$special_;/2___2'(D9,
                                                                    I)
                            )
                        ),
                        known(R)
                    )
                ;   B=(I9=<J9),
                    (   'chr newvia_2'(I9, J9, K9)
                    ->  get_attr(K9, guard_entailment, L9),
                        L9=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, M9, _)
                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                                  M9)
                    ),
                    member(N9, M9),
                    N9=suspension(_, active, _, _, _, O9, P9),
                    O9==I9,
                    P9==J9,
                    !,
                    (   var(I)
                    ->  true
                    ;   I=suspension(_, Q9, _, _, R9, S9),
                        setarg(2, I, removed),
                        (   Q9==not_stored_yet
                        ->  T9=[]
                        ;   term_variables(term(R9, S9),
                                           T9),
                            ( arg(4, I, U9),
                              (   var(U9)
                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                            V9),
                                  V9=[_|W9],
                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                           W9),
                                  (   W9=[X9|_]
                                  ->  setarg(4, X9, _)
                                  ;   true
                                  )
                              ;   U9=[_, _|W9],
                                  setarg(2, U9, W9),
                                  (   W9=[X9|_]
                                  ->  setarg(4, X9, U9)
                                  ;   true
                                  )
                              )
                            ),
                            'detach_known/1_1_$special_;/2___2'(T9,
                                                                I)
                        )
                    ),
                    known(R)
                )
            ;   B=(Y9=:=Z9),
                (   'chr newvia_2'(Y9, Z9, A10)
                ->  get_attr(A10, guard_entailment, B10),
                    B10=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, C10)
                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                              C10)
                ),
                member(D10, C10),
                D10=suspension(_, active, _, _, _, E10, F10),
                E10==Y9,
                F10==Z9,
                !,
                (   var(I)
                ->  true
                ;   I=suspension(_, G10, _, _, H10, I10),
                    setarg(2, I, removed),
                    (   G10==not_stored_yet
                    ->  J10=[]
                    ;   term_variables(term(H10, I10), J10),
                        ( arg(4, I, 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'(J10, I)
                    )
                ),
                known(R)
            )
        ;   (   'chr newvia_1'(B, O10)
            ->  get_attr(O10, guard_entailment, P10),
                P10=v(_, _, Q10, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                          Q10)
            ),
            member(R10, Q10),
            R10=suspension(_, active, _, _, S10),
            S10==B,
            !,
            (   var(I)
            ->  true
            ;   I=suspension(_, T10, _, _, U10, V10),
                setarg(2, I, removed),
                (   T10==not_stored_yet
                ->  W10=[]
                ;   term_variables(term(U10, V10), W10),
                    ( arg(4, I, X10),
                      (   var(X10)
                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                    Y10),
                          Y10=[_|Z10],
                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                   Z10),
                          (   Z10=[A11|_]
                          ->  setarg(4, A11, _)
                          ;   true
                          )
                      ;   X10=[_, _|Z10],
                          setarg(2, X10, Z10),
                          (   Z10=[A11|_]
                          ->  setarg(4, A11, X10)
                          ;   true
                          )
                      )
                    ),
                    'detach_known/1_1_$special_;/2___2'(W10, I)
                )
            ),
            known(R)
        )
    ;   A=(B11, _),
        nonvar(B11),
        B11=(\+C11),
        nonvar(C11),
        C11=(D11;E11),
        (   'chr newvia_2'(D11, E11, F11)
        ->  get_attr(F11, guard_entailment, G11),
            G11=v(_, _, _, H11, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                      H11)
        ),
        member(I11, H11),
        I11=suspension(_, active, _, _, J11, K11),
        J11==D11,
        K11==E11,
        !,
        (   var(I)
        ->  true
        ;   I=suspension(_, L11, _, _, M11, N11),
            setarg(2, I, removed),
            (   L11==not_stored_yet
            ->  O11=[]
            ;   term_variables(term(M11, N11), O11),
                ( arg(4, I, P11),
                  (   var(P11)
                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                Q11),
                      Q11=[_|R11],
                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                               R11),
                      (   R11=[S11|_]
                      ->  setarg(4, S11, _)
                      ;   true
                      )
                  ;   P11=[_, _|R11],
                      setarg(2, P11, R11),
                      (   R11=[S11|_]
                      ->  setarg(4, S11, P11)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_;/2___2'(O11, I)
            )
        ),
        known(R)
    ).
'known/1_1_$special_;/2___2__1'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_;/2___2__1__0__34'(E, A, B, F).
'known/1_1_$special_;/2___2__1__0__34'([], A, B, C) :-
    'known/1_1_$special_;/2___2__2'(A, B, C).
'known/1_1_$special_;/2___2__1__0__34'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E;G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(3, P, Q),
            R is Q+1,
            setarg(3, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(4, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_;/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_;/2___2__1__0__34'(A1,
                                                   F,
                                                   H,
                                                   P)
        ;   true
        )
    ;   'known/1_1_$special_;/2___2__1__0__34'(A1,
                                               F,
                                               H,
                                               P)
    ).
'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, S, J) :-
    ( nonvar(A),
      A=(B, _),
      nonvar(B),
      B=(\+C)
    ),
    (   nonvar(C),
        (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   (   C=nonvar(D),
                                                                            (   'chr newvia_1'(D,
                                                                                               E)
                                                                            ->  get_attr(E,
                                                                                         guard_entailment,
                                                                                         F),
                                                                                F=v(_, _, _, _, G, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                                                                          G)
                                                                            ),
                                                                            member(H,
                                                                                   G),
                                                                            H=suspension(_, active, _, _, I),
                                                                            I==D,
                                                                            !,
                                                                            (   var(J)
                                                                            ->  true
                                                                            ;   J=suspension(_, K, _, _, L, M),
                                                                                setarg(2,
                                                                                       J,
                                                                                       removed),
                                                                                (   K==not_stored_yet
                                                                                ->  N=[]
                                                                                ;   term_variables(term(L,
                                                                                                        M),
                                                                                                   N),
                                                                                    ( arg(4,
                                                                                          J,
                                                                                          O),
                                                                                      (   var(O)
                                                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                    P),
                                                                                          P=[_|Q],
                                                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                   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_;/2___2'(N,
                                                                                                                        J)
                                                                                )
                                                                            ),
                                                                            known(S)
                                                                        ;   C=var(T),
                                                                            (   'chr newvia_1'(T,
                                                                                               U)
                                                                            ->  get_attr(U,
                                                                                         guard_entailment,
                                                                                         V),
                                                                                V=v(_, _, _, _, _, W, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                                                                          W)
                                                                            ),
                                                                            member(X,
                                                                                   W),
                                                                            X=suspension(_, active, _, _, Y),
                                                                            Y==T,
                                                                            !,
                                                                            (   var(J)
                                                                            ->  true
                                                                            ;   J=suspension(_, Z, _, _, A1, B1),
                                                                                setarg(2,
                                                                                       J,
                                                                                       removed),
                                                                                (   Z==not_stored_yet
                                                                                ->  C1=[]
                                                                                ;   term_variables(term(A1,
                                                                                                        B1),
                                                                                                   C1),
                                                                                    ( arg(4,
                                                                                          J,
                                                                                          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'(C1,
                                                                                                                        J)
                                                                                )
                                                                            ),
                                                                            known(S)
                                                                        )
                                                                    ;   C=atom(H1),
                                                                        (   'chr newvia_1'(H1,
                                                                                           I1)
                                                                        ->  get_attr(I1,
                                                                                     guard_entailment,
                                                                                     J1),
                                                                            J1=v(_, _, _, _, _, _, K1, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                                                                      K1)
                                                                        ),
                                                                        member(L1,
                                                                               K1),
                                                                        L1=suspension(_, active, _, _, _, M1),
                                                                        M1==H1,
                                                                        !,
                                                                        (   var(J)
                                                                        ->  true
                                                                        ;   J=suspension(_, N1, _, _, O1, P1),
                                                                            setarg(2,
                                                                                   J,
                                                                                   removed),
                                                                            (   N1==not_stored_yet
                                                                            ->  Q1=[]
                                                                            ;   term_variables(term(O1,
                                                                                                    P1),
                                                                                               Q1),
                                                                                ( arg(4,
                                                                                      J,
                                                                                      R1),
                                                                                  (   var(R1)
                                                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                                S1),
                                                                                      S1=[_|T1],
                                                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                               T1),
                                                                                      (   T1=[U1|_]
                                                                                      ->  setarg(4,
                                                                                                 U1,
                                                                                                 _)
                                                                                      ;   true
                                                                                      )
                                                                                  ;   R1=[_, _|T1],
                                                                                      setarg(2,
                                                                                             R1,
                                                                                             T1),
                                                                                      (   T1=[U1|_]
                                                                                      ->  setarg(4,
                                                                                                 U1,
                                                                                                 R1)
                                                                                      ;   true
                                                                                      )
                                                                                  )
                                                                                ),
                                                                                'detach_known/1_1_$special_;/2___2'(Q1,
                                                                                                                    J)
                                                                            )
                                                                        ),
                                                                        known(S)
                                                                    )
                                                                ;   C=atomic(V1),
                                                                    (   'chr newvia_1'(V1,
                                                                                       W1)
                                                                    ->  get_attr(W1,
                                                                                 guard_entailment,
                                                                                 X1),
                                                                        X1=v(_, _, _, _, _, _, _, Y1, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                                                                                  Y1)
                                                                    ),
                                                                    member(Z1,
                                                                           Y1),
                                                                    Z1=suspension(_, active, _, _, _, A2),
                                                                    A2==V1,
                                                                    !,
                                                                    (   var(J)
                                                                    ->  true
                                                                    ;   J=suspension(_, B2, _, _, C2, D2),
                                                                        setarg(2,
                                                                               J,
                                                                               removed),
                                                                        (   B2==not_stored_yet
                                                                        ->  E2=[]
                                                                        ;   term_variables(term(C2,
                                                                                                D2),
                                                                                           E2),
                                                                            ( arg(4,
                                                                                  J,
                                                                                  F2),
                                                                              (   var(F2)
                                                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                            G2),
                                                                                  G2=[_|H2],
                                                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                           H2),
                                                                                  (   H2=[I2|_]
                                                                                  ->  setarg(4,
                                                                                             I2,
                                                                                             _)
                                                                                  ;   true
                                                                                  )
                                                                              ;   F2=[_, _|H2],
                                                                                  setarg(2,
                                                                                         F2,
                                                                                         H2),
                                                                                  (   H2=[I2|_]
                                                                                  ->  setarg(4,
                                                                                             I2,
                                                                                             F2)
                                                                                  ;   true
                                                                                  )
                                                                              )
                                                                            ),
                                                                            'detach_known/1_1_$special_;/2___2'(E2,
                                                                                                                J)
                                                                        )
                                                                    ),
                                                                    known(S)
                                                                )
                                                            ;   C=compound(J2),
                                                                (   'chr newvia_1'(J2,
                                                                                   K2)
                                                                ->  get_attr(K2,
                                                                             guard_entailment,
                                                                             L2),
                                                                    L2=v(_, _, _, _, _, _, _, _, M2, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                                                                              M2)
                                                                ),
                                                                member(N2,
                                                                       M2),
                                                                N2=suspension(_, active, _, _, _, O2),
                                                                O2==J2,
                                                                !,
                                                                (   var(J)
                                                                ->  true
                                                                ;   J=suspension(_, P2, _, _, Q2, R2),
                                                                    setarg(2,
                                                                           J,
                                                                           removed),
                                                                    (   P2==not_stored_yet
                                                                    ->  S2=[]
                                                                    ;   term_variables(term(Q2,
                                                                                            R2),
                                                                                       S2),
                                                                        ( arg(4,
                                                                              J,
                                                                              T2),
                                                                          (   var(T2)
                                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                        U2),
                                                                              U2=[_|V2],
                                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                       V2),
                                                                              (   V2=[W2|_]
                                                                              ->  setarg(4,
                                                                                         W2,
                                                                                         _)
                                                                              ;   true
                                                                              )
                                                                          ;   T2=[_, _|V2],
                                                                              setarg(2,
                                                                                     T2,
                                                                                     V2),
                                                                              (   V2=[W2|_]
                                                                              ->  setarg(4,
                                                                                         W2,
                                                                                         T2)
                                                                              ;   true
                                                                              )
                                                                          )
                                                                        ),
                                                                        'detach_known/1_1_$special_;/2___2'(S2,
                                                                                                            J)
                                                                    )
                                                                ),
                                                                known(S)
                                                            )
                                                        ;   C=ground(X2),
                                                            (   'chr newvia_1'(X2,
                                                                               Y2)
                                                            ->  get_attr(Y2,
                                                                         guard_entailment,
                                                                         Z2),
                                                                Z2=v(_, _, _, _, _, _, _, _, _, A3, _, _, _, _, _, _, _, _, _, _, _, _)
                                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                                                                          A3)
                                                            ),
                                                            member(B3,
                                                                   A3),
                                                            B3=suspension(_, active, _, _, _, C3),
                                                            C3==X2,
                                                            !,
                                                            (   var(J)
                                                            ->  true
                                                            ;   J=suspension(_, D3, _, _, E3, F3),
                                                                setarg(2,
                                                                       J,
                                                                       removed),
                                                                (   D3==not_stored_yet
                                                                ->  G3=[]
                                                                ;   term_variables(term(E3,
                                                                                        F3),
                                                                                   G3),
                                                                    ( arg(4,
                                                                          J,
                                                                          H3),
                                                                      (   var(H3)
                                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                    I3),
                                                                          I3=[_|J3],
                                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                   J3),
                                                                          (   J3=[K3|_]
                                                                          ->  setarg(4,
                                                                                     K3,
                                                                                     _)
                                                                          ;   true
                                                                          )
                                                                      ;   H3=[_, _|J3],
                                                                          setarg(2,
                                                                                 H3,
                                                                                 J3),
                                                                          (   J3=[K3|_]
                                                                          ->  setarg(4,
                                                                                     K3,
                                                                                     H3)
                                                                          ;   true
                                                                          )
                                                                      )
                                                                    ),
                                                                    'detach_known/1_1_$special_;/2___2'(G3,
                                                                                                        J)
                                                                )
                                                            ),
                                                            known(S)
                                                        )
                                                    ;   C=integer(L3),
                                                        (   'chr newvia_1'(L3,
                                                                           M3)
                                                        ->  get_attr(M3,
                                                                     guard_entailment,
                                                                     N3),
                                                            N3=v(_, _, _, _, _, _, _, _, _, _, O3, _, _, _, _, _, _, _, _, _, _, _)
                                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                                                                      O3)
                                                        ),
                                                        member(P3,
                                                               O3),
                                                        P3=suspension(_, active, _, _, _, Q3),
                                                        Q3==L3,
                                                        !,
                                                        (   var(J)
                                                        ->  true
                                                        ;   J=suspension(_, R3, _, _, S3, T3),
                                                            setarg(2,
                                                                   J,
                                                                   removed),
                                                            (   R3==not_stored_yet
                                                            ->  U3=[]
                                                            ;   term_variables(term(S3,
                                                                                    T3),
                                                                               U3),
                                                                ( arg(4,
                                                                      J,
                                                                      V3),
                                                                  (   var(V3)
                                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                                W3),
                                                                      W3=[_|X3],
                                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                               X3),
                                                                      (   X3=[Y3|_]
                                                                      ->  setarg(4,
                                                                                 Y3,
                                                                                 _)
                                                                      ;   true
                                                                      )
                                                                  ;   V3=[_, _|X3],
                                                                      setarg(2,
                                                                             V3,
                                                                             X3),
                                                                      (   X3=[Y3|_]
                                                                      ->  setarg(4,
                                                                                 Y3,
                                                                                 V3)
                                                                      ;   true
                                                                      )
                                                                  )
                                                                ),
                                                                'detach_known/1_1_$special_;/2___2'(U3,
                                                                                                    J)
                                                            )
                                                        ),
                                                        known(S)
                                                    )
                                                ;   C=float(Z3),
                                                    (   'chr newvia_1'(Z3,
                                                                       A4)
                                                    ->  get_attr(A4,
                                                                 guard_entailment,
                                                                 B4),
                                                        B4=v(_, _, _, _, _, _, _, _, _, _, _, C4, _, _, _, _, _, _, _, _, _, _)
                                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                                                                  C4)
                                                    ),
                                                    member(D4,
                                                           C4),
                                                    D4=suspension(_, active, _, _, _, E4),
                                                    E4==Z3,
                                                    !,
                                                    (   var(J)
                                                    ->  true
                                                    ;   J=suspension(_, F4, _, _, G4, H4),
                                                        setarg(2,
                                                               J,
                                                               removed),
                                                        (   F4==not_stored_yet
                                                        ->  I4=[]
                                                        ;   term_variables(term(G4,
                                                                                H4),
                                                                           I4),
                                                            ( arg(4,
                                                                  J,
                                                                  J4),
                                                              (   var(J4)
                                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                            K4),
                                                                  K4=[_|L4],
                                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                           L4),
                                                                  (   L4=[M4|_]
                                                                  ->  setarg(4,
                                                                             M4,
                                                                             _)
                                                                  ;   true
                                                                  )
                                                              ;   J4=[_, _|L4],
                                                                  setarg(2,
                                                                         J4,
                                                                         L4),
                                                                  (   L4=[M4|_]
                                                                  ->  setarg(4,
                                                                             M4,
                                                                             J4)
                                                                  ;   true
                                                                  )
                                                              )
                                                            ),
                                                            'detach_known/1_1_$special_;/2___2'(I4,
                                                                                                J)
                                                        )
                                                    ),
                                                    known(S)
                                                )
                                            ;   C=number(N4),
                                                (   'chr newvia_1'(N4,
                                                                   O4)
                                                ->  get_attr(O4,
                                                             guard_entailment,
                                                             P4),
                                                    P4=v(_, _, _, _, _, _, _, _, _, _, _, _, Q4, _, _, _, _, _, _, _, _, _)
                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                                                              Q4)
                                                ),
                                                member(R4, Q4),
                                                R4=suspension(_, active, _, _, _, S4),
                                                S4==N4,
                                                !,
                                                (   var(J)
                                                ->  true
                                                ;   J=suspension(_, T4, _, _, U4, V4),
                                                    setarg(2, J, removed),
                                                    (   T4==not_stored_yet
                                                    ->  W4=[]
                                                    ;   term_variables(term(U4,
                                                                            V4),
                                                                       W4),
                                                        ( arg(4,
                                                              J,
                                                              X4),
                                                          (   var(X4)
                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                        Y4),
                                                              Y4=[_|Z4],
                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                       Z4),
                                                              (   Z4=[A5|_]
                                                              ->  setarg(4,
                                                                         A5,
                                                                         _)
                                                              ;   true
                                                              )
                                                          ;   X4=[_, _|Z4],
                                                              setarg(2,
                                                                     X4,
                                                                     Z4),
                                                              (   Z4=[A5|_]
                                                              ->  setarg(4,
                                                                         A5,
                                                                         X4)
                                                              ;   true
                                                              )
                                                          )
                                                        ),
                                                        'detach_known/1_1_$special_;/2___2'(W4,
                                                                                            J)
                                                    )
                                                ),
                                                known(S)
                                            )
                                        ;   C=(B5=\=C5),
                                            (   'chr newvia_2'(B5,
                                                               C5,
                                                               D5)
                                            ->  get_attr(D5,
                                                         guard_entailment,
                                                         E5),
                                                E5=v(_, _, _, _, _, _, _, _, _, _, _, _, _, F5, _, _, _, _, _, _, _, _)
                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                                                          F5)
                                            ),
                                            member(G5, F5),
                                            G5=suspension(_, active, _, _, _, H5, I5),
                                            H5==B5,
                                            I5==C5,
                                            !,
                                            (   var(J)
                                            ->  true
                                            ;   J=suspension(_, J5, _, _, K5, L5),
                                                setarg(2, J, removed),
                                                (   J5==not_stored_yet
                                                ->  M5=[]
                                                ;   term_variables(term(K5,
                                                                        L5),
                                                                   M5),
                                                    ( arg(4, J, N5),
                                                      (   var(N5)
                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                    O5),
                                                          O5=[_|P5],
                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                   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_;/2___2'(M5,
                                                                                        J)
                                                )
                                            ),
                                            known(S)
                                        )
                                    ;   C=(\+R5),
                                        (   'chr newvia_1'(R5, S5)
                                        ->  get_attr(S5,
                                                     guard_entailment,
                                                     T5),
                                            T5=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, U5, _, _, _, _, _, _, _)
                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                      U5)
                                        ),
                                        member(V5, U5),
                                        V5=suspension(_, active, _, _, W5),
                                        W5==R5,
                                        !,
                                        (   var(J)
                                        ->  true
                                        ;   J=suspension(_, X5, _, _, Y5, Z5),
                                            setarg(2, J, removed),
                                            (   X5==not_stored_yet
                                            ->  A6=[]
                                            ;   term_variables(term(Y5,
                                                                    Z5),
                                                               A6),
                                                ( arg(4, J, B6),
                                                  (   var(B6)
                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                                C6),
                                                      C6=[_|D6],
                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                               D6),
                                                      (   D6=[E6|_]
                                                      ->  setarg(4,
                                                                 E6,
                                                                 _)
                                                      ;   true
                                                      )
                                                  ;   B6=[_, _|D6],
                                                      setarg(2,
                                                             B6,
                                                             D6),
                                                      (   D6=[E6|_]
                                                      ->  setarg(4,
                                                                 E6,
                                                                 B6)
                                                      ;   true
                                                      )
                                                  )
                                                ),
                                                'detach_known/1_1_$special_;/2___2'(A6,
                                                                                    J)
                                            )
                                        ),
                                        known(S)
                                    )
                                ;   C=functor(F6, G6, H6),
                                    (   'chr newvia'(
                                                     [ F6,
                                                       G6,
                                                       H6
                                                     ],
                                                     I6)
                                    ->  get_attr(I6,
                                                 guard_entailment,
                                                 J6),
                                        J6=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, K6, _, _, _, _, _, _)
                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                                                  K6)
                                    ),
                                    member(L6, K6),
                                    L6=suspension(_, active, _, _, M6, N6, O6),
                                    M6==F6,
                                    N6==G6,
                                    O6==H6,
                                    !,
                                    (   var(J)
                                    ->  true
                                    ;   J=suspension(_, P6, _, _, Q6, R6),
                                        setarg(2, J, removed),
                                        (   P6==not_stored_yet
                                        ->  S6=[]
                                        ;   term_variables(term(Q6,
                                                                R6),
                                                           S6),
                                            ( arg(4, J, T6),
                                              (   var(T6)
                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                            U6),
                                                  U6=[_|V6],
                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                           V6),
                                                  (   V6=[W6|_]
                                                  ->  setarg(4,
                                                             W6,
                                                             _)
                                                  ;   true
                                                  )
                                              ;   T6=[_, _|V6],
                                                  setarg(2,
                                                         T6,
                                                         V6),
                                                  (   V6=[W6|_]
                                                  ->  setarg(4,
                                                             W6,
                                                             T6)
                                                  ;   true
                                                  )
                                              )
                                            ),
                                            'detach_known/1_1_$special_;/2___2'(S6,
                                                                                J)
                                        )
                                    ),
                                    known(S)
                                )
                            ;   C=(X6\=Y6),
                                (   'chr newvia_2'(X6,
                                                   Y6,
                                                   Z6)
                                ->  get_attr(Z6,
                                             guard_entailment,
                                             A7),
                                    A7=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, B7, _, _, _, _, _)
                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                                              B7)
                                ),
                                member(C7, B7),
                                C7=suspension(_, active, _, _, _, D7, E7),
                                D7==X6,
                                E7==Y6,
                                !,
                                (   var(J)
                                ->  true
                                ;   J=suspension(_, F7, _, _, G7, H7),
                                    setarg(2, J, removed),
                                    (   F7==not_stored_yet
                                    ->  I7=[]
                                    ;   term_variables(term(G7,
                                                            H7),
                                                       I7),
                                        ( arg(4, J, J7),
                                          (   var(J7)
                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                        K7),
                                              K7=[_|L7],
                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                       L7),
                                              (   L7=[M7|_]
                                              ->  setarg(4, M7, _)
                                              ;   true
                                              )
                                          ;   J7=[_, _|L7],
                                              setarg(2, J7, L7),
                                              (   L7=[M7|_]
                                              ->  setarg(4,
                                                         M7,
                                                         J7)
                                              ;   true
                                              )
                                          )
                                        ),
                                        'detach_known/1_1_$special_;/2___2'(I7,
                                                                            J)
                                    )
                                ),
                                known(S)
                            )
                        ;   C=(N7=O7),
                            (   'chr newvia_2'(N7, O7, P7)
                            ->  get_attr(P7, guard_entailment, Q7),
                                Q7=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, R7, _, _, _, _)
                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                                          R7)
                            ),
                            member(S7, R7),
                            S7=suspension(_, active, _, _, T7, U7),
                            T7==N7,
                            U7==O7,
                            !,
                            (   var(J)
                            ->  true
                            ;   J=suspension(_, V7, _, _, W7, X7),
                                setarg(2, J, removed),
                                (   V7==not_stored_yet
                                ->  Y7=[]
                                ;   term_variables(term(W7, X7),
                                                   Y7),
                                    ( arg(4, J, 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'(Y7,
                                                                        J)
                                )
                            ),
                            known(S)
                        )
                    ;   C=(D8\==E8),
                        (   'chr newvia_2'(D8, E8, F8)
                        ->  get_attr(F8, guard_entailment, G8),
                            G8=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, H8, _, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                                      H8)
                        ),
                        member(I8, H8),
                        I8=suspension(_, active, _, _, _, J8, K8),
                        J8==D8,
                        K8==E8,
                        !,
                        (   var(J)
                        ->  true
                        ;   J=suspension(_, L8, _, _, M8, N8),
                            setarg(2, J, removed),
                            (   L8==not_stored_yet
                            ->  O8=[]
                            ;   term_variables(term(M8, N8),
                                               O8),
                                ( arg(4, J, P8),
                                  (   var(P8)
                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                Q8),
                                      Q8=[_|R8],
                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                               R8),
                                      (   R8=[S8|_]
                                      ->  setarg(4, S8, _)
                                      ;   true
                                      )
                                  ;   P8=[_, _|R8],
                                      setarg(2, P8, R8),
                                      (   R8=[S8|_]
                                      ->  setarg(4, S8, P8)
                                      ;   true
                                      )
                                  )
                                ),
                                'detach_known/1_1_$special_;/2___2'(O8,
                                                                    J)
                            )
                        ),
                        known(S)
                    )
                ;   C=(T8==U8),
                    (   'chr newvia_2'(T8, U8, V8)
                    ->  get_attr(V8, guard_entailment, W8),
                        W8=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X8, _, _)
                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                                  X8)
                    ),
                    member(Y8, X8),
                    Y8=suspension(_, active, _, _, _, Z8, A9),
                    Z8==T8,
                    A9==U8,
                    !,
                    (   var(J)
                    ->  true
                    ;   J=suspension(_, B9, _, _, C9, D9),
                        setarg(2, J, removed),
                        (   B9==not_stored_yet
                        ->  E9=[]
                        ;   term_variables(term(C9, D9),
                                           E9),
                            ( arg(4, J, 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'(E9,
                                                                J)
                        )
                    ),
                    known(S)
                )
            ;   C=(J9=<K9),
                (   'chr newvia_2'(J9, K9, L9)
                ->  get_attr(L9, guard_entailment, M9),
                    M9=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, N9, _)
                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                              N9)
                ),
                member(O9, N9),
                O9=suspension(_, active, _, _, _, P9, Q9),
                P9==J9,
                Q9==K9,
                !,
                (   var(J)
                ->  true
                ;   J=suspension(_, R9, _, _, S9, T9),
                    setarg(2, J, removed),
                    (   R9==not_stored_yet
                    ->  U9=[]
                    ;   term_variables(term(S9, T9), U9),
                        ( arg(4, J, V9),
                          (   var(V9)
                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                        W9),
                              W9=[_|X9],
                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                       X9),
                              (   X9=[Y9|_]
                              ->  setarg(4, Y9, _)
                              ;   true
                              )
                          ;   V9=[_, _|X9],
                              setarg(2, V9, X9),
                              (   X9=[Y9|_]
                              ->  setarg(4, Y9, V9)
                              ;   true
                              )
                          )
                        ),
                        'detach_known/1_1_$special_;/2___2'(U9, J)
                    )
                ),
                known(S)
            )
        ;   C=(Z9=:=A10),
            (   'chr newvia_2'(Z9, A10, B10)
            ->  get_attr(B10, guard_entailment, C10),
                C10=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, D10)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                          D10)
            ),
            member(E10, D10),
            E10=suspension(_, active, _, _, _, F10, G10),
            F10==Z9,
            G10==A10,
            !,
            (   var(J)
            ->  true
            ;   J=suspension(_, H10, _, _, I10, J10),
                setarg(2, J, removed),
                (   H10==not_stored_yet
                ->  K10=[]
                ;   term_variables(term(I10, J10), K10),
                    ( arg(4, J, L10),
                      (   var(L10)
                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                    M10),
                          M10=[_|N10],
                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                   N10),
                          (   N10=[O10|_]
                          ->  setarg(4, O10, _)
                          ;   true
                          )
                      ;   L10=[_, _|N10],
                          setarg(2, L10, N10),
                          (   N10=[O10|_]
                          ->  setarg(4, O10, L10)
                          ;   true
                          )
                      )
                    ),
                    'detach_known/1_1_$special_;/2___2'(K10, J)
                )
            ),
            known(S)
        )
    ;   (   'chr newvia_1'(C, P10)
        ->  get_attr(P10, guard_entailment, Q10),
            Q10=v(_, _, R10, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                      R10)
        ),
        member(S10, R10),
        S10=suspension(_, active, _, _, T10),
        T10==C,
        !,
        (   var(J)
        ->  true
        ;   J=suspension(_, U10, _, _, V10, W10),
            setarg(2, J, removed),
            (   U10==not_stored_yet
            ->  X10=[]
            ;   term_variables(term(V10, W10), X10),
                ( arg(4, J, 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'(X10, J)
            )
        ),
        known(S)
    ).
'known/1_1_$special_;/2___2__2'(A, P, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, I, J),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  K=[]
        ;   term_variables(term(I, J), K),
            ( arg(4, G, 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(4, O, _)
                  ;   true
                  )
              ;   L=[_, _|N],
                  setarg(2, L, N),
                  (   N=[O|_]
                  ->  setarg(4, O, L)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_;/2___2'(K, G)
        )
    ),
    known(P).
'known/1_1_$special_;/2___2__2'(A, Q, H) :-
    nonvar(A),
    A=(B, _),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    G==B,
    !,
    (   var(H)
    ->  true
    ;   H=suspension(_, I, _, _, J, K),
        setarg(2, H, removed),
        (   I==not_stored_yet
        ->  L=[]
        ;   term_variables(term(J, K), L),
            ( arg(4, H, 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, H)
        )
    ),
    known(Q).
'known/1_1_$special_;/2___2__2'(A, K, B) :-
    A==fail,
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ),
    known(K).
'known/1_1_$special_;/2___2__2'(K, A, B) :-
    A==fail,
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ),
    known(K).
'known/1_1_$special_;/2___2__2'(A, _, B) :-
    A==true,
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ).
'known/1_1_$special_;/2___2__2'(_, A, B) :-
    A==true,
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ).
'known/1_1_$special_;/2___2__2'(A, B1, I) :-
    ( nonvar(A),
      A=(\+B),
      nonvar(B),
      B=functor(C, R, S)
    ),
    (   (   (   'chr newvia_1'(C, D)
            ->  get_attr(D, guard_entailment, E),
                E=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, F, _, _, _, _, _, _)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                          F)
            ),
            member(G, F),
            G=suspension(_, active, _, _, H, _, _),
            H==C,
            !,
            (   var(I)
            ->  true
            ;   I=suspension(_, J, _, _, K, L),
                setarg(2, I, removed),
                (   J==not_stored_yet
                ->  M=[]
                ;   term_variables(term(K, L), M),
                    ( arg(4, I, 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, I)
                )
            )
        ;   nonvar(C),
            'chr lock'(C),
            'chr lock'(R),
            'chr lock'(S),
            functor(C, R, S),
            'chr unlock'(C),
            'chr unlock'(R),
            'chr unlock'(S),
            !,
            (   var(I)
            ->  true
            ;   I=suspension(_, T, _, _, U, V),
                setarg(2, I, removed),
                (   T==not_stored_yet
                ->  W=[]
                ;   term_variables(term(U, V), W),
                    ( arg(4, I, 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'(W, I)
                )
            ),
            known(B1)
        )
    ;   nonvar(C),
        'chr lock'(C),
        'chr lock'(R),
        'chr lock'(S),
        \+ functor(C, R, S),
        'chr unlock'(C),
        'chr unlock'(R),
        'chr unlock'(S),
        !,
        (   var(I)
        ->  true
        ;   I=suspension(_, C1, _, _, D1, E1),
            setarg(2, I, removed),
            (   C1==not_stored_yet
            ->  F1=[]
            ;   term_variables(term(D1, E1), F1),
                ( arg(4, I, G1),
                  (   var(G1)
                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                H1),
                      H1=[_|I1],
                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                               I1),
                      (   I1=[J1|_]
                      ->  setarg(4, J1, _)
                      ;   true
                      )
                  ;   G1=[_, _|I1],
                      setarg(2, G1, I1),
                      (   I1=[J1|_]
                      ->  setarg(4, J1, G1)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_;/2___2'(F1, I)
            )
        )
    ).
'known/1_1_$special_;/2___2__2'(_, _, A) :-
    arg(2, A, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(4, G, 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, G)
        )
    ).
'known/1_1_$special_nonvar/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(4, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                           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_nonvar/1___1'(F, C)
        )
    ).
'known/1_1_$special_nonvar/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=nonvar(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(4, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                           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_nonvar/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_nonvar/1___1__0'(A, M) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    E=suspension(_, _, _, _, G),
    setarg(2, E, removed),
    term_variables(G, L),
    arg(4, E, H),
    (   var(H)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                  I),
        I=[_|J],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                 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_var/1___1'(L, E),
    (   var(M)
    ->  true
    ;   M=suspension(_, N, _, _, O),
        setarg(2, M, removed),
        (   N==not_stored_yet
        ->  P=[]
        ;   term_variables(O, P),
            ( arg(4, M, Q),
              (   var(Q)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                            R),
                  R=[_|S],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/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_nonvar/1___1'(P, M)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_nonvar/1___1__0'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(F, not_stored_yet, 0, _, A),
        'chr gen_id'(F)
    ;   true
    ),
    'known/1_1_$special_nonvar/1___1__0__0__7'(D, A, E).
'known/1_1_$special_nonvar/1___1__0__0__7'([], A, B) :-
    'known/1_1_$special_nonvar/1___1__1'(A, B).
'known/1_1_$special_nonvar/1___1__0__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=nonvar(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(3, M, N),
            O is N+1,
            setarg(3, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(4, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_nonvar/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_nonvar/1___1__0__0__7'(W,
                                                       E,
                                                       M)
        ;   true
        )
    ;   'known/1_1_$special_nonvar/1___1__0__0__7'(W, E, M)
    ).
'known/1_1_$special_nonvar/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    'known/1_1_$special_nonvar/1___1__1'(B, A).
'known/1_1_$special_nonvar/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_nonvar/1___1__1__0__8'(D, A, E).
'known/1_1_$special_nonvar/1___1__1__0__8'([], A, B) :-
    'known/1_1_$special_nonvar/1___1__2'(A, B).
'known/1_1_$special_nonvar/1___1__1__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=nonvar(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(3, N, O),
            P is O+1,
            setarg(3, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(4, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_nonvar/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_nonvar/1___1__1__0__8'(X,
                                                       F,
                                                       N)
        ;   true
        )
    ;   'known/1_1_$special_nonvar/1___1__1__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(4, G, 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, G)
        )
    ).
'known/1_1_$special_var/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(4, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                           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_var/1___1'(F, C)
        )
    ).
'known/1_1_$special_var/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=var(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(4, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                           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_var/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_var/1___1__0'(A, M) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    E=suspension(_, _, _, _, G),
    setarg(2, E, removed),
    term_variables(G, L),
    arg(4, E, H),
    (   var(H)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                  I),
        I=[_|J],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                 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_nonvar/1___1'(L, E),
    (   var(M)
    ->  true
    ;   M=suspension(_, N, _, _, O),
        setarg(2, M, removed),
        (   N==not_stored_yet
        ->  P=[]
        ;   term_variables(O, P),
            ( arg(4, M, Q),
              (   var(Q)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                            R),
                  R=[_|S],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/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_var/1___1'(P, M)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_var/1___1__0'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(F, not_stored_yet, 0, _, A),
        'chr gen_id'(F)
    ;   true
    ),
    'known/1_1_$special_var/1___1__0__0__7'(D, A, E).
'known/1_1_$special_var/1___1__0__0__7'([], A, B) :-
    'known/1_1_$special_var/1___1__1'(A, B).
'known/1_1_$special_var/1___1__0__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=var(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(3, M, N),
            O is N+1,
            setarg(3, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(4, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_var/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_var/1___1__0__0__7'(W, E, M)
        ;   true
        )
    ;   'known/1_1_$special_var/1___1__0__0__7'(W, E, M)
    ).
'known/1_1_$special_var/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    'known/1_1_$special_var/1___1__1'(B, A).
'known/1_1_$special_var/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_var/1___1__1__0__8'(D, A, E).
'known/1_1_$special_var/1___1__1__0__8'([], A, B) :-
    'known/1_1_$special_var/1___1__2'(A, B).
'known/1_1_$special_var/1___1__1__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=var(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(3, N, O),
            P is O+1,
            setarg(3, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(4, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_var/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_var/1___1__1__0__8'(X, F, N)
        ;   true
        )
    ;   'known/1_1_$special_var/1___1__1__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_atom/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_atom/1___1'(F, C)
        )
    ).
'known/1_1_$special_atom/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=atom(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                           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_atom/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_atom/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 239),
        !,
        '$extend_history'(A, 239),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_nonvar/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_atom/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_atom/1___1__1'(B, A)
    ).
'known/1_1_$special_atom/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_atom/1___1__1__0__7'(D, A, E).
'known/1_1_$special_atom/1___1__1__0__7'([], A, B) :-
    'known/1_1_$special_atom/1___1__2'(A, B).
'known/1_1_$special_atom/1___1__1__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=atom(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_atom/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_atom/1___1__1__0__7'(W, E, M)
        ;   true
        )
    ;   'known/1_1_$special_atom/1___1__1__0__7'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_atom/1___1__2__0__8'(D, A, E).
'known/1_1_$special_atom/1___1__2__0__8'([], A, B) :-
    'known/1_1_$special_atom/1___1__3'(A, B).
'known/1_1_$special_atom/1___1__2__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=atom(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_atom/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_atom/1___1__2__0__8'(X, F, N)
        ;   true
        )
    ;   'known/1_1_$special_atom/1___1__2__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_atomic/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_atomic/1___1'(F, C)
        )
    ).
'known/1_1_$special_atomic/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=atomic(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                           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_atomic/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_atomic/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 237),
        !,
        '$extend_history'(A, 237),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_nonvar/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_atomic/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_atomic/1___1__1'(B, A)
    ).
'known/1_1_$special_atomic/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_atomic/1___1__1__0__7'(D, A, E).
'known/1_1_$special_atomic/1___1__1__0__7'([], A, B) :-
    'known/1_1_$special_atomic/1___1__2'(A, B).
'known/1_1_$special_atomic/1___1__1__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=atomic(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_atomic/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_atomic/1___1__1__0__7'(W,
                                                       E,
                                                       M)
        ;   true
        )
    ;   'known/1_1_$special_atomic/1___1__1__0__7'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_atomic/1___1__2__0__8'(D, A, E).
'known/1_1_$special_atomic/1___1__2__0__8'([], A, B) :-
    'known/1_1_$special_atomic/1___1__3'(A, B).
'known/1_1_$special_atomic/1___1__2__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=atomic(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_atomic/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_atomic/1___1__2__0__8'(X,
                                                       F,
                                                       N)
        ;   true
        )
    ;   'known/1_1_$special_atomic/1___1__2__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_compound/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_compound/1___1'(F, C)
        )
    ).
'known/1_1_$special_compound/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=compound(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                           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_compound/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_compound/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 236),
        !,
        '$extend_history'(A, 236),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_nonvar/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_compound/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_compound/1___1__1'(B, A)
    ).
'known/1_1_$special_compound/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_compound/1___1__1__0__7'(D, A, E).
'known/1_1_$special_compound/1___1__1__0__7'([], A, B) :-
    'known/1_1_$special_compound/1___1__2'(A, B).
'known/1_1_$special_compound/1___1__1__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=compound(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_compound/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_compound/1___1__1__0__7'(W,
                                                         E,
                                                         M)
        ;   true
        )
    ;   'known/1_1_$special_compound/1___1__1__0__7'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_compound/1___1__2__0__8'(D, A, E).
'known/1_1_$special_compound/1___1__2__0__8'([], A, B) :-
    'known/1_1_$special_compound/1___1__3'(A, B).
'known/1_1_$special_compound/1___1__2__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=compound(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_compound/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_compound/1___1__2__0__8'(X,
                                                         F,
                                                         N)
        ;   true
        )
    ;   'known/1_1_$special_compound/1___1__2__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_ground/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_ground/1___1'(F, C)
        )
    ).
'known/1_1_$special_ground/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=ground(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                           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_ground/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_ground/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 235),
        !,
        '$extend_history'(A, 235),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_nonvar/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_ground/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_ground/1___1__1'(B, A)
    ).
'known/1_1_$special_ground/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_ground/1___1__1__0__7'(D, A, E).
'known/1_1_$special_ground/1___1__1__0__7'([], A, B) :-
    'known/1_1_$special_ground/1___1__2'(A, B).
'known/1_1_$special_ground/1___1__1__0__7'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=ground(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_ground/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_ground/1___1__1__0__7'(W,
                                                       E,
                                                       M)
        ;   true
        )
    ;   'known/1_1_$special_ground/1___1__1__0__7'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_ground/1___1__2__0__8'(D, A, E).
'known/1_1_$special_ground/1___1__2__0__8'([], A, B) :-
    'known/1_1_$special_ground/1___1__3'(A, B).
'known/1_1_$special_ground/1___1__2__0__8'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=ground(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_ground/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_ground/1___1__2__0__8'(X,
                                                       F,
                                                       N)
        ;   true
        )
    ;   'known/1_1_$special_ground/1___1__2__0__8'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_integer/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_integer/1___1'(F, C)
        )
    ).
'known/1_1_$special_integer/1___1__0'(A, B) :-
    nonvar(A),
    \+ integer(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, _, D),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  E=[]
        ;   term_variables(D, E),
            ( arg(5, B, F),
              (   var(F)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                            G),
                  G=[_|H],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                           H),
                  (   H=[I|_]
                  ->  setarg(5, I, _)
                  ;   true
                  )
              ;   F=[_, _|H],
                  setarg(2, F, H),
                  (   H=[I|_]
                  ->  setarg(5, I, F)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_integer/1___1'(E, B)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_integer/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 199),
        !,
        '$extend_history'(A, 199),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_number/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_integer/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_integer/1___1__1'(B, A)
    ).
'known/1_1_$special_integer/1___1__1'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=integer(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                           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_integer/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_integer/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_integer/1___1__1__0__8'(D, A, E).
'known/1_1_$special_integer/1___1__1__0__8'([], A, B) :-
    'known/1_1_$special_integer/1___1__2'(A, B).
'known/1_1_$special_integer/1___1__1__0__8'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=integer(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_integer/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_integer/1___1__1__0__8'(W,
                                                        E,
                                                        M)
        ;   true
        )
    ;   'known/1_1_$special_integer/1___1__1__0__8'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_integer/1___1__2__0__9'(D, A, E).
'known/1_1_$special_integer/1___1__2__0__9'([], A, B) :-
    'known/1_1_$special_integer/1___1__3'(A, B).
'known/1_1_$special_integer/1___1__2__0__9'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=integer(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_integer/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_integer/1___1__2__0__9'(X,
                                                        F,
                                                        N)
        ;   true
        )
    ;   'known/1_1_$special_integer/1___1__2__0__9'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_float/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_float/1___1'(F, C)
        )
    ).
'known/1_1_$special_float/1___1__0'(A, B) :-
    nonvar(A),
    \+ float(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, _, D),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  E=[]
        ;   term_variables(D, E),
            ( arg(5, B, F),
              (   var(F)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                            G),
                  G=[_|H],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                           H),
                  (   H=[I|_]
                  ->  setarg(5, I, _)
                  ;   true
                  )
              ;   F=[_, _|H],
                  setarg(2, F, H),
                  (   H=[I|_]
                  ->  setarg(5, I, F)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_float/1___1'(E, B)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_float/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 200),
        !,
        '$extend_history'(A, 200),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_number/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_float/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_float/1___1__1'(B, A)
    ).
'known/1_1_$special_float/1___1__1'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=float(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                           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_float/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_float/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_float/1___1__1__0__8'(D, A, E).
'known/1_1_$special_float/1___1__1__0__8'([], A, B) :-
    'known/1_1_$special_float/1___1__2'(A, B).
'known/1_1_$special_float/1___1__1__0__8'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=float(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_float/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_float/1___1__1__0__8'(W, E, M)
        ;   true
        )
    ;   'known/1_1_$special_float/1___1__1__0__8'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_float/1___1__2__0__9'(D, A, E).
'known/1_1_$special_float/1___1__2__0__9'([], A, B) :-
    'known/1_1_$special_float/1___1__3'(A, B).
'known/1_1_$special_float/1___1__2__0__9'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=float(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_float/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_float/1___1__2__0__9'(X, F, N)
        ;   true
        )
    ;   'known/1_1_$special_float/1___1__2__0__9'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(5, G, 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, G)
        )
    ).
'known/1_1_$special_number/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(5, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                           I),
                  (   I=[J|_]
                  ->  setarg(5, J, _)
                  ;   true
                  )
              ;   G=[_, _|I],
                  setarg(2, G, I),
                  (   I=[J|_]
                  ->  setarg(5, J, G)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_number/1___1'(F, C)
        )
    ).
'known/1_1_$special_number/1___1__0'(A, B) :-
    nonvar(A),
    \+ number(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, _, D),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  E=[]
        ;   term_variables(D, E),
            ( arg(5, B, F),
              (   var(F)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                            G),
                  G=[_|H],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                           H),
                  (   H=[I|_]
                  ->  setarg(5, I, _)
                  ;   true
                  )
              ;   F=[_, _|H],
                  setarg(2, F, H),
                  (   H=[I|_]
                  ->  setarg(5, I, F)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_number/1___1'(E, B)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_number/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=number(G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(5, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                           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_number/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_number/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, t, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    (   '$novel_production'(A, 238),
        !,
        '$extend_history'(A, 238),
        arg(2, A, F),
        setarg(2, A, active),
        arg(4, A, D),
        E is D+1,
        setarg(4, A, E),
        (   F==not_stored_yet
        ->  A=suspension(_, _, _, _, _, G),
            term_variables(G, H),
            'chr none_locked'(H),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                        I),
              J=[A|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'(H, A)
        ;   true
        ),
        'known/1_1_$special_nonvar/1'(B),
        (   A=suspension(_, active, _, E, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_number/1___1__1'(B, A)
        ;   true
        )
    ;   'known/1_1_$special_number/1___1__1'(B, A)
    ).
'known/1_1_$special_number/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_number/1___1__1__0__8'(D, A, E).
'known/1_1_$special_number/1___1__1__0__8'([], A, B) :-
    'known/1_1_$special_number/1___1__2'(A, B).
'known/1_1_$special_number/1___1__1__0__8'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=number(D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(4, M, N),
            O is N+1,
            setarg(4, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(5, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_number/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, _, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_number/1___1__1__0__8'(W,
                                                       E,
                                                       M)
        ;   true
        )
    ;   'known/1_1_$special_number/1___1__1__0__8'(W, E, M)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_number/1___1__2__0__9'(D, A, E).
'known/1_1_$special_number/1___1__2__0__9'([], A, B) :-
    'known/1_1_$special_number/1___1__3'(A, B).
'known/1_1_$special_number/1___1__2__0__9'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=number(E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(4, N, O),
            P is O+1,
            setarg(4, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(5, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_number/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, _, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_number/1___1__2__0__9'(X,
                                                       F,
                                                       N)
        ;   true
        )
    ;   'known/1_1_$special_number/1___1__2__0__9'(X, F, N)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(M, I)
        )
    ).
'known/1_1_$special_=\\=/2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(G, C)
        )
    ).
'known/1_1_$special_=\\=/2___2__0'(F, A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(G, not_stored_yet, t, 0, _, F, A),
        'chr gen_id'(G)
    ;   true
    ),
    'known/1_1_$special_=\\=/2___2__0__0__5'(D, F, A, E).
'known/1_1_$special_=\\=/2___2__0__0__5'([], A, B, C) :-
    'known/1_1_$special_=\\=/2___2__1'(A, B, C).
'known/1_1_$special_=\\=/2___2__0__0__5'([A|H], I, C, J) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C
        ),
        (   'chr newvia_2'(C, D, E)
        ->  get_attr(E, guard_entailment, F),
            F=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, G, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                      G)
        )
    ->  'known/1_1_$special_=\\=/2___2__0__1__5'(G,
                                                 D,
                                                 A,
                                                 H,
                                                 I,
                                                 C,
                                                 J)
    ;   'known/1_1_$special_=\\=/2___2__0__0__5'(H, I, C, J)
    ).
'known/1_1_$special_=\\=/2___2__0__1__5'([], _, _, A, B, C, D) :-
    'known/1_1_$special_=\\=/2___2__0__0__5'(A, B, C, D).
'known/1_1_$special_=\\=/2___2__0__1__5'([A|J], E, K, L, F, C, M) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C,
          D==E
        ),
        (   'chr newvia_2'(F, C, G)
        ->  get_attr(G, guard_entailment, H),
            H=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, I, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                      I)
        )
    ->  'known/1_1_$special_=\\=/2___2__0__2__5'(I,
                                                 A,
                                                 J,
                                                 E,
                                                 K,
                                                 L,
                                                 F,
                                                 C,
                                                 M)
    ;   'known/1_1_$special_=\\=/2___2__0__1__5'(J,
                                                 E,
                                                 K,
                                                 L,
                                                 F,
                                                 C,
                                                 M)
    ).
'known/1_1_$special_=\\=/2___2__0__2__5'([], _, A, B, C, D, E, F, G) :-
    'known/1_1_$special_=\\=/2___2__0__1__5'(A,
                                             B,
                                             C,
                                             D,
                                             E,
                                             F,
                                             G).
'known/1_1_$special_=\\=/2___2__0__2__5'([A|T], B, U, S, H, V, D, F, G) :-
    (   A=suspension(_, active, _, _, _, C, E),
        A\==B,
        ( C==D,
          E==F
        ),
        I=t(188, A, G, B, H),
        '$novel_production'(A, I),
        '$novel_production'(G, I),
        '$novel_production'(B, I),
        '$novel_production'(H, I)
    ->  '$extend_history'(G, I),
        ( arg(2, G, L),
          setarg(2, G, active),
          ( arg(4, G, J),
            K is J+1,
            setarg(4, G, K)
          ),
          (   L==not_stored_yet
          ->  G=suspension(_, _, _, _, _, M, N),
              term_variables(term(M, N), O),
              'chr none_locked'(O),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                          P),
                Q=[G|P],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                         Q),
                (   P=[R|_]
                ->  setarg(5, R, Q)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=\\=/2___2'(O, G)
          ;   true
          )
        ),
        'known/1_1_$special_=\\=/2'(D, S),
        (   G=suspension(_, active, _, K, _, _, _)
        ->  setarg(2, G, inactive),
            'known/1_1_$special_=\\=/2___2__0__2__5'(T,
                                                     B,
                                                     U,
                                                     S,
                                                     H,
                                                     V,
                                                     D,
                                                     F,
                                                     G)
        ;   true
        )
    ;   'known/1_1_$special_=\\=/2___2__0__2__5'(T,
                                                 B,
                                                 U,
                                                 S,
                                                 H,
                                                 V,
                                                 D,
                                                 F,
                                                 G)
    ).
'known/1_1_$special_=\\=/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    'known/1_1_$special_=\\=/2___2__1'(B, C, A).
'known/1_1_$special_=\\=/2___2__1'(A, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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__6'(D, A, E, F).
'known/1_1_$special_=\\=/2___2__1__0__6'([], A, B, C) :-
    'known/1_1_$special_=\\=/2___2__2'(A, B, C).
'known/1_1_$special_=\\=/2___2__1__0__6'([A|I], C, D, J) :-
    (   ( A=suspension(_, active, _, _, _, H, B),
          B==C
        ),
        (   'chr newvia_2'(C, D, E)
        ->  get_attr(E, guard_entailment, F),
            F=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, G, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                      G)
        )
    ->  'known/1_1_$special_=\\=/2___2__1__1__6'(G,
                                                 H,
                                                 A,
                                                 I,
                                                 C,
                                                 D,
                                                 J)
    ;   'known/1_1_$special_=\\=/2___2__1__0__6'(I, C, D, J)
    ).
'known/1_1_$special_=\\=/2___2__1__1__6'([], _, _, A, B, C, D) :-
    'known/1_1_$special_=\\=/2___2__1__0__6'(A, B, C, D).
'known/1_1_$special_=\\=/2___2__1__1__6'([A|K], G, B, L, D, F, M) :-
    (   ( A=suspension(_, active, _, _, _, C, E),
          A\==B,
          C==D,
          E==F
        ),
        (   'chr newvia_2'(G, D, H)
        ->  get_attr(H, guard_entailment, I),
            I=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,
                                                 A,
                                                 K,
                                                 G,
                                                 B,
                                                 L,
                                                 D,
                                                 F,
                                                 M)
    ;   'known/1_1_$special_=\\=/2___2__1__1__6'(K,
                                                 G,
                                                 B,
                                                 L,
                                                 D,
                                                 F,
                                                 M)
    ).
'known/1_1_$special_=\\=/2___2__1__2__6'([], _, A, B, C, D, E, F, G) :-
    'known/1_1_$special_=\\=/2___2__1__1__6'(A,
                                             B,
                                             C,
                                             D,
                                             E,
                                             F,
                                             G).
'known/1_1_$special_=\\=/2___2__1__2__6'([A|T], G, U, C, F, V, E, S, H) :-
    (   A=suspension(_, active, _, _, _, B, D),
        ( B==C,
          D==E
        ),
        I=t(188, F, A, G, H),
        '$novel_production'(F, I),
        '$novel_production'(A, I),
        '$novel_production'(G, I),
        '$novel_production'(H, I)
    ->  '$extend_history'(H, I),
        ( arg(2, H, L),
          setarg(2, H, active),
          ( arg(4, H, J),
            K is J+1,
            setarg(4, H, K)
          ),
          (   L==not_stored_yet
          ->  H=suspension(_, _, _, _, _, M, N),
              term_variables(term(M, N), O),
              'chr none_locked'(O),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                          P),
                Q=[H|P],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                         Q),
                (   P=[R|_]
                ->  setarg(5, R, Q)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=\\=/2___2'(O, H)
          ;   true
          )
        ),
        'known/1_1_$special_=\\=/2'(C, S),
        (   H=suspension(_, active, _, K, _, _, _)
        ->  setarg(2, H, inactive),
            'known/1_1_$special_=\\=/2___2__1__2__6'(T,
                                                     G,
                                                     U,
                                                     C,
                                                     F,
                                                     V,
                                                     E,
                                                     S,
                                                     H)
        ;   true
        )
    ;   'known/1_1_$special_=\\=/2___2__1__2__6'(T,
                                                 G,
                                                 U,
                                                 C,
                                                 F,
                                                 V,
                                                 E,
                                                 S,
                                                 H)
    ).
'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'(B, A, C) :-
    number(A),
    number(B),
    B=:=A,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(G, C)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=\\=/2___2__2'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(G, C)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=\\=/2___2__2'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    F=suspension(_, _, _, _, _, I, J),
    setarg(2, F, removed),
    term_variables(term(I, J), O),
    arg(5, 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(5, N, _)
        ;   true
        )
    ;   K=[_, _|M],
        setarg(2, K, M),
        (   M=[N|_]
        ->  setarg(5, N, K)
        ;   true
        )
    ),
    'detach_known/1_1_$special_=:=/2___2'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=\\=/2___2__2'(L, K, A) :-
    '$novel_production'(A, 195),
    !,
    '$extend_history'(A, 195),
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ),
    'known/1_1_$special_=\\=/2'(K, L),
    (   A=suspension(_, active, _, C, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_=\\=/2___2__3'(L, K, A)
    ;   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, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H=\=I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=\\=/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=\\=/2___2__3'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=\\=/2___2__3__0__12'(E, A, B, F).
'known/1_1_$special_=\\=/2___2__3__0__12'([], A, B, C) :-
    'known/1_1_$special_=\\=/2___2__4'(A, B, C).
'known/1_1_$special_=\\=/2___2__3__0__12'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D=\=F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=\\=/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_=\\=/2___2__3__0__12'(Z,
                                                      E,
                                                      G,
                                                      O)
        ;   true
        )
    ;   'known/1_1_$special_=\\=/2___2__3__0__12'(Z,
                                                  E,
                                                  G,
                                                  O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=\\=/2___2__4__0__13'(E, A, B, F).
'known/1_1_$special_=\\=/2___2__4__0__13'([], A, B, C) :-
    'known/1_1_$special_=\\=/2___2__5'(A, B, C).
'known/1_1_$special_=\\=/2___2__4__0__13'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E=\=G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=\\=/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_=\\=/2___2__4__0__13'(A1,
                                                      F,
                                                      H,
                                                      P)
        ;   true
        )
    ;   'known/1_1_$special_=\\=/2___2__4__0__13'(A1,
                                                  F,
                                                  H,
                                                  P)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ).
'known/1_1_$special_\\+/1'(A) :-
    'known/1_1_$special_\\+/1___1__0'(A, _).
'known/1_1_$special_\\+/1___1__0'(A, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    (   var(G)
    ->  true
    ;   G=suspension(_, H, _, _, I),
        setarg(2, G, removed),
        (   H==not_stored_yet
        ->  J=[]
        ;   term_variables(I, J),
            ( arg(4, G, 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, G)
        )
    ).
'known/1_1_$special_\\+/1___1__0'(_, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  F=[]
        ;   term_variables(E, F),
            ( arg(4, C, G),
              (   var(G)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                            H),
                  H=[_|I],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                           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_\\+/1___1'(F, C)
        )
    ).
'known/1_1_$special_\\+/1___1__0'(A, E) :-
    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),
                                                !,
                                                (   var(E)
                                                ->  true
                                                ;   E=suspension(_, F, _, _, G),
                                                    setarg(2, E, removed),
                                                    (   F==not_stored_yet
                                                    ->  H=[]
                                                    ;   term_variables(G,
                                                                       H),
                                                        ( arg(4,
                                                              E,
                                                              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,
                                                                                              E)
                                                    )
                                                ),
                                                'known/1_1_$special_fail/0'
                                            ;   A=(M;N),
                                                (   'chr newvia_2'(M,
                                                                   N,
                                                                   O)
                                                ->  get_attr(O,
                                                             guard_entailment,
                                                             P),
                                                    P=v(_, _, _, Q, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                                                              Q)
                                                ),
                                                member(R, Q),
                                                R=suspension(_, active, _, _, S, T),
                                                S==M,
                                                T==N,
                                                !,
                                                R=suspension(_, _, _, _, U, V),
                                                setarg(2, R, removed),
                                                term_variables(term(U,
                                                                    V),
                                                               A1),
                                                arg(4, R, 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'(A1,
                                                                                    R),
                                                (   var(E)
                                                ->  true
                                                ;   E=suspension(_, B1, _, _, C1),
                                                    setarg(2, E, removed),
                                                    (   B1==not_stored_yet
                                                    ->  D1=[]
                                                    ;   term_variables(C1,
                                                                       D1),
                                                        ( arg(4,
                                                              E,
                                                              E1),
                                                          (   var(E1)
                                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                                        F1),
                                                              F1=[_|G1],
                                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                                       G1),
                                                              (   G1=[H1|_]
                                                              ->  setarg(4,
                                                                         H1,
                                                                         _)
                                                              ;   true
                                                              )
                                                          ;   E1=[_, _|G1],
                                                              setarg(2,
                                                                     E1,
                                                                     G1),
                                                              (   G1=[H1|_]
                                                              ->  setarg(4,
                                                                         H1,
                                                                         E1)
                                                              ;   true
                                                              )
                                                          )
                                                        ),
                                                        'detach_known/1_1_$special_\\+/1___1'(D1,
                                                                                              E)
                                                    )
                                                ),
                                                'known/1_1_$special_fail/0'
                                            )
                                        ;   A=nonvar(I1),
                                            (   'chr newvia_1'(I1,
                                                               J1)
                                            ->  get_attr(J1,
                                                         guard_entailment,
                                                         K1),
                                                K1=v(_, _, _, _, L1, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                                          L1)
                                            ),
                                            member(M1, L1),
                                            M1=suspension(_, active, _, _, N1),
                                            N1==I1,
                                            !,
                                            M1=suspension(_, _, _, _, O1),
                                            setarg(2, M1, removed),
                                            term_variables(O1, T1),
                                            arg(4, M1, P1),
                                            (   var(P1)
                                            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                                          Q1),
                                                Q1=[_|R1],
                                                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                                                         R1),
                                                (   R1=[S1|_]
                                                ->  setarg(4, S1, _)
                                                ;   true
                                                )
                                            ;   P1=[_, _|R1],
                                                setarg(2, P1, R1),
                                                (   R1=[S1|_]
                                                ->  setarg(4,
                                                           S1,
                                                           P1)
                                                ;   true
                                                )
                                            ),
                                            'detach_known/1_1_$special_nonvar/1___1'(T1,
                                                                                     M1),
                                            (   var(E)
                                            ->  true
                                            ;   E=suspension(_, U1, _, _, V1),
                                                setarg(2, E, removed),
                                                (   U1==not_stored_yet
                                                ->  W1=[]
                                                ;   term_variables(V1,
                                                                   W1),
                                                    ( arg(4, E, X1),
                                                      (   var(X1)
                                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                                    Y1),
                                                          Y1=[_|Z1],
                                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                                   Z1),
                                                          (   Z1=[A2|_]
                                                          ->  setarg(4,
                                                                     A2,
                                                                     _)
                                                          ;   true
                                                          )
                                                      ;   X1=[_, _|Z1],
                                                          setarg(2,
                                                                 X1,
                                                                 Z1),
                                                          (   Z1=[A2|_]
                                                          ->  setarg(4,
                                                                     A2,
                                                                     X1)
                                                          ;   true
                                                          )
                                                      )
                                                    ),
                                                    'detach_known/1_1_$special_\\+/1___1'(W1,
                                                                                          E)
                                                )
                                            ),
                                            'known/1_1_$special_fail/0'
                                        )
                                    ;   A=var(B2),
                                        (   'chr newvia_1'(B2, C2)
                                        ->  get_attr(C2,
                                                     guard_entailment,
                                                     D2),
                                            D2=v(_, _, _, _, _, E2, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                                      E2)
                                        ),
                                        member(F2, E2),
                                        F2=suspension(_, active, _, _, G2),
                                        G2==B2,
                                        !,
                                        F2=suspension(_, _, _, _, H2),
                                        setarg(2, F2, removed),
                                        term_variables(H2, M2),
                                        arg(4, F2, I2),
                                        (   var(I2)
                                        ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                                      J2),
                                            J2=[_|K2],
                                            b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                                                     K2),
                                            (   K2=[L2|_]
                                            ->  setarg(4, L2, _)
                                            ;   true
                                            )
                                        ;   I2=[_, _|K2],
                                            setarg(2, I2, K2),
                                            (   K2=[L2|_]
                                            ->  setarg(4, L2, I2)
                                            ;   true
                                            )
                                        ),
                                        'detach_known/1_1_$special_var/1___1'(M2,
                                                                              F2),
                                        (   var(E)
                                        ->  true
                                        ;   E=suspension(_, N2, _, _, O2),
                                            setarg(2, E, removed),
                                            (   N2==not_stored_yet
                                            ->  P2=[]
                                            ;   term_variables(O2,
                                                               P2),
                                                ( arg(4, E, Q2),
                                                  (   var(Q2)
                                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                                R2),
                                                      R2=[_|S2],
                                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                               S2),
                                                      (   S2=[T2|_]
                                                      ->  setarg(4,
                                                                 T2,
                                                                 _)
                                                      ;   true
                                                      )
                                                  ;   Q2=[_, _|S2],
                                                      setarg(2,
                                                             Q2,
                                                             S2),
                                                      (   S2=[T2|_]
                                                      ->  setarg(4,
                                                                 T2,
                                                                 Q2)
                                                      ;   true
                                                      )
                                                  )
                                                ),
                                                'detach_known/1_1_$special_\\+/1___1'(P2,
                                                                                      E)
                                            )
                                        ),
                                        'known/1_1_$special_fail/0'
                                    )
                                ;   A=atom(U2),
                                    (   'chr newvia_1'(U2, V2)
                                    ->  get_attr(V2,
                                                 guard_entailment,
                                                 W2),
                                        W2=v(_, _, _, _, _, _, X2, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                                  X2)
                                    ),
                                    member(Y2, X2),
                                    Y2=suspension(_, active, _, _, _, Z2),
                                    Z2==U2,
                                    !,
                                    Y2=suspension(_, _, _, _, _, A3),
                                    setarg(2, Y2, removed),
                                    term_variables(A3, F3),
                                    arg(5, Y2, B3),
                                    (   var(B3)
                                    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                                  C3),
                                        C3=[_|D3],
                                        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                                                 D3),
                                        (   D3=[E3|_]
                                        ->  setarg(5, E3, _)
                                        ;   true
                                        )
                                    ;   B3=[_, _|D3],
                                        setarg(2, B3, D3),
                                        (   D3=[E3|_]
                                        ->  setarg(5, E3, B3)
                                        ;   true
                                        )
                                    ),
                                    'detach_known/1_1_$special_atom/1___1'(F3,
                                                                           Y2),
                                    (   var(E)
                                    ->  true
                                    ;   E=suspension(_, G3, _, _, H3),
                                        setarg(2, E, removed),
                                        (   G3==not_stored_yet
                                        ->  I3=[]
                                        ;   term_variables(H3, I3),
                                            ( arg(4, E, J3),
                                              (   var(J3)
                                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                            K3),
                                                  K3=[_|L3],
                                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                           L3),
                                                  (   L3=[M3|_]
                                                  ->  setarg(4,
                                                             M3,
                                                             _)
                                                  ;   true
                                                  )
                                              ;   J3=[_, _|L3],
                                                  setarg(2, J3, L3),
                                                  (   L3=[M3|_]
                                                  ->  setarg(4,
                                                             M3,
                                                             J3)
                                                  ;   true
                                                  )
                                              )
                                            ),
                                            'detach_known/1_1_$special_\\+/1___1'(I3,
                                                                                  E)
                                        )
                                    ),
                                    'known/1_1_$special_fail/0'
                                )
                            ;   A=atomic(N3),
                                (   'chr newvia_1'(N3, O3)
                                ->  get_attr(O3,
                                             guard_entailment,
                                             P3),
                                    P3=v(_, _, _, _, _, _, _, Q3, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                                              Q3)
                                ),
                                member(R3, Q3),
                                R3=suspension(_, active, _, _, _, S3),
                                S3==N3,
                                !,
                                R3=suspension(_, _, _, _, _, T3),
                                setarg(2, R3, removed),
                                term_variables(T3, Y3),
                                arg(5, R3, U3),
                                (   var(U3)
                                ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                                              V3),
                                    V3=[_|W3],
                                    b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                                             W3),
                                    (   W3=[X3|_]
                                    ->  setarg(5, X3, _)
                                    ;   true
                                    )
                                ;   U3=[_, _|W3],
                                    setarg(2, U3, W3),
                                    (   W3=[X3|_]
                                    ->  setarg(5, X3, U3)
                                    ;   true
                                    )
                                ),
                                'detach_known/1_1_$special_atomic/1___1'(Y3,
                                                                         R3),
                                (   var(E)
                                ->  true
                                ;   E=suspension(_, Z3, _, _, A4),
                                    setarg(2, E, removed),
                                    (   Z3==not_stored_yet
                                    ->  B4=[]
                                    ;   term_variables(A4, B4),
                                        ( arg(4, E, 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'(B4,
                                                                              E)
                                    )
                                ),
                                'known/1_1_$special_fail/0'
                            )
                        ;   A=compound(G4),
                            (   'chr newvia_1'(G4, H4)
                            ->  get_attr(H4, guard_entailment, I4),
                                I4=v(_, _, _, _, _, _, _, _, J4, _, _, _, _, _, _, _, _, _, _, _, _, _)
                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                                          J4)
                            ),
                            member(K4, J4),
                            K4=suspension(_, active, _, _, _, L4),
                            L4==G4,
                            !,
                            K4=suspension(_, _, _, _, _, M4),
                            setarg(2, K4, removed),
                            term_variables(M4, R4),
                            arg(5, K4, N4),
                            (   var(N4)
                            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                                          O4),
                                O4=[_|P4],
                                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                                         P4),
                                (   P4=[Q4|_]
                                ->  setarg(5, Q4, _)
                                ;   true
                                )
                            ;   N4=[_, _|P4],
                                setarg(2, N4, P4),
                                (   P4=[Q4|_]
                                ->  setarg(5, Q4, N4)
                                ;   true
                                )
                            ),
                            'detach_known/1_1_$special_compound/1___1'(R4,
                                                                       K4),
                            (   var(E)
                            ->  true
                            ;   E=suspension(_, S4, _, _, T4),
                                setarg(2, E, removed),
                                (   S4==not_stored_yet
                                ->  U4=[]
                                ;   term_variables(T4, U4),
                                    ( arg(4, E, V4),
                                      (   var(V4)
                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                    W4),
                                          W4=[_|X4],
                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                   X4),
                                          (   X4=[Y4|_]
                                          ->  setarg(4, Y4, _)
                                          ;   true
                                          )
                                      ;   V4=[_, _|X4],
                                          setarg(2, V4, X4),
                                          (   X4=[Y4|_]
                                          ->  setarg(4, Y4, V4)
                                          ;   true
                                          )
                                      )
                                    ),
                                    'detach_known/1_1_$special_\\+/1___1'(U4,
                                                                          E)
                                )
                            ),
                            'known/1_1_$special_fail/0'
                        )
                    ;   A=ground(Z4),
                        (   'chr newvia_1'(Z4, A5)
                        ->  get_attr(A5, guard_entailment, B5),
                            B5=v(_, _, _, _, _, _, _, _, _, C5, _, _, _, _, _, _, _, _, _, _, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                                      C5)
                        ),
                        member(D5, C5),
                        D5=suspension(_, active, _, _, _, E5),
                        E5==Z4,
                        !,
                        D5=suspension(_, _, _, _, _, F5),
                        setarg(2, D5, removed),
                        term_variables(F5, K5),
                        arg(5, D5, G5),
                        (   var(G5)
                        ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                                      H5),
                            H5=[_|I5],
                            b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                                     I5),
                            (   I5=[J5|_]
                            ->  setarg(5, J5, _)
                            ;   true
                            )
                        ;   G5=[_, _|I5],
                            setarg(2, G5, I5),
                            (   I5=[J5|_]
                            ->  setarg(5, J5, G5)
                            ;   true
                            )
                        ),
                        'detach_known/1_1_$special_ground/1___1'(K5,
                                                                 D5),
                        (   var(E)
                        ->  true
                        ;   E=suspension(_, L5, _, _, M5),
                            setarg(2, E, removed),
                            (   L5==not_stored_yet
                            ->  N5=[]
                            ;   term_variables(M5, N5),
                                ( arg(4, E, O5),
                                  (   var(O5)
                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                P5),
                                      P5=[_|Q5],
                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                               Q5),
                                      (   Q5=[R5|_]
                                      ->  setarg(4, R5, _)
                                      ;   true
                                      )
                                  ;   O5=[_, _|Q5],
                                      setarg(2, O5, Q5),
                                      (   Q5=[R5|_]
                                      ->  setarg(4, R5, O5)
                                      ;   true
                                      )
                                  )
                                ),
                                'detach_known/1_1_$special_\\+/1___1'(N5,
                                                                      E)
                            )
                        ),
                        'known/1_1_$special_fail/0'
                    )
                ;   A=integer(S5),
                    (   'chr newvia_1'(S5, T5)
                    ->  get_attr(T5, guard_entailment, U5),
                        U5=v(_, _, _, _, _, _, _, _, _, _, V5, _, _, _, _, _, _, _, _, _, _, _)
                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                                  V5)
                    ),
                    member(W5, V5),
                    W5=suspension(_, active, _, _, _, X5),
                    X5==S5,
                    !,
                    W5=suspension(_, _, _, _, _, Y5),
                    setarg(2, W5, removed),
                    term_variables(Y5, D6),
                    arg(5, W5, Z5),
                    (   var(Z5)
                    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                                  A6),
                        A6=[_|B6],
                        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                                 B6),
                        (   B6=[C6|_]
                        ->  setarg(5, C6, _)
                        ;   true
                        )
                    ;   Z5=[_, _|B6],
                        setarg(2, Z5, B6),
                        (   B6=[C6|_]
                        ->  setarg(5, C6, Z5)
                        ;   true
                        )
                    ),
                    'detach_known/1_1_$special_integer/1___1'(D6,
                                                              W5),
                    (   var(E)
                    ->  true
                    ;   E=suspension(_, E6, _, _, F6),
                        setarg(2, E, removed),
                        (   E6==not_stored_yet
                        ->  G6=[]
                        ;   term_variables(F6, G6),
                            ( arg(4, E, H6),
                              (   var(H6)
                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                            I6),
                                  I6=[_|J6],
                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                           J6),
                                  (   J6=[K6|_]
                                  ->  setarg(4, K6, _)
                                  ;   true
                                  )
                              ;   H6=[_, _|J6],
                                  setarg(2, H6, J6),
                                  (   J6=[K6|_]
                                  ->  setarg(4, K6, H6)
                                  ;   true
                                  )
                              )
                            ),
                            'detach_known/1_1_$special_\\+/1___1'(G6,
                                                                  E)
                        )
                    ),
                    'known/1_1_$special_fail/0'
                )
            ;   A=float(L6),
                (   'chr newvia_1'(L6, M6)
                ->  get_attr(M6, guard_entailment, N6),
                    N6=v(_, _, _, _, _, _, _, _, _, _, _, O6, _, _, _, _, _, _, _, _, _, _)
                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                              O6)
                ),
                member(P6, O6),
                P6=suspension(_, active, _, _, _, Q6),
                Q6==L6,
                !,
                P6=suspension(_, _, _, _, _, R6),
                setarg(2, P6, removed),
                term_variables(R6, W6),
                arg(5, P6, S6),
                (   var(S6)
                ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                              T6),
                    T6=[_|U6],
                    b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                             U6),
                    (   U6=[V6|_]
                    ->  setarg(5, V6, _)
                    ;   true
                    )
                ;   S6=[_, _|U6],
                    setarg(2, S6, U6),
                    (   U6=[V6|_]
                    ->  setarg(5, V6, S6)
                    ;   true
                    )
                ),
                'detach_known/1_1_$special_float/1___1'(W6, P6),
                (   var(E)
                ->  true
                ;   E=suspension(_, X6, _, _, Y6),
                    setarg(2, E, removed),
                    (   X6==not_stored_yet
                    ->  Z6=[]
                    ;   term_variables(Y6, Z6),
                        ( arg(4, E, A7),
                          (   var(A7)
                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                        B7),
                              B7=[_|C7],
                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                       C7),
                              (   C7=[D7|_]
                              ->  setarg(4, D7, _)
                              ;   true
                              )
                          ;   A7=[_, _|C7],
                              setarg(2, A7, C7),
                              (   C7=[D7|_]
                              ->  setarg(4, D7, A7)
                              ;   true
                              )
                          )
                        ),
                        'detach_known/1_1_$special_\\+/1___1'(Z6, E)
                    )
                ),
                'known/1_1_$special_fail/0'
            )
        ;   A=number(E7),
            (   'chr newvia_1'(E7, F7)
            ->  get_attr(F7, guard_entailment, G7),
                G7=v(_, _, _, _, _, _, _, _, _, _, _, _, H7, _, _, _, _, _, _, _, _, _)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          H7)
            ),
            member(I7, H7),
            I7=suspension(_, active, _, _, _, J7),
            J7==E7,
            !,
            I7=suspension(_, _, _, _, _, K7),
            setarg(2, I7, removed),
            term_variables(K7, P7),
            arg(5, I7, L7),
            (   var(L7)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          M7),
                M7=[_|N7],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                         N7),
                (   N7=[O7|_]
                ->  setarg(5, O7, _)
                ;   true
                )
            ;   L7=[_, _|N7],
                setarg(2, L7, N7),
                (   N7=[O7|_]
                ->  setarg(5, O7, L7)
                ;   true
                )
            ),
            'detach_known/1_1_$special_number/1___1'(P7, I7),
            (   var(E)
            ->  true
            ;   E=suspension(_, Q7, _, _, R7),
                setarg(2, E, removed),
                (   Q7==not_stored_yet
                ->  S7=[]
                ;   term_variables(R7, S7),
                    ( arg(4, E, T7),
                      (   var(T7)
                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                    U7),
                          U7=[_|V7],
                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                   V7),
                          (   V7=[W7|_]
                          ->  setarg(4, W7, _)
                          ;   true
                          )
                      ;   T7=[_, _|V7],
                          setarg(2, T7, V7),
                          (   V7=[W7|_]
                          ->  setarg(4, W7, T7)
                          ;   true
                          )
                      )
                    ),
                    'detach_known/1_1_$special_\\+/1___1'(S7, E)
                )
            ),
            'known/1_1_$special_fail/0'
        )
    ;   A=(X7=\=Y7),
        (   'chr newvia_2'(X7, Y7, Z7)
        ->  get_attr(Z7, guard_entailment, A8),
            A8=v(_, _, _, _, _, _, _, _, _, _, _, _, _, B8, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                      B8)
        ),
        member(C8, B8),
        C8=suspension(_, active, _, _, _, D8, E8),
        D8==X7,
        E8==Y7,
        !,
        C8=suspension(_, _, _, _, _, F8, G8),
        setarg(2, C8, removed),
        term_variables(term(F8, G8), L8),
        arg(5, C8, 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(5, K8, _)
            ;   true
            )
        ;   H8=[_, _|J8],
            setarg(2, H8, J8),
            (   J8=[K8|_]
            ->  setarg(5, K8, H8)
            ;   true
            )
        ),
        'detach_known/1_1_$special_=\\=/2___2'(L8, C8),
        (   var(E)
        ->  true
        ;   E=suspension(_, M8, _, _, N8),
            setarg(2, E, removed),
            (   M8==not_stored_yet
            ->  O8=[]
            ;   term_variables(N8, O8),
                ( arg(4, E, P8),
                  (   var(P8)
                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                Q8),
                      Q8=[_|R8],
                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                               R8),
                      (   R8=[S8|_]
                      ->  setarg(4, S8, _)
                      ;   true
                      )
                  ;   P8=[_, _|R8],
                      setarg(2, P8, R8),
                      (   R8=[S8|_]
                      ->  setarg(4, S8, P8)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_\\+/1___1'(O8, E)
            )
        ),
        'known/1_1_$special_fail/0'
    ).
'known/1_1_$special_\\+/1___1__0'(A, N) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    nonvar(F),
    F=(\+G),
    G==A,
    !,
    E=suspension(_, _, _, _, H),
    setarg(2, E, removed),
    term_variables(H, M),
    arg(4, E, 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'(M, E),
    (   var(N)
    ->  true
    ;   N=suspension(_, O, _, _, P),
        setarg(2, N, removed),
        (   O==not_stored_yet
        ->  Q=[]
        ;   term_variables(P, Q),
            ( arg(4, N, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                           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_\\+/1___1'(Q, N)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\+/1___1__0'(A, N) :-
    nonvar(A),
    (   (   (   (   (   (   (   A=(\+B),
                                (   'chr newvia_1'(B, C)
                                ->  get_attr(C, guard_entailment, D),
                                    D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                              E)
                                ),
                                member(F, E),
                                F=suspension(_, active, _, _, G),
                                G==B,
                                !,
                                F=suspension(_, _, _, _, H),
                                setarg(2, F, removed),
                                term_variables(H, M),
                                arg(4, F, 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'(M,
                                                                      F),
                                (   var(N)
                                ->  true
                                ;   N=suspension(_, O, _, _, P),
                                    setarg(2, N, removed),
                                    (   O==not_stored_yet
                                    ->  Q=[]
                                    ;   term_variables(P, Q),
                                        ( arg(4, N, R),
                                          (   var(R)
                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                        S),
                                              S=[_|T],
                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                       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_\\+/1___1'(Q,
                                                                              N)
                                    )
                                ),
                                'known/1_1_$special_fail/0'
                            ;   A=functor(V, W, X),
                                (   'chr newvia'([V, W, X],
                                                 Y)
                                ->  get_attr(Y,
                                             guard_entailment,
                                             Z),
                                    Z=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, A1, _, _, _, _, _, _)
                                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                                              A1)
                                ),
                                member(B1, A1),
                                B1=suspension(_, active, _, _, C1, D1, E1),
                                C1==V,
                                D1==W,
                                E1==X,
                                !,
                                B1=suspension(_, _, _, _, F1, G1, H1),
                                setarg(2, B1, removed),
                                term_variables(term(F1,
                                                    G1,
                                                    H1),
                                               M1),
                                arg(4, B1, I1),
                                (   var(I1)
                                ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                                              J1),
                                    J1=[_|K1],
                                    b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                                             K1),
                                    (   K1=[L1|_]
                                    ->  setarg(4, L1, _)
                                    ;   true
                                    )
                                ;   I1=[_, _|K1],
                                    setarg(2, I1, K1),
                                    (   K1=[L1|_]
                                    ->  setarg(4, L1, I1)
                                    ;   true
                                    )
                                ),
                                'detach_known/1_1_$special_functor/3___3'(M1,
                                                                          B1),
                                (   var(N)
                                ->  true
                                ;   N=suspension(_, N1, _, _, O1),
                                    setarg(2, N, removed),
                                    (   N1==not_stored_yet
                                    ->  P1=[]
                                    ;   term_variables(O1, P1),
                                        ( arg(4, N, Q1),
                                          (   var(Q1)
                                          ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                        R1),
                                              R1=[_|S1],
                                              b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                       S1),
                                              (   S1=[T1|_]
                                              ->  setarg(4, T1, _)
                                              ;   true
                                              )
                                          ;   Q1=[_, _|S1],
                                              setarg(2, Q1, S1),
                                              (   S1=[T1|_]
                                              ->  setarg(4, T1, Q1)
                                              ;   true
                                              )
                                          )
                                        ),
                                        'detach_known/1_1_$special_\\+/1___1'(P1,
                                                                              N)
                                    )
                                ),
                                'known/1_1_$special_fail/0'
                            )
                        ;   A=(U1\=V1),
                            (   'chr newvia_2'(U1, V1, W1)
                            ->  get_attr(W1, guard_entailment, X1),
                                X1=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, Y1, _, _, _, _, _)
                            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                                          Y1)
                            ),
                            member(Z1, Y1),
                            Z1=suspension(_, active, _, _, _, A2, B2),
                            A2==U1,
                            B2==V1,
                            !,
                            Z1=suspension(_, _, _, _, _, C2, D2),
                            setarg(2, Z1, removed),
                            term_variables(term(C2, D2), I2),
                            arg(5, Z1, E2),
                            (   var(E2)
                            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                                          F2),
                                F2=[_|G2],
                                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                                         G2),
                                (   G2=[H2|_]
                                ->  setarg(5, H2, _)
                                ;   true
                                )
                            ;   E2=[_, _|G2],
                                setarg(2, E2, G2),
                                (   G2=[H2|_]
                                ->  setarg(5, H2, E2)
                                ;   true
                                )
                            ),
                            'detach_known/1_1_$special_\\=/2___2'(I2,
                                                                  Z1),
                            (   var(N)
                            ->  true
                            ;   N=suspension(_, J2, _, _, K2),
                                setarg(2, N, removed),
                                (   J2==not_stored_yet
                                ->  L2=[]
                                ;   term_variables(K2, L2),
                                    ( arg(4, N, M2),
                                      (   var(M2)
                                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                    N2),
                                          N2=[_|O2],
                                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                   O2),
                                          (   O2=[P2|_]
                                          ->  setarg(4, P2, _)
                                          ;   true
                                          )
                                      ;   M2=[_, _|O2],
                                          setarg(2, M2, O2),
                                          (   O2=[P2|_]
                                          ->  setarg(4, P2, M2)
                                          ;   true
                                          )
                                      )
                                    ),
                                    'detach_known/1_1_$special_\\+/1___1'(L2,
                                                                          N)
                                )
                            ),
                            'known/1_1_$special_fail/0'
                        )
                    ;   A=(Q2=R2),
                        (   'chr newvia_2'(Q2, R2, S2)
                        ->  get_attr(S2, guard_entailment, T2),
                            T2=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, U2, _, _, _, _)
                        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                                      U2)
                        ),
                        member(V2, U2),
                        V2=suspension(_, active, _, _, W2, X2),
                        W2==Q2,
                        X2==R2,
                        !,
                        V2=suspension(_, _, _, _, Y2, Z2),
                        setarg(2, V2, removed),
                        term_variables(term(Y2, Z2), E3),
                        arg(4, V2, A3),
                        (   var(A3)
                        ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                                      B3),
                            B3=[_|C3],
                            b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                                     C3),
                            (   C3=[D3|_]
                            ->  setarg(4, D3, _)
                            ;   true
                            )
                        ;   A3=[_, _|C3],
                            setarg(2, A3, C3),
                            (   C3=[D3|_]
                            ->  setarg(4, D3, A3)
                            ;   true
                            )
                        ),
                        'detach_known/1_1_$special_=/2___2'(E3, V2),
                        (   var(N)
                        ->  true
                        ;   N=suspension(_, F3, _, _, G3),
                            setarg(2, N, removed),
                            (   F3==not_stored_yet
                            ->  H3=[]
                            ;   term_variables(G3, H3),
                                ( arg(4, N, I3),
                                  (   var(I3)
                                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                                J3),
                                      J3=[_|K3],
                                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                               K3),
                                      (   K3=[L3|_]
                                      ->  setarg(4, L3, _)
                                      ;   true
                                      )
                                  ;   I3=[_, _|K3],
                                      setarg(2, I3, K3),
                                      (   K3=[L3|_]
                                      ->  setarg(4, L3, I3)
                                      ;   true
                                      )
                                  )
                                ),
                                'detach_known/1_1_$special_\\+/1___1'(H3,
                                                                      N)
                            )
                        ),
                        'known/1_1_$special_fail/0'
                    )
                ;   A=(M3\==N3),
                    (   'chr newvia_2'(M3, N3, O3)
                    ->  get_attr(O3, guard_entailment, P3),
                        P3=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, Q3, _, _, _)
                    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                                  Q3)
                    ),
                    member(R3, Q3),
                    R3=suspension(_, active, _, _, _, S3, T3),
                    S3==M3,
                    T3==N3,
                    !,
                    R3=suspension(_, _, _, _, _, U3, V3),
                    setarg(2, R3, removed),
                    term_variables(term(U3, V3), A4),
                    arg(5, R3, W3),
                    (   var(W3)
                    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                                  X3),
                        X3=[_|Y3],
                        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                                 Y3),
                        (   Y3=[Z3|_]
                        ->  setarg(5, Z3, _)
                        ;   true
                        )
                    ;   W3=[_, _|Y3],
                        setarg(2, W3, Y3),
                        (   Y3=[Z3|_]
                        ->  setarg(5, Z3, W3)
                        ;   true
                        )
                    ),
                    'detach_known/1_1_$special_\\==/2___2'(A4, R3),
                    (   var(N)
                    ->  true
                    ;   N=suspension(_, B4, _, _, C4),
                        setarg(2, N, removed),
                        (   B4==not_stored_yet
                        ->  D4=[]
                        ;   term_variables(C4, D4),
                            ( arg(4, N, E4),
                              (   var(E4)
                              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                            F4),
                                  F4=[_|G4],
                                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                           G4),
                                  (   G4=[H4|_]
                                  ->  setarg(4, H4, _)
                                  ;   true
                                  )
                              ;   E4=[_, _|G4],
                                  setarg(2, E4, G4),
                                  (   G4=[H4|_]
                                  ->  setarg(4, H4, E4)
                                  ;   true
                                  )
                              )
                            ),
                            'detach_known/1_1_$special_\\+/1___1'(D4,
                                                                  N)
                        )
                    ),
                    'known/1_1_$special_fail/0'
                )
            ;   A=(I4==J4),
                (   'chr newvia_2'(I4, J4, K4)
                ->  get_attr(K4, guard_entailment, L4),
                    L4=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, M4, _, _)
                ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                              M4)
                ),
                member(N4, M4),
                N4=suspension(_, active, _, _, _, O4, P4),
                O4==I4,
                P4==J4,
                !,
                N4=suspension(_, _, _, _, _, Q4, R4),
                setarg(2, N4, removed),
                term_variables(term(Q4, R4), W4),
                arg(5, N4, S4),
                (   var(S4)
                ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                              T4),
                    T4=[_|U4],
                    b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                             U4),
                    (   U4=[V4|_]
                    ->  setarg(5, V4, _)
                    ;   true
                    )
                ;   S4=[_, _|U4],
                    setarg(2, S4, U4),
                    (   U4=[V4|_]
                    ->  setarg(5, V4, S4)
                    ;   true
                    )
                ),
                'detach_known/1_1_$special_==/2___2'(W4, N4),
                (   var(N)
                ->  true
                ;   N=suspension(_, X4, _, _, Y4),
                    setarg(2, N, removed),
                    (   X4==not_stored_yet
                    ->  Z4=[]
                    ;   term_variables(Y4, Z4),
                        ( arg(4, N, 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'(Z4, N)
                    )
                ),
                'known/1_1_$special_fail/0'
            )
        ;   A=(E5=<F5),
            (   'chr newvia_2'(E5, F5, G5)
            ->  get_attr(G5, guard_entailment, H5),
                H5=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, I5, _)
            ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          I5)
            ),
            member(J5, I5),
            J5=suspension(_, active, _, _, _, K5, L5),
            K5==E5,
            L5==F5,
            !,
            J5=suspension(_, _, _, _, _, M5, N5),
            setarg(2, J5, removed),
            term_variables(term(M5, N5), S5),
            arg(5, J5, O5),
            (   var(O5)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          P5),
                P5=[_|Q5],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         Q5),
                (   Q5=[R5|_]
                ->  setarg(5, R5, _)
                ;   true
                )
            ;   O5=[_, _|Q5],
                setarg(2, O5, Q5),
                (   Q5=[R5|_]
                ->  setarg(5, R5, O5)
                ;   true
                )
            ),
            'detach_known/1_1_$special_=</2___2'(S5, J5),
            (   var(N)
            ->  true
            ;   N=suspension(_, T5, _, _, U5),
                setarg(2, N, removed),
                (   T5==not_stored_yet
                ->  V5=[]
                ;   term_variables(U5, V5),
                    ( arg(4, N, W5),
                      (   var(W5)
                      ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                    X5),
                          X5=[_|Y5],
                          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                   Y5),
                          (   Y5=[Z5|_]
                          ->  setarg(4, Z5, _)
                          ;   true
                          )
                      ;   W5=[_, _|Y5],
                          setarg(2, W5, Y5),
                          (   Y5=[Z5|_]
                          ->  setarg(4, Z5, W5)
                          ;   true
                          )
                      )
                    ),
                    'detach_known/1_1_$special_\\+/1___1'(V5, N)
                )
            ),
            'known/1_1_$special_fail/0'
        )
    ;   A=(A6=:=B6),
        (   'chr newvia_2'(A6, B6, C6)
        ->  get_attr(C6, guard_entailment, D6),
            D6=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E6)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                      E6)
        ),
        member(F6, E6),
        F6=suspension(_, active, _, _, _, G6, H6),
        G6==A6,
        H6==B6,
        !,
        F6=suspension(_, _, _, _, _, I6, J6),
        setarg(2, F6, removed),
        term_variables(term(I6, J6), O6),
        arg(5, F6, K6),
        (   var(K6)
        ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                      L6),
            L6=[_|M6],
            b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                     M6),
            (   M6=[N6|_]
            ->  setarg(5, N6, _)
            ;   true
            )
        ;   K6=[_, _|M6],
            setarg(2, K6, M6),
            (   M6=[N6|_]
            ->  setarg(5, N6, K6)
            ;   true
            )
        ),
        'detach_known/1_1_$special_=:=/2___2'(O6, F6),
        (   var(N)
        ->  true
        ;   N=suspension(_, P6, _, _, Q6),
            setarg(2, N, removed),
            (   P6==not_stored_yet
            ->  R6=[]
            ;   term_variables(Q6, R6),
                ( arg(4, N, S6),
                  (   var(S6)
                  ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                                T6),
                      T6=[_|U6],
                      b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                               U6),
                      (   U6=[V6|_]
                      ->  setarg(4, V6, _)
                      ;   true
                      )
                  ;   S6=[_, _|U6],
                      setarg(2, S6, U6),
                      (   U6=[V6|_]
                      ->  setarg(4, V6, S6)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_\\+/1___1'(R6, N)
            )
        ),
        'known/1_1_$special_fail/0'
    ).
'known/1_1_$special_\\+/1___1__0'(A, M) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                  D)
    ),
    member(E, D),
    E=suspension(_, active, _, _, F),
    F==A,
    !,
    E=suspension(_, _, _, _, G),
    setarg(2, E, removed),
    term_variables(G, L),
    arg(4, E, H),
    (   var(H)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                  I),
        I=[_|J],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                 J),
        (   J=[K|_]
        ->  setarg(4, K, _)
        ;   true
        )
    ;   H=[_, _|J],
        setarg(2, H, J),
        (   J=[K|_]
        ->  setarg(4, K, H)
        ;   true
        )
    ),
    'detach_known/1_1_$default___1'(L, E),
    (   var(M)
    ->  true
    ;   M=suspension(_, N, _, _, O),
        setarg(2, M, removed),
        (   N==not_stored_yet
        ->  P=[]
        ;   term_variables(O, P),
            ( arg(4, M, 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'(P, M)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\+/1___1__0'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(F, not_stored_yet, 0, _, A),
        'chr gen_id'(F)
    ;   true
    ),
    'known/1_1_$special_\\+/1___1__0__0__33'(D, A, E).
'known/1_1_$special_\\+/1___1__0__0__33'([], A, B) :-
    'known/1_1_$special_\\+/1___1__1'(A, B).
'known/1_1_$special_\\+/1___1__0__0__33'([A|W], E, M) :-
    (   A=suspension(_, active, _, _, B, V),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(\+D),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        ( arg(2, M, P),
          setarg(2, M, active),
          ( arg(3, M, N),
            O is N+1,
            setarg(3, M, O)
          ),
          (   P==not_stored_yet
          ->  M=suspension(_, _, _, _, Q),
              term_variables(Q, R),
              'chr none_locked'(R),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          S),
                T=[M|S],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         T),
                (   S=[U|_]
                ->  setarg(4, U, T)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\+/1___1'(R, M)
          ;   true
          )
        ),
        known(V),
        (   M=suspension(_, active, O, _, _)
        ->  setarg(2, M, inactive),
            'known/1_1_$special_\\+/1___1__0__0__33'(W, E, M)
        ;   true
        )
    ;   'known/1_1_$special_\\+/1___1__0__0__33'(W, E, M)
    ).
'known/1_1_$special_\\+/1___1__0'(B, A) :-
    (   var(A)
    ->  A=suspension(C, not_stored_yet, 0, _, B),
        'chr gen_id'(C)
    ;   true
    ),
    'known/1_1_$special_\\+/1___1__1'(B, A).
'known/1_1_$special_\\+/1___1__1'(A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_\\+/1___1__1__0__34'(D, A, E).
'known/1_1_$special_\\+/1___1__1__0__34'([], A, B) :-
    'known/1_1_$special_\\+/1___1__2'(A, B).
'known/1_1_$special_\\+/1___1__1__0__34'([A|X], F, N) :-
    (   A=suspension(_, active, _, _, B, W),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(\+E),
        E==F
    ->  ( A=suspension(_, _, _, _, G, H),
          setarg(2, A, removed),
          term_variables(term(G, H), M),
          ( arg(4, A, 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'(M, A)
        ),
        ( arg(2, N, Q),
          setarg(2, N, active),
          ( arg(3, N, O),
            P is O+1,
            setarg(3, N, P)
          ),
          (   Q==not_stored_yet
          ->  N=suspension(_, _, _, _, R),
              term_variables(R, S),
              'chr none_locked'(S),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          T),
                U=[N|T],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         U),
                (   T=[V|_]
                ->  setarg(4, V, U)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\+/1___1'(S, N)
          ;   true
          )
        ),
        known(W),
        (   N=suspension(_, active, P, _, _)
        ->  setarg(2, N, inactive),
            'known/1_1_$special_\\+/1___1__1__0__34'(X, F, N)
        ;   true
        )
    ;   'known/1_1_$special_\\+/1___1__1__0__34'(X, F, N)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_\\+/1___1__2__0__35'(D, A, E).
'known/1_1_$special_\\+/1___1__2__0__35'([], A, B) :-
    'known/1_1_$special_\\+/1___1__3'(A, B).
'known/1_1_$special_\\+/1___1__2__0__35'([A|U], C, K) :-
    (   A=suspension(_, active, _, _, B, T),
        B==C
    ->  ( A=suspension(_, _, _, _, D, E),
          setarg(2, A, removed),
          term_variables(term(D, E), J),
          ( arg(4, A, F),
            (   var(F)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                          G),
                G=[_|H],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                         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_;/2___2'(J, A)
        ),
        ( arg(2, K, N),
          setarg(2, K, active),
          ( arg(3, K, L),
            M is L+1,
            setarg(3, K, M)
          ),
          (   N==not_stored_yet
          ->  K=suspension(_, _, _, _, O),
              term_variables(O, P),
              'chr none_locked'(P),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          Q),
                R=[K|Q],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         R),
                (   Q=[S|_]
                ->  setarg(4, S, R)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\+/1___1'(P, K)
          ;   true
          )
        ),
        known(T),
        (   K=suspension(_, active, M, _, _)
        ->  setarg(2, K, inactive),
            'known/1_1_$special_\\+/1___1__2__0__35'(U, C, K)
        ;   true
        )
    ;   'known/1_1_$special_\\+/1___1__2__0__35'(U, C, K)
    ).
'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, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_\\+/1___1__3__0__36'(D, A, E).
'known/1_1_$special_\\+/1___1__3__0__36'([], A, B) :-
    'known/1_1_$special_\\+/1___1__4'(A, B).
'known/1_1_$special_\\+/1___1__3__0__36'([A|V], D, L) :-
    (   A=suspension(_, active, _, _, B, U),
        nonvar(B),
        B=(C, _),
        C==D
    ->  ( A=suspension(_, _, _, _, E, F),
          setarg(2, A, removed),
          term_variables(term(E, F), K),
          ( arg(4, A, 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'(K, A)
        ),
        ( arg(2, L, O),
          setarg(2, L, active),
          ( arg(3, L, M),
            N is M+1,
            setarg(3, L, N)
          ),
          (   O==not_stored_yet
          ->  L=suspension(_, _, _, _, P),
              term_variables(P, Q),
              'chr none_locked'(Q),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          R),
                S=[L|R],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         S),
                (   R=[T|_]
                ->  setarg(4, T, S)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\+/1___1'(Q, L)
          ;   true
          )
        ),
        known(U),
        (   L=suspension(_, active, N, _, _)
        ->  setarg(2, L, inactive),
            'known/1_1_$special_\\+/1___1__3__0__36'(V, D, L)
        ;   true
        )
    ;   'known/1_1_$special_\\+/1___1__3__0__36'(V, D, L)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E),
        term_variables(E, F),
        'chr none_locked'(F),
        ( 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'(F, 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, K) :-
    (   'chr newvia'([A, B, C], D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, F, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                  F)
    ),
    member(G, F),
    G=suspension(_, active, _, _, H, I, J),
    H==A,
    I==B,
    J==C,
    !,
    (   var(K)
    ->  true
    ;   K=suspension(_, L, _, _, M, N, O),
        setarg(2, K, removed),
        (   L==not_stored_yet
        ->  P=[]
        ;   term_variables(term(M, N, O), P),
            ( arg(4, K, 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'(P, K)
        )
    ).
'known/1_1_$special_functor/3___3__0'(_, _, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E, F, G),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  H=[]
        ;   term_variables(term(E, F, G), H),
            ( arg(4, C, I),
              (   var(I)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                            J),
                  J=[_|K],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                           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_functor/3___3'(H, C)
        )
    ).
'known/1_1_$special_functor/3___3__0'(C, B, A, L) :-
    ground(A),
    ground(B),
    var(C),
    nb_getval('$chr_store_global_list_guard_entailment____variables___1',
              D),
    member(E, D),
    E=suspension(_, active, _, W),
    !,
    E=suspension(_, _, _, F),
    setarg(2, E, removed),
    term_variables(F, K),
    arg(3, E, G),
    (   var(G)
    ->  nb_getval('$chr_store_global_list_guard_entailment____variables___1',
                  H),
        H=[_|I],
        b_setval('$chr_store_global_list_guard_entailment____variables___1',
                 I),
        (   I=[J|_]
        ->  setarg(3, J, _)
        ;   true
        )
    ;   G=[_, _|I],
        setarg(2, G, I),
        (   I=[J|_]
        ->  setarg(3, J, G)
        ;   true
        )
    ),
    detach_variables___1(K, E),
    (   var(L)
    ->  true
    ;   L=suspension(_, M, _, _, N, O, P),
        setarg(2, L, removed),
        (   M==not_stored_yet
        ->  Q=[]
        ;   term_variables(term(N, O, P), Q),
            ( arg(4, L, R),
              (   var(R)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                            S),
                  S=[_|T],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                           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_functor/3___3'(Q, L)
        )
    ),
    functor(C, B, A),
    C=..[_|V],
    append(V, W, X),
    variables(X).
'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(_, E, _, _, F, G, H),
        setarg(2, D, removed),
        (   E==not_stored_yet
        ->  I=[]
        ;   term_variables(term(F, G, H), I),
            ( arg(4, D, J),
              (   var(J)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                            K),
                  K=[_|L],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                           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_functor/3___3'(I, D)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_functor/3___3__0'(C, B, A, S) :-
    nonvar(A),
    nonvar(B),
    (   'chr newvia_1'(C, D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, F, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                  F)
    ),
    member(G, F),
    G=suspension(_, active, _, _, H, J, I),
    H==C,
    nonvar(I),
    nonvar(J),
    !,
    G=suspension(_, _, _, _, K, L, M),
    setarg(2, G, removed),
    term_variables(term(K, L, M), R),
    arg(4, G, 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'(R, G),
    (   var(S)
    ->  true
    ;   S=suspension(_, T, _, _, U, V, W),
        setarg(2, S, removed),
        (   T==not_stored_yet
        ->  X=[]
        ;   term_variables(term(U, V, W), X),
            ( arg(4, S, Y),
              (   var(Y)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                            Z),
                  Z=[_|A1],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                           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_functor/3___3'(X, S)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_functor/3___3__0'(A, B, C, R) :-
    (   'chr newvia'([A, B, C], D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, F, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  F)
    ),
    member(G, F),
    G=suspension(_, active, _, _, H),
    nonvar(H),
    H=functor(I, J, K),
    I==A,
    J==B,
    K==C,
    !,
    G=suspension(_, _, _, _, L),
    setarg(2, G, removed),
    term_variables(L, Q),
    arg(4, G, M),
    (   var(M)
    ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  N),
        N=[_|O],
        b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                 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_\\+/1___1'(Q, G),
    (   var(R)
    ->  true
    ;   R=suspension(_, S, _, _, T, U, V),
        setarg(2, R, removed),
        (   S==not_stored_yet
        ->  W=[]
        ;   term_variables(term(T, U, V), W),
            ( arg(4, R, X),
              (   var(X)
              ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                            Y),
                  Y=[_|Z],
                  b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                           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_functor/3___3'(W, R)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_functor/3___3__0'(A, B, C, G) :-
    (   'chr newvia'([A, B, C], D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, F, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  F)
    ),
    !,
    (   var(G)
    ->  G=suspension(H, not_stored_yet, 0, _, A, B, C),
        'chr gen_id'(H)
    ;   true
    ),
    'known/1_1_$special_functor/3___3__0__0__10'(F,
                                                 A,
                                                 B,
                                                 C,
                                                 G).
'known/1_1_$special_functor/3___3__0__0__10'([], A, B, C, D) :-
    'known/1_1_$special_functor/3___3__1'(A, B, C, D).
'known/1_1_$special_functor/3___3__0__0__10'([A|C1], E, G, I, Q) :-
    (   A=suspension(_, active, _, _, B, B1),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=functor(D, F, H),
        D==E,
        F==G,
        H==I
    ->  ( A=suspension(_, _, _, _, J, K),
          setarg(2, A, removed),
          term_variables(term(J, K), P),
          ( arg(4, A, 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(4, O, _)
                ;   true
                )
            ;   L=[_, _|N],
                setarg(2, L, N),
                (   N=[O|_]
                ->  setarg(4, O, L)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_;/2___2'(P, A)
        ),
        ( arg(2, Q, T),
          setarg(2, Q, active),
          ( arg(3, Q, R),
            S is R+1,
            setarg(3, Q, S)
          ),
          (   T==not_stored_yet
          ->  Q=suspension(_, _, _, _, U, V, W),
              term_variables(term(U, V, W), X),
              'chr none_locked'(X),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                          Y),
                Z=[Q|Y],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                         Z),
                (   Y=[A1|_]
                ->  setarg(4, A1, Z)
                ;   true
                )
              ),
              'attach_known/1_1_$special_functor/3___3'(X, Q)
          ;   true
          )
        ),
        known(B1),
        (   Q=suspension(_, active, S, _, _, _, _)
        ->  setarg(2, Q, inactive),
            'known/1_1_$special_functor/3___3__0__0__10'(C1,
                                                         E,
                                                         G,
                                                         I,
                                                         Q)
        ;   true
        )
    ;   'known/1_1_$special_functor/3___3__0__0__10'(C1,
                                                     E,
                                                     G,
                                                     I,
                                                     Q)
    ).
'known/1_1_$special_functor/3___3__0'(B, C, D, A) :-
    (   var(A)
    ->  A=suspension(E, not_stored_yet, 0, _, B, C, D),
        'chr gen_id'(E)
    ;   true
    ),
    'known/1_1_$special_functor/3___3__1'(B, C, D, A).
'known/1_1_$special_functor/3___3__1'(A, B, C, G) :-
    (   'chr newvia'([A, B, C], D)
    ->  get_attr(D, guard_entailment, E),
        E=v(_, _, _, F, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  F)
    ),
    !,
    'known/1_1_$special_functor/3___3__1__0__11'(F,
                                                 A,
                                                 B,
                                                 C,
                                                 G).
'known/1_1_$special_functor/3___3__1__0__11'([], A, B, C, D) :-
    'known/1_1_$special_functor/3___3__2'(A, B, C, D).
'known/1_1_$special_functor/3___3__1__0__11'([A|D1], F, H, J, R) :-
    (   A=suspension(_, active, _, _, B, C1),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=functor(E, G, I),
        E==F,
        G==H,
        I==J
    ->  ( A=suspension(_, _, _, _, K, L),
          setarg(2, A, removed),
          term_variables(term(K, L), Q),
          ( arg(4, A, 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'(Q, A)
        ),
        ( arg(2, R, U),
          setarg(2, R, active),
          ( arg(3, R, S),
            T is S+1,
            setarg(3, R, T)
          ),
          (   U==not_stored_yet
          ->  R=suspension(_, _, _, _, V, W, X),
              term_variables(term(V, W, X), Y),
              'chr none_locked'(Y),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                          Z),
                A1=[R|Z],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',
                         A1),
                (   Z=[B1|_]
                ->  setarg(4, B1, A1)
                ;   true
                )
              ),
              'attach_known/1_1_$special_functor/3___3'(Y, R)
          ;   true
          )
        ),
        known(C1),
        (   R=suspension(_, active, T, _, _, _, _)
        ->  setarg(2, R, inactive),
            'known/1_1_$special_functor/3___3__1__0__11'(D1,
                                                         F,
                                                         H,
                                                         J,
                                                         R)
        ;   true
        )
    ;   'known/1_1_$special_functor/3___3__1__0__11'(D1,
                                                     F,
                                                     H,
                                                     J,
                                                     R)
    ).
'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, E, F, G) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, D, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  D)
    ),
    !,
    'known/1_1_$special_functor/3___3__2__0__12'(D,
                                                 A,
                                                 E,
                                                 F,
                                                 G).
'known/1_1_$special_functor/3___3__2__0__12'([], A, B, C, D) :-
    'known/1_1_$special_functor/3___3__3'(A, B, C, D).
'known/1_1_$special_functor/3___3__2__0__12'([A|M], E, N, O, P) :-
    (   A=suspension(_, active, _, _, B, _),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=functor(D, _, _),
        D==E
    ->  ( A=suspension(_, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(4, A, 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'(L, A)
        ),
        'known/1_1_$special_functor/3___3__2__0__12'(M,
                                                     E,
                                                     N,
                                                     O,
                                                     P)
    ;   'known/1_1_$special_functor/3___3__2__0__12'(M,
                                                     E,
                                                     N,
                                                     O,
                                                     P)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E, F, G),
        term_variables(term(E, F, G), H),
        'chr none_locked'(H),
        ( 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'(H, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\=/2___2'(M, I)
        )
    ).
'known/1_1_$special_\\=/2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\=/2___2'(G, C)
        )
    ).
'known/1_1_$special_\\=/2___2__0'(B, A, C) :-
    ground(A),
    ground(B),
    'chr lock'(B),
    'chr lock'(A),
    B=A,
    'chr unlock'(B),
    'chr unlock'(A),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\=/2___2'(G, C)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\=/2___2__0'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\=/2___2'(G, C)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\=/2___2__0'(B, A, D) :-
    nonvar(A),
    (   var(B),
        'chr lock'(A),
        functor(A, M, C),
        C>0,
        'chr unlock'(A),
        !,
        (   var(D)
        ->  true
        ;   D=suspension(_, E, _, _, _, F, G),
            setarg(2, D, removed),
            (   E==not_stored_yet
            ->  H=[]
            ;   term_variables(term(F, G), H),
                ( arg(5, D, 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(5, L, _)
                      ;   true
                      )
                  ;   I=[_, _|K],
                      setarg(2, I, K),
                      (   K=[L|_]
                      ->  setarg(5, L, I)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_\\=/2___2'(H, D)
            )
        ),
        length(N, C),
        A=..[M|O],
        P=..[M|N],
        add_args_nunif(O, N, Q),
        R=(\+functor(B, M, C);B=P, Q),
        known(R)
    ;   nonvar(B),
        'chr lock'(B),
        functor(B, A1, B1),
        'chr unlock'(B),
        !,
        (   var(D)
        ->  true
        ;   D=suspension(_, S, _, _, _, T, U),
            setarg(2, D, removed),
            (   S==not_stored_yet
            ->  V=[]
            ;   term_variables(term(T, U), V),
                ( arg(5, D, 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(5, Z, _)
                      ;   true
                      )
                  ;   W=[_, _|Y],
                      setarg(2, W, Y),
                      (   Y=[Z|_]
                      ->  setarg(5, Z, W)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_\\=/2___2'(V, D)
            )
        ),
        (   functor(A, A1, B1)
        ->  B=..[A1|C1],
            A=..[A1|D1],
            add_args_nunif(C1, D1, E1),
            known(E1)
        ;   true
        )
    ).
'known/1_1_$special_\\=/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    (   '$novel_production'(A, 182),
        !,
        '$extend_history'(A, 182),
        arg(2, A, G),
        setarg(2, A, active),
        arg(4, A, E),
        F is E+1,
        setarg(4, A, F),
        (   G==not_stored_yet
        ->  A=suspension(_, _, _, _, _, H, I),
            term_variables(term(H, I), J),
            'chr none_locked'(J),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                        K),
              L=[A|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'(J, A)
        ;   true
        ),
        'known/1_1_$special_\\=/2'(C, B),
        (   A=suspension(_, active, _, F, _, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_\\=/2___2__1'(B, C, A)
        ;   true
        )
    ;   'known/1_1_$special_\\=/2___2__1'(B, C, A)
    ).
'known/1_1_$special_\\=/2___2__1'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H\=I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\=/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\=/2___2__1'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_\\=/2___2__1__0__11'(E, A, B, F).
'known/1_1_$special_\\=/2___2__1__0__11'([], A, B, C) :-
    'known/1_1_$special_\\=/2___2__2'(A, B, C).
'known/1_1_$special_\\=/2___2__1__0__11'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D\=F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\=/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_\\=/2___2__1__0__11'(Z,
                                                     E,
                                                     G,
                                                     O)
        ;   true
        )
    ;   'known/1_1_$special_\\=/2___2__1__0__11'(Z,
                                                 E,
                                                 G,
                                                 O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_\\=/2___2__2__0__12'(E, A, B, F).
'known/1_1_$special_\\=/2___2__2__0__12'([], A, B, C) :-
    'known/1_1_$special_\\=/2___2__3'(A, B, C).
'known/1_1_$special_\\=/2___2__2__0__12'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E\=G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\=/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_\\=/2___2__2__0__12'(A1,
                                                     F,
                                                     H,
                                                     P)
        ;   true
        )
    ;   'known/1_1_$special_\\=/2___2__2__0__12'(A1,
                                                 F,
                                                 H,
                                                 P)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(4, I, 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, I)
        )
    ).
'known/1_1_$special_=/2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(4, C, 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, C)
        )
    ).
'known/1_1_$special_=/2___2__0'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(4, C, 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, C)
        )
    ).
'known/1_1_$special_=/2___2__0'(A, K, B) :-
    var(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ),
    A=K.
'known/1_1_$special_=/2___2__0'(K, A, B) :-
    var(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ),
    K=A.
'known/1_1_$special_=/2___2__0'(A, K, B) :-
    'chr lock'(A),
    functor(A, L, M),
    'chr unlock'(A),
    !,
    (   var(B)
    ->  true
    ;   B=suspension(_, C, _, _, D, E),
        setarg(2, B, removed),
        (   C==not_stored_yet
        ->  F=[]
        ;   term_variables(term(D, E), F),
            ( arg(4, B, 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, B)
        )
    ),
    (   functor(K, L, M),
        A=K
    ->  true
    ;   'known/1_1_$special_fail/0'
    ).
'known/1_1_$special_=/2___2__0'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H=I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(4, P, 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'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=/2___2__0'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    (   var(F)
    ->  F=suspension(G, not_stored_yet, 0, _, A, B),
        'chr gen_id'(G)
    ;   true
    ),
    'known/1_1_$special_=/2___2__0__0__10'(E, A, B, F).
'known/1_1_$special_=/2___2__0__0__10'([], A, B, C) :-
    'known/1_1_$special_=/2___2__1'(A, B, C).
'known/1_1_$special_=/2___2__0__0__10'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D=F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(3, O, P),
            Q is P+1,
            setarg(3, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(4, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_=/2___2__0__0__10'(Z,
                                                   E,
                                                   G,
                                                   O)
        ;   true
        )
    ;   'known/1_1_$special_=/2___2__0__0__10'(Z,
                                               E,
                                               G,
                                               O)
    ).
'known/1_1_$special_=/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    'known/1_1_$special_=/2___2__1'(B, C, A).
'known/1_1_$special_=/2___2__1'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=/2___2__1__0__11'(E, A, B, F).
'known/1_1_$special_=/2___2__1__0__11'([], A, B, C) :-
    'known/1_1_$special_=/2___2__2'(A, B, C).
'known/1_1_$special_=/2___2__1__0__11'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E=G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(3, P, Q),
            R is Q+1,
            setarg(3, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(4, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_=/2___2__1__0__11'(A1,
                                                   F,
                                                   H,
                                                   P)
        ;   true
        )
    ;   'known/1_1_$special_=/2___2__1__0__11'(A1,
                                               F,
                                               H,
                                               P)
    ).
'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, D),
    setarg(2, A, active),
    arg(3, A, B),
    C is B+1,
    setarg(3, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ).
'known/1_1_$special_,/2'(_, _) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\==/2___2'(M, I)
        )
    ).
'known/1_1_$special_\\==/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    (   '$novel_production'(A, 138),
        number(B),
        !,
        '$extend_history'(A, 138),
        arg(2, A, G),
        setarg(2, A, active),
        arg(4, A, E),
        F is E+1,
        setarg(4, A, F),
        (   G==not_stored_yet
        ->  A=suspension(_, _, _, _, _, H, I),
            term_variables(term(H, I), J),
            'chr none_locked'(J),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                        K),
              L=[A|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'(J, A)
        ;   true
        ),
        'known/1_1_$special_=\\=/2'(B, C),
        (   A=suspension(_, active, _, F, _, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_\\==/2___2__1'(B, C, A)
        ;   true
        )
    ;   'known/1_1_$special_\\==/2___2__1'(B, C, A)
    ).
'known/1_1_$special_\\==/2___2__1'(L, B, A) :-
    '$novel_production'(A, 139),
    number(B),
    !,
    '$extend_history'(A, 139),
    arg(2, A, E),
    setarg(2, A, active),
    arg(4, A, C),
    D is C+1,
    setarg(4, A, D),
    (   E==not_stored_yet
    ->  A=suspension(_, _, _, _, _, F, G),
        term_variables(term(F, G), H),
        'chr none_locked'(H),
        ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                    I),
          J=[A|I],
          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                   J),
          (   I=[K|_]
          ->  setarg(5, K, J)
          ;   true
          )
        ),
        'attach_known/1_1_$special_\\==/2___2'(H, A)
    ;   true
    ),
    'known/1_1_$special_=\\=/2'(L, B),
    (   A=suspension(_, active, _, D, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_\\==/2___2__2'(L, B, A)
    ;   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'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\==/2___2'(G, C)
        )
    ).
'known/1_1_$special_\\==/2___2__2'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H\==I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\==/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\==/2___2__2'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    F=suspension(_, _, _, _, _, I, J),
    setarg(2, F, removed),
    term_variables(term(I, J), O),
    arg(5, 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(5, N, _)
        ;   true
        )
    ;   K=[_, _|M],
        setarg(2, K, M),
        (   M=[N|_]
        ->  setarg(5, N, K)
        ;   true
        )
    ),
    'detach_known/1_1_$special_==/2___2'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\==/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_\\==/2___2__2'(A, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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, E, F).
'known/1_1_$special_\\==/2___2__2__0__9'([], A, B, C) :-
    'known/1_1_$special_\\==/2___2__3'(A, B, C).
'known/1_1_$special_\\==/2___2__2__0__9'([A|Q], C, P, D) :-
    (   A=suspension(_, active, _, _, _, O, B),
        B==C,
        E=t(229, A, D),
        '$novel_production'(A, E),
        '$novel_production'(D, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\==/2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_\\==/2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_\\==/2___2__2__0__9'(Q,
                                                     C,
                                                     P,
                                                     D)
        ;   true
        )
    ;   'known/1_1_$special_\\==/2___2__2__0__9'(Q,
                                                 C,
                                                 P,
                                                 D)
    ).
'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'(L, K, A) :-
    '$novel_production'(A, 231),
    !,
    '$extend_history'(A, 231),
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ),
    'known/1_1_$special_\\==/2'(K, L),
    (   A=suspension(_, active, _, C, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_\\==/2___2__4'(L, K, A)
    ;   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'(B, A, C) :-
    A==B,
    '$novel_production'(C, 232),
    !,
    '$extend_history'(C, 232),
    arg(2, C, F),
    setarg(2, C, active),
    arg(4, C, D),
    E is D+1,
    setarg(4, C, E),
    (   F==not_stored_yet
    ->  C=suspension(_, _, _, _, _, G, H),
        term_variables(term(G, H), I),
        'chr none_locked'(I),
        ( 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'(I, C)
    ;   true
    ),
    'known/1_1_$special_fail/0',
    (   C=suspension(_, active, _, E, _, _, _)
    ->  setarg(2, C, inactive),
        'known/1_1_$special_\\==/2___2__5'(B, A, 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'(B, A, C) :-
    nonvar(A),
    nonvar(B),
    'chr lock'(B),
    functor(B, L, M),
    'chr unlock'(B),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_\\==/2___2'(G, C)
        )
    ),
    (   functor(A, L, M)
    ->  B=..[L|N],
        A=..[L|O],
        add_args_nmatch(N, O, P),
        known(P)
    ;   true
    ).
'known/1_1_$special_\\==/2___2__5'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_\\==/2___2__5__0__13'(E, A, B, F).
'known/1_1_$special_\\==/2___2__5__0__13'([], A, B, C) :-
    'known/1_1_$special_\\==/2___2__6'(A, B, C).
'known/1_1_$special_\\==/2___2__5__0__13'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D\==F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\==/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_\\==/2___2__5__0__13'(Z,
                                                      E,
                                                      G,
                                                      O)
        ;   true
        )
    ;   'known/1_1_$special_\\==/2___2__5__0__13'(Z,
                                                  E,
                                                  G,
                                                  O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_\\==/2___2__6__0__14'(E, A, B, F).
'known/1_1_$special_\\==/2___2__6__0__14'([], A, B, C) :-
    'known/1_1_$special_\\==/2___2__7'(A, B, C).
'known/1_1_$special_\\==/2___2__6__0__14'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E\==G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_\\==/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_\\==/2___2__6__0__14'(A1,
                                                      F,
                                                      H,
                                                      P)
        ;   true
        )
    ;   'known/1_1_$special_\\==/2___2__6__0__14'(A1,
                                                  F,
                                                  H,
                                                  P)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_==/2___2'(M, I)
        )
    ).
'known/1_1_$special_==/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    (   '$novel_production'(A, 136),
        number(B),
        !,
        '$extend_history'(A, 136),
        arg(2, A, G),
        setarg(2, A, active),
        arg(4, A, E),
        F is E+1,
        setarg(4, A, F),
        (   G==not_stored_yet
        ->  A=suspension(_, _, _, _, _, H, I),
            term_variables(term(H, I), J),
            'chr none_locked'(J),
            ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                        K),
              L=[A|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'(J, A)
        ;   true
        ),
        'known/1_1_$special_=:=/2'(B, C),
        (   A=suspension(_, active, _, F, _, _, _)
        ->  setarg(2, A, inactive),
            'known/1_1_$special_==/2___2__1'(B, C, A)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__1'(B, C, A)
    ).
'known/1_1_$special_==/2___2__1'(L, B, A) :-
    '$novel_production'(A, 137),
    number(B),
    !,
    '$extend_history'(A, 137),
    arg(2, A, E),
    setarg(2, A, active),
    arg(4, A, C),
    D is C+1,
    setarg(4, A, D),
    (   E==not_stored_yet
    ->  A=suspension(_, _, _, _, _, F, G),
        term_variables(term(F, G), H),
        'chr none_locked'(H),
        ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                    I),
          J=[A|I],
          b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                   J),
          (   I=[K|_]
          ->  setarg(5, K, J)
          ;   true
          )
        ),
        'attach_known/1_1_$special_==/2___2'(H, A)
    ;   true
    ),
    'known/1_1_$special_=:=/2'(L, B),
    (   A=suspension(_, active, _, D, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_==/2___2__2'(L, B, A)
    ;   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'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_==/2___2'(G, C)
        )
    ).
'known/1_1_$special_==/2___2__2'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_==/2___2'(G, C)
        )
    ).
'known/1_1_$special_==/2___2__2'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H==I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_==/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_==/2___2__2'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    F=suspension(_, _, _, _, _, I, J),
    setarg(2, F, removed),
    term_variables(term(I, J), O),
    arg(5, 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(5, N, _)
        ;   true
        )
    ;   K=[_, _|M],
        setarg(2, K, M),
        (   M=[N|_]
        ->  setarg(5, N, K)
        ;   true
        )
    ),
    'detach_known/1_1_$special_\\==/2___2'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_==/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_==/2___2__2'(E, A, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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, E, A, F).
'known/1_1_$special_==/2___2__2__0__10'([], A, B, C) :-
    'known/1_1_$special_==/2___2__3'(A, B, C).
'known/1_1_$special_==/2___2__2__0__10'([A|Q], O, C, D) :-
    (   A=suspension(_, active, _, _, _, B, P),
        B==C,
        E=t(228, D, A),
        '$novel_production'(D, E),
        '$novel_production'(A, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_==/2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_==/2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_==/2___2__2__0__10'(Q,
                                                    O,
                                                    C,
                                                    D)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__2__0__10'(Q,
                                                O,
                                                C,
                                                D)
    ).
'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, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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, E, F).
'known/1_1_$special_==/2___2__3__0__11'([], A, B, C) :-
    'known/1_1_$special_==/2___2__4'(A, B, C).
'known/1_1_$special_==/2___2__3__0__11'([A|Q], C, P, D) :-
    (   A=suspension(_, active, _, _, _, O, B),
        B==C,
        E=t(228, A, D),
        '$novel_production'(A, E),
        '$novel_production'(D, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_==/2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_==/2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_==/2___2__3__0__11'(Q,
                                                    C,
                                                    P,
                                                    D)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__3__0__11'(Q,
                                                C,
                                                P,
                                                D)
    ).
'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'(E, A, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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, E, A, F).
'known/1_1_$special_==/2___2__4__0__12'([], A, B, C) :-
    'known/1_1_$special_==/2___2__5'(A, B, C).
'known/1_1_$special_==/2___2__4__0__12'([A|Q], O, C, D) :-
    (   A=suspension(_, active, _, _, _, B, P),
        B==C,
        E=t(229, D, A),
        '$novel_production'(D, E),
        '$novel_production'(A, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_==/2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_\\==/2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_==/2___2__4__0__12'(Q,
                                                    O,
                                                    C,
                                                    D)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__4__0__12'(Q,
                                                O,
                                                C,
                                                D)
    ).
'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'(L, K, A) :-
    '$novel_production'(A, 230),
    !,
    '$extend_history'(A, 230),
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ),
    'known/1_1_$special_==/2'(K, L),
    (   A=suspension(_, active, _, C, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_==/2___2__6'(L, K, A)
    ;   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'(K, L, A) :-
    '$novel_production'(A, 234),
    !,
    '$extend_history'(A, 234),
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ),
    'known/1_1_$special_=/2'(K, L),
    (   A=suspension(_, active, _, C, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_==/2___2__7'(K, L, A)
    ;   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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_==/2___2__7__0__15'(E, A, B, F).
'known/1_1_$special_==/2___2__7__0__15'([], A, B, C) :-
    'known/1_1_$special_==/2___2__8'(A, B, C).
'known/1_1_$special_==/2___2__7__0__15'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D==F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_==/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_==/2___2__7__0__15'(Z,
                                                    E,
                                                    G,
                                                    O)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__7__0__15'(Z,
                                                E,
                                                G,
                                                O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_==/2___2__8__0__16'(E, A, B, F).
'known/1_1_$special_==/2___2__8__0__16'([], A, B, C) :-
    'known/1_1_$special_==/2___2__9'(A, B, C).
'known/1_1_$special_==/2___2__8__0__16'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E==G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_==/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_==/2___2__8__0__16'(A1,
                                                    F,
                                                    H,
                                                    P)
        ;   true
        )
    ;   'known/1_1_$special_==/2___2__8__0__16'(A1,
                                                F,
                                                H,
                                                P)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, 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_=\\=/2'(A, B).
'known/1_1_$special_>=/2'(B, A) :-
    'known/1_1_$special_=</2'(A, B).
'known/1_1_$special_>/2'(B, A) :-
    'known/1_1_$special_</2'(A, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(M, I)
        )
    ).
'known/1_1_$special_=</2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(G, C)
        )
    ).
'known/1_1_$special_=</2___2__0'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(G, C)
        )
    ).
'known/1_1_$special_=</2___2__0'(B, A, C) :-
    number(A),
    (   number(B),
        B>A,
        !,
        (   var(C)
        ->  true
        ;   C=suspension(_, D, _, _, _, E, F),
            setarg(2, C, removed),
            (   D==not_stored_yet
            ->  G=[]
            ;   term_variables(term(E, F), G),
                ( arg(5, C, 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(5, K, _)
                      ;   true
                      )
                  ;   H=[_, _|J],
                      setarg(2, H, J),
                      (   J=[K|_]
                      ->  setarg(5, K, H)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_=</2___2'(G, C)
            )
        ),
        'known/1_1_$special_fail/0'
    ;   (   'chr newvia_1'(B, L)
        ->  get_attr(L, guard_entailment, M),
            M=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, N, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                      N)
        ),
        member(O, N),
        O=suspension(_, active, _, _, _, P, Q),
        P==B,
        number(Q),
        Q=<A,
        !,
        (   var(C)
        ->  true
        ;   C=suspension(_, R, _, _, _, S, T),
            setarg(2, C, removed),
            (   R==not_stored_yet
            ->  U=[]
            ;   term_variables(term(S, T), U),
                ( arg(5, C, 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(5, Y, _)
                      ;   true
                      )
                  ;   V=[_, _|X],
                      setarg(2, V, X),
                      (   X=[Y|_]
                      ->  setarg(5, Y, V)
                      ;   true
                      )
                  )
                ),
                'detach_known/1_1_$special_=</2___2'(U, C)
            )
        )
    ).
'known/1_1_$special_=</2___2__0'(A, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  D)
    ),
    !,
    'known/1_1_$special_=</2___2__0__0__12'(D, A, E, F).
'known/1_1_$special_=</2___2__0__0__12'([], A, B, C) :-
    'known/1_1_$special_=</2___2__1'(A, B, C).
'known/1_1_$special_=</2___2__0__0__12'([A|M], C, E, N) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C
        ),
        number(D),
        number(E),
        E=<D
    ->  ( A=suspension(_, _, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(5, A, 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(5, K, _)
                ;   true
                )
            ;   H=[_, _|J],
                setarg(2, H, J),
                (   J=[K|_]
                ->  setarg(5, K, H)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_=</2___2'(L, A)
        ),
        'known/1_1_$special_=</2___2__0__0__12'(M,
                                                C,
                                                E,
                                                N)
    ;   'known/1_1_$special_=</2___2__0__0__12'(M,
                                                C,
                                                E,
                                                N)
    ).
'known/1_1_$special_=</2___2__0'(A, B, C) :-
    'known/1_1_$special_=</2___2__1'(A, B, C).
'known/1_1_$special_=</2___2__1'(A, B, I) :-
    number(A),
    (   'chr newvia_1'(B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, H, G),
    G==B,
    number(H),
    A=<H,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(M, I)
        )
    ).
'known/1_1_$special_=</2___2__1'(E, A, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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__14'(D, E, A, F).
'known/1_1_$special_=</2___2__1__0__14'([], A, B, C) :-
    'known/1_1_$special_=</2___2__2'(A, B, C).
'known/1_1_$special_=</2___2__1__0__14'([A|M], D, C, N) :-
    (   ( A=suspension(_, active, _, _, _, E, B),
          B==C
        ),
        number(D),
        number(E),
        E=<D
    ->  ( A=suspension(_, _, _, _, _, F, G),
          setarg(2, A, removed),
          term_variables(term(F, G), L),
          ( arg(5, A, 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(5, K, _)
                ;   true
                )
            ;   H=[_, _|J],
                setarg(2, H, J),
                (   J=[K|_]
                ->  setarg(5, K, H)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_=</2___2'(L, A)
        ),
        'known/1_1_$special_=</2___2__1__0__14'(M,
                                                D,
                                                C,
                                                N)
    ;   'known/1_1_$special_=</2___2__1__0__14'(M,
                                                D,
                                                C,
                                                N)
    ).
'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'(B, A, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    F=suspension(_, _, _, _, _, I, J),
    setarg(2, F, removed),
    term_variables(term(I, J), O),
    arg(5, 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(5, N, _)
        ;   true
        )
    ;   K=[_, _|M],
        setarg(2, K, M),
        (   M=[N|_]
        ->  setarg(5, N, K)
        ;   true
        )
    ),
    'detach_known/1_1_$special_=</2___2'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(T, P)
        )
    ),
    'known/1_1_$special_=:=/2'(B, A).
'known/1_1_$special_=</2___2__2'(F, A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, D, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(G, not_stored_yet, t, 0, _, F, A),
        'chr gen_id'(G)
    ;   true
    ),
    'known/1_1_$special_=</2___2__2__0__17'(D, F, A, E).
'known/1_1_$special_=</2___2__2__0__17'([], A, B, C) :-
    'known/1_1_$special_=</2___2__3'(A, B, C).
'known/1_1_$special_=</2___2__2__0__17'([A|Q], O, C, D) :-
    (   A=suspension(_, active, _, _, _, B, P),
        B==C,
        E=t(187, D, A),
        '$novel_production'(D, E),
        '$novel_production'(A, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_=</2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_=</2___2__2__0__17'(Q,
                                                    O,
                                                    C,
                                                    D)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__2__0__17'(Q,
                                                O,
                                                C,
                                                D)
    ).
'known/1_1_$special_=</2___2__2'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    'known/1_1_$special_=</2___2__3'(B, C, A).
'known/1_1_$special_=</2___2__3'(A, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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__18'(D, A, E, F).
'known/1_1_$special_=</2___2__3__0__18'([], A, B, C) :-
    'known/1_1_$special_=</2___2__4'(A, B, C).
'known/1_1_$special_=</2___2__3__0__18'([A|Q], C, P, D) :-
    (   A=suspension(_, active, _, _, _, O, B),
        B==C,
        E=t(187, A, D),
        '$novel_production'(A, E),
        '$novel_production'(D, E)
    ->  '$extend_history'(D, E),
        ( arg(2, D, H),
          setarg(2, D, active),
          ( arg(4, D, F),
            G is F+1,
            setarg(4, D, G)
          ),
          (   H==not_stored_yet
          ->  D=suspension(_, _, _, _, _, I, J),
              term_variables(term(I, J), K),
              'chr none_locked'(K),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          L),
                M=[D|L],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         M),
                (   L=[N|_]
                ->  setarg(5, N, M)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(K, D)
          ;   true
          )
        ),
        'known/1_1_$special_=</2'(O, P),
        (   D=suspension(_, active, _, G, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_=</2___2__3__0__18'(Q,
                                                    C,
                                                    P,
                                                    D)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__3__0__18'(Q,
                                                C,
                                                P,
                                                D)
    ).
'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'(E, A, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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__19'(D, E, A, F).
'known/1_1_$special_=</2___2__4__0__19'([], A, B, C) :-
    'known/1_1_$special_=</2___2__5'(A, B, C).
'known/1_1_$special_=</2___2__4__0__19'([A|H], I, C, J) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C
        ),
        (   'chr newvia_2'(C, D, E)
        ->  get_attr(E, guard_entailment, F),
            F=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, G, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                      G)
        )
    ->  'known/1_1_$special_=</2___2__4__1__19'(G,
                                                D,
                                                A,
                                                H,
                                                I,
                                                C,
                                                J)
    ;   'known/1_1_$special_=</2___2__4__0__19'(H, I, C, J)
    ).
'known/1_1_$special_=</2___2__4__1__19'([], _, _, A, B, C, D) :-
    'known/1_1_$special_=</2___2__4__0__19'(A, B, C, D).
'known/1_1_$special_=</2___2__4__1__19'([A|J], E, K, L, F, C, M) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C,
          D==E
        ),
        (   'chr newvia_2'(F, C, G)
        ->  get_attr(G, guard_entailment, H),
            H=v(_, _, _, _, _, _, _, _, _, _, _, _, _, I, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                      I)
        )
    ->  'known/1_1_$special_=</2___2__4__2__19'(I,
                                                A,
                                                J,
                                                E,
                                                K,
                                                L,
                                                F,
                                                C,
                                                M)
    ;   'known/1_1_$special_=</2___2__4__1__19'(J,
                                                E,
                                                K,
                                                L,
                                                F,
                                                C,
                                                M)
    ).
'known/1_1_$special_=</2___2__4__2__19'([], _, A, B, C, D, E, F, G) :-
    'known/1_1_$special_=</2___2__4__1__19'(A,
                                            B,
                                            C,
                                            D,
                                            E,
                                            F,
                                            G).
'known/1_1_$special_=</2___2__4__2__19'([A|T], H, U, S, B, V, D, F, G) :-
    (   A=suspension(_, active, _, _, _, C, E),
        A\==B,
        ( C==D,
          E==F
        ),
        I=t(188, G, A, H, B),
        '$novel_production'(G, I),
        '$novel_production'(A, I),
        '$novel_production'(H, I),
        '$novel_production'(B, I)
    ->  '$extend_history'(G, I),
        ( arg(2, G, L),
          setarg(2, G, active),
          ( arg(4, G, J),
            K is J+1,
            setarg(4, G, K)
          ),
          (   L==not_stored_yet
          ->  G=suspension(_, _, _, _, _, M, N),
              term_variables(term(M, N), O),
              'chr none_locked'(O),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          P),
                Q=[G|P],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         Q),
                (   P=[R|_]
                ->  setarg(5, R, Q)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(O, G)
          ;   true
          )
        ),
        'known/1_1_$special_=\\=/2'(D, S),
        (   G=suspension(_, active, _, K, _, _, _)
        ->  setarg(2, G, inactive),
            'known/1_1_$special_=</2___2__4__2__19'(T,
                                                    H,
                                                    U,
                                                    S,
                                                    B,
                                                    V,
                                                    D,
                                                    F,
                                                    G)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__4__2__19'(T,
                                                H,
                                                U,
                                                S,
                                                B,
                                                V,
                                                D,
                                                F,
                                                G)
    ).
'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, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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__20'(D, A, E, F).
'known/1_1_$special_=</2___2__5__0__20'([], A, B, C) :-
    'known/1_1_$special_=</2___2__6'(A, B, C).
'known/1_1_$special_=</2___2__5__0__20'([A|I], C, D, J) :-
    (   ( A=suspension(_, active, _, _, _, H, B),
          B==C
        ),
        (   'chr newvia_2'(C, D, E)
        ->  get_attr(E, guard_entailment, F),
            F=v(_, _, _, _, _, _, _, _, _, _, _, _, _, G, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                      G)
        )
    ->  'known/1_1_$special_=</2___2__5__1__20'(G,
                                                H,
                                                A,
                                                I,
                                                C,
                                                D,
                                                J)
    ;   'known/1_1_$special_=</2___2__5__0__20'(I, C, D, J)
    ).
'known/1_1_$special_=</2___2__5__1__20'([], _, _, A, B, C, D) :-
    'known/1_1_$special_=</2___2__5__0__20'(A, B, C, D).
'known/1_1_$special_=</2___2__5__1__20'([A|J], F, K, L, C, E, M) :-
    (   ( A=suspension(_, active, _, _, _, B, D),
          B==C,
          D==E
        ),
        (   'chr newvia_2'(F, C, G)
        ->  get_attr(G, guard_entailment, H),
            H=v(_, _, _, _, _, _, _, _, _, _, _, _, _, I, _, _, _, _, _, _, _, _)
        ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                      I)
        )
    ->  'known/1_1_$special_=</2___2__5__2__20'(I,
                                                A,
                                                J,
                                                F,
                                                K,
                                                L,
                                                C,
                                                E,
                                                M)
    ;   'known/1_1_$special_=</2___2__5__1__20'(J,
                                                F,
                                                K,
                                                L,
                                                C,
                                                E,
                                                M)
    ).
'known/1_1_$special_=</2___2__5__2__20'([], _, A, B, C, D, E, F, G) :-
    'known/1_1_$special_=</2___2__5__1__20'(A,
                                            B,
                                            C,
                                            D,
                                            E,
                                            F,
                                            G).
'known/1_1_$special_=</2___2__5__2__20'([A|T], B, U, D, G, V, F, S, H) :-
    (   A=suspension(_, active, _, _, _, C, E),
        A\==B,
        ( C==D,
          E==F
        ),
        I=t(188, G, A, H, B),
        '$novel_production'(G, I),
        '$novel_production'(A, I),
        '$novel_production'(H, I),
        '$novel_production'(B, I)
    ->  '$extend_history'(H, I),
        ( arg(2, H, L),
          setarg(2, H, active),
          ( arg(4, H, J),
            K is J+1,
            setarg(4, H, K)
          ),
          (   L==not_stored_yet
          ->  H=suspension(_, _, _, _, _, M, N),
              term_variables(term(M, N), O),
              'chr none_locked'(O),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          P),
                Q=[H|P],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         Q),
                (   P=[R|_]
                ->  setarg(5, R, Q)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(O, H)
          ;   true
          )
        ),
        'known/1_1_$special_=\\=/2'(D, S),
        (   H=suspension(_, active, _, K, _, _, _)
        ->  setarg(2, H, inactive),
            'known/1_1_$special_=</2___2__5__2__20'(T,
                                                    B,
                                                    U,
                                                    D,
                                                    G,
                                                    V,
                                                    F,
                                                    S,
                                                    H)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__5__2__20'(T,
                                                B,
                                                U,
                                                D,
                                                G,
                                                V,
                                                F,
                                                S,
                                                H)
    ).
'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, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H=<I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=</2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=</2___2__6'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=</2___2__6__0__22'(E, A, B, F).
'known/1_1_$special_=</2___2__6__0__22'([], A, B, C) :-
    'known/1_1_$special_=</2___2__7'(A, B, C).
'known/1_1_$special_=</2___2__6__0__22'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D=<F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_=</2___2__6__0__22'(Z,
                                                    E,
                                                    G,
                                                    O)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__6__0__22'(Z,
                                                E,
                                                G,
                                                O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=</2___2__7__0__23'(E, A, B, F).
'known/1_1_$special_=</2___2__7__0__23'([], A, B, C) :-
    'known/1_1_$special_=</2___2__8'(A, B, C).
'known/1_1_$special_=</2___2__7__0__23'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E=<G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=</2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_=</2___2__7__0__23'(A1,
                                                    F,
                                                    H,
                                                    P)
        ;   true
        )
    ;   'known/1_1_$special_=</2___2__7__0__23'(A1,
                                                F,
                                                H,
                                                P)
    ).
'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) :-
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, 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, I) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, E)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    (   var(I)
    ->  true
    ;   I=suspension(_, J, _, _, _, K, L),
        setarg(2, I, removed),
        (   J==not_stored_yet
        ->  M=[]
        ;   term_variables(term(K, L), M),
            ( arg(5, I, 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(5, Q, _)
                  ;   true
                  )
              ;   N=[_, _|P],
                  setarg(2, N, P),
                  (   P=[Q|_]
                  ->  setarg(5, Q, N)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(M, I)
        )
    ).
'known/1_1_$special_=:=/2___2__0'(_, _, C) :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=suspension(_, active, _),
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(G, C)
        )
    ).
'known/1_1_$special_=:=/2___2__0'(B, A, C) :-
    A==B,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(G, C)
        )
    ).
'known/1_1_$special_=:=/2___2__0'(B, A, C) :-
    number(A),
    number(B),
    B=\=A,
    !,
    (   var(C)
    ->  true
    ;   C=suspension(_, D, _, _, _, E, F),
        setarg(2, C, removed),
        (   D==not_stored_yet
        ->  G=[]
        ;   term_variables(term(E, F), G),
            ( arg(5, C, 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(5, K, _)
                  ;   true
                  )
              ;   H=[_, _|J],
                  setarg(2, H, J),
                  (   J=[K|_]
                  ->  setarg(5, K, H)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(G, C)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=:=/2___2__0'(A, B, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, _, G, H),
    G==A,
    H==B,
    !,
    F=suspension(_, _, _, _, _, I, J),
    setarg(2, F, removed),
    term_variables(term(I, J), O),
    arg(5, 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(5, N, _)
        ;   true
        )
    ;   K=[_, _|M],
        setarg(2, K, M),
        (   M=[N|_]
        ->  setarg(5, N, K)
        ;   true
        )
    ),
    'detach_known/1_1_$special_=\\=/2___2'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=:=/2___2__0'(F, A, E) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, D)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                  D)
    ),
    !,
    (   var(E)
    ->  E=suspension(G, not_stored_yet, t, 0, _, F, A),
        'chr gen_id'(G)
    ;   true
    ),
    'known/1_1_$special_=:=/2___2__0__0__11'(D, F, A, E).
'known/1_1_$special_=:=/2___2__0__0__11'([], A, B, C) :-
    'known/1_1_$special_=:=/2___2__1'(A, B, C).
'known/1_1_$special_=:=/2___2__0__0__11'([A|Q], F, C, D) :-
    (   A=suspension(_, active, _, _, _, B, G),
        B==C,
        ( E=t(193, D, A),
          '$novel_production'(D, E),
          '$novel_production'(A, E)
        ),
        F\==G
    ->  '$extend_history'(D, E),
        ( arg(2, D, J),
          setarg(2, D, active),
          ( arg(4, D, H),
            I is H+1,
            setarg(4, D, I)
          ),
          (   J==not_stored_yet
          ->  D=suspension(_, _, _, _, _, K, L),
              term_variables(term(K, L), M),
              'chr none_locked'(M),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                          N),
                O=[D|N],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                         O),
                (   N=[P|_]
                ->  setarg(5, P, O)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=:=/2___2'(M, D)
          ;   true
          )
        ),
        'known/1_1_$special_=:=/2'(F, G),
        (   D=suspension(_, active, _, I, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_=:=/2___2__0__0__11'(Q,
                                                     F,
                                                     C,
                                                     D)
        ;   true
        )
    ;   'known/1_1_$special_=:=/2___2__0__0__11'(Q,
                                                 F,
                                                 C,
                                                 D)
    ).
'known/1_1_$special_=:=/2___2__0'(B, C, A) :-
    (   var(A)
    ->  A=suspension(D, not_stored_yet, t, 0, _, B, C),
        'chr gen_id'(D)
    ;   true
    ),
    'known/1_1_$special_=:=/2___2__1'(B, C, A).
'known/1_1_$special_=:=/2___2__1'(A, E, F) :-
    (   'chr newvia_1'(A, B)
    ->  get_attr(B, guard_entailment, C),
        C=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, E, F).
'known/1_1_$special_=:=/2___2__1__0__12'([], A, B, C) :-
    'known/1_1_$special_=:=/2___2__2'(A, B, C).
'known/1_1_$special_=:=/2___2__1__0__12'([A|Q], C, G, D) :-
    (   A=suspension(_, active, _, _, _, F, B),
        B==C,
        ( E=t(193, A, D),
          '$novel_production'(A, E),
          '$novel_production'(D, E)
        ),
        F\==G
    ->  '$extend_history'(D, E),
        ( arg(2, D, J),
          setarg(2, D, active),
          ( arg(4, D, H),
            I is H+1,
            setarg(4, D, I)
          ),
          (   J==not_stored_yet
          ->  D=suspension(_, _, _, _, _, K, L),
              term_variables(term(K, L), M),
              'chr none_locked'(M),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                          N),
                O=[D|N],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                         O),
                (   N=[P|_]
                ->  setarg(5, P, O)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=:=/2___2'(M, D)
          ;   true
          )
        ),
        'known/1_1_$special_=:=/2'(F, G),
        (   D=suspension(_, active, _, I, _, _, _)
        ->  setarg(2, D, inactive),
            'known/1_1_$special_=:=/2___2__1__0__12'(Q,
                                                     C,
                                                     G,
                                                     D)
        ;   true
        )
    ;   'known/1_1_$special_=:=/2___2__1__0__12'(Q,
                                                 C,
                                                 G,
                                                 D)
    ).
'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'(L, K, A) :-
    '$novel_production'(A, 194),
    !,
    '$extend_history'(A, 194),
    arg(2, A, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ),
    'known/1_1_$special_=:=/2'(K, L),
    (   A=suspension(_, active, _, C, _, _, _)
    ->  setarg(2, A, inactive),
        'known/1_1_$special_=:=/2___2__3'(L, K, A)
    ;   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, P) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, _, _, _, _, _, _, _, _, _, _, _, E, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                  E)
    ),
    member(F, E),
    F=suspension(_, active, _, _, G),
    nonvar(G),
    G=(H=:=I),
    H==A,
    I==B,
    !,
    F=suspension(_, _, _, _, J),
    setarg(2, F, removed),
    term_variables(J, O),
    arg(4, F, 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'(O, F),
    (   var(P)
    ->  true
    ;   P=suspension(_, Q, _, _, _, R, S),
        setarg(2, P, removed),
        (   Q==not_stored_yet
        ->  T=[]
        ;   term_variables(term(R, S), T),
            ( arg(5, P, 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(5, X, _)
                  ;   true
                  )
              ;   U=[_, _|W],
                  setarg(2, U, W),
                  (   W=[X|_]
                  ->  setarg(5, X, U)
                  ;   true
                  )
              )
            ),
            'detach_known/1_1_$special_=:=/2___2'(T, P)
        )
    ),
    'known/1_1_$special_fail/0'.
'known/1_1_$special_=:=/2___2__3'(A, B, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=:=/2___2__3__0__15'(E, A, B, F).
'known/1_1_$special_=:=/2___2__3__0__15'([], A, B, C) :-
    'known/1_1_$special_=:=/2___2__4'(A, B, C).
'known/1_1_$special_=:=/2___2__3__0__15'([A|Z], E, G, O) :-
    (   A=suspension(_, active, _, _, B, Y),
        nonvar(B),
        B=(\+C),
        nonvar(C),
        C=(D=:=F),
        D==E,
        F==G
    ->  ( A=suspension(_, _, _, _, H, I),
          setarg(2, A, removed),
          term_variables(term(H, I), N),
          ( arg(4, A, 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'(N, A)
        ),
        ( arg(2, O, R),
          setarg(2, O, active),
          ( arg(4, O, P),
            Q is P+1,
            setarg(4, O, Q)
          ),
          (   R==not_stored_yet
          ->  O=suspension(_, _, _, _, _, S, T),
              term_variables(term(S, T), U),
              'chr none_locked'(U),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                          V),
                W=[O|V],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                         W),
                (   V=[X|_]
                ->  setarg(5, X, W)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=:=/2___2'(U, O)
          ;   true
          )
        ),
        known(Y),
        (   O=suspension(_, active, _, Q, _, _, _)
        ->  setarg(2, O, inactive),
            'known/1_1_$special_=:=/2___2__3__0__15'(Z,
                                                     E,
                                                     G,
                                                     O)
        ;   true
        )
    ;   'known/1_1_$special_=:=/2___2__3__0__15'(Z,
                                                 E,
                                                 G,
                                                 O)
    ).
'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, F) :-
    (   'chr newvia_2'(A, B, C)
    ->  get_attr(C, guard_entailment, D),
        D=v(_, _, _, E, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _)
    ;   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',
                  E)
    ),
    !,
    'known/1_1_$special_=:=/2___2__4__0__16'(E, A, B, F).
'known/1_1_$special_=:=/2___2__4__0__16'([], A, B, C) :-
    'known/1_1_$special_=:=/2___2__5'(A, B, C).
'known/1_1_$special_=:=/2___2__4__0__16'([A|A1], F, H, P) :-
    (   A=suspension(_, active, _, _, B, Z),
        nonvar(B),
        B=(C, _),
        nonvar(C),
        C=(\+D),
        nonvar(D),
        D=(E=:=G),
        E==F,
        G==H
    ->  ( A=suspension(_, _, _, _, I, J),
          setarg(2, A, removed),
          term_variables(term(I, J), O),
          ( arg(4, A, 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'(O, A)
        ),
        ( arg(2, P, S),
          setarg(2, P, active),
          ( arg(4, P, Q),
            R is Q+1,
            setarg(4, P, R)
          ),
          (   S==not_stored_yet
          ->  P=suspension(_, _, _, _, _, T, U),
              term_variables(term(T, U), V),
              'chr none_locked'(V),
              ( nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                          W),
                X=[P|W],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
                         X),
                (   W=[Y|_]
                ->  setarg(5, Y, X)
                ;   true
                )
              ),
              'attach_known/1_1_$special_=:=/2___2'(V, P)
          ;   true
          )
        ),
        known(Z),
        (   P=suspension(_, active, _, R, _, _, _)
        ->  setarg(2, P, inactive),
            'known/1_1_$special_=:=/2___2__4__0__16'(A1,
                                                     F,
                                                     H,
                                                     P)
        ;   true
        )
    ;   'known/1_1_$special_=:=/2___2__4__0__16'(A1,
                                                 F,
                                                 H,
                                                 P)
    ).
'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, D),
    setarg(2, A, active),
    arg(4, A, B),
    C is B+1,
    setarg(4, A, C),
    (   D==not_stored_yet
    ->  A=suspension(_, _, _, _, _, E, F),
        term_variables(term(E, F), G),
        'chr none_locked'(G),
        ( 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'(G, A)
    ;   true
    ).
'known/1_1_$special_fail/0' :-
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              A),
    member(B, A),
    B=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|I]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__0__0__24'(I)
    ;   'known/1_1_$special_fail/0___0__0__0__24'(I)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_nonvar/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__1__0__25'(H)
    ;   'known/1_1_$special_fail/0___0__1__0__25'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_var/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__2__0__26'(H)
    ;   'known/1_1_$special_fail/0___0__2__0__26'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_atom/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__3__0__27'(H)
    ;   'known/1_1_$special_fail/0___0__3__0__27'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_atomic/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__4__0__28'(H)
    ;   'known/1_1_$special_fail/0___0__4__0__28'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_compound/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__5__0__29'(H)
    ;   'known/1_1_$special_fail/0___0__5__0__29'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_ground/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__6__0__30'(H)
    ;   'known/1_1_$special_fail/0___0__6__0__30'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_integer/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__7__0__31'(H)
    ;   'known/1_1_$special_fail/0___0__7__0__31'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_float/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__8__0__32'(H)
    ;   'known/1_1_$special_fail/0___0__8__0__32'(H)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(5, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(5, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(5, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_number/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__9__0__33'(H)
    ;   'known/1_1_$special_fail/0___0__9__0__33'(H)
    ).
'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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__10__0__34'(I)
    ;   'known/1_1_$special_fail/0___0__10__0__34'(I)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$special_\\+/1___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__11__0__35'(H)
    ;   'known/1_1_$special_fail/0___0__11__0__35'(H)
    ).
'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|J]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C, D),
          setarg(2, A, removed),
          term_variables(term(B, C, D), I),
          ( 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'(I, A)
        ),
        'known/1_1_$special_fail/0___0__12__0__36'(J)
    ;   'known/1_1_$special_fail/0___0__12__0__36'(J)
    ).
'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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__13__0__37'(I)
    ;   'known/1_1_$special_fail/0___0__13__0__37'(I)
    ).
'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|I]) :-
    (   A=suspension(_, active, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__14__0__38'(I)
    ;   'known/1_1_$special_fail/0___0__14__0__38'(I)
    ).
'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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__15__0__40'(I)
    ;   'known/1_1_$special_fail/0___0__15__0__40'(I)
    ).
'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|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__16__0__41'(I)
    ;   'known/1_1_$special_fail/0___0__16__0__41'(I)
    ).
'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_=</2___2',
              A),
    !,
    'known/1_1_$special_fail/0___0__17__0__46'(A).
'known/1_1_$special_fail/0___0__17__0__46'([]) :-
    'known/1_1_$special_fail/0___0__18'.
'known/1_1_$special_fail/0___0__17__0__46'([A|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__17__0__46'(I)
    ;   'known/1_1_$special_fail/0___0__17__0__46'(I)
    ).
'known/1_1_$special_fail/0___0__17' :-
    'known/1_1_$special_fail/0___0__18'.
'known/1_1_$special_fail/0___0__18' :-
    nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',
              A),
    !,
    'known/1_1_$special_fail/0___0__18__0__47'(A).
'known/1_1_$special_fail/0___0__18__0__47'([]) :-
    'known/1_1_$special_fail/0___0__19'.
'known/1_1_$special_fail/0___0__18__0__47'([A|I]) :-
    (   A=suspension(_, active, _, _, _, _, _)
    ->  ( A=suspension(_, _, _, _, _, B, C),
          setarg(2, A, removed),
          term_variables(term(B, C), H),
          ( 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'(H, A)
        ),
        'known/1_1_$special_fail/0___0__18__0__47'(I)
    ;   'known/1_1_$special_fail/0___0__18__0__47'(I)
    ).
'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|H]) :-
    (   A=suspension(_, active, _, _, _)
    ->  ( A=suspension(_, _, _, _, B),
          setarg(2, A, removed),
          term_variables(B, G),
          ( arg(4, A, C),
            (   var(C)
            ->  nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                          D),
                D=[_|E],
                b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',
                         E),
                (   E=[F|_]
                ->  setarg(4, F, _)
                ;   true
                )
            ;   C=[_, _|E],
                setarg(2, C, E),
                (   E=[F|_]
                ->  setarg(4, F, C)
                ;   true
                )
            )
          ),
          'detach_known/1_1_$default___1'(G, A)
        ),
        'known/1_1_$special_fail/0___0__19__0__50'(H)
    ;   'known/1_1_$special_fail/0___0__19__0__50'(H)
    ).
'known/1_1_$special_fail/0___0__19' :-
    'known/1_1_$special_fail/0___0__20'.
'known/1_1_$special_fail/0___0__20' :-
    B=suspension(A, active, _),
    'chr gen_id'(A),
    nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',
              C),
    D=[B|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.
