Mercurial > hg > Members > ryokka > HoareLogic
view whileTest.agda @ 0:6d2dc87aaa62
add Hoare.agda , whileTest.agda
author | ryokka |
---|---|
date | Thu, 13 Dec 2018 15:37:57 +0900 |
parents | |
children | ab73094377a2 |
line wrap: on
line source
module whileTest where open import Data.Nat open import Data.Bool record Env : Set where field varn : ℕ vari : ℕ open Env data PrimComm : Set where command : (Env → Env) → PrimComm -- seti : (v : ℕ) → PrimComm (record {varn = {!!} ; vari = {!!}} ) data Cond : Set where cond : (Env → Bool) → Cond open import Hoare Cond PrimComm {!!} {!!} {!!} Env {!!} {!!} {!!} {!!} {!!} {!!} {!!} program : Comm program = Seq ( PComm (command (λ env → record env {varn = 10}))) (Seq ( PComm (command (λ env → record env {vari = 0}))) (While (cond (λ env → {!!} )) (Seq (PComm (command (λ env → record env {vari = ((vari env) + 1)} ))) (PComm (command (λ env → record env {varn = ((varn env) + 1)} )))))) -- {#- TERMINATION -#} interpreter : Env → Comm → Env interpreter env Skip = env interpreter env Abort = env interpreter env (PComm (command x)) = x env interpreter env (Seq comm comm1) = interpreter (interpreter env comm) comm1 interpreter env (If (cond x) then else) with x env ... | true = interpreter env then ... | false = interpreter env else interpreter env (While (cond x) comm) with x env ... | true = interpreter (interpreter env comm) (While (cond x) comm) ... | false = env proof1 : HTProof {!!} program {!!} proof1 = {!!}