To solve the given optimization problem, we first need to define the decision variables and the objective function. Let's denote:

- \(x_b\) as the number of bean burritos made.
- \(x_{bf}\) as the number of beef burritos made.

The profit per bean burrito is $6.5, and the profit per beef burrito is $9. Thus, the total profit can be represented as \(6.5x_b + 9x_{bf}\).

Given constraints are:
1. The total amount of lettuce used does not exceed 5000 grams.
2. At least four times the number of beef burritos need to be made compared to bean burritos.
3. A minimum of 5 bean burritos needs to be made.

Mathematically, these can be represented as:
1. \(25x_b + 18x_{bf} \leq 5000\)
2. \(x_{bf} \geq 4x_b\)
3. \(x_b \geq 5\)

We aim to maximize the profit function: Maximize \(6.5x_b + 9x_{bf}\) subject to these constraints.

Here is how we can implement this in Gurobi using Python:

```python
from gurobipy import *

# Create a new model
m = Model("Burrito_Optimization")

# Define the decision variables
x_b = m.addVar(vtype=GRB.INTEGER, name="bean_burritos")
x_bf = m.addVar(vtype=GRB.INTEGER, name="beef_burritos")

# Define the objective function
m.setObjective(6.5*x_b + 9*x_bf, GRB.MAXIMIZE)

# Add constraints
m.addConstr(25*x_b + 18*x_bf <= 5000, "lettuce_limit")
m.addConstr(x_bf >= 4*x_b, "beef_to_bean_ratio")
m.addConstr(x_b >= 5, "minimum_bean_burritos")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: {x_b.varName} = {x_b.x}, {x_bf.varName} = {x_bf.x}")
    print(f"Maximum profit: ${6.5*x_b.x + 9*x_bf.x:.2f}")
else:
    print("No optimal solution found")
```