We are using the Agda programming language and proof assistant to formally verify the correctness of a Byzantine Fault Tolerant consensus implementation based on HotStuff / LibraBFT. The Agda implementation is a translation of our Haskell implementation based on LibraBFT. This short paper focuses on one aspect of this work. We have developed a library that enables the translated Agda implementation to closely mirror the Haskell code on which it is based. This makes it easier and more efficient to review the translation for accuracy, and to maintain the translated Agda code when the Haskell code changes, thereby reducing the risk of translation errors. We also explain how we capture the semantics of the syntactic features provided by our library, thus enabling formal reasoning about programs that use them; details of how we reason about the resulting Agda implementation will be presented in a future paper. The library that we present is independent of our particular verification project, and is available, open-source, for others to use and extend.
翻译:我们正在使用Agda编程语言和校对助理来正式核实基于HotStuff/ LibraBFT的Byzantine Dault容忍度的共识执行的正确性。 Agda 执行是基于LibraBFT的Haskell执行文件的译本。 这份简短的论文侧重于这项工作的一个方面。 我们开发了一个图书馆,使翻译的Agda 执行能够密切反映它所依据的Haskell 代码。 这使得审查翻译的准确性比较容易,效率也更高,并在Haskell 代码修改时维持翻译的Agda 代码,从而降低翻译错误的风险。 我们还解释了我们如何捕捉到我们图书馆提供的合成特征的语义,从而能够正式解释使用这些特征的程序; 我们所介绍的Agda 执行过程的理由的细节将在未来的文件中提出。 我们所介绍的图书馆独立于我们特定的核查项目,并且可供他人使用和扩展。