# Execution Graph and Tasks

In the Fair Math Computer, a **task** is the smallest unit of execution managed by the orchestration layer. A task consists of the following components:

1. **Instructions**\
   A task includes an ordered set of instructions that define its operations. This set must not be empty.
2. **Variables**\
   These are the variables used or created by the instructions in the task.
3. **Metadata**\
   Metadata provides additional information about the task, including:
   * **Resource requirements** (e.g., memory or compute power needed).
   * **Estimated complexity** of the task.
   * **Execution constraints**, such as deadlines or specific capabilities required.

A task is valid if it has at least one instruction and all instructions are compatible with the dependencies of the application.
