## Problem Description and Symbolic Representation

The problem requires determining the optimal number of leather and mesh chairs a store should stock to maximize profit, given certain constraints.

### Symbolic Representation

Let's denote:
- $x_1$ as the number of leather chairs,
- $x_2$ as the number of mesh chairs.

The objective is to maximize profit. The profit per leather chair is $250, and per mesh chair is $200. Therefore, the objective function can be represented as:

Maximize: $250x_1 + 200x_2$

The store has the following constraints:
1. The cost of a leather chair is $500, and a mesh chair is $300. The store does not want to invest more than $50,000 on chairs.
   - Constraint: $500x_1 + 300x_2 \leq 50,000$
2. The store estimates a monthly demand of at most 125 chairs.
   - Constraint: $x_1 + x_2 \leq 125$
3. Non-negativity constraints, as the number of chairs cannot be negative.
   - Constraints: $x_1 \geq 0, x_2 \geq 0$

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'leather chairs'), ('x2', 'mesh chairs')],
    'objective_function': '250*x1 + 200*x2',
    'constraints': [
        '500*x1 + 300*x2 <= 50000',
        'x1 + x2 <= 125',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

def solve_chair_problem():
    # Create a new model
    model = gp.Model("Chair_Problem")

    # Define variables
    x1 = model.addVar(name="leather_chairs", lb=0, vtype=gp.GRB.INTEGER)
    x2 = model.addVar(name="mesh_chairs", lb=0, vtype=gp.GRB.INTEGER)

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

    # Constraints
    model.addConstr(500*x1 + 300*x2 <= 50000, name="investment_constraint")
    model.addConstr(x1 + x2 <= 125, name="demand_constraint")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gp.GRB.OPTIMAL:
        print(f"Optimal solution found. Leather chairs: {x1.varValue}, Mesh chairs: {x2.varValue}")
    else:
        print("No optimal solution found.")

solve_chair_problem()
```