input: Write a function to transpile and save an optimized inference program using Paddle Fluid. The function should be named "Transpile" and should take four arguments: "src_dir", "dst_dir", "model_filename", and "params_filename". Inside the function, create a CPUPlace object and an Executor object, then load the inference program and apply the inference transpiler. Save the optimized inference program to "dst_dir". If "dst_dir" does not exist, create it. Additionally, create a main function that takes in arguments using argparse.ArgumentParser() and calls the "Transpile" function with the parsed arguments.
  
  assert os.path.exists(dst_dir) == True
  assert os.path.basename(model_path) == model_filename
  assert os.path.basename(params_path) == params_filename
output: def Transpile(src_dir, dst_dir, model_filename, params_filename):
      import os
      import paddle.fluid as fluid
  
      if not os.path.exists(dst_dir):
          os.makedirs(dst_dir)
  
      place = fluid.CPUPlace()
      exe = fluid.Executor(place)
  
      model_path = os.path.join(src_dir, model_filename)
      params_path = os.path.join(src_dir, params_filename)
  
      [inference_program, feed_target_names, fetch_targets] = fluid.io.load_inference_model(
          dirname=src_dir, executor=exe, model_filename=model_filename, params_filename=params_filename
      )
  
      t = fluid.InferenceTranspiler()
      t.transpile(inference_program, place)
  
      fluid.io.save_inference_model(
          dirname=dst_dir,
          feeded_var_names=feed_target_names,
          target_vars=fetch_targets,
          executor=exe,
          main_program=inference_program,
          model_filename=model_filename,
          params_filename=params_filename
      )