证明计算两个日期之间的时间量的正确性

时间:2014-06-14 13:21:25

标签: algorithm loop-invariant proof-of-correctness

我有一个非常简单的函数,它应该计算给定时间单位中两个日期之间的时间量,例如:getPartialPeriod(January 1, February 15, months)会导致1.5

我真的在努力证明这一点 - 我从循环开始,因为我觉得这是最困难的部分。我已经定义了许多Hoare三元组和循环不变量只是为了发现它们都是无用的。我很感激能得到的所有帮助。

函数的伪代码:

getPartialPeriod(startDate, endDate, timeUnitType):
    partialPeriod = 0
    currentDate = startDate + 1 timeUnit

    CASE timeUnitType
        weeks:   daysInTimeUnit = 7
        months:  daysInTimeUnit = 30
        DEFAULT: daysInTimeUnit = 1
    END CASE

    WHILE currentDate <= endDate DO 
        INCREMENT partialPeriod
        currentDate = currentDate + timeUnit
    END WHILE

    remainingPeriod = amount of days between currentDate and endDate
    partialPeriod = partialPeriod + remainingPeriod / daysInTimeUnit

P.S。请忽略它似乎有点愚蠢的实现 - 这并不重要。

0 个答案:

没有答案