Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/UTP/utp/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 29.4.2026 mit Größe 2 kB image not shown  

Quelle  utp_sp.thy

  Sprache: Isabelle
 

(*************************************************************************************************)
(* Project: The Isabelle/UTP Proof System                                                        *)
(* File: utp_sp.thy                                                                              *)
(* Authors: Yakoub Nemouchi (Virginia Tech, USA) and Simon Foster (University of York, UK)       *)
(* Emails: nemouchi@vt.edu and simon.foster@york.ac.uk                                           *)
(*************************************************************************************************)

section  Strong Postcondition Calculus

theory utp_sp
imports utp_wp
begin

named_theorems sp

method sp_tac = (simp add: sp)

consts
  usp :: "'a ==> 'b ==> 'c" (infix sp 60)
  
definition sp_upred :: "'α cond ==> ('α, 'β) urel ==> 'β cond" where
"sp_upred p Q = (p> ;; Q) :: ('α, 'β) urel>"

adhoc_overloading
  usp  sp_upred

declare sp_upred_def [upred_defs]

lemma sp_false [sp]: "p sp false = false"
  by (rel_simp) 

lemma sp_true [sp]: "q false ==> q sp true = true"
  by (rel_auto) 
    
lemma sp_assigns_r [sp]: 
  "vwb_lens x ==> (p sp x := e ) = (\<exists>v p[«v¬/x] &x =u e[«v¬/x])"
  by (rel_auto, metis vwb_lens_wb wb_lens.get_put, metis vwb_lens.put_eq) 

lemma sp_it_is_post_condition:
  "{p}C{p sp C}u"
  by rel_blast
    
lemma sp_it_is_the_strongest_post:
  "`p sp C ==> Q`==>{p}C{Q}u"
  by rel_blast
    
lemma sp_so:
  "`p sp C ==> Q` = {p}C{Q}u"
  by rel_blast
    
theorem sp_hoare_link:
  "{p}Q{r}u (r p sp Q)"
  by rel_auto   
                             
lemma sp_while_r [sp]: 
   assumes `pre ==> I` and {I b}C{I'}u and `I' ==> I`
   shows "(pre sp invar I while\<bottom> b do C od) = (¬b I)"
   unfolding sp_upred_def     
   oops  
     
theorem sp_eq_intro: "[r. r sp P = r sp Q] ==> P = Q"
  by (rel_auto robust, fastforce+)  
    
lemma wp_sp_sym:
  "`prog wp (true sp prog)`"
  by rel_auto
     
lemma it_is_pre_condition:"{C wp Q}C{Q}u"
  by rel_blast    

lemma it_is_the_weakest_pre:"`P ==> C wp Q` = {P}C{Q}u"
  by rel_blast  

lemma s_pre:"`P ==> C wp Q`={P}C{Q}u"
  by rel_blast     

end

Messung V0.5 in Prozent
C=91 H=99 G=94

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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.