nnf-filter Readme Majority of code by Alexander Jaffe, with quite a bit from Eyal Amir and a handful of procedures adapted from "Structure and Interpretation of Comptuer Programs" by Abelson & Sussman. The main function the nnf-filter is set up to run through is main-single. THis is called with no arguments, and filters information contained in external files, according to guidelines in other external files. First, a brief description of the code. It performs filtering of belief states represented literally in list form. For example '(and made-of-wood (or in-desk out-of-desk) (not (or spherical square))) Each element of a list starting with "and" or "or" is meant to be in the conjunction or disjunction. The second element of a list beginning with "not" (there should only be one other element) is meant to be the expression that's negated. Fluents can be words (like 'ostritch ) or lists (like '(capital-of russia) ) as long as the words "and", "or", and "not" aren't used in the fluent names. The values of true and false are represented as 'true-value and 'false-value. Nnf-filter-2 is the primary procedure. It is derived from an algorithm for filtering a belief state in non-negation form over a series of actions and observations, which was created by Eyal Amir. It takes in an action-observation pair (where the action is an arbitrary name and the observation is a logical expression); a current belief state logical expression; a list of preconditions (logical expressions) for the action to "succeed"; a list of effects that can be known to occur if the action does occur; and a number representing how far along we are in a sequence of filters guided by an external procedure, counting down to 0 from the total number of actions that are going to be filtered. NNF-filter-2 then returns a new belief state taking into account the new action and observation, as well as what has been filtered before. To actually use the filter, the procedure to use is main-single. This calls nnf-filter-ret with data from external files. Nnf-filter-ret loops and repeatedly calls nnf-filter-2, creating a belief state for the evolution of an initial belief state after a sequence of actions.