view Paper/src/while_loop_verif/while_loop.agda.replaced @ 2:9176dff8f38a

ADD while loop description
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Fri, 05 Nov 2021 15:19:08 +0900
parents
children 339fb67b4375
line wrap: on
line source

{-@$\#$@ TERMINATING @$\#$@-}
whileLoop@$\prime$@ : {l : Level} {t : Set l} @$\rightarrow$@ (env : Env) @$\rightarrow$@ {c10 :  @$\mathbb{N}$@ } @$\rightarrow$@ ((varn env) + (vari env) @$\equiv$@ c10)
   @$\rightarrow$@ (Code : (e1 : Env )@$\rightarrow$@ vari e1 @$\equiv$@ c10 @$\rightarrow$@ t) @$\rightarrow$@ t
whileLoop@$\prime$@ env proof next with  ( suc zero  @$\leq$@? (varn  env) )
whileLoop@$\prime$@ env {c10} proof next | no p = next env ( begin
       vari env            @$\equiv$@@$\langle$@ refl @$\rangle$@
       0 + vari env        @$\equiv$@@$\langle$@ cong (@$\lambda$@ k @$\rightarrow$@ k + vari env) (sym (lemma1 p )) @$\rangle$@
       varn env + vari env @$\equiv$@@$\langle$@ proof @$\rangle$@
       c10 @$\blacksquare$@ ) where open @$\equiv$@-Reasoning  
whileLoop@$\prime$@ env {c10} proof next | yes p = whileLoop@$\prime$@ env1 (proof3 p ) next where
      env1 = record {varn = (varn  env) - 1 ; vari = (vari env) + 1}
      1<0 : 1 @$\leq$@ zero @$\rightarrow$@ @$\bot$@
      1<0 ()
      proof3 : (suc zero  @$\leq$@ (varn  env))  @$\rightarrow$@ varn env1 + vari env1 @$\equiv$@ c10
      proof3 (s@$\leq$@s lt) with varn  env
      proof3 (s@$\leq$@s z@$\leq$@n) | zero = @$\bot$@-elim (1<0 p)
      proof3 (s@$\leq$@s (z@$\leq$@n {n@$\prime$@}) ) | suc n =  let open @$\equiv$@-Reasoning  in begin
             n@$\prime$@ + (vari env + 1)  @$\equiv$@@$\langle$@ cong ( @$\lambda$@ z @$\rightarrow$@ n@$\prime$@ + z ) ( +-sym  {vari env} {1} )  @$\rangle$@
             n@$\prime$@ + (1 + vari env ) @$\equiv$@@$\langle$@ sym ( +-assoc (n@$\prime$@)  1 (vari env) ) @$\rangle$@
             (n@$\prime$@ + 1) + vari env  @$\equiv$@@$\langle$@ cong ( @$\lambda$@ z @$\rightarrow$@ z + vari env )  +1@$\equiv$@suc  @$\rangle$@
             (suc n@$\prime$@ ) + vari env @$\equiv$@@$\langle$@@$\rangle$@
             varn env + vari env  @$\equiv$@@$\langle$@ proof  @$\rangle$@
             c10
          @$\blacksquare$@