:: FINSEQ_6 semantic presentation

registration
let c1, c2, c3 be set ;
cluster <*a1,a2,a3*> -> non trivial ;
coherence
not <*c1,c2,c3*> is trivial
proof end;
end;

registration
let c1 be non empty FinSequence;
cluster Rev a1 -> non empty ;
coherence
not Rev c1 is empty
proof end;
end;

Lemma1: for b1, b2 being set holds rng <*b1,b2*> = {b1,b2}
proof end;

Lemma2: for b1, b2, b3 being set holds rng <*b1,b2,b3*> = {b1,b2,b3}
proof end;

theorem Th1: :: FINSEQ_6:1
canceled;

theorem Th2: :: FINSEQ_6:2
canceled;

theorem Th3: :: FINSEQ_6:3
for b1 being set
for b2 being Nat st b1 c= Seg b2 & 1 in b1 holds
(Sgm b1) . 1 = 1
proof end;

theorem Th4: :: FINSEQ_6:4
for b1 being Nat
for b2 being FinSequence st b1 in dom b2 & ( for b3 being Nat st 1 <= b3 & b3 < b1 holds
b2 . b3 <> b2 . b1 ) holds
(b2 . b1) .. b2 = b1
proof end;

theorem Th5: :: FINSEQ_6:5
for b1, b2 being set holds <*b1,b2*> | (Seg 1) = <*b1*>
proof end;

theorem Th6: :: FINSEQ_6:6
for b1, b2, b3 being set holds <*b1,b2,b3*> | (Seg 1) = <*b1*>
proof end;

theorem Th7: :: FINSEQ_6:7
for b1, b2, b3 being set holds <*b1,b2,b3*> | (Seg 2) = <*b1,b2*>
proof end;

theorem Th8: :: FINSEQ_6:8
for b1, b2 being FinSequence
for b3 being set st b3 in rng b1 holds
b3 .. (b1 ^ b2) = b3 .. b1
proof end;

theorem Th9: :: FINSEQ_6:9
for b1, b2 being FinSequence
for b3 being set st b3 in (rng b1) \ (rng b2) holds
b3 .. (b2 ^ b1) = (len b2) + (b3 .. b1)
proof end;

theorem Th10: :: FINSEQ_6:10
for b1, b2 being FinSequence
for b3 being set st b3 in rng b1 holds
(b1 ^ b2) |-- b3 = (b1 |-- b3) ^ b2
proof end;

theorem Th11: :: FINSEQ_6:11
for b1, b2 being FinSequence
for b3 being set st b3 in (rng b1) \ (rng b2) holds
(b2 ^ b1) |-- b3 = b1 |-- b3
proof end;

theorem Th12: :: FINSEQ_6:12
for b1, b2 being FinSequence holds b1 c= b1 ^ b2
proof end;

theorem Th13: :: FINSEQ_6:13
for b1, b2 being FinSequence
for b3 being set st b3 c= dom b1 holds
(b1 ^ b2) | b3 = b1 | b3
proof end;

theorem Th14: :: FINSEQ_6:14
for b1, b2 being FinSequence
for b3 being set st b3 in rng b1 holds
(b1 ^ b2) -| b3 = b1 -| b3
proof end;

registration
let c1 be FinSequence;
let c2 be natural number ;
cluster a1 | (Seg a2) -> FinSequence-like ;
coherence
c1 | (Seg c2) is FinSequence-like
by FINSEQ_1:19;
end;

theorem Th15: :: FINSEQ_6:15
for b1, b2, b3 being FinSequence st b1 c= b2 holds
b3 ^ b1 c= b3 ^ b2
proof end;

theorem Th16: :: FINSEQ_6:16
for b1, b2 being FinSequence
for b3 being Nat holds (b1 ^ b2) | (Seg ((len b1) + b3)) = b1 ^ (b2 | (Seg b3))
proof end;

theorem Th17: :: FINSEQ_6:17
for b1, b2 being FinSequence
for b3 being set st b3 in (rng b1) \ (rng b2) holds
(b2 ^ b1) -| b3 = b2 ^ (b1 -| b3)
proof end;

