- SKIP_HALTS
-
|- !p. HALTS p MK_SKIP
- ASSIGN_HALTS
-
|- !p x f. HALTS p (MK_ASSIGN (x,f))
- SEQ_HALTS
-
|- !p c c' q.
HALTS p c /\ MK_SPEC (p,c,q) /\ HALTS q c' ==> HALTS p (MK_SEQ (c,c'))
- IF1_HALTS
-
|- !p c b. HALTS (\s. p s /\ b s) c ==> HALTS p (MK_IF1 (b,c))
- IF2_HALTS
-
|- !p c1 c2 b.
HALTS (\s. p s /\ b s) c1 /\ HALTS (\s. p s /\ ~(b s)) c2 ==>
HALTS p (MK_IF2 (b,c1,c2))
- PRE_STRENGTH_HALTS
-
|- !p p' c. (!s. p' s ==> p s) /\ HALTS p c ==> HALTS p' c
- SPEC_LEMMA1
-
|- (?x.
!n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) ==>
MK_SPEC ((\s. p s /\ b s),c,p)
- SEQ_LEMMA1
-
|- (!n. b (DEC_SEQ n s c b)) /\
MK_SPEC ((\s. p s /\ b s),c,p) /\
HALTS (\s. p s /\ b s) c /\
p s ==>
(!m. p (DEC_SEQ m s c b) /\ c (DEC_SEQ m s c b,DEC_SEQ (SUC m) s c b))
- SEQ_LEMMA2
-
|- (!n. b (DEC_SEQ n s c b)) /\
(?x. !n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) /\
HALTS (\s. p s /\ b s) c /\
p s ==>
(?x. !m. DEC_SEQ m s c b x > DEC_SEQ (SUC m) s c b x)
- WF_LEMMA
-
|- (!n. f n > f (SUC n)) ==> (!n m. f m > n)
- WF_THM
-
|- ~(?f. !n. f n > f (SUC n))
- SEQ_LEMMA3
-
|- (?x. !n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) /\
HALTS (\s. p s /\ b s) c /\
p s ==>
~(!n. b (DEC_SEQ n s c b))
- SEQ_LEMMA4
-
|- (?x. !n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) /\
HALTS (\s. p s /\ b s) c /\
p s ==>
(?n. ~(b (DEC_SEQ n s c b)))
- SEQ_LEMMA5
-
|- (?x. !n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) /\
HALTS (\s. p s /\ b s) c /\
p s ==>
(?n. ~(b (DEC_SEQ n s c b)) /\ (!m. m < n ==> b (DEC_SEQ m s c b)))
- SEQ_LEMMA6
-
|- !n. DEC_SEQ n (DEC_SEQ (SUC 0) s c b) c b = DEC_SEQ (SUC n) s c b
- SEQ_LEMMA7
-
|- MK_SPEC ((\s. p s /\ b s),c,p) /\ HALTS (\s. p s /\ b s) c ==>
(!n s.
p s /\ ~(b (DEC_SEQ n s c b)) /\ (!m. m < n ==> b (DEC_SEQ m s c b)) ==>
MK_FINITE_WHILE (SUC n) (b,c) (s,DEC_SEQ n s c b))
- WHILE_HALTS
-
|- !b c x.
(!n. MK_SPEC ((\s. p s /\ b s /\ (s x = n)),c,(\s. p s /\ s x < n))) /\
HALTS (\s. p s /\ b s) c ==>
HALTS p (MK_WHILE (b,c))