To solve Gabriel's problem, we first need to translate the natural language description into a symbolic representation. Let's define:

- $x_1$ as the number of pounds of lemons Gabriel should eat.
- $x_2$ as the number of pounds of pecans Gabriel should eat.

The objective function is to minimize the total cost, which can be represented algebraically as:
\[12x_1 + 10x_2\]

Given the nutritional requirements and the content per pound of each food item, we have the following constraints:

1. Calcium requirement: $3x_1 + 5x_2 \geq 25$
2. Potassium requirement: $4x_1 + 4x_2 \geq 18$
3. Zinc requirement: $7x_1 + 9x_2 \geq 19$

Additionally, since Gabriel cannot eat a negative amount of food, we have:
\[x_1 \geq 0\]
\[x_2 \geq 0\]

Thus, the symbolic representation of the problem is:

```json
{
    'sym_variables': [('x1', 'lemons'), ('x2', 'pecans')],
    'objective_function': '12*x1 + 10*x2',
    'constraints': ['3*x1 + 5*x2 >= 25', '4*x1 + 4*x2 >= 18', '7*x1 + 9*x2 >= 19', 'x1 >= 0', 'x2 >= 0']
}
```

To find the solution using Gurobi in Python, we'll set up the model as follows:

```python
from gurobipy import *

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

# Define variables
x1 = m.addVar(name="lemons", lb=0)
x2 = m.addVar(name="pecans", lb=0)

# Set the objective function
m.setObjective(12*x1 + 10*x2, GRB.MINIMIZE)

# Add constraints
m.addConstr(3*x1 + 5*x2 >= 25, name="calcium")
m.addConstr(4*x1 + 4*x2 >= 18, name="potassium")
m.addConstr(7*x1 + 9*x2 >= 19, name="zinc")

# Optimize the model
m.optimize()

# Print the solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Lemons: {x1.x}")
    print(f"Pecans: {x2.x}")
    print(f"Total cost: {m.objVal}")
else:
    print("No optimal solution found")
```