Database for incremental analysis

Predicates for mantaining the structures needed for incremental analysis

Documentation on exports

PREDICATEinit_clids/0
This predicate annotates which is the last clause identifier that was assinged by module program_key. This is needed to give new ids to the clauses that are added to the analysis.

Usage:change_id_clause(Cl,NCl)

Changes the Ids through Cl so that there is no conflict with other clauses already present in the analysis.

    Usage:insert_after_clid(Id,Cl)

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

    Stores locally the current source database of ciaopp.

    Restores from a local copy the source database of ciaopp.

    Usage:remove_clauses_pred(Pred,Cls)

    Removes from the database all clauses for predicate Pred of the form F/A and returns them in Cls.

      Usage:add_all_clauses(Cls)

      Asserts the list of clauses Cls to the temporal database.

      • The following properties should hold at call time:
        (list/1)Cls is a list.

      Usage:add_new_preds(+Preds)

      This predicates adds predicates which were not defined before.

      This predicate is needed for the initialization of the counters for Ids.

        Usage:get_current_clauses(Cls)

        Returns all clauses currently present in th clauses database.

        • The following properties should hold at call time:
          (var/1)Cls is a free variable.
        • The following properties should hold upon exit:
          (list/1)Cls is a list.

        Remove databases for incremental analysis.

        Usage:add_changed_registry(SgKey,ImMod,Module,Reg)

        This predicate annotates changes that occurs on the registry of predicate SgKey exported in Module.

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

        Usage:get_changed_registry(Key,CMod,Mod,Reg)

        The data of answer of predicate Key exported by module Mod has changed to Reg.

        • Call and exit should be compatible with:
          (atm/1)Key is an atom.
          (atm/1)CMod is an atom.
          (atm/1)Mod is an atom.
          (term/1)Reg is any term.

        Cleans structures needed for incremental modular analysis.

        Usage:update_inc_clid(NClid)

        Updates the value of the last id assigned by the program_keys module.

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

        Flag that determines if the set of modules to be loaded with incremental_module/2 is disjoint with the set of the previously loaded The predicate is of type data.

        Usage:add_new_files(Fs,AddedFs)

        Given a list of files Fs adds to the database only those that were not already present (AddedFs).

        • The following properties should hold at call time:
          (list/2)Fs is a list of atms.
          (list/2)AddedFs is a list of atms.

        Usage:set_loaded_mods(M)

        Sets the context (as a list of loaded modules) of the incremental analysis.

        • The following properties should hold at call time:
          (list/1)M is a list.

        PREDICATEloaded_mods/1

        Usage:loaded_mods(Ms)

        Returns the list of currently loaded modules.

        • The following properties should hold upon exit:
          (list/1)Ms is a list.

        Documentation on imports

        This module has the following direct dependencies: