Uniform polynomial-time evaluation of encrypted layers #
The actual evaluator has one uniform polynomial clock for the full encoded public input. Binary wire lookups are bounded before unary conversion. Every node's output is truncated at the generated decryption circuit's unary input arity, which bounds state growth even on malformed keys, links, ciphertexts and node references. Correctness, fixed widths and secrecy assumptions are not used in these runtime certificates.
Main results #
Cslib.Crypto.Homomorphic.Scheme.isPPTOn_evaluateNode: evaluate one node and truncate its output.Cslib.Crypto.Homomorphic.Scheme.isPPTOn_evaluateLayer: traverse a complete layer.Cslib.Crypto.Homomorphic.Scheme.isPPTOn_evaluateLayerStep: advance the public loop state.Cslib.Crypto.Homomorphic.Scheme.isPPTOn_evaluateLayers: execute the complete public loop.
References #
Execute the actual node program, including binary lookups and unconditional truncation.
Evaluate every node of a computed layer, charging the entire input and output lists.
Read the next public key, encrypted link and layer with a unary loop index, then advance it.
Evaluate all layers with a strict polynomial clock in their full public encoding. The state
bound covers malformed keys and references, without Scheme.Correct, FixedWidth or input
validity premises. Secret keys are not arguments to the algorithm.