theorem Th18: :: FINSEQ_6:18
canceled;

theorem Th19: :: FINSEQ_6:19
for b1, b2 being FinSequence
for b3 being set st b1 ^ b2 just_once_values b3 holds
b3 in (rng b1) \+\ (rng b2)
proof end;

theorem Th20: :: FINSEQ_6:20
for b1, b2 being FinSequence
for b3 being set st b1 ^ b2 just_once_values b3 & b3 in rng b1 holds
b1 just_once_values b3
proof end;

theorem Th21: :: FINSEQ_6:21
for b1 being FinSequence st not rng b1 is trivial holds
not b1 is trivial
proof end;

theorem Th22: :: FINSEQ_6:22
for b1 being set holds b1 .. <*b1*> = 1
proof end;

theorem Th23: :: FINSEQ_6:23
for b1, b2 being set holds b1 .. <*b1,b2*> = 1
proof end;

theorem Th24: :: FINSEQ_6:24
for b1, b2 being set st b1 <> b2 holds
b2 .. <*b1,b2*> = 2
proof end;

theorem Th25: :: FINSEQ_6:25
for b1, b2, b3 being set holds b1 .. <*b1,b2,b3*> = 1
proof end;

theorem Th26: :: FINSEQ_6:26
for b1, b2, b3 being set st b1 <> b2 holds
b2 .. <*b1,b2,b3*> = 2
proof end;

theorem Th27: :: FINSEQ_6:27
for b1, b2, b3 being set st b1 <> b2 & b3 <> b2 holds
b2 .. <*b1,b3,b2*> = 3
proof end;

theorem Th28: :: FINSEQ_6:28
for b1 being set
for b2 being FinSequence holds Rev (<*b1*> ^ b2) = (Rev b2) ^ <*b1*>
proof end;

theorem Th29: :: FINSEQ_6:29
for b1 being FinSequence holds Rev (Rev b1) = b1
proof end;

theorem Th30: :: FINSEQ_6:30
for b1, b2 being set st b1 <> b2 holds
<*b1,b2*> -| b2 = <*b1*>
proof end;

theorem Th31: :: FINSEQ_6:31
for b1, b2, b3 being set st b1 <> b2 holds
<*b1,b2,b3*> -| b2 = <*b1*>
proof end;

theorem Th32: :: FINSEQ_6:32
for b1, b2, b3 being set st b1 <> b2 & b3 <> b2 holds
<*b1,b3,b2*> -| b2 = <*b1,b3*>
proof end;

theorem Th33: :: FINSEQ_6:33
for b1, b2 being set holds <*b1,b2*> |-- b1 = <*b2*>
proof end;

theorem Th34: :: FINSEQ_6:34
for b1, b2, b3 being set st b1 <> b2 holds
<*b1,b2,b3*> |-- b2 = <*b3*>
proof end;

theorem Th35: :: FINSEQ_6:35
for b1, b2, b3 being set holds <*b1,b2,b3*> |-- b1 = <*b2,b3*>
proof end;

theorem Th36: :: FINSEQ_6:36
for b1 being set holds
( <*b1*> |-- b1 = {} & <*b1*> -| b1 = {} )
proof end;

theorem Th37: :: FINSEQ_6:37
for b1, b2 being set st b1 <> b2 holds
<*b1,b2*> |-- b2 = {}
proof end;

theorem Th38: :: FINSEQ_6:38
for b1, b2, b3 being set st b1 <> b2 & b3 <> b2 holds
<*b1,b3,b2*> |-- b2 = {}
proof end;

theorem Th39: :: FINSEQ_6:39
for b1, b2 being set
for b3 being FinSequence st b1 in rng b3 & b2 in rng (b3 -| b1) holds
(b3 -| b1) -| b2 = b3 -| b2
proof end;

theorem Th40: :: FINSEQ_6:40
for b1 being set
for b2, b3 being FinSequence st not b1 in rng b2 holds
b1 .. ((b2 ^ <*b1*>) ^ b3) = (len b2) + 1
proof end;

