> For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.r.xyz/glider-ide/api/instruction/instruction.forward_df.md).

# Instruction.forward\_df()

`forward_df() →` [`APISet`](/glider-ide/api/iterables/apiset.md)`[`[`Point`](/glider-ide/api/point.md)`]`

The `forward_df()` function is an intra-procedural analysis function. This means that the function does not operate recursively and instead returns instructions within the current function instruction set.

For example, in the function:&#x20;

```solidity
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
```

For the instruction `uint256 c = a * b;` the forward data flow will return instructions:

```solidity
require(c / a == b, "SafeMath: multiplication overflow");
return c;
```

The easy way to put this is that it will follow the nodes where the variable `c` is being used directly or indirectly.

## Query Example

```python
from glider import *

def query():
    # Fetch an instruction
    instructions = Instructions().exec(1,16)
    
    # Return the list of instructions following the current instruction
    return instructions + list(instructions[0].forward_df())
```

## Example Output

<figure><img src="/files/6v3x0XHRYZjt5el5R3Na" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The function returns APISet, instead of APIList, in case the result of the function is used as the return value of the query it must be casted to `list()`
{% endhint %}
