<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def verify_pop(pop: ProofOfPossession, ver_key: VerKey, gen: Generator) -> bool: """ Verifies the proof of possession and returns true - if signature valid or false otherwise. :param: pop - Proof of possession :param: ver_key - Verification key :param: gen - Generator point :return: true if signature valid """


        logger = logging.getLogger(__name__)
        logger.debug("Bls::verify_pop: >>> pop: %r, ver_key: %r, gen: %r",
                     pop,
                     ver_key,
                     gen)

        valid = c_bool()
        do_call('indy_crypto_bsl_verify_pop',
                pop.c_instance,
                ver_key.c_instance,
                gen.c_instance,
                byref(valid))

        res = valid
        logger.debug("Bls::verify_pop: <<< res: %r", res)
        return res