# How do I use the output of functions like Solve?

Solve and other functions such as FindInstance, NSolve, and NDSolve return a list of rules. In the Wolfram Language, rules associate symbols with values. For example, consider the output of:

``roots = Solve[x^2 + 4 x - 1 == 0, x]``
``{{x -> -2 - Sqrt}, {x -> -2 + Sqrt}}``

The output is a list of lists of rules. Each sublist represents a possible value of x. To look at the first solution as a rule, we can run:

``roots[]``
``{x -> -2 - Sqrt}``

The symbol is `x`, and its value is `- 2 - Sqrt`. The ReplaceAll command ( /. ) replaces every instance of the symbol with a value according to a rule. For example, if we want to replace all instances of `x` in the polynomial `x^2 + 4 x - 1` with the first root of the polynomial above, we could write:

``x^2 + 4 x - 1 /. roots[]``

This results in an expression that is equal to zero.

If we want to get the second root of the polynomial and assign it to a new variable called secondRoot, we could evaluate:

``secondRoot = x /. roots[]``

Please see the tutorial on using rules for more examples and information on how to use them.

For some functions, such as NDSolve, an equivalent “Value” function exists (e.g., NDSolveValue ) that returns a value or function instead of rules.

## Contact Support Call us

## Customer Support

Monday–Friday
8am–5pm US Central Time

• Product registration or activation
• Pre-sales information and ordering
• Help with installation and first launch

## Advanced Technical Support (for eligible customers)

Monday–Thursday
8am–5pm US Central Time

Friday
8:30–10am & 11am–5pm US Central Time

• Priority technical support
• Product assistance from Wolfram experts
• Help with Wolfram Language programming