## Step 1: Define the symbolic representation of the variables
The variables are 'chicken breasts', 'steaks', and 'lemons', which can be represented symbolically as $x_1$, $x_2$, and $x_3$ respectively.

## Step 2: Convert the objective function into a symbolic representation
The objective function to maximize is $1 \cdot (chicken\ breasts)^2 + 8 \cdot (steaks)^2 + 5 \cdot steaks \cdot lemons + 3 \cdot (lemons)^2 + 5 \cdot (chicken\ breasts)$. In symbolic terms, this is $1x_1^2 + 8x_2^2 + 5x_2x_3 + 3x_3^2 + 5x_1$.

## 3: Define the constraints in symbolic notation
1. $1x_1 + 6x_2 + 3x_3 \leq 70$ (Total umami index constraint)
2. $6x_2^2 + 3x_3^2 \geq 19$ (Minimum umami index from steaks and lemons squared)
3. $1x_1 + 3x_3 \geq 11$ (Minimum umami index from chicken breasts and lemons)
4. $8x_1^2 - 3x_3^2 \geq 0$ (Constraint on chicken breasts and lemons squared)
5. $1x_1 + 6x_2 \leq 62$ (Maximum umami index from chicken breasts and steaks)
6. $6x_2 + 3x_3 \leq 27$ (Maximum umami index from steaks and lemons)
7. $1x_1 + 3x_3 \leq 32$ (Maximum umami index from chicken breasts and lemons)
8. $1x_1 + 6x_2 + 3x_3 \leq 32$ (Maximum total umami index)
9. $x_1 \in \mathbb{Z}$ (Chicken breasts are non-fractional)
10. $x_2 \in \mathbb{Z}$ (Steaks are whole numbers)
11. $x_3 \in \mathbb{Z}$ (Lemons are whole numbers)

## 4: Create the Gurobi model and variables
We will use Gurobi to solve this optimization problem. The variables $x_1$, $x_2$, and $x_3$ will be created with appropriate constraints.

## 5: Implement the Gurobi code
```python
import gurobi as gp

# Create a new model
m = gp.Model("optimization_problem")

# Define the variables
x1 = m.addVar(name="chicken_breasts", vtype=gp.GRB.INTEGER)  # Non-fractional
x2 = m.addVar(name="steaks", vtype=gp.GRB.INTEGER)  # Whole number
x3 = m.addVar(name="lemons", vtype=gp.GRB.INTEGER)  # Whole number

# Objective function
m.setObjective(x1**2 + 8*x2**2 + 5*x2*x3 + 3*x3**2 + 5*x1, gp.GRB.MAXIMIZE)

# Constraints
m.addConstr(x1 + 6*x2 + 3*x3 <= 70)  # Total umami index
m.addConstr(6*x2**2 + 3*x3**2 >= 19)  # Minimum umami from steaks and lemons squared
m.addConstr(x1 + 3*x3 >= 11)  # Minimum umami from chicken breasts and lemons
m.addConstr(8*x1**2 - 3*x3**2 >= 0)  # Constraint on chicken breasts and lemons squared
m.addConstr(x1 + 6*x2 <= 62)  # Maximum umami from chicken breasts and steaks
m.addConstr(6*x2 + 3*x3 <= 27)  # Maximum umami from steaks and lemons
m.addConstr(x1 + 3*x3 <= 32)  # Maximum umami from chicken breasts and lemons
m.addConstr(x1 + 6*x2 + 3*x3 <= 32)  # Maximum total umami index

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Chicken breasts: {x1.varValue}")
    print(f"Steaks: {x2.varValue}")
    print(f"Lemons: {x3.varValue}")
    print(f"Objective: {m.objVal}")
else:
    print("No optimal solution found.")
```

## 6: Symbolic representation of the problem
```json
{
    'sym_variables': [('x1', 'chicken breasts'), ('x2', 'steaks'), ('x3', 'lemons')],
    'objective_function': '1*x1^2 + 8*x2^2 + 5*x2*x3 + 3*x3^2 + 5*x1',
    'constraints': [
        'x1 + 6*x2 + 3*x3 <= 70',
        '6*x2^2 + 3*x3^2 >= 19',
        'x1 + 3*x3 >= 11',
        '8*x1^2 - 3*x3^2 >= 0',
        'x1 + 6*x2 <= 62',
        '6*x2 + 3*x3 <= 27',
        'x1 + 3*x3 <= 32',
        'x1 + 6*x2 + 3*x3 <= 32',
        'x1 ∈ ℤ',
        'x2 ∈ ℤ',
        'x3 ∈ ℤ'
    ]
}
```