У меня есть аксиома
Parameter set : Type.
Parameter IN : set->set->Prop.
Axiom AXIOM_OF_SUBSETS :
forall prop x, exists y, forall u,
IN u y <-> IN u x /\ (prop u)
.
Теперь я хотел бы построить из этого пустой набор, например
Definition EMPTYSET : set.
Check (AXIOM_OF_SUBSETS (fun _ : set => False) x).
Результат проверки:
AXIOM_OF_SUBSETS (fun _ : set => False) x
: exists y : set,
forall u : set, IN u y <-> IN u x /\ False
Есть ли способ определить EMPTYSET
в этой ситуации?
Я нашел очень простое, но опасное решение для этого:
Просто измените Parameter set : Type.
на Parameter set : Prop.
.
Это хорошо работало, по крайней мере, для аксиом, лемм и теорем, которые я написал до сих пор. Будет ли это правильным способом решения проблемы для остальной части программы?
Для решения проблемы выше, обратитесь к https://github.com/coq/coq/wiki/Prop_or_Set.