# Direct Search

The initial method of solving that ORION uses for objects that have values is direct search. Once a goal variable has been nominated, ORION searches outward from this point in the network to find information which would lead to an answer. Once sufficient information has been found, it returns the information along the paths traced out during searching, carrying out any calculation process required by operators that may lie along the path.

Consider the example:

```                     A = B + C
```

### Search Path

If a value for B were requested, ORION would search out from B until A and C were encountered. If A and C are unknown, they become the goals for further searching. Assuming values are available for A and C, ORION would return with this information until the addition operator was found. Depending on the direction being passed through, an operator may take its inverse. In this case, C must be subtracted from A; and the resulting value is returned for B.

Note that ORION does not evaluate the left and right hand sides of equations, because this has no meaning in a network of variables and operators. Instead, ORION uses its network representation as an undirected and modifiable structure to propagate current values or error values in whichever direction is appropriate, in much the same way as a human uses a street map.

Meanwhile, the directions of paths taken to solve for a particular variable are not lost until the value for some other variable is requested. And then, only the paths which must propagate information in the reverse direction are lost.
Let us consider the set of equations:

```                 A = B + C
B = X
X = 8
```

To find the value of C, ORION searches for the value of A and B and finds that B=8 and A=20. ("A" has been set by the user to "20") Following the information paths indicated by the arrows, ORION propagates these found values, until it meets the addition operator. It then subtracts B from A to get C.
If the user changes the value of B to 9, only the paths from X to B and from the operator to C are erased. The paths from A to the operator and from the logical variable Model@ to the equal sign are not lost.
These examples illustrate how ORION does all of its calculation, where values can be transmitted to obtain a result. An outward search is made until it is possible to retreat with sufficient information. Paths which could not provide a solution are not searched further.

### Search Behaviour

ORION's search behaviour at variables differs from its behaviour at operators. While the presence of a variable terminates a certain searching level, the presence of an operator leads to further searching on the same level.
If a variable is about to become unknowable, rules involving free variables or other indirect methods will be invoked.