Comparator always runs the builtin Lean kernel replay after any external_kernels. In Main.lean, result := result <|> (← runBuiltinKernel solution) runs unconditionally.
So the README's trust assumption can be reduced to "at least one of the Lean kernel or the external_kernels is correct", but the run time can't. For very large solutions, the single-threaded builtin replay dominates.
Proposal. An opt-in config field, for example "builtin_kernel": false (default true). It would only be allowed together with a non-empty external_kernels, and it would skip runBuiltinKernel. The trust assumption would then read "at least one of the external_kernels is correct".
Motivation. Take https://github.com/dpwoodru/general-courtade-kumar-lean: a ~100 GB export with 22.1M constants.
As @nomeata noted on #99, there is currently no supported way to do this. Happy to send a PR if this sounds acceptable.
Comparator always runs the builtin Lean kernel replay after any
external_kernels. InMain.lean,result := result <|> (← runBuiltinKernel solution)runs unconditionally.So the README's trust assumption can be reduced to "at least one of the Lean kernel or the
external_kernelsis correct", but the run time can't. For very large solutions, the single-threaded builtin replay dominates.Proposal. An opt-in config field, for example
"builtin_kernel": false(defaulttrue). It would only be allowed together with a non-emptyexternal_kernels, and it would skiprunBuiltinKernel. The trust assumption would then read "at least one of theexternal_kernelsis correct".Motivation. Take https://github.com/dpwoodru/general-courtade-kumar-lean: a ~100 GB export with 22.1M constants.
As @nomeata noted on #99, there is currently no supported way to do this. Happy to send a PR if this sounds acceptable.