%% Profiles `swi*`: SWI-Prolog engine predicates beyond `iso` and `prologue`.
%%
%% GENERATED by tools/gen_swi_profiles.pl against SWI-Prolog 9.2.9.
%% Source: predicates the engine defines that library(sandbox) declares safe
%% and that iso/prologue do not cover, minus pinned classes and the tool's
%% exclusion table. This is a starting point for attestation, not an
%% attestation. The review record is profiles/REVIEWS.md.
%%
%% Dropped (sandbox-safe, kept out, with reason):
%%   eval_license/0                     output
%%   hash/1                             deprecated_message
%%   index/1                            deprecated_message
%%   write_ln/1                         pinned(streams)
%%   current_type/3                     reflection
%%   reduced/1                          trie_state_on_swi_10
%%   reduced/3                          trie_state_on_swi_10
%%   (:<)/2                             dicts_deferred
%%   '<meta-call>'/1                    internal
%%   (>:<)/2                            dicts_deferred
%%   abort/0                            process
%%   answer_count_restraint/0           wfs_opt_in
%%   at_halt/1                          process
%%   atom_to_term/3                     pinned(parsing)
%%   attvar/1                           attributes_deferred
%%   b_getval/2                         pinned(destructive_state)
%%   b_set_dict/3                       destructive_state
%%   blob/2                             reflection
%%   cancel_halt/1                      process
%%   clause/2                           pinned(reflection)
%%   compiling/0                        reflection
%%   copy_term/4                        attributes_deferred
%%   current_arithmetic_function/1      reflection
%%   current_op/3                       pinned(reflection)
%%   current_predicate/1                pinned(reflection)
%%   current_prolog_flag/2              pinned(flags_ops)
%%   date_time_stamp/2                  timing
%%   default_module/2                   reflection
%%   del_attr/2                         destructive_state
%%   del_attrs/1                        destructive_state
%%   del_dict/4                         dicts_deferred
%%   dict_create/3                      dicts_deferred
%%   dict_pairs/3                       dicts_deferred
%%   file_base_name/2                   filesystem
%%   file_directory_name/2              filesystem
%%   file_name_extension/3              filesystem
%%   format_time/3                      timing
%%   format_time/4                      timing
%%   gc_file_search_cache/1             filesystem
%%   get_attr/3                         attributes_deferred
%%   get_attrs/2                        attributes_deferred
%%   get_dict/3                         dicts_deferred
%%   get_dict/5                         dicts_deferred
%%   get_time/1                         timing
%%   import_module/2                    reflection
%%   is_dict/1                          dicts_deferred
%%   is_dict/2                          dicts_deferred
%%   is_stream/1                        streams
%%   nb_current/2                       pinned(destructive_state)
%%   nb_getval/2                        pinned(destructive_state)
%%   nb_link_dict/3                     destructive_state
%%   nb_linkarg/3                       destructive_state
%%   nb_set_dict/3                      destructive_state
%%   nb_setarg/3                        pinned(destructive_state)
%%   normalize_space/2                  pinned(streams)
%%   predicate_option_mode/2            reflection
%%   predicate_option_type/2            reflection
%%   put_dict/3                         dicts_deferred
%%   put_dict/4                         dicts_deferred
%%   radial_restraint/0                 wfs_opt_in
%%   select_dict/3                      dicts_deferred
%%   setarg/3                           pinned(destructive_state)
%%   sleep/1                            timing
%%   stamp_date_time/3                  timing
%%   statistics/2                       reflection
%%   strip_module/3                     reflection
%%   term_attvars/2                     attributes_deferred
%%   term_expansion/4                   loading
%%   term_string/2                      pinned(parsing)
%%   term_to_atom/2                     pinned(parsing)
%%   thread_self/1                      threads
%%   trie_gen_compiled/2                internal
%%   trie_gen_compiled/3                internal
%%   undefined/0                        wfs_opt_in
%%   writeln/1                          pinned(streams)
%%   term_factorized/3                  trie_state_on_swi_10

