Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  Def_Init_Big.thy

  Sprache: Isabelle
 

(* Author: Tobias Nipkow *)

theory Def_Init_Big
imports Def_Init_Exp Def_Init
begin

subsection "Initialization-Sensitive Big Step Semantics"

inductive
  big_step :: "(com × state option) state option bool" (infix  55)
where
None: "(c,None) None" |
Skip: "(SKIP,s) s" |
AssignNone: "aval a s = None ==> (x ::= a, Some s) None" |
Assign: "aval a s = Some i ==> (x ::= a, Some s) Some(s(x := Some i))" |
Seq:    "(c1,s1) s2 ==> (c2,s2) s3 ==> (c1;;c2,s1) s3" |

IfNone:  "bval b s = None ==> (IF b THEN c1 ELSE c2,Some s) None" |
IfTrue:  "[ bval b s = Some True; (c1,Some s) s' ] ==>
  (IF b THEN c1 ELSE c2,Some s) s'" |
IfFalse: "[ bval b s = Some False; (c2,Some s) s' ] ==>
  (IF b THEN c1 ELSE c2,Some s) s'" |

WhileNone: "bval b s = None ==> (WHILE b DO c,Some s) None" |
WhileFalse: "bval b s = Some False ==> (WHILE b DO c,Some s) Some s" |
WhileTrue:
  "[ bval b s = Some True; (c,Some s) s'; (WHILE b DO c,s') s'' ] ==>
  (WHILE b DO c,Some s) s''"

lemmas big_step_induct = big_step.induct[split_format(complete)]


subsection "Soundness wrt Big Steps"

textNote the special form of the induction because one of the arguments
  the inductive predicate is not a variable but the term termSome s:


theorem Sound:
  "[ (c,Some s) s'; D A c A'; A dom s ]
  ==> t. s' = Some t A' dom t"
proof (induction c "Some s" s' arbitrary: s A A' rule:big_step_induct)
  case AssignNone thus ?case
    by auto (metis aval_Some option.simps(3) subset_trans)
next
  case Seq thus ?case by auto metis
next
  case IfTrue thus ?case by auto blast
next
  case IfFalse thus ?case by auto blast
next
  case IfNone thus ?case
    by auto (metis bval_Some option.simps(3) order_trans)
next
  case WhileNone thus ?case
    by auto (metis bval_Some option.simps(3) order_trans)
next
  case (WhileTrue b s c s' s'')
  from D A (WHILE b DO c) A' obtain A' where "D A c A'" by blast
  then obtain t' where "s' = Some t'" "A dom t'"
    by (metis D_incr WhileTrue(3,7) subset_trans)
  from WhileTrue(5)[OF this(1) WhileTrue(6) this(2)] show ?case .
qed auto

corollary sound: "[ D (dom s) c A'; (c,Some s) s' ] ==> s' None"
by (metis Sound not_Some_eq subset_refl)

end


Messung V0.5 in Prozent
C=92 H=100 G=95

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-06-30) ¤

*© 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

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik