|
project summary
|
Code
Generation
for
Functions
as
Data
| Title: |
Code Generation for Functions as Data |
| Author: |
Andreas Lochbihler |
| Submission date: |
2009-05-06 |
| Abstract: |
FinFun is now part of the Isabelle distribution. The entry is kept for archival; maintained but not developed further. Use the Isabelle distribution version instead. FinFuns are total functions that are constant except for a finite set of points, i.e. a generalisation of finite maps. They are formalised as a new type in Isabelle/HOL such that the code generator can handle equality tests and quantification on FinFuns. On the code output level, FinFuns are explicitly represented by constant functions and pointwise updates, similarly to associative lists. Inside the logic, they behave like ordinary functions with extensionality. Via the update/constant pattern, a recursion combinator and an induction rule for FinFuns allow for defining and reasoning about operators on FinFun that are also executable.
|
| Change history: |
[2010-08-13]:
new concept domain of a FinFun as a FinFun
(revision 34b3517cbc09)
[2010-11-04]:
new conversion function from FinFun to list of elements in the domain
(revision 0c167102e6ed)
[2012-03-07]:
replace sets as FinFuns by predicates as FinFuns because the set type constructor has been reintroduced
(revision b7aa87989f3a)
|
| BibTeX: |
@article{FinFun-AFP,
author = {Andreas Lochbihler},
title = {Code Generation for Functions as Data},
journal = {Archive of Formal Proofs},
month = may,
year = 2009,
note = {\url{http://afp.sf.net/entries/FinFun},
Formal proof development},
ISSN = {2150-914x},
}
|
| License: |
BSD License |
| Status: [ok] | This is the development
version, revision 376347e6131a, of this entry, generated for Isabelle revision 4894df243482. The development version might change over time and is only
permanently archived at Isabelle release points. It is provided as a
preview of the next upcoming release. Please refer to release
versions only in citations. If the status shows [FAIL], the links below
will point to the last working version if any. |
|