thus SCM R is homogeneous :: thesis: SCM R is with_explicit_jumps
proof
let I, J be Instruction of (SCM R); :: according to COMPOS_1:def 33 :: thesis: ( not InsCode I = InsCode J or dom (I `2_3) = dom (J `2_3) )
assume A1: InsCode I = InsCode J ; :: thesis: dom (I `2_3) = dom (J `2_3)
A2: ( J = [0,{},{}] or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
per cases ( I = [0,{},{}] or ex a, b being Data-Location of R st I = a := b or ex a, b being Data-Location of R st I = AddTo (a,b) or ex a, b being Data-Location of R st I = SubFrom (a,b) or ex a, b being Data-Location of R st I = MultBy (a,b) or ex i1 being Element of NAT st I = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st I = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st I = a := b ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a, b being Data-Location of R such that
A4: I = a := b ;
A5: InsCode I = 1 by A4, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st J = a := b ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location of R such that
A6: J = d1 := d2 ;
thus dom (JumpPart I) = dom {} by A4, RECDEF_2:def 2
.= dom (JumpPart J) by A6, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A5, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = AddTo (a,b) ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a, b being Data-Location of R such that
A7: I = AddTo (a,b) ;
A8: InsCode I = 2 by A7, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st J = AddTo (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location of R such that
A9: J = AddTo (d1,d2) ;
thus dom (JumpPart I) = dom {} by A7, RECDEF_2:def 2
.= dom (JumpPart J) by A9, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A8, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = SubFrom (a,b) ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a, b being Data-Location of R such that
A10: I = SubFrom (a,b) ;
A11: InsCode I = 3 by A10, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st J = SubFrom (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location of R such that
A12: J = SubFrom (d1,d2) ;
thus dom (JumpPart I) = dom {} by A10, RECDEF_2:def 2
.= dom (JumpPart J) by A12, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A11, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = MultBy (a,b) ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a, b being Data-Location of R such that
A13: I = MultBy (a,b) ;
A14: InsCode I = 4 by A13, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex a, b being Data-Location of R st J = MultBy (a,b) or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st J = MultBy (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location of R such that
A15: J = MultBy (d1,d2) ;
thus dom (JumpPart I) = dom {} by A13, RECDEF_2:def 2
.= dom (JumpPart J) by A15, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A14, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex i1 being Element of NAT st I = goto (i1,R) ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider i1 being Element of NAT such that
A16: I = goto (i1,R) ;
A17: InsCode I = 6 by A16, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex i2 being Element of NAT st J = goto (i2,R) or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex i2 being Element of NAT st J = goto (i2,R) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider i2 being Element of NAT such that
A18: J = goto (i2,R) ;
thus dom (JumpPart I) = dom <*i1*> by A16, RECDEF_2:def 2
.= Seg 1 by FINSEQ_1:def 8
.= dom <*i2*> by FINSEQ_1:def 8
.= dom (JumpPart J) by A18, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A17, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a being Data-Location of R, i1 being Element of NAT such that
A19: I = a =0_goto i1 ;
A20: InsCode I = 7 by A19, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex d1 being Data-Location of R ex i2 being Element of NAT st J = d1 =0_goto i2 or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex r being Element of R st J = a := r ) by SCMRING2:8;
suppose ex d1 being Data-Location of R ex i2 being Element of NAT st J = d1 =0_goto i2 ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1 being Data-Location of R, i2 being Element of NAT such that
A21: J = d1 =0_goto i2 ;
thus dom (JumpPart I) = dom <*i1*> by A19, RECDEF_2:def 2
.= Seg 1 by FINSEQ_1:55
.= dom <*i2*> by FINSEQ_1:55
.= dom (JumpPart J) by A21, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex r being Element of R st J = a := r ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A20, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
suppose ex a being Data-Location of R ex r being Element of R st I = a := r ; :: thesis: dom (I `2_3) = dom (J `2_3)
then consider a being Data-Location of R, r being Element of R such that
A22: I = a := r ;
A23: InsCode I = 5 by A22, RECDEF_2:def 1;
now
per cases ( J = [0,{},{}] or ex a being Data-Location of R ex r being Element of R st J = a := r or ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 ) by SCMRING2:8;
suppose ex a being Data-Location of R ex r being Element of R st J = a := r ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider b being Data-Location of R, r1 being Element of R such that
A24: J = b := r1 ;
thus dom (JumpPart I) = dom {} by A22, RECDEF_2:def 2
.= dom (JumpPart J) by A24, RECDEF_2:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location of R st J = a := b or ex a, b being Data-Location of R st J = AddTo (a,b) or ex a, b being Data-Location of R st J = SubFrom (a,b) or ex a, b being Data-Location of R st J = MultBy (a,b) or ex i1 being Element of NAT st J = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st J = a =0_goto i1 ) ; :: thesis: dom (I `2_3) = dom (J `2_3)
hence dom (I `2_3) = dom (J `2_3) by A1, A23, RECDEF_2:def 1; :: thesis: verum
end;
end;
end;
hence dom (I `2_3) = dom (J `2_3) ; :: thesis: verum
end;
end;
end;
thus SCM R is with_explicit_jumps :: thesis: verum
proof
let I be Instruction of (SCM R); :: according to AMISTD_2:def 8 :: thesis: I is with_explicit_jumps
thus JUMP I c= rng (JumpPart I) :: according to AMISTD_2:def 6,XBOOLE_0:def 10 :: thesis: proj2 (I `2_3) c= JUMP I
proof
let f be set ; :: according to TARSKI:def 3 :: thesis: ( not f in JUMP I or f in rng (JumpPart I) )
assume A26: f in JUMP I ; :: thesis: f in rng (JumpPart I)
per cases ( I = [0,{},{}] or ex a, b being Data-Location of R st I = a := b or ex a, b being Data-Location of R st I = AddTo (a,b) or ex a, b being Data-Location of R st I = SubFrom (a,b) or ex a, b being Data-Location of R st I = MultBy (a,b) or ex i1 being Element of NAT st I = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st I = a := r ) by SCMRING2:8;
suppose A28: ex i1 being Element of NAT st I = goto (i1,R) ; :: thesis: f in rng (JumpPart I)
consider i1 being Element of NAT such that
A29: I = goto (i1,R) by A28;
A30: JumpPart (goto (i1,R)) = <*i1*> by RECDEF_2:def 2;
X: rng <*i1*> = {i1} by FINSEQ_1:56;
JUMP (goto (i1,R)) = {i1} by Th60;
hence f in rng (JumpPart I) by A26, A29, A30, X; :: thesis: verum
end;
suppose A31: ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 ; :: thesis: f in rng (JumpPart I)
consider a being Data-Location of R, i1 being Element of NAT such that
A32: I = a =0_goto i1 by A31;
A33: JumpPart (a =0_goto i1) = <*i1*> by RECDEF_2:def 2;
X: rng <*i1*> = {i1} by FINSEQ_1:56;
JUMP (a =0_goto i1) = {i1} by Th63;
hence f in rng (JumpPart I) by A26, A32, A33, X; :: thesis: verum
end;
suppose ex a being Data-Location of R ex r being Element of R st I = a := r ; :: thesis: f in rng (JumpPart I)
hence f in rng (JumpPart I) by A26; :: thesis: verum
end;
end;
end;
let f be set ; :: according to TARSKI:def 3 :: thesis: ( not f in proj2 (I `2_3) or f in JUMP I )
assume f in rng (JumpPart I) ; :: thesis: f in JUMP I
then consider k being set such that
A34: k in dom (JumpPart I) and
B34: f = (JumpPart I) . k by FUNCT_1:def 5;
per cases ( I = [0,{},{}] or ex a, b being Data-Location of R st I = a := b or ex a, b being Data-Location of R st I = AddTo (a,b) or ex a, b being Data-Location of R st I = SubFrom (a,b) or ex a, b being Data-Location of R st I = MultBy (a,b) or ex i1 being Element of NAT st I = goto (i1,R) or ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st I = a := r ) by SCMRING2:8;
suppose ex a, b being Data-Location of R st I = a := b ; :: thesis: f in JUMP I
then consider a, b being Data-Location of R such that
A37: I = a := b ;
k in dom {} by A34, A37, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = AddTo (a,b) ; :: thesis: f in JUMP I
then consider a, b being Data-Location of R such that
A38: I = AddTo (a,b) ;
k in dom {} by A34, A38, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = SubFrom (a,b) ; :: thesis: f in JUMP I
then consider a, b being Data-Location of R such that
A39: I = SubFrom (a,b) ;
k in dom {} by A34, A39, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
suppose ex a, b being Data-Location of R st I = MultBy (a,b) ; :: thesis: f in JUMP I
then consider a, b being Data-Location of R such that
A40: I = MultBy (a,b) ;
k in dom {} by A34, A40, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
suppose ex i1 being Element of NAT st I = goto (i1,R) ; :: thesis: f in JUMP I
then consider i1 being Element of NAT such that
A41: I = goto (i1,R) ;
A42: JumpPart I = <*i1*> by A41, RECDEF_2:def 2;
then k = 1 by A34, Lm1;
then A43: f = i1 by A42, B34, FINSEQ_1:def 8;
JUMP I = {i1} by A41, Th60;
hence f in JUMP I by A43, TARSKI:def 1; :: thesis: verum
end;
suppose ex a being Data-Location of R ex i1 being Element of NAT st I = a =0_goto i1 ; :: thesis: f in JUMP I
then consider a being Data-Location of R, i1 being Element of NAT such that
A44: I = a =0_goto i1 ;
A45: JumpPart I = <*i1*> by A44, RECDEF_2:def 2;
then k = 1 by A34, Lm1;
then A46: f = i1 by A45, B34, FINSEQ_1:57;
JUMP I = {i1} by A44, Th63;
hence f in JUMP I by A46, TARSKI:def 1; :: thesis: verum
end;
suppose ex a being Data-Location of R ex r being Element of R st I = a := r ; :: thesis: f in JUMP I
then consider a being Data-Location of R, r being Element of R such that
A47: I = a := r ;
k in dom {} by A34, A47, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
end;
end;