## Symbolic Representation

The problem can be converted into a symbolic representation as follows:

- **Variables:**
  - $x_1$ : Number of folding bikes
  - $x_2$ : Number of touring bikes

- **Objective Function:** Maximize profit $= 200x_1 + 350x_2$

- **Constraints:**
  1. Demand constraint: $x_1 + x_2 \leq 100$
  2. Inventory value constraint: $550x_1 + 700x_2 \leq 30000$
  3. Non-negativity constraints: $x_1 \geq 0, x_2 \geq 0$

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'folding bikes'), ('x2', 'touring bikes')],
    'objective_function': '200*x1 + 350*x2',
    'constraints': [
        'x1 + x2 <= 100',
        '550*x1 + 700*x2 <= 30000',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

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

# Define variables
x1 = model.addVar(name="folding_bikes", lb=0, vtype=gp.GRB.INTEGER)  # Number of folding bikes
x2 = model.addVar(name="touring_bikes", lb=0, vtype=gp.GRB.INTEGER)  # Number of touring bikes

# Objective function: Maximize profit
model.setObjective(200*x1 + 350*x2, gp.GRB.MAXIMIZE)

# Demand constraint
model.addConstr(x1 + x2 <= 100, name="demand_constraint")

# Inventory value constraint
model.addConstr(550*x1 + 700*x2 <= 30000, name="inventory_value_constraint")

# Solve the model
model.optimize()

# Print the solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal solution: {x1.varName} = {x1.x}, {x2.varName} = {x2.x}")
    print(f"Max Profit: {model.objVal}")
else:
    print("The model is infeasible.")
```