7.11 Tabling predicate reference
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Tabled execution (SLG resolution)
        • Tabling predicate reference
          • table/1
          • tnot/1
          • not_exists/1
          • tabled_call/1
          • current_table/2
          • untable/1
          • abolish_all_tables/0
          • abolish_private_tables/0
          • abolish_shared_tables/0
          • abolish_table_subgoals/1
          • abolish_module_tables/1
          • abolish_nonincremental_tables/0
          • abolish_nonincremental_tables/1
    • Packages
Availability:built-in
Sourcenot_exists(:Goal)
Handles tabled negation for non-ground (floundering) Goal as well as non tabled goals. If Goal is ground and tabled not_exists/1 calls tnot/1. Otherwise it used tabled_call(Goal) to create a table and subsequently uses tnot/1 on the created table.

Logically, not_exists(p(X)) is defined as tnot(∃X(p(X)))

Note that each Goal variant populates a table for tabled_call/1. Applications may need to abolish such tables to limit memory usage or guarantee consistency‘after the world changed'.