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 3 kB image not shown  

Quelle  utp_lift.thy

  Sprache: Isabelle
 

section  Lifting Expressions

theory utp_lift
  imports
    utp_alphabet
begin

subsection  Lifting definitions

text  We define operators for converting an expression to and from a relational state space
 with the help of alphabet extrusion and restriction. In general throughout Isabelle/UTP
 we adopt the notation $\lceil P \rceil$ with some subscript to denote lifting an expression
 into a larger alphabet, and $\lfloor P \rfloor$ for dropping into a smaller alphabet.

 The following two functions lift and drop an expression, respectively, whose alphabet is
 @{typ "'α"}, into a product alphabet @{typ "'α × 'β"}. This allows us to deal with expressions
 which refer only to undashed variables, and use the type-system to ensure this.


abbreviation lift_pre :: "('a, 'α) uexpr ==> ('a, 'α × 'β) uexpr" (_<)
where "P< P p fstL"

abbreviation drop_pre :: "('a, 'α × 'β) uexpr ==> ('a, 'α) uexpr" (_<)
where "P< P 🛇e fstL"

text  The following two functions lift and drop an expression, respectively, whose alphabet is
 @{typ "'β"}, into a product alphabet @{typ "'α × 'β"}. This allows us to deal with expressions
 which refer only to dashed variables.

  
abbreviation lift_post :: "('a, 'β) uexpr ==> ('a, 'α × 'β) uexpr" (_>)
where "P> P p sndL"

abbreviation drop_post :: "('a, 'α × 'β) uexpr ==> ('a, 'β) uexpr" (_>)
where "P> P 🛇e sndL"
  
subsection  Lifting Laws

text  With the help of our alphabet laws, we can prove some intuitive laws about alphabet
 lifting. For example, lifting variables yields an unprimed or primed relational variable
 expression, respectively.

  
lemma lift_pre_var [simp]:
  "var x< = $x"
  by (alpha_tac)

lemma lift_post_var [simp]:
  "var x> = $x🍋"
  by (alpha_tac)

subsection  Substitution Laws
    
lemma pre_var_subst [usubst]:
  "σ($x s «v¬) P< = σ P[«v¬/&x]<"
  by (pred_simp)
    
subsection  Unrestriction laws

text  Crucially, the lifting operators allow us to demonstrate unrestriction properties. For
 example, we can show that no primed variable is restricted in an expression over only the
 first element of the state-space product type.

  
lemma unrest_dash_var_pre [unrest]:
  fixes x :: "('a ==> 'α)"
  shows "$x🍋 p<"
  by (pred_auto)

end

Messung V0.5 in Prozent
C=68 H=82 G=75

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