Presumivelmente, você tem motivos para acreditar que o algoritmo para produzir Guids não está produzindo números verdadeiramente aleatórios, mas na verdade está alternando com um período << 2 ^ 128.
por exemplo, o método RFC4122 usado para derivar GUIDs que corrigem os valores de alguns bits.
A prova do ciclismo dependerá do tamanho possível do período.
Por pequenos períodos, a tabela de hash (GUID) -> GUID com substituição em caso de colisão, se os GUIDs não corresponderem (terminar se o fizerem), pode ser uma abordagem. Considere também fazer a substituição apenas uma fração aleatória do tempo.
Por fim, se o período máximo entre colisões for grande o suficiente (e não for conhecido antecipadamente), qualquer método só produzirá uma probabilidade de que a colisão seja encontrada se existir.
Observe que, se o método de geração de Guids for baseado no relógio (consulte a RFC), talvez não seja possível determinar se existem colisões, pois (a) você não poderá esperar o tempo suficiente para que o relógio termine, ou (b) você não pode solicitar Guids suficientes dentro de um relógio para forçar uma colisão.
Como alternativa, você poderá mostrar um relacionamento estatístico entre os bits no Guid ou uma correlação de bits entre os Guids. Esse relacionamento pode tornar altamente provável que o algoritmo seja defeituoso sem necessariamente ser capaz de encontrar uma colisão real.
Obviamente, se você só quer provar que o Guids pode colidir, uma prova matemática, não um programa, é a resposta.