Preprocessing Flags

Documentation on exports

Usage:push_pp_flag(Flag,Value)

Sets Value for preprocessor flag Flag, storing the current value to restore it with pop_pp_flag/1.

  • The following properties should hold at call time:
    (pp_flag/1)Flag is a valid preprocessor flag.
    (valid_flag_value/2)Value is a valid value for preprocessor flag Flag.

PREDICATEpop_pp_flag/1

Usage:pop_pp_flag(Flag)

Restores the value of the preprocessor flag Flag previous to the last non-canceled push_pp_flag/2 on it.

  • The following properties should hold at call time:
    (pp_flag/1)Flag is a valid preprocessor flag.

Usage:current_pp_flag(Name,Value)

Preprocess flag Name has the value Value.

  • The following properties should hold at call time:
    (pp_flag/1)Name is a valid preprocessor flag.
  • The following properties should hold upon exit:
    (valid_flag_value/2)Value is a valid value for preprocessor flag Name.

PREDICATEset_pp_flag/2

Usage:set_pp_flag(Name,Value)

Sets Value for preprocessor flag Name.

  • The following properties should hold at call time:
    (pp_flag/1)Name is a valid preprocessor flag.
    (valid_flag_value/2)Value is a valid value for preprocessor flag Name.

PREDICATEpp_flag/2

Usage:pp_flag(Name,Help)

Name is a valid preprocess flag.Help is a description of what Name does.

    REGTYPEpp_flag/1
    The list of valid flags and their values is as follows:
    (This list is outdated -- see source code for a complete description)

    • for the output:
      • analysis_info (off, on) Whether to output the results of analysis.
      • point_info (off,on) Whether to output analysis information for program points within clauses.
      • collapse_ai_vers (off, on) to output all the versions of call/success patterns inferred by analysis or just one version (summing-up all of them).
      • type_output (defined, all) to output the types inferred for predicates in terms only of types defined by the user or including types inferred anew.
      • simplify_checks (on, off) to output simplified check assertions after verification or not.
    • for analysis:
      • fixpoint (plai, dd, di, check_di, check_di2, check_di3, check_di4) The kind of fixpoint computation used.
      • multi_success (off, on) Whether to allow success multivariance.
      • widen (off, on) Whether to perform widening.
      • intermod (off, on, auto) The policy for inter-modular analysis.
      • success_policy (best, first, all, top, botfirst, botbest, botall, bottom) The policy for obtaining success information for imported predicates during inter-modular analysis.
      • entry_policy (all, top_level, force, force_assrt) The policy for obtaining entry call patterns for exported predicates during inter-modular analysis.
      • process_libraries (on, off, no_engine) Whether to perform the analysis of Ciao system libraries when a modular user program is analyzed.
      • initial_guess (botfirst, botbest, botall, bottom) The policy for obtaining initial guess when computing the analysis of a predicate from the current module.
      • use_check_assrt (off, on) Whether to use check assertions for imported predicates as if they were trust assertions.
      • depth (a non-negative integer) The maximum depth of abstractions in analyses based on term depth.
      • type_eval (on, off) Whether to attempt concrete evaluation of types being inferred.
      • type_precision (defined, all) to use during type analysis only types defined by the user or also types inferred anew.
      • entry_points_auto (none, calls, all) What kind of assertions to use as entry points: entry/1 will always be used, calls/1 and calls/2 will be used if the flag is not set to none; and success/1, success/2, comp/1 and comp/2 will be used if the flag is set to all.
      • entry_calls_scope (exported, all) What non-entry assertions to use as entry points. If the flag takes the value exported, only assertions from exported predicates will be used; if it takes the value all, exported and non-exported assertions will be used.
    • for partial evaluation:
      • global_control (off, id, inst, hom_emb) The abstraction function to use to control the creation of new patterns to analyze as a result of unfolding.
      • comp_rule (leftmost, safe_jb, bind_ins_jb, no_sideff_jb, jump_builtin, eval_builtin, local_emb) The computation rule for the selection of atoms in a goal.
      • local_control (off, orig, inst, det, det_la, depth, first_sol, first_sol_d, all_sol, hom_emb, hom_emb_anc, hom_emb_as, df_hom_emb_as, df_tree_hom_emb, df_hom_emb) The unfolding rule to use during partial evaluation.
      • unf_depth (a non-negative integer) The depth limit for unfolding.
      • rem_use_cls (off, pre, post, both) Whether to remove useless clauses.
      • abs_spec_defs (off, rem, exec, all) Whether to exploit abstract substitutions while obtaining specialized definitions on unfolding.
      • filter_nums (off, on) Whether to filter away numbers in partial evaluation.
      • exec_unif (off, on) Whether to execute unifications during specialization time or not.
      • pres_inf_fail (off, on) Whether infinite failure should be preserved in the specialized program.
      • part_concrete (off, mono, multi) The kind of partial concretization to be performed.
    • for parallelization and granularity control:
      • granularity_threshold (a non-negative integer) The threshold on computational cost at which parallel execution pays off.

    Usage:pp_flag(Flag)

    Flag is a valid preprocessor flag.

      Usage:flag_value(V)

      V is a value for a flag.

        Usage:valid_flag_value(Name,Value)

        Value is a valid value for preprocessor flag Name.

        • If the following properties should hold at call time:
          (pp_flag/1)Name is a valid preprocessor flag.
          (flag_value/1)Value is a value for a flag.

        Usage:valid_flag_values(Name,Value_Checker)

        Value_Checker is a goal that checks that a value given as first argument of this term is a valid value for Name.

        • Call and exit should be compatible with:
          (pp_flag/1)Name is a valid preprocessor flag.
          (cgoal/1)Value_Checker is a term which represents a goal, i.e., an atom or a structure.

        PREDICATEdump_flags/1

        Usage:dump_flags(Name)

        Name represent the list of flags to be dumped. To associate a name (key) with a list, use dump_flags_list.

        • The following properties should hold at call time:
          (atm/1)Name is an atom.

        PREDICATEsave_config/1

        Usage:save_config(Name)

        Save the current flags configuration under the Name key.

        • The following properties should hold at call time:
          (atm/1)Name is an atom.

        Usage:restore_config(Name)

        Restores the set of flags saved previously under the name of Name.

        • The following properties should hold at call time:
          (atm/1)Name is an atom.

        Usage:remove_config(Name)

        Remove the configuration stored with the Name key.

        • The following properties should hold at call time:
          (atm/1)Name is an atom.

        PREDICATEshow_config/1

        Usage:show_config(C)

        Show specific configuration values pointed by C key.

        • The following properties should hold at call time:
          (atm/1)C is an atom.

        Usage:

        Show all stored configs.

          PREDICATEsublist2/2
          No further documentation available for this predicate.

          No further documentation available for this predicate.

          Documentation on multifiles

          No further documentation available for this predicate. The predicate is multifile.
          The predicate is of type data.

          Usage 1:persistent_dir(Key,Dir)

          • The following properties hold upon exit:
            (atm/1)Key is an atom.
            (atm/1)Dir is an atom.

          Usage 2:persistent_dir(Key,Dir)

          • The following properties should hold at call time:
            (atm/1)Key is an atom.
            (var/1)Dir is a free variable.

          Usage 3:persistent_dir(Key,Dir)

          • The following properties should hold at call time:
            (atm/1)Key is an atom.
            (atm/1)Dir is an atom.
          The predicate is multifile.
          The predicate is of type data.

          No further documentation available for this predicate. The predicate is multifile.
          The predicate is of type data.

          No further documentation available for this predicate. The predicate is multifile.