let n be Element of NAT ; :: thesis: for R being good Ring
for a, b being Data-Location of R
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) = MultBy a,b & a in dom p holds
((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b)

let R be good Ring; :: thesis: for a, b being Data-Location of R
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) = MultBy a,b & a in dom p holds
((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b)

let a, b be Data-Location of R; :: 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) = MultBy a,b & a in dom p holds
((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b)

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) = MultBy a,b & a in dom p holds
((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b) )

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) = MultBy a,b & a in dom p holds
((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b)

set Cs2i1 = Comput (ProgramPart s2),s2,(n + 1);
set Cs1i1 = Comput (ProgramPart s1),s1,(n + 1);
set Cs2i = Comput (ProgramPart s2),s2,n;
set Cs1i = Comput (ProgramPart s1),s1,n;
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) = MultBy a,b & a in dom p implies ((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b) )
assume A2: ( p c= s1 & p c= s2 ) ; :: thesis: ( not CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = MultBy a,b or not a in dom p or ((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b) )
A3: ( a in dom p implies ( ((Comput (ProgramPart s1),s1,(n + 1)) | (dom p)) . a = (Comput (ProgramPart s1),s1,(n + 1)) . a & ((Comput (ProgramPart s2),s2,(n + 1)) | (dom p)) . a = (Comput (ProgramPart s2),s2,(n + 1)) . a ) ) by FUNCT_1:72;
T: ProgramPart s2 = ProgramPart (Comput (ProgramPart s2),s2,n) by AMI_1:144;
A4: 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 ;
assume that
A5: CurInstr (ProgramPart (Comput (ProgramPart s1),s1,n)),(Comput (ProgramPart s1),s1,n) = MultBy a,b and
A6: ( a in dom p & ((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) <> ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b) ) ; :: thesis: contradiction
T: ProgramPart s1 = ProgramPart (Comput (ProgramPart s1),s1,n) by AMI_1:144;
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 ;
then A7: (Comput (ProgramPart s1),s1,(n + 1)) . a = ((Comput (ProgramPart s1),s1,n) . a) * ((Comput (ProgramPart s1),s1,n) . b) by A5, SCMRING2:16;
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;
then (Comput (ProgramPart s2),s2,(n + 1)) . a = ((Comput (ProgramPart s2),s2,n) . a) * ((Comput (ProgramPart s2),s2,n) . b) by A4, A5, SCMRING2:16;
hence contradiction by A2, A3, A6, A7, AMI_1:def 25; :: thesis: verum