:- multifile allow/2, meta_spec/2.

%% swi (from system)
allow(swi, (*->)/2).
allow(swi, (=@=)/2).
allow(swi, ?= / 2).
allow(swi, acyclic_term/1).
allow(swi, atom_number/2).
allow(swi, atom_string/2).
allow(swi, atomic_concat/3).
allow(swi, atomics_to_string/2).
allow(swi, atomics_to_string/3).
allow(swi, bounded_number/3).
allow(swi, call_cleanup/2).
allow(swi, catch_with_backtrace/3).
allow(swi, char_type/2).
allow(swi, code_type/2).
allow(swi, compound_name_arguments/3).
allow(swi, compound_name_arity/3).
allow(swi, copy_term_nat/2).
allow(swi, cyclic_term/1).
allow(swi, downcase_atom/2).
allow(swi, duplicate_term/2).
allow(swi, float_class/2).
allow(swi, float_parts/4).
allow(swi, functor/4).
allow(swi, name/2).
allow(swi, nonground/2).
allow(swi, nth_integer_root_and_remainder/4).
allow(swi, number_string/2).
allow(swi, numbervars/4).
allow(swi, rational/1).
allow(swi, rational/3).
allow(swi, repeat/0).
allow(swi, setup_call_catcher_cleanup/4).
allow(swi, setup_call_cleanup/3).
allow(swi, size_abstract_term/3).
allow(swi, split_string/4).
allow(swi, string/1).
allow(swi, string_chars/2).
allow(swi, string_code/3).
allow(swi, string_codes/2).
allow(swi, string_concat/3).
allow(swi, string_length/2).
allow(swi, string_lower/2).
allow(swi, string_upper/2).
allow(swi, sub_atom_icasechk/3).
allow(swi, sub_string/5).
allow(swi, term_hash/2).
allow(swi, term_hash/4).
allow(swi, term_singletons/2).
allow(swi, term_variables/3).
allow(swi, unifiable/3).
allow(swi, upcase_atom/2).
allow(swi, variant_hash/2).
allow(swi, variant_sha1/2).
meta_spec(swi, 0*->0).
meta_spec(swi, call_cleanup(0,0)).
meta_spec(swi, catch_with_backtrace(0,?,0)).
meta_spec(swi, setup_call_catcher_cleanup(0,0,?,0)).
meta_spec(swi, setup_call_cleanup(0,0,0)).

%% swi (from dif)
allow(swi, dif/2).

%% swi_lists (from lists)
allow(swi_lists, append/2).
allow(swi_lists, clumped/2).
allow(swi_lists, flatten/2).
allow(swi_lists, is_set/1).
allow(swi_lists, max_member/2).
allow(swi_lists, max_member/3).
allow(swi_lists, min_member/2).
allow(swi_lists, min_member/3).
allow(swi_lists, nextto/3).
allow(swi_lists, nth0/4).
allow(swi_lists, nth1/4).
allow(swi_lists, permutation/2).
allow(swi_lists, prefix/2).
allow(swi_lists, proper_length/2).
allow(swi_lists, same_length/2).
allow(swi_lists, select/4).
allow(swi_lists, selectchk/4).
allow(swi_lists, subseq/3).
allow(swi_lists, subset/2).
meta_spec(swi_lists, max_member(2,?,?)).
meta_spec(swi_lists, min_member(2,?,?)).

%% swi_apply (from apply)
allow(swi_apply, convlist/3).
allow(swi_apply, partition/5).
meta_spec(swi_apply, convlist(2,?,?)).
meta_spec(swi_apply, partition(2,?,?,?,?)).