theorem Th41: :: FINSEQ_6:41
for b1 being set
for b2 being FinSequence st b2 just_once_values b1 holds
(b1 .. b2) + (b1 .. (Rev b2)) = (len b2) + 1
proof end;

theorem Th42: :: FINSEQ_6:42
for b1 being set
for b2 being FinSequence st b2 just_once_values b1 holds
Rev (b2 -| b1) = (Rev b2) |-- b1
proof end;

theorem Th43: :: FINSEQ_6:43
for b1 being set
for b2 being FinSequence st b2 just_once_values b1 holds
Rev b2 just_once_values b1
proof end;

theorem Th44: :: FINSEQ_6:44
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
b3 -: b2 = (b3 -| b2) ^ <*b2*>
proof end;

theorem Th45: :: FINSEQ_6:45
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
b3 :- b2 = <*b2*> ^ (b3 |-- b2)
proof end;

theorem Th46: :: FINSEQ_6:46
for b1 being non empty set
for b2 being FinSequence of b1 st b2 <> {} holds
b2 /. 1 in rng b2
proof end;

theorem Th47: :: FINSEQ_6:47
for b1 being non empty set
for b2 being FinSequence of b1 st b2 <> {} holds
(b2 /. 1) .. b2 = 1
proof end;

theorem Th48: :: FINSEQ_6:48
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 <> {} & b3 /. 1 = b2 holds
( b3 -: b2 = <*b2*> & b3 :- b2 = b3 )
proof end;

theorem Th49: :: FINSEQ_6:49
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds (<*b2*> ^ b3) /^ 1 = b3
proof end;

theorem Th50: :: FINSEQ_6:50
for b1 being non empty set
for b2, b3 being Element of b1 holds <*b2,b3*> /^ 1 = <*b3*>
proof end;

theorem Th51: :: FINSEQ_6:51
for b1 being non empty set
for b2, b3, b4 being Element of b1 holds <*b2,b3,b4*> /^ 1 = <*b3,b4*>
proof end;

theorem Th52: :: FINSEQ_6:52
for b1 being Nat
for b2 being non empty set
for b3 being FinSequence of b2 st b1 in dom b3 & ( for b4 being Nat st 1 <= b4 & b4 < b1 holds
b3 /. b4 <> b3 /. b1 ) holds
(b3 /. b1) .. b3 = b1
proof end;

theorem Th53: :: FINSEQ_6:53
for b1 being non empty set
for b2, b3 being Element of b1 st b2 <> b3 holds
<*b2,b3*> -: b3 = <*b2,b3*>
proof end;

theorem Th54: :: FINSEQ_6:54
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 holds
<*b2,b3,b4*> -: b3 = <*b2,b3*>
proof end;

theorem Th55: :: FINSEQ_6:55
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 & b4 <> b3 holds
<*b2,b4,b3*> -: b3 = <*b2,b4,b3*>
proof end;

theorem Th56: :: FINSEQ_6:56
for b1 being non empty set
for b2 being Element of b1 holds
( <*b2*> :- b2 = <*b2*> & <*b2*> -: b2 = <*b2*> )
proof end;

theorem Th57: :: FINSEQ_6:57
for b1 being non empty set
for b2, b3 being Element of b1 st b2 <> b3 holds
<*b2,b3*> :- b3 = <*b3*>
proof end;

theorem Th58: :: FINSEQ_6:58
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 holds
<*b2,b3,b4*> :- b3 = <*b3,b4*>
proof end;

theorem Th59: :: FINSEQ_6:59
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 & b4 <> b3 holds
<*b2,b4,b3*> :- b3 = <*b3*>
proof end;

theorem Th60: :: FINSEQ_6:60
canceled;

theorem Th61: :: FINSEQ_6:61
for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b3 .. b4 > b1 holds
b3 .. b4 = b1 + (b3 .. (b4 /^ b1))
proof end;

theorem Th62: :: FINSEQ_6:62
for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b3 .. b4 > b1 holds
b3 in rng (b4 /^ b1)
proof end;

