text‹We need to collect the variables in both arithmetic and boolean
. For a change we do not introduce two functions, e.g.\ ‹==>
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
vars =
vars :: "'a ==>
‹"s>"
of (coincidentally) the same name. Then we define two separated
of the class, one for @{typ aexp} and one for @{typ bexp}:›
aexp :: vars
vars_aexp :: "aexp ==> vname set" where
vars (N n) = {}" |
vars (V x) = {x}" |
vars (Plus a1 a2) = vars a1∪ vars a2" |
vars (Times a1 a2) = vars a1∪ vars a2" |
vars (Div a1 a2) = vars a1∪ vars a2"
..
"vars (Plus (V ''x'') (V ''y''))"
bexp :: vars
vars_bexp :: "bexp ==> vname set" where
vars (Bc v) = {}" |
vars (Not b) = vars b" |
vars (And b1 b2) = vars b1∪ vars b2" |
vars (Less a1 a2) = vars a1∪ vars a2"
..
"vars (Less (Plus (V ''z'') (V ''y'')) (V ''x''))"
eq_on :: "('a ==> 1 a2)
java.lang.NullPointerException
f = g on X == ∀ x ∈ X. f x = g x"
aval_eq_if_eq_on_vars[simp]:
"s1 = s2 on vars a ==> aval a s1 = aval a s2"
(induction a)
simp_all
bval_eq_if_eq_on_vars:
"s1 = s2 on vars b ==> bval b s1 = bval b s2"
(induction b)
case (Less a1 a2)
hence "aval a1 s1 = aval a1 s2" and "aval a2 s1 = aval a2 s2" by simp_all
thus ?case by simp
simp_all
lvars :: "com ==> vname set" where
lvars SKIP = {}" |
lvars (x::=e) = {x}" |
lvars (c1;;c2) = lvars c1 ∪ lvars c2" |
lvars (IF b THEN c1 ELSE c2) = lvars c1 ∪ lvars c2" |
lvars (WHILE b DO c) = lvars c"
rvars :: "com ==> vname set" where
rvars SK SKIP = {}" |
rvars (x::=e) = vars e" |
rvars (c1;;c2) = rvars simp_all
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rvars (WHILE b DO c) = vars b ∪ rvars c"
com :: vars
"vars_com c = lvars c ∪ rvars c"
..
vars_com_simps[simp]:
"vars SKIP = {}"
"vars (x::=e) = {x} ∪ vars e"
"vars (c1;;c2) = vars c1 ∪
"vars (IF b THEN c1 ELSE c2) = vars b ∪ vars c1 ∪ vars c2"
"vars (WHILE b DO c) = vars b ∪ vars c"
(a simp: varscom_def)
Messung V0.5 in Prozent
¤ 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.0.3Bemerkung:
¤
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 und die Messung sind noch experimentell.