%% swi_aggregate (from aggregate)
allow(swi_aggregate, aggregate/3).
allow(swi_aggregate, aggregate/4).
allow(swi_aggregate, aggregate_all/3).
allow(swi_aggregate, aggregate_all/4).
allow(swi_aggregate, foreach/2).
allow(swi_aggregate, free_variables/4).
meta_spec(swi_aggregate, aggregate(?,^,?)).
meta_spec(swi_aggregate, aggregate(?,?,^,?)).
meta_spec(swi_aggregate, aggregate_all(?,0,?)).
meta_spec(swi_aggregate, aggregate_all(?,?,0,?)).
meta_spec(swi_aggregate, foreach(0,0)).

%% swi_solution_sequences (from solution_sequences)
allow(swi_solution_sequences, call_nth/2).
allow(swi_solution_sequences, distinct/1).
allow(swi_solution_sequences, distinct/2).
allow(swi_solution_sequences, group_by/4).
allow(swi_solution_sequences, limit/2).
allow(swi_solution_sequences, offset/2).
allow(swi_solution_sequences, order_by/2).
meta_spec(swi_solution_sequences, call_nth(0,?)).
meta_spec(swi_solution_sequences, distinct(0)).
meta_spec(swi_solution_sequences, distinct(?,0)).
meta_spec(swi_solution_sequences, group_by(?,?,0,?)).
meta_spec(swi_solution_sequences, limit(?,0)).
meta_spec(swi_solution_sequences, offset(?,0)).
meta_spec(swi_solution_sequences, order_by(?,0)).

%% swi_strings (from strings)
allow(swi_strings, dedent_lines/3).
allow(swi_strings, indent_lines/3).
allow(swi_strings, indent_lines/4).
allow(swi_strings, string_lines/2).
meta_spec(swi_strings, indent_lines(1,?,?,?)).

%% swi_pairs (from pairs)
allow(swi_pairs, group_pairs_by_key/2).
allow(swi_pairs, map_list_to_pairs/3).
allow(swi_pairs, pairs_keys/2).
allow(swi_pairs, pairs_keys_values/3).
allow(swi_pairs, pairs_values/2).
allow(swi_pairs, transpose_pairs/2).
meta_spec(swi_pairs, map_list_to_pairs(2,?,?)).

%% swi_ordsets (from ordsets)
allow(swi_ordsets, is_ordset/1).
allow(swi_ordsets, list_to_ord_set/2).
allow(swi_ordsets, ord_add_element/3).
allow(swi_ordsets, ord_del_element/3).
allow(swi_ordsets, ord_disjoint/2).
allow(swi_ordsets, ord_empty/1).
allow(swi_ordsets, ord_intersect/2).
allow(swi_ordsets, ord_intersect/3).
allow(swi_ordsets, ord_intersection/2).
allow(swi_ordsets, ord_intersection/3).
allow(swi_ordsets, ord_intersection/4).
allow(swi_ordsets, ord_memberchk/2).
allow(swi_ordsets, ord_selectchk/3).
allow(swi_ordsets, ord_seteq/2).
allow(swi_ordsets, ord_subset/2).
allow(swi_ordsets, ord_subtract/3).
allow(swi_ordsets, ord_symdiff/3).
allow(swi_ordsets, ord_union/2).
allow(swi_ordsets, ord_union/3).
allow(swi_ordsets, ord_union/4).

%% swi_assoc (from assoc)
allow(swi_assoc, assoc_to_keys/2).
allow(swi_assoc, assoc_to_list/2).
allow(swi_assoc, assoc_to_values/2).
allow(swi_assoc, del_assoc/4).
allow(swi_assoc, del_max_assoc/4).
allow(swi_assoc, del_min_assoc/4).
allow(swi_assoc, empty_assoc/1).
allow(swi_assoc, gen_assoc/3).
allow(swi_assoc, get_assoc/3).
allow(swi_assoc, get_assoc/5).
allow(swi_assoc, is_assoc/1).
allow(swi_assoc, list_to_assoc/2).
allow(swi_assoc, map_assoc/2).
allow(swi_assoc, map_assoc/3).
allow(swi_assoc, max_assoc/3).
allow(swi_assoc, min_assoc/3).
allow(swi_assoc, ord_list_to_assoc/2).
allow(swi_assoc, put_assoc/4).
meta_spec(swi_assoc, map_assoc(1,?)).
meta_spec(swi_assoc, map_assoc(2,?,?)).

