如果我有类似的东西:
Record Version :=
mkVersion { major:nat; minor:nat; branch:nat; hotfix:nat }.
如何为这种类型的值添加硬保证,例如:
hotfix v > 0 && hotfix v < 8
没有人可以创建具有错误值的版本。
答案 0 :(得分:1)
您只需要添加一个证明字段。要整理它,您可以将hotfix
包裹成自己的类型:
Record hotfix_t := Hotfix {
hf_val : nat;
hf_pf : hf_val > 0 /\ hf_val < 8
}.
Record Version := mkVersion {
major : nat;
minor : nat;
branch : nat;
hotfix : hotfix_t
}.