Lifting Definition Option (Q7361555)
From MaRDI portal
!
This is the item page for this Wikibase entity, intended for internal use and editing purposes. Please use the normal view instead:
AFP entry Lifting_Definition_Option
| Language | Label | Description | Also known as |
|---|---|---|---|
| default for all languages | No label defined |
||
| English | Lifting Definition Option |
AFP entry Lifting_Definition_Option |
Statements
13 October 2014
0 references
René Thiemann
0 references
Lifting Definition Option (English)
0 references
We implemented a command that can be used to easily generate elements of a restricted type {x :: 'a. P x} , provided the definition is of the form f ys = (if check ys then Some(generate ys :: 'a) else None) where ys is a list of variables y1 ... yn and check ys ==> P(generate ys) can be proved. In principle, such a definition is also directly possible using the lift_definition command. However, then this definition will not be suitable for code-generation. To this end, we automated a more complex construction of Joachim Breitner which is amenable for code-generation, and where the test check ys will only be performed once. In the automation, one auxiliary type is created, and Isabelle's lifting- and transfer-package is invoked several times.
0 references