%% swi_terms (from occurs)
allow(swi_terms, contains_term/2).
allow(swi_terms, contains_var/2).
allow(swi_terms, free_of_term/2).
allow(swi_terms, free_of_var/2).
allow(swi_terms, occurrences_of_term/3).
allow(swi_terms, occurrences_of_var/3).
allow(swi_terms, sub_term/2).
allow(swi_terms, sub_term_shared_variables/3).
allow(swi_terms, sub_var/2).

%% swi_terms (from terms)
allow(swi_terms, mapargs/3).
allow(swi_terms, mapsubterms/3).
allow(swi_terms, mapsubterms_var/3).
allow(swi_terms, same_functor/2).
allow(swi_terms, same_functor/3).
allow(swi_terms, same_functor/4).
allow(swi_terms, subsumes/2).
allow(swi_terms, subsumes_chk/2).
allow(swi_terms, term_size/2).
allow(swi_terms, term_subsumer/3).
allow(swi_terms, variant/2).
meta_spec(swi_terms, mapargs(2,?,?)).
meta_spec(swi_terms, mapsubterms(2,?,?)).
meta_spec(swi_terms, mapsubterms_var(2,?,?)).

%% swi_error (from error)
allow(swi_error, domain_error/2).
allow(swi_error, existence_error/2).
allow(swi_error, existence_error/3).
allow(swi_error, instantiation_error/1).
allow(swi_error, is_of_type/2).
allow(swi_error, must_be/2).
allow(swi_error, permission_error/3).
allow(swi_error, representation_error/1).
allow(swi_error, resource_error/1).
allow(swi_error, syntax_error/1).
allow(swi_error, type_error/2).
allow(swi_error, uninstantiation_error/1).

%% swi_random (from random)
allow(swi_random, maybe/0).
allow(swi_random, maybe/1).
allow(swi_random, maybe/2).
allow(swi_random, random/1).
allow(swi_random, random/3).
allow(swi_random, random_between/3).
allow(swi_random, random_member/2).
allow(swi_random, random_numlist/4).
allow(swi_random, random_perm2/4).
allow(swi_random, random_permutation/2).
allow(swi_random, random_select/3).
allow(swi_random, random_subseq/3).
allow(swi_random, randseq/3).
allow(swi_random, randset/3).

%% swi_backcomp (from backward_compatibility)
allow(swi_backcomp, 'C'/3).
allow(swi_backcomp, call_cleanup/3).
allow(swi_backcomp, checklist/2).
allow(swi_backcomp, concat/3).
allow(swi_backcomp, concat_atom/2).
allow(swi_backcomp, concat_atom/3).
allow(swi_backcomp, convert_time/2).
allow(swi_backcomp, convert_time/8).
allow(swi_backcomp, feature/2).
allow(swi_backcomp, free_variables/2).
allow(swi_backcomp, hash_term/2).
allow(swi_backcomp, merge/3).
allow(swi_backcomp, merge_set/3).
allow(swi_backcomp, proper_list/1).
allow(swi_backcomp, setup_and_call_cleanup/3).
allow(swi_backcomp, setup_and_call_cleanup/4).
allow(swi_backcomp, string_to_atom/2).
allow(swi_backcomp, string_to_list/2).
allow(swi_backcomp, sublist/3).
allow(swi_backcomp, substring/4).
allow(swi_backcomp, sumlist/2).
meta_spec(swi_backcomp, call_cleanup(0,?,0)).
meta_spec(swi_backcomp, checklist(1,?)).
meta_spec(swi_backcomp, setup_and_call_cleanup(0,0,0)).
meta_spec(swi_backcomp, setup_and_call_cleanup(0,0,?,0)).
meta_spec(swi_backcomp, sublist(1,?,?)).
