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

Benutzer

Quelle  BVSpec.thy

  Sprache: Isabelle
 

(*  Title:      JinjaThreads/BV/BVSpec.thy
    Author:     Cornelia Pusch, Gerwin Klein, Andreas Lochbihler

    Based on the theory Jinja/BV/BVSpec
*)


section The Bytecode Verifier \label{sec:BVSpec}

theory BVSpec
imports
  Effect
begin

text 
 This theory contains a specification of the BV. The specification
 describes correct typings of method bodies; it corresponds
 to type \emph{checking}.
 


 The method type only contains declared classes:
definition check_types :: "'m prog ==> nat ==> nat ==> tyi' err list ==> bool"
where  
  "check_types P mxs mxl τs set τs states P mxs mxl"

 An instruction is welltyped if it is applicable and its effect
 is compatible with the type at all successor instructions:
definition wt_instr :: "['m prog,ty,nat,pc,ex_table,'addr instr,pc,tym] ==> bool"
  (_,_,_,_,_ _,_ :: _ [60,0,0,0,0,0,0,6160)
where
  "P,T,mxs,mpc,xt i,pc :: τs
  app i P mxs T pc mpc xt (τs!pc)
  ((pc',τ') set (eff i P pc xt (τs!pc)). P τ' ' τs!pc')"

 The type at @{text "pc=0"} conforms to the method calling convention:
definition wt_start :: "['m prog,cname,ty list,nat,tym] ==> bool"
where
  "wt_start P C Ts mxl0 τs
  P Some ([],OK (Class C)#map OK Ts@replicate mxl0 Err) ' τs!0"

 A method is welltyped if the body is not empty,
 if the method type covers all instructions and mentions
 declared classes only, if the method calling convention is respected, and
 if all instructions are welltyped.
definition wt_method :: "['m prog,cname,ty list,ty,nat,nat,'addr instr list, ex_table,tym] ==> bool"
where
  "wt_method P C Ts Tr mxs mxl0 is xt τs
  0 < size is size τs = size is
  check_types P mxs (1+size Ts+mxl0) (map OK τs)
  wt_start P C Ts mxl0 τs
  (pc < size is. P,Tr,mxs,size is,xt is!pc,pc :: τs)"

 A program is welltyped if it is wellformed and all methods are welltyped
definition wf_jvm_prog_phi :: "tyP ==> 'addr jvm_prog ==> bool" (wf'_jvm'_prog)
where
  "wf_jvm_prog<Phi>
    wf_prog (λP C (M,Ts,Tr,(mxs,mxl0,is,xt)).
      wt_method P C Ts Tr mxs mxl0 is xt (Φ C M))"

definition wf_jvm_prog :: "'addr jvm_prog ==> bool"
where
  "wf_jvm_prog P Φ. wf_jvm_prog<Phi> P"

lemma wt_jvm_progD:
  "wf_jvm_prog<Phi> P ==> wt. wf_prog wt P"
(*<*) by (unfold wf_jvm_prog_phi_def, blast) (*>*)

lemma wt_jvm_prog_impl_wt_instr:
  "[ wf_jvm_prog<Phi> P;
      P C sees M:Ts T = (mxs,mxl0,ins,xt) in C; pc < size ins ]
  ==> P,T,mxs,size ins,xt ins!pc,pc :: Φ C M"
(*<*)
  apply (unfold wf_jvm_prog_phi_def)
  apply (drule (1) sees_wf_mdecl)
  apply (simp add: wf_mdecl_def wt_method_def)
  done
(*>*)

lemma wt_jvm_prog_impl_wt_start:
  "[ wf_jvm_prog<Phi> P;
     P C sees M:Ts T = (mxs,mxl0,ins,xt) in C ] ==>
  0 < size ins wt_start P C Ts mxl0 (Φ C M)"
(*<*)
  apply (unfold wf_jvm_prog_phi_def)
  apply (drule (1) sees_wf_mdecl)
  apply (simp add: wf_mdecl_def wt_method_def)
  done
(*>*)

end

Messung V0.5 in Prozent
C=80 H=100 G=90

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen



NIST Cobol Testsuite



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

Software

      Eigene Quellcodes
      Fremde Quellcodes
     Quellcodebibliothek
      Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge