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

Benutzer

Quelle  Weakening.thy

  Sprache: Isabelle
 

(* 
   Title: Psi-calculi   
   Author/Maintainer: Jesper Bengtson (jebe@itu.dk), 2012
*)

theory Weakening
  imports Weak_Bisimulation
begin

locale weak = env + 
  assumes weaken:  Ψ Ψ'"
begin

lemma entWeaken:
  fixes Ψ :: 'b
  and   φ :: 'c

  assumes  φ"

  shows  Ψ' φ"
using assms weaken
by(auto simp add: AssertionStatImp_def)

lemma assertWeaken:
  fixes Ψ  :: 'b
  and   Ψ' :: 'b

  shows  Ψ Ψ'"
by(auto simp add: AssertionStatImp_def entWeaken)

lemma frameWeaken:
  fixes F :: "'b frame"
  and   G :: "'b frame"

  shows "F F F F G"
proof -
  obtain AF ΨF where FrF: "F = AF, ΨF" and "AF * F" and  "AF * G"
    by(rule_tac F=F and C="(F, G)" in freshFrame) auto
  obtain AG ΨG where FrG: "G = AG, ΨG" and "AG * F" and  "AG * G" and "AG * AF" and "AG * ΨF"
    by(rule_tac F=G and C="(F, G, AF, ΨF)" in freshFrame) auto
  from FrG AF * G AG * AF have "AF * ΨG" by auto
  have F ΨF ΨG" by(rule weaken)
  hence "AG, ΨF F AG, ΨF ΨG" by(rule_tac frameImpResChainPres) auto
  with AG * ΨF have "ε, ΨF F AG, ΨF ΨG" using frameResFreshChain
    by(rule_tac FrameStatImpTrans) (auto simp add: FrameStatEq_def)
  with FrF FrG AG * AF AG * ΨF AF * ΨG show ?thesis
    by(force simp add: frameChainAppend intro: frameImpResChainPres)
qed

lemma unitAssertWeaken:
  fixes Ψ :: 'b

  shows "1 Ψ"
proof -
  have "1 1 Ψ" by(rule assertWeaken)
  moreover have "1 Ψ Ψ" by(metis Identity AssertionStatEq_def Commutativity AssertionStatEqTrans)
  ultimately show ?thesis by(rule AssertionStatImpTrans)
qed

lemma unitFrameWeaken:
  fixes F :: "'b frame"

  shows "ε, 1 F F"
proof -
  have "ε, 1 F ((ε, 1) F F)" by(rule frameWeaken)
  moreover obtain AF ΨF where FrF: "F = AF, ΨF"
    by(rule_tac F=F and C="()" in freshFrame) auto
  hence "(ε, 1) F F F F" 
    by simp (metis frameIntIdentity frameIntCommutativity FrameStatEqTrans FrameStatEqSym)
  ultimately show ?thesis by(metis FrameStatImpTrans FrameStatEq_def)
qed

lemma insertAssertionWeaken:
  fixes F :: "'b frame"
  and   Ψ :: 'b

  shows "ε, Ψ F insertAssertion F Ψ"
proof -
  have "ε, Ψ F (ε, Ψ) F F" by(rule frameWeaken)
  thus ?thesis by simp
qed

lemma frameImpStatEq:
  fixes AF  :: "name list"
  and   Ψ  :: 'b
  and   Ψ' :: 'b
  and   φ  :: 'c

  assumes "(AF, Ψ) F φ"
  and      Ψ'"

  shows "(AF, Ψ') F φ"
proof -
  obtain p::"name prm" where "(p AF) * φ" and "(p AF) * Ψ" and "(p AF) * Ψ'"
                         and "distinctPerm p" and S: "set p set AF × set(p AF)"
    by(rule_tac c="(φ, Ψ, Ψ')" in name_list_avoiding) auto
  from (AF, Ψ) F φ (p AF) * Ψhave "((p AF), p Ψ) F φ" by(simp add: frameChainAlpha)
  hence "(p Ψ) φ" using (p AF) * φ by(rule frameImpE)
  moreover from Ψ Ψ' have "(p Ψ) (p Ψ')" by(rule AssertionStatEqClosed)
  ultimately have "(p Ψ') φ" by(simp add: AssertionStatEq_def AssertionStatImp_def)
  hence "((p AF), p Ψ') F φ" using (p AF) * φ
    by(rule_tac frameImpI) auto
  with (p AF) * Ψ'show ?thesis by(simp add: frameChainAlpha)
qed

lemma statImpTauDerivative:
  fixes Ψ   :: 'b
  and   P    :: "('a, 'b, 'c) psi"
  and   P'   :: "('a, 'b, 'c) psi"

  assumes  P τ P'"

  shows "insertAssertion (extractFrame P) Ψ F insertAssertion (extractFrame P') Ψ"
proof(auto simp add: FrameStatImp_def)
  fix φ :: 'c
  obtain AP ΨP where FrP: "extractFrame P = AP, ΨP" and "AP * P" and "AP * φ" and "AP * Ψ" and "distinct AP" 
    by(rule_tac C="(P, φ, Ψ)" in freshFrame) auto
  with Ψ P τ P' obtain Ψ' AP' ΨPwhere FrP': "extractFrame P' = AP', ΨP'" and P Ψ' ΨP'" 
                                              and "AP' * P'" and "AP' * φ"  and "AP' * Ψ" 
    by(rule_tac C="(Ψ, φ)" in expandTauFrame) auto
  assume "insertAssertion (extractFrame P) Ψ F φ"
  with FrP AP * φ AP * Ψ have  ΨP φ" by(auto dest: frameImpE)
  hence "(Ψ ΨP) Ψ' φ" by(rule entWeaken)
  hence  ΨP' φ" using ΨP Ψ' ΨP'
    by(rule_tac statEqEnt, auto) (metis Associativity compositionSym AssertionStatEqTrans AssertionStatEqSym Commutativity)
  with AP' * φ AP' * Ψ FrP' show "insertAssertion (extractFrame P') Ψ F φ"
    by(force intro: frameImpI)
qed

lemma weakenTransition:
  fixes Ψ  :: 'b
  and   P  :: "('a, 'b, 'c) psi"
  and   Rs :: "('a, 'b, 'c) residual"
  and   Ψ' :: 'b

  assumes  P Rs"

  shows  Ψ' P Rs"
using assms
proof(nominal_induct avoiding: Ψ' rule: semantics.strong_induct)
  case(cInput Ψ M K xvec N Tvec P Ψ')
  from Ψ M K have  Ψ' M K" by(rule entWeaken)
  thus ?case using distinct xvec set xvec (supp N) length xvec = length Tvec
    by(rule Input)
next
  case(Output Ψ M K N P Ψ')
  from Ψ M K have  Ψ' M K" by(rule entWeaken)
  thus ?case by(rule semantics.Output)
next
  case(Case Ψ P Rs φ Cs Ψ')
  have  Ψ' P Rs" by(rule Case)
  moreover note (φ, P) mem Cs
  moreover from Ψ φ have  Ψ' φ" by(rule entWeaken)
  ultimately show ?case using guarded P
    by(rule semantics.Case)
next
  case(cPar1 Ψ ΨQ P α P' Q AQ Ψ')
  have "(Ψ ΨQ) Ψ' P α P'" by(rule cPar1)
  hence "(Ψ Ψ') ΨQ P α P'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  thus ?case using extractFrame Q = AQ, ΨQ bn α * Q AQ * Ψ AQ * Ψ' AQ * P AQ * α
    by(rule_tac Par1) auto
next
  case(cPar2 Ψ ΨP Q α Q' P AP Ψ')
  have "(Ψ ΨP) Ψ' Q α Q'" by(rule cPar2)
  hence "(Ψ Ψ') ΨP Q α Q'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  thus ?case using extractFrame P = AP, ΨP bn α * P AP * Ψ AP * Ψ' AP * Q AP * α
    by(rule_tac Par2) auto
next
  case(cComm1 Ψ ΨQ P M N P' AP ΨP Q K xvec Q' AQ Ψ')
  have "(Ψ ΨQ) Ψ' P M(N) P'" by(rule cComm1)
  hence "(Ψ Ψ') ΨQ P M(N) P'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  moreover note extractFrame P = AP, ΨP
  moreover have "(Ψ ΨP) Ψ' Q K(ν*xvec)N Q'" by(rule cComm1)
  hence "(Ψ Ψ') ΨP Q K(ν*xvec)N Q'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  moreover note extractFrame Q = AQ, ΨQ
  moreover from Ψ ΨP ΨQ M K have "(Ψ ΨP ΨQ) Ψ' M K" by(rule entWeaken)
  hence "(Ψ Ψ') ΨP ΨQ M K" by(metis statEqEnt Composition Associativity Commutativity AssertionStatEqTrans)
  ultimately show ?case using AP * Ψ AP * Ψ' AP * P AP * Q AP * M AP * AQ
                              AQ * Ψ AQ * Ψ' AQ * P AQ * Q AQ * K xvec * P
    by(rule_tac Comm1) (assumption | auto)+
next
  case(cComm2 Ψ ΨQ P M xvec N P' AP ΨP Q K Q' AQ Ψ')
  have "(Ψ ΨQ) Ψ' P M(ν*xvec)N P'" by(rule cComm2)
  hence "(Ψ Ψ') ΨQ P M(ν*xvec)N P'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  moreover note extractFrame P = AP, ΨP
  moreover have "(Ψ ΨP) Ψ' Q K(N) Q'" by(rule cComm2)
  hence "(Ψ Ψ') ΨP Q K(N) Q'"
    by(metis statEqTransition Composition Associativity Commutativity AssertionStatEqTrans)
  moreover note extractFrame Q = AQ, ΨQ
  moreover from Ψ ΨP ΨQ M K have "(Ψ ΨP ΨQ) Ψ' M K" by(rule entWeaken)
  hence "(Ψ Ψ') ΨP ΨQ M K" by(metis statEqEnt Composition Associativity Commutativity AssertionStatEqTrans)
  ultimately show ?case using AP * Ψ AP * Ψ' AP * P AP * Q AP * M AP * AQ
                              AQ * Ψ AQ * Ψ' AQ * P AQ * Q AQ * K xvec * Q
    by(rule_tac Comm2) (assumption | auto)+
next
  case(cOpen Ψ P M xvec yvec N P' x Ψ')
  have  Ψ' P M(ν*(xvec@yvec))N P'" by(rule cOpen)
  thus ?case using x supp N x Ψ x Ψ' x M x xvec x yvec
    by(rule_tac Open) auto
next  
  case(cScope Ψ P α P' x Ψ')
  have  Ψ' P α P'" by(rule cScope)
  thus ?case using x Ψ x Ψ' x α by(rule_tac Scope) auto
next
  case(Bang Ψ P Rs Ψ')
  have  Ψ' P !P Rs" by(rule Bang)
  thus ?case using guarded P by(rule semantics.Bang)
qed

end

end

Messung V0.5 in Prozent
C=64 H=95 G=80

¤ Dauer der Verarbeitung: 0.14 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