theorem Th63: :: FINSEQ_6:63
for b1, b2 being Nat
for b3 being non empty set
for b4 being FinSequence of b3 st b1 < b2 & b2 in dom b4 holds
b4 /. b2 in rng (b4 /^ b1)
proof end;

theorem Th64: :: FINSEQ_6:64
for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b3 .. b4 > b1 holds
(b4 /^ b1) -: b3 = (b4 -: b3) /^ b1
proof end;

theorem Th65: :: FINSEQ_6:65
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 & b2 .. b3 <> 1 holds
(b3 /^ 1) -: b2 = (b3 -: b2) /^ 1
proof end;

theorem Th66: :: FINSEQ_6:66
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds b2 in rng (b3 :- b2)
proof end;

theorem Th67: :: FINSEQ_6:67
for b1 being set
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b1 in rng b4 & b3 in rng b4 & b1 .. b4 >= b3 .. b4 holds
b1 in rng (b4 :- b3)
proof end;

theorem Th68: :: FINSEQ_6:68
for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b1 <= len b4 & b1 >= b3 .. b4 holds
b4 /. b1 in rng (b4 :- b3)
proof end;

theorem Th69: :: FINSEQ_6:69
for b1 being non empty set
for b2 being Element of b1
for b3, b4 being FinSequence of b1 st b2 in rng b3 holds
(b3 ^ b4) :- b2 = (b3 :- b2) ^ b4
proof end;

theorem Th70: :: FINSEQ_6:70
for b1 being non empty set
for b2 being Element of b1
for b3, b4 being FinSequence of b1 st b2 in (rng b3) \ (rng b4) holds
(b4 ^ b3) :- b2 = b3 :- b2
proof end;

theorem Th71: :: FINSEQ_6:71
for b1 being non empty set
for b2 being Element of b1
for b3, b4 being FinSequence of b1 st b2 in rng b3 holds
(b3 ^ b4) -: b2 = b3 -: b2
proof end;

theorem Th72: :: FINSEQ_6:72
for b1 being non empty set
for b2 being Element of b1
for b3, b4 being FinSequence of b1 st b2 in (rng b3) \ (rng b4) holds
(b4 ^ b3) -: b2 = b4 ^ (b3 -: b2)
proof end;

theorem Th73: :: FINSEQ_6:73
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds (b3 :- b2) :- b2 = b3 :- b2
proof end;

theorem Th74: :: FINSEQ_6:74
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 in rng b4 & b3 in (rng b4) \ (rng (b4 -: b2)) holds
b4 |-- b3 = (b4 |-- b2) |-- b3
proof end;

theorem Th75: :: FINSEQ_6:75
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
rng b3 = (rng (b3 -: b2)) \/ (rng (b3 :- b2))
proof end;

theorem Th76: :: FINSEQ_6:76
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 in rng b4 & b3 in (rng b4) \ (rng (b4 -: b2)) holds
(b4 :- b2) :- b3 = b4 :- b3
proof end;

theorem Th77: :: FINSEQ_6:77
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
b2 .. (b3 -: b2) = b2 .. b3
proof end;

theorem Th78: :: FINSEQ_6:78
for b1 being Nat
for b2 being non empty set
for b3 being FinSequence of b2 holds (b3 | b1) | b1 = b3 | b1
proof end;

theorem Th79: :: FINSEQ_6:79
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
(b3 -: b2) -: b2 = b3 -: b2
proof end;

theorem Th80: :: FINSEQ_6:80
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 in rng b4 & b3 in rng (b4 -: b2) holds
(b4 -: b2) -: b3 = b4 -: b3
proof end;

theorem Th81: :: FINSEQ_6:81
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
(b3 -: b2) ^ ((b3 :- b2) /^ 1) = b3
proof end;

theorem Th82: :: FINSEQ_6:82
for b1 being non empty set
for b2, b3 being FinSequence of b1 st b2 <> {} holds
(b2 ^ b3) /^ 1 = (b2 /^ 1) ^ b3
proof end;

