theorem Th5:
for
x1,
x2,
x3 being
Element of
NAT holds
(
Sum (Prefix (<*x1,x2,x3*>,1)) = x1 &
Sum (Prefix (<*x1,x2,x3*>,2)) = x1 + x2 &
Sum (Prefix (<*x1,x2,x3*>,3)) = (x1 + x2) + x3 )
definition
attr c1 is
strict ;
struct TuringStr -> ;
aggr TuringStr(#
Symbols,
FStates,
Tran,
InitS,
AcceptS #)
-> TuringStr ;
sel Symbols c1 -> non
empty finite set ;
sel FStates c1 -> non
empty finite set ;
sel Tran c1 -> Function of
[: the FStates of c1, the Symbols of c1:],
[: the FStates of c1, the Symbols of c1,{(- 1),0,1}:];
sel InitS c1 -> Element of the
FStates of
c1;
sel AcceptS c1 -> Element of the
FStates of
c1;
end;
definition
func Sum_Tran -> Function of
[:(SegM 5),{0,1}:],
[:(SegM 5),{0,1},{(- 1),0,1}:] equals
(((((((((id ([:(SegM 5),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [0,0,1])) +* ([0,1] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,0,(- 1)])) +* ([4,1] .--> [4,1,(- 1)])) +* ([4,0] .--> [5,0,0]);
coherence
(((((((((id ([:(SegM 5),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [0,0,1])) +* ([0,1] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,0,(- 1)])) +* ([4,1] .--> [4,1,(- 1)])) +* ([4,0] .--> [5,0,0]) is Function of [:(SegM 5),{0,1}:],[:(SegM 5),{0,1},{(- 1),0,1}:]
end;
::
deftheorem defines
Sum_Tran TURING_1:def 11 :
Sum_Tran = (((((((((id ([:(SegM 5),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [0,0,1])) +* ([0,1] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,0,(- 1)])) +* ([4,1] .--> [4,1,(- 1)])) +* ([4,0] .--> [5,0,0]);
theorem Th14:
(
Sum_Tran . [0,0] = [0,0,1] &
Sum_Tran . [0,1] = [1,0,1] &
Sum_Tran . [1,1] = [1,1,1] &
Sum_Tran . [1,0] = [2,1,1] &
Sum_Tran . [2,1] = [2,1,1] &
Sum_Tran . [2,0] = [3,0,(- 1)] &
Sum_Tran . [3,1] = [4,0,(- 1)] &
Sum_Tran . [4,1] = [4,1,(- 1)] &
Sum_Tran . [4,0] = [5,0,0] )
Lm1:
for n being Element of NAT st n <= 5 holds
n is State of SumTuring
Lm2:
( 0 in the Symbols of SumTuring & 1 in the Symbols of SumTuring )
Lm3:
for s being All-State of SumTuring
for p, h, t being set st s = [p,h,t] & p <> 5 holds
Following s = [((TRAN s) `1_3),((Head s) + (offset (TRAN s))),(Tape-Chg ((s `3_3),(Head s),((TRAN s) `2_3)))]
Lm4:
for tm being TuringStr
for s being All-State of tm
for p being State of tm
for h being Element of INT
for t being Tape of tm
for m, d being Element of NAT st d = h & 1 is Symbol of tm & s = [p,h,t] & the Tran of tm . [p,1] = [p,1,1] & p <> the AcceptS of tm & ( for i being Integer st d <= i & i < d + m holds
t . i = 1 ) holds
(Computation s) . m = [p,(d + m),t]
definition
func Succ_Tran -> Function of
[:(SegM 4),{0,1}:],
[:(SegM 4),{0,1},{(- 1),0,1}:] equals
(((((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [3,1,(- 1)])) +* ([3,0] .--> [4,0,0]);
coherence
(((((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [3,1,(- 1)])) +* ([3,0] .--> [4,0,0]) is Function of [:(SegM 4),{0,1}:],[:(SegM 4),{0,1},{(- 1),0,1}:]
end;
::
deftheorem defines
Succ_Tran TURING_1:def 16 :
Succ_Tran = (((((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,1,1])) +* ([1,0] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [3,1,(- 1)])) +* ([3,0] .--> [4,0,0]);
theorem Th30:
(
Succ_Tran . [0,0] = [1,0,1] &
Succ_Tran . [1,1] = [1,1,1] &
Succ_Tran . [1,0] = [2,1,1] &
Succ_Tran . [2,0] = [3,0,(- 1)] &
Succ_Tran . [2,1] = [3,0,(- 1)] &
Succ_Tran . [3,1] = [3,1,(- 1)] &
Succ_Tran . [3,0] = [4,0,0] )
Lm5:
for n being Element of NAT st n <= 4 holds
n is State of SuccTuring
Lm6:
( 0 in the Symbols of SuccTuring & 1 in the Symbols of SuccTuring )
Lm7:
for s being All-State of SuccTuring
for p, h, t being set st s = [p,h,t] & p <> 4 holds
Following s = [((TRAN s) `1_3),((Head s) + (offset (TRAN s))),(Tape-Chg ((s `3_3),(Head s),((TRAN s) `2_3)))]
definition
func Zero_Tran -> Function of
[:(SegM 4),{0,1}:],
[:(SegM 4),{0,1},{(- 1),0,1}:] equals
(((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},1)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,1,(- 1)]);
coherence
(((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},1)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,1,(- 1)]) is Function of [:(SegM 4),{0,1}:],[:(SegM 4),{0,1},{(- 1),0,1}:]
end;
::
deftheorem defines
Zero_Tran TURING_1:def 18 :
Zero_Tran = (((((id ([:(SegM 4),{0,1}:],{(- 1),0,1},1)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [2,1,1])) +* ([2,0] .--> [3,0,(- 1)])) +* ([2,1] .--> [3,0,(- 1)])) +* ([3,1] .--> [4,1,(- 1)]);
theorem Th33:
(
Zero_Tran . [0,0] = [1,0,1] &
Zero_Tran . [1,1] = [2,1,1] &
Zero_Tran . [2,0] = [3,0,(- 1)] &
Zero_Tran . [2,1] = [3,0,(- 1)] &
Zero_Tran . [3,1] = [4,1,(- 1)] )
Lm8:
for n being Element of NAT st n <= 4 holds
n is State of ZeroTuring
Lm9:
( 0 in the Symbols of ZeroTuring & 1 in the Symbols of ZeroTuring )
Lm10:
for s being All-State of ZeroTuring
for p, h, t being set st s = [p,h,t] & p <> 4 holds
Following s = [((TRAN s) `1_3),((Head s) + (offset (TRAN s))),(Tape-Chg ((s `3_3),(Head s),((TRAN s) `2_3)))]
definition
func U3(n)Tran -> Function of
[:(SegM 3),{0,1}:],
[:(SegM 3),{0,1},{(- 1),0,1}:] equals
(((((id ([:(SegM 3),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,0,1])) +* ([1,0] .--> [2,0,1])) +* ([2,1] .--> [2,0,1])) +* ([2,0] .--> [3,0,0]);
coherence
(((((id ([:(SegM 3),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,0,1])) +* ([1,0] .--> [2,0,1])) +* ([2,1] .--> [2,0,1])) +* ([2,0] .--> [3,0,0]) is Function of [:(SegM 3),{0,1}:],[:(SegM 3),{0,1},{(- 1),0,1}:]
end;
::
deftheorem defines
U3(n)Tran TURING_1:def 20 :
U3(n)Tran = (((((id ([:(SegM 3),{0,1}:],{(- 1),0,1},0)) +* ([0,0] .--> [1,0,1])) +* ([1,1] .--> [1,0,1])) +* ([1,0] .--> [2,0,1])) +* ([2,1] .--> [2,0,1])) +* ([2,0] .--> [3,0,0]);
theorem Th36:
(
U3(n)Tran . [0,0] = [1,0,1] &
U3(n)Tran . [1,1] = [1,0,1] &
U3(n)Tran . [1,0] = [2,0,1] &
U3(n)Tran . [2,1] = [2,0,1] &
U3(n)Tran . [2,0] = [3,0,0] )
Lm11:
for n being Element of NAT st n <= 3 holds
n is State of U3(n)Turing
Lm12:
( 0 in the Symbols of U3(n)Turing & 1 in the Symbols of U3(n)Turing )
Lm13:
for s being All-State of U3(n)Turing
for p, h, t being set st s = [p,h,t] & p <> 3 holds
Following s = [((TRAN s) `1_3),((Head s) + (offset (TRAN s))),(Tape-Chg ((s `3_3),(Head s),((TRAN s) `2_3)))]
Lm14:
for tm being TuringStr
for s being All-State of tm
for p being State of tm
for h being Element of INT
for t being Tape of tm
for m, d being Element of NAT st d = h & 0 is Symbol of tm & s = [p,h,t] & the Tran of tm . [p,1] = [p,0,1] & p <> the AcceptS of tm & ( for i being Integer st d <= i & i < d + m holds
t . i = 1 ) holds
ex t1 being Tape of tm st
( (Computation s) . m = [p,(d + m),t1] & ( for i being Integer st d <= i & i < d + m holds
t1 . i = 0 ) & ( for i being Integer st ( d > i or i >= d + m ) holds
t1 . i = t . i ) )
definition
let s,
t be
TuringStr ;
let x be
Tran-Goal of
s;
func FirstTuringTran (
s,
t,
x)
-> Element of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] equals
[[(x `1_3), the InitS of t],(x `2_3),(x `3_3)];
coherence
[[(x `1_3), the InitS of t],(x `2_3),(x `3_3)] is Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:]
end;
definition
let s,
t be
TuringStr ;
let x be
Tran-Goal of
t;
func SecondTuringTran (
s,
t,
x)
-> Element of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] equals
[[ the AcceptS of s,(x `1_3)],(x `2_3),(x `3_3)];
coherence
[[ the AcceptS of s,(x `1_3)],(x `2_3),(x `3_3)] is Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:]
end;
definition
let s,
t be
TuringStr ;
let x be
Element of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):];
func Uniontran (
s,
t,
x)
-> Element of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] equals :
Def29:
FirstTuringTran (
s,
t,
( the Tran of s . [(FirstTuringState x),(FirstTuringSymbol x)]))
if ex
p being
State of
s ex
y being
Symbol of
s st
(
x = [[p, the InitS of t],y] &
p <> the
AcceptS of
s )
SecondTuringTran (
s,
t,
( the Tran of t . [(SecondTuringState x),(SecondTuringSymbol x)]))
if ex
q being
State of
t ex
y being
Symbol of
t st
x = [[ the AcceptS of s,q],y] otherwise [(x `1),(x `2),(- 1)];
consistency
for b1 being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] st ex p being State of s ex y being Symbol of s st
( x = [[p, the InitS of t],y] & p <> the AcceptS of s ) & ex q being State of t ex y being Symbol of t st x = [[ the AcceptS of s,q],y] holds
( b1 = FirstTuringTran (s,t,( the Tran of s . [(FirstTuringState x),(FirstTuringSymbol x)])) iff b1 = SecondTuringTran (s,t,( the Tran of t . [(SecondTuringState x),(SecondTuringSymbol x)])) )
coherence
( ( ex p being State of s ex y being Symbol of s st
( x = [[p, the InitS of t],y] & p <> the AcceptS of s ) implies FirstTuringTran (s,t,( the Tran of s . [(FirstTuringState x),(FirstTuringSymbol x)])) is Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] ) & ( ex q being State of t ex y being Symbol of t st x = [[ the AcceptS of s,q],y] implies SecondTuringTran (s,t,( the Tran of t . [(SecondTuringState x),(SecondTuringSymbol x)])) is Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] ) & ( ( for p being State of s
for y being Symbol of s holds
( not x = [[p, the InitS of t],y] or not p <> the AcceptS of s ) ) & ( for q being State of t
for y being Symbol of t holds not x = [[ the AcceptS of s,q],y] ) implies [(x `1),(x `2),(- 1)] is Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] ) )
end;
::
deftheorem Def29 defines
Uniontran TURING_1:def 29 :
for s, t being TuringStr
for x being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds
( ( ex p being State of s ex y being Symbol of s st
( x = [[p, the InitS of t],y] & p <> the AcceptS of s ) implies Uniontran (s,t,x) = FirstTuringTran (s,t,( the Tran of s . [(FirstTuringState x),(FirstTuringSymbol x)])) ) & ( ex q being State of t ex y being Symbol of t st x = [[ the AcceptS of s,q],y] implies Uniontran (s,t,x) = SecondTuringTran (s,t,( the Tran of t . [(SecondTuringState x),(SecondTuringSymbol x)])) ) & ( ( for p being State of s
for y being Symbol of s holds
( not x = [[p, the InitS of t],y] or not p <> the AcceptS of s ) ) & ( for q being State of t
for y being Symbol of t holds not x = [[ the AcceptS of s,q],y] ) implies Uniontran (s,t,x) = [(x `1),(x `2),(- 1)] ) );
definition
let s,
t be
TuringStr ;
func UnionTran (
s,
t)
-> Function of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):],
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] means :
Def30:
for
x being
Element of
[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds
it . x = Uniontran (
s,
t,
x);
existence
ex b1 being Function of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):],[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] st
for x being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds b1 . x = Uniontran (s,t,x)
uniqueness
for b1, b2 being Function of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):],[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] st ( for x being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds b1 . x = Uniontran (s,t,x) ) & ( for x being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds b2 . x = Uniontran (s,t,x) ) holds
b1 = b2
end;
::
deftheorem Def30 defines
UnionTran TURING_1:def 30 :
for s, t being TuringStr
for b3 being Function of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):],[:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t),{(- 1),0,1}:] holds
( b3 = UnionTran (s,t) iff for x being Element of [:(UnionSt (s,t)),( the Symbols of s \/ the Symbols of t):] holds b3 . x = Uniontran (s,t,x) );
definition
let T1,
T2 be
TuringStr ;
existence
ex b1 being strict TuringStr st
( the Symbols of b1 = the Symbols of T1 \/ the Symbols of T2 & the FStates of b1 = UnionSt (T1,T2) & the Tran of b1 = UnionTran (T1,T2) & the InitS of b1 = [ the InitS of T1, the InitS of T2] & the AcceptS of b1 = [ the AcceptS of T1, the AcceptS of T2] )
uniqueness
for b1, b2 being strict TuringStr st the Symbols of b1 = the Symbols of T1 \/ the Symbols of T2 & the FStates of b1 = UnionSt (T1,T2) & the Tran of b1 = UnionTran (T1,T2) & the InitS of b1 = [ the InitS of T1, the InitS of T2] & the AcceptS of b1 = [ the AcceptS of T1, the AcceptS of T2] & the Symbols of b2 = the Symbols of T1 \/ the Symbols of T2 & the FStates of b2 = UnionSt (T1,T2) & the Tran of b2 = UnionTran (T1,T2) & the InitS of b2 = [ the InitS of T1, the InitS of T2] & the AcceptS of b2 = [ the AcceptS of T1, the AcceptS of T2] holds
b1 = b2
;
end;
Lm15:
for s being All-State of ZeroTuring
for t being Tape of ZeroTuring
for head, n being Element of NAT st s = [0,head,t] & t storeData <*head,n*> holds
( s is Accept-Halt & (Result s) `2_3 = head & (Result s) `3_3 storeData <*head,0*> )