Output scheme: FunkyPRGSymEnc.scheme

Here is the scheme file that was generated by Claude Code (Opus 4.6):

import '../../Primitives/SymEnc.primitive';
import '../../Primitives/PRG.primitive';

Scheme FunkyPRGSymEnc(PRG G) extends SymEnc {
    requires G.stretch == G.lambda;

    Int lambda = G.lambda;

    Set Key = BitString<lambda>;
    Set Message = BitString<2 * lambda>;
    Set Ciphertext = BitString<3 * lambda>;

    Key KeyGen() {
        Key k <- Key;
        return k;
    }

    Ciphertext Enc(Key k, Message m) {
        BitString<lambda> r <- BitString<lambda>;
        BitString<2 * lambda> z = G.evaluate(k + r);
        return r || (z + m);
    }

    Message Dec(Key k, Ciphertext c) {
        BitString<lambda> r = c[0 : lambda];
        BitString<2 * lambda> y = c[lambda : 3 * lambda];
        BitString<2 * lambda> z = G.evaluate(k + r);
        return y + z;
    }
}

This site uses Just the Docs, a documentation theme for Jekyll.