Refinement (computing): Difference between revisions

Content deleted Content added
Program refinement: This is not an example but an alternative meaning.
m Rep typographic ligatures like "fi" with plain text; possible ref cleanup; WP:GenFixes on, replaced: fi → fi (4) 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]].{{citation needed|date=September 2010}} ''[[Stepwise refinement]]'' allows this process to be done in stages. Logically, refinement normally involves [[logical consequence|implication]], but there can be additional complications.
 
The progressive just-in-time preparation of the product backlog (requirements list) in [[agile software development]] approaches, such as [[Scrum (software development)|Scrum]], is also commonly described as refinement.<ref>{{cite journal|last=Cho|first=L|title=Adopting an Agile Culture A User Experience Team's Journey|journal=Agile Conference|year=2009|doi=10.1109/AGILE.2009.76|isbn=978-0-7695-3768-9|pages=416}}</ref>
Line 21:
 
== Refinement types ==
In [[type theory]], a '''refinement type'''<ref>{{cite conference|first1=T.|last1=Freeman|first2=F.|last2=Pfenning|url=https://www.cs.cmu.edu/~fp/papers/pldi91.pdf|doi=10.1145/113445.113468 |title=RefinementRefinement 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 refinementrefinement types|citeseerx = 10.1.1.38.6346|doi=10.1007/3-540-58085-9_74|booktitle=Proceedings of the Workshop on Types for Proofs and Programs|pages=157–172|year=1993}}</ref><ref>{{cite conference|first=E.|last=Denney|citeseerx = 10.1.1.22.4988|title=RefinementRefinement types for specificationspecification|booktitle=Proceedings of the IFIP International Conference on Programming Concepts and Methods|volume=125|pages=148–166|publisher=Chapman & Hall|year=1998}}</ref> is a type endowed with a predicate which is assumed to hold for any element of the refined type. Refinement types can express [[precondition]]s when used as [[function argument]]s or [[postcondition]]s when used as [[return type]]s: for instance, the type of a function which accepts natural numbers and returns natural numbers greater than 5 may be written as <math>f: \mathbb{N} \rarr \{n: \mathbb{N} | n > 5\}</math>. Refinement types are thus related to [[behavioral subtyping]].
 
== References ==