comparison whileTestGears.agda @ 54:3adf50622101

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 20 Dec 2019 16:13:52 +0900
parents 03235251b3a7
children 1be7bb658cf0
comparison
equal deleted inserted replaced
53:03235251b3a7 54:3adf50622101
141 whileTestPwP : {l : Level} {t : Set l} → (c10 : ℕ) → ((env : Envc ) → whileTestStateP s1 env → t) → t 141 whileTestPwP : {l : Level} {t : Set l} → (c10 : ℕ) → ((env : Envc ) → whileTestStateP s1 env → t) → t
142 whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where 142 whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
143 env : Envc 143 env : Envc
144 env = whileTestP c10 ( λ env → env ) 144 env = whileTestP c10 ( λ env → env )
145 145
146 whileLoopPwP : {l : Level} {t : Set l} → Envc 146 whileLoopPwP : {l : Level} {t : Set l} → (env : Envc ) → whileTestStateP s2 env
147 → (next : (env : Envc ) → whileTestStateP s2 env → t) 147 → (next : (env : Envc ) → whileTestStateP s2 env → t)
148 → (exit : (env : Envc ) → whileTestStateP sf env → t) → t 148 → (exit : (env : Envc ) → whileTestStateP sf env → t) → t
149 whileLoopPwP env next exit with <-cmp 0 (varn env) 149 whileLoopPwP env s next exit with <-cmp 0 (varn env)
150 whileLoopPwP env next exit | tri≈ ¬a b ¬c = exit env {!!} 150 whileLoopPwP env s next exit | tri≈ ¬a b ¬c = exit env {!!}
151 whileLoopPwP env next exit | tri< a ¬b ¬c = 151 whileLoopPwP env s next exit | tri< a ¬b ¬c =
152 next (record env {varn = (varn env) - 1 ; vari = (vari env) + 1 }) {!!} 152 next (record env {varn = (varn env) - 1 ; vari = (vari env) + 1 }) {!!}
153 153
154 {-# TERMINATING #-} 154 {-# TERMINATING #-}
155 loopPwP : {l : Level} {t : Set l} → Envc → (exit : (env : Envc ) → whileTestStateP sf env → t) → t 155 loopPwP : {l : Level} {t : Set l} → (env : Envc ) → whileTestStateP s2 env → (exit : (env : Envc ) → whileTestStateP sf env → t) → t
156 loopPwP env exit = whileLoopPwP env (λ env s → loopPwP env exit ) exit 156 loopPwP env s exit = whileLoopPwP env s (λ env s → loopPwP env s exit ) exit
157 157
158 whileTestPCallwP : (c10 : ℕ ) → Set 158 whileTestPCallwP : (c : ℕ ) → Set
159 whileTestPCallwP c10 = whileTestPwP {_} {_} c10 (λ env → loopPwP env (λ env x x1 → vari env ≡ c10 )) 159 whileTestPCallwP c = whileTestPwP {_} {_} c ( λ env s → loopPwP env (conv env s) ( λ env s → vari env ≡ c ) ) where
160 conv : (env : Envc ) → (vari env ≡ 0) /\ (varn env ≡ c10 env) → varn env + vari env ≡ c10 env
161 conv = {!!}
160 162
161 163
162 164
163 165
164 166
165 167
166
167