annotate src/whileLoopPSemSound.agda.replaced @ 1:73127e0ab57c

(none)
author soto@cr.ie.u-ryukyu.ac.jp
date Tue, 08 Sep 2020 18:38:08 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 loopPPSem : (input output : Envc ) @$\rightarrow$@ output @$\equiv$@ loopPP (varn input) input refl
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 @$\rightarrow$@ (whileTestStateP s2 input ) @$\rightarrow$@ (whileTestStateP s2 input ) implies (whileTestStateP sf output)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 loopPPSem input output refl s2p = loopPPSemInduct (varn input) input refl refl s2p
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 where
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 lem : (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc) @$\rightarrow$@ n + suc (vari env) @$\equiv$@ suc (n + vari env)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
6 lem n env = +-suc (n) (vari env)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 loopPPSemInduct : (n : @$\mathbb{N}$@) @$\rightarrow$@ (current : Envc) @$\rightarrow$@ (eq : n @$\equiv$@ varn current) @$\rightarrow$@ (loopeq : output @$\equiv$@ loopPP n current eq)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 @$\rightarrow$@ (whileTestStateP s2 current ) @$\rightarrow$@ (whileTestStateP s2 current ) implies (whileTestStateP sf output)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
9 loopPPSemInduct zero current refl loopeq refl rewrite loopeq = proof (@$\lambda$@ x @$\rightarrow$@ refl)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
10 loopPPSemInduct (suc n) current refl loopeq refl rewrite (sym (lem n current)) =
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
11 whileLoopPSem current refl
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 (@$\lambda$@ output x @$\rightarrow$@ loopPPSemInduct n (record { c10 = n + suc (vari current) ; varn = n ; vari = suc (vari current) }) refl loopeq refl)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 (@$\lambda$@ output x @$\rightarrow$@ loopPPSemInduct n (record { c10 = n + suc (vari current) ; varn = n ; vari = suc (vari current) }) refl loopeq refl)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
14
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
15
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
16 whileLoopPSemSound : {l : Level} @$\rightarrow$@ (input output : Envc )
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
17 @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 @$\rightarrow$@ output @$\equiv$@ loopPP (varn input) input refl
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input) implies (vari output @$\equiv$@ c10 output)
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 whileLoopPSemSound {l} input output pre eq = loopPPSem input output eq pre