I am reading an ssreflect tutorial that reads :
Below we prove ... by translating the propositional statement into its Boolean counterpart, which is easy to prove with brute force. This method of proof is called reflection. The design of ssreflects allows and ssreflects spirit recommends the widespread use of such a technique.
Does this (reflection) mean that ssreflect suggests excluded middle ( forall A:Prop, A \/ ~A)?
This seems to be the case because all the booleans satisfy EM. If so, it would be a big guess to make the following ssreflect style.
In addition, I do not quite understand the "local" or "small-scale" part of it:
Since it is usually used locally to efficiently manage small pieces of evidence (instead of being used in a general evidence structure), this is called small-scale reflection, therefore the name is ssreflect.
What do the small parts mean against. general evidence structure. Is this an assumption that we can sometimes use EM locally without harm, and not use EM at all? in general, or does the area here mean something else?
In addition, I’m not experienced enough in Coq and don’t quite understand how this style of “brute force” in “Boolean colleagues” (mainly based on analysis casefrom what I read so far) is more effective than Coca’s vanilla way. For me, brute force is not very intuitive and it is not easy to guess in advance until you see the result.
- ?