let f1, f2 be non constant standard clockwise_oriented special_circular_sequence; :: thesis: ( f1 is_sequence_on Gauge (C,n) & ex i being Nat st
( 1 <= i & i + 1 <= len (Gauge (C,n)) & f1 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) & f1 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) & N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) & N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) & ( for k being Nat st 1 <= k & k + 2 <= len f1 holds
( ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) misses C implies f1 turns_right k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) meets C implies f1 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) meets C implies f1 turns_left k, Gauge (C,n) ) ) ) & f2 is_sequence_on Gauge (C,n) & ex i being Nat st
( 1 <= i & i + 1 <= len (Gauge (C,n)) & f2 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) & f2 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) & N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) & N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) & ( for k being Nat st 1 <= k & k + 2 <= len f2 holds
( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ) implies f1 = f2 )

assume A1007: f1 is_sequence_on Gauge (C,n) ; :: thesis: ( for i being Nat holds
( not 1 <= i or not i + 1 <= len (Gauge (C,n)) or not f1 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) or not f1 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) or not N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) or not N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) or ex k being Nat st
( 1 <= k & k + 2 <= len f1 & not ( ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) misses C implies f1 turns_right k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) meets C implies f1 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) meets C implies f1 turns_left k, Gauge (C,n) ) ) ) or not f2 is_sequence_on Gauge (C,n) or for i being Nat holds
( not 1 <= i or not i + 1 <= len (Gauge (C,n)) or not f2 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) or not f2 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) or not N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) or not N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) or ex k being Nat st
( 1 <= k & k + 2 <= len f2 & not ( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ) or f1 = f2 )

defpred S1[ Nat] means f1 | $1 = f2 | $1;
given i1 being Nat such that A1008: ( 1 <= i1 & i1 + 1 <= len (Gauge (C,n)) ) and
A1009: f1 /. 1 = (Gauge (C,n)) * (i1,(width (Gauge (C,n)))) and
A1010: f1 /. 2 = (Gauge (C,n)) * ((i1 + 1),(width (Gauge (C,n)))) and
A1011: ( N-min C in cell ((Gauge (C,n)),i1,((width (Gauge (C,n))) -' 1)) & N-min C <> (Gauge (C,n)) * (i1,((width (Gauge (C,n))) -' 1)) ) ; :: thesis: ( ex k being Nat st
( 1 <= k & k + 2 <= len f1 & not ( ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) misses C implies f1 turns_right k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) meets C implies f1 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) meets C implies f1 turns_left k, Gauge (C,n) ) ) ) or not f2 is_sequence_on Gauge (C,n) or for i being Nat holds
( not 1 <= i or not i + 1 <= len (Gauge (C,n)) or not f2 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) or not f2 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) or not N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) or not N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) or ex k being Nat st
( 1 <= k & k + 2 <= len f2 & not ( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ) or f1 = f2 )

