let n be Element of NAT ; :: thesis: for R being good Ring
for a being Data-Location of R
for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )

let R be good Ring; :: thesis: for a being Data-Location of R
for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )

let a be Data-Location of R; :: thesis: for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )

let loc be Element of NAT ; :: thesis: for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )

let s1, s2 be State of (SCM R); :: thesis: ( not R is trivial implies for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R ) )

assume A1: not R is trivial ; :: thesis: for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) holds
( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )

set Cs2i1 = Comput (ProgramPart s2),s2,(n + 1);
set Cs1i1 = Comput (ProgramPart s1),s1,(n + 1);
set I = CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n);
let p be non NAT -defined autonomic FinPartState of ; :: thesis: ( p c= s1 & p c= s2 & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc & loc <> succ (IC (Comput (ProgramPart s1),s1,n)) implies ( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R ) )
assume A2: ( p c= s1 & p c= s2 ) ; :: thesis: ( not CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc or not loc <> succ (IC (Comput (ProgramPart s1),s1,n)) or ( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R ) )
A3: CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,n)),(Comput (ProgramPart s2),s2,n) by A1, A2, Th28;
set Cs2i = Comput (ProgramPart s2),s2,n;
set Cs1i = Comput (ProgramPart s1),s1,n;
T: ProgramPart s1 = ProgramPart (Comput (ProgramPart s1),s1,n) by AMI_1:144;
A4: Comput (ProgramPart s1),s1,(n + 1) = Following (ProgramPart s1),(Comput (ProgramPart s1),s1,n) by AMI_1:14
.= Exec (CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) by T ;
T: ProgramPart s2 = ProgramPart (Comput (ProgramPart s2),s2,n) by AMI_1:144;
A5: Comput (ProgramPart s2),s2,(n + 1) = Following (ProgramPart s2),(Comput (ProgramPart s2),s2,n) by AMI_1:14
.= Exec (CurInstr (ProgramPart (Comput (ProgramPart s2),s2,n)),(Comput (ProgramPart s2),s2,n)),(Comput (ProgramPart s2),s2,n) by T ;
A6: ( ((Comput (ProgramPart s1),s1,(n + 1)) | (dom p)) . (IC (SCM R)) = (Comput (ProgramPart s1),s1,(n + 1)) . (IC (SCM R)) & ((Comput (ProgramPart s2),s2,(n + 1)) | (dom p)) . (IC (SCM R)) = (Comput (ProgramPart s2),s2,(n + 1)) . (IC (SCM R)) ) by A1, Th25, FUNCT_1:72;
assume that
A7: CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = a =0_goto loc and
A8: loc <> succ (IC (Comput (ProgramPart s1),s1,n)) ; :: thesis: ( (Comput (ProgramPart s1),s1,n) . a = 0. R iff (Comput (ProgramPart s2),s2,n) . a = 0. R )
A9: IC (Comput (ProgramPart s1),s1,n) = IC (Comput (ProgramPart s2),s2,n) by A1, A2, Th28;
hereby :: thesis: ( (Comput (ProgramPart s2),s2,n) . a = 0. R implies (Comput (ProgramPart s1),s1,n) . a = 0. R )
assume ( (Comput (ProgramPart s1),s1,n) . a = 0. R & (Comput (ProgramPart s2),s2,n) . a <> 0. R ) ; :: thesis: contradiction
then ( (Comput (ProgramPart s1),s1,(n + 1)) . (IC (SCM R)) = loc & (Comput (ProgramPart s2),s2,(n + 1)) . (IC (SCM R)) = succ (IC (Comput (ProgramPart s2),s2,n)) ) by A3, A4, A5, A7, SCMRING2:18;
hence contradiction by A2, A9, A6, A8, AMI_1:def 25; :: thesis: verum
end;
assume that
A10: (Comput (ProgramPart s2),s2,n) . a = 0. R and
A11: (Comput (ProgramPart s1),s1,n) . a <> 0. R ; :: thesis: contradiction
A12: (Comput (ProgramPart s1),s1,(n + 1)) . (IC (SCM R)) = succ (IC (Comput (ProgramPart s1),s1,n)) by A4, A7, A11, SCMRING2:18;
(Comput (ProgramPart s2),s2,(n + 1)) . (IC (SCM R)) = loc by A3, A5, A7, A10, SCMRING2:18;
hence contradiction by A2, A6, A8, A12, AMI_1:def 25; :: thesis: verum