Семантика императивного языка While2 презентация

p ∈ Program B ∈ Block D ∈ Decl C ∈ Cmd е ∈ Exp bе ∈ BExp Синтаксические категории Абстрактный синтаксис языка While I ∈ Id x ∈ Var bx ∈ BVar op

Слайд 1Семантика императивного языка While


Слайд 2 p ∈ Program B ∈ Block D ∈ Decl C ∈ Cmd е ∈ Exp bе ∈ BExp


Синтаксические категории


Абстрактный синтаксис языка While

I ∈ Id x ∈ Var bx

∈ BVar op ∈ Op bop ∈ BOp n ∈ Num




Слайд 3Абстрактный синтаксис языка While

Определения
p ::= B
B ::= D ; C
D ::=

var x | bvar bx | procedure I:C | D’; D”
C ::= skip | x := e | C’ ; C” | I
| if be then C’ else C”
| while be do C’ | begin B end
e ::= x | n | e’ op e” | if be then e’ else e”
be::= bx | T | F | Not be’| Equal (e,e’) | be’ bop be”
op ::= + | - | * | div
bop ::= and | or


Слайд 4Естественная семантика языка While
Отношение «вычисляет» определяется утверждениями вида:
⇒ s’,
где С

– команда, s - состояние переменных.
Правила.
[ass] ⇒ s[x/A[e]s],
где A[e]s обозначает s├e⇒Av
[skip] < skip,s> ⇒ s.


Слайд 5 ⇒ s’, ⇒ s” [comp] ⇒ s”



Естественная

семантика языка While

Слайд 6 ⇒ s’ [ift] [B[be]s=T]

С2,s> ⇒ s’

<С2,s> ⇒ s’ [iff] [B[be]s=F] ⇒ s’ где B[be]s=bv обозначает s├be⇒Bbv



Естественная семантика языка While


Слайд 7 ⇒ s’ ⇒ s”

[whilet] [B[be]s=T] ⇒ s”

[whilef] [B[be]s=F] ⇒ s


Естественная семантика языка While


Слайд 8Реализация на Прологе 1
:-op(880,xfx,:=).
:-op(890,xfx,[then,else,do]).
:-op(900,fy,[if,while]).
:-op(910,xfy,>>).

test (y:=1 >> while x>0 do (y:= y*x

>> x:=x-1)).


Слайд 9АСД тестовой программы
>>
:=
while
y
1
do
x>0
>>
:=
:=
y
y*x
x
x-1
y:= 1 >> while x>0 do (y:= y*x >>

x:=x-1)


Слайд 10Реализация на Прологе 2

store(X,V,[],[X/V]) :- !.
store(X,V,[X/_|T],[X/V|T]) :- !.
store(X,V,[X1/V1|T],[X1/V1|Tn]) :-
store(X,V,T,Tn).


Слайд 11Реализация на Прологе 3

eval(X:=E,S,Sn) :-
arith(S,E,V),
store(X,V,S,Sn).

eval(skip,S,S).

eval(C1 >> C2,St0,St2) :-
eval(C1,St0,St1),

eval(C2,St1,St2).



Слайд 12Реализация на Прологе 4

eval(if B then C1 else _,St0,St1) :-
beval(St0,B,tt),!,

eval(C1,St0,St1).
eval(if _ then _ else C2,St0,St1) :-
eval(C2,St0,St1).

eval(while B do C, St0, St1) :-
beval(St0,B,tt),!,
eval(C >> (while B do C),St0,St1).
eval(while _ do _, St, St).


Слайд 13Семантическая эквивалентность команд
Команды C1 и C2 семантически эквивалентны, если для любых

двух состояний s и s’ справедливо: ⇒s’ ≡ ⇒s’
Докажем, что команды while be do C и if be then (C; while be do C) else skip семантически эквивалентны.

Слайд 14Доказательство
Часть 1 Докажем, что если ⇒ s” (1)

то и < if be then (C; while be do C) else skip, s> ⇒ s” (2)
из истинности посылки (1) следует, что для неё существует дерево вывода T. Корень этого дерева может иметь одну из двух форм, в зависимости от того, использовалось ли правило [whilet] или [whilef] .

Слайд 15Доказательство (продолжение)
В первом случае дерево T , будет иметь форму: T1

T2 ⇒ s” где T1 - дерево вывода с корнем ⇒ s’, а T2 - имеет корень ⇒ s” .
Более того B[b]s=T .


Слайд 16Доказательство (продолжение)
Использовав T1 и T2 как посылки правила [comp] получим дерево:

T1 T2 ⇒ s” Учитывая, что B[be]s=T можно применив правило [ift] получим дерево: T1 T2 ⇒ s” ⇒s” В нём получился вывод заключения (2)

Слайд 17Доказательство (продолжение)
Во втором случае, когда использовалось правило [whilef] и выполнялось условие

B[b]s=F, тогда s = s” . Дерево T будет иметь форму: ⇒ s Используя аксиому [skip] получим ⇒ s, а применив правило [iff] получим дерево вывода для (2): ⇒ s ⇒ s
В нём получился вывод заключения (2), если учесть, что s = s” .
Это завершает доказательство первой части.


Слайд 18Доказательство (продолжение)
Часть 2 Докажем импликацию в обратном порядке: если < if be

then (C; while be do C) else skip, s> ⇒ s” (2)
то и ⇒ s” (1) Для этого, имея дерево вывода T для (2), нужно построить дерево вывода для (1) . Для (2) дерево вывода могло быть построено только правилами [ift] или [iff].

Слайд 19Доказательство (продолжение)

В первом случае, когда B[be]s=T, вершина (2) получена из

вершины T1 = < C; while be do C, s> ⇒ s”, которая , в свою очередь как композиция операторов могла быть получена только по правилу [comp] . Значит к T1 ведут две ветви:
T2 = < C, s> ⇒ s’, T3 = < while be do C, s’> ⇒ s”. Теперь, если T2 и T3 в качестве посылок для правила [whilet] получим дерево вывода для (1).
Во втором случае, когда выполнялось условие B[b]s=F, дерево T будет строиться по правилу [iff] и, тогда получим ветвь для ⇒ s”. На основании аксиомы [skip] получим, что s = s” . Теперь, применив аксиому [whilef] получим дерево вывода для (1).

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика