changeset 86:dc667b21c1b0

whileTestGears1 done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 29 Oct 2021 13:03:52 +0900
parents 07b183a726f6
children 908ed82e33c6
files utilities.agda whileTestGears.agda whileTestGears1.agda
diffstat 3 files changed, 15 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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))
--- 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