:: AOFA_I00 semantic presentation begin theorem Th1: :: AOFA_I00:1 for x, y, z, a, b, c being set st a <> b & b <> c & c <> a holds ex f being Function st ( f . a = x & f . b = y & f . c = z ) proof let x, y, z, a, b, c be set ; ::_thesis: ( a <> b & b <> c & c <> a implies ex f being Function st ( f . a = x & f . b = y & f . c = z ) ) assume that A1: a <> b and A2: b <> c and A3: c <> a ; ::_thesis: ex f being Function st ( f . a = x & f . b = y & f . c = z ) set fb = b .--> y; A4: dom (b .--> y) = {b} by FUNCOP_1:13; A5: a nin dom (b .--> y) by A1, TARSKI:def_1; A6: b in dom (b .--> y) by A4, TARSKI:def_1; set fc = c .--> z; set fa = a .--> x; take f = ((a .--> x) +* (b .--> y)) +* (c .--> z); ::_thesis: ( f . a = x & f . b = y & f . c = z ) A7: dom (c .--> z) = {c} by FUNCOP_1:13; a nin dom (c .--> z) by A3, TARSKI:def_1; hence f . a = ((a .--> x) +* (b .--> y)) . a by FUNCT_4:11 .= (a .--> x) . a by A5, FUNCT_4:11 .= x by FUNCOP_1:72 ; ::_thesis: ( f . b = y & f . c = z ) b nin dom (c .--> z) by A2, TARSKI:def_1; hence f . b = ((a .--> x) +* (b .--> y)) . b by FUNCT_4:11 .= (b .--> y) . b by A6, FUNCT_4:13 .= y by FUNCOP_1:72 ; ::_thesis: f . c = z c in dom (c .--> z) by A7, TARSKI:def_1; hence f . c = (c .--> z) . c by FUNCT_4:13 .= z by FUNCOP_1:72 ; ::_thesis: verum end; definition let F be non empty functional set ; let x, f be set ; funcF \ (x,f) -> Subset of F equals :: AOFA_I00:def 1 { g where g is Element of F : g . x <> f } ; coherence { g where g is Element of F : g . x <> f } is Subset of F proof set X = { g where g is Element of F : g . x <> f } ; { g where g is Element of F : g . x <> f } c= F proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in { g where g is Element of F : g . x <> f } or a in F ) assume a in { g where g is Element of F : g . x <> f } ; ::_thesis: a in F then ex g being Element of F st ( g = a & g . x <> f ) ; hence a in F ; ::_thesis: verum end; hence { g where g is Element of F : g . x <> f } is Subset of F ; ::_thesis: verum end; end; :: deftheorem defines \ AOFA_I00:def_1_:_ for F being non empty functional set for x, f being set holds F \ (x,f) = { g where g is Element of F : g . x <> f } ; theorem Th2: :: AOFA_I00:2 for F being non empty functional set for x, y being set for g being Element of F holds ( g in F \ (x,y) iff g . x <> y ) proof let F be non empty functional set ; ::_thesis: for x, y being set for g being Element of F holds ( g in F \ (x,y) iff g . x <> y ) let x, y be set ; ::_thesis: for g being Element of F holds ( g in F \ (x,y) iff g . x <> y ) let g be Element of F; ::_thesis: ( g in F \ (x,y) iff g . x <> y ) ( g in F \ (x,y) iff ex f being Element of F st ( g = f & f . x <> y ) ) ; hence ( g in F \ (x,y) iff g . x <> y ) ; ::_thesis: verum end; definition let X be set ; let Y, Z be set ; let f be Function of [:(Funcs (X,INT)),Y:],Z; mode Variable of f -> Element of X means :Def2: :: AOFA_I00:def 2 verum; existence ex b1 being Element of X st verum ; end; :: deftheorem Def2 defines Variable AOFA_I00:def_2_:_ for X, Y, Z being set for f being Function of [:(Funcs (X,INT)),Y:],Z for b5 being Element of X holds ( b5 is Variable of f iff verum ); notation let f be real-valued Function; let x be real number ; synonym f * x for x (#) f; end; definition let t1, t2 be INT -valued Function; funct1 div t2 -> INT -valued Function means :Def3: :: AOFA_I00:def 3 ( dom it = (dom t1) /\ (dom t2) & ( for s being set st s in dom it holds it . s = (t1 . s) div (t2 . s) ) ); correctness existence ex b1 being INT -valued Function st ( dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) div (t2 . s) ) ); uniqueness for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) div (t2 . s) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = (t1 . s) div (t2 . s) ) holds b1 = b2; proof deffunc H1( set ) -> set = (t1 . $1) div (t2 . $1); consider f being Function such that A1: ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in (dom t1) /\ (dom t2) holds f . x = H1(x) ) ) from FUNCT_1:sch_3(); f is INT -valued proof let y be set ; :: according to TARSKI:def_3,RELAT_1:def_19 ::_thesis: ( not y in proj2 f or y in INT ) assume y in rng f ; ::_thesis: y in INT then consider x being set such that A2: x in dom f and A3: f . x = y by FUNCT_1:def_3; f . x = H1(x) by A1, A2; hence y in INT by A3, INT_1:def_2; ::_thesis: verum end; hence ex f being INT -valued Function st ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in dom f holds f . x = H1(x) ) ) by A1; ::_thesis: for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) div (t2 . s) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = (t1 . s) div (t2 . s) ) holds b1 = b2 let f1, f2 be INT -valued Function; ::_thesis: ( dom f1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f1 holds f1 . s = (t1 . s) div (t2 . s) ) & dom f2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f2 holds f2 . s = (t1 . s) div (t2 . s) ) implies f1 = f2 ) assume that A4: dom f1 = (dom t1) /\ (dom t2) and A5: for s being set st s in dom f1 holds f1 . s = H1(s) and A6: dom f2 = (dom t1) /\ (dom t2) and A7: for s being set st s in dom f2 holds f2 . s = H1(s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_set_st_s_in_(dom_t1)_/\_(dom_t2)_holds_ f1_._s_=_f2_._s let s be set ; ::_thesis: ( s in (dom t1) /\ (dom t2) implies f1 . s = f2 . s ) assume A8: s in (dom t1) /\ (dom t2) ; ::_thesis: f1 . s = f2 . s hence f1 . s = H1(s) by A4, A5 .= f2 . s by A6, A7, A8 ; ::_thesis: verum end; hence f1 = f2 by A4, A6, FUNCT_1:2; ::_thesis: verum end; funct1 mod t2 -> INT -valued Function means :Def4: :: AOFA_I00:def 4 ( dom it = (dom t1) /\ (dom t2) & ( for s being set st s in dom it holds it . s = (t1 . s) mod (t2 . s) ) ); correctness existence ex b1 being INT -valued Function st ( dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) mod (t2 . s) ) ); uniqueness for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) mod (t2 . s) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = (t1 . s) mod (t2 . s) ) holds b1 = b2; proof deffunc H1( set ) -> set = (t1 . $1) mod (t2 . $1); consider f being Function such that A9: ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in (dom t1) /\ (dom t2) holds f . x = H1(x) ) ) from FUNCT_1:sch_3(); f is INT -valued proof let y be set ; :: according to TARSKI:def_3,RELAT_1:def_19 ::_thesis: ( not y in proj2 f or y in INT ) assume y in rng f ; ::_thesis: y in INT then consider x being set such that A10: x in dom f and A11: f . x = y by FUNCT_1:def_3; f . x = H1(x) by A9, A10; hence y in INT by A11, INT_1:def_2; ::_thesis: verum end; hence ex f being INT -valued Function st ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in dom f holds f . x = H1(x) ) ) by A9; ::_thesis: for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = (t1 . s) mod (t2 . s) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = (t1 . s) mod (t2 . s) ) holds b1 = b2 let f1, f2 be INT -valued Function; ::_thesis: ( dom f1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f1 holds f1 . s = (t1 . s) mod (t2 . s) ) & dom f2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f2 holds f2 . s = (t1 . s) mod (t2 . s) ) implies f1 = f2 ) assume that A12: dom f1 = (dom t1) /\ (dom t2) and A13: for s being set st s in dom f1 holds f1 . s = H1(s) and A14: dom f2 = (dom t1) /\ (dom t2) and A15: for s being set st s in dom f2 holds f2 . s = H1(s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_set_st_s_in_(dom_t1)_/\_(dom_t2)_holds_ f1_._s_=_f2_._s let s be set ; ::_thesis: ( s in (dom t1) /\ (dom t2) implies f1 . s = f2 . s ) assume A16: s in (dom t1) /\ (dom t2) ; ::_thesis: f1 . s = f2 . s hence f1 . s = H1(s) by A12, A13 .= f2 . s by A14, A15, A16 ; ::_thesis: verum end; hence f1 = f2 by A12, A14, FUNCT_1:2; ::_thesis: verum end; func leq (t1,t2) -> INT -valued Function means :Def5: :: AOFA_I00:def 5 ( dom it = (dom t1) /\ (dom t2) & ( for s being set st s in dom it holds it . s = IFGT ((t1 . s),(t2 . s),0,1) ) ); correctness existence ex b1 being INT -valued Function st ( dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),0,1) ) ); uniqueness for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),0,1) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFGT ((t1 . s),(t2 . s),0,1) ) holds b1 = b2; proof deffunc H1( set ) -> set = IFGT ((t1 . $1),(t2 . $1),0,1); consider f being Function such that A17: ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in (dom t1) /\ (dom t2) holds f . x = H1(x) ) ) from FUNCT_1:sch_3(); f is INT -valued proof let y be set ; :: according to TARSKI:def_3,RELAT_1:def_19 ::_thesis: ( not y in proj2 f or y in INT ) assume y in rng f ; ::_thesis: y in INT then consider x being set such that A18: x in dom f and A19: f . x = y by FUNCT_1:def_3; f . x = H1(x) by A17, A18; hence y in INT by A19, INT_1:def_2; ::_thesis: verum end; hence ex f being INT -valued Function st ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in dom f holds f . x = H1(x) ) ) by A17; ::_thesis: for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),0,1) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFGT ((t1 . s),(t2 . s),0,1) ) holds b1 = b2 let f1, f2 be INT -valued Function; ::_thesis: ( dom f1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f1 holds f1 . s = IFGT ((t1 . s),(t2 . s),0,1) ) & dom f2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f2 holds f2 . s = IFGT ((t1 . s),(t2 . s),0,1) ) implies f1 = f2 ) assume that A20: dom f1 = (dom t1) /\ (dom t2) and A21: for s being set st s in dom f1 holds f1 . s = H1(s) and A22: dom f2 = (dom t1) /\ (dom t2) and A23: for s being set st s in dom f2 holds f2 . s = H1(s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_set_st_s_in_(dom_t1)_/\_(dom_t2)_holds_ f1_._s_=_f2_._s let s be set ; ::_thesis: ( s in (dom t1) /\ (dom t2) implies f1 . s = f2 . s ) assume A24: s in (dom t1) /\ (dom t2) ; ::_thesis: f1 . s = f2 . s hence f1 . s = H1(s) by A20, A21 .= f2 . s by A22, A23, A24 ; ::_thesis: verum end; hence f1 = f2 by A20, A22, FUNCT_1:2; ::_thesis: verum end; func gt (t1,t2) -> INT -valued Function means :Def6: :: AOFA_I00:def 6 ( dom it = (dom t1) /\ (dom t2) & ( for s being set st s in dom it holds it . s = IFGT ((t1 . s),(t2 . s),1,0) ) ); correctness existence ex b1 being INT -valued Function st ( dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),1,0) ) ); uniqueness for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),1,0) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFGT ((t1 . s),(t2 . s),1,0) ) holds b1 = b2; proof deffunc H1( set ) -> set = IFGT ((t1 . $1),(t2 . $1),1,0); consider f being Function such that A25: ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in (dom t1) /\ (dom t2) holds f . x = H1(x) ) ) from FUNCT_1:sch_3(); f is INT -valued proof let y be set ; :: according to TARSKI:def_3,RELAT_1:def_19 ::_thesis: ( not y in proj2 f or y in INT ) assume y in rng f ; ::_thesis: y in INT then consider x being set such that A26: x in dom f and A27: f . x = y by FUNCT_1:def_3; f . x = H1(x) by A25, A26; hence y in INT by A27, INT_1:def_2; ::_thesis: verum end; hence ex f being INT -valued Function st ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in dom f holds f . x = H1(x) ) ) by A25; ::_thesis: for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFGT ((t1 . s),(t2 . s),1,0) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFGT ((t1 . s),(t2 . s),1,0) ) holds b1 = b2 let f1, f2 be INT -valued Function; ::_thesis: ( dom f1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f1 holds f1 . s = IFGT ((t1 . s),(t2 . s),1,0) ) & dom f2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f2 holds f2 . s = IFGT ((t1 . s),(t2 . s),1,0) ) implies f1 = f2 ) assume that A28: dom f1 = (dom t1) /\ (dom t2) and A29: for s being set st s in dom f1 holds f1 . s = H1(s) and A30: dom f2 = (dom t1) /\ (dom t2) and A31: for s being set st s in dom f2 holds f2 . s = H1(s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_set_st_s_in_(dom_t1)_/\_(dom_t2)_holds_ f1_._s_=_f2_._s let s be set ; ::_thesis: ( s in (dom t1) /\ (dom t2) implies f1 . s = f2 . s ) assume A32: s in (dom t1) /\ (dom t2) ; ::_thesis: f1 . s = f2 . s hence f1 . s = H1(s) by A28, A29 .= f2 . s by A30, A31, A32 ; ::_thesis: verum end; hence f1 = f2 by A28, A30, FUNCT_1:2; ::_thesis: verum end; func eq (t1,t2) -> INT -valued Function means :Def7: :: AOFA_I00:def 7 ( dom it = (dom t1) /\ (dom t2) & ( for s being set st s in dom it holds it . s = IFEQ ((t1 . s),(t2 . s),1,0) ) ); correctness existence ex b1 being INT -valued Function st ( dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) ); uniqueness for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) holds b1 = b2; proof deffunc H1( set ) -> Element of NAT = IFEQ ((t1 . $1),(t2 . $1),1,0); consider f being Function such that A33: ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in (dom t1) /\ (dom t2) holds f . x = H1(x) ) ) from FUNCT_1:sch_3(); f is INT -valued proof let y be set ; :: according to TARSKI:def_3,RELAT_1:def_19 ::_thesis: ( not y in proj2 f or y in INT ) assume y in rng f ; ::_thesis: y in INT then consider x being set such that A34: x in dom f and A35: f . x = y by FUNCT_1:def_3; f . x = H1(x) by A33, A34; hence y in INT by A35, INT_1:def_2; ::_thesis: verum end; hence ex f being INT -valued Function st ( dom f = (dom t1) /\ (dom t2) & ( for x being set st x in dom f holds f . x = H1(x) ) ) by A33; ::_thesis: for b1, b2 being INT -valued Function st dom b1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b1 holds b1 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) & dom b2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b2 holds b2 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) holds b1 = b2 let f1, f2 be INT -valued Function; ::_thesis: ( dom f1 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f1 holds f1 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) & dom f2 = (dom t1) /\ (dom t2) & ( for s being set st s in dom f2 holds f2 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) implies f1 = f2 ) assume that A36: dom f1 = (dom t1) /\ (dom t2) and A37: for s being set st s in dom f1 holds f1 . s = H1(s) and A38: dom f2 = (dom t1) /\ (dom t2) and A39: for s being set st s in dom f2 holds f2 . s = H1(s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_set_st_s_in_(dom_t1)_/\_(dom_t2)_holds_ f1_._s_=_f2_._s let s be set ; ::_thesis: ( s in (dom t1) /\ (dom t2) implies f1 . s = f2 . s ) assume A40: s in (dom t1) /\ (dom t2) ; ::_thesis: f1 . s = f2 . s hence f1 . s = H1(s) by A36, A37 .= f2 . s by A38, A39, A40 ; ::_thesis: verum end; hence f1 = f2 by A36, A38, FUNCT_1:2; ::_thesis: verum end; end; :: deftheorem Def3 defines div AOFA_I00:def_3_:_ for t1, t2, b3 being INT -valued Function holds ( b3 = t1 div t2 iff ( dom b3 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b3 holds b3 . s = (t1 . s) div (t2 . s) ) ) ); :: deftheorem Def4 defines mod AOFA_I00:def_4_:_ for t1, t2, b3 being INT -valued Function holds ( b3 = t1 mod t2 iff ( dom b3 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b3 holds b3 . s = (t1 . s) mod (t2 . s) ) ) ); :: deftheorem Def5 defines leq AOFA_I00:def_5_:_ for t1, t2, b3 being INT -valued Function holds ( b3 = leq (t1,t2) iff ( dom b3 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b3 holds b3 . s = IFGT ((t1 . s),(t2 . s),0,1) ) ) ); :: deftheorem Def6 defines gt AOFA_I00:def_6_:_ for t1, t2, b3 being INT -valued Function holds ( b3 = gt (t1,t2) iff ( dom b3 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b3 holds b3 . s = IFGT ((t1 . s),(t2 . s),1,0) ) ) ); :: deftheorem Def7 defines eq AOFA_I00:def_7_:_ for t1, t2, b3 being INT -valued Function holds ( b3 = eq (t1,t2) iff ( dom b3 = (dom t1) /\ (dom t2) & ( for s being set st s in dom b3 holds b3 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) ) ); definition let X be non empty set ; let f be Function of X,INT; let x be integer number ; :: original: + redefine funcf + x -> Function of X,INT means :Def8: :: AOFA_I00:def 8 for s being Element of X holds it . s = (f . s) + x; compatibility for b1 being Function of X,INT holds ( b1 = x + f iff for s being Element of X holds b1 . s = (f . s) + x ) proof let ti be Function of X,INT; ::_thesis: ( ti = x + f iff for s being Element of X holds ti . s = (f . s) + x ) A1: dom f = X by FUNCT_2:def_1; dom (f + x) = dom f by VALUED_1:def_2; hence ( ti = f + x implies for s being Element of X holds ti . s = (f . s) + x ) by A1, VALUED_1:def_2; ::_thesis: ( ( for s being Element of X holds ti . s = (f . s) + x ) implies ti = x + f ) A2: dom ti = X by FUNCT_2:def_1; assume for s being Element of X holds ti . s = (f . s) + x ; ::_thesis: ti = x + f then for s being set st s in X holds ti . s = x + (f . s) ; hence ti = x + f by A1, A2, VALUED_1:def_2; ::_thesis: verum end; coherence x + f is Function of X,INT proof x + f is Function of X,INT ; hence x + f is Function of X,INT ; ::_thesis: verum end; :: original: - redefine funcf - x -> Function of X,INT means :: AOFA_I00:def 9 for s being Element of X holds it . s = (f . s) - x; compatibility for b1 being Function of X,INT holds ( b1 = f - x iff for s being Element of X holds b1 . s = (f . s) - x ) proof let ti be Function of X,INT; ::_thesis: ( ti = f - x iff for s being Element of X holds ti . s = (f . s) - x ) A3: dom ti = X by FUNCT_2:def_1; A4: dom f = X by FUNCT_2:def_1; hence ( ti = f - x implies for s being Element of X holds ti . s = (f . s) - x ) by VALUED_1:3; ::_thesis: ( ( for s being Element of X holds ti . s = (f . s) - x ) implies ti = f - x ) assume A5: for s being Element of X holds ti . s = (f . s) - x ; ::_thesis: ti = f - x A6: now__::_thesis:_for_s_being_set_st_s_in_dom_ti_holds_ ti_._s_=_(f_-_x)_._s let s be set ; ::_thesis: ( s in dom ti implies ti . s = (f - x) . s ) assume A7: s in dom ti ; ::_thesis: ti . s = (f - x) . s hence ti . s = (f . s) - x by A5 .= (f - x) . s by A4, A7, VALUED_1:3 ; ::_thesis: verum end; dom (f - x) = dom f by VALUED_1:3; hence ti = f - x by A4, A3, A6, FUNCT_1:2; ::_thesis: verum end; coherence f - x is Function of X,INT proof thus f - x is Function of X,INT ; ::_thesis: verum end; :: original: * redefine funcf * x -> Function of X,INT means :Def10: :: AOFA_I00:def 10 for s being Element of X holds it . s = (f . s) * x; compatibility for b1 being Function of X,INT holds ( b1 = f * x iff for s being Element of X holds b1 . s = (f . s) * x ) proof let ti be Function of X,INT; ::_thesis: ( ti = f * x iff for s being Element of X holds ti . s = (f . s) * x ) A8: dom (f * x) = dom f by VALUED_1:def_5; A9: dom f = X by FUNCT_2:def_1; hence ( ti = f * x implies for s being Element of X holds ti . s = (f . s) * x ) by A8, VALUED_1:def_5; ::_thesis: ( ( for s being Element of X holds ti . s = (f . s) * x ) implies ti = f * x ) A10: dom ti = X by FUNCT_2:def_1; assume for s being Element of X holds ti . s = (f . s) * x ; ::_thesis: ti = f * x then for s being set st s in dom (f * x) holds ti . s = x * (f . s) ; hence ti = f * x by A8, A9, A10, VALUED_1:def_5; ::_thesis: verum end; coherence f * x is Function of X,INT proof x (#) f is Function of X,INT ; hence f * x is Function of X,INT ; ::_thesis: verum end; end; :: deftheorem Def8 defines + AOFA_I00:def_8_:_ for X being non empty set for f being Function of X,INT for x being integer number for b4 being Function of X,INT holds ( b4 = f + x iff for s being Element of X holds b4 . s = (f . s) + x ); :: deftheorem defines - AOFA_I00:def_9_:_ for X being non empty set for f being Function of X,INT for x being integer number for b4 being Function of X,INT holds ( b4 = f - x iff for s being Element of X holds b4 . s = (f . s) - x ); :: deftheorem Def10 defines * AOFA_I00:def_10_:_ for X being non empty set for f being Function of X,INT for x being integer number for b4 being Function of X,INT holds ( b4 = f * x iff for s being Element of X holds b4 . s = (f . s) * x ); definition let X be set ; let f, g be Function of X,INT; :: original: div redefine funcf div g -> Function of X,INT; coherence f div g is Function of X,INT proof A1: dom g = X by FUNCT_2:def_1; A2: dom (f div g) = (dom f) /\ (dom g) by Def3; A3: dom f = X by FUNCT_2:def_1; rng (f div g) c= INT ; hence f div g is Function of X,INT by A2, A3, A1, FUNCT_2:2; ::_thesis: verum end; :: original: mod redefine funcf mod g -> Function of X,INT; coherence f mod g is Function of X,INT proof A4: dom g = X by FUNCT_2:def_1; A5: dom (f mod g) = (dom f) /\ (dom g) by Def4; A6: dom f = X by FUNCT_2:def_1; rng (f mod g) c= INT ; hence f mod g is Function of X,INT by A5, A6, A4, FUNCT_2:2; ::_thesis: verum end; :: original: leq redefine func leq (f,g) -> Function of X,INT; coherence leq (f,g) is Function of X,INT proof A7: dom g = X by FUNCT_2:def_1; A8: dom (leq (f,g)) = (dom f) /\ (dom g) by Def5; A9: dom f = X by FUNCT_2:def_1; rng (leq (f,g)) c= INT ; hence leq (f,g) is Function of X,INT by A8, A9, A7, FUNCT_2:2; ::_thesis: verum end; :: original: gt redefine func gt (f,g) -> Function of X,INT; coherence gt (f,g) is Function of X,INT proof A10: dom g = X by FUNCT_2:def_1; A11: dom (gt (f,g)) = (dom f) /\ (dom g) by Def6; A12: dom f = X by FUNCT_2:def_1; rng (gt (f,g)) c= INT ; hence gt (f,g) is Function of X,INT by A11, A12, A10, FUNCT_2:2; ::_thesis: verum end; :: original: eq redefine func eq (f,g) -> Function of X,INT; coherence eq (f,g) is Function of X,INT proof A13: dom g = X by FUNCT_2:def_1; A14: dom (eq (f,g)) = (dom f) /\ (dom g) by Def7; A15: dom f = X by FUNCT_2:def_1; rng (eq (f,g)) c= INT ; hence eq (f,g) is Function of X,INT by A14, A15, A13, FUNCT_2:2; ::_thesis: verum end; end; definition let X be non empty set ; let t1, t2 be Function of X,INT; :: original: - redefine funct1 - t2 -> Function of X,INT means :Def11: :: AOFA_I00:def 11 for s being Element of X holds it . s = (t1 . s) - (t2 . s); compatibility for b1 being Function of X,INT holds ( b1 = t1 - t2 iff for s being Element of X holds b1 . s = (t1 . s) - (t2 . s) ) proof let ti be Function of X,INT; ::_thesis: ( ti = t1 - t2 iff for s being Element of X holds ti . s = (t1 . s) - (t2 . s) ) A1: dom t1 = X by FUNCT_2:def_1; thus ( ti = t1 - t2 implies for s being Element of X holds ti . s = (t1 . s) - (t2 . s) ) by VALUED_1:15; ::_thesis: ( ( for s being Element of X holds ti . s = (t1 . s) - (t2 . s) ) implies ti = t1 - t2 ) A2: dom ti = X by FUNCT_2:def_1; assume A3: for s being Element of X holds ti . s = (t1 . s) - (t2 . s) ; ::_thesis: ti = t1 - t2 A4: now__::_thesis:_for_s_being_set_st_s_in_X_holds_ ti_._s_=_(t1_-_t2)_._s let s be set ; ::_thesis: ( s in X implies ti . s = (t1 - t2) . s ) assume A5: s in X ; ::_thesis: ti . s = (t1 - t2) . s hence ti . s = (t1 . s) - (t2 . s) by A3 .= (t1 - t2) . s by A5, VALUED_1:15 ; ::_thesis: verum end; A6: dom t2 = X by FUNCT_2:def_1; dom (t1 - t2) = (dom t1) /\ (dom t2) by VALUED_1:12; hence ti = t1 - t2 by A1, A6, A2, A4, FUNCT_1:2; ::_thesis: verum end; coherence t1 - t2 is Function of X,INT proof thus t1 - t2 is Function of X,INT ; ::_thesis: verum end; :: original: + redefine funct1 + t2 -> Function of X,INT means :: AOFA_I00:def 12 for s being Element of X holds it . s = (t1 . s) + (t2 . s); compatibility for b1 being Function of X,INT holds ( b1 = t1 + t2 iff for s being Element of X holds b1 . s = (t1 . s) + (t2 . s) ) proof let ti be Function of X,INT; ::_thesis: ( ti = t1 + t2 iff for s being Element of X holds ti . s = (t1 . s) + (t2 . s) ) A7: dom t1 = X by FUNCT_2:def_1; A8: dom t2 = X by FUNCT_2:def_1; A9: dom (t1 + t2) = (dom t1) /\ (dom t2) by VALUED_1:def_1; hence ( ti = t1 + t2 implies for s being Element of X holds ti . s = (t1 . s) + (t2 . s) ) by A7, A8, VALUED_1:def_1; ::_thesis: ( ( for s being Element of X holds ti . s = (t1 . s) + (t2 . s) ) implies ti = t1 + t2 ) A10: dom ti = X by FUNCT_2:def_1; assume for s being Element of X holds ti . s = (t1 . s) + (t2 . s) ; ::_thesis: ti = t1 + t2 then for s being set st s in X holds ti . s = (t1 . s) + (t2 . s) ; hence ti = t1 + t2 by A9, A7, A8, A10, VALUED_1:def_1; ::_thesis: verum end; coherence t1 + t2 is Function of X,INT proof thus t1 + t2 is Function of X,INT ; ::_thesis: verum end; end; :: deftheorem Def11 defines - AOFA_I00:def_11_:_ for X being non empty set for t1, t2, b4 being Function of X,INT holds ( b4 = t1 - t2 iff for s being Element of X holds b4 . s = (t1 . s) - (t2 . s) ); :: deftheorem defines + AOFA_I00:def_12_:_ for X being non empty set for t1, t2, b4 being Function of X,INT holds ( b4 = t1 + t2 iff for s being Element of X holds b4 . s = (t1 . s) + (t2 . s) ); registration let A be non empty set ; let B be infinite set ; cluster Funcs (A,B) -> infinite ; coherence not Funcs (A,B) is finite proof A1: card (card B) = card B ; card A = card (card A) ; then A2: card (Funcs (A,B)) = exp ((card B),(card A)) by A1, FUNCT_5:61; set a = the Element of A; A3: card { the Element of A} = 1 by CARD_1:30; { the Element of A} c= A by ZFMISC_1:31; then 1 c= card A by A3, CARD_1:11; then exp ((card B),1) c= card (Funcs (A,B)) by A2, CARD_2:93; hence not Funcs (A,B) is finite by CARD_2:27; ::_thesis: verum end; end; definition let N be set ; let v, f be Function; funcv ** (f,N) -> Function means :Def13: :: AOFA_I00:def 13 ( ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom it iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom it holds it . g = v . (g * f) ) ); uniqueness for b1, b2 being Function st ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom b1 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom b1 holds b1 . g = v . (g * f) ) & ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom b2 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom b2 holds b2 . g = v . (g * f) ) holds b1 = b2 proof let F1, F2 be Function; ::_thesis: ( ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom F1 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom F1 holds F1 . g = v . (g * f) ) & ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom F2 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom F2 holds F2 . g = v . (g * f) ) implies F1 = F2 ) given Y1 being set such that A1: for y being set holds ( y in Y1 iff ex h being Function st ( h in dom v & y in rng h ) ) and A2: for a being set holds ( a in dom F1 iff ( a in Funcs (N,Y1) & ex g being Function st ( a = g & g * f in dom v ) ) ) ; ::_thesis: ( ex g being Function st ( g in dom F1 & not F1 . g = v . (g * f) ) or for Y being set holds ( ex y being set st ( ( y in Y implies ex h being Function st ( h in dom v & y in rng h ) ) implies ( ex h being Function st ( h in dom v & y in rng h ) & not y in Y ) ) or ex a being set st ( ( a in dom F2 implies ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) implies ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) & not a in dom F2 ) ) ) or ex g being Function st ( g in dom F2 & not F2 . g = v . (g * f) ) or F1 = F2 ) assume A3: for g being Function st g in dom F1 holds F1 . g = v . (g * f) ; ::_thesis: ( for Y being set holds ( ex y being set st ( ( y in Y implies ex h being Function st ( h in dom v & y in rng h ) ) implies ( ex h being Function st ( h in dom v & y in rng h ) & not y in Y ) ) or ex a being set st ( ( a in dom F2 implies ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) implies ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) & not a in dom F2 ) ) ) or ex g being Function st ( g in dom F2 & not F2 . g = v . (g * f) ) or F1 = F2 ) given Y2 being set such that A4: for y being set holds ( y in Y2 iff ex h being Function st ( h in dom v & y in rng h ) ) and A5: for a being set holds ( a in dom F2 iff ( a in Funcs (N,Y2) & ex g being Function st ( a = g & g * f in dom v ) ) ) ; ::_thesis: ( ex g being Function st ( g in dom F2 & not F2 . g = v . (g * f) ) or F1 = F2 ) now__::_thesis:_for_a_being_set_holds_ (_a_in_Y1_iff_a_in_Y2_) let a be set ; ::_thesis: ( a in Y1 iff a in Y2 ) ( a in Y1 iff ex h being Function st ( h in dom v & a in rng h ) ) by A1; hence ( a in Y1 iff a in Y2 ) by A4; ::_thesis: verum end; then A6: Y1 = Y2 by TARSKI:1; now__::_thesis:_for_a_being_set_holds_ (_a_in_dom_F1_iff_a_in_dom_F2_) let a be set ; ::_thesis: ( a in dom F1 iff a in dom F2 ) ( a in dom F1 iff ( a in Funcs (N,Y1) & ex g being Function st ( a = g & g * f in dom v ) ) ) by A2; hence ( a in dom F1 iff a in dom F2 ) by A5, A6; ::_thesis: verum end; then A7: dom F1 = dom F2 by TARSKI:1; assume A8: for g being Function st g in dom F2 holds F2 . g = v . (g * f) ; ::_thesis: F1 = F2 now__::_thesis:_for_a_being_set_st_a_in_dom_F1_holds_ F1_._a_=_F2_._a let a be set ; ::_thesis: ( a in dom F1 implies F1 . a = F2 . a ) assume A9: a in dom F1 ; ::_thesis: F1 . a = F2 . a then consider g being Function such that A10: a = g and g * f in dom v by A2; thus F1 . a = v . (g * f) by A3, A9, A10 .= F2 . a by A8, A7, A9, A10 ; ::_thesis: verum end; hence F1 = F2 by A7, FUNCT_1:2; ::_thesis: verum end; existence ex b1 being Function st ( ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom b1 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom b1 holds b1 . g = v . (g * f) ) ) proof defpred S1[ set , set ] means ex g being Function st ( g = $1 & $2 = v . (g * f) ); defpred S2[ set ] means ex g being Function st ( g = $1 & g * f in dom v ); defpred S3[ set , set ] means ex g being Function st ( $1 = g & $2 = rng g ); A11: for x, y, z being set st S3[x,y] & S3[x,z] holds y = z ; consider X being set such that A12: for x being set holds ( x in X iff ex y being set st ( y in dom v & S3[y,x] ) ) from TARSKI:sch_1(A11); set Y = union X; consider D being set such that A13: for x being set holds ( x in D iff ( x in Funcs (N,(union X)) & S2[x] ) ) from XBOOLE_0:sch_1(); A14: for x being set st x in D holds ex y being set st S1[x,y] proof let x be set ; ::_thesis: ( x in D implies ex y being set st S1[x,y] ) assume x in D ; ::_thesis: ex y being set st S1[x,y] then consider y being Function such that A15: y = x and y * f in dom v by A13; take v . (y * f) ; ::_thesis: S1[x,v . (y * f)] thus S1[x,v . (y * f)] by A15; ::_thesis: verum end; consider F being Function such that A16: ( dom F = D & ( for g being set st g in D holds S1[g,F . g] ) ) from CLASSES1:sch_1(A14); take F ; ::_thesis: ( ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom F iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom F holds F . g = v . (g * f) ) ) hereby ::_thesis: for g being Function st g in dom F holds F . g = v . (g * f) take Y = union X; ::_thesis: ( ( for y being set holds ( ( y in Y implies ex h being Function st ( h in dom v & y in rng h ) ) & ( ex h being Function st ( h in dom v & y in rng h ) implies y in Y ) ) ) & ( for a being set holds ( a in dom F iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) hereby ::_thesis: for a being set holds ( a in dom F iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) let y be set ; ::_thesis: ( ( y in Y implies ex h being Function st ( h in dom v & y in rng h ) ) & ( ex h being Function st ( h in dom v & y in rng h ) implies y in Y ) ) hereby ::_thesis: ( ex h being Function st ( h in dom v & y in rng h ) implies y in Y ) assume y in Y ; ::_thesis: ex h being Function st ( h in dom v & y in rng h ) then consider a being set such that A17: y in a and A18: a in X by TARSKI:def_4; ex z being set st ( z in dom v & S3[z,a] ) by A12, A18; hence ex h being Function st ( h in dom v & y in rng h ) by A17; ::_thesis: verum end; given h being Function such that A19: h in dom v and A20: y in rng h ; ::_thesis: y in Y rng h in X by A12, A19; hence y in Y by A20, TARSKI:def_4; ::_thesis: verum end; let a be set ; ::_thesis: ( a in dom F iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) thus ( a in dom F iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) by A13, A16; ::_thesis: verum end; let g be Function; ::_thesis: ( g in dom F implies F . g = v . (g * f) ) assume g in dom F ; ::_thesis: F . g = v . (g * f) then S1[g,F . g] by A16; hence F . g = v . (g * f) ; ::_thesis: verum end; end; :: deftheorem Def13 defines ** AOFA_I00:def_13_:_ for N being set for v, f, b4 being Function holds ( b4 = v ** (f,N) iff ( ex Y being set st ( ( for y being set holds ( y in Y iff ex h being Function st ( h in dom v & y in rng h ) ) ) & ( for a being set holds ( a in dom b4 iff ( a in Funcs (N,Y) & ex g being Function st ( a = g & g * f in dom v ) ) ) ) ) & ( for g being Function st g in dom b4 holds b4 . g = v . (g * f) ) ) ); definition let X, Y, Z, N be non empty set ; let v be Element of Funcs ((Funcs (X,Y)),Z); let f be Function of X,N; :: original: ** redefine funcv ** (f,N) -> Element of Funcs ((Funcs (N,Y)),Z); coherence v ** (f,N) is Element of Funcs ((Funcs (N,Y)),Z) proof consider Y0 being set such that A1: for y being set holds ( y in Y0 iff ex h being Function st ( h in dom v & y in rng h ) ) and A2: for a being set holds ( a in dom (v ** (f,N)) iff ( a in Funcs (N,Y0) & ex g being Function st ( a = g & g * f in dom v ) ) ) by Def13; A3: dom v = Funcs (X,Y) by FUNCT_2:def_1; A4: Y0 = Y proof thus Y0 c= Y :: according to XBOOLE_0:def_10 ::_thesis: Y c= Y0 proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in Y0 or y in Y ) assume y in Y0 ; ::_thesis: y in Y then consider h being Function such that A5: h in dom v and A6: y in rng h by A1; rng h c= Y by A5, FUNCT_2:92; hence y in Y by A6; ::_thesis: verum end; let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in Y or y in Y0 ) assume y in Y ; ::_thesis: y in Y0 then reconsider y = y as Element of Y ; reconsider h = X --> y as Function of X,Y ; A7: rng h = {y} by FUNCOP_1:8; A8: h in Funcs (X,Y) by FUNCT_2:8; y in {y} by TARSKI:def_1; hence y in Y0 by A3, A1, A7, A8; ::_thesis: verum end; A9: dom (v ** (f,N)) = Funcs (N,Y) proof thus dom (v ** (f,N)) c= Funcs (N,Y) :: according to XBOOLE_0:def_10 ::_thesis: Funcs (N,Y) c= dom (v ** (f,N)) proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in dom (v ** (f,N)) or a in Funcs (N,Y) ) thus ( not a in dom (v ** (f,N)) or a in Funcs (N,Y) ) by A2, A4; ::_thesis: verum end; let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in Funcs (N,Y) or a in dom (v ** (f,N)) ) assume A10: a in Funcs (N,Y) ; ::_thesis: a in dom (v ** (f,N)) then reconsider g = a as Function of N,Y by FUNCT_2:66; g * f in Funcs (X,Y) by FUNCT_2:8; hence a in dom (v ** (f,N)) by A3, A2, A4, A10; ::_thesis: verum end; rng (v ** (f,N)) c= Z proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in rng (v ** (f,N)) or a in Z ) assume a in rng (v ** (f,N)) ; ::_thesis: a in Z then consider g being set such that A11: g in dom (v ** (f,N)) and A12: a = (v ** (f,N)) . g by FUNCT_1:def_3; reconsider g = g as Element of Funcs (N,Y) by A9, A11; reconsider gf = g * f as Element of Funcs (X,Y) by FUNCT_2:8; a = v . gf by A11, A12, Def13; hence a in Z ; ::_thesis: verum end; hence v ** (f,N) is Element of Funcs ((Funcs (N,Y)),Z) by A9, FUNCT_2:def_2; ::_thesis: verum end; end; theorem Th3: :: AOFA_I00:3 for f1, f2, g being Function st rng g c= dom f2 holds (f1 +* f2) * g = f2 * g proof let f1, f2, g be Function; ::_thesis: ( rng g c= dom f2 implies (f1 +* f2) * g = f2 * g ) assume A1: rng g c= dom f2 ; ::_thesis: (f1 +* f2) * g = f2 * g A2: now__::_thesis:_for_x_being_set_st_x_in_dom_g_holds_ ((f1_+*_f2)_*_g)_._x_=_(f2_*_g)_._x let x be set ; ::_thesis: ( x in dom g implies ((f1 +* f2) * g) . x = (f2 * g) . x ) assume A3: x in dom g ; ::_thesis: ((f1 +* f2) * g) . x = (f2 * g) . x then A4: (f2 * g) . x = f2 . (g . x) by FUNCT_1:13; A5: g . x in rng g by A3, FUNCT_1:3; ((f1 +* f2) * g) . x = (f1 +* f2) . (g . x) by A3, FUNCT_1:13; hence ((f1 +* f2) * g) . x = (f2 * g) . x by A1, A4, A5, FUNCT_4:13; ::_thesis: verum end; dom (f1 +* f2) = (dom f1) \/ (dom f2) by FUNCT_4:def_1; then A6: dom ((f1 +* f2) * g) = dom g by A1, RELAT_1:27, XBOOLE_1:10; dom (f2 * g) = dom g by A1, RELAT_1:27; hence (f1 +* f2) * g = f2 * g by A6, A2, FUNCT_1:2; ::_thesis: verum end; theorem Th4: :: AOFA_I00:4 for X, N, I being non empty set for s being Function of X,I for c being Function of X,N st c is one-to-one holds for n being Element of I holds (N --> n) +* (s * (c ")) is Function of N,I proof let X, N, I be non empty set ; ::_thesis: for s being Function of X,I for c being Function of X,N st c is one-to-one holds for n being Element of I holds (N --> n) +* (s * (c ")) is Function of N,I let s be Function of X,I; ::_thesis: for c being Function of X,N st c is one-to-one holds for n being Element of I holds (N --> n) +* (s * (c ")) is Function of N,I let c be Function of X,N; ::_thesis: ( c is one-to-one implies for n being Element of I holds (N --> n) +* (s * (c ")) is Function of N,I ) assume c is one-to-one ; ::_thesis: for n being Element of I holds (N --> n) +* (s * (c ")) is Function of N,I then A1: dom (c ") = rng c by FUNCT_1:33; let n be Element of I; ::_thesis: (N --> n) +* (s * (c ")) is Function of N,I set f = N --> n; set g = s * (c "); A2: dom (s * (c ")) c= dom (c ") by RELAT_1:25; rng (s * (c ")) c= rng s by RELAT_1:26; then rng (s * (c ")) c= I by XBOOLE_1:1; then A3: (rng (N --> n)) \/ (rng (s * (c "))) c= I by XBOOLE_1:8; A4: dom (N --> n) = N by FUNCOP_1:13; A5: rng ((N --> n) +* (s * (c "))) c= (rng (N --> n)) \/ (rng (s * (c "))) by FUNCT_4:17; dom ((N --> n) +* (s * (c "))) = (dom (N --> n)) \/ (dom (s * (c "))) by FUNCT_4:def_1; then dom ((N --> n) +* (s * (c "))) = N by A2, A4, A1, XBOOLE_1:1, XBOOLE_1:12; hence (N --> n) +* (s * (c ")) is Function of N,I by A5, A3, FUNCT_2:2, XBOOLE_1:1; ::_thesis: verum end; theorem Th5: :: AOFA_I00:5 for N, X, I being non empty set for v1, v2 being Function st dom v1 = dom v2 & dom v1 = Funcs (X,I) holds for f being Function of X,N st f is one-to-one & v1 ** (f,N) = v2 ** (f,N) holds v1 = v2 proof let N, X, I be non empty set ; ::_thesis: for v1, v2 being Function st dom v1 = dom v2 & dom v1 = Funcs (X,I) holds for f being Function of X,N st f is one-to-one & v1 ** (f,N) = v2 ** (f,N) holds v1 = v2 let v1, v2 be Function; ::_thesis: ( dom v1 = dom v2 & dom v1 = Funcs (X,I) implies for f being Function of X,N st f is one-to-one & v1 ** (f,N) = v2 ** (f,N) holds v1 = v2 ) assume that A1: dom v1 = dom v2 and A2: dom v1 = Funcs (X,I) ; ::_thesis: for f being Function of X,N st f is one-to-one & v1 ** (f,N) = v2 ** (f,N) holds v1 = v2 reconsider rv1 = rng v1, rv2 = rng v2 as non empty set by A1, A2, RELAT_1:42; reconsider Z = rv1 \/ rv2 as non empty set ; A3: rng v2 c= Z by XBOOLE_1:7; rng v1 c= Z by XBOOLE_1:7; then reconsider f1 = v1, f2 = v2 as Element of Funcs ((Funcs (X,I)),Z) by A1, A2, A3, FUNCT_2:def_2; let f be Function of X,N; ::_thesis: ( f is one-to-one & v1 ** (f,N) = v2 ** (f,N) implies v1 = v2 ) assume that A4: f is one-to-one and A5: v1 ** (f,N) = v2 ** (f,N) ; ::_thesis: v1 = v2 A6: dom (f2 ** (f,N)) = Funcs (N,I) by FUNCT_2:def_1; A7: dom (f1 ** (f,N)) = Funcs (N,I) by FUNCT_2:def_1; now__::_thesis:_for_a_being_set_st_a_in_Funcs_(X,I)_holds_ v1_._a_=_v2_._a set i = the Element of I; let a be set ; ::_thesis: ( a in Funcs (X,I) implies v1 . a = v2 . a ) A8: dom f = X by FUNCT_2:def_1; assume a in Funcs (X,I) ; ::_thesis: v1 . a = v2 . a then reconsider h = a as Element of Funcs (X,I) ; set g = (N --> the Element of I) +* (h * (f ")); A9: dom h = X by FUNCT_2:def_1; rng (f ") = dom f by A4, FUNCT_1:33; then dom (h * (f ")) = dom (f ") by A9, RELAT_1:27 .= rng f by A4, FUNCT_1:33 ; then A10: ((N --> the Element of I) +* (h * (f "))) * f = (h * (f ")) * f by Th3 .= h * ((f ") * f) by RELAT_1:36 .= h * (id X) by A4, A8, FUNCT_1:39 .= a by A9, RELAT_1:52 ; (N --> the Element of I) +* (h * (f ")) is Function of N,I by A4, Th4; then A11: (N --> the Element of I) +* (h * (f ")) in Funcs (N,I) by FUNCT_2:8; then (v1 ** (f,N)) . ((N --> the Element of I) +* (h * (f "))) = v1 . a by A7, A10, Def13; hence v1 . a = v2 . a by A5, A6, A11, A10, Def13; ::_thesis: verum end; hence v1 = v2 by A1, A2, FUNCT_1:2; ::_thesis: verum end; registration let X be set ; cluster Relation-like X -defined card X -valued Function-like one-to-one quasi_total onto for Element of bool [:X,(card X):]; existence ex b1 being Function of X,(card X) st ( b1 is one-to-one & b1 is onto ) proof X, card X are_equipotent by CARD_1:def_2; then consider f being Function such that A1: f is one-to-one and A2: dom f = X and A3: rng f = card X by WELLORD2:def_4; reconsider f = f as Function of X,(card X) by A2, A3, FUNCT_2:2; take f ; ::_thesis: ( f is one-to-one & f is onto ) thus f is one-to-one by A1; ::_thesis: f is onto thus rng f = card X by A3; :: according to FUNCT_2:def_3 ::_thesis: verum end; cluster Relation-like card X -defined X -valued Function-like one-to-one quasi_total onto for Element of bool [:(card X),X:]; existence ex b1 being Function of (card X),X st ( b1 is one-to-one & b1 is onto ) proof X, card X are_equipotent by CARD_1:def_2; then consider f being Function such that A4: f is one-to-one and A5: dom f = card X and A6: rng f = X by WELLORD2:def_4; reconsider f = f as Function of (card X),X by A5, A6, FUNCT_2:2; take f ; ::_thesis: ( f is one-to-one & f is onto ) thus f is one-to-one by A4; ::_thesis: f is onto thus rng f = X by A6; :: according to FUNCT_2:def_3 ::_thesis: verum end; end; definition let X be set ; mode Enumeration of X is one-to-one onto Function of X,(card X); mode Denumeration of X is one-to-one onto Function of (card X),X; end; theorem Th6: :: AOFA_I00:6 for X being set for f being Function holds ( f is Enumeration of X iff ( dom f = X & rng f = card X & f is one-to-one ) ) proof let X be set ; ::_thesis: for f being Function holds ( f is Enumeration of X iff ( dom f = X & rng f = card X & f is one-to-one ) ) let f be Function; ::_thesis: ( f is Enumeration of X iff ( dom f = X & rng f = card X & f is one-to-one ) ) ( card X = {} implies X = {} ) ; hence ( f is Enumeration of X iff ( dom f = X & rng f = card X & f is one-to-one ) ) by FUNCT_2:2, FUNCT_2:def_1, FUNCT_2:def_3; ::_thesis: verum end; theorem Th7: :: AOFA_I00:7 for X being set for f being Function holds ( f is Denumeration of X iff ( dom f = card X & rng f = X & f is one-to-one ) ) proof let X be set ; ::_thesis: for f being Function holds ( f is Denumeration of X iff ( dom f = card X & rng f = X & f is one-to-one ) ) let f be Function; ::_thesis: ( f is Denumeration of X iff ( dom f = card X & rng f = X & f is one-to-one ) ) ( X = {} implies card X = {} ) ; hence ( f is Denumeration of X iff ( dom f = card X & rng f = X & f is one-to-one ) ) by FUNCT_2:2, FUNCT_2:def_1, FUNCT_2:def_3; ::_thesis: verum end; theorem Th8: :: AOFA_I00:8 for X being non empty set for x, y being Element of X for f being Enumeration of X holds (f +* (x,(f . y))) +* (y,(f . x)) is Enumeration of X proof let X be non empty set ; ::_thesis: for x, y being Element of X for f being Enumeration of X holds (f +* (x,(f . y))) +* (y,(f . x)) is Enumeration of X let x, y be Element of X; ::_thesis: for f being Enumeration of X holds (f +* (x,(f . y))) +* (y,(f . x)) is Enumeration of X let f be Enumeration of X; ::_thesis: (f +* (x,(f . y))) +* (y,(f . x)) is Enumeration of X set g = (f +* (x,(f . y))) +* (y,(f . x)); set A = dom ((f +* (x,(f . y))) +* (y,(f . x))); A1: dom (f +* (x,(f . y))) = dom f by FUNCT_7:30; A2: dom ((f +* (x,(f . y))) +* (y,(f . x))) = dom (f +* (x,(f . y))) by FUNCT_7:30; A3: dom f = X by Th6; A4: rng f = card X by Th6; A5: rng ((f +* (x,(f . y))) +* (y,(f . x))) = rng f proof {(f . x)} c= rng f by A4, ZFMISC_1:31; then A6: (rng f) \/ {(f . x)} = rng f by XBOOLE_1:12; A7: rng ((f +* (x,(f . y))) +* (y,(f . x))) c= (rng (f +* (x,(f . y)))) \/ {(f . x)} by FUNCT_7:100; {(f . y)} c= rng f by A4, ZFMISC_1:31; then (rng f) \/ {(f . y)} = rng f by XBOOLE_1:12; then (rng (f +* (x,(f . y)))) \/ {(f . x)} c= rng f by A6, FUNCT_7:100, XBOOLE_1:9; hence rng ((f +* (x,(f . y))) +* (y,(f . x))) c= rng f by A7, XBOOLE_1:1; :: according to XBOOLE_0:def_10 ::_thesis: rng f c= rng ((f +* (x,(f . y))) +* (y,(f . x))) let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng f or z in rng ((f +* (x,(f . y))) +* (y,(f . x))) ) assume z in rng f ; ::_thesis: z in rng ((f +* (x,(f . y))) +* (y,(f . x))) then consider a being set such that A8: a in dom f and A9: z = f . a by FUNCT_1:def_3; percases ( ( a <> x & a <> y ) or a = x or a = y ) ; supposeA10: ( a <> x & a <> y ) ; ::_thesis: z in rng ((f +* (x,(f . y))) +* (y,(f . x))) then A11: ((f +* (x,(f . y))) +* (y,(f . x))) . a = (f +* (x,(f . y))) . a by FUNCT_7:32; (f +* (x,(f . y))) . a = z by A9, A10, FUNCT_7:32; hence z in rng ((f +* (x,(f . y))) +* (y,(f . x))) by A1, A2, A8, A11, FUNCT_1:def_3; ::_thesis: verum end; suppose a = x ; ::_thesis: z in rng ((f +* (x,(f . y))) +* (y,(f . x))) then ((f +* (x,(f . y))) +* (y,(f . x))) . y = z by A1, A3, A9, FUNCT_7:31; hence z in rng ((f +* (x,(f . y))) +* (y,(f . x))) by A1, A2, A3, FUNCT_1:def_3; ::_thesis: verum end; supposeA12: a = y ; ::_thesis: z in rng ((f +* (x,(f . y))) +* (y,(f . x))) then A13: ( x <> y implies ((f +* (x,(f . y))) +* (y,(f . x))) . x = (f +* (x,z)) . x ) by A9, FUNCT_7:32; A14: (f +* (x,z)) . x = z by A3, FUNCT_7:31; ( x = y implies ((f +* (x,(f . y))) +* (y,(f . x))) . x = z ) by A1, A3, A9, A12, FUNCT_7:31; hence z in rng ((f +* (x,(f . y))) +* (y,(f . x))) by A1, A2, A3, A14, A13, FUNCT_1:def_3; ::_thesis: verum end; end; end; (f +* (x,(f . y))) +* (y,(f . x)) is one-to-one proof let a, b be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not a in proj1 ((f +* (x,(f . y))) +* (y,(f . x))) or not b in proj1 ((f +* (x,(f . y))) +* (y,(f . x))) or not ((f +* (x,(f . y))) +* (y,(f . x))) . a = ((f +* (x,(f . y))) +* (y,(f . x))) . b or a = b ) A15: ( a <> y implies ((f +* (x,(f . y))) +* (y,(f . x))) . a = (f +* (x,(f . y))) . a ) by FUNCT_7:32; A16: ( a <> x implies (f +* (x,(f . y))) . a = f . a ) by FUNCT_7:32; A17: ( b = y implies ((f +* (x,(f . y))) +* (y,(f . x))) . b = f . x ) by A1, A3, FUNCT_7:31; A18: ( b <> y implies ((f +* (x,(f . y))) +* (y,(f . x))) . b = (f +* (x,(f . y))) . b ) by FUNCT_7:32; A19: ( b = x implies (f +* (x,(f . y))) . b = f . y ) by A3, FUNCT_7:31; A20: ( a = x implies (f +* (x,(f . y))) . a = f . y ) by A3, FUNCT_7:31; A21: ( b <> x implies (f +* (x,(f . y))) . b = f . b ) by FUNCT_7:32; ( a = y implies ((f +* (x,(f . y))) +* (y,(f . x))) . a = f . x ) by A1, A3, FUNCT_7:31; hence ( not a in proj1 ((f +* (x,(f . y))) +* (y,(f . x))) or not b in proj1 ((f +* (x,(f . y))) +* (y,(f . x))) or not ((f +* (x,(f . y))) +* (y,(f . x))) . a = ((f +* (x,(f . y))) +* (y,(f . x))) . b or a = b ) by A2, A3, A15, A20, A16, A17, A18, A19, A21, FUNCT_1:def_4; ::_thesis: verum end; hence (f +* (x,(f . y))) +* (y,(f . x)) is Enumeration of X by A1, A2, A3, A4, A5, Th6; ::_thesis: verum end; theorem :: AOFA_I00:9 for X being non empty set for x being Element of X ex f being Enumeration of X st f . x = 0 proof let X be non empty set ; ::_thesis: for x being Element of X ex f being Enumeration of X st f . x = 0 let x be Element of X; ::_thesis: ex f being Enumeration of X st f . x = 0 set f = the Enumeration of X; A1: 0 in card X by ORDINAL3:8; A2: rng the Enumeration of X = card X by Th6; dom the Enumeration of X = X by Th6; then consider y being set such that A3: y in X and A4: 0 = the Enumeration of X . y by A1, A2, FUNCT_1:def_3; reconsider y = y as Element of X by A3; reconsider g = ( the Enumeration of X +* (y,( the Enumeration of X . x))) +* (x,0) as Enumeration of X by A4, Th8; take g ; ::_thesis: g . x = 0 dom the Enumeration of X = X by Th6; then dom ( the Enumeration of X +* (y,( the Enumeration of X . x))) = X by FUNCT_7:30; hence g . x = 0 by FUNCT_7:31; ::_thesis: verum end; theorem :: AOFA_I00:10 for X being non empty set for f being Denumeration of X holds f . 0 in X by FUNCT_2:5, ORDINAL3:8; theorem Th11: :: AOFA_I00:11 for X being countable set for f being Enumeration of X holds rng f c= NAT proof let X be countable set ; ::_thesis: for f being Enumeration of X holds rng f c= NAT let f be Enumeration of X; ::_thesis: rng f c= NAT card X c= NAT by CARD_3:def_14; hence rng f c= NAT by Th6; ::_thesis: verum end; definition let X be set ; let f be Enumeration of X; :: original: " redefine funcf " -> Denumeration of X; coherence f " is Denumeration of X proof rng f = card X by Th6; then A1: dom (f ") = card X by FUNCT_1:33; dom f = X by Th6; then rng (f ") = X by FUNCT_1:33; hence f " is Denumeration of X by A1, Th7; ::_thesis: verum end; end; definition let X be set ; let f be Denumeration of X; :: original: " redefine funcf " -> Enumeration of X; coherence f " is Enumeration of X proof rng f = X by Th7; then A1: dom (f ") = X by FUNCT_1:33; dom f = card X by Th7; then rng (f ") = card X by FUNCT_1:33; hence f " is Enumeration of X by A1, Th6; ::_thesis: verum end; end; theorem :: AOFA_I00:12 for n, m being Nat holds 0 to_power (n + m) = (0 to_power n) * (0 to_power m) proof let n, m be Nat; ::_thesis: 0 to_power (n + m) = (0 to_power n) * (0 to_power m) percases ( n > 0 or m > 0 or ( n = 0 & m = 0 ) ) ; supposeA1: ( n > 0 or m > 0 ) ; ::_thesis: 0 to_power (n + m) = (0 to_power n) * (0 to_power m) then ( 0 to_power n = 0 or 0 to_power m = 0 ) by POWER:def_2; hence 0 to_power (n + m) = (0 to_power n) * (0 to_power m) by A1, POWER:def_2; ::_thesis: verum end; supposeA2: ( n = 0 & m = 0 ) ; ::_thesis: 0 to_power (n + m) = (0 to_power n) * (0 to_power m) then 0 to_power (n + m) = 1 by POWER:24; hence 0 to_power (n + m) = (0 to_power n) * (0 to_power m) by A2; ::_thesis: verum end; end; end; theorem :: AOFA_I00:13 for x being real number for n, m being Nat holds (x to_power n) to_power m = x to_power (n * m) by NEWTON:9; begin definition let X be non empty set ; mode INT-Variable of X is Function of (Funcs (X,INT)),X; mode INT-Expression of X is Function of (Funcs (X,INT)),INT; mode INT-Array of X is Function of INT,X; end; definition let A be preIfWhileAlgebra; let I be Element of A; let X be non empty set ; let T be Subset of (Funcs (X,INT)); let f be ExecutionFunction of A, Funcs (X,INT),T; predI is_assignment_wrt A,X,f means :Def14: :: AOFA_I00:def 14 ( I in ElementaryInstructions A & ex v being INT-Variable of X ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ); end; :: deftheorem Def14 defines is_assignment_wrt AOFA_I00:def_14_:_ for A being preIfWhileAlgebra for I being Element of A for X being non empty set for T being Subset of (Funcs (X,INT)) for f being ExecutionFunction of A, Funcs (X,INT),T holds ( I is_assignment_wrt A,X,f iff ( I in ElementaryInstructions A & ex v being INT-Variable of X ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ); definition let A be preIfWhileAlgebra; let X be non empty set ; let T be Subset of (Funcs (X,INT)); let f be ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of X; let t be INT-Expression of X; predv,t form_assignment_wrt f means :Def15: :: AOFA_I00:def 15 ex I being Element of A st ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ); end; :: deftheorem Def15 defines form_assignment_wrt AOFA_I00:def_15_:_ for A being preIfWhileAlgebra for X being non empty set for T being Subset of (Funcs (X,INT)) for f being ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of X for t being INT-Expression of X holds ( v,t form_assignment_wrt f iff ex I being Element of A st ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) ); definition let A be preIfWhileAlgebra; let X be non empty set ; let T be Subset of (Funcs (X,INT)); let f be ExecutionFunction of A, Funcs (X,INT),T; assume B1: ex I being Element of A st I is_assignment_wrt A,X,f ; mode INT-Variable of A,f -> INT-Variable of X means :: AOFA_I00:def 16 ex t being INT-Expression of X st it,t form_assignment_wrt f; existence ex b1 being INT-Variable of X ex t being INT-Expression of X st b1,t form_assignment_wrt f proof consider I being Element of A such that A1: I is_assignment_wrt A,X,f by B1; consider v being INT-Variable of X, t being INT-Expression of X such that A2: for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) by A1, Def14; take v ; ::_thesis: ex t being INT-Expression of X st v,t form_assignment_wrt f take t ; ::_thesis: v,t form_assignment_wrt f take I ; :: according to AOFA_I00:def_15 ::_thesis: ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) thus ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) by A1, A2, Def14; ::_thesis: verum end; end; :: deftheorem defines INT-Variable AOFA_I00:def_16_:_ for A being preIfWhileAlgebra for X being non empty set for T being Subset of (Funcs (X,INT)) for f being ExecutionFunction of A, Funcs (X,INT),T st ex I being Element of A st I is_assignment_wrt A,X,f holds for b5 being INT-Variable of X holds ( b5 is INT-Variable of A,f iff ex t being INT-Expression of X st b5,t form_assignment_wrt f ); definition let A be preIfWhileAlgebra; let X be non empty set ; let T be Subset of (Funcs (X,INT)); let f be ExecutionFunction of A, Funcs (X,INT),T; assume B1: ex I being Element of A st I is_assignment_wrt A,X,f ; mode INT-Expression of A,f -> INT-Expression of X means :: AOFA_I00:def 17 ex v being INT-Variable of X st v,it form_assignment_wrt f; existence ex b1 being INT-Expression of X ex v being INT-Variable of X st v,b1 form_assignment_wrt f proof consider I being Element of A such that A1: I is_assignment_wrt A,X,f by B1; consider v being INT-Variable of X, t being INT-Expression of X such that A2: for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) by A1, Def14; take t ; ::_thesis: ex v being INT-Variable of X st v,t form_assignment_wrt f take v ; ::_thesis: v,t form_assignment_wrt f take I ; :: according to AOFA_I00:def_15 ::_thesis: ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) thus ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) by A1, A2, Def14; ::_thesis: verum end; end; :: deftheorem defines INT-Expression AOFA_I00:def_17_:_ for A being preIfWhileAlgebra for X being non empty set for T being Subset of (Funcs (X,INT)) for f being ExecutionFunction of A, Funcs (X,INT),T st ex I being Element of A st I is_assignment_wrt A,X,f holds for b5 being INT-Expression of X holds ( b5 is INT-Expression of A,f iff ex v being INT-Variable of X st v,b5 form_assignment_wrt f ); definition let X, Y be non empty set ; let f be Element of Funcs (X,Y); let x be Element of X; :: original: . redefine funcf . x -> Element of Y; coherence f . x is Element of Y proof f . x in rng f by FUNCT_2:4; hence f . x is Element of Y ; ::_thesis: verum end; end; definition let X be non empty set ; let x be Element of X; func . x -> INT-Expression of X means :Def18: :: AOFA_I00:def 18 for s being Element of Funcs (X,INT) holds it . s = s . x; correctness existence ex b1 being INT-Expression of X st for s being Element of Funcs (X,INT) holds b1 . s = s . x; uniqueness for b1, b2 being INT-Expression of X st ( for s being Element of Funcs (X,INT) holds b1 . s = s . x ) & ( for s being Element of Funcs (X,INT) holds b2 . s = s . x ) holds b1 = b2; proof deffunc H1( Element of Funcs (X,INT)) -> Element of INT = $1 . x; thus ex f being Function of (Funcs (X,INT)),INT st for x being Element of Funcs (X,INT) holds f . x = H1(x) from FUNCT_2:sch_4(); ::_thesis: for b1, b2 being INT-Expression of X st ( for s being Element of Funcs (X,INT) holds b1 . s = s . x ) & ( for s being Element of Funcs (X,INT) holds b2 . s = s . x ) holds b1 = b2 let f1, f2 be INT-Expression of X; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds f1 . s = s . x ) & ( for s being Element of Funcs (X,INT) holds f2 . s = s . x ) implies f1 = f2 ) assume that A1: for s being Element of Funcs (X,INT) holds f1 . s = s . x and A2: for s being Element of Funcs (X,INT) holds f2 . s = s . x ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_f1_._s_=_f2_._s let s be Element of Funcs (X,INT); ::_thesis: f1 . s = f2 . s thus f1 . s = s . x by A1 .= f2 . s by A2 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; end; :: deftheorem Def18 defines . AOFA_I00:def_18_:_ for X being non empty set for x being Element of X for b3 being INT-Expression of X holds ( b3 = . x iff for s being Element of Funcs (X,INT) holds b3 . s = s . x ); definition let X be non empty set ; let v be INT-Variable of X; func . v -> INT-Expression of X means :Def19: :: AOFA_I00:def 19 for s being Element of Funcs (X,INT) holds it . s = s . (v . s); correctness existence ex b1 being INT-Expression of X st for s being Element of Funcs (X,INT) holds b1 . s = s . (v . s); uniqueness for b1, b2 being INT-Expression of X st ( for s being Element of Funcs (X,INT) holds b1 . s = s . (v . s) ) & ( for s being Element of Funcs (X,INT) holds b2 . s = s . (v . s) ) holds b1 = b2; proof deffunc H1( Element of Funcs (X,INT)) -> Element of INT = $1 . (v . $1); thus ex f being Function of (Funcs (X,INT)),INT st for x being Element of Funcs (X,INT) holds f . x = H1(x) from FUNCT_2:sch_4(); ::_thesis: for b1, b2 being INT-Expression of X st ( for s being Element of Funcs (X,INT) holds b1 . s = s . (v . s) ) & ( for s being Element of Funcs (X,INT) holds b2 . s = s . (v . s) ) holds b1 = b2 let f1, f2 be INT-Expression of X; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds f1 . s = s . (v . s) ) & ( for s being Element of Funcs (X,INT) holds f2 . s = s . (v . s) ) implies f1 = f2 ) assume that A1: for s being Element of Funcs (X,INT) holds f1 . s = s . (v . s) and A2: for s being Element of Funcs (X,INT) holds f2 . s = s . (v . s) ; ::_thesis: f1 = f2 now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_f1_._s_=_f2_._s let s be Element of Funcs (X,INT); ::_thesis: f1 . s = f2 . s thus f1 . s = s . (v . s) by A1 .= f2 . s by A2 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; end; :: deftheorem Def19 defines . AOFA_I00:def_19_:_ for X being non empty set for v being INT-Variable of X for b3 being INT-Expression of X holds ( b3 = . v iff for s being Element of Funcs (X,INT) holds b3 . s = s . (v . s) ); definition let X be non empty set ; let x be Element of X; func ^ x -> INT-Variable of X equals :: AOFA_I00:def 20 (Funcs (X,INT)) --> x; correctness coherence (Funcs (X,INT)) --> x is INT-Variable of X; ; end; :: deftheorem defines ^ AOFA_I00:def_20_:_ for X being non empty set for x being Element of X holds ^ x = (Funcs (X,INT)) --> x; theorem :: AOFA_I00:14 for X being non empty set for x being Element of X holds . x = . (^ x) proof let X be non empty set ; ::_thesis: for x being Element of X holds . x = . (^ x) let x be Element of X; ::_thesis: . x = . (^ x) for s being Element of Funcs (X,INT) holds (. (^ x)) . s = s . x proof let s be Element of Funcs (X,INT); ::_thesis: (. (^ x)) . s = s . x thus (. (^ x)) . s = s . ((^ x) . s) by Def19 .= s . x by FUNCOP_1:7 ; ::_thesis: verum end; hence . x = . (^ x) by Def18; ::_thesis: verum end; definition let X be non empty set ; let i be integer number ; func . (i,X) -> INT-Expression of X equals :: AOFA_I00:def 21 (Funcs (X,INT)) --> i; correctness coherence (Funcs (X,INT)) --> i is INT-Expression of X; proof i in INT by INT_1:def_2; hence (Funcs (X,INT)) --> i is INT-Expression of X by FUNCOP_1:45; ::_thesis: verum end; end; :: deftheorem defines . AOFA_I00:def_21_:_ for X being non empty set for i being integer number holds . (i,X) = (Funcs (X,INT)) --> i; theorem :: AOFA_I00:15 for X being non empty set for t being INT-Expression of X holds ( t + (. (0,X)) = t & t (#) (. (1,X)) = t ) proof let X be non empty set ; ::_thesis: for t being INT-Expression of X holds ( t + (. (0,X)) = t & t (#) (. (1,X)) = t ) let t be INT-Expression of X; ::_thesis: ( t + (. (0,X)) = t & t (#) (. (1,X)) = t ) now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_(t_+_(._(0,X)))_._s_=_t_._s let s be Element of Funcs (X,INT); ::_thesis: (t + (. (0,X))) . s = t . s A1: (. (0,X)) . s = 0 by FUNCOP_1:7; dom (t + (. (0,X))) = Funcs (X,INT) by FUNCT_2:def_1; hence (t + (. (0,X))) . s = (t . s) + ((. (0,X)) . s) by VALUED_1:def_1 .= t . s by A1 ; ::_thesis: verum end; hence t + (. (0,X)) = t by FUNCT_2:63; ::_thesis: t (#) (. (1,X)) = t now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_(t_(#)_(._(1,X)))_._s_=_t_._s let s be Element of Funcs (X,INT); ::_thesis: (t (#) (. (1,X))) . s = t . s dom (t (#) (. (1,X))) = Funcs (X,INT) by FUNCT_2:def_1; hence (t (#) (. (1,X))) . s = (t . s) * ((. (1,X)) . s) by VALUED_1:def_4 .= (t . s) * 1 by FUNCOP_1:7 .= t . s ; ::_thesis: verum end; hence t (#) (. (1,X)) = t by FUNCT_2:63; ::_thesis: verum end; definition let A be preIfWhileAlgebra; let X be non empty set ; let T be Subset of (Funcs (X,INT)); let f be ExecutionFunction of A, Funcs (X,INT),T; attrf is Euclidean means :Def22: :: AOFA_I00:def 22 ( ( for v being INT-Variable of A,f for t being INT-Expression of A,f holds v,t form_assignment_wrt f ) & ( for i being integer number holds . (i,X) is INT-Expression of A,f ) & ( for v being INT-Variable of A,f holds . v is INT-Expression of A,f ) & ( for x being Element of X holds ^ x is INT-Variable of A,f ) & ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of A,f holds a * t is INT-Variable of A,f ) ) & ( for t being INT-Expression of A,f holds - t is INT-Expression of A,f ) & ( for t1, t2 being INT-Expression of A,f holds ( t1 (#) t2 is INT-Expression of A,f & t1 + t2 is INT-Expression of A,f & t1 div t2 is INT-Expression of A,f & t1 mod t2 is INT-Expression of A,f & leq (t1,t2) is INT-Expression of A,f & gt (t1,t2) is INT-Expression of A,f ) ) ); end; :: deftheorem Def22 defines Euclidean AOFA_I00:def_22_:_ for A being preIfWhileAlgebra for X being non empty set for T being Subset of (Funcs (X,INT)) for f being ExecutionFunction of A, Funcs (X,INT),T holds ( f is Euclidean iff ( ( for v being INT-Variable of A,f for t being INT-Expression of A,f holds v,t form_assignment_wrt f ) & ( for i being integer number holds . (i,X) is INT-Expression of A,f ) & ( for v being INT-Variable of A,f holds . v is INT-Expression of A,f ) & ( for x being Element of X holds ^ x is INT-Variable of A,f ) & ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of A,f holds a * t is INT-Variable of A,f ) ) & ( for t being INT-Expression of A,f holds - t is INT-Expression of A,f ) & ( for t1, t2 being INT-Expression of A,f holds ( t1 (#) t2 is INT-Expression of A,f & t1 + t2 is INT-Expression of A,f & t1 div t2 is INT-Expression of A,f & t1 mod t2 is INT-Expression of A,f & leq (t1,t2) is INT-Expression of A,f & gt (t1,t2) is INT-Expression of A,f ) ) ) ); definition let A be preIfWhileAlgebra; attrA is Euclidean means :Def23: :: AOFA_I00:def 23 for X being non empty countable set for T being Subset of (Funcs (X,INT)) ex f being ExecutionFunction of A, Funcs (X,INT),T st f is Euclidean ; end; :: deftheorem Def23 defines Euclidean AOFA_I00:def_23_:_ for A being preIfWhileAlgebra holds ( A is Euclidean iff for X being non empty countable set for T being Subset of (Funcs (X,INT)) ex f being ExecutionFunction of A, Funcs (X,INT),T st f is Euclidean ); definition func INT-ElemIns -> infinite disjoint_with_NAT set equals :: AOFA_I00:def 24 [:(Funcs ((Funcs (NAT,INT)),NAT)),(Funcs ((Funcs (NAT,INT)),INT)):]; coherence [:(Funcs ((Funcs (NAT,INT)),NAT)),(Funcs ((Funcs (NAT,INT)),INT)):] is infinite disjoint_with_NAT set ; end; :: deftheorem defines INT-ElemIns AOFA_I00:def_24_:_ INT-ElemIns = [:(Funcs ((Funcs (NAT,INT)),NAT)),(Funcs ((Funcs (NAT,INT)),INT)):]; definition mode INT-Exec -> ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (NAT,INT),(Funcs (NAT,INT)) \ (0,0) means :Def25: :: AOFA_I00:def 25 for s being Element of Funcs (NAT,INT) for v being Element of Funcs ((Funcs (NAT,INT)),NAT) for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds it . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)); existence ex b1 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (NAT,INT),(Funcs (NAT,INT)) \ (0,0) st for s being Element of Funcs (NAT,INT) for v being Element of Funcs ((Funcs (NAT,INT)),NAT) for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds b1 . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) proof reconsider i0 = 0 as Element of INT by INT_1:def_1; set Q = Funcs (NAT,INT); set T = (Funcs (NAT,INT)) \ (0,0); set S = ECIW-signature ; set G = INT-ElemIns ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); A1: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; reconsider q0 = NAT --> i0 as Element of Funcs (NAT,INT) by FUNCT_2:8; defpred S1[ set , set ] means ex s being Element of Funcs (NAT,INT) ex v being Element of Funcs ((Funcs (NAT,INT)),NAT) ex e being Element of Funcs ((Funcs (NAT,INT)),INT) st ( $1 = [s,(root-tree [v,e])] & $2 = s +* ((v . s),(e . s)) ); A2: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; A3: for x being set st x in [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] holds ex y being set st ( y in Funcs (NAT,INT) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] implies ex y being set st ( y in Funcs (NAT,INT) & S1[x,y] ) ) assume x in [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] ; ::_thesis: ex y being set st ( y in Funcs (NAT,INT) & S1[x,y] ) then consider s, I being set such that A4: s in Funcs (NAT,INT) and A5: I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) and A6: x = [s,I] by ZFMISC_1:def_2; reconsider s = s as Element of Funcs (NAT,INT) by A4; consider a being Symbol of (DTConUA (ECIW-signature,INT-ElemIns)) such that A7: I = root-tree a and A8: a in Terminals (DTConUA (ECIW-signature,INT-ElemIns)) by A2, A5; consider v, e being set such that A9: v in Funcs ((Funcs (NAT,INT)),NAT) and A10: e in Funcs ((Funcs (NAT,INT)),INT) and A11: a = [v,e] by A1, A8, ZFMISC_1:def_2; reconsider e = e as Element of Funcs ((Funcs (NAT,INT)),INT) by A10; reconsider v = v as Element of Funcs ((Funcs (NAT,INT)),NAT) by A9; take y = s +* ((v . s),(e . s)); ::_thesis: ( y in Funcs (NAT,INT) & S1[x,y] ) thus y in Funcs (NAT,INT) by FUNCT_2:8; ::_thesis: S1[x,y] take s ; ::_thesis: ex v being Element of Funcs ((Funcs (NAT,INT)),NAT) ex e being Element of Funcs ((Funcs (NAT,INT)),INT) st ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) take v ; ::_thesis: ex e being Element of Funcs ((Funcs (NAT,INT)),INT) st ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) take e ; ::_thesis: ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) thus ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) by A6, A7, A11; ::_thesis: verum end; consider g being Function such that A12: ( dom g = [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] & rng g c= Funcs (NAT,INT) ) and A13: for x being set st x in [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] holds S1[x,g . x] from FUNCT_1:sch_5(A3); reconsider g = g as Function of [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):],(Funcs (NAT,INT)) by A12, FUNCT_2:2; consider f being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (NAT,INT),(Funcs (NAT,INT)) \ (0,0) such that A14: f | [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] = g and for s being Element of Funcs (NAT,INT) for C, I being Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) st not f iteration_terminates_for I \; C,f . (s,C) holds f . (s,(while (C,I))) = q0 by AOFA_000:91; take f ; ::_thesis: for s being Element of Funcs (NAT,INT) for v being Element of Funcs ((Funcs (NAT,INT)),NAT) for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let s be Element of Funcs (NAT,INT); ::_thesis: for v being Element of Funcs ((Funcs (NAT,INT)),NAT) for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let v be Element of Funcs ((Funcs (NAT,INT)),NAT); ::_thesis: for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let e be Element of Funcs ((Funcs (NAT,INT)),INT); ::_thesis: f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) set I = root-tree [v,e]; [v,e] in INT-ElemIns by ZFMISC_1:87; then root-tree [v,e] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A2, A1; then A15: [s,(root-tree [v,e])] in [:(Funcs (NAT,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] by ZFMISC_1:87; then consider s9 being Element of Funcs (NAT,INT), v9 being Element of Funcs ((Funcs (NAT,INT)),NAT), e9 being Element of Funcs ((Funcs (NAT,INT)),INT) such that A16: [s,(root-tree [v,e])] = [s9,(root-tree [v9,e9])] and A17: g . [s,(root-tree [v,e])] = s9 +* ((v9 . s9),(e9 . s9)) by A13; root-tree [v,e] = root-tree [v9,e9] by A16, XTUPLE_0:1; then A18: [v,e] = [v9,e9] by TREES_4:4; then A19: v = v9 by XTUPLE_0:1; A20: e = e9 by A18, XTUPLE_0:1; s = s9 by A16, XTUPLE_0:1; hence f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) by A14, A15, A17, A19, A20, FUNCT_1:49; ::_thesis: verum end; end; :: deftheorem Def25 defines INT-Exec AOFA_I00:def_25_:_ for b1 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (NAT,INT),(Funcs (NAT,INT)) \ (0,0) holds ( b1 is INT-Exec iff for s being Element of Funcs (NAT,INT) for v being Element of Funcs ((Funcs (NAT,INT)),NAT) for e being Element of Funcs ((Funcs (NAT,INT)),INT) holds b1 . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) ); definition let X be non empty set ; func INT-ElemIns X -> infinite disjoint_with_NAT set equals :: AOFA_I00:def 26 [:(Funcs ((Funcs (X,INT)),X)),(Funcs ((Funcs (X,INT)),INT)):]; coherence [:(Funcs ((Funcs (X,INT)),X)),(Funcs ((Funcs (X,INT)),INT)):] is infinite disjoint_with_NAT set ; end; :: deftheorem defines INT-ElemIns AOFA_I00:def_26_:_ for X being non empty set holds INT-ElemIns X = [:(Funcs ((Funcs (X,INT)),X)),(Funcs ((Funcs (X,INT)),INT)):]; definition let X be non empty set ; let x be Element of X; mode INT-Exec of x -> ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)), Funcs (X,INT),(Funcs (X,INT)) \ (x,0) means :: AOFA_I00:def 27 for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds it . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)); existence ex b1 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)), Funcs (X,INT),(Funcs (X,INT)) \ (x,0) st for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds b1 . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) proof reconsider i0 = 0 as Element of INT by INT_1:def_1; set Q = Funcs (X,INT); set T = (Funcs (X,INT)) \ (x,0); set S = ECIW-signature ; set G = INT-ElemIns X; set A = FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)); A1: Terminals (DTConUA (ECIW-signature,(INT-ElemIns X))) = INT-ElemIns X by FREEALG:3; reconsider q0 = X --> i0 as Element of Funcs (X,INT) by FUNCT_2:8; defpred S1[ set , set ] means ex s being Element of Funcs (X,INT) ex v being Element of Funcs ((Funcs (X,INT)),X) ex e being Element of Funcs ((Funcs (X,INT)),INT) st ( $1 = [s,(root-tree [v,e])] & $2 = s +* ((v . s),(e . s)) ); A2: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X))) = FreeGenSetNSG (ECIW-signature,(INT-ElemIns X)) by AOFA_000:70; A3: for x being set st x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] holds ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] implies ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) ) assume x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] ; ::_thesis: ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) then consider s, I being set such that A4: s in Funcs (X,INT) and A5: I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X))) and A6: x = [s,I] by ZFMISC_1:def_2; reconsider s = s as Element of Funcs (X,INT) by A4; consider a being Symbol of (DTConUA (ECIW-signature,(INT-ElemIns X))) such that A7: I = root-tree a and A8: a in Terminals (DTConUA (ECIW-signature,(INT-ElemIns X))) by A2, A5; consider v, e being set such that A9: v in Funcs ((Funcs (X,INT)),X) and A10: e in Funcs ((Funcs (X,INT)),INT) and A11: a = [v,e] by A1, A8, ZFMISC_1:def_2; reconsider e = e as Element of Funcs ((Funcs (X,INT)),INT) by A10; reconsider v = v as Element of Funcs ((Funcs (X,INT)),X) by A9; take y = s +* ((v . s),(e . s)); ::_thesis: ( y in Funcs (X,INT) & S1[x,y] ) thus y in Funcs (X,INT) by FUNCT_2:8; ::_thesis: S1[x,y] take s ; ::_thesis: ex v being Element of Funcs ((Funcs (X,INT)),X) ex e being Element of Funcs ((Funcs (X,INT)),INT) st ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) take v ; ::_thesis: ex e being Element of Funcs ((Funcs (X,INT)),INT) st ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) take e ; ::_thesis: ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) thus ( x = [s,(root-tree [v,e])] & y = s +* ((v . s),(e . s)) ) by A6, A7, A11; ::_thesis: verum end; consider g being Function such that A12: ( dom g = [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] & rng g c= Funcs (X,INT) ) and A13: for x being set st x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] holds S1[x,g . x] from FUNCT_1:sch_5(A3); reconsider g = g as Function of [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):],(Funcs (X,INT)) by A12, FUNCT_2:2; consider f being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)), Funcs (X,INT),(Funcs (X,INT)) \ (x,0) such that A14: f | [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] = g and for s being Element of Funcs (X,INT) for C, I being Element of (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X))) st not f iteration_terminates_for I \; C,f . (s,C) holds f . (s,(while (C,I))) = q0 by AOFA_000:91; take f ; ::_thesis: for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let s be Element of Funcs (X,INT); ::_thesis: for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let v be Element of Funcs ((Funcs (X,INT)),X); ::_thesis: for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) let e be Element of Funcs ((Funcs (X,INT)),INT); ::_thesis: f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) set I = root-tree [v,e]; [v,e] in INT-ElemIns X by ZFMISC_1:87; then root-tree [v,e] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X))) by A2, A1; then A15: [s,(root-tree [v,e])] in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)))):] by ZFMISC_1:87; then consider s9 being Element of Funcs (X,INT), v9 being Element of Funcs ((Funcs (X,INT)),X), e9 being Element of Funcs ((Funcs (X,INT)),INT) such that A16: [s,(root-tree [v,e])] = [s9,(root-tree [v9,e9])] and A17: g . [s,(root-tree [v,e])] = s9 +* ((v9 . s9),(e9 . s9)) by A13; root-tree [v,e] = root-tree [v9,e9] by A16, XTUPLE_0:1; then A18: [v,e] = [v9,e9] by TREES_4:4; then A19: v = v9 by XTUPLE_0:1; A20: e = e9 by A18, XTUPLE_0:1; s = s9 by A16, XTUPLE_0:1; hence f . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) by A14, A15, A17, A19, A20, FUNCT_1:49; ::_thesis: verum end; end; :: deftheorem defines INT-Exec AOFA_I00:def_27_:_ for X being non empty set for x being Element of X for b3 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,(INT-ElemIns X)), Funcs (X,INT),(Funcs (X,INT)) \ (x,0) holds ( b3 is INT-Exec of x iff for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds b3 . (s,(root-tree [v,e])) = s +* ((v . s),(e . s)) ); definition let X be non empty set ; let T be Subset of (Funcs (X,INT)); let c be Enumeration of X; assume A1: rng c c= NAT ; mode INT-Exec of c,T -> ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T means :Def28: :: AOFA_I00:def 28 for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds it . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)); existence ex b1 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T st for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds b1 . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) proof dom c = X by Th6; then reconsider c9 = c as Function of X,NAT by A1, FUNCT_2:2; reconsider i0 = 0 as Element of INT by INT_1:def_1; set Q = Funcs (X,INT); set S = ECIW-signature ; set G = INT-ElemIns ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); reconsider q0 = X --> i0 as Element of Funcs (X,INT) by FUNCT_2:8; A1: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; defpred S1[ set , set ] means ex s being Element of Funcs (X,INT) st ( $1 `1 = s & ( ( $2 = s & ( for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds not $1 `2 = root-tree [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] ) ) or ex v being Element of Funcs ((Funcs (X,INT)),X) ex e being Element of Funcs ((Funcs (X,INT)),INT) st ( $1 `2 = root-tree [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] & $2 = s +* ((v . s),(e . s)) ) ) ); A2: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; A3: for x being set st x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] holds ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] implies ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) ) assume x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] ; ::_thesis: ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) then consider s, I being set such that A4: s in Funcs (X,INT) and A5: I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) and A6: x = [s,I] by ZFMISC_1:def_2; A7: x `1 = s by A6, MCART_1:7; reconsider s = s as Element of Funcs (X,INT) by A4; A8: x `2 = I by A6, MCART_1:7; consider a being Symbol of (DTConUA (ECIW-signature,INT-ElemIns)) such that A9: I = root-tree a and a in Terminals (DTConUA (ECIW-signature,INT-ElemIns)) by A2, A5; percases ( ex v being Element of Funcs ((Funcs (X,INT)),X) ex e being Element of Funcs ((Funcs (X,INT)),INT) st a = [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] or for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds not a = [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] ) ; suppose ex v being Element of Funcs ((Funcs (X,INT)),X) ex e being Element of Funcs ((Funcs (X,INT)),INT) st a = [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] ; ::_thesis: ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) then consider v being Element of Funcs ((Funcs (X,INT)),X), e being Element of Funcs ((Funcs (X,INT)),INT) such that A10: a = [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] ; take y = s +* ((v . s),(e . s)); ::_thesis: ( y in Funcs (X,INT) & S1[x,y] ) thus y in Funcs (X,INT) by FUNCT_2:8; ::_thesis: S1[x,y] thus S1[x,y] by A7, A8, A9, A10; ::_thesis: verum end; supposeA11: for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds not a = [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] ; ::_thesis: ex y being set st ( y in Funcs (X,INT) & S1[x,y] ) take y = s; ::_thesis: ( y in Funcs (X,INT) & S1[x,y] ) thus y in Funcs (X,INT) ; ::_thesis: S1[x,y] for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds not x `2 = root-tree [((c * v) ** (c9,NAT)),(e ** (c9,NAT))] by A8, A9, A11, TREES_4:4; hence S1[x,y] by A7; ::_thesis: verum end; end; end; consider g being Function such that A12: ( dom g = [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] & rng g c= Funcs (X,INT) ) and A13: for x being set st x in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] holds S1[x,g . x] from FUNCT_1:sch_5(A3); reconsider g = g as Function of [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):],(Funcs (X,INT)) by A12, FUNCT_2:2; consider f being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T such that A14: f | [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] = g and for s being Element of Funcs (X,INT) for C, I being Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) st not f iteration_terminates_for I \; C,f . (s,C) holds f . (s,(while (C,I))) = q0 by AOFA_000:91; take f ; ::_thesis: for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) let s be Element of Funcs (X,INT); ::_thesis: for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) let v be Element of Funcs ((Funcs (X,INT)),X); ::_thesis: for e being Element of Funcs ((Funcs (X,INT)),INT) holds f . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) let e be Element of Funcs ((Funcs (X,INT)),INT); ::_thesis: f . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) reconsider vv = v as Function of (Funcs (X,INT)),X ; reconsider cv = c9 * vv as Element of Funcs ((Funcs (X,INT)),NAT) by FUNCT_2:8; set v0 = cv ** (c9,NAT); set e0 = e ** (c9,NAT); set I = root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))]; [(cv ** (c9,NAT)),(e ** (c9,NAT))] in INT-ElemIns by ZFMISC_1:87; then root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A2, A1; then A15: [s,(root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))])] in [:(Funcs (X,INT)),(ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns))):] by ZFMISC_1:87; then S1[[s,(root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))])],g . [s,(root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))])]] by A13; then consider v9 being Element of Funcs ((Funcs (X,INT)),X), e9 being Element of Funcs ((Funcs (X,INT)),INT) such that A16: [s,(root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))])] `2 = root-tree [((c * v9) ** (c9,NAT)),(e9 ** (c9,NAT))] and A17: g . [s,(root-tree [(cv ** (c9,NAT)),(e ** (c9,NAT))])] = s +* ((v9 . s),(e9 . s)) ; A18: dom (c9 * v9) = Funcs (X,INT) by FUNCT_2:def_1; A19: dom e = Funcs (X,INT) by FUNCT_2:def_1; A20: dom v = Funcs (X,INT) by FUNCT_2:def_1; A21: dom cv = Funcs (X,INT) by FUNCT_2:def_1; A22: dom c9 = X by FUNCT_2:def_1; A23: rng v c= X ; A24: dom e9 = Funcs (X,INT) by FUNCT_2:def_1; A25: dom v9 = Funcs (X,INT) by FUNCT_2:def_1; A26: [(cv ** (c9,NAT)),(e ** (c9,NAT))] = [((c * v9) ** (c9,NAT)),(e9 ** (c9,NAT))] by A16, TREES_4:4; then cv ** (c9,NAT) = (c * v9) ** (c9,NAT) by XTUPLE_0:1; then A27: cv = c * v9 by A21, A18, Th5; e ** (c9,NAT) = e9 ** (c9,NAT) by A26, XTUPLE_0:1; then A28: e = e9 by A19, A24, Th5; rng v9 c= X ; then v = v9 by A23, A22, A25, A20, A27, FUNCT_1:27; hence f . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) by A14, A15, A17, A28, FUNCT_1:49; ::_thesis: verum end; end; :: deftheorem Def28 defines INT-Exec AOFA_I00:def_28_:_ for X being non empty set for T being Subset of (Funcs (X,INT)) for c being Enumeration of X st rng c c= NAT holds for b4 being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T holds ( b4 is INT-Exec of c,T iff for s being Element of Funcs (X,INT) for v being Element of Funcs ((Funcs (X,INT)),X) for e being Element of Funcs ((Funcs (X,INT)),INT) holds b4 . (s,(root-tree [((c * v) ** (c,NAT)),(e ** (c,NAT))])) = s +* ((v . s),(e . s)) ); theorem Th16: :: AOFA_I00:16 for f being INT-Exec for v being INT-Variable of NAT for t being INT-Expression of NAT holds v,t form_assignment_wrt f proof let f be INT-Exec ; ::_thesis: for v being INT-Variable of NAT for t being INT-Expression of NAT holds v,t form_assignment_wrt f set S = ECIW-signature ; set G = INT-ElemIns ; set X = NAT ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let v be INT-Variable of NAT; ::_thesis: for t being INT-Expression of NAT holds v,t form_assignment_wrt f let t be INT-Expression of NAT; ::_thesis: v,t form_assignment_wrt f reconsider v9 = v as Element of Funcs ((Funcs (NAT,INT)),NAT) by FUNCT_2:8; reconsider t9 = t as Element of Funcs ((Funcs (NAT,INT)),INT) by FUNCT_2:8; A1: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; A2: [v9,t9] in INT-ElemIns by ZFMISC_1:87; A3: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; then root-tree [v9,t9] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A2; then reconsider I = root-tree [v9,t9] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; take I ; :: according to AOFA_I00:def_15 ::_thesis: ( I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) & ( for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) thus I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A3, A1, A2; ::_thesis: for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) thus for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) by Def25; ::_thesis: verum end; theorem Th17: :: AOFA_I00:17 for f being INT-Exec for v being INT-Variable of NAT holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f proof set t = the INT-Expression of NAT; let f be INT-Exec ; ::_thesis: for v being INT-Variable of NAT holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set S = ECIW-signature ; set G = INT-ElemIns ; set X = NAT ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let v be INT-Variable of NAT; ::_thesis: v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f A1: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; reconsider t9 = the INT-Expression of NAT as Element of Funcs ((Funcs (NAT,INT)),INT) by FUNCT_2:8; reconsider v9 = v as Element of Funcs ((Funcs (NAT,INT)),NAT) by FUNCT_2:8; A2: [v9,t9] in INT-ElemIns by ZFMISC_1:87; A3: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; then root-tree [v9,t9] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A2; then reconsider I = root-tree [v9,t9] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; hereby :: according to AOFA_I00:def_16 ::_thesis: ex t being INT-Expression of NAT st v,t form_assignment_wrt f take I = I; ::_thesis: I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), NAT ,f thus I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), NAT ,f ::_thesis: verum proof thus I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A3, A1, A2; :: according to AOFA_I00:def_14 ::_thesis: ex v being INT-Variable of NAT ex t being INT-Expression of NAT st for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take v ; ::_thesis: ex t being INT-Expression of NAT st for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take the INT-Expression of NAT ; ::_thesis: for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),( the INT-Expression of NAT . s)) thus for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),( the INT-Expression of NAT . s)) by Def25; ::_thesis: verum end; end; take the INT-Expression of NAT ; ::_thesis: v, the INT-Expression of NAT form_assignment_wrt f thus v, the INT-Expression of NAT form_assignment_wrt f by Th16; ::_thesis: verum end; theorem Th18: :: AOFA_I00:18 for f being INT-Exec for t being INT-Expression of NAT holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f proof set v = the INT-Variable of NAT; let f be INT-Exec ; ::_thesis: for t being INT-Expression of NAT holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set S = ECIW-signature ; set G = INT-ElemIns ; set X = NAT ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let t be INT-Expression of NAT; ::_thesis: t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f A1: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; reconsider t9 = t as Element of Funcs ((Funcs (NAT,INT)),INT) by FUNCT_2:8; reconsider v9 = the INT-Variable of NAT as Element of Funcs ((Funcs (NAT,INT)),NAT) by FUNCT_2:8; A2: [v9,t9] in INT-ElemIns by ZFMISC_1:87; A3: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; then root-tree [v9,t9] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A2; then reconsider I = root-tree [v9,t9] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; hereby :: according to AOFA_I00:def_17 ::_thesis: ex v being INT-Variable of NAT st v,t form_assignment_wrt f take I = I; ::_thesis: I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), NAT ,f thus I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), NAT ,f ::_thesis: verum proof thus I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A3, A1, A2; :: according to AOFA_I00:def_14 ::_thesis: ex v being INT-Variable of NAT ex t being INT-Expression of NAT st for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take the INT-Variable of NAT ; ::_thesis: ex t being INT-Expression of NAT st for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* (( the INT-Variable of NAT . s),(t . s)) take t ; ::_thesis: for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* (( the INT-Variable of NAT . s),(t . s)) thus for s being Element of Funcs (NAT,INT) holds f . (s,I) = s +* (( the INT-Variable of NAT . s),(t . s)) by Def25; ::_thesis: verum end; end; take the INT-Variable of NAT ; ::_thesis: the INT-Variable of NAT,t form_assignment_wrt f thus the INT-Variable of NAT,t form_assignment_wrt f by Th16; ::_thesis: verum end; registration cluster -> Euclidean for INT-Exec ; coherence for b1 being INT-Exec holds b1 is Euclidean proof set X = NAT ; set a = (INT --> 0) +* (id NAT); A1: dom (id NAT) = NAT by RELAT_1:45; A2: INT \/ NAT = INT by NUMBERS:17, XBOOLE_1:12; dom (INT --> 0) = INT by FUNCOP_1:13; then A3: dom ((INT --> 0) +* (id NAT)) = INT by A1, A2, FUNCT_4:def_1; A4: rng (id NAT) = NAT by RELAT_1:45; {0} c= NAT by ZFMISC_1:31; then A5: {0} \/ NAT = NAT by XBOOLE_1:12; rng (INT --> 0) = {0} by FUNCOP_1:8; then rng ((INT --> 0) +* (id NAT)) c= NAT by A4, A5, FUNCT_4:17; then reconsider a = (INT --> 0) +* (id NAT) as INT-Array of NAT by A3, FUNCT_2:2; let f be INT-Exec ; ::_thesis: f is Euclidean set S = ECIW-signature ; set G = INT-ElemIns ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds v,t form_assignment_wrt f by Th16; :: according to AOFA_I00:def_22 ::_thesis: ( ( for i being integer number holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for i being integer number holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; ::_thesis: ( ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; ::_thesis: ( ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; ::_thesis: ( ex a being INT-Array of NAT st ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) hereby ::_thesis: ( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) take a = a; ::_thesis: ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) dom (id NAT) = NAT by RELAT_1:45; hence a | (card NAT) is one-to-one by CARD_1:47, FUNCT_4:23; ::_thesis: for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f thus for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; ::_thesis: verum end; thus ( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) by Th18; ::_thesis: verum end; end; theorem Th19: :: AOFA_I00:19 for X being non empty countable set for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X for t being INT-Expression of X holds v,t form_assignment_wrt f proof set S = ECIW-signature ; set G = INT-ElemIns ; let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X for t being INT-Expression of X holds v,t form_assignment_wrt f let T be Subset of (Funcs (X,INT)); ::_thesis: for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X for t being INT-Expression of X holds v,t form_assignment_wrt f let c be Enumeration of X; ::_thesis: for f being INT-Exec of c,T for v being INT-Variable of X for t being INT-Expression of X holds v,t form_assignment_wrt f set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let f be INT-Exec of c,T; ::_thesis: for v being INT-Variable of X for t being INT-Expression of X holds v,t form_assignment_wrt f let v be INT-Variable of X; ::_thesis: for t being INT-Expression of X holds v,t form_assignment_wrt f let t be INT-Expression of X; ::_thesis: v,t form_assignment_wrt f reconsider v9 = v as Element of Funcs ((Funcs (X,INT)),X) by FUNCT_2:8; reconsider t9 = t as Element of Funcs ((Funcs (X,INT)),INT) by FUNCT_2:8; A1: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; A2: rng c c= NAT by Th11; dom c = X by Th6; then reconsider c9 = c as Function of X,NAT by A2, FUNCT_2:2; reconsider cv = c9 * v as Element of Funcs ((Funcs (X,INT)),NAT) by FUNCT_2:8; set v1 = cv ** (c9,NAT); set t1 = t9 ** (c9,NAT); A3: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; A4: [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in INT-ElemIns by ZFMISC_1:87; then root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A3; then reconsider I = root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; take I ; :: according to AOFA_I00:def_15 ::_thesis: ( I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) for s being Element of Funcs (X,INT) holds f . (s,(root-tree [((c * v9) ** (c,NAT)),(t9 ** (c,NAT))])) = s +* ((v9 . s),(t9 . s)) by A2, Def28; hence ( I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) by A1, A3, A4; ::_thesis: verum end; theorem Th20: :: AOFA_I00:20 for X being non empty countable set for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f proof set S = ECIW-signature ; set G = INT-ElemIns ; let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f let T be Subset of (Funcs (X,INT)); ::_thesis: for c being Enumeration of X for f being INT-Exec of c,T for v being INT-Variable of X holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f let c be Enumeration of X; ::_thesis: for f being INT-Exec of c,T for v being INT-Variable of X holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let f be INT-Exec of c,T; ::_thesis: for v being INT-Variable of X holds v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f let v be INT-Variable of X; ::_thesis: v is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set t = the INT-Expression of X; A1: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; A2: rng c c= NAT by Th11; dom c = X by Th6; then reconsider c9 = c as Function of X,NAT by A2, FUNCT_2:2; reconsider cv = c9 * v as Element of Funcs ((Funcs (X,INT)),NAT) by FUNCT_2:8; reconsider v9 = v as Element of Funcs ((Funcs (X,INT)),X) by FUNCT_2:8; reconsider t9 = the INT-Expression of X as Element of Funcs ((Funcs (X,INT)),INT) by FUNCT_2:8; A3: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; set v1 = cv ** (c9,NAT); set t1 = t9 ** (c9,NAT); A4: [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in INT-ElemIns by ZFMISC_1:87; then root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A3; then reconsider I = root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; hereby :: according to AOFA_I00:def_16 ::_thesis: ex t being INT-Expression of X st v,t form_assignment_wrt f take I = I; ::_thesis: I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),X,f thus I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),X,f ::_thesis: verum proof thus I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A3, A4; :: according to AOFA_I00:def_14 ::_thesis: ex v being INT-Variable of X ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take v ; ::_thesis: ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take the INT-Expression of X ; ::_thesis: for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),( the INT-Expression of X . s)) for s being Element of Funcs (X,INT) holds f . (s,(root-tree [((c * v9) ** (c,NAT)),(t9 ** (c,NAT))])) = s +* ((v9 . s),(t9 . s)) by A2, Def28; hence for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),( the INT-Expression of X . s)) ; ::_thesis: verum end; end; take the INT-Expression of X ; ::_thesis: v, the INT-Expression of X form_assignment_wrt f thus v, the INT-Expression of X form_assignment_wrt f by Th19; ::_thesis: verum end; theorem Th21: :: AOFA_I00:21 for X being non empty countable set for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for t being INT-Expression of X holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f proof set S = ECIW-signature ; set G = INT-ElemIns ; let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for c being Enumeration of X for f being INT-Exec of c,T for t being INT-Expression of X holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f let T be Subset of (Funcs (X,INT)); ::_thesis: for c being Enumeration of X for f being INT-Exec of c,T for t being INT-Expression of X holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f let c be Enumeration of X; ::_thesis: for f being INT-Exec of c,T for t being INT-Expression of X holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); let f be INT-Exec of c,T; ::_thesis: for t being INT-Expression of X holds t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f set v = the INT-Variable of X; let t be INT-Expression of X; ::_thesis: t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f A1: ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) = FreeGenSetNSG (ECIW-signature,INT-ElemIns) by AOFA_000:70; A2: rng c c= NAT by Th11; dom c = X by Th6; then reconsider c9 = c as Function of X,NAT by A2, FUNCT_2:2; reconsider cv = c9 * the INT-Variable of X as Element of Funcs ((Funcs (X,INT)),NAT) by FUNCT_2:8; reconsider v9 = the INT-Variable of X as Element of Funcs ((Funcs (X,INT)),X) by FUNCT_2:8; reconsider t9 = t as Element of Funcs ((Funcs (X,INT)),INT) by FUNCT_2:8; A3: Terminals (DTConUA (ECIW-signature,INT-ElemIns)) = INT-ElemIns by FREEALG:3; set v1 = cv ** (c9,NAT); set t1 = t9 ** (c9,NAT); A4: [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in INT-ElemIns by ZFMISC_1:87; then root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A3; then reconsider I = root-tree [(cv ** (c9,NAT)),(t9 ** (c9,NAT))] as Element of (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) ; hereby :: according to AOFA_I00:def_17 ::_thesis: ex v being INT-Variable of X st v,t form_assignment_wrt f take I = I; ::_thesis: I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),X,f thus I is_assignment_wrt FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),X,f ::_thesis: verum proof thus I in ElementaryInstructions (FreeUnivAlgNSG (ECIW-signature,INT-ElemIns)) by A1, A3, A4; :: according to AOFA_I00:def_14 ::_thesis: ex v being INT-Variable of X ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) take the INT-Variable of X ; ::_thesis: ex t being INT-Expression of X st for s being Element of Funcs (X,INT) holds f . (s,I) = s +* (( the INT-Variable of X . s),(t . s)) take t ; ::_thesis: for s being Element of Funcs (X,INT) holds f . (s,I) = s +* (( the INT-Variable of X . s),(t . s)) for s being Element of Funcs (X,INT) holds f . (s,(root-tree [((c * v9) ** (c,NAT)),(t9 ** (c,NAT))])) = s +* ((v9 . s),(t9 . s)) by A2, Def28; hence for s being Element of Funcs (X,INT) holds f . (s,I) = s +* (( the INT-Variable of X . s),(t . s)) ; ::_thesis: verum end; end; take the INT-Variable of X ; ::_thesis: the INT-Variable of X,t form_assignment_wrt f thus the INT-Variable of X,t form_assignment_wrt f by Th19; ::_thesis: verum end; registration let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let c be Enumeration of X; cluster -> Euclidean for INT-Exec of c,T; coherence for b1 being INT-Exec of c,T holds b1 is Euclidean proof A1: rng c c= NAT by Th11; card X = rng c by Th6; then A2: INT \/ (card X) = INT by A1, NUMBERS:17, XBOOLE_1:1, XBOOLE_1:12; set x = (c ") . 0; set a = (INT --> ((c ") . 0)) +* (c "); A3: dom (INT --> ((c ") . 0)) = INT by FUNCOP_1:13; A4: rng (INT --> ((c ") . 0)) = {((c ") . 0)} by FUNCOP_1:8; (c ") . 0 in X by FUNCT_2:5, ORDINAL3:8; then {((c ") . 0)} c= X by ZFMISC_1:31; then A5: {((c ") . 0)} \/ X = X by XBOOLE_1:12; rng (c ") = X by Th7; then A6: rng ((INT --> ((c ") . 0)) +* (c ")) c= X by A4, A5, FUNCT_4:17; dom (c ") = card X by Th7; then dom ((INT --> ((c ") . 0)) +* (c ")) = INT by A3, A2, FUNCT_4:def_1; then reconsider a = (INT --> ((c ") . 0)) +* (c ") as INT-Array of X by A6, FUNCT_2:2; let f be INT-Exec of c,T; ::_thesis: f is Euclidean set S = ECIW-signature ; set G = INT-ElemIns ; set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns); thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds v,t form_assignment_wrt f by Th19; :: according to AOFA_I00:def_22 ::_thesis: ( ( for i being integer number holds . (i,X) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of X holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for i being integer number holds . (i,X) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th21; ::_thesis: ( ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of X holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th21; ::_thesis: ( ( for x being Element of X holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) thus for x being Element of X holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th20; ::_thesis: ( ex a being INT-Array of X st ( a | (card X) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) hereby ::_thesis: ( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) take a = a; ::_thesis: ( a | (card X) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) dom (c ") = card X by Th7; hence a | (card X) is one-to-one by FUNCT_4:23; ::_thesis: for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f thus for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th20; ::_thesis: verum end; thus ( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) by Th21; ::_thesis: verum end; end; registration cluster FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) -> Euclidean ; coherence FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) is Euclidean proof let X be non empty countable set ; :: according to AOFA_I00:def_23 ::_thesis: for T being Subset of (Funcs (X,INT)) ex f being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T st f is Euclidean let T be Subset of (Funcs (X,INT)); ::_thesis: ex f being ExecutionFunction of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns), Funcs (X,INT),T st f is Euclidean set c = the Enumeration of X; set f = the INT-Exec of the Enumeration of X,T; take the INT-Exec of the Enumeration of X,T ; ::_thesis: the INT-Exec of the Enumeration of X,T is Euclidean thus the INT-Exec of the Enumeration of X,T is Euclidean ; ::_thesis: verum end; end; registration cluster non empty V157() V158() V159() with_empty-instruction with_catenation with_if-instruction with_while-instruction non degenerated Euclidean for L9(); existence ex b1 being preIfWhileAlgebra st ( b1 is Euclidean & not b1 is degenerated ) proof take FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) ; ::_thesis: ( FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) is Euclidean & not FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) is degenerated ) thus ( FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) is Euclidean & not FreeUnivAlgNSG (ECIW-signature,INT-ElemIns) is degenerated ) ; ::_thesis: verum end; end; registration let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); cluster non empty Relation-like [:(Funcs (X,INT)), the carrier of A:] -defined Funcs (X,INT) -valued Function-like V29([:(Funcs (X,INT)), the carrier of A:]) quasi_total Function-yielding V89() complying_with_empty-instruction complying_with_catenation Euclidean for ExecutionFunction of A, Funcs (X,INT),T; existence ex b1 being ExecutionFunction of A, Funcs (X,INT),T st b1 is Euclidean by Def23; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let t be INT-Expression of A,f; :: original: - redefine func - t -> INT-Expression of A,f; coherence - t is INT-Expression of A,f by Def22; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let t be INT-Expression of A,f; let i be integer number ; :: original: + redefine funct + i -> INT-Expression of A,f; coherence i + t is INT-Expression of A,f proof A1: dom (t + (. (i,X))) = Funcs (X,INT) by FUNCT_2:def_1; A2: now__::_thesis:_for_a_being_set_st_a_in_Funcs_(X,INT)_holds_ (t_+_(._(i,X)))_._a_=_i_+_(t_._a) let a be set ; ::_thesis: ( a in Funcs (X,INT) implies (t + (. (i,X))) . a = i + (t . a) ) assume a in Funcs (X,INT) ; ::_thesis: (t + (. (i,X))) . a = i + (t . a) then reconsider s = a as Element of Funcs (X,INT) ; thus (t + (. (i,X))) . a = (t . s) + ((. (i,X)) . s) by A1, VALUED_1:def_1 .= i + (t . a) by FUNCOP_1:7 ; ::_thesis: verum end; . (i,X) is INT-Expression of A,f by Def22; then A3: t + (. (i,X)) is INT-Expression of A,f by Def22; dom t = Funcs (X,INT) by FUNCT_2:def_1; hence i + t is INT-Expression of A,f by A3, A1, A2, VALUED_1:def_2; ::_thesis: verum end; :: original: - redefine funct - i -> INT-Expression of A,f; coherence t - i is INT-Expression of A,f proof . (i,X) is INT-Expression of A,f by Def22; then - (. (i,X)) is INT-Expression of A,f by Def22; then A4: t + (- (. (i,X))) is INT-Expression of A,f by Def22; A5: dom t = Funcs (X,INT) by FUNCT_2:def_1; A6: dom (t + (- (. (i,X)))) = Funcs (X,INT) by FUNCT_2:def_1; A7: now__::_thesis:_for_a_being_set_st_a_in_Funcs_(X,INT)_holds_ (t_+_(-_(._(i,X))))_._a_=_(t_-_i)_._a let a be set ; ::_thesis: ( a in Funcs (X,INT) implies (t + (- (. (i,X)))) . a = (t - i) . a ) assume a in Funcs (X,INT) ; ::_thesis: (t + (- (. (i,X)))) . a = (t - i) . a then reconsider s = a as Element of Funcs (X,INT) ; thus (t + (- (. (i,X)))) . a = (t . s) + ((- (. (i,X))) . s) by A6, VALUED_1:def_1 .= (t . s) + (- ((. (i,X)) . s)) by VALUED_1:8 .= (t . s) - i by FUNCOP_1:7 .= (t - i) . a by A5, VALUED_1:3 ; ::_thesis: verum end; dom (t - i) = dom t by VALUED_1:3; hence t - i is INT-Expression of A,f by A4, A6, A5, A7, FUNCT_1:2; ::_thesis: verum end; :: original: * redefine funct * i -> INT-Expression of A,f; coherence t * i is INT-Expression of A,f proof A8: dom (t (#) (. (i,X))) = Funcs (X,INT) by FUNCT_2:def_1; A9: now__::_thesis:_for_a_being_set_st_a_in_Funcs_(X,INT)_holds_ (t_(#)_(._(i,X)))_._a_=_i_*_(t_._a) let a be set ; ::_thesis: ( a in Funcs (X,INT) implies (t (#) (. (i,X))) . a = i * (t . a) ) assume a in Funcs (X,INT) ; ::_thesis: (t (#) (. (i,X))) . a = i * (t . a) then reconsider s = a as Element of Funcs (X,INT) ; thus (t (#) (. (i,X))) . a = (t . s) * ((. (i,X)) . s) by A8, VALUED_1:def_4 .= i * (t . a) by FUNCOP_1:7 ; ::_thesis: verum end; . (i,X) is INT-Expression of A,f by Def22; then A10: t (#) (. (i,X)) is INT-Expression of A,f by Def22; dom t = Funcs (X,INT) by FUNCT_2:def_1; hence t * i is INT-Expression of A,f by A10, A8, A9, VALUED_1:def_5; ::_thesis: verum end; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let t1, t2 be INT-Expression of A,f; :: original: - redefine funct1 - t2 -> INT-Expression of A,f; coherence t1 - t2 is INT-Expression of A,f proof - t2 is INT-Expression of A,f ; hence t1 - t2 is INT-Expression of A,f by Def22; ::_thesis: verum end; :: original: + redefine funct1 + t2 -> INT-Expression of A,f; coherence t1 + t2 is INT-Expression of A,f by Def22; :: original: (#) redefine funct1 (#) t2 -> INT-Expression of A,f; coherence t1 (#) t2 is INT-Expression of A,f by Def22; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let t1, t2 be INT-Expression of A,f; :: original: div redefine funct1 div t2 -> INT-Expression of A,f means :Def29: :: AOFA_I00:def 29 for s being Element of Funcs (X,INT) holds it . s = (t1 . s) div (t2 . s); coherence t1 div t2 is INT-Expression of A,f by Def22; compatibility for b1 being INT-Expression of A,f holds ( b1 = t1 div t2 iff for s being Element of Funcs (X,INT) holds b1 . s = (t1 . s) div (t2 . s) ) proof let ti be INT-Expression of A,f; ::_thesis: ( ti = t1 div t2 iff for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) div (t2 . s) ) A1: dom t1 = Funcs (X,INT) by FUNCT_2:def_1; A2: dom t2 = Funcs (X,INT) by FUNCT_2:def_1; A3: dom (t1 div t2) = (dom t1) /\ (dom t2) by Def3; hence ( ti = t1 div t2 implies for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) div (t2 . s) ) by A1, A2, Def3; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) div (t2 . s) ) implies ti = t1 div t2 ) A4: dom ti = Funcs (X,INT) by FUNCT_2:def_1; assume for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) div (t2 . s) ; ::_thesis: ti = t1 div t2 then for s being set st s in Funcs (X,INT) holds ti . s = (t1 . s) div (t2 . s) ; hence ti = t1 div t2 by A3, A1, A2, A4, Def3; ::_thesis: verum end; :: original: mod redefine funct1 mod t2 -> INT-Expression of A,f means :Def30: :: AOFA_I00:def 30 for s being Element of Funcs (X,INT) holds it . s = (t1 . s) mod (t2 . s); coherence t1 mod t2 is INT-Expression of A,f by Def22; compatibility for b1 being INT-Expression of A,f holds ( b1 = t1 mod t2 iff for s being Element of Funcs (X,INT) holds b1 . s = (t1 . s) mod (t2 . s) ) proof let ti be INT-Expression of A,f; ::_thesis: ( ti = t1 mod t2 iff for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) mod (t2 . s) ) A5: dom t1 = Funcs (X,INT) by FUNCT_2:def_1; A6: dom t2 = Funcs (X,INT) by FUNCT_2:def_1; A7: dom (t1 mod t2) = (dom t1) /\ (dom t2) by Def4; hence ( ti = t1 mod t2 implies for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) mod (t2 . s) ) by A5, A6, Def4; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) mod (t2 . s) ) implies ti = t1 mod t2 ) A8: dom ti = Funcs (X,INT) by FUNCT_2:def_1; assume for s being Element of Funcs (X,INT) holds ti . s = (t1 . s) mod (t2 . s) ; ::_thesis: ti = t1 mod t2 then for s being set st s in Funcs (X,INT) holds ti . s = (t1 . s) mod (t2 . s) ; hence ti = t1 mod t2 by A7, A5, A6, A8, Def4; ::_thesis: verum end; :: original: leq redefine func leq (t1,t2) -> INT-Expression of A,f means :Def31: :: AOFA_I00:def 31 for s being Element of Funcs (X,INT) holds it . s = IFGT ((t1 . s),(t2 . s),0,1); compatibility for b1 being INT-Expression of A,f holds ( b1 = leq (t1,t2) iff for s being Element of Funcs (X,INT) holds b1 . s = IFGT ((t1 . s),(t2 . s),0,1) ) proof let ti be INT-Expression of A,f; ::_thesis: ( ti = leq (t1,t2) iff for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),0,1) ) A9: dom t1 = Funcs (X,INT) by FUNCT_2:def_1; A10: dom t2 = Funcs (X,INT) by FUNCT_2:def_1; A11: dom (leq (t1,t2)) = (dom t1) /\ (dom t2) by Def5; hence ( ti = leq (t1,t2) implies for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),0,1) ) by A9, A10, Def5; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),0,1) ) implies ti = leq (t1,t2) ) A12: dom ti = Funcs (X,INT) by FUNCT_2:def_1; assume for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),0,1) ; ::_thesis: ti = leq (t1,t2) then for s being set st s in Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),0,1) ; hence ti = leq (t1,t2) by A11, A9, A10, A12, Def5; ::_thesis: verum end; coherence leq (t1,t2) is INT-Expression of A,f by Def22; :: original: gt redefine func gt (t1,t2) -> INT-Expression of A,f means :Def32: :: AOFA_I00:def 32 for s being Element of Funcs (X,INT) holds it . s = IFGT ((t1 . s),(t2 . s),1,0); coherence gt (t1,t2) is INT-Expression of A,f by Def22; compatibility for b1 being INT-Expression of A,f holds ( b1 = gt (t1,t2) iff for s being Element of Funcs (X,INT) holds b1 . s = IFGT ((t1 . s),(t2 . s),1,0) ) proof let ti be INT-Expression of A,f; ::_thesis: ( ti = gt (t1,t2) iff for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),1,0) ) A13: dom t1 = Funcs (X,INT) by FUNCT_2:def_1; A14: dom t2 = Funcs (X,INT) by FUNCT_2:def_1; A15: dom (gt (t1,t2)) = (dom t1) /\ (dom t2) by Def6; hence ( ti = gt (t1,t2) implies for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),1,0) ) by A13, A14, Def6; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),1,0) ) implies ti = gt (t1,t2) ) A16: dom ti = Funcs (X,INT) by FUNCT_2:def_1; assume for s being Element of Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),1,0) ; ::_thesis: ti = gt (t1,t2) then for s being set st s in Funcs (X,INT) holds ti . s = IFGT ((t1 . s),(t2 . s),1,0) ; hence ti = gt (t1,t2) by A15, A13, A14, A16, Def6; ::_thesis: verum end; end; :: deftheorem Def29 defines div AOFA_I00:def_29_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t1, t2, b7 being INT-Expression of A,f holds ( b7 = t1 div t2 iff for s being Element of Funcs (X,INT) holds b7 . s = (t1 . s) div (t2 . s) ); :: deftheorem Def30 defines mod AOFA_I00:def_30_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t1, t2, b7 being INT-Expression of A,f holds ( b7 = t1 mod t2 iff for s being Element of Funcs (X,INT) holds b7 . s = (t1 . s) mod (t2 . s) ); :: deftheorem Def31 defines leq AOFA_I00:def_31_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t1, t2, b7 being INT-Expression of A,f holds ( b7 = leq (t1,t2) iff for s being Element of Funcs (X,INT) holds b7 . s = IFGT ((t1 . s),(t2 . s),0,1) ); :: deftheorem Def32 defines gt AOFA_I00:def_32_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t1, t2, b7 being INT-Expression of A,f holds ( b7 = gt (t1,t2) iff for s being Element of Funcs (X,INT) holds b7 . s = IFGT ((t1 . s),(t2 . s),1,0) ); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let t1, t2 be INT-Expression of A,f; :: original: eq redefine func eq (t1,t2) -> INT-Expression of A,f means :: AOFA_I00:def 33 for s being Element of Funcs (X,INT) holds it . s = IFEQ ((t1 . s),(t2 . s),1,0); compatibility for b1 being INT-Expression of A,f holds ( b1 = eq (t1,t2) iff for s being Element of Funcs (X,INT) holds b1 . s = IFEQ ((t1 . s),(t2 . s),1,0) ) proof let ti be INT-Expression of A,f; ::_thesis: ( ti = eq (t1,t2) iff for s being Element of Funcs (X,INT) holds ti . s = IFEQ ((t1 . s),(t2 . s),1,0) ) A1: dom t1 = Funcs (X,INT) by FUNCT_2:def_1; A2: dom t2 = Funcs (X,INT) by FUNCT_2:def_1; A3: dom (eq (t1,t2)) = (dom t1) /\ (dom t2) by Def7; hence ( ti = eq (t1,t2) implies for s being Element of Funcs (X,INT) holds ti . s = IFEQ ((t1 . s),(t2 . s),1,0) ) by A1, A2, Def7; ::_thesis: ( ( for s being Element of Funcs (X,INT) holds ti . s = IFEQ ((t1 . s),(t2 . s),1,0) ) implies ti = eq (t1,t2) ) A4: dom ti = Funcs (X,INT) by FUNCT_2:def_1; assume for s being Element of Funcs (X,INT) holds ti . s = IFEQ ((t1 . s),(t2 . s),1,0) ; ::_thesis: ti = eq (t1,t2) then for s being set st s in Funcs (X,INT) holds ti . s = IFEQ ((t1 . s),(t2 . s),1,0) ; hence ti = eq (t1,t2) by A3, A1, A2, A4, Def7; ::_thesis: verum end; coherence eq (t1,t2) is INT-Expression of A,f proof reconsider l1 = leq (t1,t2), l2 = leq (t2,t1) as INT-Expression of A,f ; A5: dom (l1 (#) l2) = Funcs (X,INT) by FUNCT_2:def_1; A6: dom (eq (t1,t2)) = Funcs (X,INT) by FUNCT_2:def_1; now__::_thesis:_for_a_being_set_st_a_in_Funcs_(X,INT)_holds_ (eq_(t1,t2))_._a_=_(l1_(#)_l2)_._a let a be set ; ::_thesis: ( a in Funcs (X,INT) implies (eq (t1,t2)) . a = (l1 (#) l2) . a ) assume a in Funcs (X,INT) ; ::_thesis: (eq (t1,t2)) . a = (l1 (#) l2) . a then reconsider s = a as Element of Funcs (X,INT) ; A7: ( t1 . s = t2 . s or t1 . s < t2 . s or t2 . s < t1 . s ) by XXREAL_0:1; A8: l2 . s = IFGT ((t2 . s),(t1 . s),0,1) by Def31; A9: (l1 (#) l2) . s = (l1 . s) * (l2 . s) by A5, VALUED_1:def_4; A10: l1 . s = IFGT ((t1 . s),(t2 . s),0,1) by Def31; (eq (t1,t2)) . s = IFEQ ((t1 . s),(t2 . s),1,0) by A6, Def7; then ( ( (eq (t1,t2)) . s = 1 & l1 . s = 1 & l2 . s = 1 ) or ( (eq (t1,t2)) . s = 0 & l1 . s = 0 & l2 . s = 1 ) or ( (eq (t1,t2)) . s = 0 & l1 . s = 1 & l2 . s = 0 ) ) by A8, A10, A7, FUNCOP_1:def_8, XXREAL_0:def_11; hence (eq (t1,t2)) . a = (l1 (#) l2) . a by A9; ::_thesis: verum end; hence eq (t1,t2) is INT-Expression of A,f by A6, A5, FUNCT_1:2; ::_thesis: verum end; end; :: deftheorem defines eq AOFA_I00:def_33_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t1, t2, b7 being INT-Expression of A,f holds ( b7 = eq (t1,t2) iff for s being Element of Funcs (X,INT) holds b7 . s = IFEQ ((t1 . s),(t2 . s),1,0) ); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; func . v -> INT-Expression of A,f equals :: AOFA_I00:def 34 . v; coherence . v is INT-Expression of A,f by Def22; end; :: deftheorem defines . AOFA_I00:def_34_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f holds . v = . v; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Element of X; funcx ^ (A,f) -> INT-Variable of A,f equals :: AOFA_I00:def 35 ^ x; coherence ^ x is INT-Variable of A,f by Def22; end; :: deftheorem defines ^ AOFA_I00:def_35_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Element of X holds x ^ (A,f) = ^ x; notation let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Variable of f; synonym ^ x for x ^ (A,f); end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Variable of f; func . x -> INT-Expression of A,f equals :: AOFA_I00:def 36 . (^ x); coherence . (^ x) is INT-Expression of A,f ; end; :: deftheorem defines . AOFA_I00:def_36_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f holds . x = . (^ x); theorem Th22: :: AOFA_I00:22 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for s being Element of Funcs (X,INT) holds (. x) . s = s . x proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for s being Element of Funcs (X,INT) holds (. x) . s = s . x let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for s being Element of Funcs (X,INT) holds (. x) . s = s . x let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for s being Element of Funcs (X,INT) holds (. x) . s = s . x let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for s being Element of Funcs (X,INT) holds (. x) . s = s . x let x be Variable of f; ::_thesis: for s being Element of Funcs (X,INT) holds (. x) . s = s . x let s be Element of Funcs (X,INT); ::_thesis: (. x) . s = s . x thus (. x) . s = s . ((x ^ (A,f)) . s) by Def19 .= s . x by FUNCOP_1:7 ; ::_thesis: verum end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let i be integer number ; func . (i,A,f) -> INT-Expression of A,f equals :: AOFA_I00:def 37 . (i,X); coherence . (i,X) is INT-Expression of A,f by Def22; end; :: deftheorem defines . AOFA_I00:def_37_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number holds . (i,A,f) = . (i,X); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; let t be INT-Expression of A,f; funcv := t -> Element of A equals :: AOFA_I00:def 38 choose { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; coherence choose { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } is Element of A proof set Y = { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; A1: { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } c= the carrier of A proof let i be set ; :: according to TARSKI:def_3 ::_thesis: ( not i in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } or i in the carrier of A ) assume i in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; ::_thesis: i in the carrier of A then ex I being Element of A st ( i = I & I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) ; hence i in the carrier of A ; ::_thesis: verum end; v,t form_assignment_wrt f by Def22; then consider I0 being Element of A such that A2: I0 in ElementaryInstructions A and A3: for s being Element of Funcs (X,INT) holds f . (s,I0) = s +* ((v . s),(t . s)) by Def15; I0 in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } by A2, A3; then choose { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; hence choose { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } is Element of A by A1; ::_thesis: verum end; end; :: deftheorem defines := AOFA_I00:def_38_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t = choose { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; theorem Th23: :: AOFA_I00:23 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t in ElementaryInstructions A proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t in ElementaryInstructions A let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t in ElementaryInstructions A let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t in ElementaryInstructions A let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for v being INT-Variable of A,f for t being INT-Expression of A,f holds v := t in ElementaryInstructions A let v be INT-Variable of A,f; ::_thesis: for t being INT-Expression of A,f holds v := t in ElementaryInstructions A let t be INT-Expression of A,f; ::_thesis: v := t in ElementaryInstructions A set Y = { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; v,t form_assignment_wrt f by Def22; then consider I0 being Element of A such that A1: I0 in ElementaryInstructions A and A2: for s being Element of Funcs (X,INT) holds f . (s,I0) = s +* ((v . s),(t . s)) by Def15; I0 in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } by A1, A2; then v := t in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; then ex I being Element of A st ( v := t = I & I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) ; hence v := t in ElementaryInstructions A ; ::_thesis: verum end; registration let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; let t be INT-Expression of A,f; clusterv := t -> absolutely-terminating ; coherence v := t is absolutely-terminating by Th23, AOFA_000:95; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; let t be INT-Expression of A,f; funcv += t -> absolutely-terminating Element of A equals :: AOFA_I00:def 39 v := ((. v) + t); coherence v := ((. v) + t) is absolutely-terminating Element of A ; funcv *= t -> absolutely-terminating Element of A equals :: AOFA_I00:def 40 v := ((. v) (#) t); coherence v := ((. v) (#) t) is absolutely-terminating Element of A ; end; :: deftheorem defines += AOFA_I00:def_39_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v += t = v := ((. v) + t); :: deftheorem defines *= AOFA_I00:def_40_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds v *= t = v := ((. v) (#) t); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Element of X; let t be INT-Expression of A,f; funcx := t -> absolutely-terminating Element of A equals :: AOFA_I00:def 41 (x ^ (A,f)) := t; correctness coherence (x ^ (A,f)) := t is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_41_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Element of X for t being INT-Expression of A,f holds x := t = (x ^ (A,f)) := t; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Element of X; let y be Variable of f; funcx := y -> absolutely-terminating Element of A equals :: AOFA_I00:def 42 x := (. y); correctness coherence x := (. y) is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_42_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Element of X for y being Variable of f holds x := y = x := (. y); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Element of X; let v be INT-Variable of A,f; funcx := v -> absolutely-terminating Element of A equals :: AOFA_I00:def 43 x := (. v); correctness coherence x := (. v) is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_43_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Element of X for v being INT-Variable of A,f holds x := v = x := (. v); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v, w be INT-Variable of A,f; funcv := w -> absolutely-terminating Element of A equals :: AOFA_I00:def 44 v := (. w); correctness coherence v := (. w) is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_44_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v, w being INT-Variable of A,f holds v := w = v := (. w); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Variable of f; let i be integer number ; funcx := i -> absolutely-terminating Element of A equals :: AOFA_I00:def 45 x := (. (i,A,f)); correctness coherence x := (. (i,A,f)) is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_45_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x := i = x := (. (i,A,f)); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v1, v2 be INT-Variable of A,f; let x be Variable of f; func swap (v1,x,v2) -> absolutely-terminating Element of A equals :: AOFA_I00:def 46 ((x := v1) \; (v1 := v2)) \; (v2 := (. x)); coherence ((x := v1) \; (v1 := v2)) \; (v2 := (. x)) is absolutely-terminating Element of A ; end; :: deftheorem defines swap AOFA_I00:def_46_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v1, v2 being INT-Variable of A,f for x being Variable of f holds swap (v1,x,v2) = ((x := v1) \; (v1 := v2)) \; (v2 := (. x)); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Variable of f; let t be INT-Expression of A,f; funcx += t -> absolutely-terminating Element of A equals :: AOFA_I00:def 47 x := ((. x) + t); correctness coherence x := ((. x) + t) is absolutely-terminating Element of A; ; funcx *= t -> absolutely-terminating Element of A equals :: AOFA_I00:def 48 x := ((. x) (#) t); correctness coherence x := ((. x) (#) t) is absolutely-terminating Element of A; ; funcx %= t -> absolutely-terminating Element of A equals :: AOFA_I00:def 49 x := ((. x) mod t); correctness coherence x := ((. x) mod t) is absolutely-terminating Element of A; ; funcx /= t -> absolutely-terminating Element of A equals :: AOFA_I00:def 50 x := ((. x) div t); correctness coherence x := ((. x) div t) is absolutely-terminating Element of A; ; end; :: deftheorem defines += AOFA_I00:def_47_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds x += t = x := ((. x) + t); :: deftheorem defines *= AOFA_I00:def_48_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds x *= t = x := ((. x) (#) t); :: deftheorem defines %= AOFA_I00:def_49_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds x %= t = x := ((. x) mod t); :: deftheorem defines /= AOFA_I00:def_50_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds x /= t = x := ((. x) div t); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x be Variable of f; let i be integer number ; funcx += i -> absolutely-terminating Element of A equals :: AOFA_I00:def 51 x := ((. x) + i); correctness coherence x := ((. x) + i) is absolutely-terminating Element of A; ; funcx *= i -> absolutely-terminating Element of A equals :: AOFA_I00:def 52 x := ((. x) * i); correctness coherence x := ((. x) * i) is absolutely-terminating Element of A; ; funcx %= i -> absolutely-terminating Element of A equals :: AOFA_I00:def 53 x := ((. x) mod (. (i,A,f))); correctness coherence x := ((. x) mod (. (i,A,f))) is absolutely-terminating Element of A; ; funcx /= i -> absolutely-terminating Element of A equals :: AOFA_I00:def 54 x := ((. x) div (. (i,A,f))); correctness coherence x := ((. x) div (. (i,A,f))) is absolutely-terminating Element of A; ; funcx div i -> INT-Expression of A,f equals :: AOFA_I00:def 55 (. x) div (. (i,A,f)); correctness coherence (. x) div (. (i,A,f)) is INT-Expression of A,f; ; end; :: deftheorem defines += AOFA_I00:def_51_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x += i = x := ((. x) + i); :: deftheorem defines *= AOFA_I00:def_52_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x *= i = x := ((. x) * i); :: deftheorem defines %= AOFA_I00:def_53_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x %= i = x := ((. x) mod (. (i,A,f))); :: deftheorem defines /= AOFA_I00:def_54_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x /= i = x := ((. x) div (. (i,A,f))); :: deftheorem defines div AOFA_I00:def_55_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds x div i = (. x) div (. (i,A,f)); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; let i be integer number ; funcv := i -> absolutely-terminating Element of A equals :: AOFA_I00:def 56 v := (. (i,A,f)); correctness coherence v := (. (i,A,f)) is absolutely-terminating Element of A; ; end; :: deftheorem defines := AOFA_I00:def_56_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for i being integer number holds v := i = v := (. (i,A,f)); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let v be INT-Variable of A,f; let i be integer number ; funcv += i -> absolutely-terminating Element of A equals :: AOFA_I00:def 57 v := ((. v) + i); correctness coherence v := ((. v) + i) is absolutely-terminating Element of A; ; funcv *= i -> absolutely-terminating Element of A equals :: AOFA_I00:def 58 v := ((. v) * i); correctness coherence v := ((. v) * i) is absolutely-terminating Element of A; ; end; :: deftheorem defines += AOFA_I00:def_57_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for i being integer number holds v += i = v := ((. v) + i); :: deftheorem defines *= AOFA_I00:def_58_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for i being integer number holds v *= i = v := ((. v) * i); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let t1 be INT-Expression of A,g; funct1 is_odd -> absolutely-terminating Element of A equals :: AOFA_I00:def 59 b := (t1 mod (. (2,A,g))); coherence b := (t1 mod (. (2,A,g))) is absolutely-terminating Element of A ; funct1 is_even -> absolutely-terminating Element of A equals :: AOFA_I00:def 60 b := ((t1 + 1) mod (. (2,A,g))); coherence b := ((t1 + 1) mod (. (2,A,g))) is absolutely-terminating Element of A ; let t2 be INT-Expression of A,g; funct1 leq t2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 61 b := (leq (t1,t2)); coherence b := (leq (t1,t2)) is absolutely-terminating Element of A ; funct1 gt t2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 62 b := (gt (t1,t2)); coherence b := (gt (t1,t2)) is absolutely-terminating Element of A ; funct1 eq t2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 63 b := (eq (t1,t2)); coherence b := (eq (t1,t2)) is absolutely-terminating Element of A ; end; :: deftheorem defines is_odd AOFA_I00:def_59_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t1 being INT-Expression of A,g holds t1 is_odd = b := (t1 mod (. (2,A,g))); :: deftheorem defines is_even AOFA_I00:def_60_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t1 being INT-Expression of A,g holds t1 is_even = b := ((t1 + 1) mod (. (2,A,g))); :: deftheorem defines leq AOFA_I00:def_61_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t1, t2 being INT-Expression of A,g holds t1 leq t2 = b := (leq (t1,t2)); :: deftheorem defines gt AOFA_I00:def_62_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t1, t2 being INT-Expression of A,g holds t1 gt t2 = b := (gt (t1,t2)); :: deftheorem defines eq AOFA_I00:def_63_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t1, t2 being INT-Expression of A,g holds t1 eq t2 = b := (eq (t1,t2)); notation let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let t1, t2 be INT-Expression of A,g; synonym t2 geq t1 for t1 leq t2; synonym t2 lt t1 for t1 gt t2; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let v1, v2 be INT-Variable of A,g; funcv1 leq v2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 64 (. v1) leq (. v2); coherence (. v1) leq (. v2) is absolutely-terminating Element of A ; funcv1 gt v2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 65 (. v1) gt (. v2); coherence (. v1) gt (. v2) is absolutely-terminating Element of A ; end; :: deftheorem defines leq AOFA_I00:def_64_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for v1, v2 being INT-Variable of A,g holds v1 leq v2 = (. v1) leq (. v2); :: deftheorem defines gt AOFA_I00:def_65_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for v1, v2 being INT-Variable of A,g holds v1 gt v2 = (. v1) gt (. v2); notation let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let v1, v2 be INT-Variable of A,g; synonym v2 geq v1 for v1 leq v2; synonym v2 lt v1 for v1 gt v2; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let x1 be Variable of g; funcx1 is_odd -> absolutely-terminating Element of A equals :: AOFA_I00:def 66 (. x1) is_odd ; coherence (. x1) is_odd is absolutely-terminating Element of A ; funcx1 is_even -> absolutely-terminating Element of A equals :: AOFA_I00:def 67 (. x1) is_even ; coherence (. x1) is_even is absolutely-terminating Element of A ; let x2 be Variable of g; funcx1 leq x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 68 (. x1) leq (. x2); coherence (. x1) leq (. x2) is absolutely-terminating Element of A ; funcx1 gt x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 69 (. x1) gt (. x2); coherence (. x1) gt (. x2) is absolutely-terminating Element of A ; end; :: deftheorem defines is_odd AOFA_I00:def_66_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x1 being Variable of g holds x1 is_odd = (. x1) is_odd ; :: deftheorem defines is_even AOFA_I00:def_67_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x1 being Variable of g holds x1 is_even = (. x1) is_even ; :: deftheorem defines leq AOFA_I00:def_68_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x1, x2 being Variable of g holds x1 leq x2 = (. x1) leq (. x2); :: deftheorem defines gt AOFA_I00:def_69_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x1, x2 being Variable of g holds x1 gt x2 = (. x1) gt (. x2); notation let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let x1, x2 be Variable of g; synonym x2 geq x1 for x1 leq x2; synonym x2 lt x1 for x1 gt x2; end; definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let b be Element of X; let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); let x be Variable of g; let i be integer number ; funcx leq i -> absolutely-terminating Element of A equals :: AOFA_I00:def 70 (. x) leq (. (i,A,g)); coherence (. x) leq (. (i,A,g)) is absolutely-terminating Element of A ; funcx geq i -> absolutely-terminating Element of A equals :: AOFA_I00:def 71 (. x) geq (. (i,A,g)); coherence (. x) geq (. (i,A,g)) is absolutely-terminating Element of A ; funcx gt i -> absolutely-terminating Element of A equals :: AOFA_I00:def 72 (. x) gt (. (i,A,g)); coherence (. x) gt (. (i,A,g)) is absolutely-terminating Element of A ; funcx lt i -> absolutely-terminating Element of A equals :: AOFA_I00:def 73 (. x) lt (. (i,A,g)); coherence (. x) lt (. (i,A,g)) is absolutely-terminating Element of A ; funcx / i -> INT-Expression of A,g equals :: AOFA_I00:def 74 (. x) div (. (i,A,g)); coherence (. x) div (. (i,A,g)) is INT-Expression of A,g ; end; :: deftheorem defines leq AOFA_I00:def_70_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds x leq i = (. x) leq (. (i,A,g)); :: deftheorem defines geq AOFA_I00:def_71_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds x geq i = (. x) geq (. (i,A,g)); :: deftheorem defines gt AOFA_I00:def_72_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds x gt i = (. x) gt (. (i,A,g)); :: deftheorem defines lt AOFA_I00:def_73_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds x lt i = (. x) lt (. (i,A,g)); :: deftheorem defines / AOFA_I00:def_74_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds x / i = (. x) div (. (i,A,g)); definition let A be Euclidean preIfWhileAlgebra; let X be non empty countable set ; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let x1, x2 be Variable of f; funcx1 += x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 75 x1 += (. x2); coherence x1 += (. x2) is absolutely-terminating Element of A ; funcx1 *= x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 76 x1 *= (. x2); coherence x1 *= (. x2) is absolutely-terminating Element of A ; funcx1 %= x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 77 x1 := ((. x1) mod (. x2)); coherence x1 := ((. x1) mod (. x2)) is absolutely-terminating Element of A ; funcx1 /= x2 -> absolutely-terminating Element of A equals :: AOFA_I00:def 78 x1 := ((. x1) div (. x2)); coherence x1 := ((. x1) div (. x2)) is absolutely-terminating Element of A ; funcx1 + x2 -> INT-Expression of A,f equals :: AOFA_I00:def 79 (. x1) + (. x2); coherence (. x1) + (. x2) is INT-Expression of A,f ; funcx1 * x2 -> INT-Expression of A,f equals :: AOFA_I00:def 80 (. x1) (#) (. x2); coherence (. x1) (#) (. x2) is INT-Expression of A,f ; funcx1 mod x2 -> INT-Expression of A,f equals :: AOFA_I00:def 81 (. x1) mod (. x2); coherence (. x1) mod (. x2) is INT-Expression of A,f ; funcx1 div x2 -> INT-Expression of A,f equals :: AOFA_I00:def 82 (. x1) div (. x2); coherence (. x1) div (. x2) is INT-Expression of A,f ; end; :: deftheorem defines += AOFA_I00:def_75_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 += x2 = x1 += (. x2); :: deftheorem defines *= AOFA_I00:def_76_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 *= x2 = x1 *= (. x2); :: deftheorem defines %= AOFA_I00:def_77_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 %= x2 = x1 := ((. x1) mod (. x2)); :: deftheorem defines /= AOFA_I00:def_78_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 /= x2 = x1 := ((. x1) div (. x2)); :: deftheorem defines + AOFA_I00:def_79_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 + x2 = (. x1) + (. x2); :: deftheorem defines * AOFA_I00:def_80_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 * x2 = (. x1) (#) (. x2); :: deftheorem defines mod AOFA_I00:def_81_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 mod x2 = (. x1) mod (. x2); :: deftheorem defines div AOFA_I00:def_82_:_ for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x1, x2 being Variable of f holds x1 div x2 = (. x1) div (. x2); theorem Th24: :: AOFA_I00:24 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for v being INT-Variable of A,f for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let v be INT-Variable of A,f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) set Y = { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; v,t form_assignment_wrt f by Def22; then consider I0 being Element of A such that A1: I0 in ElementaryInstructions A and A2: for s being Element of Funcs (X,INT) holds f . (s,I0) = s +* ((v . s),(t . s)) by Def15; I0 in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } by A1, A2; then v := t in { I where I is Element of A : ( I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) } ; then ex I being Element of A st ( v := t = I & I in ElementaryInstructions A & ( for s being Element of Funcs (X,INT) holds f . (s,I) = s +* ((v . s),(t . s)) ) ) ; then A3: f . (s,(v := t)) = s +* ((v . s),(t . s)) ; dom s = X by FUNCT_2:def_1; hence ( (f . (s,(v := t))) . (v . s) = t . s & ( for z being Element of X st z <> v . s holds (f . (s,(v := t))) . z = s . z ) ) by A3, FUNCT_7:31, FUNCT_7:32; ::_thesis: verum end; theorem Th25: :: AOFA_I00:25 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let x be Variable of f; ::_thesis: for i being integer number holds ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) let i be integer number ; ::_thesis: ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) A1: (. (i,A,f)) . s = i by FUNCOP_1:7; (^ x) . s = x by FUNCOP_1:7; hence ( (f . (s,(x := i))) . x = i & ( for z being Element of X st z <> x holds (f . (s,(x := i))) . z = s . z ) ) by A1, Th24; ::_thesis: verum end; theorem Th26: :: AOFA_I00:26 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let x be Variable of f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) (^ x) . s = x by FUNCOP_1:7; hence ( (f . (s,(x := t))) . x = t . s & ( for z being Element of X st z <> x holds (f . (s,(x := t))) . z = s . z ) ) by Th24; ::_thesis: verum end; theorem Th27: :: AOFA_I00:27 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x, y being Variable of f holds ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) let x, y be Variable of f; ::_thesis: ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) (. y) . s = s . y by Th22; hence ( (f . (s,(x := y))) . x = s . y & ( for z being Element of X st z <> x holds (f . (s,(x := y))) . z = s . z ) ) by Th26; ::_thesis: verum end; theorem Th28: :: AOFA_I00:28 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for i being integer number for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let i be integer number ; ::_thesis: for x being Variable of f holds ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) let x be Variable of f; ::_thesis: ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; A2: (. (^ x)) . s = s . ((^ x) . s) by Def19; ((. x) + i) . s = ((. x) . s) + i by Def8; hence ( (f . (s,(x += i))) . x = (s . x) + i & ( for z being Element of X st z <> x holds (f . (s,(x += i))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem Th29: :: AOFA_I00:29 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let x be Variable of f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; dom ((. x) + t) = Funcs (X,INT) by FUNCT_2:def_1; then A2: ((. x) + t) . s = ((. x) . s) + (t . s) by VALUED_1:def_1; (. x) . s = s . x by Th22; hence ( (f . (s,(x += t))) . x = (s . x) + (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x += t))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem Th30: :: AOFA_I00:30 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x, y being Variable of f holds ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) let x, y be Variable of f; ::_thesis: ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) (. y) . s = s . y by Th22; hence ( (f . (s,(x += y))) . x = (s . x) + (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x += y))) . z = s . z ) ) by Th29; ::_thesis: verum end; theorem Th31: :: AOFA_I00:31 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for i being integer number for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let i be integer number ; ::_thesis: for x being Variable of f holds ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) let x be Variable of f; ::_thesis: ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; A2: (. (^ x)) . s = s . ((^ x) . s) by Def19; ((. x) * i) . s = ((. x) . s) * i by Def10; hence ( (f . (s,(x *= i))) . x = (s . x) * i & ( for z being Element of X st z <> x holds (f . (s,(x *= i))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem Th32: :: AOFA_I00:32 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let x be Variable of f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; dom ((. x) (#) t) = Funcs (X,INT) by FUNCT_2:def_1; then A2: ((. x) (#) t) . s = ((. x) . s) * (t . s) by VALUED_1:def_4; (. x) . s = s . x by Th22; hence ( (f . (s,(x *= t))) . x = (s . x) * (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x *= t))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem Th33: :: AOFA_I00:33 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x, y being Variable of f holds ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) let x, y be Variable of f; ::_thesis: ( (f . (s,(x *= y))) . x = (s . x) * (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z ) ) A1: dom ((. x) (#) (. y)) = Funcs (X,INT) by FUNCT_2:def_1; (^ x) . s = x by FUNCOP_1:7; hence (f . (s,(x *= y))) . x = ((. x) (#) (. y)) . s by Th24 .= ((. x) . s) * ((. y) . s) by A1, VALUED_1:def_4 .= (s . x) * ((. y) . s) by Th22 .= (s . x) * (s . y) by Th22 ; ::_thesis: for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z thus for z being Element of X st z <> x holds (f . (s,(x *= y))) . z = s . z by Th26; ::_thesis: verum end; theorem Th34: :: AOFA_I00:34 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies (g . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (g . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (g . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (g . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x leq i))) . z = s . z & (g . (s,(x geq i))) . z = s . z ) ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies (g . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (g . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (g . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (g . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x leq i))) . z = s . z & (g . (s,(x geq i))) . z = s . z ) ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies (g . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (g . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (g . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (g . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x leq i))) . z = s . z & (g . (s,(x geq i))) . z = s . z ) ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies (g . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (g . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (g . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (g . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x leq i))) . z = s . z & (g . (s,(x geq i))) . z = s . z ) ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies (g . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (g . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (g . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (g . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x leq i))) . z = s . z & (g . (s,(x geq i))) . z = s . z ) ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of f for i being integer number holds ( ( s . x <= i implies (f . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (f . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (f . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (f . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x leq i))) . z = s . z & (f . (s,(x geq i))) . z = s . z ) ) ) reconsider b9 = b as Variable of f by Def2; let x be Variable of f; ::_thesis: for i being integer number holds ( ( s . x <= i implies (f . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (f . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (f . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (f . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x leq i))) . z = s . z & (f . (s,(x geq i))) . z = s . z ) ) ) let i be integer number ; ::_thesis: ( ( s . x <= i implies (f . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (f . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (f . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (f . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x leq i))) . z = s . z & (f . (s,(x geq i))) . z = s . z ) ) ) set v = ^ b9; A1: (. (i,A,f)) . s = i by FUNCOP_1:7; A2: (^ b9) . s = b by FUNCOP_1:7; A3: ( (. x) . s < i implies IFGT (i,((. x) . s),0,1) = 0 ) by XXREAL_0:def_11; A4: ( (. x) . s >= i implies IFGT (i,((. x) . s),0,1) = 1 ) by XXREAL_0:def_11; A5: (leq ((. (i,A,f)),(. x))) . s = IFGT (((. (i,A,f)) . s),((. x) . s),0,1) by Def31; A6: ( (. x) . s > i implies IFGT (((. x) . s),i,0,1) = 0 ) by XXREAL_0:def_11; A7: (leq ((. x),(. (i,A,f)))) . s = IFGT (((. x) . s),((. (i,A,f)) . s),0,1) by Def31; A8: ( (. x) . s <= i implies IFGT (((. x) . s),i,0,1) = 1 ) by XXREAL_0:def_11; (. x) . s = s . ((^ x) . s) by Def19; hence ( ( s . x <= i implies (f . (s,(x leq i))) . b = 1 ) & ( s . x > i implies (f . (s,(x leq i))) . b = 0 ) & ( s . x >= i implies (f . (s,(x geq i))) . b = 1 ) & ( s . x < i implies (f . (s,(x geq i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x leq i))) . z = s . z & (f . (s,(x geq i))) . z = s . z ) ) ) by A1, A2, A8, A6, A4, A3, A7, A5, Th24, FUNCOP_1:7; ::_thesis: verum end; theorem Th35: :: AOFA_I00:35 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies (g . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (g . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (g . (s,(x leq y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies (g . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (g . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (g . (s,(x leq y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies (g . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (g . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (g . (s,(x leq y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies (g . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (g . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (g . (s,(x leq y))) . z = s . z ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies (g . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (g . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (g . (s,(x leq y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y being Variable of f holds ( ( s . x <= s . y implies (f . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (f . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (f . (s,(x leq y))) . z = s . z ) ) reconsider b9 = b as Variable of f by Def2; let x, y be Variable of f; ::_thesis: ( ( s . x <= s . y implies (f . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (f . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (f . (s,(x leq y))) . z = s . z ) ) set v = ^ b9; A1: (^ b9) . s = b by FUNCOP_1:7; A2: ( (. x) . s <= (. y) . s implies IFGT (((. x) . s),((. y) . s),0,1) = 1 ) by XXREAL_0:def_11; (. x) . s = s . ((^ x) . s) by Def19; then A3: s . x = (. x) . s by FUNCOP_1:7; A4: ( (. x) . s > (. y) . s implies IFGT (((. x) . s),((. y) . s),0,1) = 0 ) by XXREAL_0:def_11; A5: (leq ((. x),(. y))) . s = IFGT (((. x) . s),((. y) . s),0,1) by Def31; (. y) . s = s . ((^ y) . s) by Def19; hence ( ( s . x <= s . y implies (f . (s,(x leq y))) . b = 1 ) & ( s . x > s . y implies (f . (s,(x leq y))) . b = 0 ) & ( for z being Element of X st z <> b holds (f . (s,(x leq y))) . z = s . z ) ) by A3, A1, A2, A4, A5, Th24, FUNCOP_1:7; ::_thesis: verum end; theorem :: AOFA_I00:36 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of g for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let x be Variable of g; ::_thesis: for i being integer number holds ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) let i be integer number ; ::_thesis: ( ( s . x <= i implies g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) implies s . x <= i ) & ( s . x >= i implies g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) implies s . x >= i ) ) ( g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x leq i))) . b <> 0 ) by Th2; hence ( s . x <= i iff g . (s,(x leq i)) in (Funcs (X,INT)) \ (b,0) ) by Th34; ::_thesis: ( s . x >= i iff g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) ( g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x geq i))) . b <> 0 ) by Th2; hence ( s . x >= i iff g . (s,(x geq i)) in (Funcs (X,INT)) \ (b,0) ) by Th34; ::_thesis: verum end; theorem :: AOFA_I00:37 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y being Variable of g holds ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) let x, y be Variable of g; ::_thesis: ( ( s . x <= s . y implies g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) implies s . x <= s . y ) & ( s . x >= s . y implies g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) implies s . x >= s . y ) ) ( g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x leq y))) . b <> 0 ) by Th2; hence ( s . x <= s . y iff g . (s,(x leq y)) in (Funcs (X,INT)) \ (b,0) ) by Th35; ::_thesis: ( s . x >= s . y iff g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) ( g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x geq y))) . b <> 0 ) by Th2; hence ( s . x >= s . y iff g . (s,(x geq y)) in (Funcs (X,INT)) \ (b,0) ) by Th35; ::_thesis: verum end; theorem Th38: :: AOFA_I00:38 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies (g . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (g . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (g . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (g . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt i))) . z = s . z & (g . (s,(x lt i))) . z = s . z ) ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies (g . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (g . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (g . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (g . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt i))) . z = s . z & (g . (s,(x lt i))) . z = s . z ) ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies (g . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (g . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (g . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (g . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt i))) . z = s . z & (g . (s,(x lt i))) . z = s . z ) ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies (g . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (g . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (g . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (g . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt i))) . z = s . z & (g . (s,(x lt i))) . z = s . z ) ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies (g . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (g . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (g . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (g . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt i))) . z = s . z & (g . (s,(x lt i))) . z = s . z ) ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of f for i being integer number holds ( ( s . x > i implies (f . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (f . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (f . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (f . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt i))) . z = s . z & (f . (s,(x lt i))) . z = s . z ) ) ) reconsider b9 = b as Variable of f by Def2; let x be Variable of f; ::_thesis: for i being integer number holds ( ( s . x > i implies (f . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (f . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (f . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (f . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt i))) . z = s . z & (f . (s,(x lt i))) . z = s . z ) ) ) let i be integer number ; ::_thesis: ( ( s . x > i implies (f . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (f . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (f . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (f . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt i))) . z = s . z & (f . (s,(x lt i))) . z = s . z ) ) ) set v = ^ b9; A1: (. (i,A,f)) . s = i by FUNCOP_1:7; A2: (^ b9) . s = b by FUNCOP_1:7; A3: ( (. x) . s >= i implies IFGT (i,((. x) . s),1,0) = 0 ) by XXREAL_0:def_11; A4: ( (. x) . s < i implies IFGT (i,((. x) . s),1,0) = 1 ) by XXREAL_0:def_11; A5: (gt ((. (i,A,f)),(. x))) . s = IFGT (((. (i,A,f)) . s),((. x) . s),1,0) by Def32; A6: ( (. x) . s <= i implies IFGT (((. x) . s),i,1,0) = 0 ) by XXREAL_0:def_11; A7: (gt ((. x),(. (i,A,f)))) . s = IFGT (((. x) . s),((. (i,A,f)) . s),1,0) by Def32; A8: ( (. x) . s > i implies IFGT (((. x) . s),i,1,0) = 1 ) by XXREAL_0:def_11; (. x) . s = s . ((^ x) . s) by Def19; hence ( ( s . x > i implies (f . (s,(x gt i))) . b = 1 ) & ( s . x <= i implies (f . (s,(x gt i))) . b = 0 ) & ( s . x < i implies (f . (s,(x lt i))) . b = 1 ) & ( s . x >= i implies (f . (s,(x lt i))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt i))) . z = s . z & (f . (s,(x lt i))) . z = s . z ) ) ) by A1, A2, A8, A6, A4, A3, A7, A5, Th24, FUNCOP_1:7; ::_thesis: verum end; theorem Th39: :: AOFA_I00:39 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies (g . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (g . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (g . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (g . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt y))) . z = s . z & (g . (s,(x lt y))) . z = s . z ) ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies (g . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (g . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (g . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (g . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt y))) . z = s . z & (g . (s,(x lt y))) . z = s . z ) ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies (g . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (g . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (g . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (g . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt y))) . z = s . z & (g . (s,(x lt y))) . z = s . z ) ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies (g . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (g . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (g . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (g . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt y))) . z = s . z & (g . (s,(x lt y))) . z = s . z ) ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies (g . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (g . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (g . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (g . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (g . (s,(x gt y))) . z = s . z & (g . (s,(x lt y))) . z = s . z ) ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y being Variable of f holds ( ( s . x > s . y implies (f . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (f . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (f . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (f . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt y))) . z = s . z & (f . (s,(x lt y))) . z = s . z ) ) ) reconsider b9 = b as Variable of f by Def2; let x, y be Variable of f; ::_thesis: ( ( s . x > s . y implies (f . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (f . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (f . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (f . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt y))) . z = s . z & (f . (s,(x lt y))) . z = s . z ) ) ) set v = ^ b9; A1: (^ b9) . s = b by FUNCOP_1:7; A2: ( (. x) . s > (. y) . s implies IFGT (((. x) . s),((. y) . s),1,0) = 1 ) by XXREAL_0:def_11; A3: (gt ((. x),(. y))) . s = IFGT (((. x) . s),((. y) . s),1,0) by Def32; A4: ( (. x) . s < (. y) . s implies IFGT (((. y) . s),((. x) . s),1,0) = 1 ) by XXREAL_0:def_11; (. x) . s = s . ((^ x) . s) by Def19; then A5: s . x = (. x) . s by FUNCOP_1:7; A6: ( (. x) . s <= (. y) . s implies IFGT (((. x) . s),((. y) . s),1,0) = 0 ) by XXREAL_0:def_11; A7: (gt ((. y),(. x))) . s = IFGT (((. y) . s),((. x) . s),1,0) by Def32; A8: ( (. x) . s >= (. y) . s implies IFGT (((. y) . s),((. x) . s),1,0) = 0 ) by XXREAL_0:def_11; (. y) . s = s . ((^ y) . s) by Def19; hence ( ( s . x > s . y implies (f . (s,(x gt y))) . b = 1 ) & ( s . x <= s . y implies (f . (s,(x gt y))) . b = 0 ) & ( s . x < s . y implies (f . (s,(x lt y))) . b = 1 ) & ( s . x >= s . y implies (f . (s,(x lt y))) . b = 0 ) & ( for z being Element of X st z <> b holds ( (f . (s,(x gt y))) . z = s . z & (f . (s,(x lt y))) . z = s . z ) ) ) by A5, A1, A2, A6, A4, A8, A3, A7, Th24, FUNCOP_1:7; ::_thesis: verum end; theorem Th40: :: AOFA_I00:40 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of g for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let x be Variable of g; ::_thesis: for i being integer number holds ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) let i be integer number ; ::_thesis: ( ( s . x > i implies g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) implies s . x > i ) & ( s . x < i implies g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) implies s . x < i ) ) ( g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x gt i))) . b <> 0 ) by Th2; hence ( s . x > i iff g . (s,(x gt i)) in (Funcs (X,INT)) \ (b,0) ) by Th38; ::_thesis: ( s . x < i iff g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) ( g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x lt i))) . b <> 0 ) by Th2; hence ( s . x < i iff g . (s,(x lt i)) in (Funcs (X,INT)) \ (b,0) ) by Th38; ::_thesis: verum end; theorem :: AOFA_I00:41 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y being Variable of g holds ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) let x, y be Variable of g; ::_thesis: ( ( s . x > s . y implies g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) implies s . x > s . y ) & ( s . x < s . y implies g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) implies s . x < s . y ) ) ( g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x gt y))) . b <> 0 ) by Th2; hence ( s . x > s . y iff g . (s,(x gt y)) in (Funcs (X,INT)) \ (b,0) ) by Th39; ::_thesis: ( s . x < s . y iff g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) ( g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) iff (g . (s,(x lt y))) . b <> 0 ) by Th2; hence ( s . x < s . y iff g . (s,(x lt y)) in (Funcs (X,INT)) \ (b,0) ) by Th39; ::_thesis: verum end; theorem :: AOFA_I00:42 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for i being integer number for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let i be integer number ; ::_thesis: for x being Variable of f holds ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) let x be Variable of f; ::_thesis: ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) A1: (. (i,A,f)) . s = i by FUNCOP_1:7; A2: (^ x) . s = x by FUNCOP_1:7; A3: (. (^ x)) . s = s . ((^ x) . s) by Def19; ((. x) mod (. (i,A,f))) . s = ((. x) . s) mod ((. (i,A,f)) . s) by Def30; hence ( (f . (s,(x %= i))) . x = (s . x) mod i & ( for z being Element of X st z <> x holds (f . (s,(x %= i))) . z = s . z ) ) by A1, A2, A3, Th24; ::_thesis: verum end; theorem Th43: :: AOFA_I00:43 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let x be Variable of f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; A2: (. x) . s = s . x by Th22; ((. x) mod t) . s = ((. x) . s) mod (t . s) by Def30; hence ( (f . (s,(x %= t))) . x = (s . x) mod (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x %= t))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem Th44: :: AOFA_I00:44 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x, y being Variable of f holds ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) let x, y be Variable of f; ::_thesis: ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) A1: x %= y = x %= (. y) ; (. y) . s = s . y by Th22; hence ( (f . (s,(x %= y))) . x = (s . x) mod (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x %= y))) . z = s . z ) ) by A1, Th43; ::_thesis: verum end; theorem Th45: :: AOFA_I00:45 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for i being integer number for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let i be integer number ; ::_thesis: for x being Variable of f holds ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) let x be Variable of f; ::_thesis: ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) A1: (. (i,A,f)) . s = i by FUNCOP_1:7; A2: (^ x) . s = x by FUNCOP_1:7; A3: (. (^ x)) . s = s . ((^ x) . s) by Def19; ((. x) div (. (i,A,f))) . s = ((. x) . s) div ((. (i,A,f)) . s) by Def29; hence ( (f . (s,(x /= i))) . x = (s . x) div i & ( for z being Element of X st z <> x holds (f . (s,(x /= i))) . z = s . z ) ) by A1, A2, A3, Th24; ::_thesis: verum end; theorem Th46: :: AOFA_I00:46 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x being Variable of f for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let x be Variable of f; ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) A1: (^ x) . s = x by FUNCOP_1:7; A2: (. x) . s = s . x by Th22; ((. x) div t) . s = ((. x) . s) div (t . s) by Def29; hence ( (f . (s,(x /= t))) . x = (s . x) div (t . s) & ( for z being Element of X st z <> x holds (f . (s,(x /= t))) . z = s . z ) ) by A1, A2, Th24; ::_thesis: verum end; theorem :: AOFA_I00:47 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for x, y being Variable of f holds ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) let x, y be Variable of f; ::_thesis: ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) A1: x /= y = x /= (. y) ; (. y) . s = s . y by Th22; hence ( (f . (s,(x /= y))) . x = (s . x) div (s . y) & ( for z being Element of X st z <> x holds (f . (s,(x /= y))) . z = s . z ) ) by A1, Th46; ::_thesis: verum end; theorem Th48: :: AOFA_I00:48 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( (g . (s,(t is_odd))) . b = (t . s) mod 2 & (g . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (g . (s,(t is_odd))) . z = s . z & (g . (s,(t is_even))) . z = s . z ) ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( (g . (s,(t is_odd))) . b = (t . s) mod 2 & (g . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (g . (s,(t is_odd))) . z = s . z & (g . (s,(t is_even))) . z = s . z ) ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( (g . (s,(t is_odd))) . b = (t . s) mod 2 & (g . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (g . (s,(t is_odd))) . z = s . z & (g . (s,(t is_even))) . z = s . z ) ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( (g . (s,(t is_odd))) . b = (t . s) mod 2 & (g . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (g . (s,(t is_odd))) . z = s . z & (g . (s,(t is_even))) . z = s . z ) ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( (g . (s,(t is_odd))) . b = (t . s) mod 2 & (g . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (g . (s,(t is_odd))) . z = s . z & (g . (s,(t is_even))) . z = s . z ) ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for t being INT-Expression of A,f holds ( (f . (s,(t is_odd))) . b = (t . s) mod 2 & (f . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (f . (s,(t is_odd))) . z = s . z & (f . (s,(t is_even))) . z = s . z ) ) ) let t be INT-Expression of A,f; ::_thesis: ( (f . (s,(t is_odd))) . b = (t . s) mod 2 & (f . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (f . (s,(t is_odd))) . z = s . z & (f . (s,(t is_even))) . z = s . z ) ) ) reconsider y = b as Variable of f by Def2; A1: t is_odd = y := (t mod (. (2,A,f))) ; dom (t + 1) = Funcs (X,INT) by FUNCT_2:def_1; then A2: (t + 1) . s = 1 + (t . s) by VALUED_1:def_2; A3: (. (2,A,f)) . s = 2 by FUNCOP_1:7; then A4: ((t + 1) mod (. (2,A,f))) . s = ((t + 1) . s) mod 2 by Def30; (t mod (. (2,A,f))) . s = (t . s) mod 2 by A3, Def30; hence ( (f . (s,(t is_odd))) . b = (t . s) mod 2 & (f . (s,(t is_even))) . b = ((t . s) + 1) mod 2 & ( for z being Element of X st z <> b holds ( (f . (s,(t is_odd))) . z = s . z & (f . (s,(t is_even))) . z = s . z ) ) ) by A1, A2, A4, Th26; ::_thesis: verum end; theorem Th49: :: AOFA_I00:49 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( (g . (s,(x is_odd))) . b = (s . x) mod 2 & (g . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (g . (s,(x is_odd))) . z = s . z ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( (g . (s,(x is_odd))) . b = (s . x) mod 2 & (g . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (g . (s,(x is_odd))) . z = s . z ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( (g . (s,(x is_odd))) . b = (s . x) mod 2 & (g . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (g . (s,(x is_odd))) . z = s . z ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( (g . (s,(x is_odd))) . b = (s . x) mod 2 & (g . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (g . (s,(x is_odd))) . z = s . z ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( (g . (s,(x is_odd))) . b = (s . x) mod 2 & (g . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (g . (s,(x is_odd))) . z = s . z ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of f holds ( (f . (s,(x is_odd))) . b = (s . x) mod 2 & (f . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (f . (s,(x is_odd))) . z = s . z ) ) let x be Variable of f; ::_thesis: ( (f . (s,(x is_odd))) . b = (s . x) mod 2 & (f . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (f . (s,(x is_odd))) . z = s . z ) ) (. x) . s = s . x by Th22; hence ( (f . (s,(x is_odd))) . b = (s . x) mod 2 & (f . (s,(x is_even))) . b = ((s . x) + 1) mod 2 & ( for z being Element of X st z <> b holds (f . (s,(x is_odd))) . z = s . z ) ) by Th48; ::_thesis: verum end; theorem Th50: :: AOFA_I00:50 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( ( t . s is odd implies g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( ( t . s is odd implies g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( ( t . s is odd implies g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( ( t . s is odd implies g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for t being INT-Expression of A,g holds ( ( t . s is odd implies g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for t being INT-Expression of A,f holds ( ( t . s is odd implies f . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) let t be INT-Expression of A,f; ::_thesis: ( ( t . s is odd implies f . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) implies t . s is odd ) & ( t . s is even implies f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) implies t . s is even ) ) A1: ( (t . s) mod 2 = 0 or (t . s) mod 2 = 1 ) by PRE_FF:6; A2: t . s = (((t . s) div 2) * 2) + ((t . s) mod 2) by INT_1:59; (f . (s,(t is_odd))) . b = (t . s) mod 2 by Th48; hence ( t . s is odd iff f . (s,(t is_odd)) in (Funcs (X,INT)) \ (b,0) ) by A1, A2, Th2; ::_thesis: ( t . s is even iff f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) A3: ( ((t . s) + 1) mod 2 = 0 or ((t . s) + 1) mod 2 = 1 ) by PRE_FF:6; A4: (t . s) + 1 = ((((t . s) + 1) div 2) * 2) + (((t . s) + 1) mod 2) by INT_1:59; (f . (s,(t is_even))) . b = ((t . s) + 1) mod 2 by Th48; hence ( t . s is even iff f . (s,(t is_even)) in (Funcs (X,INT)) \ (b,0) ) by A3, A4, Th2; ::_thesis: verum end; theorem :: AOFA_I00:51 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( ( s . x is odd implies g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( ( s . x is odd implies g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( ( s . x is odd implies g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( ( s . x is odd implies g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x being Variable of g holds ( ( s . x is odd implies g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) let f be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x being Variable of f holds ( ( s . x is odd implies f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) let x be Variable of f; ::_thesis: ( ( s . x is odd implies f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) (. x) . s = s . x by Th22; hence ( ( s . x is odd implies f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_odd)) in (Funcs (X,INT)) \ (b,0) implies s . x is odd ) & ( s . x is even implies f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) ) & ( f . (s,(x is_even)) in (Funcs (X,INT)) \ (b,0) implies s . x is even ) ) by Th50; ::_thesis: verum end; scheme :: AOFA_I00:sch 1 ForToIteration{ F1() -> Euclidean preIfWhileAlgebra, F2() -> non empty countable set , F3() -> Element of F2(), F4() -> Element of F1(), F5() -> Element of F1(), F6() -> Euclidean ExecutionFunction of F1(), Funcs (F2(),INT),(Funcs (F2(),INT)) \ (F3(),0), F7() -> Variable of F6(), F8() -> Variable of F6(), F9() -> Element of Funcs (F2(),INT), F10() -> INT-Expression of F1(),F6(), P1[ set ] } : ( P1[F6() . (F9(),F5())] & ( F10() . F9() <= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) + 1 ) & ( F10() . F9() > F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) provided A1: F5() = for-do ((F7() := F10()),(F7() leq F8()),(F7() += 1),F4()) and A2: P1[F6() . (F9(),(F7() := F10()))] and A3: for s being Element of Funcs (F2(),INT) st P1[s] holds ( P1[F6() . (s,(F4() \; (F7() += 1)))] & P1[F6() . (s,(F7() leq F8()))] ) and A4: for s being Element of Funcs (F2(),INT) st P1[s] holds ( (F6() . (s,F4())) . F7() = s . F7() & (F6() . (s,F4())) . F8() = s . F8() ) and A5: ( F8() <> F7() & F8() <> F3() & F7() <> F3() ) proof set C = F7() leq F8(); set S = Funcs (F2(),INT); reconsider s1 = F6() . (F9(),(F7() := F10())) as Element of Funcs (F2(),INT) ; reconsider s2 = F6() . (s1,(F7() leq F8())) as Element of Funcs (F2(),INT) ; A6: P1[s2] by A2, A3; defpred S1[ Element of Funcs (F2(),INT)] means ( P1[$1] & ( F10() . F9() <= F9() . F8() implies ($1 . F7()) - 1 <= F9() . F8() ) & $1 . F8() = F9() . F8() ); A7: s1 . F7() = F10() . F9() by Th26; then A8: s2 . F7() = F10() . F9() by A5, Th35; defpred S2[ Element of Funcs (F2(),INT)] means $1 . F7() <= $1 . F8(); set T = (Funcs (F2(),INT)) \ (F3(),0); A9: F6() complies_with_while_wrt (Funcs (F2(),INT)) \ (F3(),0) by AOFA_000:def_32; set II = F4() \; (F7() += 1); A10: F6() . (F9(),F5()) = F6() . (s1,(while ((F7() leq F8()),(F4() \; (F7() += 1))))) by A1, AOFA_000:def_29; (F10() . F9()) - 1 < F10() . F9() by XREAL_1:44; then A11: S1[s1] by A2, A5, A7, Th26, XXREAL_0:2; A12: s1 . F8() = F9() . F8() by A5, Th26; then A13: s2 . F8() = F9() . F8() by A5, Th35; percases ( F10() . F9() <= F9() . F8() or F10() . F9() > F9() . F8() ) ; supposeA14: F10() . F9() <= F9() . F8() ; ::_thesis: ( P1[F6() . (F9(),F5())] & ( F10() . F9() <= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) + 1 ) & ( F10() . F9() > F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) deffunc H1( Element of Funcs (F2(),INT)) -> Element of NAT = In (((($1 . F8()) + 1) - ($1 . F7())),NAT); defpred S3[ Element of Funcs (F2(),INT)] means ( P1[$1] & S2[$1] ); A15: for s being Element of Funcs (F2(),INT) st S1[s] & s in (Funcs (F2(),INT)) \ (F3(),0) & S2[s] holds S1[F6() . (s,(F4() \; (F7() += 1)))] proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S1[s] & s in (Funcs (F2(),INT)) \ (F3(),0) & S2[s] implies S1[F6() . (s,(F4() \; (F7() += 1)))] ) assume that A16: S1[s] and s in (Funcs (F2(),INT)) \ (F3(),0) and A17: S2[s] ; ::_thesis: S1[F6() . (s,(F4() \; (F7() += 1)))] thus P1[F6() . (s,(F4() \; (F7() += 1)))] by A3, A16; ::_thesis: ( ( F10() . F9() <= F9() . F8() implies ((F6() . (s,(F4() \; (F7() += 1)))) . F7()) - 1 <= F9() . F8() ) & (F6() . (s,(F4() \; (F7() += 1)))) . F8() = F9() . F8() ) reconsider s9 = F6() . (s,F4()) as Element of Funcs (F2(),INT) ; reconsider s99 = F6() . (s9,(F7() += 1)) as Element of Funcs (F2(),INT) ; A18: s99 = F6() . (s,(F4() \; (F7() += 1))) by AOFA_000:def_29; A19: s99 . F7() = (s9 . F7()) + 1 by Th28; s9 . F8() = s . F8() by A4, A16; hence ( ( F10() . F9() <= F9() . F8() implies ((F6() . (s,(F4() \; (F7() += 1)))) . F7()) - 1 <= F9() . F8() ) & (F6() . (s,(F4() \; (F7() += 1)))) . F8() = F9() . F8() ) by A4, A5, A16, A17, A19, A18, Th28; ::_thesis: verum end; A20: for s being Element of Funcs (F2(),INT) st S3[s] holds ( ( S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] implies F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] ) & H1(F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))) < H1(s) ) proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S3[s] implies ( ( S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] implies F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] ) & H1(F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))) < H1(s) ) ) reconsider s9 = F6() . (s,F4()) as Element of Funcs (F2(),INT) ; reconsider s99 = F6() . (s9,(F7() += 1)) as Element of Funcs (F2(),INT) ; reconsider s999 = F6() . (s99,(F7() leq F8())) as Element of Funcs (F2(),INT) ; A21: F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) = F6() . ((F6() . (s,(F4() \; (F7() += 1)))),(F7() leq F8())) by AOFA_000:def_29; A22: s99 . F8() = s9 . F8() by A5, Th28; A23: ( s99 . F7() <= s99 . F8() implies s999 . F3() = 1 ) by Th35; A24: ( s99 . F7() > s99 . F8() implies s999 . F3() = 0 ) by Th35; assume A25: S3[s] ; ::_thesis: ( ( S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] implies F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] ) & H1(F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))) < H1(s) ) then reconsider j = (s . F8()) - (s . F7()) as Element of NAT by INT_1:5; A26: s999 . F7() = s99 . F7() by A5, Th35; A27: s99 = F6() . (s,(F4() \; (F7() += 1))) by AOFA_000:def_29; then P1[s99] by A3, A25; hence ( S3[F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))] iff F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8()))) in (Funcs (F2(),INT)) \ (F3(),0) ) by A3, A5, A21, A27, A26, A24, A23, Th2, Th35; ::_thesis: H1(F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))) < H1(s) A28: s99 . F7() = (s9 . F7()) + 1 by Th28; A29: s9 . F8() = s . F8() by A4, A25; A30: s9 . F7() = s . F7() by A4, A25; s999 . F8() = s99 . F8() by A5, Th35; then H1(s999) = j by A26, A30, A29, A28, A22, FUNCT_7:def_1; then H1(s999) + 1 = H1(s) by FUNCT_7:def_1; hence H1(F6() . (s,((F4() \; (F7() += 1)) \; (F7() leq F8())))) < H1(s) by A21, A27, NAT_1:13; ::_thesis: verum end; A31: for s being Element of Funcs (F2(),INT) st S1[s] holds ( S1[F6() . (s,(F7() leq F8()))] & ( F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F7() leq F8()))] ) & ( S2[F6() . (s,(F7() leq F8()))] implies F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S1[s] implies ( S1[F6() . (s,(F7() leq F8()))] & ( F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F7() leq F8()))] ) & ( S2[F6() . (s,(F7() leq F8()))] implies F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) ) A32: ( s . F7() > s . F8() implies (F6() . (s,(F7() leq F8()))) . F3() = 0 ) by Th35; assume A33: S1[s] ; ::_thesis: ( S1[F6() . (s,(F7() leq F8()))] & ( F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F7() leq F8()))] ) & ( S2[F6() . (s,(F7() leq F8()))] implies F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) hence P1[F6() . (s,(F7() leq F8()))] by A3; ::_thesis: ( ( F10() . F9() <= F9() . F8() implies ((F6() . (s,(F7() leq F8()))) . F7()) - 1 <= F9() . F8() ) & (F6() . (s,(F7() leq F8()))) . F8() = F9() . F8() & ( F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F7() leq F8()))] ) & ( S2[F6() . (s,(F7() leq F8()))] implies F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) A34: ( s . F7() <= s . F8() implies (F6() . (s,(F7() leq F8()))) . F3() = 1 ) by Th35; (F6() . (s,(F7() leq F8()))) . F7() = s . F7() by A5, Th35; hence ( ( F10() . F9() <= F9() . F8() implies ((F6() . (s,(F7() leq F8()))) . F7()) - 1 <= F9() . F8() ) & (F6() . (s,(F7() leq F8()))) . F8() = F9() . F8() & ( F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F7() leq F8()))] ) & ( S2[F6() . (s,(F7() leq F8()))] implies F6() . (s,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) by A5, A33, A32, A34, Th2, Th35; ::_thesis: verum end; s2 . F3() = 1 by A7, A12, A14, Th35; then A35: ( F6() . (s1,(F7() leq F8())) in (Funcs (F2(),INT)) \ (F3(),0) iff S3[F6() . (s1,(F7() leq F8()))] ) by A2, A3, A5, A12, A8, A14, Th35; A36: F6() iteration_terminates_for (F4() \; (F7() += 1)) \; (F7() leq F8()),F6() . (s1,(F7() leq F8())) from AOFA_000:sch_3(A35, A20); A37: ( S1[F6() . (s1,(while ((F7() leq F8()),(F4() \; (F7() += 1)))))] & not S2[F6() . (s1,(while ((F7() leq F8()),(F4() \; (F7() += 1)))))] ) from AOFA_000:sch_5(A11, A36, A15, A31); then (F6() . (F9(),F5())) . F7() >= (F9() . F8()) + 1 by A10, INT_1:7; then ((F6() . (F9(),F5())) . F7()) - 1 >= ((F9() . F8()) + 1) - 1 by XREAL_1:13; then ((F6() . (F9(),F5())) . F7()) - 1 = F9() . F8() by A10, A14, A37, XXREAL_0:1; hence ( P1[F6() . (F9(),F5())] & ( F10() . F9() <= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) + 1 ) & ( F10() . F9() > F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) by A1, A14, A37, AOFA_000:def_29; ::_thesis: verum end; supposeA38: F10() . F9() > F9() . F8() ; ::_thesis: ( P1[F6() . (F9(),F5())] & ( F10() . F9() <= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) + 1 ) & ( F10() . F9() > F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) then s2 . F3() = 0 by A7, A12, Th35; then s2 nin (Funcs (F2(),INT)) \ (F3(),0) by Th2; hence ( P1[F6() . (F9(),F5())] & ( F10() . F9() <= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) + 1 ) & ( F10() . F9() > F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) by A9, A8, A13, A10, A6, A38, AOFA_000:def_31; ::_thesis: verum end; end; end; scheme :: AOFA_I00:sch 2 ForDowntoIteration{ F1() -> Euclidean preIfWhileAlgebra, F2() -> non empty countable set , F3() -> Element of F2(), F4() -> Element of F1(), F5() -> Element of F1(), F6() -> Euclidean ExecutionFunction of F1(), Funcs (F2(),INT),(Funcs (F2(),INT)) \ (F3(),0), F7() -> Variable of F6(), F8() -> Variable of F6(), F9() -> Element of Funcs (F2(),INT), F10() -> INT-Expression of F1(),F6(), P1[ set ] } : ( P1[F6() . (F9(),F5())] & ( F10() . F9() >= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) - 1 ) & ( F10() . F9() < F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) provided A1: F5() = for-do ((F7() := F10()),((. F8()) leq (. F7())),(F7() += (- 1)),F4()) and A2: P1[F6() . (F9(),(F7() := F10()))] and A3: for s being Element of Funcs (F2(),INT) st P1[s] holds ( P1[F6() . (s,(F4() \; (F7() += (- 1))))] & P1[F6() . (s,(F8() leq F7()))] ) and A4: for s being Element of Funcs (F2(),INT) st P1[s] holds ( (F6() . (s,F4())) . F7() = s . F7() & (F6() . (s,F4())) . F8() = s . F8() ) and A5: ( F8() <> F7() & F8() <> F3() & F7() <> F3() ) proof set S = Funcs (F2(),INT); reconsider s1 = F6() . (F9(),(F7() := F10())) as Element of Funcs (F2(),INT) ; set C = F8() leq F7(); reconsider s2 = F6() . (s1,(F8() leq F7())) as Element of Funcs (F2(),INT) ; A6: P1[s2] by A2, A3; defpred S1[ Element of Funcs (F2(),INT)] means ( P1[$1] & ( F10() . F9() >= F9() . F8() implies ($1 . F7()) + 1 >= F9() . F8() ) & $1 . F8() = F9() . F8() ); A7: s1 . F7() = F10() . F9() by Th26; then A8: S1[s1] by A2, A5, Th26, XREAL_1:39; A9: s2 . F7() = F10() . F9() by A5, A7, Th35; defpred S2[ Element of Funcs (F2(),INT)] means $1 . F7() >= $1 . F8(); set T = (Funcs (F2(),INT)) \ (F3(),0); A10: F6() complies_with_while_wrt (Funcs (F2(),INT)) \ (F3(),0) by AOFA_000:def_32; set II = F4() \; (F7() += (- 1)); A11: F6() . (F9(),F5()) = F6() . (s1,(while ((F8() leq F7()),(F4() \; (F7() += (- 1)))))) by A1, AOFA_000:def_29; A12: s1 . F8() = F9() . F8() by A5, Th26; then A13: s2 . F8() = F9() . F8() by A5, Th35; percases ( F10() . F9() >= F9() . F8() or F10() . F9() < F9() . F8() ) ; supposeA14: F10() . F9() >= F9() . F8() ; ::_thesis: ( P1[F6() . (F9(),F5())] & ( F10() . F9() >= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) - 1 ) & ( F10() . F9() < F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) deffunc H1( Element of Funcs (F2(),INT)) -> Element of NAT = In (((($1 . F7()) + 1) - ($1 . F8())),NAT); defpred S3[ Element of Funcs (F2(),INT)] means ( P1[$1] & S2[$1] ); A15: for s being Element of Funcs (F2(),INT) st S1[s] & s in (Funcs (F2(),INT)) \ (F3(),0) & S2[s] holds S1[F6() . (s,(F4() \; (F7() += (- 1))))] proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S1[s] & s in (Funcs (F2(),INT)) \ (F3(),0) & S2[s] implies S1[F6() . (s,(F4() \; (F7() += (- 1))))] ) assume that A16: S1[s] and s in (Funcs (F2(),INT)) \ (F3(),0) and A17: S2[s] ; ::_thesis: S1[F6() . (s,(F4() \; (F7() += (- 1))))] thus P1[F6() . (s,(F4() \; (F7() += (- 1))))] by A3, A16; ::_thesis: ( ( F10() . F9() >= F9() . F8() implies ((F6() . (s,(F4() \; (F7() += (- 1))))) . F7()) + 1 >= F9() . F8() ) & (F6() . (s,(F4() \; (F7() += (- 1))))) . F8() = F9() . F8() ) reconsider s99 = F6() . (s,F4()) as Element of Funcs (F2(),INT) ; reconsider s999 = F6() . (s99,(F7() += (- 1))) as Element of Funcs (F2(),INT) ; A18: s999 = F6() . (s,(F4() \; (F7() += (- 1)))) by AOFA_000:def_29; A19: s999 . F7() = (s99 . F7()) - 1 by Th28; s99 . F8() = s . F8() by A4, A16; hence ( ( F10() . F9() >= F9() . F8() implies ((F6() . (s,(F4() \; (F7() += (- 1))))) . F7()) + 1 >= F9() . F8() ) & (F6() . (s,(F4() \; (F7() += (- 1))))) . F8() = F9() . F8() ) by A4, A5, A16, A17, A19, A18, Th28; ::_thesis: verum end; A20: for s being Element of Funcs (F2(),INT) st S3[s] holds ( ( S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] implies F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] ) & H1(F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))) < H1(s) ) proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S3[s] implies ( ( S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] implies F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] ) & H1(F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))) < H1(s) ) ) reconsider s9 = F6() . (s,F4()) as Element of Funcs (F2(),INT) ; reconsider s99 = F6() . (s9,(F7() += (- 1))) as Element of Funcs (F2(),INT) ; reconsider s999 = F6() . (s99,(F8() leq F7())) as Element of Funcs (F2(),INT) ; A21: F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) = F6() . ((F6() . (s,(F4() \; (F7() += (- 1))))),(F8() leq F7())) by AOFA_000:def_29; A22: s99 . F8() = s9 . F8() by A5, Th28; A23: ( s99 . F7() >= s99 . F8() implies s999 . F3() = 1 ) by Th35; A24: ( s99 . F7() < s99 . F8() implies s999 . F3() = 0 ) by Th35; assume A25: S3[s] ; ::_thesis: ( ( S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] implies F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) ) & ( F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) implies S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] ) & H1(F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))) < H1(s) ) then reconsider j = (s . F7()) - (s . F8()) as Element of NAT by INT_1:5; A26: s999 . F7() = s99 . F7() by A5, Th35; A27: s99 = F6() . (s,(F4() \; (F7() += (- 1)))) by AOFA_000:def_29; then P1[s99] by A3, A25; hence ( S3[F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))] iff F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7()))) in (Funcs (F2(),INT)) \ (F3(),0) ) by A3, A5, A21, A27, A26, A24, A23, Th2, Th35; ::_thesis: H1(F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))) < H1(s) A28: s99 . F7() = (s9 . F7()) - 1 by Th28; A29: s9 . F8() = s . F8() by A4, A25; A30: s9 . F7() = s . F7() by A4, A25; s999 . F8() = s99 . F8() by A5, Th35; then H1(s999) = j by A26, A30, A29, A28, A22, FUNCT_7:def_1; then H1(s999) + 1 = H1(s) by FUNCT_7:def_1; hence H1(F6() . (s,((F4() \; (F7() += (- 1))) \; (F8() leq F7())))) < H1(s) by A21, A27, NAT_1:13; ::_thesis: verum end; A31: for s being Element of Funcs (F2(),INT) st S1[s] holds ( S1[F6() . (s,(F8() leq F7()))] & ( F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F8() leq F7()))] ) & ( S2[F6() . (s,(F8() leq F7()))] implies F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) proof let s be Element of Funcs (F2(),INT); ::_thesis: ( S1[s] implies ( S1[F6() . (s,(F8() leq F7()))] & ( F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F8() leq F7()))] ) & ( S2[F6() . (s,(F8() leq F7()))] implies F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) ) A32: ( s . F7() < s . F8() implies (F6() . (s,(F8() leq F7()))) . F3() = 0 ) by Th35; assume A33: S1[s] ; ::_thesis: ( S1[F6() . (s,(F8() leq F7()))] & ( F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F8() leq F7()))] ) & ( S2[F6() . (s,(F8() leq F7()))] implies F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) hence P1[F6() . (s,(F8() leq F7()))] by A3; ::_thesis: ( ( F10() . F9() >= F9() . F8() implies ((F6() . (s,(F8() leq F7()))) . F7()) + 1 >= F9() . F8() ) & (F6() . (s,(F8() leq F7()))) . F8() = F9() . F8() & ( F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F8() leq F7()))] ) & ( S2[F6() . (s,(F8() leq F7()))] implies F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) A34: ( s . F7() >= s . F8() implies (F6() . (s,(F8() leq F7()))) . F3() = 1 ) by Th35; (F6() . (s,(F8() leq F7()))) . F7() = s . F7() by A5, Th35; hence ( ( F10() . F9() >= F9() . F8() implies ((F6() . (s,(F8() leq F7()))) . F7()) + 1 >= F9() . F8() ) & (F6() . (s,(F8() leq F7()))) . F8() = F9() . F8() & ( F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) implies S2[F6() . (s,(F8() leq F7()))] ) & ( S2[F6() . (s,(F8() leq F7()))] implies F6() . (s,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) ) ) by A5, A33, A32, A34, Th2, Th35; ::_thesis: verum end; s2 . F3() = 1 by A7, A12, A14, Th35; then A35: ( F6() . (s1,(F8() leq F7())) in (Funcs (F2(),INT)) \ (F3(),0) iff S3[F6() . (s1,(F8() leq F7()))] ) by A2, A3, A5, A12, A9, A14, Th35; A36: F6() iteration_terminates_for (F4() \; (F7() += (- 1))) \; (F8() leq F7()),F6() . (s1,(F8() leq F7())) from AOFA_000:sch_3(A35, A20); A37: ( S1[F6() . (s1,(while ((F8() leq F7()),(F4() \; (F7() += (- 1))))))] & not S2[F6() . (s1,(while ((F8() leq F7()),(F4() \; (F7() += (- 1))))))] ) from AOFA_000:sch_5(A8, A36, A15, A31); then ((F6() . (F9(),F5())) . F7()) + 1 <= ((F9() . F8()) + 1) - 1 by A11, INT_1:7; then ((F6() . (F9(),F5())) . F7()) + 1 = F9() . F8() by A11, A14, A37, XXREAL_0:1; hence ( P1[F6() . (F9(),F5())] & ( F10() . F9() >= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) - 1 ) & ( F10() . F9() < F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) by A1, A14, A37, AOFA_000:def_29; ::_thesis: verum end; supposeA38: F10() . F9() < F9() . F8() ; ::_thesis: ( P1[F6() . (F9(),F5())] & ( F10() . F9() >= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) - 1 ) & ( F10() . F9() < F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) then s2 . F3() = 0 by A7, A12, Th35; then s2 nin (Funcs (F2(),INT)) \ (F3(),0) by Th2; hence ( P1[F6() . (F9(),F5())] & ( F10() . F9() >= F9() . F8() implies (F6() . (F9(),F5())) . F7() = (F9() . F8()) - 1 ) & ( F10() . F9() < F9() . F8() implies (F6() . (F9(),F5())) . F7() = F10() . F9() ) & (F6() . (F9(),F5())) . F8() = F9() . F8() ) by A10, A9, A13, A11, A6, A38, AOFA_000:def_31; ::_thesis: verum end; end; end; begin theorem Th52: :: AOFA_I00:52 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let I be Element of A; ::_thesis: for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let i, n be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) implies g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ) given d being Function such that A1: d . b = 0 and A2: d . n = 1 and A3: d . i = 2 ; ::_thesis: ( ex s being Element of Funcs (X,INT) st ( (g . (s,I)) . n = s . n implies not (g . (s,I)) . i = s . i ) or g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ) set J = i += 1; set C = i leq n; set S = Funcs (X,INT); set h = g; assume A4: for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ; ::_thesis: g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (((($1 . n) + 1) - ($1 . i)),NAT); defpred S1[ Element of Funcs (X,INT)] means $1 . i <= $1 . n; set T = (Funcs (X,INT)) \ (b,0); A5: i <> n by A2, A3; A6: for s being Element of Funcs (X,INT) st S1[s] holds ( ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) ) set s1 = g . (s,I); set q = g . (s,(I \; (i += 1))); set q1 = g . ((g . (s,(I \; (i += 1)))),(i leq n)); A7: g . (s,(I \; (i += 1))) = g . ((g . (s,I)),(i += 1)) by AOFA_000:def_29; (g . (s,I)) . i = s . i by A4; then (g . (s,(I \; (i += 1)))) . i = (s . i) + 1 by A7, Th28; then A8: (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (s . i) + 1 by A1, A3, Th35; A9: ( (g . (s,(I \; (i += 1)))) . i > (g . (s,(I \; (i += 1)))) . n implies (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 0 ) by Th35; assume S1[s] ; ::_thesis: ( ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) then reconsider ni = (s . n) - (s . i) as Element of NAT by INT_1:3, XREAL_1:48; A10: g . ((g . (s,(I \; (i += 1)))),(i leq n)) = g . (s,((I \; (i += 1)) \; (i leq n))) by AOFA_000:def_29; A11: ( (g . (s,(I \; (i += 1)))) . i <= (g . (s,(I \; (i += 1)))) . n implies (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 1 ) by Th35; (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (g . (s,(I \; (i += 1)))) . i by A1, A3, Th35; hence ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] iff g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) by A1, A2, A9, A11, A10, Th2, Th35; ::_thesis: H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) A12: H1(s) = ni + 1 by FUNCT_7:def_1; (g . (s,I)) . n = s . n by A4; then (g . (s,(I \; (i += 1)))) . n = s . n by A5, A7, Th28; then (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . n = s . n by A1, A2, Th35; then H1(g . ((g . (s,(I \; (i += 1)))),(i leq n))) = ni by A8, FUNCT_7:def_1; hence H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) by A10, A12, NAT_1:13; ::_thesis: verum end; reconsider s1 = g . (s,(i leq n)) as Element of Funcs (X,INT) ; A13: ( s . i > s . n implies s1 . b = 0 ) by Th35; A14: ( s . i <= s . n implies s1 . b = 1 ) by Th35; s1 . i = s . i by A1, A3, Th35; then A15: ( s1 in (Funcs (X,INT)) \ (b,0) iff S1[s1] ) by A1, A2, A13, A14, Th2, Th35; g iteration_terminates_for (I \; (i += 1)) \; (i leq n),s1 from AOFA_000:sch_3(A15, A6); hence g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ; ::_thesis: verum end; theorem Th53: :: AOFA_I00:53 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let X be non empty countable set ; ::_thesis: for s being Element of Funcs (X,INT) for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let s be Element of Funcs (X,INT); ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for P being set for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let P be set ; ::_thesis: for I being Element of A for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let I be Element of A; ::_thesis: for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) let i, n be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P implies g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ) given d being Function such that A1: d . b = 0 and A2: d . n = 1 and A3: d . i = 2 ; ::_thesis: ( ex s being Element of Funcs (X,INT) st ( s in P & not ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) or not s in P or g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ) set J = i += 1; set C = i leq n; set S = Funcs (X,INT); set h = g; assume that A4: for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) and A5: s in P ; ::_thesis: g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) defpred S1[ Element of Funcs (X,INT)] means $1 in P; reconsider s1 = g . (s,(i leq n)) as Element of Funcs (X,INT) ; A6: S1[s1] by A4, A5; deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (((($1 . n) + 1) - ($1 . i)),NAT); defpred S2[ Element of Funcs (X,INT)] means $1 . i <= $1 . n; set T = (Funcs (X,INT)) \ (b,0); A7: i <> n by A2, A3; A8: for s being Element of Funcs (X,INT) st S1[s] & s in (Funcs (X,INT)) \ (b,0) & S2[s] holds ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] & s in (Funcs (X,INT)) \ (b,0) & S2[s] implies ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) ) assume that A9: S1[s] and s in (Funcs (X,INT)) \ (b,0) and A10: S2[s] ; ::_thesis: ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) set q = g . (s,(I \; (i += 1))); set s1 = g . (s,I); set q1 = g . ((g . (s,(I \; (i += 1)))),(i leq n)); A11: g . (s,(I \; (i += 1))) = g . ((g . (s,I)),(i += 1)) by AOFA_000:def_29; (g . (s,I)) . i = s . i by A4, A9; then (g . (s,(I \; (i += 1)))) . i = (s . i) + 1 by A11, Th28; then A12: (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (s . i) + 1 by A1, A3, Th35; reconsider ni = (s . n) - (s . i) as Element of NAT by A10, INT_1:3, XREAL_1:48; A13: H1(s) = ni + 1 by FUNCT_7:def_1; A14: ( (g . (s,(I \; (i += 1)))) . i <= (g . (s,(I \; (i += 1)))) . n implies (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 1 ) by Th35; A15: g . ((g . (s,(I \; (i += 1)))),(i leq n)) = g . (s,((I \; (i += 1)) \; (i leq n))) by AOFA_000:def_29; S1[g . (s,I)] by A4, A9; then S1[g . (s,(I \; (i += 1)))] by A4, A11; hence S1[g . (s,((I \; (i += 1)) \; (i leq n)))] by A4, A15; ::_thesis: ( ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) A16: ( (g . (s,(I \; (i += 1)))) . i > (g . (s,(I \; (i += 1)))) . n implies (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 0 ) by Th35; (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (g . (s,(I \; (i += 1)))) . i by A1, A3, Th35; hence ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] iff g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) by A1, A2, A16, A14, A15, Th2, Th35; ::_thesis: H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) (g . (s,I)) . n = s . n by A4, A9; then (g . (s,(I \; (i += 1)))) . n = s . n by A7, A11, Th28; then (g . ((g . (s,(I \; (i += 1)))),(i leq n))) . n = s . n by A1, A2, Th35; then H1(g . ((g . (s,(I \; (i += 1)))),(i leq n))) = ni by A12, FUNCT_7:def_1; hence H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) by A15, A13, NAT_1:13; ::_thesis: verum end; A17: ( s . i > s . n implies s1 . b = 0 ) by Th35; A18: ( s . i <= s . n implies s1 . b = 1 ) by Th35; s1 . i = s . i by A1, A3, Th35; then A19: ( s1 in (Funcs (X,INT)) \ (b,0) iff S2[s1] ) by A1, A2, A17, A18, Th2, Th35; g iteration_terminates_for (I \; (i += 1)) \; (i leq n),s1 from AOFA_000:sch_4(A6, A19, A8); hence g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) ; ::_thesis: verum end; theorem Th54: :: AOFA_I00:54 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let t be INT-Expression of A,f; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for I being Element of A st I is_terminating_wrt g holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let I be Element of A; ::_thesis: ( I is_terminating_wrt g implies for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g ) assume A1: I is_terminating_wrt g ; ::_thesis: for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let i, n be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) implies for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g ) i += 1 is_terminating_wrt g by AOFA_000:104; then A2: I \; (i += 1) is_terminating_wrt g by A1, AOFA_000:110; set Q = while ((i leq n),(I \; (i += 1))); given d being Function such that A3: d . b = 0 and A4: d . n = 1 and A5: d . i = 2 ; ::_thesis: ( ex s being Element of Funcs (X,INT) st ( (g . (s,I)) . n = s . n implies not (g . (s,I)) . i = s . i ) or for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g ) assume A6: for s being Element of Funcs (X,INT) holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ; ::_thesis: for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g let s be Element of Funcs (X,INT); :: according to AOFA_000:def_37 ::_thesis: [s,(for-do ((i := t),(i leq n),(i += 1),I))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) A7: [s,(i := t)] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_36; A8: i leq n is_terminating_wrt g by AOFA_000:104; g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . ((g . (s,(i := t))),(i leq n)) by A3, A4, A5, A6, Th52; then [(g . (s,(i := t))),(while ((i leq n),(I \; (i += 1))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A8, A2, AOFA_000:114; hence [s,(for-do ((i := t),(i leq n),(i += 1),I))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A7, AOFA_000:def_35; ::_thesis: verum end; theorem :: AOFA_I00:55 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let X be non empty countable set ; ::_thesis: for T being Subset of (Funcs (X,INT)) for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let T be Subset of (Funcs (X,INT)); ::_thesis: for f being Euclidean ExecutionFunction of A, Funcs (X,INT),T for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; ::_thesis: for t being INT-Expression of A,f for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let t be INT-Expression of A,f; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for P being set for I being Element of A st I is_terminating_wrt g,P holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & P is_invariant_wrt i := t,g & P is_invariant_wrt I,g & P is_invariant_wrt i leq n,g & P is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,P set Z = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let S be set ; ::_thesis: for I being Element of A st I is_terminating_wrt g,S holds for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & S is_invariant_wrt i := t,g & S is_invariant_wrt I,g & S is_invariant_wrt i leq n,g & S is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S let I be Element of A; ::_thesis: ( I is_terminating_wrt g,S implies for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & S is_invariant_wrt i := t,g & S is_invariant_wrt I,g & S is_invariant_wrt i leq n,g & S is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S ) assume A1: I is_terminating_wrt g,S ; ::_thesis: for i, n being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & S is_invariant_wrt i := t,g & S is_invariant_wrt I,g & S is_invariant_wrt i leq n,g & S is_invariant_wrt i += 1,g holds for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S let i, n be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) & S is_invariant_wrt i := t,g & S is_invariant_wrt I,g & S is_invariant_wrt i leq n,g & S is_invariant_wrt i += 1,g implies for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S ) given d being Function such that A2: d . b = 0 and A3: d . n = 1 and A4: d . i = 2 ; ::_thesis: ( ex s being Element of Funcs (X,INT) st ( s in S & not ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) ) or not S is_invariant_wrt i := t,g or not S is_invariant_wrt I,g or not S is_invariant_wrt i leq n,g or not S is_invariant_wrt i += 1,g or for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S ) set C = i leq n; set J = I \; (i += 1); assume that A5: for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i ) and A6: S is_invariant_wrt i := t,g and A7: S is_invariant_wrt I,g and A8: S is_invariant_wrt i leq n,g and A9: S is_invariant_wrt i += 1,g ; ::_thesis: for-do ((i := t),(i leq n),(i += 1),I) is_terminating_wrt g,S let s be Element of Funcs (X,INT); :: according to AOFA_000:def_38 ::_thesis: ( not s in S or [s,(for-do ((i := t),(i leq n),(i += 1),I))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) ) assume s in S ; ::_thesis: [s,(for-do ((i := t),(i leq n),(i += 1),I))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) then A10: g . (s,(i := t)) in S by A6, AOFA_000:def_39; for s being Element of Funcs (X,INT) st s in S holds ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in S & g . (s,(i leq n)) in S & g . (s,(i += 1)) in S ) by A5, A7, A8, A9, AOFA_000:def_39; then A11: g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . ((g . (s,(i := t))),(i leq n)) by A2, A3, A4, A10, Th53; set Q = while ((i leq n),(I \; (i += 1))); A12: i leq n is_terminating_wrt g by AOFA_000:104; A13: [s,(i := t)] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_36; S is_invariant_wrt I \; (i += 1),g by A7, A9, AOFA_000:109; then A14: for s being Element of Funcs (X,INT) st s in S & g . ((g . (s,(I \; (i += 1)))),(i leq n)) in (Funcs (X,INT)) \ (b,0) holds g . (s,(I \; (i += 1))) in S by AOFA_000:def_39; i += 1 is_terminating_wrt g,S by AOFA_000:107; then [(g . (s,(i := t))),(while ((i leq n),(I \; (i += 1))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A1, A7, A8, A10, A11, A12, A14, AOFA_000:111, AOFA_000:116; hence [s,(for-do ((i := t),(i leq n),(i += 1),I))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A13, AOFA_000:def_35; ::_thesis: verum end; begin definition let X be non empty countable set ; let A be Euclidean preIfWhileAlgebra; let T be Subset of (Funcs (X,INT)); let f be Euclidean ExecutionFunction of A, Funcs (X,INT),T; let s be Element of Funcs (X,INT); let I be Element of A; :: original: . redefine funcf . (s,I) -> Element of Funcs (X,INT); coherence f . (s,I) is Element of Funcs (X,INT) proof f . (s,I) is Element of Funcs (X,INT) ; hence f . (s,I) is Element of Funcs (X,INT) ; ::_thesis: verum end; end; theorem :: AOFA_I00:56 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let n, s, i be Variable of g; ::_thesis: ( ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) implies (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g ) given d being Function such that A1: d . n = 1 and A2: d . s = 2 and A3: d . i = 3 and A4: d . b = 4 ; ::_thesis: (s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))) is_terminating_wrt g A5: s <> n by A1, A2; s <> i by A2, A3; then A6: for q being Element of Funcs (X,INT) holds ( (g . (q,(s *= i))) . n = q . n & (g . (q,(s *= i))) . i = q . i ) by A5, Th33; A7: n <> b by A1, A4; A8: b <> i by A3, A4; let q be Element of Funcs (X,INT); :: according to AOFA_000:def_37 ::_thesis: [q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) set t = . (2,A,g); i <> n by A1, A3; then ex d9 being Function st ( d9 . b = 0 & d9 . n = 1 & d9 . i = 2 ) by A8, A7, Th1; then for-do ((i := (. (2,A,g))),(i leq n),(i += 1),(s *= i)) is_terminating_wrt g by A6, Th54, AOFA_000:104; then A9: [(g . (q,(s := 1))),(for-do ((i := (. (2,A,g))),(i leq n),(i += 1),(s *= i)))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_37; [q,(s := 1)] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_36; hence [q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A9, AOFA_000:def_35; ::_thesis: verum end; theorem :: AOFA_I00:57 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! set f = g; let n, s, i be Variable of g; ::_thesis: ( ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) implies for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! ) given d being Function such that A1: d . n = 1 and A2: d . s = 2 and A3: d . i = 3 and A4: d . b = 4 ; ::_thesis: for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! A5: ( n <> i & n <> b & i <> b ) by A1, A3, A4; set S = Funcs (X,INT); let q be Element of Funcs (X,INT); ::_thesis: for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! reconsider q1 = g . (q,(s := 1)) as Element of Funcs (X,INT) ; defpred S1[ Element of Funcs (X,INT)] means ex K being Nat st ( K = ($1 . i) - 1 & $1 . s = K ! ); reconsider a = . (2,A,g) as INT-Expression of A,g ; reconsider q2 = g . (q1,(i := 2)) as Element of Funcs (X,INT) ; A6: q2 . i = 2 by Th25; A7: s <> i by A2, A3; then q2 . s = q1 . s by Th25; then A8: S1[g . (q1,(i := a))] by A6, Th25, NEWTON:13; set I = s *= i; A9: a . q1 = 2 by FUNCOP_1:7; A10: s <> b by A2, A4; A11: for q being Element of Funcs (X,INT) st S1[q] holds ( S1[g . (q,((s *= i) \; (i += 1)))] & S1[g . (q,(i leq n))] ) proof let q be Element of Funcs (X,INT); ::_thesis: ( S1[q] implies ( S1[g . (q,((s *= i) \; (i += 1)))] & S1[g . (q,(i leq n))] ) ) given Ki being Nat such that A12: Ki = (q . i) - 1 and A13: q . s = Ki ! ; ::_thesis: ( S1[g . (q,((s *= i) \; (i += 1)))] & S1[g . (q,(i leq n))] ) reconsider q3 = g . (q,(s *= i)) as Element of Funcs (X,INT) ; reconsider q4 = g . (q3,(i += 1)) as Element of Funcs (X,INT) ; A14: q3 . s = (q . s) * (q . i) by Th33; q4 . s = q3 . s by A7, Th28; then A15: q4 . s = (Ki + 1) ! by A12, A13, A14, NEWTON:15; A16: q4 = g . (q,((s *= i) \; (i += 1))) by AOFA_000:def_29; q4 . i = (q3 . i) + 1 by Th28; then Ki + 1 = (q4 . i) - 1 by A7, A12, Th33; hence S1[g . (q,((s *= i) \; (i += 1)))] by A16, A15; ::_thesis: S1[g . (q,(i leq n))] reconsider q9 = g . (q,(i leq n)) as Element of Funcs (X,INT) ; A17: q9 . i = q . i by A5, Th35; q9 . s = q . s by A10, Th35; hence S1[g . (q,(i leq n))] by A12, A13, A17; ::_thesis: verum end; reconsider F = for-do ((i := a),(i leq n),(i += 1),(s *= i)) as Element of A ; let N be Nat; ::_thesis: ( N = q . n implies (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! ) assume A18: N = q . n ; ::_thesis: (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = N ! A19: F = for-do ((i := a),(i leq n),(i += 1),(s *= i)) ; A20: s <> n by A1, A2; then A21: q1 . n = q . n by Th25; A22: for q being Element of Funcs (X,INT) st S1[q] holds ( (g . (q,(s *= i))) . i = q . i & (g . (q,(s *= i))) . n = q . n ) by A20, A7, Th32; A23: ( S1[g . (q1,F)] & ( a . q1 <= q1 . n implies (g . (q1,F)) . i = (q1 . n) + 1 ) & ( a . q1 > q1 . n implies (g . (q1,F)) . i = a . q1 ) & (g . (q1,F)) . n = q1 . n ) from AOFA_I00:sch_1(A19, A8, A11, A22, A5); thus (g . (q,((s := 1) \; (for-do ((i := 2),(i leq n),(i += 1),(s *= i)))))) . s = (g . (q1,F)) . s by AOFA_000:def_29 .= N ! by A18, A21, A23, A9, NAT_1:26, NEWTON:12, NEWTON:13 ; ::_thesis: verum end; theorem :: AOFA_I00:58 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, n, s, i being Variable of g st ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, n, s, i be Variable of g; ::_thesis: ( ex d being Function st ( d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) implies (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g ) given d being Function such that A1: d . n = 1 and A2: d . s = 2 and A3: d . i = 3 and A4: d . b = 4 ; ::_thesis: (s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))) is_terminating_wrt g A5: s <> n by A1, A2; s <> i by A2, A3; then A6: for q being Element of Funcs (X,INT) holds ( (g . (q,(s *= x))) . n = q . n & (g . (q,(s *= x))) . i = q . i ) by A5, Th33; A7: n <> b by A1, A4; A8: b <> i by A3, A4; let q be Element of Funcs (X,INT); :: according to AOFA_000:def_37 ::_thesis: [q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) set t = . (1,A,g); i <> n by A1, A3; then ex d9 being Function st ( d9 . b = 0 & d9 . n = 1 & d9 . i = 2 ) by A8, A7, Th1; then for-do ((i := (. (1,A,g))),(i leq n),(i += 1),(s *= x)) is_terminating_wrt g by A6, Th54, AOFA_000:104; then A9: [(g . (q,(s := 1))),(for-do ((i := (. (1,A,g))),(i leq n),(i += 1),(s *= x)))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_37; [q,(s := 1)] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_36; hence [q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A9, AOFA_000:def_35; ::_thesis: verum end; theorem :: AOFA_I00:59 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, n, s, i being Variable of g st ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, n, s, i being Variable of g st ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) holds for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N set f = g; let x, n, s, i be Variable of g; ::_thesis: ( ex d being Function st ( d . x = 0 & d . n = 1 & d . s = 2 & d . i = 3 & d . b = 4 ) implies for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N ) given d being Function such that A1: d . x = 0 and A2: d . n = 1 and A3: d . s = 2 and A4: d . i = 3 and A5: d . b = 4 ; ::_thesis: for q being Element of Funcs (X,INT) for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N A6: ( n <> i & n <> b & i <> b ) by A2, A4, A5; set S = Funcs (X,INT); let q be Element of Funcs (X,INT); ::_thesis: for N being Nat st N = q . n holds (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N reconsider q1 = g . (q,(s := 1)) as Element of Funcs (X,INT) ; reconsider q2 = g . (q1,(i := 1)) as Element of Funcs (X,INT) ; A7: s <> i by A3, A4; then A8: q2 . s = q1 . s by Th25; defpred S1[ Element of Funcs (X,INT)] means ex K being Nat st ( K = ($1 . i) - 1 & $1 . s = (q . x) |^ K & $1 . x = q . x ); set I = s *= x; set q0 = q; A9: (q . x) |^ 0 = 1 by NEWTON:4; A10: s <> n by A2, A3; then A11: for q being Element of Funcs (X,INT) st S1[q] holds ( (g . (q,(s *= x))) . i = q . i & (g . (q,(s *= x))) . n = q . n ) by A7, Th32; A12: s <> b by A3, A5; A13: for q being Element of Funcs (X,INT) st S1[q] holds ( S1[g . (q,((s *= x) \; (i += 1)))] & S1[g . (q,(i leq n))] ) proof let q be Element of Funcs (X,INT); ::_thesis: ( S1[q] implies ( S1[g . (q,((s *= x) \; (i += 1)))] & S1[g . (q,(i leq n))] ) ) given Ki being Nat such that A14: Ki = (q . i) - 1 and A15: q . s = (q . x) |^ Ki and A16: q . x = q . x ; ::_thesis: ( S1[g . (q,((s *= x) \; (i += 1)))] & S1[g . (q,(i leq n))] ) reconsider q3 = g . (q,(s *= x)) as Element of Funcs (X,INT) ; reconsider q4 = g . (q3,(i += 1)) as Element of Funcs (X,INT) ; A17: q3 . s = (q . s) * (q . x) by Th33; q4 . s = q3 . s by A7, Th28; then A18: q4 . s = (q . x) |^ (Ki + 1) by A15, A16, A17, NEWTON:6; A19: q4 = g . (q,((s *= x) \; (i += 1))) by AOFA_000:def_29; A20: q3 . x = q . x by A1, A3, Th33; q4 . i = (q3 . i) + 1 by Th28; then Ki + 1 = (q4 . i) - 1 by A7, A14, Th33; hence S1[g . (q,((s *= x) \; (i += 1)))] by A1, A4, A16, A19, A20, A18, Th28; ::_thesis: S1[g . (q,(i leq n))] reconsider q9 = g . (q,(i leq n)) as Element of Funcs (X,INT) ; A21: q9 . s = q . s by A12, Th35; A22: q9 . i = q . i by A6, Th35; q9 . x = q . x by A1, A5, Th35; hence S1[g . (q,(i leq n))] by A14, A15, A16, A21, A22; ::_thesis: verum end; reconsider a = . (1,A,g) as INT-Expression of A,g ; reconsider F = for-do ((i := a),(i leq n),(i += 1),(s *= x)) as Element of A ; A23: F = for-do ((i := a),(i leq n),(i += 1),(s *= x)) ; A24: q2 . i = 1 by Th25; A25: q2 . x = q1 . x by A1, A4, Th25; A26: q1 . s = 1 by Th25; q1 . x = q . x by A1, A3, Th25; then A27: S1[g . (q1,(i := a))] by A26, A8, A24, A25, A9; A28: ( S1[g . (q1,F)] & ( a . q1 <= q1 . n implies (g . (q1,F)) . i = (q1 . n) + 1 ) & ( a . q1 > q1 . n implies (g . (q1,F)) . i = a . q1 ) & (g . (q1,F)) . n = q1 . n ) from AOFA_I00:sch_1(A23, A27, A13, A11, A6); A29: ((q . n) + 1) - 1 = q . n ; A30: q1 . n = q . n by A10, Th25; let N be Nat; ::_thesis: ( N = q . n implies (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N ) assume A31: N = q . n ; ::_thesis: (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (q . x) |^ N A32: ( N = 0 or N >= 1 ) by NAT_1:25; thus (g . (q,((s := 1) \; (for-do ((i := 1),(i leq n),(i += 1),(s *= x)))))) . s = (g . (q1,F)) . s by AOFA_000:def_29 .= (q . x) |^ N by A31, A30, A29, A28, A32, FUNCOP_1:7 ; ::_thesis: verum end; theorem :: AOFA_I00:60 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let n, x, y, z, i be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) implies ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g ) given d being Function such that A1: d . b = 0 and A2: d . n = 1 and A3: d . x = 2 and A4: d . y = 3 and A5: d . z = 4 and A6: d . i = 5 ; ::_thesis: ((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))) is_terminating_wrt g A7: i <> y by A4, A6; A8: n <> z by A2, A5; A9: n <> y by A2, A4; A10: n <> x by A2, A3; A11: i <> z by A5, A6; set I = ((z := x) \; (x := y)) \; (y += z); set I1 = z := x; set I2 = x := y; set I3 = y += z; A12: i <> x by A3, A6; A13: for q being Element of Funcs (X,INT) holds ( (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . n = q . n & (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . i = q . i ) proof let q be Element of Funcs (X,INT); ::_thesis: ( (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . n = q . n & (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . i = q . i ) thus (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . n = (g . ((g . (q,((z := x) \; (x := y)))),(y += z))) . n by AOFA_000:def_29 .= (g . (q,((z := x) \; (x := y)))) . n by A9, Th30 .= (g . ((g . (q,(z := x))),(x := y))) . n by AOFA_000:def_29 .= (g . (q,(z := x))) . n by A10, Th27 .= q . n by A8, Th27 ; ::_thesis: (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . i = q . i thus (g . (q,(((z := x) \; (x := y)) \; (y += z)))) . i = (g . ((g . (q,((z := x) \; (x := y)))),(y += z))) . i by AOFA_000:def_29 .= (g . (q,((z := x) \; (x := y)))) . i by A7, Th30 .= (g . ((g . (q,(z := x))),(x := y))) . i by AOFA_000:def_29 .= (g . (q,(z := x))) . i by A12, Th27 .= q . i by A11, Th27 ; ::_thesis: verum end; let s be Element of Funcs (X,INT); :: according to AOFA_000:def_37 ::_thesis: [s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) set s2 = g . (s,((x := 0) \; (y := 1))); i <> n by A2, A6; then ex d9 being Function st ( d9 . b = 0 & d9 . n = 1 & d9 . i = 2 ) by A1, A2, A6, Th1; then for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))) is_terminating_wrt g by A13, Th54, AOFA_000:104; then A14: [(g . (s,((x := 0) \; (y := 1)))),(for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_37; [s,((x := 0) \; (y := 1))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by AOFA_000:def_36; hence [s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z)))))] in TerminatingPrograms (A,(Funcs (X,INT)),((Funcs (X,INT)) \ (b,0)),g) by A14, AOFA_000:def_35; ::_thesis: verum end; theorem :: AOFA_I00:61 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for n, x, y, z, i being Variable of g st ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) holds for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N A1: 0 + 1 = 1 ; set S = Funcs (X,INT); let n, x, y, z, i be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . n = 1 & d . x = 2 & d . y = 3 & d . z = 4 & d . i = 5 ) implies for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N ) given d being Function such that A2: d . b = 0 and A3: d . n = 1 and A4: d . x = 2 and A5: d . y = 3 and A6: d . z = 4 and A7: d . i = 5 ; ::_thesis: for s being Element of Funcs (X,INT) for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N A8: n <> x by A3, A4; A9: y <> z by A5, A6; A10: x <> z by A4, A6; A11: i <> z by A6, A7; A12: n <> y by A3, A5; let s be Element of Funcs (X,INT); ::_thesis: for N being Element of NAT st N = s . n holds (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N reconsider s1 = g . (s,(x := 0)) as Element of Funcs (X,INT) ; reconsider s2 = g . (s1,(y := 1)) as Element of Funcs (X,INT) ; reconsider s4 = g . (s2,(i := 1)) as Element of Funcs (X,INT) ; A13: s4 . i = 1 by Th25; A14: i <> y by A5, A7; then A15: s4 . y = s2 . y by Th25; set I = ((z := x) \; (x := y)) \; (y += z); A16: s2 . y = 1 by Th25; A17: i <> x by A4, A7; then A18: s4 . x = s2 . x by Th25; defpred S1[ Element of Funcs (X,INT)] means ex N being Element of NAT st ( N = ($1 . i) - 1 & $1 . x = Fib N & $1 . y = Fib (N + 1) ); reconsider a = . (1,A,g) as INT-Expression of A,g ; A19: s1 . x = 0 by Th25; A20: x <> y by A4, A5; then s2 . x = s1 . x by Th25; then A21: S1[g . (s2,(i := a))] by A19, A16, A15, A18, A13, A1, PRE_FF:1; A22: n <> z by A3, A6; A23: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_ (_(g_._(s,(((z_:=_x)_\;_(x_:=_y))_\;_(y_+=_z))))_._i_=_s_._i_&_(g_._(s,(((z_:=_x)_\;_(x_:=_y))_\;_(y_+=_z))))_._n_=_s_._n_&_(g_._(s,(((z_:=_x)_\;_(x_:=_y))_\;_(y_+=_z))))_._x_=_s_._y_&_(g_._(s,(((z_:=_x)_\;_(x_:=_y))_\;_(y_+=_z))))_._y_=_(s_._x)_+_(s_._y)_) let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . i = s . i & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . n = s . n & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . x = s . y & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . y = (s . x) + (s . y) ) reconsider s1 = g . (s,(z := x)) as Element of Funcs (X,INT) ; reconsider s2 = g . (s1,(x := y)) as Element of Funcs (X,INT) ; reconsider s3 = g . (s2,(y += z)) as Element of Funcs (X,INT) ; A24: g . (s,(((z := x) \; (x := y)) \; (y += z))) = g . ((g . (s,((z := x) \; (x := y)))),(y += z)) by AOFA_000:def_29 .= s3 by AOFA_000:def_29 ; A25: s1 . z = s . x by Th27; A26: s2 . n = s1 . n by A8, Th27; A27: s1 . i = s . i by A11, Th27; A28: s2 . z = s1 . z by A10, Th27; A29: s2 . y = s1 . y by A20, Th27; A30: s2 . i = s1 . i by A17, Th27; A31: s1 . y = s . y by A9, Th27; A32: s2 . x = s1 . y by Th27; s1 . n = s . n by A22, Th27; hence ( (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . i = s . i & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . n = s . n & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . x = s . y & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . y = (s . x) + (s . y) ) by A12, A14, A20, A31, A25, A27, A26, A32, A29, A28, A30, A24, Th30; ::_thesis: verum end; A33: for s being Element of Funcs (X,INT) st S1[s] holds ( S1[g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))] & S1[g . (s,(i leq n))] ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( S1[g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))] & S1[g . (s,(i leq n))] ) ) given N being Element of NAT such that A34: N = (s . i) - 1 and A35: s . x = Fib N and A36: s . y = Fib (N + 1) ; ::_thesis: ( S1[g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))] & S1[g . (s,(i leq n))] ) reconsider s1 = g . (s,(((z := x) \; (x := y)) \; (y += z))) as Element of Funcs (X,INT) ; reconsider s2 = g . (s1,(i += 1)) as Element of Funcs (X,INT) ; A37: s1 . x = s . y by A23; A38: s2 . i = (s1 . i) + 1 by Th28; A39: s1 . y = (s . x) + (s . y) by A23; A40: s2 . y = s1 . y by A14, Th28; thus S1[g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))] ::_thesis: S1[g . (s,(i leq n))] proof take N + 1 ; ::_thesis: ( N + 1 = ((g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . i) - 1 & (g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . x = Fib (N + 1) & (g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . y = Fib ((N + 1) + 1) ) g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1))) = s2 by AOFA_000:def_29; hence ( N + 1 = ((g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . i) - 1 & (g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . x = Fib (N + 1) & (g . (s,((((z := x) \; (x := y)) \; (y += z)) \; (i += 1)))) . y = Fib ((N + 1) + 1) ) by A17, A23, A34, A35, A36, A37, A39, A40, A38, Th28, PRE_FF:1; ::_thesis: verum end; take N ; ::_thesis: ( N = ((g . (s,(i leq n))) . i) - 1 & (g . (s,(i leq n))) . x = Fib N & (g . (s,(i leq n))) . y = Fib (N + 1) ) thus ( N = ((g . (s,(i leq n))) . i) - 1 & (g . (s,(i leq n))) . x = Fib N & (g . (s,(i leq n))) . y = Fib (N + 1) ) by A2, A4, A5, A7, A34, A35, A36, Th35; ::_thesis: verum end; reconsider F = for-do ((i := a),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))) as Element of A ; reconsider s3 = g . (s2,(for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))) as Element of Funcs (X,INT) ; let N be Element of NAT ; ::_thesis: ( N = s . n implies (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N ) assume A41: N = s . n ; ::_thesis: (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N A42: F = for-do ((i := a),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))) ; g . (s,((x := 0) \; (y := 1))) = s2 by AOFA_000:def_29; then A43: g . (s,(((x := 0) \; (y := 1)) \; F)) = s3 by AOFA_000:def_29; A44: ( ( 0 <= N & N <= 0 ) or N >= 0 + 1 ) by NAT_1:13; A45: ( n <> i & n <> b & i <> b ) by A2, A3, A7; A46: a . s2 = 1 by FUNCOP_1:7; A47: for s being Element of Funcs (X,INT) st S1[s] holds ( (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . i = s . i & (g . (s,(((z := x) \; (x := y)) \; (y += z)))) . n = s . n ) by A23; A48: ( S1[g . (s2,F)] & ( a . s2 <= s2 . n implies (g . (s2,F)) . i = (s2 . n) + 1 ) & ( a . s2 > s2 . n implies (g . (s2,F)) . i = a . s2 ) & (g . (s2,F)) . n = s2 . n ) from AOFA_I00:sch_1(A42, A21, A33, A47, A45); s2 . n = s1 . n by A12, Th25; hence (g . (s,(((x := 0) \; (y := 1)) \; (for-do ((i := 1),(i leq n),(i += 1),(((z := x) \; (x := y)) \; (y += z))))))) . x = Fib N by A41, A43, A8, A48, A44, A46, Th25; ::_thesis: verum end; Lm1: for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) set h = g; set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) ) given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . z = 3 ; ::_thesis: for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) A5: z <> x by A2, A4; let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) & ( for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) set I = (((z := x) \; (z %= y)) \; (x := y)) \; (y := z); A6: y <> z by A3, A4; A7: x <> y by A2, A3; A8: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_ (_(g_._(s,((((z_:=_x)_\;_(z_%=_y))_\;_(x_:=_y))_\;_(y_:=_z))))_._x_=_s_._y_&_(g_._(s,((((z_:=_x)_\;_(z_%=_y))_\;_(x_:=_y))_\;_(y_:=_z))))_._y_=_(s_._x)_mod_(s_._y)_) let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) ) reconsider s1 = g . (s,(z := x)) as Element of Funcs (X,INT) ; reconsider s2 = g . (s1,(z %= y)) as Element of Funcs (X,INT) ; reconsider s3 = g . (s2,(x := y)) as Element of Funcs (X,INT) ; reconsider s4 = g . (s3,(y := z)) as Element of Funcs (X,INT) ; A9: g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) = g . ((g . (s,(((z := x) \; (z %= y)) \; (x := y)))),(y := z)) by AOFA_000:def_29 .= g . ((g . ((g . (s,((z := x) \; (z %= y)))),(x := y))),(y := z)) by AOFA_000:def_29 .= s4 by AOFA_000:def_29 ; A10: s1 . z = s . x by Th27; A11: s2 . y = s1 . y by A6, Th44; A12: s2 . z = (s1 . z) mod (s1 . y) by Th44; A13: s3 . z = s2 . z by A5, Th27; A14: s3 . x = s2 . y by Th27; s1 . y = s . y by A6, Th27; hence ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) ) by A7, A9, A10, A11, A12, A14, A13, Th27; ::_thesis: verum end; hence ( (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) ) ; ::_thesis: for n, m being Element of NAT holds not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (($1 . y),NAT); defpred S1[ Element of Funcs (X,INT)] means $1 . y > 0 ; set C = y gt 0; A15: for s being Element of Funcs (X,INT) st S1[s] holds ( ( S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( ( S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) ) assume A16: s . y > 0 ; ::_thesis: ( ( S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) reconsider s9 = g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) as Element of Funcs (X,INT) ; A17: s9 . y = (s . x) mod (s . y) by A8; then A18: 0 <= s9 . y by A16, NEWTON:64; reconsider s99 = g . (s9,(y gt 0)) as Element of Funcs (X,INT) ; A19: g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) = s99 by AOFA_000:def_29; A20: ( s9 . y <= 0 implies s99 . b = 0 ) by Th38; ( s9 . y > 0 implies s99 . b = 1 ) by Th38; hence ( S1[g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))] iff g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) by A19, A20, Th2, Th38; ::_thesis: H1(g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) s99 . y = s9 . y by A1, A3, Th38; then A21: H1(s99) = s9 . y by A18, FUNCT_7:def_1, INT_1:3; A22: s9 . y < s . y by A16, A17, NEWTON:65; then H1(s) = s . y by A18, FUNCT_7:def_1, INT_1:3; hence H1(g . (s,(((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) by A22, A21, AOFA_000:def_29; ::_thesis: verum end; let n, m be Element of NAT ; ::_thesis: not ( m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) & not g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) assume A23: m = s . y ; ::_thesis: ( ( s in (Funcs (X,INT)) \ (b,0) & not m > 0 ) or ( m > 0 & not s in (Funcs (X,INT)) \ (b,0) ) or g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ) assume ( s in (Funcs (X,INT)) \ (b,0) iff m > 0 ) ; ::_thesis: g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s then A24: ( s in (Funcs (X,INT)) \ (b,0) iff S1[s] ) by A23; g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s from AOFA_000:sch_3(A24, A15); hence g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),s ; ::_thesis: verum end; theorem :: AOFA_I00:62 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ) set P = { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ; given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . z = 3 ; ::_thesis: while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } set C = y gt 0; set I = (((z := x) \; (z %= y)) \; (x := y)) \; (y := z); A5: { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } is_invariant_wrt y gt 0,g proof let s be Element of Funcs (X,INT); :: according to AOFA_000:def_39 ::_thesis: ( not s in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } or g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ) set s1 = g . (s,(y gt 0)); assume s in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ; ::_thesis: g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } then A6: ex s9 being Element of Funcs (X,INT) st ( s9 = s & s9 . x > s9 . y & s9 . y >= 0 ) ; A7: (g . (s,(y gt 0))) . y = s . y by A1, A3, Th38; (g . (s,(y gt 0))) . x = s . x by A1, A2, Th38; hence g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } by A6, A7; ::_thesis: verum end; A8: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_st_s_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>_s_._y_&_s_._y_>=_0_)__}__&_g_._((g_._(s,((((z_:=_x)_\;_(z_%=_y))_\;_(x_:=_y))_\;_(y_:=_z)))),(y_gt_0))_in_(Funcs_(X,INT))_\_(b,0)_holds_ g_._(s,((((z_:=_x)_\;_(z_%=_y))_\;_(x_:=_y))_\;_(y_:=_z)))_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>_s_._y_&_s_._y_>=_0_)__}_ let s be Element of Funcs (X,INT); ::_thesis: ( s in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } & g . ((g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ) assume s in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ; ::_thesis: ( g . ((g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ) then ex s9 being Element of Funcs (X,INT) st ( s9 = s & s9 . x > s9 . y & s9 . y >= 0 ) ; then reconsider m = s . y as Element of NAT by INT_1:3; assume g . ((g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) ; ::_thesis: g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } then (g . ((g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))),(y gt 0))) . b <> 0 by Th2; then A9: (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y > 0 by Th38; A10: (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x = s . y by A1, A2, A3, A4, Lm1; A11: (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y = (s . x) mod (s . y) by A1, A2, A3, A4, Lm1; then m <> 0 by A9, INT_1:def_10; then (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . x > (g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))) . y by A11, A10, NEWTON:65; hence g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } by A9; ::_thesis: verum end; A12: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_st_g_._(s,(y_gt_0))_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>_s_._y_&_s_._y_>=_0_)__}__holds_ g_iteration_terminates_for_((((z_:=_x)_\;_(z_%=_y))_\;_(x_:=_y))_\;_(y_:=_z))_\;_(y_gt_0),g_._(s,(y_gt_0)) let s be Element of Funcs (X,INT); ::_thesis: ( g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } implies g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) ) set s1 = g . (s,(y gt 0)); A13: ( s . y <= 0 implies (g . (s,(y gt 0))) . b = 0 ) by Th38; assume g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } ; ::_thesis: g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) then ex s9 being Element of Funcs (X,INT) st ( s9 = g . (s,(y gt 0)) & s9 . x > s9 . y & s9 . y >= 0 ) ; then reconsider m = (g . (s,(y gt 0))) . y as Element of NAT by INT_1:3; ( s . y > 0 implies (g . (s,(y gt 0))) . b = 1 ) by Th38; then ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff m > 0 ) by A13, Th2, Th38; hence g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) by A1, A2, A3, A4, Lm1; ::_thesis: verum end; y gt 0 is_terminating_wrt g by AOFA_000:104; hence while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x > s . y & s . y >= 0 ) } by A5, A8, A12, AOFA_000:107, AOFA_000:118; ::_thesis: verum end; theorem :: AOFA_I00:63 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m set h = g; set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m ) given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . z = 3 ; ::_thesis: for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m set C = y gt 0; set I = (((z := x) \; (z %= y)) \; (x := y)) \; (y := z); let s be Element of Funcs (X,INT); ::_thesis: for n, m being Element of NAT st n = s . x & m = s . y & n > m holds (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m reconsider fin = g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))))) as Element of Funcs (X,INT) ; defpred S1[ Element of Funcs (X,INT)] means ( fin . x divides $1 . x & fin . x divides $1 . y ); A5: for s being Element of Funcs (X,INT) st S1[g . (s,(y gt 0))] holds S1[s] by A1, A2, A3, Th38; A6: for s being Element of Funcs (X,INT) st S1[g . ((g . (s,(y gt 0))),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] & g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) holds S1[g . (s,(y gt 0))] proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[g . ((g . (s,(y gt 0))),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] & g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(y gt 0))] ) assume A7: S1[g . ((g . (s,(y gt 0))),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] ; ::_thesis: ( not g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) or S1[g . (s,(y gt 0))] ) reconsider s1 = g . (s,(y gt 0)) as Element of Funcs (X,INT) ; reconsider s2 = g . (s1,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) as Element of Funcs (X,INT) ; A8: ( s . y <= 0 implies s1 . b = 0 ) by Th38; A9: s1 . x = s . x by A1, A2, Th38; A10: s2 . y = (s1 . x) mod (s1 . y) by A1, A2, A3, A4, Lm1; A11: s2 . x = s1 . y by A1, A2, A3, A4, Lm1; A12: s1 . y = s . y by A1, A3, Th38; assume g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ; ::_thesis: S1[g . (s,(y gt 0))] then s . x = (((s . x) div (s . y)) * (s2 . x)) + ((s2 . y) * 1) by A9, A12, A8, A11, A10, Th2, NEWTON:66; hence S1[g . (s,(y gt 0))] by A1, A2, A3, A4, A7, A9, Lm1, WSIERP_1:5; ::_thesis: verum end; reconsider s1 = g . (s,(y gt 0)) as Element of Funcs (X,INT) ; A13: s1 . y = s . y by A1, A3, Th38; A14: ( s . y <= 0 implies s1 . b = 0 ) by Th38; let n, m be Element of NAT ; ::_thesis: ( n = s . x & m = s . y & n > m implies (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m ) defpred S2[ Element of Funcs (X,INT)] means ( n gcd m divides $1 . x & n gcd m divides $1 . y & $1 . x > $1 . y & $1 . y >= 0 ); defpred S3[ Element of Funcs (X,INT)] means $1 . y > 0 ; assume that A15: n = s . x and A16: m = s . y and A17: n > m ; ::_thesis: (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m ( s . y > 0 implies s1 . b = 1 ) by Th38; then ( s1 in (Funcs (X,INT)) \ (b,0) iff m > 0 ) by A16, A14, Th2; then A18: g iteration_terminates_for ((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) by A1, A2, A3, A4, A16, A13, Lm1; A19: for s being Element of Funcs (X,INT) st S2[s] & s in (Funcs (X,INT)) \ (b,0) & S3[s] holds S2[g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] & s in (Funcs (X,INT)) \ (b,0) & S3[s] implies S2[g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] ) reconsider s99 = g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z))) as Element of Funcs (X,INT) ; assume A20: S2[s] ; ::_thesis: ( not s in (Funcs (X,INT)) \ (b,0) or not S3[s] or S2[g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] ) then reconsider n9 = s . x, m9 = s . y as Element of NAT by INT_1:3; assume that s in (Funcs (X,INT)) \ (b,0) and A21: S3[s] ; ::_thesis: S2[g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] A22: s99 . x = s . y by A1, A2, A3, A4, Lm1; A23: s99 . y = (s . x) mod (s . y) by A1, A2, A3, A4, Lm1; n gcd m divides n9 mod m9 by A20, NAT_D:11; hence S2[g . (s,((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))] by A20, A21, A22, A23, NEWTON:65; ::_thesis: verum end; A24: for s being Element of Funcs (X,INT) st S2[s] holds ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S3[g . (s,(y gt 0))] ) & ( S3[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] implies ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S3[g . (s,(y gt 0))] ) & ( S3[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) ) assume A25: S2[s] ; ::_thesis: ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S3[g . (s,(y gt 0))] ) & ( S3[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) reconsider s9 = g . (s,(y gt 0)) as Element of Funcs (X,INT) ; s9 . y = s . y by A1, A3, Th38; hence S2[g . (s,(y gt 0))] by A1, A2, A25, Th38; ::_thesis: ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff S3[g . (s,(y gt 0))] ) A26: ( s . y <= 0 implies s9 . b = 0 ) by Th38; ( s . y > 0 implies s9 . b = 1 ) by Th38; hence ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff S3[g . (s,(y gt 0))] ) by A26, Th2, Th38; ::_thesis: verum end; A27: S2[s] by A15, A16, A17, NAT_D:def_5; A28: ( S2[g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))] & not S3[g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))] ) from AOFA_000:sch_5(A27, A18, A19, A24); then fin . y = 0 ; then A29: S1[g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))] by INT_2:12; S1[s] from AOFA_000:sch_6(A29, A18, A6, A5); then fin . x divides n gcd m by A15, A16, INT_2:22; then ( fin . x = n gcd m or fin . x = - (n gcd m) ) by A28, INT_2:11; hence (g . (s,(while ((y gt 0),((((z := x) \; (z %= y)) \; (x := y)) \; (y := z)))))) . x = n gcd m by A28; ::_thesis: verum end; Lm2: for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) ) given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . z = 3 ; ::_thesis: for s being Element of Funcs (X,INT) holds ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) A5: y <> z by A3, A4; let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) & ( for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) ) set J = if-then ((z lt 0),(z *= (- 1))); A6: g complies_with_if_wrt (Funcs (X,INT)) \ (b,0) by AOFA_000:def_32; A7: z <> x by A2, A4; set I = (((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z); A8: x <> y by A2, A3; A9: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_ (_(g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z))))_._x_=_s_._y_&_(g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z))))_._y_=_abs_((s_._x)_-_(s_._y))_) let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) ) set s1 = g . (s,(z := ((. x) - (. y)))); set s2 = g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)); set q = g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))); set qz = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1))); A10: ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) * (- 1) = - ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) ; set s3 = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y)); set s4 = g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z)); A11: g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) = g . ((g . (s,(((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)))),(y := z)) by AOFA_000:def_29 .= g . ((g . ((g . (s,((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))))),(x := y))),(y := z)) by AOFA_000:def_29 .= g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z)) by AOFA_000:def_29 ; ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 implies g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) in (Funcs (X,INT)) \ (b,0) ) ; then A12: ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 implies g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))) = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1))) ) by A6, AOFA_000:def_30; A13: (. x) . s = s . x by Th22; A14: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1)))) . y = (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . y by A5, Th31; A15: (. y) . s = s . y by Th22; ((. x) - (. y)) . s = ((. x) . s) - ((. y) . s) by Def11; then A16: (g . (s,(z := ((. x) - (. y))))) . z = (s . x) - (s . y) by A13, A15, Th26; A17: ( (g . (s,(z := ((. x) - (. y))))) . z < 0 implies (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 ) by Th38; A18: (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z = (g . (s,(z := ((. x) - (. y))))) . z by A1, A4, Th38; A19: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1)))) . z = ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) * (- 1) by Th31; A20: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . z = (g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))) . z by A7, Th27; A21: (g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z))) . y = (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . z by Th27; ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 implies g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) nin (Funcs (X,INT)) \ (b,0) ) by Th2; then A22: ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 implies g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))) = g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) ) by A6, AOFA_000:80; A23: ( (g . (s,(z := ((. x) - (. y))))) . z >= 0 implies (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 ) by Th38; A24: (g . (s,(z := ((. x) - (. y))))) . y = s . y by A5, Th26; A25: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . x = (g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))) . y by Th27; (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . y = (g . (s,(z := ((. x) - (. y))))) . y by A1, A3, Th38; hence ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) ) by A8, A22, A12, A18, A17, A23, A14, A19, A10, A11, A24, A16, A25, A20, A21, Th27, ABSVALUE:def_1; ::_thesis: verum end; hence ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) ) ; ::_thesis: for n, m being Element of NAT st n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) holds g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = IFEQ (($1 . y),0,0,(IFEQ (($1 . x),0,2,(IFEQ (($1 . x),($1 . y),1,(In ((max ((2 * ($1 . x)),((2 * ($1 . y)) + 1))),NAT))))))); defpred S1[ Element of Funcs (X,INT)] means ( $1 . x >= 0 & $1 . y > 0 ); set C = y gt 0; A26: for s being Element of Funcs (X,INT) st S1[s] holds ( ( S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( ( S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) ) assume that A27: s . x >= 0 and A28: s . y > 0 ; ::_thesis: ( ( S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] implies g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] ) & H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) ) reconsider s9 = g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) as Element of Funcs (X,INT) ; reconsider s99 = g . (s9,(y gt 0)) as Element of Funcs (X,INT) ; A29: s9 . y = abs ((s . x) - (s . y)) by A9; then reconsider nx = s . x, ny = s . y, nn = s99 . y as Element of NAT by A1, A3, A27, A28, Th38, INT_1:3; A30: g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) = s99 by AOFA_000:def_29; A31: s99 . x = s9 . x by A1, A2, Th38; A32: ( s9 . y <= 0 implies s99 . b = 0 ) by Th38; A33: ( s9 . y > 0 implies s99 . b = 1 ) by Th38; hence ( S1[g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))] iff g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0))) in (Funcs (X,INT)) \ (b,0) ) by A9, A28, A30, A31, A32, Th2, Th38; ::_thesis: H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) A34: s9 . x = s . y by A9; A35: H1(s99) = IFEQ (nn,0,0,(IFEQ (ny,0,2,(IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))))))) by A31, A34, FUNCT_7:def_1; (2 * ny) + 1 > 2 * ny by NAT_1:13; then A36: max ((2 * nx),((2 * ny) + 1)) > 2 * ny by XXREAL_0:30; A37: s99 . y = s9 . y by A1, A3, Th38; A38: H1(s) = IFEQ (ny,0,0,(IFEQ (nx,0,2,(IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))))))) by FUNCT_7:def_1 .= IFEQ (nx,0,2,(IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))))) by A28, FUNCOP_1:def_8 ; percases ( nx = ny or nx > ny or ( nx < ny & nx > 0 ) or nx = 0 ) by XXREAL_0:1; supposeA39: nx = ny ; ::_thesis: H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) then A40: IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))) = 1 by FUNCOP_1:def_8; A41: nn = 0 by A37, A29, A39, ABSVALUE:2; H1(s) = IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))) by A28, A38, A39, FUNCOP_1:def_8; hence H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) by A30, A40, A41, FUNCOP_1:def_8; ::_thesis: verum end; supposeA42: nx > ny ; ::_thesis: H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) then IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))) = max ((2 * nx),((2 * ny) + 1)) by FUNCOP_1:def_8; then A43: H1(s) = max ((2 * nx),((2 * ny) + 1)) by A38, A42, FUNCOP_1:def_8; A44: nx - ny > 0 by A42, XREAL_1:50; then A45: H1(s99) = IFEQ (ny,0,2,(IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))))) by A37, A33, A32, A29, A35, ABSVALUE:def_1, FUNCOP_1:def_8 .= IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))) by A28, FUNCOP_1:def_8 ; then A46: ( ny = nn implies H1(s99) = 1 ) by FUNCOP_1:def_8; nn = nx - ny by A37, A29, A44, ABSVALUE:def_1; then nn < nx by A28, XREAL_1:44; then nn + 1 <= nx by NAT_1:13; then A47: 2 * (nn + 1) <= 2 * nx by XREAL_1:64; A48: 1 <= (2 * nn) + 1 by NAT_1:11; A49: ( ny <> nn implies H1(s99) = max ((2 * ny),((2 * nn) + 1)) ) by A45, FUNCOP_1:def_8; (2 * nn) + 2 = ((2 * nn) + 1) + 1 ; then (2 * nn) + 1 < 2 * nx by A47, NAT_1:13; then (2 * nn) + 1 < H1(s) by A43, XXREAL_0:30; hence H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) by A30, A36, A43, A46, A49, A48, XXREAL_0:2, XXREAL_0:29; ::_thesis: verum end; supposeA50: ( nx < ny & nx > 0 ) ; ::_thesis: H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) A51: - (nx - ny) = ny - nx ; A52: nx - ny < 0 by A50, XREAL_1:49; then A53: nn = - (nx - ny) by A37, A29, ABSVALUE:def_1; then A54: nn < ny by A50, A51, XREAL_1:44; 2 * nn < 2 * ny by A50, A53, A51, XREAL_1:44, XREAL_1:68; then (2 * nn) + 1 < (2 * ny) + 1 by XREAL_1:6; then A55: (2 * nn) + 1 < max ((2 * nx),((2 * ny) + 1)) by XXREAL_0:30; nn > 0 by A37, A29, A52, A51, ABSVALUE:def_1; then A56: H1(s99) = IFEQ (ny,0,2,(IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))))) by A35, FUNCOP_1:def_8 .= IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))) by A28, FUNCOP_1:def_8 .= max ((2 * ny),((2 * nn) + 1)) by A54, FUNCOP_1:def_8 ; H1(s) = IFEQ (nx,ny,1,(max ((2 * nx),((2 * ny) + 1)))) by A38, A50, FUNCOP_1:def_8 .= max ((2 * nx),((2 * ny) + 1)) by A50, FUNCOP_1:def_8 ; hence H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) by A30, A36, A55, A56, XXREAL_0:29; ::_thesis: verum end; supposeA57: nx = 0 ; ::_thesis: H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) then A58: H1(s) = 2 by A38, FUNCOP_1:def_8; A59: nn = - (nx - ny) by A28, A37, A29, A57, ABSVALUE:def_1 .= ny by A57 ; then H1(s99) = IFEQ (ny,0,2,(IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))))) by A28, A35, FUNCOP_1:def_8 .= IFEQ (ny,nn,1,(max ((2 * ny),((2 * nn) + 1)))) by A28, FUNCOP_1:def_8 .= 1 by A59, FUNCOP_1:def_8 ; hence H1(g . (s,(((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0)))) < H1(s) by A30, A58; ::_thesis: verum end; end; end; let n, m be Element of NAT ; ::_thesis: ( n = s . x & m = s . y & ( s in (Funcs (X,INT)) \ (b,0) implies m > 0 ) & ( m > 0 implies s in (Funcs (X,INT)) \ (b,0) ) implies g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) assume that A60: n = s . x and A61: m = s . y ; ::_thesis: ( ( s in (Funcs (X,INT)) \ (b,0) & not m > 0 ) or ( m > 0 & not s in (Funcs (X,INT)) \ (b,0) ) or g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ) assume ( s in (Funcs (X,INT)) \ (b,0) iff m > 0 ) ; ::_thesis: g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s then A62: ( s in (Funcs (X,INT)) \ (b,0) iff S1[s] ) by A60, A61; g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s from AOFA_000:sch_3(A62, A26); hence g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),s ; ::_thesis: verum end; theorem :: AOFA_I00:64 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ) set P = { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ; given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . z = 3 ; ::_thesis: while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } set C = y gt 0; set I = (((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z); A5: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_st_s_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>=_0_&_s_._y_>=_0_)__}__&_g_._((g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z)))),(y_gt_0))_in_(Funcs_(X,INT))_\_(b,0)_holds_ g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z)))_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>=_0_&_s_._y_>=_0_)__}_ let s be Element of Funcs (X,INT); ::_thesis: ( s in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } & g . ((g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ) assume s in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ; ::_thesis: ( g . ((g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ) then ex s9 being Element of Funcs (X,INT) st ( s9 = s & s9 . x >= 0 & s9 . y >= 0 ) ; then reconsider m = s . y as Element of NAT by INT_1:3; assume g . ((g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))),(y gt 0)) in (Funcs (X,INT)) \ (b,0) ; ::_thesis: g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } A6: (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = m by A1, A2, A3, A4, Lm2; (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) by A1, A2, A3, A4, Lm2; hence g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } by A6; ::_thesis: verum end; A7: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_st_g_._(s,(y_gt_0))_in__{__s_where_s_is_Element_of_Funcs_(X,INT)_:_(_s_._x_>=_0_&_s_._y_>=_0_)__}__holds_ g_iteration_terminates_for_((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z))_\;_(y_gt_0),g_._(s,(y_gt_0)) let s be Element of Funcs (X,INT); ::_thesis: ( g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } implies g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) ) set s1 = g . (s,(y gt 0)); A8: ( s . y <= 0 implies (g . (s,(y gt 0))) . b = 0 ) by Th38; assume g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ; ::_thesis: g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) then ex s9 being Element of Funcs (X,INT) st ( s9 = g . (s,(y gt 0)) & s9 . x >= 0 & s9 . y >= 0 ) ; then reconsider n = (g . (s,(y gt 0))) . x, m = (g . (s,(y gt 0))) . y as Element of NAT by INT_1:3; A9: n = n ; ( s . y > 0 implies (g . (s,(y gt 0))) . b = 1 ) by Th38; then ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff m > 0 ) by A8, Th2, Th38; hence g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) by A1, A2, A3, A4, A9, Lm2; ::_thesis: verum end; A10: { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } is_invariant_wrt y gt 0,g proof let s be Element of Funcs (X,INT); :: according to AOFA_000:def_39 ::_thesis: ( not s in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } or g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ) set s1 = g . (s,(y gt 0)); assume s in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } ; ::_thesis: g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } then A11: ex s9 being Element of Funcs (X,INT) st ( s9 = s & s9 . x >= 0 & s9 . y >= 0 ) ; A12: (g . (s,(y gt 0))) . y = s . y by A1, A3, Th38; (g . (s,(y gt 0))) . x = s . x by A1, A2, Th38; hence g . (s,(y gt 0)) in { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } by A11, A12; ::_thesis: verum end; y gt 0 is_terminating_wrt g by AOFA_000:104; hence while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : ( s . x >= 0 & s . y >= 0 ) } by A10, A5, A7, AOFA_000:107, AOFA_000:118; ::_thesis: verum end; theorem :: AOFA_I00:65 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, z being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) holds for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m set h = g; set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); A1: g complies_with_if_wrt (Funcs (X,INT)) \ (b,0) by AOFA_000:def_32; let x, y, z be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . z = 3 ) implies for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m ) given d being Function such that A2: d . b = 0 and A3: d . x = 1 and A4: d . y = 2 and A5: d . z = 3 ; ::_thesis: for s being Element of Funcs (X,INT) for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m set C = y gt 0; let s be Element of Funcs (X,INT); ::_thesis: for n, m being Element of NAT st n = s . x & m = s . y & n > 0 holds (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m A6: y <> z by A4, A5; reconsider s1 = g . (s,(y gt 0)) as Element of Funcs (X,INT) ; A7: s1 . x = s . x by A2, A3, Th38; A8: s1 . y = s . y by A2, A4, Th38; A9: ( s . y <= 0 implies s1 . b = 0 ) by Th38; defpred S1[ Element of Funcs (X,INT)] means ( $1 . x > 0 & $1 . y > 0 ); let n, m be Element of NAT ; ::_thesis: ( n = s . x & m = s . y & n > 0 implies (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m ) defpred S2[ Element of Funcs (X,INT)] means ( n gcd m divides $1 . x & n gcd m divides $1 . y & $1 . x > 0 & $1 . y >= 0 & ( for c being Nat st c divides $1 . x & c divides $1 . y holds c divides n gcd m ) ); set J = if-then ((z lt 0),(z *= (- 1))); set I = (((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z); assume that A10: n = s . x and A11: m = s . y and A12: n > 0 ; ::_thesis: (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m ( s . y > 0 implies s1 . b = 1 ) by Th38; then ( s1 in (Funcs (X,INT)) \ (b,0) iff S1[s1] ) by A10, A12, A9, Th2, Th38; then A13: g iteration_terminates_for ((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)) \; (y gt 0),g . (s,(y gt 0)) by A2, A3, A4, A5, A10, A11, A12, A7, A8, Lm2; A14: z <> x by A3, A5; A15: x <> y by A3, A4; A16: now__::_thesis:_for_s_being_Element_of_Funcs_(X,INT)_holds_ (_(g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z))))_._x_=_s_._y_&_(g_._(s,((((z_:=_((._x)_-_(._y)))_\;_(if-then_((z_lt_0),(z_*=_(-_1)))))_\;_(x_:=_y))_\;_(y_:=_z))))_._y_=_abs_((s_._x)_-_(s_._y))_) let s be Element of Funcs (X,INT); ::_thesis: ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) ) set s1 = g . (s,(z := ((. x) - (. y)))); set s2 = g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)); set q = g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))); set qz = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1))); A17: ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) * (- 1) = - ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) ; set s3 = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y)); set s4 = g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z)); A18: g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) = g . ((g . (s,(((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)))),(y := z)) by AOFA_000:def_29 .= g . ((g . ((g . (s,((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))))),(x := y))),(y := z)) by AOFA_000:def_29 .= g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z)) by AOFA_000:def_29 ; ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 implies g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) in (Funcs (X,INT)) \ (b,0) ) ; then A19: ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 implies g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))) = g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1))) ) by A1, AOFA_000:def_30; A20: (. x) . s = s . x by Th22; A21: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1)))) . y = (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . y by A6, Th31; A22: (. y) . s = s . y by Th22; ((. x) - (. y)) . s = ((. x) . s) - ((. y) . s) by Def11; then A23: (g . (s,(z := ((. x) - (. y))))) . z = (s . x) - (s . y) by A20, A22, Th26; A24: ( (g . (s,(z := ((. x) - (. y))))) . z < 0 implies (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 1 ) by Th38; A25: (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z = (g . (s,(z := ((. x) - (. y))))) . z by A2, A5, Th38; A26: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))),(z *= (- 1)))) . z = ((g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . z) * (- 1) by Th31; A27: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . z = (g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))) . z by A14, Th27; A28: (g . ((g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))),(y := z))) . y = (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . z by Th27; ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 implies g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) nin (Funcs (X,INT)) \ (b,0) ) by Th2; then A29: ( (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 implies g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1))))) = g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0)) ) by A1, AOFA_000:80; A30: ( (g . (s,(z := ((. x) - (. y))))) . z >= 0 implies (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . b = 0 ) by Th38; A31: (g . (s,(z := ((. x) - (. y))))) . y = s . y by A6, Th26; A32: (g . ((g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))),(x := y))) . x = (g . ((g . (s,(z := ((. x) - (. y))))),(if-then ((z lt 0),(z *= (- 1)))))) . y by Th27; (g . ((g . (s,(z := ((. x) - (. y))))),(z lt 0))) . y = (g . (s,(z := ((. x) - (. y))))) . y by A2, A4, Th38; hence ( (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x = s . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y = abs ((s . x) - (s . y)) ) by A15, A29, A19, A25, A24, A30, A21, A26, A17, A18, A31, A23, A32, A27, A28, Th27, ABSVALUE:def_1; ::_thesis: verum end; A33: for s being Element of Funcs (X,INT) st S2[s] & s in (Funcs (X,INT)) \ (b,0) & S1[s] holds S2[g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))] proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] & s in (Funcs (X,INT)) \ (b,0) & S1[s] implies S2[g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))] ) reconsider s99 = g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))) as Element of Funcs (X,INT) ; A34: abs (n gcd m) = n gcd m by ABSVALUE:def_1; A35: s99 . y = abs ((s . x) - (s . y)) by A16; assume A36: S2[s] ; ::_thesis: ( not s in (Funcs (X,INT)) \ (b,0) or not S1[s] or S2[g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))] ) then reconsider n9 = s . x, m9 = s . y as Element of NAT by INT_1:3; assume that s in (Funcs (X,INT)) \ (b,0) and A37: S1[s] ; ::_thesis: S2[g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))] n gcd m divides n9 - m9 by A36, PREPOWER:94; hence ( n gcd m divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x & n gcd m divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x > 0 & (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y >= 0 ) by A16, A36, A37, A35, A34, INT_2:16; ::_thesis: for c being Nat st c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x & c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y holds c divides n gcd m let c be Nat; ::_thesis: ( c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x & c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y implies c divides n gcd m ) reconsider c9 = c as Element of NAT by ORDINAL1:def_12; assume that A38: c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . x and A39: c divides (g . (s,((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))) . y ; ::_thesis: c divides n gcd m A40: abs c = c by ABSVALUE:def_1; A41: s99 . x = s . y by A16; c9 divides abs (n9 - m9) by A16, A39; then A42: c divides n9 - m9 by A40, INT_2:16; c divides m9 by A16, A38; then c divides (n9 - m9) + m9 by A42, WSIERP_1:4; hence c divides n gcd m by A36, A41, A38; ::_thesis: verum end; A43: for s being Element of Funcs (X,INT) st S2[s] holds ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(y gt 0))] ) & ( S1[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] implies ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(y gt 0))] ) & ( S1[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) ) assume A44: S2[s] ; ::_thesis: ( S2[g . (s,(y gt 0))] & ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(y gt 0))] ) & ( S1[g . (s,(y gt 0))] implies g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) reconsider s9 = g . (s,(y gt 0)) as Element of Funcs (X,INT) ; A45: s9 . y = s . y by A2, A4, Th38; s9 . x = s . x by A2, A3, Th38; hence S2[g . (s,(y gt 0))] by A44, A45; ::_thesis: ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . (s,(y gt 0))] ) A46: ( s . y <= 0 implies s9 . b = 0 ) by Th38; ( s . y > 0 implies s9 . b = 1 ) by Th38; hence ( g . (s,(y gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . (s,(y gt 0))] ) by A44, A46, Th2, Th38; ::_thesis: verum end; reconsider fin = g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z))))) as Element of Funcs (X,INT) ; A47: S2[s] by A10, A11, A12, NAT_D:def_5; A48: ( S2[g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))] & not S1[g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))] ) from AOFA_000:sch_5(A47, A13, A33, A43); then reconsider fn = fin . x as Element of NAT by INT_1:3; A49: fn divides 0 by NAT_D:6; fin . y = 0 by A48; then fn divides n gcd m by A48, A49; hence (g . (s,(while ((y gt 0),((((z := ((. x) - (. y))) \; (if-then ((z lt 0),(z *= (- 1))))) \; (x := y)) \; (y := z)))))) . x = n gcd m by A48, NAT_D:5; ::_thesis: verum end; theorem :: AOFA_I00:66 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); let x, y, m be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) implies (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } ) set P = { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; given d being Function such that A1: d . b = 0 and A2: d . x = 1 and A3: d . y = 2 and A4: d . m = 3 ; ::_thesis: (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } set C = m gt 0; A5: y := 1 is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } by AOFA_000:107; deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (($1 . m),NAT); defpred S1[ Element of Funcs (X,INT)] means $1 . m > 0 ; set I = if-then ((m is_odd),(y *= x)); set J = ((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x); A6: g complies_with_if_wrt (Funcs (X,INT)) \ (b,0) by AOFA_000:def_32; A7: { s where s is Element of Funcs (X,INT) : s . m >= 0 } is_invariant_wrt m gt 0,g proof let s be Element of Funcs (X,INT); :: according to AOFA_000:def_39 ::_thesis: ( not s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } or g . (s,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ) assume s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; ::_thesis: g . (s,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } then A8: ex s9 being Element of Funcs (X,INT) st ( s = s9 & s9 . m >= 0 ) ; (g . (s,(m gt 0))) . m = s . m by A1, A4, Th38; hence g . (s,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } by A8; ::_thesis: verum end; A9: for s being Element of Funcs (X,INT) st s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } & g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) in (Funcs (X,INT)) \ (b,0) holds g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } proof let s be Element of Funcs (X,INT); ::_thesis: ( s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } & g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) in (Funcs (X,INT)) \ (b,0) implies g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ) assume s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; ::_thesis: ( not g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) in (Funcs (X,INT)) \ (b,0) or g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ) assume g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) in (Funcs (X,INT)) \ (b,0) ; ::_thesis: g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } then (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m > 0 by Th40; hence g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; ::_thesis: verum end; A10: m <> y by A3, A4; A11: { s where s is Element of Funcs (X,INT) : s . m >= 0 } is_invariant_wrt y := 1,g proof let s be Element of Funcs (X,INT); :: according to AOFA_000:def_39 ::_thesis: ( not s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } or g . (s,(y := 1)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ) assume s in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; ::_thesis: g . (s,(y := 1)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } then A12: ex s9 being Element of Funcs (X,INT) st ( s = s9 & s9 . m >= 0 ) ; (g . (s,(y := 1))) . m = s . m by A10, Th25; hence g . (s,(y := 1)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } by A12; ::_thesis: verum end; A13: m <> x by A2, A4; A14: for s being Element of Funcs (X,INT) st g . (s,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } holds g iteration_terminates_for (((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0),g . (s,(m gt 0)) proof A15: for s being Element of Funcs (X,INT) st S1[s] holds ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) ) assume A16: s . m > 0 ; ::_thesis: ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) A17: H1(s) = s . m by A16, FUNCT_7:def_1, INT_1:3; set q1 = g . (s,(if-then ((m is_odd),(y *= x)))); set q0 = g . (s,(m is_odd)); set sJ = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))); set sC = g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)); A18: g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) = g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) by AOFA_000:def_29; A19: ( (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m <= 0 implies (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . b = 0 ) by Th38; ( (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m > 0 implies (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . b = 1 ) by Th38; hence ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] iff g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) by A19, A18, Th2, Th38; ::_thesis: H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) set q2 = g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)); set q3 = g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)); A20: ( g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(y *= x)) or g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(EmptyIns A)) ) by A6, AOFA_000:def_30; g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)) = g . (s,((if-then ((m is_odd),(y *= x))) \; (m /= 2))) by AOFA_000:def_29; then g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)) = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) by AOFA_000:def_29; then A21: (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m = (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . m by A13, Th33 .= ((g . (s,(if-then ((m is_odd),(y *= x))))) . m) div 2 by Th45 .= ((g . (s,(m is_odd))) . m) div 2 by A10, A20, Th33, AOFA_000:def_28 .= (s . m) div 2 by A1, A4, Th49 ; A22: (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m by A1, A4, Th38; then (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m in NAT by A16, A21, INT_1:3, INT_1:61; then H1(g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) = (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m by FUNCT_7:def_1; hence H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) by A16, A22, A18, A21, A17, INT_1:56; ::_thesis: verum end; let s0 be Element of Funcs (X,INT); ::_thesis: ( g . (s0,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } implies g iteration_terminates_for (((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0),g . (s0,(m gt 0)) ) assume g . (s0,(m gt 0)) in { s where s is Element of Funcs (X,INT) : s . m >= 0 } ; ::_thesis: g iteration_terminates_for (((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0),g . (s0,(m gt 0)) set s1 = g . (s0,(m gt 0)); A23: ( s0 . m <= 0 implies (g . (s0,(m gt 0))) . b = 0 ) by Th38; ( s0 . m > 0 implies (g . (s0,(m gt 0))) . b = 1 ) by Th38; then A24: ( g . (s0,(m gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . (s0,(m gt 0))] ) by A23, Th2, Th38; thus g iteration_terminates_for (((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0),g . (s0,(m gt 0)) from AOFA_000:sch_3(A24, A15); ::_thesis: verum end; ((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } by AOFA_000:107; then while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } by A7, A9, A14, AOFA_000:104, AOFA_000:118; hence (y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) is_terminating_wrt g, { s where s is Element of Funcs (X,INT) : s . m >= 0 } by A5, A11, AOFA_000:111; ::_thesis: verum end; theorem :: AOFA_I00:67 for A being Euclidean preIfWhileAlgebra for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n proof let A be Euclidean preIfWhileAlgebra; ::_thesis: for X being non empty countable set for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n let X be non empty countable set ; ::_thesis: for b being Element of X for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n let b be Element of X; ::_thesis: for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0) for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); ::_thesis: for x, y, m being Variable of g st ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) holds for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n set S = Funcs (X,INT); set T = (Funcs (X,INT)) \ (b,0); A1: g complies_with_if_wrt (Funcs (X,INT)) \ (b,0) by AOFA_000:def_32; let x, y, m be Variable of g; ::_thesis: ( ex d being Function st ( d . b = 0 & d . x = 1 & d . y = 2 & d . m = 3 ) implies for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n ) given d being Function such that A2: d . b = 0 and A3: d . x = 1 and A4: d . y = 2 and A5: d . m = 3 ; ::_thesis: for s being Element of Funcs (X,INT) for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n defpred S1[ Element of Funcs (X,INT)] means $1 . m > 0 ; set C = m gt 0; let s be Element of Funcs (X,INT); ::_thesis: for n being Nat st n = s . m holds (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n let n be Nat; ::_thesis: ( n = s . m implies (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n ) defpred S2[ Element of Funcs (X,INT)] means ( (s . x) |^ n = ($1 . y) * (($1 . x) to_power ($1 . m)) & $1 . m >= 0 ); deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (($1 . m),NAT); set I = if-then ((m is_odd),(y *= x)); set J = ((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x); set s0 = g . (s,(y := 1)); A6: m <> y by A4, A5; then A7: (g . (s,(y := 1))) . m = s . m by Th25; A8: for s being Element of Funcs (X,INT) st S2[s] holds ( S2[g . (s,(m gt 0))] & ( g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(m gt 0))] ) & ( S1[g . (s,(m gt 0))] implies g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] implies ( S2[g . (s,(m gt 0))] & ( g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(m gt 0))] ) & ( S1[g . (s,(m gt 0))] implies g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) ) assume A9: S2[s] ; ::_thesis: ( S2[g . (s,(m gt 0))] & ( g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,(m gt 0))] ) & ( S1[g . (s,(m gt 0))] implies g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) ) ) set s1 = g . (s,(m gt 0)); A10: (g . (s,(m gt 0))) . x = s . x by A2, A3, Th38; (g . (s,(m gt 0))) . m = s . m by A2, A5, Th38; hence S2[g . (s,(m gt 0))] by A2, A4, A9, A10, Th38; ::_thesis: ( g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . (s,(m gt 0))] ) A11: ( s . m <= 0 implies (g . (s,(m gt 0))) . b = 0 ) by Th38; ( s . m > 0 implies (g . (s,(m gt 0))) . b = 1 ) by Th38; hence ( g . (s,(m gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . (s,(m gt 0))] ) by A11, Th2, Th38; ::_thesis: verum end; A12: (g . (s,(y := 1))) . y = 1 by Th25; set fs = g . ((g . (s,(y := 1))),(while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))); set s1 = g . ((g . (s,(y := 1))),(m gt 0)); assume A13: n = s . m ; ::_thesis: (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n A14: ((g . ((g . (s,(y := 1))),(while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))))) . x) to_power 0 = 1 by POWER:24; A15: m <> x by A3, A5; A16: for s being Element of Funcs (X,INT) st S1[s] holds ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) proof let s be Element of Funcs (X,INT); ::_thesis: ( S1[s] implies ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) ) assume A17: s . m > 0 ; ::_thesis: ( ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] implies g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) implies S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] ) & H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) ) A18: H1(s) = s . m by A17, FUNCT_7:def_1, INT_1:3; set q1 = g . (s,(if-then ((m is_odd),(y *= x)))); set q0 = g . (s,(m is_odd)); set sJ = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))); set sC = g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)); A19: g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) = g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0)) by AOFA_000:def_29; A20: ( (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m <= 0 implies (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . b = 0 ) by Th38; ( (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m > 0 implies (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . b = 1 ) by Th38; hence ( S1[g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))] iff g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0))) in (Funcs (X,INT)) \ (b,0) ) by A20, A19, Th2, Th38; ::_thesis: H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) set q2 = g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)); set q3 = g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)); A21: ( g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(y *= x)) or g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(EmptyIns A)) ) by A1, AOFA_000:def_30; g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)) = g . (s,((if-then ((m is_odd),(y *= x))) \; (m /= 2))) by AOFA_000:def_29; then g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)) = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) by AOFA_000:def_29; then A22: (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m = (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . m by A15, Th33 .= ((g . (s,(if-then ((m is_odd),(y *= x))))) . m) div 2 by Th45 .= ((g . (s,(m is_odd))) . m) div 2 by A6, A21, Th33, AOFA_000:def_28 .= (s . m) div 2 by A2, A5, Th49 ; A23: (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m by A2, A5, Th38; then (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m in NAT by A17, A22, INT_1:3, INT_1:61; then H1(g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) = (g . ((g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))),(m gt 0))) . m by FUNCT_7:def_1; hence H1(g . (s,((((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0)))) < H1(s) by A17, A23, A19, A22, A18, INT_1:56; ::_thesis: verum end; set q = s; A24: x <> y by A3, A4; A25: for s being Element of Funcs (X,INT) st S2[s] & s in (Funcs (X,INT)) \ (b,0) & S1[s] holds S2[g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))] proof let s be Element of Funcs (X,INT); ::_thesis: ( S2[s] & s in (Funcs (X,INT)) \ (b,0) & S1[s] implies S2[g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))] ) assume that A26: S2[s] and s in (Funcs (X,INT)) \ (b,0) and S1[s] ; ::_thesis: S2[g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))] reconsider sm = s . m as Element of NAT by A26, INT_1:3; s . m = (((s . m) div 2) * 2) + ((s . m) mod 2) by NEWTON:66; then A27: (s . x) |^ n = (s . y) * (((s . x) to_power ((sm div 2) * 2)) * ((s . x) to_power (sm mod 2))) by A26, FIB_NUM2:5 .= ((s . y) * ((s . x) to_power (sm mod 2))) * ((s . x) to_power ((sm div 2) * 2)) .= ((s . y) * ((s . x) to_power (sm mod 2))) * (((s . x) to_power 2) to_power (sm div 2)) by NEWTON:9 .= ((s . y) * ((s . x) to_power (sm mod 2))) * (((s . x) * (s . x)) to_power (sm div 2)) by NEWTON:81 ; set q1 = g . (s,(if-then ((m is_odd),(y *= x)))); set q0 = g . (s,(m is_odd)); set sJ = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))); set q2 = g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)); set q3 = g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)); A28: ( g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(y *= x)) or g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(EmptyIns A)) ) by A1, AOFA_000:def_30; A29: (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . x = (g . (s,(if-then ((m is_odd),(y *= x))))) . x by A15, Th45 .= (g . (s,(m is_odd))) . x by A24, A28, Th33, AOFA_000:def_28 ; A30: (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . y = (g . (s,(if-then ((m is_odd),(y *= x))))) . y by A6, Th45; A31: (g . (s,(m is_odd))) . y = s . y by A2, A4, Th49; A32: (g . (s,(m is_odd))) . x = s . x by A2, A3, Th49; g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2)) = g . (s,((if-then ((m is_odd),(y *= x))) \; (m /= 2))) by AOFA_000:def_29; then A33: g . ((g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))),(x *= x)) = g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))) by AOFA_000:def_29; then A34: (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . y = (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . y by A24, Th33; A35: sm div 2 = (s . m) div 2 ; A36: now__::_thesis:_(s_._y)_*_((s_._x)_to_power_(sm_mod_2))_=_(g_._(s,(((if-then_((m_is_odd),(y_*=_x)))_\;_(m_/=_2))_\;_(x_*=_x))))_._y A37: (g . (s,(m is_odd))) . b = (s . m) mod 2 by Th49; percases ( (g . (s,(m is_odd))) . b = 0 or (g . (s,(m is_odd))) . b = 1 ) by A35, A37, NAT_D:12; supposeA38: (g . (s,(m is_odd))) . b = 0 ; ::_thesis: (s . y) * ((s . x) to_power (sm mod 2)) = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . y then g . (s,(m is_odd)) nin (Funcs (X,INT)) \ (b,0) by Th2; then g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(EmptyIns A)) by A1, AOFA_000:def_30; then A39: (g . (s,(if-then ((m is_odd),(y *= x))))) . y = (g . (s,(m is_odd))) . y by AOFA_000:def_28; A40: (s . y) * 1 = s . y ; (s . x) to_power 0 = 1 by POWER:24; hence (s . y) * ((s . x) to_power (sm mod 2)) = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . y by A34, A30, A31, A38, A39, A40, Th49; ::_thesis: verum end; supposeA41: (g . (s,(m is_odd))) . b = 1 ; ::_thesis: (s . y) * ((s . x) to_power (sm mod 2)) = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . y then g . (s,(m is_odd)) in (Funcs (X,INT)) \ (b,0) ; then g . (s,(if-then ((m is_odd),(y *= x)))) = g . ((g . (s,(m is_odd))),(y *= x)) by A1, AOFA_000:def_30; then A42: (g . (s,(if-then ((m is_odd),(y *= x))))) . y = ((g . (s,(m is_odd))) . y) * ((g . (s,(m is_odd))) . x) by Th33; (s . x) to_power 1 = s . x by POWER:25; hence (s . y) * ((s . x) to_power (sm mod 2)) = (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . y by A32, A34, A30, A31, A41, A42, Th49; ::_thesis: verum end; end; end; (g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))) . m = (g . ((g . (s,(if-then ((m is_odd),(y *= x))))),(m /= 2))) . m by A15, A33, Th33 .= ((g . (s,(if-then ((m is_odd),(y *= x))))) . m) div 2 by Th45 .= ((g . (s,(m is_odd))) . m) div 2 by A6, A28, Th33, AOFA_000:def_28 .= (s . m) div 2 by A2, A5, Th49 ; hence S2[g . (s,(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))] by A33, A29, A32, A36, A27, Th33; ::_thesis: verum end; A43: ( (g . (s,(y := 1))) . m <= 0 implies (g . ((g . (s,(y := 1))),(m gt 0))) . b = 0 ) by Th38; ( (g . (s,(y := 1))) . m > 0 implies (g . ((g . (s,(y := 1))),(m gt 0))) . b = 1 ) by Th38; then A44: ( g . ((g . (s,(y := 1))),(m gt 0)) in (Funcs (X,INT)) \ (b,0) iff S1[g . ((g . (s,(y := 1))),(m gt 0))] ) by A43, Th2, Th38; A45: g iteration_terminates_for (((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)) \; (m gt 0),g . ((g . (s,(y := 1))),(m gt 0)) from AOFA_000:sch_3(A44, A16); (g . (s,(y := 1))) . x = s . x by A24, Th25; then A46: S2[g . (s,(y := 1))] by A13, A7, A12, POWER:41; A47: ( S2[g . ((g . (s,(y := 1))),(while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))))] & not S1[g . ((g . (s,(y := 1))),(while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))))] ) from AOFA_000:sch_5(A46, A45, A25, A8); then (g . ((g . (s,(y := 1))),(while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x)))))) . m = 0 ; hence (g . (s,((y := 1) \; (while ((m gt 0),(((if-then ((m is_odd),(y *= x))) \; (m /= 2)) \; (x *= x))))))) . y = (s . x) |^ n by A47, A14, AOFA_000:def_29; ::_thesis: verum end;