To tackle this problem, we first need to distill the given information into a symbolic representation that can be used to formulate the optimization problem. The variables of interest are 'signal platoons' and 'light infantry companies', which will be represented symbolically as $x_0$ and $x_1$, respectively.

Given the objective is to maximize $4x_0 + 4x_1$, we can directly translate this into our symbolic representation without needing further simplification.

The constraints provided in natural language need to be translated into mathematical expressions using our symbolic variables. These include:

- Fuel demand constraints: $4x_0 + 12x_1 \geq 78$ and $4x_0 + 12x_1 \leq 112$
- Fun factor constraints: $5x_0 + 9x_1 \geq 41$ and $5x_0 + 9x_1 \leq 126$
- Mobility rating constraints: $13x_0 + 2x_1 \geq 33$ and $13x_0 + 2x_1 \leq 62$
- Deployment weight constraints: $17x_0 + 8x_1 \geq 17$ and $17x_0 + 8x_1 \leq 48$
- Logistics footprint constraints: $12x_0 + 14x_1 \geq 17$ and $12x_0 + 14x_1 \leq 25$
- Additional constraint: $-x_0 + 9x_1 \geq 0$

All variables must be integers, as we are dealing with whole numbers of units.

In symbolic representation, the problem can be summarized as:
```json
{
    'sym_variables': [('x0', 'signal platoons'), ('x1', 'light infantry companies')],
    'objective_function': '4*x0 + 4*x1',
    'constraints': [
        '4*x0 + 12*x1 >= 78',
        '4*x0 + 12*x1 <= 112',
        '5*x0 + 9*x1 >= 41',
        '5*x0 + 9*x1 <= 126',
        '13*x0 + 2*x1 >= 33',
        '13*x0 + 2*x1 <= 62',
        '17*x0 + 8*x1 >= 17',
        '17*x0 + 8*x1 <= 48',
        '12*x0 + 14*x1 >= 17',
        '12*x0 + 14*x1 <= 25',
        '-x0 + 9*x1 >= 0'
    ]
}
```

Now, let's express this problem in Gurobi code:
```python
from gurobipy import *

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

# Add variables to the model
x0 = m.addVar(vtype=GRB.INTEGER, name="signal_platoons")
x1 = m.addVar(vtype=GRB.INTEGER, name="light_infantry_companies")

# Set the objective function
m.setObjective(4*x0 + 4*x1, GRB.MAXIMIZE)

# Add constraints to the model
m.addConstr(4*x0 + 12*x1 >= 78, "fuel_demand_min")
m.addConstr(4*x0 + 12*x1 <= 112, "fuel_demand_max")
m.addConstr(5*x0 + 9*x1 >= 41, "fun_factor_min")
m.addConstr(5*x0 + 9*x1 <= 126, "fun_factor_max")
m.addConstr(13*x0 + 2*x1 >= 33, "mobility_rating_min")
m.addConstr(13*x0 + 2*x1 <= 62, "mobility_rating_max")
m.addConstr(17*x0 + 8*x1 >= 17, "deployment_weight_min")
m.addConstr(17*x0 + 8*x1 <= 48, "deployment_weight_max")
m.addConstr(12*x0 + 14*x1 >= 17, "logistics_footprint_min")
m.addConstr(12*x0 + 14*x1 <= 25, "logistics_footprint_max")
m.addConstr(-x0 + 9*x1 >= 0, "additional_constraint")

# Optimize the model
m.optimize()

# Print the solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Signal platoons: {x0.x}")
    print(f"Light infantry companies: {x1.x}")
else:
    print("No optimal solution found")
```