To solve the given optimization problem, we first need to convert the natural language description into a symbolic representation. This involves defining variables for the quantities of mix A and mix B to be mixed, formulating the objective function which represents the total cost to be minimized, and listing all constraints based on the requirements for cement, sand, and gravel.

Let's define:
- \(x_1\) as the number of units of mix A
- \(x_2\) as the number of units of mix B

The objective function aims to minimize the total cost. Given that the cost per unit of mix A is $1 and the cost per unit of mix B is $1.25, the objective function can be represented algebraically as:
\[ \text{Minimize:} \quad 1x_1 + 1.25x_2 \]

The constraints are based on the minimum requirements for cement, sand, and gravel in the new mixture:
- Cement: \(5x_1 + 6x_2 \geq 70\)
- Sand: \(2x_1 + x_2 \geq 20\)
- Gravel: \(x_1 + 2x_2 \geq 15\)

Additionally, since we cannot have a negative amount of mix A or mix B, we also have:
- \(x_1 \geq 0\)
- \(x_2 \geq 0\)

Thus, the symbolic representation of the problem is:
```json
{
    'sym_variables': [('x1', 'units of mix A'), ('x2', 'units of mix B')],
    'objective_function': 'Minimize: 1*x1 + 1.25*x2',
    'constraints': [
        '5*x1 + 6*x2 >= 70',
        '2*x1 + x2 >= 20',
        'x1 + 2*x2 >= 15',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

To solve this linear programming problem using Gurobi in Python, we can use the following code:

```python
from gurobipy import *

# Create a new model
model = Model("Concrete_Mix")

# Define variables
x1 = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="mix_A")
x2 = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="mix_B")

# Set the objective function
model.setObjective(1*x1 + 1.25*x2, GRB.MINIMIZE)

# Add constraints
model.addConstr(5*x1 + 6*x2 >= 70, "cement")
model.addConstr(2*x1 + x2 >= 20, "sand")
model.addConstr(x1 + 2*x2 >= 15, "gravel")

# Optimize the model
model.optimize()

# Print the results
if model.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Mix A: {x1.x} units")
    print(f"Mix B: {x2.x} units")
    print(f"Total Cost: ${model.objVal:.2f}")
else:
    print("No optimal solution found.")
```