This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
best_practices [2011/07/20 12:54] 131.246.161.187 [Parentheses] |
best_practices [2012/04/13 15:35] paddy [Sets and Functions] |
||
---|---|---|---|
Line 7: | Line 7: | ||
* Conditions: ''(if P then x else y)'' | * Conditions: ''(if P then x else y)'' | ||
- | * Case distinctions: ''(case x of p1 => e1 | p2 => e2) | + | * Case distinctions: ''(case x of p1 => e1 | p2 => e2)'' |
* Constructors (in patterns): ''(x#xs)'' | * Constructors (in patterns): ''(x#xs)'' | ||
In all of these cases it is generally inadvisable to leave out the outermost parentheses. | In all of these cases it is generally inadvisable to leave out the outermost parentheses. | ||
- | You might also often have to overwrite how Isabelle puts parentheses implicitly, for example around quantifiers: ''(ALL x. P x)''. If in doubt, have Isabelle show you all parentheses by enabling [Isabelle → Settings → Display → Show Brackets] and check. | + | You might also run into problems by implicitly put parentheses (by precedence rules). |
+ | |||
+ | As an example, consider quantifiers: Is $\forall x. P x \vee Q$ to be read as $\forall x. (P x \vee Q)$ or as $(\forall x. P x) \vee Q$? One might expect the latter (which is commonly done in mathematics) but Isabelle does the former. | ||
+ | |||
+ | If in doubt, check [Isabelle → Settings → Display → Show Brackets] and find out what exactly happens. | ||
===== Modelling ===== | ===== Modelling ===== | ||
==== Sets and Functions ==== | ==== Sets and Functions ==== | ||
+ | Sets and (boolean) functions are equivalent. However, using both worlds in parallel, e.g. using sometimes $P\; x$ and sometimes $x \in P$ or even $\{x. P\; x\}$, you might run into issues during proofs as Isabelle has to perform certain steps in order to switch from one point of view to the other. Therefore you better choose wether to express your statements in predicate or in set notation and stick with it. |