我正在制作一个注册表,该注册表在客户购买商品时产生收据。作为练习,我正考虑在Coq中制作一个收据模块,它不会产生错误的收据。总之,收据上的物品和付款总是应该为0(物品的价格> 0,付款的金额为< 0)。这是可行的,还是合理的?已验证的正确收货模块
做一个速写,收据将包括收到的物品和支付,像
type receipt = {
items : item list;
payments : payment list
}
而且会有功能添加文章和支付
add_article(receipt, article, quantity)
add_payment(receipt, payment)
在现实生活中,这程序当然更复杂,加入不同类型的折扣等。
当然很容易添加布尔函数check_receipt
那个con公司认为收据是正确的。由于文章和付款总是在运行时添加,也许这是唯一的方法?
例子:
receipt = {
items = [{name = "article1"; price = "10"; quantity = "2"}];
payments = [{payment_type = Cash; amount = (-20)}];
}
是否清楚我想要什么?
或者更准确地证明正确的增值税计算。有几个这样的属性可以被证明。
对不起,现在还不清楚。 “收据上的物品和付款总是应该总计为0”,这是什么意思?文章(数量,也许?)和付款是不同的,并且它们总是正面的,为什么总和为0?你能举个例子吗? –
啊,对不起。在我们的系统中,文章的金额> 0,付款金额为0.将添加此项。 –