# HG changeset patch # User Shinji KONO # Date 1635480232 -32400 # Node ID dc667b21c1b0426461537cd91888b48ec3de0cd9 # Parent 07b183a726f67787a0face55a3055a84da3cb32a whileTestGears1 done diff -r 07b183a726f6 -r dc667b21c1b0 utilities.agda --- a/utilities.agda Sat Jul 18 10:32:43 2020 +0900 +++ b/utilities.agda Fri Oct 29 13:03:52 2021 +0900 @@ -4,7 +4,7 @@ open import Function open import Data.Nat open import Data.Product -open import Data.Bool hiding ( _≟_ ) -- ; _≤?_) +open import Data.Bool hiding ( _≟_ ; _≤?_) open import Level renaming ( suc to succ ; zero to Zero ) open import Relation.Nullary using (¬_; Dec; yes; no) open import Relation.Binary.PropositionalEquality diff -r 07b183a726f6 -r dc667b21c1b0 whileTestGears.agda --- a/whileTestGears.agda Sat Jul 18 10:32:43 2020 +0900 +++ b/whileTestGears.agda Fri Oct 29 13:03:52 2021 +0900 @@ -2,7 +2,7 @@ open import Function open import Data.Nat -open import Data.Bool hiding ( _≟_ ) -- ; _≤?_ ; _≤_ ; _<_) +open import Data.Bool hiding ( _≟_ ; _≤?_ ; _≤_ ; _<_) open import Data.Product open import Level renaming ( suc to succ ; zero to Zero ) open import Relation.Nullary using (¬_; Dec; yes; no) @@ -238,7 +238,7 @@ implies2p : {A B : Set } → A implies B → A → B implies2p (proof x) = x -whileTestPSem : (c : ℕ) → whileTestP c ( λ env → ⊤ implies (whileTestStateP s1 env) ) +bwhileTestPSem : (c : ℕ) → whileTestP c ( λ env → ⊤ implies (whileTestStateP s1 env) ) whileTestPSem c = proof ( λ _ → record { pi1 = refl ; pi2 = refl } ) SemGears : (f : {l : Level } {t : Set l } → (e0 : Envc ) → ((e : Envc) → t) → t ) → Set (succ Zero) @@ -292,6 +292,7 @@ whileLoopPSemSound {l} input output pre eq = loopPPSem input output eq pre - -- whileTestSound : {l : Level} (c : ℕ) → (output : Envc) → ⊤ → whileTestStateP sf output --- whileTestSound {l} c record { c10 = c10 ; varn = varn ; vari = vari } top = implies2p (whileLoopPSemSound {l} (record { c10 = c ; varn = c ; vari = zero }) (record { c10 = c10 ; varn = c ; vari = vari}) (+zero) {!!}) (implies2p (whileConvPSemSound {l} (record { c10 = c ; varn = c ; vari = zero })) (implies2p (whileTestPSemSound c (whileTestP c (λ e → e)) refl) top)) +-- whileTestSound {l} c record { c10 = c10 ; varn = varn ; vari = vari } top = +-- implies2p (whileLoopPSemSound {l} (record { c10 = c ; varn = c ; vari = zero }) (record { c10 = c10 ; varn = c ; vari = vari}) (+zero) {!!}) +-- (implies2p (whileConvPSemSound {l} (record { c10 = c ; varn = c ; vari = zero })) (implies2p (whileTestPSemSound c (whileTestP c (λ e → e)) refl) top)) diff -r 07b183a726f6 -r dc667b21c1b0 whileTestGears1.agda --- a/whileTestGears1.agda Sat Jul 18 10:32:43 2020 +0900 +++ b/whileTestGears1.agda Fri Oct 29 13:03:52 2021 +0900 @@ -2,7 +2,7 @@ open import Function open import Data.Nat -open import Data.Bool hiding ( _≟_ ) +open import Data.Bool hiding ( _≟_ ; _≤?_ ; _≤_) open import Level renaming ( suc to succ ; zero to Zero ) open import Relation.Nullary using (¬_; Dec; yes; no) open import Relation.Binary.PropositionalEquality @@ -54,9 +54,10 @@ {-# TERMINATING #-} -- ↓PreCondition(Invaliant) -whileLoop' : {l : Level} {t : Set l} -> (env : Env) -> {c10 : ℕ } → ((varn env) + (vari env) ≡ c10) -> (Code : Env -> t) -> t +whileLoop' : {l : Level} {t : Set l} -> (env : Env) -> {c10 : ℕ } → ((varn env) + (vari env) ≡ c10) + -> (Code : (e1 : Env )→ vari e1 ≡ c10 -> t) -> t whileLoop' env proof next with ( suc zero ≤? (varn env) ) -whileLoop' env proof next | no p = next env +whileLoop' env proof next | no p = next env {!!} whileLoop' env {c10} proof next | yes p = whileLoop' env1 (proof3 p ) next where env1 = record {varn = (varn env) - 1 ; vari = (vari env) + 1} @@ -97,17 +98,13 @@ c10 ∎ - -proofGears : {c10 : ℕ } → Set -proofGears {c10} = whileTest' {_} {_} {c10} (λ n p1 → conversion1 n p1 (λ n1 p2 → whileLoop' n1 p2 (λ n2 → ( vari n2 ≡ c10 )))) +open import Data.Unit -proofGearsMeta : {c10 : ℕ } → whileTest' {_} {_} {c10} (λ n p1 → conversion1 n p1 (λ n1 p2 → whileLoop' n1 p2 (λ n2 → ( vari n2 ≡ c10 )))) -proofGearsMeta {c10} = {!!} - +whileTestSpec1 : (c10 : ℕ) → (e1 : Env ) → vari e1 ≡ c10 → ⊤ +whileTestSpec1 _ _ x = tt - -whileTest0 : {l : Level} {t m : Set l} -> (c10 : ℕ) → (Code : m -> Env -> t) -> t -whileTest0 c10 next = next {!!} (record {varn = c10 ; vari = 0} ) +proofGears : {c10 : ℕ } → ⊤ +proofGears {c10} = whileTest' {_} {_} {c10} (λ n p1 → conversion1 n p1 (λ n1 p2 → whileLoop' n1 p2 (λ n2 p3 → whileTestSpec1 c10 n2 p3 ))) {-# TERMINATING #-} whileLoop0 : {l : Level} {t m : Set l} -> m -> Env -> (Code : m -> Env -> t) -> t