theorem Th83: :: FINSEQ_6:83
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 & b2 .. b3 <> 1 holds
b2 in rng (b3 /^ 1)
proof end;

theorem Th84: :: FINSEQ_6:84
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds b2 .. (b3 :- b2) = 1
proof end;

Lemma77: for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b3 .. b4 > b1 holds
b1 + (b3 .. (b4 /^ b1)) = b3 .. b4
proof end;

theorem Th85: :: FINSEQ_6:85
canceled;

theorem Th86: :: FINSEQ_6:86
for b1 being Nat
for b2 being non empty set holds (<*> b2) /^ b1 = <*> b2
proof end;

theorem Th87: :: FINSEQ_6:87
for b1, b2 being Nat
for b3 being non empty set
for b4 being FinSequence of b3 holds b4 /^ (b1 + b2) = (b4 /^ b1) /^ b2
proof end;

theorem Th88: :: FINSEQ_6:88
for b1 being Nat
for b2 being non empty set
for b3 being Element of b2
for b4 being FinSequence of b2 st b3 in rng b4 & b3 .. b4 > b1 holds
(b4 /^ b1) :- b3 = b4 :- b3
proof end;

theorem Th89: :: FINSEQ_6:89
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 & b2 .. b3 <> 1 holds
(b3 /^ 1) :- b2 = b3 :- b2
proof end;

theorem Th90: :: FINSEQ_6:90
for b1, b2 being Nat
for b3 being non empty set
for b4 being FinSequence of b3 st b1 + b2 = len b4 holds
Rev (b4 /^ b2) = (Rev b4) | b1
proof end;

theorem Th91: :: FINSEQ_6:91
for b1, b2 being Nat
for b3 being non empty set
for b4 being FinSequence of b3 st b1 + b2 = len b4 holds
Rev (b4 | b2) = (Rev b4) /^ b1
proof end;

theorem Th92: :: FINSEQ_6:92
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 just_once_values b2 holds
Rev (b3 |-- b2) = (Rev b3) -| b2
proof end;

theorem Th93: :: FINSEQ_6:93
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 just_once_values b2 holds
Rev (b3 :- b2) = (Rev b3) -: b2
proof end;

theorem Th94: :: FINSEQ_6:94
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 just_once_values b2 holds
Rev (b3 -: b2) = (Rev b3) :- b2
proof end;

definition
let c1 be non empty set ;
let c2 be FinSequence of c1;
attr a2 is circular means :Def1: :: FINSEQ_6:def 1
a2 /. 1 = a2 /. (len a2);
end;

:: deftheorem Def1 defines circular FINSEQ_6:def 1 :
for b1 being non empty set
for b2 being FinSequence of b1 holds
( b2 is circular iff b2 /. 1 = b2 /. (len b2) );

definition
let c1 be non empty set ;
let c2 be FinSequence of c1;
let c3 be Element of c1;
func Rotate c2,c3 -> FinSequence of a1 equals :Def2: :: FINSEQ_6:def 2
(a2 :- a3) ^ ((a2 -: a3) /^ 1) if a3 in rng a2
otherwise a2;
correctness
coherence
( ( c3 in rng c2 implies (c2 :- c3) ^ ((c2 -: c3) /^ 1) is FinSequence of c1 ) & ( not c3 in rng c2 implies c2 is FinSequence of c1 ) )
;
consistency
for b1 being FinSequence of c1 holds verum
;
;
end;

:: deftheorem Def2 defines Rotate FINSEQ_6:def 2 :
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being Element of b1 holds
( ( b3 in rng b2 implies Rotate b2,b3 = (b2 :- b3) ^ ((b2 -: b3) /^ 1) ) & ( not b3 in rng b2 implies Rotate b2,b3 = b2 ) );

registration
let c1 be non empty set ;
let c2 be non empty FinSequence of c1;
let c3 be Element of c1;
cluster Rotate a2,a3 -> non empty ;
coherence
not Rotate c2,c3 is empty
proof end;
end;

