The program runs using a subfunction which is called with two arguments: 'single' and 'delete'. If the 'single' parameter is non-nil, the user is prompted for a single object to mirror and the object is mirrored in the mirror axis defined by the derivative at the selected edge of the object. If the 'single' parameter is nil, the user is prompted for a SelectionSet of objects to mirror and an object whose derivative at its selected edge will be used as a mirror axis. The 'delete' parameter determines whether the original objects are to be erased following the mirror operation.
I have created four program shortcuts to call the subfunction in various ways, the configuration of each command is detailed at the top of the code.