Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  PDG.thy   Sprache: Isabelle

 

section ‹Example: Program Dependence Graphs›
text_raw ‹\label{sec:pdg}›

text ‹Program dependence graph (PDG) based slicing provides a very crude but direct approximation of
  characterisation. As such we can easily derive a corresponding correctness result.
›

theory PDG imports IFC
begin

context IFC 
begin

text ‹We utilise our established dependencies on program paths to define the PDG. Note that PDGs
  only contain immediate control dependencies instead of the transitive ones we use here.
  as slicing is considering reachability questions this does not affect the result.
›
inductive_set pdg where 
‹[i cdπ→ k] ==> (π k, π i) ∈ pdg› |
‹[i ddπ,v→ k] ==> (π k, π i) ∈ pdg›

text ‹The set of sources is the set of nodes reading high variables.›
inductive_set sources where
‹n ∈ nodes ==> h ∈ hvars ==> h ∈ reads n ==> n∈ sources›

text ‹The forward slice is the set of nodes reachable in the PDG from the set of sources. To ensure
  slicing aims to prove that no observable node is contained in the
›
inductive_set slice where
‹n∈ sources ==> n ∈ slice› |
‹m ∈ slice ==> (m,n)∈pdg ==> n ∈ slice›


text ‹As the PDG does not contain data control dependencies themselves we have to decompose these.›
lemma dcd_pdg: assumes ‹n dcdπ,v→ m via π' m'› obtains l where ‹(π m,l)∈ pdg› and ‹(l,π n)∈pdg›
proof -
  assume r: ‹(∧l. (π m, l) ∈ pdg ==> (l, π n) ∈ pdg ==> thesis)›
  obtain l' n' where ln: ‹csπ m = csπ' m' ∧ csπ n = csπ' n' ∧ n' ddπ',v→ l' ∧ l' cdπ'→ m'› using assms unfolding is_dcdi_via_def by metis
  hence  mn: ‹π' m' = π m ∧ π' n' = π n› by (metis last_cs ln) 
  have 1: ‹(π m, π' l') ∈ pdg› by (metis ln mn pdg.intros(1)) 
  have 2: ‹(π' l', π n) ∈ pdg› by (metis ln mn pdg.intros(2)) 
  show thesis using 1 2 r by auto
qed

text ‹By induction it directly follows that the slice is an approximation of the single critical paths.›
lemma scp_slice: ‹(π, i)∈ scp ==> π i ∈ slice›
  apply (induction rule: scp.induct)
     apply (simp add: path_in_nodes slice.intros(1) sources.intros)
    using pdg.intros(1) slice.intros(2) apply blast
  using pdg.intros(2) slice.intros(2) apply blast
  by (metis dcd_pdg slice.intros(2))

lemma scop_slice: ‹(π, i) ∈ scop ==> π i ∈ slice ∩ dom(att)›  by (metis IntI scop.cases scp_slice) 

text ‹The requirement targeted by slicing, that no observable node is contained in the slice,
  thereby a sound criteria for security.
›
lemma pdg_correct: assumes ‹slice ∩ dom(att) = {}› shows ‹secure›
proof (rule ccontr)
  assume ‹¬ secure›
  then obtain π i where ‹(π, i) ∈ scop› using scop_correct by force 
  thus ‹False› using scop_slice assms by auto 
qed

end

end

Messung V0.5 in Prozent
C=93 H=78 G=85

¤ Dauer der Verarbeitung: 0.8 Sekunden  (vorverarbeitet am  2026-09-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1867298