<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def crypto_core_ed25519_is_valid_point(p):
 """ Check if ``p`` represents a point on the edwards25519 curve, in canonical form, on the main subgroup, and that the point doesn't have a small order. :param p: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence representing a point on the edwards25519 curve :type p: bytes :return: point validity :rtype: bool """

    ensure(isinstance(p, bytes) and len(p) == crypto_core_ed25519_BYTES,
           'Point must be a crypto_core_ed25519_BYTES long bytes sequence',
           raising=exc.TypeError)

    rc = lib.crypto_core_ed25519_is_valid_point(p)
    return rc == 1