assume that
A1012: for k being Nat st 1 <= k & k + 2 <= len f1 holds
( ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) misses C implies f1 turns_right k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) misses C & front_right_cell (f1,k,(Gauge (C,n))) meets C implies f1 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f1,k,(Gauge (C,n))) meets C implies f1 turns_left k, Gauge (C,n) ) ) and
A1013: f2 is_sequence_on Gauge (C,n) ; :: thesis: ( for i being Nat holds
( not 1 <= i or not i + 1 <= len (Gauge (C,n)) or not f2 /. 1 = (Gauge (C,n)) * (i,(width (Gauge (C,n)))) or not f2 /. 2 = (Gauge (C,n)) * ((i + 1),(width (Gauge (C,n)))) or not N-min C in cell ((Gauge (C,n)),i,((width (Gauge (C,n))) -' 1)) or not N-min C <> (Gauge (C,n)) * (i,((width (Gauge (C,n))) -' 1)) ) or ex k being Nat st
( 1 <= k & k + 2 <= len f2 & not ( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ) or f1 = f2 )

given i2 being Nat such that A1014: ( 1 <= i2 & i2 + 1 <= len (Gauge (C,n)) ) and
A1015: f2 /. 1 = (Gauge (C,n)) * (i2,(width (Gauge (C,n)))) and
A1016: f2 /. 2 = (Gauge (C,n)) * ((i2 + 1),(width (Gauge (C,n)))) and
A1017: ( N-min C in cell ((Gauge (C,n)),i2,((width (Gauge (C,n))) -' 1)) & N-min C <> (Gauge (C,n)) * (i2,((width (Gauge (C,n))) -' 1)) ) ; :: thesis: ( ex k being Nat st
( 1 <= k & k + 2 <= len f2 & not ( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ) or f1 = f2 )

assume A1018: for k being Nat st 1 <= k & k + 2 <= len f2 holds
( ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) misses C implies f2 turns_right k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) misses C & front_right_cell (f2,k,(Gauge (C,n))) meets C implies f2 goes_straight k, Gauge (C,n) ) & ( front_left_cell (f2,k,(Gauge (C,n))) meets C implies f2 turns_left k, Gauge (C,n) ) ) ; :: thesis: f1 = f2
A1019: for k being Nat st S1[k] holds
S1[k + 1]
proof
A1020: len f1 > 4 by GOBOARD7:34;
A1021: ( f1 | 1 = <*(f1 . 1)*> & f2 | 1 = <*(f2 . 1)*> ) by FINSEQ_5:20;
A1022: ( i1 = i2 & len f2 > 4 ) by A1008, A1011, A1014, A1017, Th29, GOBOARD7:34;
( 1 <= len f1 & 1 <= len f2 ) by A1020, A1022, XXREAL_0:2;
then ( 1 in dom f1 & 1 in dom f2 ) by FINSEQ_3:25;
then S: ( f1 . 1 = f1 /. 1 & f2 . 1 = f2 /. 1 ) by PARTFUN1:def 6;
let k be Nat; :: thesis: ( S1[k] implies S1[k + 1] )
assume A1023: f1 | k = f2 | k ; :: thesis: S1[k + 1]
per cases ( k = 0 or k = 1 or k > 1 ) by NAT_1:25;
suppose A1025: k > 1 ; :: thesis: S1[k + 1]
A1026: ( f1 /. 1 = f1 /. (len f1) & f2 /. 1 = f2 /. (len f2) ) by FINSEQ_6:def 1;
now :: thesis: S1[k + 1]
per cases ( len f1 > k or k >= len f1 ) ;
suppose A1027: len f1 > k ; :: thesis: S1[k + 1]
set m = k -' 1;
A1028: 1 <= k -' 1 by A1025, NAT_D:49;
then A1029: (k -' 1) + 1 = k by NAT_D:43;
then A1030: front_left_cell (f1,(k -' 1),(Gauge (C,n))) = front_left_cell ((f1 | k),(k -' 1),(Gauge (C,n))) by A1007, A1027, A1028, GOBRD13:42;
A1031: (k -' 1) + (1 + 1) = k + 1 by A1029;
A1032: k + 1 <= len f1 by A1027, NAT_1:13;
then A1038: k + 1 <= len f2 by NAT_1:13;
A1039: front_right_cell (f2,(k -' 1),(Gauge (C,n))) = front_right_cell ((f2 | k),(k -' 1),(Gauge (C,n))) by A1013, A1028, A1029, A1033, GOBRD13:42;
A1040: front_left_cell (f2,(k -' 1),(Gauge (C,n))) = front_left_cell ((f2 | k),(k -' 1),(Gauge (C,n))) by A1013, A1028, A1029, A1033, GOBRD13:42;
A1041: front_right_cell (f1,(k -' 1),(Gauge (C,n))) = front_right_cell ((f1 | k),(k -' 1),(Gauge (C,n))) by A1007, A1027, A1028, A1029, GOBRD13:42;
now :: thesis: S1[k + 1]
per cases ( ( front_left_cell (f1,(k -' 1),(Gauge (C,n))) misses C & front_right_cell (f1,(k -' 1),(Gauge (C,n))) misses C ) or ( front_left_cell (f1,(k -' 1),(Gauge (C,n))) misses C & front_right_cell (f1,(k -' 1),(Gauge (C,n))) meets C ) or front_left_cell (f1,(k -' 1),(Gauge (C,n))) meets C ) ;
end;
end;
hence S1[k + 1] ; :: thesis: verum
end;
end;
end;
hence S1[k + 1] ; :: thesis: verum
end;
end;
end;
A1048: S1[ 0 ] ;
for k being Nat holds S1[k] from NAT_1:sch 2(A1048, A1019);
hence f1 = f2 by Th2; :: thesis: verum