All Classes and Interfaces

Class
Description
An action is an event that a planner can choose to take in service of a goal.
An event node that represents an action.
Creates a copy of a compiled problem where the actions have been randomly shuffled to be in a different order.
An arithmetic expression is a numeric expression whose value if the results of applying an arithmetic operation to two numeric values.
An arithmetic operator is a singleton object that specifies how to combine two numeric input values into a numeric output value.
An arithmetic expansion is a numeric expression which represents iteratively applying an arithmetic operator to a series of numeric expressions defined by every possible value that can be substituted for a variable.
An arithmetic expansion operator is a singleton object that specifies how an arithmetic operator should be applied to a series of numeric expressions.
A cost set node representing an arithmetic expression, which has an arithmetic operator and two numeric expressions on the left and right sides.
An iterable wrapper for an array of objects.
An iterator which iterates through each element in an array.
An implementation of a range that uses an array to store its values and their costs.
An assignment specifies that the fluent on its left side should now have the value of the logical expression on its right side.
An atom is a Proposition which cannot be further simplified (meaning Atom.simplify() always returns this atom itself).
A wrapper around any state which represents an character's beliefs in that state.
An object for managing a large table of Java long values, similar to an array, but with larger capacity and able to expand dynamically.
A branching event tree whose expression is of type boolean and will have three possible branches: one where the expression is false, one where the expression is true, and the irrelevant branch.
For each possible value that the tree's expression can have, a branching event tree provides a branch containing the events whose preconditions require the expression to have that value, as well as an irrelevant branch which contains the events that do not use the expression in their preconditions.
A builder converts a parse tree into an object.
A character is a special entity that represents an intelligent being with its own (possibly wrong) beliefs about the world state and its own utility function that it will attempt to maximize.
A clause is a conjunction of atoms.
A node which represents a conjunctive clause, a conjunction of atomic preconditions that must all have a finite cost before the clause can have a finite cost.
A collection of command line arguments passed to the library and utility methods for pasring them.
A comparison is a proposition which is true if and only if a specific relationship exists between a left expression and a right expression.
An numeric operator is an operator which compares expressions of type number.
An operator is a singleton object that represents one of the possible binary relationship between the left and right expressions of a comparison.
A compiled action is a ground action which defines a unique ID number that corresponds to the action's index in its compiled problem's set of events, whose precondition and observation function are in disjunctive normal form, and whose effect is a clause.
A compiled event is a ground event which defines a unique ID number that corresponds to the event's index in its compiled problem's set of events, whose precondition is in disjunctive normal form, and whose effect is a clause.
A compiled fluent is a fluent whose characters and signature are ground and which defines a unique ID number which corresponds to the fluent's index in its compiled problem's set of fluents.
A compiled mapping is a mapping whose get method only accepts ground characters and which always returns ground expressions.
A compiled problem is a problem which has been pre-processed so that its fluents are compiled fluents, so that its events are compiled events, and so that it defines a full a state state.
A compiled trigger is a ground trigger which defines a unique ID number that corresponds to the trigger's index in its compiled problem's set of events, whose precondition is in disjunctive normal form, and whose effect is a clause.
A conditional is a logical expression which can have one of several possible values depending on which of its Boolean conditions evaluates to true.
A conjunction is a proposition made up of zero to many arguments (or conjuncts) which are expressions of type boolean and must all evaluate to true for the conjunction to be true.
Creates a copy of a compiled problem where all of its actions have preconditions that require all of the action's consenting characters to believe the action is possible.
A builder which always returns the same object regardless of what input it receives.
A cost set node representing a single value, where that value always costs 0 and all other values always cost positive infinity.
A heuristic graph node that represents a Boolean proposition and the cost of that proposition being true.
A cost set is a collection of values where each is associated with a numeric cost.
An individual value/cost pair in a cost set.
An interface for anything with an integer Countable.size().
A parser which defines rules and builders for parsing many kinds of common objects, including problems and logical formulas.
A printer which defines object printers for many kinds of common objects, including problems, logical formulas, and plans.
A builder which returns a defined object.
A set of objects which have been defined and which may be referenced while building an object from a parse tree.
A disjunction is a proposition made up of zero to many arguments (or disjuncts) which are expressions of type boolean such that at least one of them must evaluate to true for the disjunction to be true.
A node which represents a logical expression in disjunctive normal form, a disjunction of conjunctive clauses where at least one clause must have a finite cost before the disjunction can have a finite cost.
Dummy actions are special actions which are sometimes created to update a state when a traditional action occurs.
An directed edge in a state graph extends from a parent node to a child node and has a label explaining the meaning of the transition.
An iterator for a collection of edges.
An effect is an atomic assignment that must have a fluent on the left side, a valued expression on the right side, and a condition in in disjunctive normal form under which the assignment would occur.
A node which represents an atomic effect of an event.
An entity represents a discrete object in a problem.
A branching event tree whose expression is a fluent of type entity and will have several possible branches: one for each possible value the fluent could have, one where the fluent's value is unknown, and the irrelevant branch.
An epistemic expression is a logical expression about what an character believes the value of a logical expression to be.
An epistemic edge is an edge whose parent is some world state and whose child represents the beliefs of the edge's character.
An event changes the state of the world; there are two main types of events, actions and triggers.
A node which represents an event, which has a precondition that must have a finite cost before it can occur and effects which may cause other nodes to take on finite values.
An immutable set of ground events which does not initially build an event tree, but allows one to be built later and the result cached.
An event tree is a stateless data structure used to efficiently determine which events have preconditions satisfied in a given state.
A factory object used to build an event tree from a set of events.
A wrapper around a status object used by an event tree builder to keep track of how many branches of an event tree have been built.
All exceptions are generated from this utility class so that exception messages can be kept in one place for easy comparison and modification.
Explanation-first search is a type of progression search that requires every action in a plan to be explained before it will consider adding additional actions to the plan.
A logical expression is a logical formula which can be evaluated in a state to return a value.
False is one of two singleton values of type boolean that represents the opposite of true.
A finite state is a state which can return the beliefs of any character as a state object, such that the graph of all states is finite.
A fluent is a property of a state which can be assigned a value and whose value may change as a result of an event.
Adds additional compiled fluents and compiled triggers to a compiled problem to make it easier to check when trigger apply in a state.
A cost set node representing a fluent, a feature of a state that can have one of several values.
A format exception is thrown when an object defined in a planning problem is constructed in an illegal way.
An cost set node whose logical formula appears as a smaller part of some larger formula and which needs to notify the node representing that larger formula when its gains new values.
Goal-first search is a type of progression search that requires a plan to achieve its goal before attempting to explain its actions.
A cost function, meant to be used as a heuristic in a heuristic progression search, which uses a heuristic graph to estimate how many more actions would need to be taken in some state before a character's utility can be improved.
A max graph heuristic that calculates an admissible lower bound on the cost of raising the node's character's utility.
Replaces all templates in a problem, such as fluents and events, with Logical.isGround() instances, such as ground fluents and ground events.
An implementation of the substitution interface backed by a hash map.
A plan which is built by prepending actions on to the beginning.
A heuristic graph is a data structure that represents the relationships between propositions and events in a ground problem to enable various kinds of analysis.
A wrapper around a Java array that makes it read-only and provides some additional helpful methods.
A singly-linked list whose structure cannot be modified.
An ImmutableArray which contains no duplicates.
A span of numeric values (and their associated costs) which automatically expands to include the value positive infinity any time its upper bound increases and automatically expands to include the value negative infinity any time its lower bound decreases.
An initial state is a finite state which uses a logical expression to explicitly set the values of some fluents and then assumes default values for all other fluents.
A keyword is a terminal symbol which matches exactly one token that must have a specified string value.
A list for holding elements of a HeuristicGraph heuristic graph.
A list is a parsing pattern where a given pattern is repeated some number of times with a separator between occurrences.
An iterator for iterating through an ImmutableList.
A logical formula is an atomic or complex logical proposition or the pieces which make up a logical proposition.
A lookahead pattern is one that can look arbitrarily far into a sequence of tokens to determine if it matches.
Configures a session according to command line arguments, runs a search, and prints the result to standard output.
A function which takes as input a character and returns a logical expression relevant to that character.
A mapping defined by an expression that contains a variable representing a character.
A mapping which returns true for a defined list of characters and false for all others.
A max graph is a heuristic graph where the cost of a conjunction is defined to be the maximum cost of and of its conjuncts.
A memory budget is used to track how much memory a data structure has used and prevent it from going over a defined limit.
A negation is proposition whose value is the opposite of its single boolean argument.
The parent class of all heuristic graph nodes.
A fluent node representing a non-numeric fluent, which is any fluent that has a discrete, finite set of possible values.
A non-terminal symbol is a complex element in a grammar used by a parser which can be further broken down into smaller parts made up of terminal symbols and other non-terminal symbols.
Represents numbers (using the Java double data type) as values.
A numeric expression is a logical expression of type number.
A fluent node representing a numeric fluent, which is any fluent that has a potentially infinite range of number values.
An object printer defines how an object should be converted to text.
A parameter is a value or a placeholder for a value, such as a variable.
A parse exception is thrown when some failure occurs while parsing an object.
A parser converts text into objects according to rules.
A parse tree is the result of successfully matching a sequence of tokens to a pattern.
A pattern determines whether a sequence of tokens matches the expected format to be parsed as an object.
A plan is a sequence of actions.
A planner is a configurable factory object for producing searches that solve planning problems by generating plans.
A precondition is an atomic comparison which must have one of two formats: a variable on the left and a parameter on the right, or a fluent on the left and a valued expression on the right.
A node which represents an atomic precondition, which is a comparison between a fluent on the left and a value on the right.
A special fluent object that may be created when reasoning about beliefs and compiled fluents.
A printer accepts any object as input and converts it to a text representation.
Represents all the definitions needed to define a full planning task.
A problem builder assists in defining a planning problem by enforcing requirements on the various parts needed to define a problem.
A problem compiler is a data structure for converting fluents, events, and logical expressions into compiled fluents, compiled events, and logical expressions using compiled elements.
A progress object provides a convenient way to track whether a search has finished, its result, how many nodes it has visited and generated, and how much time has elapsed.
A function used to measure the cost of a search node during a progression search.
A factory object that creates progression cost objects.
A progression node represents a node in a search space and its context in a progression search, such as the temporal and epistemic depth at which the node exists in that search.
A progression planner is a configurable factory object that creates progression search objects for compiled problems.
The types of progression search
A progression search is a forward search through the space of states that starts as a specified initial state and runs until its finds a solution plan which increases the author's utility to or above a specified goal value and for which every action in the plan makes sense based on the beliefs and intentions of the characters who take that action.
A progression space is a method of implementing the graph of states that is searched by a progression search.
A progression tree is a large table that stores the data for each node of a progression search through the space of states.
A progression state space modeled as a tree, meaning that the model makes no attempt to recognize when a duplicate state has been generated.
A proposition is a logical expression of type boolean.
A quantified expression is a proposition which states that a given Quantified.argument proposition holds for some number of possible values that can be substituted for a Quantified.variable.
A quantifier is a singleton object that specifies for how many possible values a quantifier's proposition must hold.
A range is a cost set that defines protected methods for setting the cost of a value and resetting the range to its original state.
The reachability heuristic is a cost function, meant to be used as the heuristic in a heuristic progression search, which checks only the roots of a search to determine if it is possible for them to achieve their goals.
A function which maps some logical expressions to simpler expressions based on a leveled off heuristic graph.
A graph cost function, meant to be used as the heuristic in a heuristic progression search, which solves a relaxed version of the planning problem and uses the cost of the solution to that relaxed problem as an approximation of the cost of solving the real problem.
The repeated node heuristic is a wrapper around a cost function that can improve the efficiency of a heuristic progression search by preventing it from revisiting the same node multiple times.
The repeated root heuristic is similar to the repeated node heuristic, except that it only prevents a heuristic progression search from reusing the same node as a root in the search.
A result object summarizes information about the outcome of a search (like the solution it found) and the effort spent reaching that outcome (like the number of nodes visited and the time spent searching).
A search represents the process of finding one or more plans that are solutions to a planning problem.
A search exception is a RuntimeException that will be caught if it is thrown while a search is running.
A parsing pattern that attempts to match a sequence of tokens to any pattern in an ordered list of patterns.
A sentinel is a parsing pattern composed of a sequence of patterns such that two non-keyword patterns never appear next to one another.
A session gathers several important elements together and provides a single way for them to interact with each other: a parser and printer to read and write, a problem being solved, a planner and its current search, etc.
Important settings and keywords.
A signature is a name followed by an ordered list of zero to many arguments.
An interface for anything which has a Signature.
A simplifiable logical formula is one which can possibly be converted into a logically equivalent but smaller, simpler, or more convenient form via the Simplifiable.simplify() method.
First applies any triggers that are satisfied in a problem's initial state and then removes compiled events which can never occur and propositions which are always true or always false from a compiled problem, possibly making it smaller and simpler.
A single is a terminal symbol that matches exactly one token.
A solution is a plan for an character to achieve a goal that also includes explanations for every action in the plan.
A solution iterator iterates through the actions in a solution.
An empty solution that specifies an character and goal and can be used as a starting point for building non-empty solutions by prepending actions.
A solution that specifies a first action, explanations for that action, and the rest of a solution.
An implementation of range that supports numeric values.
A state is any function which can map fluents to values.
A state graph is made up of nodes which are world states that are liked by two kinds of edges: epistemic edges that define what each character believes the world state to be, and temporal edges that define how the world state changes as a result of an event.
A state node represents an assignment of a value to every fluent tracked by a state graph as well as the beliefs of every character tracked by the graph.
A substitution is a function which maps one set of objects to other objects that will replace them.
A sum graph is a heuristic graph where the cost of a conjunction is defined to be the sum of the cost of its conjuncts.
There are two kinds of symbols that can be used to define a grammar for a parser to follow: terminal symbols that represent primitive elements that cannot be broken down any further and non-terminal symbols that represent complex patterns that can be broken down further.
A plan which is built by appending actions on to the end.
A temporal edge is an edge whose parent is the world state before an event occurred and whose child is the world state after the event occurred.
A terminal symbol is a primitive element in a grammar used by a parser which cannot be broken down into smaller parts.
A token is a single unit of input text, such as a keyword, symbol, bracket, string literal, number, or operator.
A tokenizer converts an input stream of text into a list of tokens, which are meaningful units of text annotated with where they occurred in the stream and any comments associated with them.
Represents the three basic operations the tokenizer can perform while processing input text.
A trigger is an event that must occur when its precondition is satisfied.
An event node representing a trigger.
True is one of two singleton values of type boolean that represents the opposite of false.
Types provide a way to group values, to express relationships between values, and to define which values are legal for variables and properties.
A type constraint is a proposition that is true if and only if a given argument is of a given type.
A typed formula is a logical formula that has a type.
A unique object is one of a collection whose hash codes are unique, sequential integers starting at 0.
A unique map uses Unique objects as keys and maps each key to a value.
A universe is the collection of all the things in a planning problem, specifically all the entities and the types of those entities.
A universe builder assists in defining the types and entities of a universe by enforcing requirements on their definitions.
Unknown is a value that represents a missing or empty value.
A collection of miscellaneous utility methods.
A cost set node that represents a utility expression.
A value is a logical expression which evaluates to itself.
A variable is a placeholder for a value.
A weighted cost is a wrapper around a cost function that multiplies a cost by a fixed constant.
Worker provides a convenient way to run long, time-consuming processes that provide occasional updates on their progress.
A getter is a Worker whose long-running process returns a value.
A runner is a Worker whose long-running process does not return a value.
A status object stores the message that will be displayed occasionally as a long-running process runs; the process should update this message to reflect its current status.