:: MEMSTR_0 semantic presentation begin definition let N be set ; attrc2 is strict ; struct Mem-Struct over N -> ZeroStr ; aggrMem-Struct(# carrier, ZeroF, Object-Kind, ValuesF #) -> Mem-Struct over N; sel Object-Kind c2 -> Function of the carrier of c2,N; sel ValuesF c2 -> ManySortedSet of N; end; definition let N be with_zero set ; func Trivial-Mem N -> strict Mem-Struct over N means :Def1: :: MEMSTR_0:def 1 ( the carrier of it = {0} & the ZeroF of it = 0 & the Object-Kind of it = 0 .--> 0 & the ValuesF of it = N --> NAT ); existence ex b1 being strict Mem-Struct over N st ( the carrier of b1 = {0} & the ZeroF of b1 = 0 & the Object-Kind of b1 = 0 .--> 0 & the ValuesF of b1 = N --> NAT ) proof set f = 0 .--> 0; A1: dom (0 .--> 0) = {0} by FUNCOP_1:13; A2: rng (0 .--> 0) c= {0} by FUNCOP_1:13; 0 in N by MEASURE6:def_2; then {0} c= N by ZFMISC_1:31; then rng (0 .--> 0) c= N by A2, XBOOLE_1:1; then reconsider f = 0 .--> 0 as Function of {0},N by A1, RELSET_1:4; reconsider y = 0 as Element of {0} by TARSKI:def_1; take Mem-Struct(# {0},y,f,(N --> NAT) #) ; ::_thesis: ( the carrier of Mem-Struct(# {0},y,f,(N --> NAT) #) = {0} & the ZeroF of Mem-Struct(# {0},y,f,(N --> NAT) #) = 0 & the Object-Kind of Mem-Struct(# {0},y,f,(N --> NAT) #) = 0 .--> 0 & the ValuesF of Mem-Struct(# {0},y,f,(N --> NAT) #) = N --> NAT ) thus ( the carrier of Mem-Struct(# {0},y,f,(N --> NAT) #) = {0} & the ZeroF of Mem-Struct(# {0},y,f,(N --> NAT) #) = 0 & the Object-Kind of Mem-Struct(# {0},y,f,(N --> NAT) #) = 0 .--> 0 & the ValuesF of Mem-Struct(# {0},y,f,(N --> NAT) #) = N --> NAT ) ; ::_thesis: verum end; uniqueness for b1, b2 being strict Mem-Struct over N st the carrier of b1 = {0} & the ZeroF of b1 = 0 & the Object-Kind of b1 = 0 .--> 0 & the ValuesF of b1 = N --> NAT & the carrier of b2 = {0} & the ZeroF of b2 = 0 & the Object-Kind of b2 = 0 .--> 0 & the ValuesF of b2 = N --> NAT holds b1 = b2 ; end; :: deftheorem Def1 defines Trivial-Mem MEMSTR_0:def_1_:_ for N being with_zero set for b2 being strict Mem-Struct over N holds ( b2 = Trivial-Mem N iff ( the carrier of b2 = {0} & the ZeroF of b2 = 0 & the Object-Kind of b2 = 0 .--> 0 & the ValuesF of b2 = N --> NAT ) ); registration let N be with_zero set ; cluster Trivial-Mem N -> 1 -element strict ; coherence Trivial-Mem N is 1 -element proof the carrier of (Trivial-Mem N) = {0} by Def1; hence the carrier of (Trivial-Mem N) is 1 -element ; :: according to STRUCT_0:def_19 ::_thesis: verum end; end; registration let N be with_zero set ; cluster1 -element for Mem-Struct over N; existence ex b1 being Mem-Struct over N st b1 is 1 -element proof take Trivial-Mem N ; ::_thesis: Trivial-Mem N is 1 -element thus Trivial-Mem N is 1 -element ; ::_thesis: verum end; end; notation let N be with_zero set ; let S be Mem-Struct over N; synonym IC S for 0. N; synonym Data-Locations S for NonZero N; end; registration cluster with_zero -> non empty for set ; coherence for b1 being set st b1 is with_zero holds not b1 is empty by MEASURE6:def_2; end; definition let N be with_zero set ; let S be Mem-Struct over N; func the_Values_of S -> ManySortedSet of the carrier of S equals :: MEMSTR_0:def 2 the ValuesF of S * the Object-Kind of S; coherence the ValuesF of S * the Object-Kind of S is ManySortedSet of the carrier of S ; end; :: deftheorem defines the_Values_of MEMSTR_0:def_2_:_ for N being with_zero set for S being Mem-Struct over N holds the_Values_of S = the ValuesF of S * the Object-Kind of S; definition let N be with_zero set ; let S be Mem-Struct over N; mode PartState of S is the carrier of S -defined the_Values_of S -compatible Function; end; definition let N be with_zero set ; let S be Mem-Struct over N; attrS is with_non-empty_values means :Def3: :: MEMSTR_0:def 3 the_Values_of S is non-empty ; end; :: deftheorem Def3 defines with_non-empty_values MEMSTR_0:def_3_:_ for N being with_zero set for S being Mem-Struct over N holds ( S is with_non-empty_values iff the_Values_of S is non-empty ); registration let N be with_zero set ; cluster Trivial-Mem N -> strict with_non-empty_values ; coherence Trivial-Mem N is with_non-empty_values proof let n be set ; :: according to FUNCT_1:def_9,MEMSTR_0:def_3 ::_thesis: ( not n in dom (the_Values_of (Trivial-Mem N)) or not (the_Values_of (Trivial-Mem N)) . n is empty ) set S = Trivial-Mem N; set F = the_Values_of (Trivial-Mem N); assume A1: n in dom (the_Values_of (Trivial-Mem N)) ; ::_thesis: not (the_Values_of (Trivial-Mem N)) . n is empty then A2: the Object-Kind of (Trivial-Mem N) . n in dom the ValuesF of (Trivial-Mem N) by FUNCT_1:11; A3: the ValuesF of (Trivial-Mem N) = N --> NAT by Def1; then A4: the Object-Kind of (Trivial-Mem N) . n in N by A2, FUNCOP_1:13; (the_Values_of (Trivial-Mem N)) . n = the ValuesF of (Trivial-Mem N) . ( the Object-Kind of (Trivial-Mem N) . n) by A1, FUNCT_1:12 .= NAT by A4, A3, FUNCOP_1:7 ; hence not (the_Values_of (Trivial-Mem N)) . n is empty ; ::_thesis: verum end; end; registration let N be with_zero set ; cluster with_non-empty_values for Mem-Struct over N; existence ex b1 being Mem-Struct over N st b1 is with_non-empty_values proof take Trivial-Mem N ; ::_thesis: Trivial-Mem N is with_non-empty_values thus Trivial-Mem N is with_non-empty_values ; ::_thesis: verum end; end; registration let N be with_zero set ; let S be with_non-empty_values Mem-Struct over N; cluster the_Values_of S -> non-empty ; coherence the_Values_of S is non-empty by Def3; end; definition let N be with_zero set ; let S be with_non-empty_values Mem-Struct over N; mode State of S is total PartState of S; end; definition let N be with_zero set ; let S be Mem-Struct over N; mode Object of S is Element of S; end; begin definition let N be with_zero set ; let S be non empty Mem-Struct over N; let o be Object of S; func ObjectKind o -> Element of N equals :: MEMSTR_0:def 4 the Object-Kind of S . o; correctness coherence the Object-Kind of S . o is Element of N; ; end; :: deftheorem defines ObjectKind MEMSTR_0:def_4_:_ for N being with_zero set for S being non empty Mem-Struct over N for o being Object of S holds ObjectKind o = the Object-Kind of S . o; definition let N be with_zero set ; let S be non empty Mem-Struct over N; let o be Object of S; func Values o -> set equals :: MEMSTR_0:def 5 (the_Values_of S) . o; correctness coherence (the_Values_of S) . o is set ; ; end; :: deftheorem defines Values MEMSTR_0:def_5_:_ for N being with_zero set for S being non empty Mem-Struct over N for o being Object of S holds Values o = (the_Values_of S) . o; definition let N be with_zero set ; let IT be non empty Mem-Struct over N; attrIT is IC-Ins-separated means :Def6: :: MEMSTR_0:def 6 Values (IC ) = NAT ; end; :: deftheorem Def6 defines IC-Ins-separated MEMSTR_0:def_6_:_ for N being with_zero set for IT being non empty Mem-Struct over N holds ( IT is IC-Ins-separated iff Values (IC ) = NAT ); Lm1: for N being with_zero set holds the_Values_of (Trivial-Mem N) = 0 .--> NAT proof let N be with_zero set ; ::_thesis: the_Values_of (Trivial-Mem N) = 0 .--> NAT set S = Trivial-Mem N; set f = the_Values_of (Trivial-Mem N); set g = 0 .--> NAT; the Object-Kind of (Trivial-Mem N) = 0 .--> 0 by Def1; then A1: the_Values_of (Trivial-Mem N) = (N --> NAT) * (0 .--> 0) by Def1; A2: dom (N --> NAT) = N by FUNCOP_1:13; A3: rng (0 .--> 0) = {0} by FUNCOP_1:88; A4: 0 in N by MEASURE6:def_2; then {0} c= N by ZFMISC_1:31; then A5: dom (the_Values_of (Trivial-Mem N)) = dom (0 .--> 0) by A1, A2, A3, RELAT_1:27 .= {0} by FUNCOP_1:13 ; hence dom (the_Values_of (Trivial-Mem N)) = dom (0 .--> NAT) by FUNCOP_1:13; :: according to FUNCT_1:def_11 ::_thesis: for b1 being set holds ( not b1 in dom (the_Values_of (Trivial-Mem N)) or (the_Values_of (Trivial-Mem N)) . b1 = (0 .--> NAT) . b1 ) let x be set ; ::_thesis: ( not x in dom (the_Values_of (Trivial-Mem N)) or (the_Values_of (Trivial-Mem N)) . x = (0 .--> NAT) . x ) assume A6: x in dom (the_Values_of (Trivial-Mem N)) ; ::_thesis: (the_Values_of (Trivial-Mem N)) . x = (0 .--> NAT) . x then A7: x = 0 by A5, TARSKI:def_1; thus (the_Values_of (Trivial-Mem N)) . x = (N --> NAT) . ((0 .--> 0) . x) by A1, A6, FUNCT_1:12 .= (N --> NAT) . 0 by A7, FUNCOP_1:72 .= NAT by A4, FUNCOP_1:7 .= (0 .--> NAT) . x by A7, FUNCOP_1:72 ; ::_thesis: verum end; registration let N be with_zero set ; cluster Trivial-Mem N -> strict IC-Ins-separated ; coherence Trivial-Mem N is IC-Ins-separated proof IC = 0 by Def1; hence Values (IC ) = (0 .--> NAT) . 0 by Lm1 .= NAT by FUNCOP_1:72 ; :: according to MEMSTR_0:def_6 ::_thesis: verum end; end; registration let N be with_zero set ; cluster non empty trivial finite 1 -element strict with_non-empty_values IC-Ins-separated for Mem-Struct over N; existence ex b1 being 1 -element Mem-Struct over N st ( b1 is IC-Ins-separated & b1 is with_non-empty_values & b1 is strict ) proof take Trivial-Mem N ; ::_thesis: ( Trivial-Mem N is IC-Ins-separated & Trivial-Mem N is with_non-empty_values & Trivial-Mem N is strict ) thus ( Trivial-Mem N is IC-Ins-separated & Trivial-Mem N is with_non-empty_values & Trivial-Mem N is strict ) ; ::_thesis: verum end; end; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be PartState of S; func IC p -> Element of NAT equals :: MEMSTR_0:def 7 p . (IC ); coherence p . (IC ) is Element of NAT proof percases ( IC in dom p or not IC in dom p ) ; supposeA1: IC in dom p ; ::_thesis: p . (IC ) is Element of NAT consider s being State of S such that A2: p c= s by PBOOLE:141; reconsider ss = s as Element of product (the_Values_of S) by CARD_3:107; dom (the_Values_of S) = the carrier of S by PARTFUN1:def_2; then pi ((product (the_Values_of S)),(IC )) = Values (IC ) by CARD_3:12 .= NAT by Def6 ; then ss . (IC ) in NAT by CARD_3:def_6; hence p . (IC ) is Element of NAT by A1, A2, GRFUNC_1:2; ::_thesis: verum end; suppose not IC in dom p ; ::_thesis: p . (IC ) is Element of NAT then p . (IC ) = 0 by FUNCT_1:def_2; hence p . (IC ) is Element of NAT ; ::_thesis: verum end; end; end; end; :: deftheorem defines IC MEMSTR_0:def_7_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC p = p . (IC ); theorem :: MEMSTR_0:1 for N being with_zero set for S being 1 -element with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st IC s1 = IC s2 holds s1 = s2 proof let N be with_zero set ; ::_thesis: for S being 1 -element with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st IC s1 = IC s2 holds s1 = s2 let T be 1 -element with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s1, s2 being State of T st IC s1 = IC s2 holds s1 = s2 let s1, s2 be State of T; ::_thesis: ( IC s1 = IC s2 implies s1 = s2 ) assume A1: IC s1 = IC s2 ; ::_thesis: s1 = s2 A2: dom s1 = the carrier of T by PARTFUN1:def_2; then A3: dom s1 = dom s2 by PARTFUN1:def_2; now__::_thesis:_for_x_being_set_st_x_in_dom_s1_holds_ s1_._x_=_s2_._x let x be set ; ::_thesis: ( x in dom s1 implies s1 . x = s2 . x ) assume A4: x in dom s1 ; ::_thesis: s1 . x = s2 . x A5: x = IC by A4, A2, STRUCT_0:def_10; hence s1 . x = IC s1 .= s2 . x by A1, A5 ; ::_thesis: verum end; hence s1 = s2 by A3, FUNCT_1:2; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values Mem-Struct over N; let o be Object of S; cluster Values o -> non empty ; coherence not Values o is empty ; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let la be Object of S; let a be Element of Values la; clusterla .--> a -> the_Values_of S -compatible ; coherence la .--> a is the_Values_of S -compatible proof set p = la .--> a; A1: dom (la .--> a) = {la} by FUNCOP_1:13; let x be set ; :: according to FUNCT_1:def_14 ::_thesis: ( not x in dom (la .--> a) or (la .--> a) . x in (the_Values_of S) . x ) assume x in dom (la .--> a) ; ::_thesis: (la .--> a) . x in (the_Values_of S) . x then A2: x = la by A1, TARSKI:def_1; then (la .--> a) . x = a by FUNCOP_1:72; hence (la .--> a) . x in (the_Values_of S) . x by A2; ::_thesis: verum end; let lb be Object of S; let b be Element of Values lb; cluster(la,lb) --> (a,b) -> the_Values_of S -compatible ; coherence (la,lb) --> (a,b) is the_Values_of S -compatible ; end; theorem Th2: :: MEMSTR_0:2 for N being with_zero set for S being non empty with_non-empty_values Mem-Struct over N for s being State of S holds IC in dom s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values Mem-Struct over N for s being State of S holds IC in dom s let S be non empty with_non-empty_values Mem-Struct over N; ::_thesis: for s being State of S holds IC in dom s let s be State of S; ::_thesis: IC in dom s dom s = the carrier of S by PARTFUN1:def_2; hence IC in dom s ; ::_thesis: verum end; definition let N be with_zero set ; let S be Mem-Struct over N; let p be PartState of S; func DataPart p -> PartState of S equals :: MEMSTR_0:def 8 p | (Data-Locations ); coherence p | (Data-Locations ) is PartState of S ; projectivity for b1, b2 being PartState of S st b1 = b2 | (Data-Locations ) holds b1 = b1 | (Data-Locations ) by RELAT_1:72; end; :: deftheorem defines DataPart MEMSTR_0:def_8_:_ for N being with_zero set for S being Mem-Struct over N for p being PartState of S holds DataPart p = p | (Data-Locations ); definition let N be with_zero set ; let S be Mem-Struct over N; let p be PartState of S; attrp is data-only means :Def9: :: MEMSTR_0:def 9 dom p misses {(IC )}; end; :: deftheorem Def9 defines data-only MEMSTR_0:def_9_:_ for N being with_zero set for S being Mem-Struct over N for p being PartState of S holds ( p is data-only iff dom p misses {(IC )} ); registration let N be with_zero set ; let S be Mem-Struct over N; cluster empty Relation-like the carrier of S -defined Function-like the_Values_of S -compatible -> data-only for set ; coherence for b1 being PartState of S st b1 is empty holds b1 is data-only proof let p be PartState of S; ::_thesis: ( p is empty implies p is data-only ) assume p is empty ; ::_thesis: p is data-only hence dom p misses {(IC )} by RELAT_1:38, XBOOLE_1:65; :: according to MEMSTR_0:def_9 ::_thesis: verum end; end; registration let N be with_zero set ; let S be Mem-Struct over N; cluster empty Relation-like the carrier of S -defined Function-like the_Values_of S -compatible for set ; existence ex b1 being PartState of S st b1 is empty proof reconsider a = {} as PartState of S by FUNCT_1:104, RELAT_1:171; take a ; ::_thesis: a is empty thus a is empty ; ::_thesis: verum end; end; theorem Th3: :: MEMSTR_0:3 for N being with_zero set for S being Mem-Struct over N for p being PartState of S holds not IC in dom (DataPart p) proof let N be with_zero set ; ::_thesis: for S being Mem-Struct over N for p being PartState of S holds not IC in dom (DataPart p) let S be Mem-Struct over N; ::_thesis: for p being PartState of S holds not IC in dom (DataPart p) let p be PartState of S; ::_thesis: not IC in dom (DataPart p) assume A1: IC in dom (DataPart p) ; ::_thesis: contradiction dom (DataPart p) c= the carrier of S \ {(IC )} by RELAT_1:58; then not IC in {(IC )} by A1, XBOOLE_0:def_5; hence contradiction by TARSKI:def_1; ::_thesis: verum end; theorem :: MEMSTR_0:4 for N being with_zero set for S being Mem-Struct over N for p being PartState of S holds {(IC )} misses dom (DataPart p) by Th3, ZFMISC_1:50; theorem :: MEMSTR_0:5 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being data-only PartState of S for q being PartState of S holds ( p c= q iff p c= DataPart q ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being data-only PartState of S for q being PartState of S holds ( p c= q iff p c= DataPart q ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being data-only PartState of S for q being PartState of S holds ( p c= q iff p c= DataPart q ) let p be data-only PartState of S; ::_thesis: for q being PartState of S holds ( p c= q iff p c= DataPart q ) let q be PartState of S; ::_thesis: ( p c= q iff p c= DataPart q ) set X = the carrier of S \ {(IC )}; A1: q | ( the carrier of S \ {(IC )}) c= q by RELAT_1:59; hereby ::_thesis: ( p c= DataPart q implies p c= q ) A2: ( the carrier of S \ {(IC )}) \/ {(IC )} = the carrier of S \/ {(IC )} by XBOOLE_1:39; dom p c= the carrier of S by RELAT_1:def_18; then A3: dom p c= ( the carrier of S \ {(IC )}) \/ {(IC )} by A2, XBOOLE_1:10; assume p c= q ; ::_thesis: p c= DataPart q then A4: p | ( the carrier of S \ {(IC )}) c= DataPart q by RELAT_1:76; dom p misses {(IC )} by Def9; hence p c= DataPart q by A4, A3, RELAT_1:68, XBOOLE_1:73; ::_thesis: verum end; thus ( p c= DataPart q implies p c= q ) by A1, XBOOLE_1:1; ::_thesis: verum end; registration let N be with_zero set ; let S be Mem-Struct over N; let p be PartState of S; cluster DataPart p -> data-only ; coherence DataPart p is data-only proof thus dom (DataPart p) misses {(IC )} by Th3, ZFMISC_1:50; :: according to MEMSTR_0:def_9 ::_thesis: verum end; end; theorem Th6: :: MEMSTR_0:6 for N being with_zero set for S being Mem-Struct over N for p being PartState of S holds ( p is data-only iff dom p c= Data-Locations ) proof let N be with_zero set ; ::_thesis: for S being Mem-Struct over N for p being PartState of S holds ( p is data-only iff dom p c= Data-Locations ) let S be Mem-Struct over N; ::_thesis: for p being PartState of S holds ( p is data-only iff dom p c= Data-Locations ) let p be PartState of S; ::_thesis: ( p is data-only iff dom p c= Data-Locations ) thus ( p is data-only implies dom p c= Data-Locations ) ::_thesis: ( dom p c= Data-Locations implies p is data-only ) proof A1: dom p c= the carrier of S by RELAT_1:def_18; assume dom p misses {(IC )} ; :: according to MEMSTR_0:def_9 ::_thesis: dom p c= Data-Locations hence dom p c= Data-Locations by A1, XBOOLE_1:86; ::_thesis: verum end; assume dom p c= Data-Locations ; ::_thesis: p is data-only hence dom p misses {(IC )} by XBOOLE_1:106; :: according to MEMSTR_0:def_9 ::_thesis: verum end; theorem :: MEMSTR_0:7 for N being with_zero set for S being Mem-Struct over N for p being data-only PartState of S holds DataPart p = p proof let N be with_zero set ; ::_thesis: for S being Mem-Struct over N for p being data-only PartState of S holds DataPart p = p let S be Mem-Struct over N; ::_thesis: for p being data-only PartState of S holds DataPart p = p let p be data-only PartState of S; ::_thesis: DataPart p = p dom p c= Data-Locations by Th6; hence DataPart p = p by RELAT_1:68; ::_thesis: verum end; theorem Th8: :: MEMSTR_0:8 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Data-Locations c= dom s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Data-Locations c= dom s let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds Data-Locations c= dom s let s be State of S; ::_thesis: Data-Locations c= dom s dom s = the carrier of S by PARTFUN1:def_2; hence Data-Locations c= dom s ; ::_thesis: verum end; theorem Th9: :: MEMSTR_0:9 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds dom (DataPart s) = Data-Locations proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds dom (DataPart s) = Data-Locations let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds dom (DataPart s) = Data-Locations let s be State of S; ::_thesis: dom (DataPart s) = Data-Locations Data-Locations c= dom s by Th8; hence dom (DataPart s) = Data-Locations by RELAT_1:62; ::_thesis: verum end; theorem Th10: :: MEMSTR_0:10 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for d being data-only PartState of S holds not IC in dom d proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for d being data-only PartState of S holds not IC in dom d let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for d being data-only PartState of S holds not IC in dom d let d be data-only PartState of S; ::_thesis: not IC in dom d dom d c= Data-Locations by Th6; hence not IC in dom d by STRUCT_0:3; ::_thesis: verum end; theorem Th11: :: MEMSTR_0:11 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S holds IC (p +* d) = IC p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S holds IC (p +* d) = IC p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for d being data-only PartState of S holds IC (p +* d) = IC p let p be PartState of S; ::_thesis: for d being data-only PartState of S holds IC (p +* d) = IC p let d be data-only PartState of S; ::_thesis: IC (p +* d) = IC p A1: not IC in dom d by Th10; thus IC (p +* d) = IC p by A1, FUNCT_4:11; ::_thesis: verum end; theorem :: MEMSTR_0:12 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds DataPart p c= p by RELAT_1:59; theorem Th13: :: MEMSTR_0:13 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds dom s = {(IC )} \/ (Data-Locations ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds dom s = {(IC )} \/ (Data-Locations ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds dom s = {(IC )} \/ (Data-Locations ) let s be State of S; ::_thesis: dom s = {(IC )} \/ (Data-Locations ) dom s = the carrier of S by PARTFUN1:def_2; hence dom s = {(IC )} \/ (Data-Locations ) by STRUCT_0:4; ::_thesis: verum end; theorem :: MEMSTR_0:14 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds (dom p) /\ (Data-Locations ) = dom (DataPart p) by RELAT_1:61; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Element of NAT ; let s be State of S; clusters +* ((IC ),l) -> the_Values_of S -compatible ; coherence s +* ((IC ),l) is the_Values_of S -compatible proof let x be set ; :: according to FUNCT_1:def_14 ::_thesis: ( not x in dom (s +* ((IC ),l)) or (s +* ((IC ),l)) . x in (the_Values_of S) . x ) assume x in dom (s +* ((IC ),l)) ; ::_thesis: (s +* ((IC ),l)) . x in (the_Values_of S) . x then A1: x in dom s by FUNCT_7:30; percases ( x = IC or x <> IC ) ; supposeA2: x = IC ; ::_thesis: (s +* ((IC ),l)) . x in (the_Values_of S) . x then A3: (s +* ((IC ),l)) . x = l by A1, FUNCT_7:31; Values (IC ) = NAT by Def6; hence (s +* ((IC ),l)) . x in (the_Values_of S) . x by A2, A3; ::_thesis: verum end; suppose x <> IC ; ::_thesis: (s +* ((IC ),l)) . x in (the_Values_of S) . x then (s +* ((IC ),l)) . x = s . x by FUNCT_7:32; hence (s +* ((IC ),l)) . x in (the_Values_of S) . x by A1, FUNCT_1:def_14; ::_thesis: verum end; end; end; end; begin definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; func Start-At (l,S) -> PartState of S equals :: MEMSTR_0:def 10 (IC ) .--> l; correctness coherence (IC ) .--> l is PartState of S; proof reconsider l = l as Element of NAT by ORDINAL1:def_12; Values (IC ) = NAT by Def6; then reconsider l = l as Element of Values (IC ) ; (IC ) .--> l is PartState of S ; hence (IC ) .--> l is PartState of S ; ::_thesis: verum end; end; :: deftheorem defines Start-At MEMSTR_0:def_10_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat holds Start-At (l,S) = (IC ) .--> l; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; let p be PartState of S; attrp is l -started means :Def11: :: MEMSTR_0:def 11 ( IC in dom p & IC p = l ); end; :: deftheorem Def11 defines -started MEMSTR_0:def_11_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for p being PartState of S holds ( p is l -started iff ( IC in dom p & IC p = l ) ); registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; cluster Start-At (l,S) -> non empty l -started ; coherence ( Start-At (l,S) is l -started & not Start-At (l,S) is empty ) proof dom (Start-At (l,S)) = {(IC )} by FUNCOP_1:13; hence IC in dom (Start-At (l,S)) by TARSKI:def_1; :: according to MEMSTR_0:def_11 ::_thesis: ( IC (Start-At (l,S)) = l & not Start-At (l,S) is empty ) thus ( IC (Start-At (l,S)) = l & not Start-At (l,S) is empty ) by FUNCOP_1:72; ::_thesis: verum end; end; theorem Th15: :: MEMSTR_0:15 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat holds IC in dom (Start-At (l,S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat holds IC in dom (Start-At (l,S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l being Nat holds IC in dom (Start-At (l,S)) let l be Nat; ::_thesis: IC in dom (Start-At (l,S)) dom (Start-At (l,S)) = {(IC )} by FUNCOP_1:13; hence IC in dom (Start-At (l,S)) by TARSKI:def_1; ::_thesis: verum end; theorem Th16: :: MEMSTR_0:16 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for n being Nat holds IC (p +* (Start-At (n,S))) = n proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for n being Nat holds IC (p +* (Start-At (n,S))) = n let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for n being Nat holds IC (p +* (Start-At (n,S))) = n let p be PartState of S; ::_thesis: for n being Nat holds IC (p +* (Start-At (n,S))) = n let n be Nat; ::_thesis: IC (p +* (Start-At (n,S))) = n A1: IC in dom (Start-At (n,S)) by Th15; (Start-At (n,S)) . (IC ) = n by FUNCOP_1:72; hence IC (p +* (Start-At (n,S))) = n by A1, FUNCT_4:13; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; cluster non empty Relation-like the carrier of S -defined Function-like the_Values_of S -compatible total l -started for set ; existence ex b1 being State of S st b1 is l -started proof take s = the State of S +* (Start-At (l,S)); ::_thesis: s is l -started thus IC in dom s by Th2; :: according to MEMSTR_0:def_11 ::_thesis: IC s = l thus IC s = l by Th16; ::_thesis: verum end; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; let p be PartState of S; let q be l -started PartState of S; clusterp +* q -> l -started ; coherence p +* q is l -started proof A1: IC in dom q by Def11; dom q c= dom (p +* q) by FUNCT_4:10; hence IC in dom (p +* q) by A1; :: according to MEMSTR_0:def_11 ::_thesis: IC (p +* q) = l IC q = l by Def11; hence IC (p +* q) = l by A1, FUNCT_4:13; ::_thesis: verum end; end; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; let s be State of S; redefine attr s is l -started means :: MEMSTR_0:def 12 IC s = l; compatibility ( s is l -started iff IC s = l ) proof thus ( s is l -started implies IC s = l ) by Def11; ::_thesis: ( IC s = l implies s is l -started ) assume A1: IC s = l ; ::_thesis: s is l -started thus IC in dom s by Th2; :: according to MEMSTR_0:def_11 ::_thesis: IC s = l thus IC s = l by A1; ::_thesis: verum end; end; :: deftheorem defines -started MEMSTR_0:def_12_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for s being State of S holds ( s is l -started iff IC s = l ); theorem :: MEMSTR_0:17 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for p being b3 -started PartState of S for s being PartState of S st p c= s holds s is l -started proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for p being b2 -started PartState of S for s being PartState of S st p c= s holds s is l -started let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l being Nat for p being b1 -started PartState of S for s being PartState of S st p c= s holds s is l -started let l be Nat; ::_thesis: for p being l -started PartState of S for s being PartState of S st p c= s holds s is l -started let p be l -started PartState of S; ::_thesis: for s being PartState of S st p c= s holds s is l -started A1: IC in dom p by Def11; A2: IC p = l by Def11; let s be PartState of S; ::_thesis: ( p c= s implies s is l -started ) assume A3: p c= s ; ::_thesis: s is l -started then dom p c= dom s by RELAT_1:11; hence IC in dom s by A1; :: according to MEMSTR_0:def_11 ::_thesis: IC s = l thus IC s = l by A3, A2, A1, GRFUNC_1:2; ::_thesis: verum end; theorem Th18: :: MEMSTR_0:18 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Start-At ((IC s),S) = s | {(IC )} proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Start-At ((IC s),S) = s | {(IC )} let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds Start-At ((IC s),S) = s | {(IC )} let s be State of S; ::_thesis: Start-At ((IC s),S) = s | {(IC )} A1: IC in dom s by Th2; thus Start-At ((IC s),S) = {[(IC ),(s . (IC ))]} by FUNCT_4:82 .= s | {(IC )} by A1, GRFUNC_1:28 ; ::_thesis: verum end; theorem Th19: :: MEMSTR_0:19 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p = (Start-At ((IC p),S)) +* (DataPart p) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p = (Start-At ((IC p),S)) +* (DataPart p) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st IC in dom p holds p = (Start-At ((IC p),S)) +* (DataPart p) let p be PartState of S; ::_thesis: ( IC in dom p implies p = (Start-At ((IC p),S)) +* (DataPart p) ) assume IC in dom p ; ::_thesis: p = (Start-At ((IC p),S)) +* (DataPart p) then A1: {(IC )} is Subset of (dom p) by SUBSET_1:41; A2: {(IC )} \/ ( the carrier of S \ {(IC )}) = the carrier of S \/ {(IC )} by XBOOLE_1:39 .= the carrier of S by XBOOLE_1:12 ; A3: dom p c= the carrier of S by RELAT_1:def_18; A4: now__::_thesis:_for_x_being_set_st_x_in_dom_p_holds_ p_._x_=_((Start-At_((IC_p),S))_+*_(DataPart_p))_._x let x be set ; ::_thesis: ( x in dom p implies p . b1 = ((Start-At ((IC p),S)) +* (DataPart p)) . b1 ) assume A5: x in dom p ; ::_thesis: p . b1 = ((Start-At ((IC p),S)) +* (DataPart p)) . b1 percases ( x in {(IC )} or x in the carrier of S \ {(IC )} ) by A5, A3, A2, XBOOLE_0:def_3; supposeA6: x in {(IC )} ; ::_thesis: p . b1 = ((Start-At ((IC p),S)) +* (DataPart p)) . b1 {(IC )} = dom (Start-At ((IC p),S)) by FUNCOP_1:13; then IC in dom (Start-At ((IC p),S)) by TARSKI:def_1; then A7: IC in (dom (Start-At ((IC p),S))) \/ (dom (DataPart p)) by XBOOLE_0:def_3; A8: x = IC by A6, TARSKI:def_1; not IC in dom (DataPart p) by Th3; then ((Start-At ((IC p),S)) +* (DataPart p)) . x = (Start-At ((IC p),S)) . x by A8, A7, FUNCT_4:def_1 .= IC p by A8, FUNCOP_1:72 ; hence p . x = ((Start-At ((IC p),S)) +* (DataPart p)) . x by A6, TARSKI:def_1; ::_thesis: verum end; suppose x in the carrier of S \ {(IC )} ; ::_thesis: p . b1 = ((Start-At ((IC p),S)) +* (DataPart p)) . b1 then x in (dom p) /\ ( the carrier of S \ {(IC )}) by A5, XBOOLE_0:def_4; then A9: x in dom (p | ( the carrier of S \ {(IC )})) by RELAT_1:61; ((Start-At ((IC p),S)) +* (DataPart p)) . x = (DataPart p) . x by A9, FUNCT_4:13 .= p . x by A9, FUNCT_1:47 ; hence p . x = ((Start-At ((IC p),S)) +* (DataPart p)) . x ; ::_thesis: verum end; end; end; A10: dom p c= the carrier of S by RELAT_1:def_18; dom ((Start-At ((IC p),S)) +* (DataPart p)) = (dom (Start-At ((IC p),S))) \/ (dom (DataPart p)) by FUNCT_4:def_1 .= {(IC )} \/ (dom (DataPart p)) by FUNCOP_1:13 .= ((dom p) /\ {(IC )}) \/ (dom (p | ( the carrier of S \ {(IC )}))) by A1, XBOOLE_1:28 .= ((dom p) /\ {(IC )}) \/ ((dom p) /\ ( the carrier of S \ {(IC )})) by RELAT_1:61 .= (dom p) /\ the carrier of S by A2, XBOOLE_1:23 .= dom p by A10, XBOOLE_1:28 ; hence p = (Start-At ((IC p),S)) +* (DataPart p) by A4, FUNCT_1:2; ::_thesis: verum end; theorem Th20: :: MEMSTR_0:20 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat holds DataPart (Start-At (l,S)) = {} proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat holds DataPart (Start-At (l,S)) = {} let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l being Nat holds DataPart (Start-At (l,S)) = {} let l be Nat; ::_thesis: DataPart (Start-At (l,S)) = {} Data-Locations misses {(IC )} by XBOOLE_1:79; then Data-Locations misses dom (Start-At (l,S)) by FUNCOP_1:13; hence DataPart (Start-At (l,S)) = {} by RELAT_1:66; ::_thesis: verum end; theorem :: MEMSTR_0:21 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l1, l2, k being Nat holds ( Start-At ((l1 + k),S) = Start-At ((l2 + k),S) iff Start-At (l1,S) = Start-At (l2,S) ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l1, l2, k being Nat holds ( Start-At ((l1 + k),S) = Start-At ((l2 + k),S) iff Start-At (l1,S) = Start-At (l2,S) ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l1, l2, k being Nat holds ( Start-At ((l1 + k),S) = Start-At ((l2 + k),S) iff Start-At (l1,S) = Start-At (l2,S) ) let l1, l2, k be Nat; ::_thesis: ( Start-At ((l1 + k),S) = Start-At ((l2 + k),S) iff Start-At (l1,S) = Start-At (l2,S) ) hereby ::_thesis: ( Start-At (l1,S) = Start-At (l2,S) implies Start-At ((l1 + k),S) = Start-At ((l2 + k),S) ) assume Start-At ((l1 + k),S) = Start-At ((l2 + k),S) ; ::_thesis: Start-At (l1,S) = Start-At (l2,S) then {[(IC ),(l1 + k)]} = (IC ) .--> (l2 + k) by FUNCT_4:82; then {[(IC ),(l1 + k)]} = {[(IC ),(l2 + k)]} by FUNCT_4:82; then [(IC ),(l1 + k)] = [(IC ),(l2 + k)] by ZFMISC_1:3; then l1 + k = l2 + k by XTUPLE_0:1; hence Start-At (l1,S) = Start-At (l2,S) ; ::_thesis: verum end; assume Start-At (l1,S) = Start-At (l2,S) ; ::_thesis: Start-At ((l1 + k),S) = Start-At ((l2 + k),S) then {[(IC ),l1]} = Start-At (l2,S) by FUNCT_4:82; then {[(IC ),l1]} = {[(IC ),l2]} by FUNCT_4:82; then [(IC ),l1] = [(IC ),l2] by ZFMISC_1:3; hence Start-At ((l1 + k),S) = Start-At ((l2 + k),S) by XTUPLE_0:1; ::_thesis: verum end; theorem :: MEMSTR_0:22 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l1, l2, k being Nat st Start-At (l1,S) = Start-At (l2,S) holds Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l1, l2, k being Nat st Start-At (l1,S) = Start-At (l2,S) holds Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l1, l2, k being Nat st Start-At (l1,S) = Start-At (l2,S) holds Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) let l1, l2, k be Nat; ::_thesis: ( Start-At (l1,S) = Start-At (l2,S) implies Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) ) assume Start-At (l1,S) = Start-At (l2,S) ; ::_thesis: Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) then {[(IC ),l1]} = Start-At (l2,S) by FUNCT_4:82 .= {[(IC ),l2]} by FUNCT_4:82 ; then [(IC ),l1] = [(IC ),l2] by ZFMISC_1:3; hence Start-At ((l1 -' k),S) = Start-At ((l2 -' k),S) by XTUPLE_0:1; ::_thesis: verum end; theorem Th23: :: MEMSTR_0:23 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for d being data-only PartState of S for k being Nat holds d tolerates Start-At (k,S) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for d being data-only PartState of S for k being Nat holds d tolerates Start-At (k,S) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for d being data-only PartState of S for k being Nat holds d tolerates Start-At (k,S) let d be data-only PartState of S; ::_thesis: for k being Nat holds d tolerates Start-At (k,S) let k be Nat; ::_thesis: d tolerates Start-At (k,S) dom (Start-At (k,S)) = {(IC )} by FUNCOP_1:13; then dom d misses dom (Start-At (k,S)) by Th10, ZFMISC_1:50; hence d tolerates Start-At (k,S) by PARTFUN1:56; ::_thesis: verum end; theorem Th24: :: MEMSTR_0:24 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds dom p = {(IC )} \/ (dom (DataPart p)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds dom p = {(IC )} \/ (dom (DataPart p)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st IC in dom p holds dom p = {(IC )} \/ (dom (DataPart p)) let p be PartState of S; ::_thesis: ( IC in dom p implies dom p = {(IC )} \/ (dom (DataPart p)) ) assume IC in dom p ; ::_thesis: dom p = {(IC )} \/ (dom (DataPart p)) then A1: p = (Start-At ((IC p),S)) +* (DataPart p) by Th19; dom p = (dom (Start-At ((IC p),S))) \/ (dom (DataPart p)) by A1, FUNCT_4:def_1 .= {(IC )} \/ (dom (DataPart p)) by FUNCOP_1:13 ; hence dom p = {(IC )} \/ (dom (DataPart p)) ; ::_thesis: verum end; theorem :: MEMSTR_0:25 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds dom s = {(IC )} \/ (dom (DataPart s)) by Th2, Th24; theorem Th26: :: MEMSTR_0:26 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p = (DataPart p) +* (Start-At ((IC p),S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p = (DataPart p) +* (Start-At ((IC p),S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st IC in dom p holds p = (DataPart p) +* (Start-At ((IC p),S)) let p be PartState of S; ::_thesis: ( IC in dom p implies p = (DataPart p) +* (Start-At ((IC p),S)) ) A1: dom (Start-At ((IC p),S)) = {(IC )} by FUNCOP_1:13; then A2: dom (DataPart p) misses dom (Start-At ((IC p),S)) by Th3, ZFMISC_1:50; A3: dom (Start-At ((IC p),S)) misses dom (DataPart p) by A1, Th3, ZFMISC_1:50; assume IC in dom p ; ::_thesis: p = (DataPart p) +* (Start-At ((IC p),S)) then p = (Start-At ((IC p),S)) +* (DataPart p) by Th19; then A4: p = (Start-At ((IC p),S)) \/ (DataPart p) by A3, FUNCT_4:31; thus p = (DataPart p) +* (Start-At ((IC p),S)) by A2, A4, FUNCT_4:31; ::_thesis: verum end; theorem Th27: :: MEMSTR_0:27 for k being Nat for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC in dom (p +* (Start-At (k,S))) proof let k be Nat; ::_thesis: for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC in dom (p +* (Start-At (k,S))) let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC in dom (p +* (Start-At (k,S))) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S holds IC in dom (p +* (Start-At (k,S))) let p be PartState of S; ::_thesis: IC in dom (p +* (Start-At (k,S))) dom (Start-At (k,S)) = {(IC )} by FUNCOP_1:13; then IC in dom (Start-At (k,S)) by TARSKI:def_1; hence IC in dom (p +* (Start-At (k,S))) by FUNCT_4:12; ::_thesis: verum end; theorem :: MEMSTR_0:28 for k being Nat for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k proof let k be Nat; ::_thesis: for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let s be State of S; ::_thesis: for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let p be PartState of S; ::_thesis: ( p +* (Start-At (k,S)) c= s implies IC s = k ) assume A1: p +* (Start-At (k,S)) c= s ; ::_thesis: IC s = k IC in dom (p +* (Start-At (k,S))) by Th27; hence IC s = IC (p +* (Start-At (k,S))) by A1, GRFUNC_1:2 .= k by Th16 ; ::_thesis: verum end; theorem Th29: :: MEMSTR_0:29 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for p being PartState of S holds ( p is l -started iff Start-At (l,S) c= p ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for l being Nat for p being PartState of S holds ( p is l -started iff Start-At (l,S) c= p ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for l being Nat for p being PartState of S holds ( p is l -started iff Start-At (l,S) c= p ) let l be Nat; ::_thesis: for p being PartState of S holds ( p is l -started iff Start-At (l,S) c= p ) let p be PartState of S; ::_thesis: ( p is l -started iff Start-At (l,S) c= p ) A1: dom (Start-At (l,S)) = {(IC )} by FUNCOP_1:13; thus ( p is l -started implies Start-At (l,S) c= p ) ::_thesis: ( Start-At (l,S) c= p implies p is l -started ) proof assume A2: p is l -started ; ::_thesis: Start-At (l,S) c= p IC in dom p by A2, Def11; then A3: dom (Start-At (l,S)) c= dom p by A1, ZFMISC_1:31; for x being set st x in dom (Start-At (l,S)) holds (Start-At (l,S)) . x = p . x proof let x be set ; ::_thesis: ( x in dom (Start-At (l,S)) implies (Start-At (l,S)) . x = p . x ) assume A4: x in dom (Start-At (l,S)) ; ::_thesis: (Start-At (l,S)) . x = p . x hence (Start-At (l,S)) . x = IC (Start-At (l,S)) by A1, TARSKI:def_1 .= l by FUNCOP_1:72 .= IC p by A2, Def11 .= p . x by A1, A4, TARSKI:def_1 ; ::_thesis: verum end; hence Start-At (l,S) c= p by A3, GRFUNC_1:2; ::_thesis: verum end; assume A5: Start-At (l,S) c= p ; ::_thesis: p is l -started then A6: dom (Start-At (l,S)) c= dom p by RELAT_1:11; A7: IC in dom (Start-At (l,S)) by A1, TARSKI:def_1; hence IC in dom p by A6; :: according to MEMSTR_0:def_11 ::_thesis: IC p = l thus IC p = IC (Start-At (l,S)) by A5, A7, GRFUNC_1:2 .= l by FUNCOP_1:72 ; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let k be Nat; let p be k -started PartState of S; let d be data-only PartState of S; clusterp +* d -> k -started ; coherence p +* d is k -started proof A1: IC in dom p by Def11; dom (p +* d) = (dom p) \/ (dom d) by FUNCT_4:def_1; hence IC in dom (p +* d) by A1, XBOOLE_0:def_3; :: according to MEMSTR_0:def_11 ::_thesis: IC (p +* d) = k not IC in dom d by Th10; hence IC (p +* d) = IC p by FUNCT_4:11 .= k by Def11 ; ::_thesis: verum end; end; theorem Th30: :: MEMSTR_0:30 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Start-At ((IC s),S) c= s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds Start-At ((IC s),S) c= s let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds Start-At ((IC s),S) c= s let s be State of S; ::_thesis: Start-At ((IC s),S) c= s Start-At ((IC s),S) = s | {(IC )} by Th18; hence Start-At ((IC s),S) c= s by RELAT_1:59; ::_thesis: verum end; theorem :: MEMSTR_0:31 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds s +* (Start-At ((IC s),S)) = s by Th30, FUNCT_4:98; theorem :: MEMSTR_0:32 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds dom p c= {(IC )} \/ (dom (DataPart p)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds dom p c= {(IC )} \/ (dom (DataPart p)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S holds dom p c= {(IC )} \/ (dom (DataPart p)) let p be PartState of S; ::_thesis: dom p c= {(IC )} \/ (dom (DataPart p)) set S0 = Start-At (0,S); percases ( IC in dom p or not IC in dom p ) ; suppose IC in dom p ; ::_thesis: dom p c= {(IC )} \/ (dom (DataPart p)) hence dom p c= {(IC )} \/ (dom (DataPart p)) by Th24; ::_thesis: verum end; supposeA1: not IC in dom p ; ::_thesis: dom p c= {(IC )} \/ (dom (DataPart p)) A2: dom (Start-At (0,S)) = {(IC )} by FUNCOP_1:13; A3: dom (p +* (Start-At (0,S))) = {(IC )} \/ (dom (DataPart (p +* (Start-At (0,S))))) by Th24, Th27 .= {(IC )} \/ (dom ((DataPart p) +* (DataPart (Start-At (0,S))))) by FUNCT_4:71 .= {(IC )} \/ (dom ((DataPart p) +* {})) by Th20 .= {(IC )} \/ (dom (DataPart p)) ; now__::_thesis:_not_dom_p_meets_dom_(Start-At_(0,S)) assume dom p meets dom (Start-At (0,S)) ; ::_thesis: contradiction then consider x being set such that A4: x in dom p and A5: x in dom (Start-At (0,S)) by XBOOLE_0:3; thus contradiction by A4, A1, A2, A5, TARSKI:def_1; ::_thesis: verum end; then p c= p +* (Start-At (0,S)) by FUNCT_4:32; hence dom p c= {(IC )} \/ (dom (DataPart p)) by A3, RELAT_1:11; ::_thesis: verum end; end; end; theorem Th33: :: MEMSTR_0:33 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds s = s | ((Data-Locations ) \/ {(IC )}) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S holds s = s | ((Data-Locations ) \/ {(IC )}) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S holds s = s | ((Data-Locations ) \/ {(IC )}) let s be State of S; ::_thesis: s = s | ((Data-Locations ) \/ {(IC )}) thus s = s | (dom s) .= s | ({(IC )} \/ (dom (DataPart s))) by Th2, Th24 .= s | ((Data-Locations ) \/ {(IC )}) by Th9 ; ::_thesis: verum end; theorem :: MEMSTR_0:34 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st s1 | ((Data-Locations ) \/ {(IC )}) = s2 | ((Data-Locations ) \/ {(IC )}) holds s1 = s2 proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st s1 | ((Data-Locations ) \/ {(IC )}) = s2 | ((Data-Locations ) \/ {(IC )}) holds s1 = s2 let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s1, s2 being State of S st s1 | ((Data-Locations ) \/ {(IC )}) = s2 | ((Data-Locations ) \/ {(IC )}) holds s1 = s2 let s1, s2 be State of S; ::_thesis: ( s1 | ((Data-Locations ) \/ {(IC )}) = s2 | ((Data-Locations ) \/ {(IC )}) implies s1 = s2 ) s1 = s1 | ((Data-Locations ) \/ {(IC )}) by Th33; hence ( s1 | ((Data-Locations ) \/ {(IC )}) = s2 | ((Data-Locations ) \/ {(IC )}) implies s1 = s2 ) by Th33; ::_thesis: verum end; theorem :: MEMSTR_0:35 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p = (Start-At ((IC p),S)) +* (DataPart p) by Th19; theorem Th36: :: MEMSTR_0:36 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k, l being Nat holds (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k, l being Nat holds (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k, l being Nat holds (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) let p be PartState of S; ::_thesis: for k, l being Nat holds (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) let k, l be Nat; ::_thesis: (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) dom (Start-At (k,S)) = {(IC )} by FUNCOP_1:13 .= dom (Start-At (l,S)) by FUNCOP_1:13 ; hence (p +* (Start-At (k,S))) +* (Start-At (l,S)) = p +* (Start-At (l,S)) by FUNCT_4:74; ::_thesis: verum end; theorem :: MEMSTR_0:37 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds p +* (Start-At ((IC p),S)) = p by FUNCT_4:7, FUNCT_4:98; theorem :: MEMSTR_0:38 for k being Nat for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k proof let k be Nat; ::_thesis: for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let s be State of S; ::_thesis: for p being PartState of S st p +* (Start-At (k,S)) c= s holds IC s = k let p be PartState of S; ::_thesis: ( p +* (Start-At (k,S)) c= s implies IC s = k ) assume A1: p +* (Start-At (k,S)) c= s ; ::_thesis: IC s = k IC in dom (p +* (Start-At (k,S))) by Th27; hence IC s = IC (p +* (Start-At (k,S))) by A1, GRFUNC_1:2 .= k by Th16 ; ::_thesis: verum end; theorem :: MEMSTR_0:39 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st Start-At (0,S) c= p holds IC p = 0 proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st Start-At (0,S) c= p holds IC p = 0 let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st Start-At (0,S) c= p holds IC p = 0 let p be PartState of S; ::_thesis: ( Start-At (0,S) c= p implies IC p = 0 ) A1: IC (Start-At (0,S)) = 0 by Def11; IC in dom (Start-At (0,S)) by Def11; hence ( Start-At (0,S) c= p implies IC p = 0 ) by A1, GRFUNC_1:2; ::_thesis: verum end; theorem :: MEMSTR_0:40 for k being Nat for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st Start-At (k,S) c= p holds IC p = k proof let k be Nat; ::_thesis: for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st Start-At (k,S) c= p holds IC p = k let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st Start-At (k,S) c= p holds IC p = k let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st Start-At (k,S) c= p holds IC p = k let p be PartState of S; ::_thesis: ( Start-At (k,S) c= p implies IC p = k ) assume Start-At (k,S) c= p ; ::_thesis: IC p = k then p is k -started by Th29; hence IC p = k by Def11; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; cluster non empty Relation-like the carrier of S -defined Function-like the_Values_of S -compatible for set ; existence not for b1 being PartState of S holds b1 is empty proof take Start-At (0,S) ; ::_thesis: not Start-At (0,S) is empty thus not Start-At (0,S) is empty ; ::_thesis: verum end; end; theorem :: MEMSTR_0:41 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being non empty PartState of S holds dom p meets {(IC )} \/ (Data-Locations ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being non empty PartState of S holds dom p meets {(IC )} \/ (Data-Locations ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being non empty PartState of S holds dom p meets {(IC )} \/ (Data-Locations ) let p be non empty PartState of S; ::_thesis: dom p meets {(IC )} \/ (Data-Locations ) dom p c= the carrier of S by RELAT_1:def_18; then dom p meets the carrier of S by XBOOLE_1:69; hence dom p meets {(IC )} \/ (Data-Locations ) by STRUCT_0:4; ::_thesis: verum end; begin definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be PartState of S; func Initialize p -> PartState of S equals :: MEMSTR_0:def 13 p +* (Start-At (0,S)); coherence p +* (Start-At (0,S)) is PartState of S ; projectivity for b1, b2 being PartState of S st b1 = b2 +* (Start-At (0,S)) holds b1 = b1 +* (Start-At (0,S)) proof let q, p be PartState of S; ::_thesis: ( q = p +* (Start-At (0,S)) implies q = q +* (Start-At (0,S)) ) assume A1: q = p +* (Start-At (0,S)) ; ::_thesis: q = q +* (Start-At (0,S)) hence q = (p +* (Start-At (0,S))) +* (Start-At (0,S)) .= q +* (Start-At (0,S)) by A1 ; ::_thesis: verum end; end; :: deftheorem defines Initialize MEMSTR_0:def_13_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds Initialize p = p +* (Start-At (0,S)); registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be PartState of S; cluster Initialize p -> 0 -started ; coherence Initialize p is 0 -started ; end; theorem Th42: :: MEMSTR_0:42 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds dom (Initialize p) = (dom p) \/ {(IC )} proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds dom (Initialize p) = (dom p) \/ {(IC )} let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S holds dom (Initialize p) = (dom p) \/ {(IC )} let p be PartState of S; ::_thesis: dom (Initialize p) = (dom p) \/ {(IC )} thus dom (Initialize p) = (dom p) \/ (dom (Start-At (0,S))) by FUNCT_4:def_1 .= (dom p) \/ {(IC )} by FUNCOP_1:13 ; ::_thesis: verum end; theorem :: MEMSTR_0:43 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for x being set holds ( not x in dom (Initialize p) or x in dom p or x = IC ) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for x being set holds ( not x in dom (Initialize p) or x in dom p or x = IC ) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for x being set holds ( not x in dom (Initialize p) or x in dom p or x = IC ) let p be PartState of S; ::_thesis: for x being set holds ( not x in dom (Initialize p) or x in dom p or x = IC ) let x be set ; ::_thesis: ( not x in dom (Initialize p) or x in dom p or x = IC ) assume A1: x in dom (Initialize p) ; ::_thesis: ( x in dom p or x = IC ) dom (Initialize p) = (dom p) \/ {(IC )} by Th42; then ( x in dom p or x in {(IC )} ) by A1, XBOOLE_0:def_3; hence ( x in dom p or x = IC ) by TARSKI:def_1; ::_thesis: verum end; theorem :: MEMSTR_0:44 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being 0 -started PartState of S holds Initialize p = p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being 0 -started PartState of S holds Initialize p = p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being 0 -started PartState of S holds Initialize p = p let p be 0 -started PartState of S; ::_thesis: Initialize p = p ( IC in dom p & IC p = 0 ) by Def11; hence Initialize p = p by FUNCT_4:85, FUNCT_4:98; ::_thesis: verum end; theorem Th45: :: MEMSTR_0:45 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds DataPart (Initialize p) = DataPart p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds DataPart (Initialize p) = DataPart p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S holds DataPart (Initialize p) = DataPart p let p be PartState of S; ::_thesis: DataPart (Initialize p) = DataPart p thus DataPart (Initialize p) = (DataPart p) +* (DataPart (Start-At (0,S))) by FUNCT_4:71 .= (DataPart p) +* {} by Th20 .= DataPart p ; ::_thesis: verum end; theorem :: MEMSTR_0:46 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S st IC s = 0 holds Initialize s = s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S st IC s = 0 holds Initialize s = s let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S st IC s = 0 holds Initialize s = s let s be State of S; ::_thesis: ( IC s = 0 implies Initialize s = s ) assume A1: IC s = 0 ; ::_thesis: Initialize s = s A2: IC in dom s by Th2; thus Initialize s = s by A1, A2, FUNCT_7:109; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let s be State of S; cluster Initialize s -> total ; coherence Initialize s is total ; end; theorem Th47: :: MEMSTR_0:47 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st Initialize p c= s holds IC s = 0 proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for p being PartState of S st Initialize p c= s holds IC s = 0 let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for p being PartState of S st Initialize p c= s holds IC s = 0 let s be State of S; ::_thesis: for p being PartState of S st Initialize p c= s holds IC s = 0 let p be PartState of S; ::_thesis: ( Initialize p c= s implies IC s = 0 ) A1: IC (Initialize p) = 0 by Def11; A2: IC in dom (Initialize p) by Def11; assume Initialize p c= s ; ::_thesis: IC s = 0 hence IC s = 0 by A1, A2, GRFUNC_1:2; ::_thesis: verum end; theorem Th48: :: MEMSTR_0:48 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC in dom (Initialize p) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S holds IC in dom (Initialize p) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S holds IC in dom (Initialize p) let p be PartState of S; ::_thesis: IC in dom (Initialize p) A1: dom (Initialize p) = (dom p) \/ {(IC )} by Th42; IC in {(IC )} by TARSKI:def_1; hence IC in dom (Initialize p) by A1, XBOOLE_0:def_3; ::_thesis: verum end; theorem :: MEMSTR_0:49 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S holds IC in dom (p +* (Initialize q)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S holds IC in dom (p +* (Initialize q)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p, q being PartState of S holds IC in dom (p +* (Initialize q)) let p, q be PartState of S; ::_thesis: IC in dom (p +* (Initialize q)) A1: dom (p +* (Initialize q)) = (dom p) \/ (dom (Initialize q)) by FUNCT_4:def_1; IC in dom (Initialize q) by Th48; hence IC in dom (p +* (Initialize q)) by A1, XBOOLE_0:def_3; ::_thesis: verum end; theorem :: MEMSTR_0:50 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S st Initialize p c= q holds Start-At (0,S) c= q proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S st Initialize p c= q holds Start-At (0,S) c= q let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p, q being PartState of S st Initialize p c= q holds Start-At (0,S) c= q let p, q be PartState of S; ::_thesis: ( Initialize p c= q implies Start-At (0,S) c= q ) Start-At (0,S) c= Initialize p by FUNCT_4:25; hence ( Initialize p c= q implies Start-At (0,S) c= q ) by XBOOLE_1:1; ::_thesis: verum end; begin definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be PartState of S; let k be Nat; func IncIC (p,k) -> PartState of S equals :: MEMSTR_0:def 14 p +* (Start-At (((IC p) + k),S)); correctness coherence p +* (Start-At (((IC p) + k),S)) is PartState of S; ; end; :: deftheorem defines IncIC MEMSTR_0:def_14_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IncIC (p,k) = p +* (Start-At (((IC p) + k),S)); theorem Th51: :: MEMSTR_0:51 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds DataPart (IncIC (p,k)) = DataPart p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds DataPart (IncIC (p,k)) = DataPart p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds DataPart (IncIC (p,k)) = DataPart p let p be PartState of S; ::_thesis: for k being Nat holds DataPart (IncIC (p,k)) = DataPart p let k be Nat; ::_thesis: DataPart (IncIC (p,k)) = DataPart p thus DataPart (IncIC (p,k)) = (DataPart p) +* (DataPart (Start-At (((IC p) + k),S))) by FUNCT_4:71 .= (DataPart p) +* {} by Th20 .= DataPart p ; ::_thesis: verum end; theorem Th52: :: MEMSTR_0:52 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC in dom (IncIC (p,k)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC in dom (IncIC (p,k)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds IC in dom (IncIC (p,k)) let p be PartState of S; ::_thesis: for k being Nat holds IC in dom (IncIC (p,k)) let k be Nat; ::_thesis: IC in dom (IncIC (p,k)) A1: dom (IncIC (p,k)) = (dom p) \/ (dom (Start-At (((IC p) + k),S))) by FUNCT_4:def_1; IC in dom (Start-At (((IC p) + k),S)) by Th15; hence IC in dom (IncIC (p,k)) by A1, XBOOLE_0:def_3; ::_thesis: verum end; theorem Th53: :: MEMSTR_0:53 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC (IncIC (p,k)) = (IC p) + k proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC (IncIC (p,k)) = (IC p) + k let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds IC (IncIC (p,k)) = (IC p) + k let p be PartState of S; ::_thesis: for k being Nat holds IC (IncIC (p,k)) = (IC p) + k let k be Nat; ::_thesis: IC (IncIC (p,k)) = (IC p) + k dom (Start-At (((IC p) + k),S)) = {(IC )} by FUNCOP_1:13; then IC in dom (Start-At (((IC p) + k),S)) by TARSKI:def_1; hence IC (IncIC (p,k)) = (Start-At (((IC p) + k),S)) . (IC ) by FUNCT_4:13 .= (IC p) + k by FUNCOP_1:72 ; ::_thesis: verum end; theorem :: MEMSTR_0:54 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S for k being Nat holds IncIC ((p +* d),k) = (IncIC (p,k)) +* d proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S for k being Nat holds IncIC ((p +* d),k) = (IncIC (p,k)) +* d let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for d being data-only PartState of S for k being Nat holds IncIC ((p +* d),k) = (IncIC (p,k)) +* d let p be PartState of S; ::_thesis: for d being data-only PartState of S for k being Nat holds IncIC ((p +* d),k) = (IncIC (p,k)) +* d let d be data-only PartState of S; ::_thesis: for k being Nat holds IncIC ((p +* d),k) = (IncIC (p,k)) +* d let k be Nat; ::_thesis: IncIC ((p +* d),k) = (IncIC (p,k)) +* d A1: d tolerates Start-At (((IC p) + k),S) by Th23; thus IncIC ((p +* d),k) = (p +* d) +* (Start-At (((IC p) + k),S)) by Th11 .= p +* (d +* (Start-At (((IC p) + k),S))) by FUNCT_4:14 .= p +* ((Start-At (((IC p) + k),S)) +* d) by A1, FUNCT_4:34 .= (IncIC (p,k)) +* d by FUNCT_4:14 ; ::_thesis: verum end; theorem :: MEMSTR_0:55 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds Start-At (((IC p) + k),S) c= IncIC (p,k) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds Start-At (((IC p) + k),S) c= IncIC (p,k) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds Start-At (((IC p) + k),S) c= IncIC (p,k) let p be PartState of S; ::_thesis: for k being Nat holds Start-At (((IC p) + k),S) c= IncIC (p,k) let k be Nat; ::_thesis: Start-At (((IC p) + k),S) c= IncIC (p,k) A1: IC (IncIC (p,k)) = (IC p) + k by Th53; A2: IC in dom (IncIC (p,k)) by Th52; A3: ( Start-At (((IC p) + k),S) = {[(IC ),((IC p) + k)]} & [(IC ),((IC p) + k)] in IncIC (p,k) ) by A2, A1, FUNCT_1:def_2, FUNCT_4:82; for x being set st x in Start-At (((IC p) + k),S) holds x in IncIC (p,k) by A3, TARSKI:def_1; hence Start-At (((IC p) + k),S) c= IncIC (p,k) by TARSKI:def_3; ::_thesis: verum end; theorem :: MEMSTR_0:56 for k being Nat for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) proof let k be Nat; ::_thesis: for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S st IC in dom p holds IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S st IC in dom p holds IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) let p be PartState of S; ::_thesis: ( IC in dom p implies IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) ) A1: dom (Start-At (((IC p) + k),S)) = {(IC )} by FUNCOP_1:13 .= dom (Start-At ((IC p),S)) by FUNCOP_1:13 ; assume A2: IC in dom p ; ::_thesis: IncIC (p,k) = (DataPart p) +* (Start-At (((IC p) + k),S)) thus IncIC (p,k) = ((DataPart p) +* (Start-At ((IC p),S))) +* (Start-At (((IC p) + k),S)) by A2, Th26 .= (DataPart p) +* (Start-At (((IC p) + k),S)) by A1, FUNCT_4:74 ; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let s be State of S; let k be Nat; cluster IncIC (s,k) -> total ; coherence IncIC (s,k) is total ; end; theorem :: MEMSTR_0:57 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for i, j being Nat holds IncIC ((IncIC (p,i)),j) = IncIC (p,(i + j)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for i, j being Nat holds IncIC ((IncIC (p,i)),j) = IncIC (p,(i + j)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for i, j being Nat holds IncIC ((IncIC (p,i)),j) = IncIC (p,(i + j)) let p be PartState of S; ::_thesis: for i, j being Nat holds IncIC ((IncIC (p,i)),j) = IncIC (p,(i + j)) let i, j be Nat; ::_thesis: IncIC ((IncIC (p,i)),j) = IncIC (p,(i + j)) thus IncIC ((IncIC (p,i)),j) = (p +* (Start-At (((IC p) + i),S))) +* (Start-At ((((IC p) + i) + j),S)) by Th53 .= IncIC (p,(i + j)) by FUNCT_4:114 ; ::_thesis: verum end; theorem :: MEMSTR_0:58 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for j, k being Nat holds IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j + k),S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for j, k being Nat holds IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j + k),S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for j, k being Nat holds IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j + k),S)) let p be PartState of S; ::_thesis: for j, k being Nat holds IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j + k),S)) let j, k be Nat; ::_thesis: IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j + k),S)) thus IncIC ((p +* (Start-At (j,S))),k) = p +* (Start-At (((IC (p +* (Start-At (j,S)))) + k),S)) by FUNCT_4:114 .= p +* (Start-At ((j + k),S)) by Th16 ; ::_thesis: verum end; theorem :: MEMSTR_0:59 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for k being Nat holds (IC (IncIC (s,k))) -' k = IC s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for k being Nat holds (IC (IncIC (s,k))) -' k = IC s let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for k being Nat holds (IC (IncIC (s,k))) -' k = IC s let s be State of S; ::_thesis: for k being Nat holds (IC (IncIC (s,k))) -' k = IC s let k be Nat; ::_thesis: (IC (IncIC (s,k))) -' k = IC s thus (IC (IncIC (s,k))) -' k = ((IC s) + k) -' k by Th53 .= IC s by NAT_D:34 ; ::_thesis: verum end; theorem :: MEMSTR_0:60 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds IncIC ((p +* q),k) = p +* (IncIC (q,k)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds IncIC ((p +* q),k) = p +* (IncIC (q,k)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p, q being PartState of S for k being Nat st IC in dom q holds IncIC ((p +* q),k) = p +* (IncIC (q,k)) let p, q be PartState of S; ::_thesis: for k being Nat st IC in dom q holds IncIC ((p +* q),k) = p +* (IncIC (q,k)) let k be Nat; ::_thesis: ( IC in dom q implies IncIC ((p +* q),k) = p +* (IncIC (q,k)) ) assume IC in dom q ; ::_thesis: IncIC ((p +* q),k) = p +* (IncIC (q,k)) then IC (p +* q) = IC q by FUNCT_4:13; hence IncIC ((p +* q),k) = p +* (IncIC (q,k)) by FUNCT_4:14; ::_thesis: verum end; theorem :: MEMSTR_0:61 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for k being Nat for p being PartState of S for s1, s2 being State of S st p c= s1 & IncIC (p,k) c= s2 holds p c= s1 +* (DataPart s2) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for k being Nat for p being PartState of S for s1, s2 being State of S st p c= s1 & IncIC (p,k) c= s2 holds p c= s1 +* (DataPart s2) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for k being Nat for p being PartState of S for s1, s2 being State of S st p c= s1 & IncIC (p,k) c= s2 holds p c= s1 +* (DataPart s2) let k be Nat; ::_thesis: for p being PartState of S for s1, s2 being State of S st p c= s1 & IncIC (p,k) c= s2 holds p c= s1 +* (DataPart s2) let p be PartState of S; ::_thesis: for s1, s2 being State of S st p c= s1 & IncIC (p,k) c= s2 holds p c= s1 +* (DataPart s2) let s1, s2 be State of S; ::_thesis: ( p c= s1 & IncIC (p,k) c= s2 implies p c= s1 +* (DataPart s2) ) assume that A1: p c= s1 and A2: IncIC (p,k) c= s2 ; ::_thesis: p c= s1 +* (DataPart s2) set s3 = DataPart s2; reconsider s = s1 +* (DataPart s2) as State of S ; A3: dom p c= the carrier of S by RELAT_1:def_18; then A4: dom p c= {(IC )} \/ (Data-Locations ) by STRUCT_0:4; A5: now__::_thesis:_for_x_being_set_st_x_in_dom_p_holds_ p_._x_=_s_._x Data-Locations = (dom s2) /\ (Data-Locations ) by Th8, XBOOLE_1:28; then A6: dom (DataPart s2) = Data-Locations by RELAT_1:61; let x be set ; ::_thesis: ( x in dom p implies p . b1 = s . b1 ) assume A7: x in dom p ; ::_thesis: p . b1 = s . b1 percases ( x in {(IC )} or x in Data-Locations ) by A4, A7, XBOOLE_0:def_3; supposeA8: x in {(IC )} ; ::_thesis: p . b1 = s . b1 x = IC by A8, TARSKI:def_1; then s1 . x = s . x by A6, FUNCT_4:11, STRUCT_0:3; hence p . x = s . x by A1, A7, GRFUNC_1:2; ::_thesis: verum end; supposeA9: x in Data-Locations ; ::_thesis: p . b1 = s . b1 set DPp = DataPart p; x in (dom p) /\ (Data-Locations ) by A9, A7, XBOOLE_0:def_4; then A10: x in dom (DataPart p) by RELAT_1:61; A11: DataPart (IncIC (p,k)) = DataPart p by Th51; DataPart p c= IncIC (p,k) by A11, RELAT_1:59; then A12: DataPart p c= s2 by A2, XBOOLE_1:1; then dom (DataPart p) c= dom s2 by GRFUNC_1:2; then x in (dom s2) /\ (Data-Locations ) by A9, A10, XBOOLE_0:def_4; then A13: x in dom (DataPart s2) by RELAT_1:61; DataPart p c= p by RELAT_1:59; then A14: (DataPart p) . x = p . x by A10, GRFUNC_1:2; A15: s2 . x = (DataPart s2) . x by A9, FUNCT_1:49; (DataPart p) . x = s2 . x by A10, A12, GRFUNC_1:2; hence p . x = s . x by A14, A15, A13, FUNCT_4:13; ::_thesis: verum end; end; end; dom p c= dom s by A3, PARTFUN1:def_2; hence p c= s1 +* (DataPart s2) by A5, GRFUNC_1:2; ::_thesis: verum end; theorem :: MEMSTR_0:62 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Element of NAT holds DataPart p c= IncIC (p,k) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Element of NAT holds DataPart p c= IncIC (p,k) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Element of NAT holds DataPart p c= IncIC (p,k) let p be PartState of S; ::_thesis: for k being Element of NAT holds DataPart p c= IncIC (p,k) let k be Element of NAT ; ::_thesis: DataPart p c= IncIC (p,k) DataPart (IncIC (p,k)) = DataPart p by Th51; hence DataPart p c= IncIC (p,k) by RELAT_1:59; ::_thesis: verum end; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be PartState of S; let k be Nat; func DecIC (p,k) -> PartState of S equals :: MEMSTR_0:def 15 p +* (Start-At (((IC p) -' k),S)); correctness coherence p +* (Start-At (((IC p) -' k),S)) is PartState of S; ; end; :: deftheorem defines DecIC MEMSTR_0:def_15_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds DecIC (p,k) = p +* (Start-At (((IC p) -' k),S)); theorem :: MEMSTR_0:63 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds DataPart (DecIC (p,k)) = DataPart p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds DataPart (DecIC (p,k)) = DataPart p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds DataPart (DecIC (p,k)) = DataPart p let p be PartState of S; ::_thesis: for k being Nat holds DataPart (DecIC (p,k)) = DataPart p let k be Nat; ::_thesis: DataPart (DecIC (p,k)) = DataPart p thus DataPart (DecIC (p,k)) = (DataPart p) +* (DataPart (Start-At (((IC p) -' k),S))) by FUNCT_4:71 .= (DataPart p) +* {} by Th20 .= DataPart p ; ::_thesis: verum end; theorem Th64: :: MEMSTR_0:64 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC in dom (DecIC (p,k)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC in dom (DecIC (p,k)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds IC in dom (DecIC (p,k)) let p be PartState of S; ::_thesis: for k being Nat holds IC in dom (DecIC (p,k)) let k be Nat; ::_thesis: IC in dom (DecIC (p,k)) A1: dom (DecIC (p,k)) = (dom p) \/ (dom (Start-At (((IC p) -' k),S))) by FUNCT_4:def_1; IC in dom (Start-At (((IC p) -' k),S)) by Th15; hence IC in dom (DecIC (p,k)) by A1, XBOOLE_0:def_3; ::_thesis: verum end; theorem Th65: :: MEMSTR_0:65 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC (DecIC (p,k)) = (IC p) -' k proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds IC (DecIC (p,k)) = (IC p) -' k let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds IC (DecIC (p,k)) = (IC p) -' k let p be PartState of S; ::_thesis: for k being Nat holds IC (DecIC (p,k)) = (IC p) -' k let k be Nat; ::_thesis: IC (DecIC (p,k)) = (IC p) -' k dom (Start-At (((IC p) -' k),S)) = {(IC )} by FUNCOP_1:13; then IC in dom (Start-At (((IC p) -' k),S)) by TARSKI:def_1; hence IC (DecIC (p,k)) = (Start-At (((IC p) -' k),S)) . (IC ) by FUNCT_4:13 .= (IC p) -' k by FUNCOP_1:72 ; ::_thesis: verum end; theorem :: MEMSTR_0:66 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S for k being Nat holds DecIC ((p +* d),k) = (DecIC (p,k)) +* d proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for d being data-only PartState of S for k being Nat holds DecIC ((p +* d),k) = (DecIC (p,k)) +* d let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for d being data-only PartState of S for k being Nat holds DecIC ((p +* d),k) = (DecIC (p,k)) +* d let p be PartState of S; ::_thesis: for d being data-only PartState of S for k being Nat holds DecIC ((p +* d),k) = (DecIC (p,k)) +* d let d be data-only PartState of S; ::_thesis: for k being Nat holds DecIC ((p +* d),k) = (DecIC (p,k)) +* d let k be Nat; ::_thesis: DecIC ((p +* d),k) = (DecIC (p,k)) +* d A1: d tolerates Start-At (((IC p) -' k),S) by Th23; thus DecIC ((p +* d),k) = (p +* d) +* (Start-At (((IC p) -' k),S)) by Th11 .= p +* (d +* (Start-At (((IC p) -' k),S))) by FUNCT_4:14 .= p +* ((Start-At (((IC p) -' k),S)) +* d) by A1, FUNCT_4:34 .= (DecIC (p,k)) +* d by FUNCT_4:14 ; ::_thesis: verum end; theorem :: MEMSTR_0:67 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds Start-At (((IC p) -' k),S) c= DecIC (p,k) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat holds Start-At (((IC p) -' k),S) c= DecIC (p,k) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat holds Start-At (((IC p) -' k),S) c= DecIC (p,k) let p be PartState of S; ::_thesis: for k being Nat holds Start-At (((IC p) -' k),S) c= DecIC (p,k) let k be Nat; ::_thesis: Start-At (((IC p) -' k),S) c= DecIC (p,k) A1: IC (DecIC (p,k)) = (IC p) -' k by Th65; A2: IC in dom (DecIC (p,k)) by Th64; A3: ( Start-At (((IC p) -' k),S) = {[(IC ),((IC p) -' k)]} & [(IC ),((IC p) -' k)] in DecIC (p,k) ) by A2, A1, FUNCT_1:def_2, FUNCT_4:82; for x being set st x in Start-At (((IC p) -' k),S) holds x in DecIC (p,k) by A3, TARSKI:def_1; hence Start-At (((IC p) -' k),S) c= DecIC (p,k) by TARSKI:def_3; ::_thesis: verum end; theorem :: MEMSTR_0:68 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat st IC in dom p holds DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat st IC in dom p holds DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat st IC in dom p holds DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) let p be PartState of S; ::_thesis: for k being Nat st IC in dom p holds DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) let k be Nat; ::_thesis: ( IC in dom p implies DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) ) A1: dom (Start-At (((IC p) -' k),S)) = {(IC )} by FUNCOP_1:13 .= dom (Start-At ((IC p),S)) by FUNCOP_1:13 ; assume A2: IC in dom p ; ::_thesis: DecIC (p,k) = (DataPart p) +* (Start-At (((IC p) -' k),S)) thus DecIC (p,k) = ((DataPart p) +* (Start-At ((IC p),S))) +* (Start-At (((IC p) -' k),S)) by A2, Th26 .= (DataPart p) +* (Start-At (((IC p) -' k),S)) by A1, FUNCT_4:74 ; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let s be State of S; let k be Nat; cluster DecIC (s,k) -> total ; coherence DecIC (s,k) is total ; end; theorem :: MEMSTR_0:69 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for i, j being Nat holds DecIC ((DecIC (p,i)),j) = DecIC (p,(i + j)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for i, j being Nat holds DecIC ((DecIC (p,i)),j) = DecIC (p,(i + j)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for i, j being Nat holds DecIC ((DecIC (p,i)),j) = DecIC (p,(i + j)) let p be PartState of S; ::_thesis: for i, j being Nat holds DecIC ((DecIC (p,i)),j) = DecIC (p,(i + j)) let i, j be Nat; ::_thesis: DecIC ((DecIC (p,i)),j) = DecIC (p,(i + j)) thus DecIC ((DecIC (p,i)),j) = (p +* (Start-At (((IC p) -' i),S))) +* (Start-At ((((IC p) -' i) -' j),S)) by Th65 .= (p +* (Start-At (((IC p) -' i),S))) +* (Start-At (((IC p) -' (i + j)),S)) by NAT_2:30 .= DecIC (p,(i + j)) by FUNCT_4:114 ; ::_thesis: verum end; theorem :: MEMSTR_0:70 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for j, k being Nat holds DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j -' k),S)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for j, k being Nat holds DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j -' k),S)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for j, k being Nat holds DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j -' k),S)) let p be PartState of S; ::_thesis: for j, k being Nat holds DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j -' k),S)) let j, k be Nat; ::_thesis: DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At ((j -' k),S)) thus DecIC ((p +* (Start-At (j,S))),k) = p +* (Start-At (((IC (p +* (Start-At (j,S)))) -' k),S)) by FUNCT_4:114 .= p +* (Start-At ((j -' k),S)) by Th16 ; ::_thesis: verum end; theorem :: MEMSTR_0:71 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for k being Nat st k <= IC s holds (IC (DecIC (s,k))) + k = IC s proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for k being Nat st k <= IC s holds (IC (DecIC (s,k))) + k = IC s let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for k being Nat st k <= IC s holds (IC (DecIC (s,k))) + k = IC s let s be State of S; ::_thesis: for k being Nat st k <= IC s holds (IC (DecIC (s,k))) + k = IC s let k be Nat; ::_thesis: ( k <= IC s implies (IC (DecIC (s,k))) + k = IC s ) assume A1: k <= IC s ; ::_thesis: (IC (DecIC (s,k))) + k = IC s thus (IC (DecIC (s,k))) + k = ((IC s) -' k) + k by Th65 .= IC s by A1, XREAL_1:235 ; ::_thesis: verum end; theorem Th72: :: MEMSTR_0:72 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* q),k) = p +* (DecIC (q,k)) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* q),k) = p +* (DecIC (q,k)) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* q),k) = p +* (DecIC (q,k)) let p, q be PartState of S; ::_thesis: for k being Nat st IC in dom q holds DecIC ((p +* q),k) = p +* (DecIC (q,k)) let k be Nat; ::_thesis: ( IC in dom q implies DecIC ((p +* q),k) = p +* (DecIC (q,k)) ) assume IC in dom q ; ::_thesis: DecIC ((p +* q),k) = p +* (DecIC (q,k)) then IC (p +* q) = IC q by FUNCT_4:13; hence DecIC ((p +* q),k) = p +* (DecIC (q,k)) by FUNCT_4:14; ::_thesis: verum end; theorem Th73: :: MEMSTR_0:73 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat st IC in dom p holds DecIC ((IncIC (p,k)),k) = p proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p being PartState of S for k being Nat st IC in dom p holds DecIC ((IncIC (p,k)),k) = p let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p being PartState of S for k being Nat st IC in dom p holds DecIC ((IncIC (p,k)),k) = p let p be PartState of S; ::_thesis: for k being Nat st IC in dom p holds DecIC ((IncIC (p,k)),k) = p let k be Nat; ::_thesis: ( IC in dom p implies DecIC ((IncIC (p,k)),k) = p ) assume A1: IC in dom p ; ::_thesis: DecIC ((IncIC (p,k)),k) = p thus DecIC ((IncIC (p,k)),k) = (IncIC (p,k)) +* (Start-At ((((IC p) + k) -' k),S)) by Th53 .= (IncIC (p,k)) +* (Start-At ((IC p),S)) by NAT_D:34 .= p +* (Start-At ((IC p),S)) by Th36 .= p by A1, FUNCT_4:7, FUNCT_4:98 ; ::_thesis: verum end; theorem :: MEMSTR_0:74 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* (IncIC (q,k))),k) = p +* q proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* (IncIC (q,k))),k) = p +* q let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for p, q being PartState of S for k being Nat st IC in dom q holds DecIC ((p +* (IncIC (q,k))),k) = p +* q let p, q be PartState of S; ::_thesis: for k being Nat st IC in dom q holds DecIC ((p +* (IncIC (q,k))),k) = p +* q let k be Nat; ::_thesis: ( IC in dom q implies DecIC ((p +* (IncIC (q,k))),k) = p +* q ) assume A1: IC in dom q ; ::_thesis: DecIC ((p +* (IncIC (q,k))),k) = p +* q IC in dom (IncIC (q,k)) by Th52; hence DecIC ((p +* (IncIC (q,k))),k) = p +* (DecIC ((IncIC (q,k)),k)) by Th72 .= p +* q by A1, Th73 ; ::_thesis: verum end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let k be Nat; let p be k -started PartState of S; cluster DecIC (p,k) -> 0 -started ; coherence DecIC (p,k) is 0 -started proof thus IC in dom (DecIC (p,k)) by Th64; :: according to MEMSTR_0:def_11 ::_thesis: IC (DecIC (p,k)) = 0 thus IC (DecIC (p,k)) = (IC p) -' k by Th65 .= k -' k by Def11 .= 0 by XREAL_1:232 ; ::_thesis: verum end; end; begin registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; cluster Start-At (l,S) -> finite ; correctness coherence Start-At (l,S) is finite ; ; end; definition let N be with_zero set ; let S be Mem-Struct over N; mode FinPartState of S is finite PartState of S; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let l be Nat; cluster Relation-like the carrier of S -defined Function-like the_Values_of S -compatible finite countable V93() l -started for set ; existence ex b1 being FinPartState of S st b1 is l -started proof take Start-At (l,S) ; ::_thesis: Start-At (l,S) is l -started thus Start-At (l,S) is l -started ; ::_thesis: verum end; end; registration let N be with_zero set ; let S be Mem-Struct over N; let p be FinPartState of S; cluster DataPart p -> finite ; coherence DataPart p is finite ; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be FinPartState of S; cluster Initialize p -> finite ; coherence Initialize p is finite ; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be FinPartState of S; let k be Nat; cluster IncIC (p,k) -> finite ; coherence IncIC (p,k) is finite ; end; registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let p be FinPartState of S; let k be Nat; cluster DecIC (p,k) -> finite ; coherence DecIC (p,k) is finite ; end; definition let N be with_zero set ; let S be with_non-empty_values Mem-Struct over N; func FinPartSt S -> Subset of (sproduct (the_Values_of S)) equals :: MEMSTR_0:def 16 { p where p is Element of sproduct (the_Values_of S) : p is finite } ; coherence { p where p is Element of sproduct (the_Values_of S) : p is finite } is Subset of (sproduct (the_Values_of S)) proof defpred S1[ set ] means $1 is finite ; { p where p is Element of sproduct (the_Values_of S) : S1[p] } c= sproduct (the_Values_of S) from FRAENKEL:sch_10(); hence { p where p is Element of sproduct (the_Values_of S) : p is finite } is Subset of (sproduct (the_Values_of S)) ; ::_thesis: verum end; end; :: deftheorem defines FinPartSt MEMSTR_0:def_16_:_ for N being with_zero set for S being with_non-empty_values Mem-Struct over N holds FinPartSt S = { p where p is Element of sproduct (the_Values_of S) : p is finite } ; theorem Th75: :: MEMSTR_0:75 for N being with_zero set for S being with_non-empty_values Mem-Struct over N for p being FinPartState of S holds p in FinPartSt S proof let N be with_zero set ; ::_thesis: for S being with_non-empty_values Mem-Struct over N for p being FinPartState of S holds p in FinPartSt S let S be with_non-empty_values Mem-Struct over N; ::_thesis: for p being FinPartState of S holds p in FinPartSt S let p be FinPartState of S; ::_thesis: p in FinPartSt S p in sproduct (the_Values_of S) by CARD_3:103; hence p in FinPartSt S ; ::_thesis: verum end; registration let N be with_zero set ; let S be with_non-empty_values Mem-Struct over N; cluster FinPartSt S -> non empty ; coherence not FinPartSt S is empty by Th75; end; theorem :: MEMSTR_0:76 for N being with_zero set for S being with_non-empty_values Mem-Struct over N for p being Element of FinPartSt S holds p is FinPartState of S proof let N be with_zero set ; ::_thesis: for S being with_non-empty_values Mem-Struct over N for p being Element of FinPartSt S holds p is FinPartState of S let S be with_non-empty_values Mem-Struct over N; ::_thesis: for p being Element of FinPartSt S holds p is FinPartState of S let p be Element of FinPartSt S; ::_thesis: p is FinPartState of S p in FinPartSt S ; then ex q being Element of sproduct (the_Values_of S) st ( q = p & q is finite ) ; hence p is FinPartState of S ; ::_thesis: verum end; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let IT be PartFunc of (FinPartSt S),(FinPartSt S); attrIT is data-only means :: MEMSTR_0:def 17 for p being PartState of S st p in dom IT holds ( p is data-only & ( for q being PartState of S st q = IT . p holds q is data-only ) ); end; :: deftheorem defines data-only MEMSTR_0:def_17_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for IT being PartFunc of (FinPartSt S),(FinPartSt S) holds ( IT is data-only iff for p being PartState of S st p in dom IT holds ( p is data-only & ( for q being PartState of S st q = IT . p holds q is data-only ) ) ); registration let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; cluster Relation-like FinPartSt S -defined FinPartSt S -valued Function-like Function-yielding V35() data-only for Element of bool [:(FinPartSt S),(FinPartSt S):]; existence ex b1 being PartFunc of (FinPartSt S),(FinPartSt S) st b1 is data-only proof reconsider f = {} as PartFunc of (FinPartSt S),(FinPartSt S) by RELSET_1:12; take f ; ::_thesis: f is data-only let p be PartState of S; :: according to MEMSTR_0:def_17 ::_thesis: ( p in dom f implies ( p is data-only & ( for q being PartState of S st q = f . p holds q is data-only ) ) ) thus ( p in dom f implies ( p is data-only & ( for q being PartState of S st q = f . p holds q is data-only ) ) ) ; ::_thesis: verum end; end; begin theorem :: MEMSTR_0:77 for N being with_zero set for A being non empty with_non-empty_values Mem-Struct over N for s being State of A for o being Object of A holds s . o in Values o proof let N be with_zero set ; ::_thesis: for A being non empty with_non-empty_values Mem-Struct over N for s being State of A for o being Object of A holds s . o in Values o let A be non empty with_non-empty_values Mem-Struct over N; ::_thesis: for s being State of A for o being Object of A holds s . o in Values o let s be State of A; ::_thesis: for o being Object of A holds s . o in Values o let o be Object of A; ::_thesis: s . o in Values o dom s = the carrier of A by PARTFUN1:def_2; hence s . o in Values o by FUNCT_1:def_14; ::_thesis: verum end; theorem Th78: :: MEMSTR_0:78 for N being with_zero set for A being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of A st IC s1 = IC s2 & DataPart s1 = DataPart s2 holds s1 = s2 proof let N be with_zero set ; ::_thesis: for A being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of A st IC s1 = IC s2 & DataPart s1 = DataPart s2 holds s1 = s2 let A be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s1, s2 being State of A st IC s1 = IC s2 & DataPart s1 = DataPart s2 holds s1 = s2 set D = Data-Locations ; let s1, s2 be State of A; ::_thesis: ( IC s1 = IC s2 & DataPart s1 = DataPart s2 implies s1 = s2 ) assume that A1: IC s1 = IC s2 and A2: DataPart s1 = DataPart s2 ; ::_thesis: s1 = s2 A3: dom s2 = {(IC )} \/ (Data-Locations ) by Th13; A4: dom s1 = {(IC )} \/ (Data-Locations ) by Th13; then s1 | {(IC )} = s2 | {(IC )} by A1, A3, GRFUNC_1:29; then s1 | ({(IC )} \/ (Data-Locations )) = s2 | ({(IC )} \/ (Data-Locations )) by A2, RELAT_1:150; then s1 | ({(IC )} \/ (Data-Locations )) = s2 | ({(IC )} \/ (Data-Locations )) ; hence s1 = s2 | (dom s2) by A4, A3, RELAT_1:68 .= s2 ; ::_thesis: verum end; theorem :: MEMSTR_0:79 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for l being Element of NAT holds DataPart s = DataPart (s +* (Start-At (l,S))) proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s being State of S for l being Element of NAT holds DataPart s = DataPart (s +* (Start-At (l,S))) let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s being State of S for l being Element of NAT holds DataPart s = DataPart (s +* (Start-At (l,S))) let s be State of S; ::_thesis: for l being Element of NAT holds DataPart s = DataPart (s +* (Start-At (l,S))) let l be Element of NAT ; ::_thesis: DataPart s = DataPart (s +* (Start-At (l,S))) thus DataPart s = (DataPart s) +* {} .= (DataPart s) +* (DataPart (Start-At (l,S))) by Th20 .= DataPart (s +* (Start-At (l,S))) by FUNCT_4:71 ; ::_thesis: verum end; theorem :: MEMSTR_0:80 for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st DataPart s1 = DataPart s2 holds Initialize s1 = Initialize s2 proof let N be with_zero set ; ::_thesis: for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for s1, s2 being State of S st DataPart s1 = DataPart s2 holds Initialize s1 = Initialize s2 let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; ::_thesis: for s1, s2 being State of S st DataPart s1 = DataPart s2 holds Initialize s1 = Initialize s2 let s1, s2 be State of S; ::_thesis: ( DataPart s1 = DataPart s2 implies Initialize s1 = Initialize s2 ) assume A1: DataPart s1 = DataPart s2 ; ::_thesis: Initialize s1 = Initialize s2 set S1 = Initialize s1; set S2 = Initialize s2; A2: ( IC (Initialize s1) = 0 & IC (Initialize s2) = 0 ) by Th47; DataPart (Initialize s1) = DataPart s1 by Th45 .= DataPart (Initialize s2) by A1, Th45 ; hence Initialize s1 = Initialize s2 by A2, Th78; ::_thesis: verum end; theorem :: MEMSTR_0:81 for N being with_zero set holds the_Values_of (Trivial-Mem N) = 0 .--> NAT by Lm1; definition let N be with_zero set ; let S be non empty with_non-empty_values IC-Ins-separated Mem-Struct over N; let f be Function of (product (the_Values_of S)),NAT; attrf is on_data_only means :: MEMSTR_0:def 18 for s1, s2 being State of S st DataPart s1 = DataPart s2 holds f . s1 = f . s2; end; :: deftheorem defines on_data_only MEMSTR_0:def_18_:_ for N being with_zero set for S being non empty with_non-empty_values IC-Ins-separated Mem-Struct over N for f being Function of (product (the_Values_of S)),NAT holds ( f is on_data_only iff for s1, s2 being State of S st DataPart s1 = DataPart s2 holds f . s1 = f . s2 );