The area of PRNG is mostly an experimental area. I have created a simple PRNG (called komirand) which passes statistical tests for randomness in PractRand. The PRNG has a 128-bit state which is divided into two 64-bit unsigned integer variables ($s_{1}$ and $s_{2}$), that are initially selected uniformly at random.
$$ m_{128}=s_{1} * s_{2} $$ $$ s_{2}'=(s_{2}+\lfloor m_{128} / 2^{64} \rfloor +C) \mod 2^{64} $$ $$ s_{1}'=(m_{128} \mod 2^{64}) \oplus s_{2}' $$
$C$ is any optional 64-bit constant (to facilitate PRNG auto-start from $m_{128}=0$ state), but can be zero if such auto-start is not needed. $s_{1}'$ is used as PRNG output.
While the construction is simple, I'm probably not proficient enough in mathematical proofs and apparatus to come with a proof myself, so asking for assistance. I think there is no need to prove that this permutation yields a working PRNG - only that this specific permutation leads to $s_{1}'$ uncorrelated to $s_{1}$ on per-bit level, on average.