Adversarial neural network model described in Learning to Protect Communications with Adversarial Neural Cryptography (Martín Abadi & David G. Andersen, 2016) as implemented by Liam Schoneveld (https://nlml.github.io/neural-networks/adversarial-neural-cryptography/).
While I re-adapted the code to generate Alice's output (ciphertext) using a fixed key and fixed input message generator, my major contribution is developing a truth table for Boolean functions of the form: L(x) = a0 + a1x1 + a2x2 + ... + a8x8 and using the functions to compute nonlinearity.