input: Write a python function to solve a linear programming problem using PuLP and return the values of the decision variables.
  assert solve_lp_problem() == {'x1': 5.0, 'x2': 5.0, 'x3': 10.0}
output: def solve_lp_problem():
      import pulp
  
      # Create the problem variable to contain the problem data
      prob = pulp.LpProblem("Maximize Z", pulp.LpMaximize)
  
      # Decision variables
      x1 = pulp.LpVariable('x1', lowBound=0)
      x2 = pulp.LpVariable('x2', lowBound=0)
      x3 = pulp.LpVariable('x3', lowBound=0)
  
      # Objective function
      prob += 2 * x1 + 3 * x2 + 4 * x3
  
      # Constraints
      prob += x1 + x2 + x3 <= 20
      prob += 3 * x1 + 2 * x2 + x3 <= 30
      prob += x1 + 2 * x2 + 4 * x3 <= 40
  
      # Solve the problem
      prob.solve()
  
      # Extracting the values of decision variables
      result = {v.name: v.varValue for v in prob.variables()}
  
      return result