(*
Title: Strong-Security
Authors: Sylvia Grewe, Alexander Lux, Heiko Mantel, Jens Sauer
*)
theory MWLf
imports Types
begin
― ‹SYNTAX›
― ‹Commands for the multi-threaded while language with fork (to instantiate 'com)›
datatype ('exp, 'id) MWLfCom
= Skip (‹skip›)
| Assign "'id" "'exp"
(‹_:=_› [70,70] 70)
| Seq "('exp, 'id) MWLfCom" "('exp, 'id) MWLfCom"
(‹_;_› [61,60] 60)
| If_Else "'exp" "('exp, 'id) MWLfCom" "('exp, 'id) MWLfCom"
(‹if _ then _ else _ fi› [80,79,79] 70)
| While_Do "'exp" "('exp, 'id) MWLfCom"
(‹while _ do _ od› [80,79] 70)
| Fork "('exp, 'id) MWLfCom" "(('exp, 'id) MWLfCom) list"
(‹fork _ _› [70,70] 70)
― ‹SEMANTICS›
locale MWLf_semantics =
fixes E :: "('exp, 'id, 'val) Evalfunction"
and BMap :: "'val → bool"
begin
― ‹steps semantics, set of deterministic steps from single threads to either single threads or thread pools›
inductive_set
MWLfSteps_det :: "('exp, 'id, 'val, ('exp, 'id) MWLfCom) TSteps"
and MWLfSteps_det' :: "('exp, 'id, 'val, ('exp, 'id) MWLfCom) TSteps_curry"
(‹(1⟨_,/_⟩) →/ (1⟨_,/_⟩)› [0,0,0,0] 81)
where
"⟨c1,m1⟩ → ⟨c2,m2⟩ ≡ ((c1,m1),(c2,m2)) ∈ MWLfSteps_det" |
skip: "⟨skip,m⟩ → ⟨[],m⟩" |
assign: "(E e m) = v ==> ⟨x := e,m⟩ → ⟨[],m(x := v)⟩" |
seq1: "⟨c1,m⟩ → ⟨[],m'⟩ ==> ⟨c1;c2,m⟩ → ⟨[c2],m'⟩" |
seq2: "⟨c1,m⟩ → ⟨c1'#V,m'⟩ ==> ⟨c1;c2,m⟩ → ⟨(c1';c2)#V,m'⟩" |
iftrue: "BMap (E b m) = True ==>
⟨if b then c1 else c2 fi,m⟩ → ⟨[c1],m⟩" |
iffalse: "BMap (E b m) = False ==>
⟨if b then c1 else c2 fi,m⟩ → ⟨[c2],m⟩" |
whiletrue: "BMap (E b m) = True ==>
⟨while b do c od,m⟩ → ⟨[c;(while b do c od)],m⟩" |
whilefalse: "BMap (E b m) = False ==>
⟨while b do c od,m⟩ → ⟨[],m⟩" |
fork: "⟨fork c V,m⟩ → ⟨c#V,m⟩"
inductive_cases MWLfSteps_det_cases:
"⟨skip,m⟩ → ⟨W,m'⟩"
"⟨x := e,m⟩ → ⟨W,m'⟩"
"⟨c1;c2,m⟩ → ⟨W,m'⟩"
"⟨if b then c1 else c2 fi,m⟩ → ⟨W,m'⟩"
"⟨while b do c od,m⟩ → ⟨W,m'⟩"
"⟨fork c V,m⟩ → ⟨W,m'⟩"
― ‹non-deterministic, possibilistic system step (added for intuition, not used in the proofs)›
inductive_set
MWLfSteps_ndet :: "('exp, 'id, 'val, ('exp,'id) MWLfCom) TPSteps"
and MWLfSteps_ndet' :: "('exp, 'id, 'val, ('exp,'id) MWLfCom) TPSteps_curry"
(‹(1⟨_,/_⟩) →/ (1⟨_,/_⟩)› [0,0,0,0] 81)
where
"⟨V1,m1⟩ → ⟨V2,m2⟩ ≡ ((V1,m1),(V2,m2)) ∈ MWLfSteps_ndet" |
"⟨ci,m⟩ → ⟨c,m'⟩ ==> ⟨Vf @ [ci] @ Va,m⟩ → ⟨Vf @ c @ Va,m'⟩"
end
end
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland
|
|