To solve this optimization problem, we first need to understand and translate the given natural language description into a symbolic representation. This involves defining variables, an objective function, and constraints based on the provided information.

### Symbolic Representation

Let's define the variables as follows:
- \(x_0\): The number of airborne infantry companies.
- \(x_1\): The number of engineer platoons.
- \(x_2\): The number of air defense batteries.

Given these definitions, we can represent the problem symbolically:

```json
{
    'sym_variables': [('x0', 'airborne infantry companies'), ('x1', 'engineer platoons'), ('x2', 'air defense batteries')],
    'objective_function': '7*x0^2 + 5*x0*x1 + 5*x0*x2 + 3*x1^2 + x2^2 + 9*x0 + x1',
    'constraints': [
        '12*x0 + 10*x2 >= 33',  # Minimum combined mobility rating from airborne infantry companies and air defense batteries
        '13*x1 + 10*x2 >= 36',  # Minimum combined mobility rating from engineer platoons and air defense batteries
        '12*x0 + 13*x1 + 10*x2 >= 36',  # Minimum total combined mobility rating from all units
        '4*x0 + 4*x2 >= 57',  # Minimum fuel demand of airborne infantry companies and air defense batteries
        '4*x0 + 11*x1 + 4*x2 >= 57',  # Minimum total fuel demand of all units
        '2*x0 - 5*x2 >= 0',  # Constraint involving airborne infantry companies and air defense batteries
        '(12*x0)^2 + (13*x1)^2 + (10*x2)^2 <= 66',  # Maximum combined squared mobility rating
        '4*x0 + 4*x2 <= 146'  # Maximum fuel demand of airborne infantry companies and air defense batteries
    ]
}
```

### Gurobi Code

Now, let's write the Gurobi code to solve this optimization problem. We will use Python as our programming language.

```python
from gurobipy import *

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

# Define variables
x0 = m.addVar(vtype=GRB.INTEGER, name="airborne_infantry_companies")
x1 = m.addVar(vtype=GRB.INTEGER, name="engineer_platoons")
x2 = m.addVar(vtype=GRB.INTEGER, name="air_defense_batteries")

# Define the objective function
m.setObjective(7*x0**2 + 5*x0*x1 + 5*x0*x2 + 3*x1**2 + x2**2 + 9*x0 + x1, GRB.MINIMIZE)

# Add constraints
m.addConstr(12*x0 + 10*x2 >= 33)
m.addConstr(13*x1 + 10*x2 >= 36)
m.addConstr(12*x0 + 13*x1 + 10*x2 >= 36)
m.addConstr(4*x0 + 4*x2 >= 57)
m.addConstr(4*x0 + 11*x1 + 4*x2 >= 57)
m.addConstr(2*x0 - 5*x2 >= 0)
m.addConstr((12*x0)**2 + (13*x1)**2 + (10*x2)**2 <= 66)
m.addConstr(4*x0 + 4*x2 <= 146)

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Airborne Infantry Companies: {x0.x}")
    print(f"Engineer Platoons: {x1.x}")
    print(f"Air Defense Batteries: {x2.x}")
else:
    print("No optimal solution found")
```