Семантика на програмните езици.Денотационна семантика на рекурсивните програми с предаване на парамет
| Информационни технологии | 2009-12-04 | 91 сваляния |
11.Денотационна семантика на рекурсивните програми с предаване на параметри по стоиност.
Нека е даден терм c (Х1,..., Хn ,F1m ,, Fkmk ). Можем да пресметнем стойноста на c ,стига да разполагаме с подходящи стойности на променливите.Ще предполагаме че подходящи стойности за обектoвите променливи са естествени числа а за функционалните променливи частични ф-ции на съответния брой аргументи в N.Нека са дадени естествените числа a1 ,.., an и частичните ф-ции v 1 ,.., vк съответно на m1 ,.., mк аргумента.Тогава ст/ста c(a1 ,.., an , v 1 ,.., vк) съкратено c(yаy, y vy), на терма c се дефинира индуктивно:
1.ако c е константа с ,то c(yаy, y vy) с;
2.ако c= Хi то c(yаy, y vy) ai ;
3.ako c =f(c1,..., cl) където f е l-местна основна операция ,то c(yаy, y vy) f(c1(yаy, yхy),..., cl (yаy,y vy));
4.ако c= if p then c1else c2 ,то
| c(yаy, y vy) = |
|
| | |
5.ako c= Fimi (cl,, cmi),то c (yаy, y vy) vi (c1 (yаy, y vy,, cmi (yаy, y vy)).
Нека c (Х1,..., Хn ,F1m1 ,, Fkmk ) е терм.Нека са дадени v 1 } x1 Fm1 ,, vк } xk Fmk .Тогава при всеки избор на естествените числа a1 ,.., an и на константа b от типа на c е в сила импликацията c(a1 ,.., an , v 1 ,.., vк) b c(a1 ,.., an , x1 ,.., xk ) b.
Нека c (Х1,..., Хn ,F1m1 ,, Fkmk ) е терм , a1 ,.., an са естествени числа и v 1 ,.., vк са частни ф-ции съответно на m1 ,.., mк аргумента. Ако c (yаy, y vy) бb то съществуват крайни ф-ции hk } v 1 ,.., hк } vк за които c(yаy, yhy ) b. Нека c(Х1,..., Хn ,F1m1 ,, Fkmk ) е терм от тип Nat или условен терм.Тогава Гc е мепрекъснато изображение на F в Fn .
Денотационната семантика на програмата R с предаване на параметрите по ст/ст наричаме частичната ф-ция Dv (R) на n аргумента N, определена чрез равенството
Dv (R)( a1 ,.., an ) c0 (a1 ,.., an , v 1 ,.., vк ). Денотационната семантика е лишена от техническите детайли на операционната семантика.Тя е много по-мат. по своя характер .Неино основно предимство е че тя позволява да расъждаваме за свойствата на програмата R в термините на неподвижните точки и да прилагаме варианти на правилото за l-индукцията при верификацията на R. В този смисъл тази семантика е по подходяща за програмиста докато операционната семантика е по-подходяща за компютъра.
Нека c (Х1,..., Хn ,F1m1 ,, Fkmk ) е произволен терм.Нека с1 ,.., сn са константи и l= c (Х1 / с1 ,..., Хn / сn, F).Тогава при всеки избор на частичните ф-ции x1 Fm1 ,..., xk Fmк имаме c (с1 ,.., сn , x1 ,.., xk ) l (x1 ,.., xk).
Тагове от реферата: рекурсивнит, енотионна, програмнит, семаика, предане, програми











