Open alxest opened 8 years ago
Thank you for sharing your knowledge!
As you pointed out well, Prop
and bool
has a famous trade-off: Prop
is more expressive, but not computable; while bool
is less expressive, yet computable. For "computability" and "expressibility" maybe we will have chances to discuss them further later..
In the last lecture, professor pointed the difference between bool and Prop. IIUC, In order to express theorem on infinite data, built-in predicate "forall" must be introduced. To use "forall", it must be Prop or Type. (https://coq.inria.fr/refman/Reference-Manual006.html) In below code, "ge 0 n", "geb 0 n = true" is Prop, but "geb 0 n" is bool.
Also, below article mentions another point. http://adam.chlipala.net/cpdt/html/Predicates.html tl;dr => bool must be computable inside Coq, and it can be used in if-then-else.