Content deleted Content added
Phil Boswell (talk | contribs) convert dodgy URL to ID using AWB |
|||
Line 6:
== Program refinement ==
In [[formal methods]], '''program refinement''' is the [[formal verification|verifiable]] transformation of an ''abstract'' (high-level) [[formal specification]] into a ''concrete'' (low-level) [[executable program]].{{
== Data refinement ==
'''Data refinement'''<!-- REDIRECTs HERE--> is used to convert an abstract data model (in terms of [[set (mathematics)|set]]s for example) into implementable [[data structures]] (such as [[Array data structure|arrays]]).{{
For example, ''x'' ∈ {1,2,3} (where ''x'' is the value of the [[Variable (programming)|variable]] ''x'' after an operation) could be refined to ''x'' ∈ {1,2}, then ''x'' ∈ {1}, and implemented as ''x'' := 1. Implementations of ''x'' := 2 and ''x'' := 3 would be equally acceptable in this case, using a different route for the refinement. However, we must be careful not to refine to ''x'' ∈ {} (equivalent to ''false'') since this is unimplementable; it is impossible to select a [[Element (mathematics)|member]] from the [[empty set]].
Line 19:
== Refinement types ==
In [[type theory]], a '''refinement type'''<ref>{{cite conference|first1=T.|last1=Freeman|first2=F.|last2=Pfenning|url=ftp://ftp.cs.cmu.edu/usr/rwh/www/home/courses/refinements/papers/Freeman94/phd.pdf|doi=10.1145/113445.113468 |title=Refinement types for ML|booktitle=Proceedings of the ACM Conference on Programming Language Design and Implementation|pages=268–277|year=1991}}</ref><ref>{{cite conference|first=S.|last=Hayashi|title=Logic of refinement types|
== References ==
{{reflist}}
{{soft-eng-stub}}▼
[[Category:Formal methods]]
[[Category:Computer programming]]
▲{{soft-eng-stub}}
|