theory Procs_Dyn_Vars_Dyn imports Procs
begin
subsubsection "Dynamic Scoping of Procedures and Variables"
type_synonym penv = "pname \ com"
inductive
big_step :: "penv \ com \ state \ state \ bool" ("_ \ _ \ _" [60,0,60] 55)
where
Skip: "pe \ (SKIP,s) \ s" |
Assign: "pe \ (x ::= a,s) \ s(x := aval a s)" |
Seq: "\ pe \ (c\<^sub>1,s\<^sub>1) \ s\<^sub>2; pe \ (c\<^sub>2,s\<^sub>2) \ s\<^sub>3 \ \
pe \<turnstile> (c\<^sub>1;;c\<^sub>2, s\<^sub>1) \<Rightarrow> s\<^sub>3" |
IfTrue: "\ bval b s; pe \ (c\<^sub>1,s) \ t \ \
pe \<turnstile> (IF b THEN c\<^sub>1 ELSE c\<^sub>2, s) \<Rightarrow> t" |
IfFalse: "\ \bval b s; pe \ (c\<^sub>2,s) \ t \ \
pe \<turnstile> (IF b THEN c\<^sub>1 ELSE c\<^sub>2, s) \<Rightarrow> t" |
WhileFalse: "\bval b s \ pe \ (WHILE b DO c,s) \ s" |
WhileTrue:
"\ bval b s\<^sub>1; pe \ (c,s\<^sub>1) \ s\<^sub>2; pe \ (WHILE b DO c, s\<^sub>2) \ s\<^sub>3 \ \
pe \<turnstile> (WHILE b DO c, s\<^sub>1) \<Rightarrow> s\<^sub>3" |
Var: "pe \ (c,s) \ t \ pe \ ({VAR x; c}, s) \ t(x := s x)" |
Call: "pe \ (pe p, s) \ t \ pe \ (CALL p, s) \ t" |
Proc: "pe(p := cp) \ (c,s) \ t \ pe \ ({PROC p = cp; c}, s) \ t"
code_pred big_step .
values "{map t [''x'',''y''] |t. (\p. SKIP) \ (test_com, <>) \ t}"
end
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|