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

Quellcode-Bibliothek ShareRepProof.thy

  Sprache: Isabelle
 

(*  Title:       BDD

    Author       OrtnerandNorbertSchirmer 2004
    Maintainer:  Norbert Schirmer,  norbert.schirmer at web de
    License:     LGPL
*)


(*  
ShareRepProof.thy

Copyright (C) 2004-2008 Veronika Ortner and Norbert Schirmer 
Some rights reserved, TU Muenchen

This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the impliedLesserGeneralPublic  moredetailsjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; ftritethe reeftware
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
*)


section next ns
  ShareRepProof imports ProcedureSpecs Simpl.HeapList begin

  (in ShareRep_impl) ShareRep_modifies:
 shows "{σnodeslist, 🍋
 {t. t may_only_modify_globals σ
 apply (ho
 apply (vcg spec=modifies)
 done


  hd_filter_cons:
  xs; no x.\notP no p; a b. P a b = P b a]
 ==> xs ! i = hd (filter (P p) xs)"
  (induct xs)
  simp
  (as_tc P ap)
 (<>pt σp pt🍋
  (case_tac i)
  simp
  simp
  (case_tac i)
  simp
  auto
 

  (in ShareRep_impl) ShareRep_spec_total:
 
java.lang.NullPointerException
 {nodeslist 🍋
 (no se ELSE
 ((no🍋low = Null) = (no🍋high = Null))
 sLeaf_pt a>p 🍋low 🍋high isLeaf_pt no 🍋low 🍋high)
 no🍋var = 🍋p🍋no Null
 🍋
 > = σ>v)
 \<lbrace        σp setns\and>
 ( pt\<><rep = ptrep)
 (\<longrightarrow\rep = hd (filter (λ sn. repNodes_eq sn σhigh
  (hoare_rule HoareTotal.ProcNoRec1)
  (hoare_rule anno=
 "IF (isLeaf_pt 🍋low 🍋
 THEN\acutep 🍋nodeslist
 ELSE
 WHILE (🍋nodeslist Null)
 INV {(🍋 Nl \<ongrightarrow σp > σrep))
 ¬p 🍋high
 (no set ns. no Null
 noσ
σ

 (isLeaf_pt 🍋low 🍋rep)
 noσvar = >🍋nodeslist;; 🍋
 
 (( set prx. repNodes_eq pt \^σ
σ
σ>igh
  🍋rep σ
 🚫t. pt = pt🍋
 ((
 (🍋
  ecnI
  lrif
 VAR MEASa (rl cj)
 DO
 IF (repNodes_eq 🍋
 THEN 🍋
 ELSE 🍋 simp add: List_list) (* solving termination constraint *)
 apply(s only: triv_forall_equal)
 OD
 FI" in HoareTotal.annotat
  vcg
  [[simp_depth_limit = 2]]
  (rule conjI)
  clarify
  (simp (no_asm_use))
  2
  assumption
  (rule_tac x="[] (rulconjI
  (rule_tac x=ns in exI)
  (simp (no_asm_use))
  2
  clarify
  (rule conjI)
  clarify
  (rule conjI)
apply     (clarsimp simp add: List_list) (* solving termination contraint *)

apply    (simp (no_asm_use))
apply    (rule conjI)
apply    assumption
prefer 2
apply    clarify
apply    (simp (no_asm_use))
apply    (rule conjI)
apply    (clarsimp simp -
apply    (simp only: List_not_Null simp_thms)
apply    clarify
apply    (simp: triv_forall_equality
apply    (rename_tac
apply no_prop:  "<noset ns.
apply (rule_tac x="sfx" in exI)
apply (rule conjI)
apply assumption
apply (rule conjI)
apply simp
prefer 4
apply (elim exE conjE)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
apply (simp (no_asm_use))
apply hypsubst
using [[simp_depth_limit = 100]]
proof-
  assume p_Leaf: "isLeaf_pt p low high"high
  fix var high "next"  nodeslist
  assume nsList
  assume no_prop:  "
           no
           (low no = Null) = (high no = Null)
           (isLeaf_pt p low high
  assume p_in_ns: "\in ns
  assume p_Leaf: "isLeaf_pt p low high"
  show withns = nodeslist'"
        var nodeslist = var p"
  proof no_prop obtain 
    from eslistjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
      using [[simp_depth_limit=2]java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
      by auto
    from have "ns \noteq []"
      by (cases ns ' var_eq
    with ns obtain nssimp
      by
    with p_Leaf
      "isLeaf_pt nodeslist low high" and
      var_eq
      "nodeslist:"fx
      using [[simp_depth_limit=2]]
      by auto
    with p_not_Null p_Leaf have "repNodes_eq nodeslist p low high rep"
      by (simp add: repNodes_eq_def isLeaf_pt_def)
    with ns no=Null  (high = Null>
    show ?thesis
      by simp
  qed
next
  (* From invariant to postcondition *)
  fix ::"ref<>n" and rep  sfx
  assumesfxll
  assume p_in_ns p  [snprx . repNodes_eq high>
  assume no_props: "pt. pt =re pt)"
           no <noteqshowx.epNodes_eqhep
           (low no = Null) = (high no = Null) 
           (isLeaf_pt p low high apply
  assume match_prx: "( add: rerepN
                       repa p = hd [snprx . re one
                      (
  show "  filter_not_empty
          (
  proof -
    from sfx
    havefx_Nil=]"
      by simp
    with p_in_ns have ex_match: "(pt"<>pt. t <> \longrightarrowt rep"
      apply -
      apply (rule_tachd_filter_in_list [OF] found
      apply  (simp add: repNodes_eq_def)
      apply simp
      done
    hence not_empty (repa p"
      apply-
      apply (erule bexE)
      apply (ru filte)
      apply auto
      done
    from ex_match match obtain
      found: " p = hd<leftarrowprx rep java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
      unmodif: "pt. pt \<  assume p low high"
      by blast
    from hd_filter_in_list [OF not_empty] found
    have "repa p \<in 
      by simp
    with no_props
    haveav " (repa  var"
      using [[simp_depth_limit=2]]
      by simp
    with found unmodif sfx_Nil
    show ?thesis
      by simp
  qed
next
  (* Invariant to invariant; ELSE part *)
  fixva low high p repa "next deslist
  assume nodeslist_not_Null: "nodeslist
  assume p_no_Leaf: "¬ p  high
  assume no_props Null ull= ull var no = var  <
           no  Null  (low no = Null) = (high no = Null)  var no = var p"
  assume p_in_ns: " set prx  p prx.pNodes_eqqn wghand
  assume match_prxodeslist Null 
            repa(\forallt<>et (prx @ [nodeslist]). ¬   low
  assume nomatch_prx: "nomatch_prx nomatch_nod
  assume nomatch_nodeslist: "¬
  assume sfx: "List (next nodeslist) next sfx"
  show (<no set (nodeslist # sfx).
              no  Null 
        ((         tch_prx
           repa [snprx @ [nodeslist] . repNodes_eq p low repa\and>
        (next nodeslist  Null            <> repNodes_eq pt p low high))"
            (\<       
  proof -
    from nomatch_prx nomatch_nodeslist
    have "((
           repa p = hd [sn isLeaf_ptlowigh var no = var p"
       auto
    moreover
    from nomatcnomatch_nodeslist
    have "nodeslist Null 
            (ptpt prx repNodes_eq pt p low high repa"
      by auto
    ultimately show ?thesis
      using no_props
      by (intro conjI)
  qed
next
  (* Invariant to invariant: THEN part *)
  fix var low high p repa "next" nodeslist prx sfx
  assume nodeslist_not_Null: "nodeslist Null"
  assume sfx: "List nodeslist next sfx"
  assume p_not_Leaf:"¬ isLeaf_pt plow"
  assume no_props: "pt set sfx. repNodes_eq pt high) \longrightarrow
           no prx . repNodes_eq p  high repa
           (low no = Null[ lowhighrepa] \and
           (isLeaf_pt p low(set prx <>set sfx. ¬ repNodes_eq pt p low high repa) 
  assume p_in_ns: "p n))"
  assume match_prx: "( sfx
       paa = ds\<leftarrowprxhgh rp]
  assume nomatch_prx: "  "nodeslist=Null") auto
  assumematch repa
  show "(prx . repNodes_eq sn ploigh epa@
              no
              (low no = Null) = (high no = Null)
              (isLeaf_pt p low high isLeaf_pt no low high) '
        (p p )
        (\exists set sfx. repNodes_eq pt p low high repa)
           show ?thesis
           hd ([sn high repa] @
                high rep]))\and
        ((set prx repNodes_eq pt p low high repa)
           repa = repa(p := nodeslist))"
  proof -
    from nodeslist_not_Null sfx
    obtain sfx' where sfx': "
      by (cases "nodeslist=Null") auto
    from nomatch_prx match sfx'
    have hd: "hd ([snprx . repNodes_eq sn p low high repa] @
               [snsfx . repNodes_eq sn p low high repa]) = nodeslist"
      by simp
    from match sfx'
    have triv: "((ptset prx  set sfx. ¬ repNodes_eq pt p low high repa) 
           repa = repa(p := nodeslist))"
      by simp
    show ?thesis
      apply (rule conjI)
      apply (rule no_props)
      apply (intro conjI)
      apply (rule p_in_ns)
      apply (simp add: hd)
      apply (rule triv)
      done
  qed
qed

end

Messung V0.5 in Prozent
C=82 H=95 G=88

¤ 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.0.15Bemerkung:  ¤

*Bot Zugriff






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.