(**Sofar,wehaveseenmanyexamplesofwhatwemightcall%``%#"#classical program verification.#"#%''%Wewriteprograms,writetheirspecifications,andthenprovethattheprogramssatisfytheirspecifications.TheprogramsthatwehavewritteninCoqhavebeennormalfunctionalprogramsthatwecouldjustaswellhavewritteninHaskellorML.Inthischapter,westartinvestigatingusesof%\textit{%#<i>#dependenttypes#</i>#%}%tointegrateprogramming,specification,andprovingintoasinglephase.*)
(**Sofar,wehaveseenmanyexamplesofwhatwemightcall%``%#"#classical program verification.#"#%''%Wewriteprograms,writetheirspecifications,andthenprovethattheprogramssatisfytheirspecifications.TheprogramsthatwehavewritteninCoqhavebeennormalfunctionalprogramsthatwecouldjustaswellhavewritteninHaskellorML.Inthischapter,westartinvestigatingusesof%\index{dependenttypes}\textit{%#<i>#dependenttypes#</i>#%}%tointegrateprogramming,specification,andprovingintoasinglephase.Thetechniqueswewilllearnmakeitpossibletoreducethecostofprogramverificationdramatically.*)
(***IntroducingSubsetTypes*)
(***IntroducingSubsetTypes*)
...
@@ -37,7 +37,7 @@ pred = fun n : nat => match n with
...
@@ -37,7 +37,7 @@ pred = fun n : nat => match n with