We describe an ACL2 program that implements the Hebrew calendar and the formal verification of several of its properties, including the critical result that the algorithm that determines the placement of the new year ensures that the length of every year belongs to a small set of admissible values. These properties have been accepted for many centuries without the benefit of explicit proof, in spite of subtleties in the underlying arguments. For the sake of accessibility to a broad audience, the program is coded in Restricted Algorithmic C (RAC), a simple language consisting of the most basic constructs of C, for which an automatic translator to the ACL2 logic has been implemented. While RAC is primarily intended for modeling arithmetic hardware designs, this novel application provides a relatively simple illustration of the language and the translator.
翻译:我们描述一个ACL2程序,它执行希伯来日历,并正式核查其若干属性,包括决定新年位置的算法确保每年的长度都属于一组可接受值的临界结果。这些属性在几个世纪里被接受,尽管基本论点中有一些微妙之处,但却没有获得明确的证据。为了便于广大受众使用,该程序在限制算法C(RAC)中编码,这是一种简单的语言,由C(C)的最基本构造组成,为此,已经实施了ACL2逻辑的自动翻译。虽然RAC主要用于模拟算术硬件设计,但这一新应用提供了相对简单的语言和翻译图解。