registration
let c1 be non empty set ;
cluster non empty trivial circular FinSequence of a1;
existence
ex b1 being FinSequence of c1 st
( b1 is circular & not b1 is empty & b1 is trivial )
proof end;
cluster non empty non trivial circular FinSequence of a1;
existence
ex b1 being FinSequence of c1 st
( b1 is circular & not b1 is empty & not b1 is trivial )
proof end;
end;

theorem Th95: :: FINSEQ_6:95
for b1 being non empty set
for b2 being FinSequence of b1 holds Rotate b2,(b2 /. 1) = b2
proof end;

registration
let c1 be non empty set ;
let c2 be Element of c1;
let c3 be non empty circular FinSequence of c1;
cluster Rotate a3,a2 -> non empty circular ;
coherence
Rotate c3,c2 is circular
proof end;
end;

theorem Th96: :: FINSEQ_6:96
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 is circular & b2 in rng b3 holds
rng (Rotate b3,b2) = rng b3
proof end;

theorem Th97: :: FINSEQ_6:97
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
b2 in rng (Rotate b3,b2)
proof end;

theorem Th98: :: FINSEQ_6:98
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b2 in rng b3 holds
(Rotate b3,b2) /. 1 = b2
proof end;

theorem Th99: :: FINSEQ_6:99
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds Rotate (Rotate b3,b2),b2 = Rotate b3,b2
proof end;

theorem Th100: :: FINSEQ_6:100
for b1 being non empty set
for b2 being Element of b1 holds Rotate <*b2*>,b2 = <*b2*>
proof end;

theorem Th101: :: FINSEQ_6:101
for b1 being non empty set
for b2, b3 being Element of b1 holds Rotate <*b2,b3*>,b2 = <*b2,b3*>
proof end;

theorem Th102: :: FINSEQ_6:102
for b1 being non empty set
for b2, b3 being Element of b1 holds Rotate <*b2,b3*>,b3 = <*b3,b3*>
proof end;

theorem Th103: :: FINSEQ_6:103
for b1 being non empty set
for b2, b3, b4 being Element of b1 holds Rotate <*b2,b3,b4*>,b2 = <*b2,b3,b4*>
proof end;

theorem Th104: :: FINSEQ_6:104
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 holds
Rotate <*b2,b3,b4*>,b3 = <*b3,b4,b3*>
proof end;

theorem Th105: :: FINSEQ_6:105
for b1 being non empty set
for b2, b3, b4 being Element of b1 st b2 <> b3 holds
Rotate <*b4,b2,b3*>,b3 = <*b3,b2,b3*>
proof end;

theorem Th106: :: FINSEQ_6:106
for b1 being non empty set
for b2 being non trivial circular FinSequence of b1 holds rng (b2 /^ 1) = rng b2
proof end;

theorem Th107: :: FINSEQ_6:107
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 holds rng (b3 /^ 1) c= rng (Rotate b3,b2)
proof end;

theorem Th108: :: FINSEQ_6:108
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 in (rng b4) \ (rng (b4 -: b3)) holds
Rotate (Rotate b4,b3),b2 = Rotate b4,b2
proof end;

theorem Th109: :: FINSEQ_6:109
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 .. b4 <> 1 & b2 in (rng b4) \ (rng (b4 :- b3)) holds
Rotate (Rotate b4,b3),b2 = Rotate b4,b2
proof end;

theorem Th110: :: FINSEQ_6:110
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b2 in rng (b4 /^ 1) & b4 just_once_values b2 holds
Rotate (Rotate b4,b3),b2 = Rotate b4,b2
proof end;

theorem Th111: :: FINSEQ_6:111
for b1 being non empty set
for b2, b3 being Element of b1
for b4 being FinSequence of b1 st b4 is circular & b4 just_once_values b2 holds
Rotate (Rotate b4,b3),b2 = Rotate b4,b2
proof end;

theorem Th112: :: FINSEQ_6:112
for b1 being non empty set
for b2 being Element of b1
for b3 being FinSequence of b1 st b3 is circular & b3 just_once_values b2 holds
Rev (Rotate b3,b2) = Rotate (Rev b3),b2
proof end;