The error function uses the program_name variable, but
does not depend on the progname module. Why? Because
error is released under the LGPL, whereas progname is
GPL. RMS does not want additional baggage accompanying the
error module, so an LGPL user must provide their own
replacement program_name, and a GPL user should manually
specify using the progname module.
Additionally, using the progname module is not something that
can be done implicitly. It requires that every main function
be modified to set program_name as one of its first actions.