view paper/src/agda-hoare-rule.agda.replaced @ 4:b5fffa8ae875

fix chapter hoare
author ryokka
date Wed, 29 Jan 2020 22:36:17 +0900
parents
children e8655e0264b8
line wrap: on
line source

data HTProof : Cond @$\rightarrow$@ Comm @$\rightarrow$@ Cond @$\rightarrow$@ Set where
  PrimRule : {bPre : Cond} @$\rightarrow$@ {pcm : PrimComm} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
             (pr : Axiom bPre pcm bPost) @$\rightarrow$@
             HTProof bPre (PComm pcm) bPost
  SkipRule : (b : Cond) @$\rightarrow$@ HTProof b Skip b
  AbortRule : (bPre : Cond) @$\rightarrow$@ (bPost : Cond) @$\rightarrow$@
              HTProof bPre Abort bPost
  WeakeningRule : {bPre : Cond} @$\rightarrow$@ {bPre' : Cond} @$\rightarrow$@ {cm : Comm} @$\rightarrow$@
                {bPost' : Cond} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
                Tautology bPre bPre' @$\rightarrow$@
                HTProof bPre' cm bPost' @$\rightarrow$@
                Tautology bPost' bPost @$\rightarrow$@
                HTProof bPre cm bPost
  SeqRule : {bPre : Cond} @$\rightarrow$@ {cm1 : Comm} @$\rightarrow$@ {bMid : Cond} @$\rightarrow$@
            {cm2 : Comm} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
            HTProof bPre cm1 bMid @$\rightarrow$@
            HTProof bMid cm2 bPost @$\rightarrow$@
            HTProof bPre (Seq cm1 cm2) bPost
  IfRule : {cmThen : Comm} @$\rightarrow$@ {cmElse : Comm} @$\rightarrow$@
           {bPre : Cond} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
           {b : Cond} @$\rightarrow$@
           HTProof (bPre /\ b) cmThen bPost @$\rightarrow$@
           HTProof (bPre /\ neg b) cmElse bPost @$\rightarrow$@
           HTProof bPre (If b cmThen cmElse) bPost
  WhileRule : {cm : Comm} @$\rightarrow$@ {bInv : Cond} @$\rightarrow$@ {b : Cond} @$\rightarrow$@
              HTProof (bInv /\ b) cm bInv @$\rightarrow$@
              HTProof bInv (While b cm) (bInv /\ neg b)