Differences
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 | ||
sav08:syntax_and_shorthands_of_hol [2008/05/28 01:05] vkuncak |
sav08:syntax_and_shorthands_of_hol [2008/05/29 17:00] vkuncak |
||
---|---|---|---|
Line 10: | Line 10: | ||
All types are built from i and o using function type constructor $\Rightarrow$. For example, | All types are built from i and o using function type constructor $\Rightarrow$. For example, | ||
- | * binary functions are terms of type $i \Rightarow i \Rightarrow i$ (arrow associates to the right, we use currying to represent functions with multiple arguments) | + | * binary functions are terms of type $i \Rightarrow i \Rightarrow i$ (arrow associates to the right, we use currying to represent functions with multiple arguments) |
* binary predicates are terms of type $i \Rightarrow i \Rightarrow o$ | * binary predicates are terms of type $i \Rightarrow i \Rightarrow o$ | ||
Line 35: | Line 35: | ||
\] | \] | ||
Note that we have defined negation, conjunction, and universal quantification, so all propositional operations and existential quantification are expressible. | Note that we have defined negation, conjunction, and universal quantification, so all propositional operations and existential quantification are expressible. | ||
+ | |||
+ | Note also that we can express | ||
+ | \[ | ||
+ | \mbox{ let } x = E \mbox{ in } F | ||
+ | \] | ||
+ | by $(\lambda x.F)E$. | ||
+ | |||
+ | The selection operator $\iota$ is not essential, but is a useful notation. By writing | ||
+ | \[ | ||
+ | \mbox{ let } y = \iota(\lambda x. P(x)) \mbox{ in } F | ||
+ | \] | ||
+ | we can express the phrase "let y in F denote the unique x such that P(x) holds". | ||