# HG changeset patch # User Shinji KONO # Date 1544794538 -32400 # Node ID e7d6bdb6039d8cef97552a5303fcb1ccdd358903 # Parent 28e80739eed6a61738df6bd0ef83fdc3f8be02f5 fix test1 diff -r 28e80739eed6 -r e7d6bdb6039d whileTestGears.agda --- a/whileTestGears.agda Fri Dec 14 22:06:24 2018 +0900 +++ b/whileTestGears.agda Fri Dec 14 22:35:38 2018 +0900 @@ -111,14 +111,7 @@ where env1 = record {varn = (varn env) - 1 ; vari = (vari env) + 1} proof3 : varn env1 + vari env1 ≡ 10 - proof3 = let open ≡-Reasoning in - begin - varn env1 + vari env1 - ≡⟨⟩ - (varn env - 1) + (vari env + 1) - ≡⟨ {!!} ⟩ - 10 - ∎ + proof3 = {!!} conversion1 : {l : Level} {t : Set l } → (env : Env) -> ((vari env) ≡ 0) ∧ ((varn env) ≡ 10) diff -r 28e80739eed6 -r e7d6bdb6039d whileTestPrim.agda --- a/whileTestPrim.agda Fri Dec 14 22:06:24 2018 +0900 +++ b/whileTestPrim.agda Fri Dec 14 22:35:38 2018 +0900 @@ -34,7 +34,7 @@ (suc x) - (suc y) = x - y lt : ℕ -> ℕ -> Bool -lt x y with (suc x ) ≤? y +lt x y with suc x ≤? y lt x y | yes p = true lt x y | no ¬p = false @@ -47,7 +47,7 @@ program = Seq ( PComm (λ env → record env {varn = 10})) $ Seq ( PComm (λ env → record env {vari = 0})) - $ While (λ env → lt (varn env ) zero ) + $ While (λ env → lt zero (varn env ) ) (Seq (PComm (λ env → record env {vari = ((vari env) + 1)} )) $ PComm (λ env → record env {varn = ((varn env) - 1)} )) @@ -72,6 +72,9 @@ test1 : Env test1 = interpret ( record { vari = 0 ; varn = 0 } ) program +tests : Env +tests = interpret ( record { vari = 0 ; varn = 0 } ) simple + empty-case : (env : Env) → (( λ e → true ) env ) ≡ true empty-case _ = refl @@ -161,8 +164,8 @@ $ SeqRule {λ e → Equal (varn e) 10} ( PrimRule lemma1 ) $ WeakeningRule {λ e → (Equal (varn e) 10) ∧ (Equal (vari e) 0)} lemma2 ( WhileRule {_} {λ e → Equal ((varn e) + (vari e)) 10} - $ SeqRule (PrimRule {λ e → whileInv e ∧ lt (varn e) zero } lemma3) - $ PrimRule {whileInv'} {_} {whileInv} lemma4 ) lemma5 + $ SeqRule (PrimRule {λ e → whileInv e ∧ lt zero (varn e) } lemma3 ) + $ PrimRule {whileInv'} {_} {whileInv} lemma4 ) lemma5 where lemma1 : Axiom stmt1Cond (λ env → record { varn = varn env ; vari = 0 }) stmt2Cond lemma1 env with stmt1Cond env @@ -174,11 +177,11 @@ lemma2 env | false | true = refl lemma2 env | true | true = refl lemma2 env | true | false = {!!} - lemma3 : Axiom (whileInv /\ (λ env → lt (varn env) zero)) (λ env → record { varn = varn env ; vari = vari env + 1 }) whileInv' + lemma3 : Axiom (λ e → whileInv e ∧ lt zero (varn e)) (λ env → record { varn = varn env ; vari = vari env + 1 }) whileInv' lemma3 = {!!} - lemma4 : Axiom whileInv' (λ env → record { varn = varn env - 1 ; vari = vari env }) whileInv + lemma4 : Axiom whileInv' (λ env → record { varn = varn env - 1 ; vari = vari env }) whileInv lemma4 = {!!} - lemma5 : Tautology (whileInv /\ neg (λ z → lt (varn z) zero)) termCond + lemma5 : Tautology ((λ e → Equal (varn e + vari e) 10) /\ neg (λ z → lt zero (varn z))) termCond lemma5 = {!!}