let f1, f2 be non constant standard clockwise_oriented special_circular_sequence; :: thesis: ( f1 is_sequence_on Gauge C,n & ex i being Element of 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 Element of 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 Element of 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 Element of 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 A1009: f1 is_sequence_on Gauge C,n ; :: thesis: ( for i being Element of 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 Element of 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 Element of 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 Element of 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[ Element of NAT ] means f1 | $1 = f2 | $1;
given i1 being Element of NAT such that A1010: ( 1 <= i1 & i1 + 1 <= len (Gauge C,n) ) and
A1011: f1 /. 1 = (Gauge C,n) * i1,(width (Gauge C,n)) and
A1012: f1 /. 2 = (Gauge C,n) * (i1 + 1),(width (Gauge C,n)) and
A1013: ( 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 Element of 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 Element of 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 Element of 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
A1014: for k being Element of 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
A1015: f2 is_sequence_on Gauge C,n ; :: thesis: ( for i being Element of 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 Element of 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 Element of NAT such that A1016: ( 1 <= i2 & i2 + 1 <= len (Gauge C,n) ) and
A1017: f2 /. 1 = (Gauge C,n) * i2,(width (Gauge C,n)) and
A1018: f2 /. 2 = (Gauge C,n) * (i2 + 1),(width (Gauge C,n)) and
A1019: ( 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 Element of 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 A1020: for k being Element of 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
A1021: for k being Element of NAT st S1[k] holds
S1[k + 1]
proof
A1022: len f1 > 4 by GOBOARD7:36;
A1023: ( f1 | 1 = <*(f1 /. 1)*> & f2 | 1 = <*(f2 /. 1)*> ) by FINSEQ_5:23;
A1024: ( i1 = i2 & len f2 > 4 ) by A1010, A1013, A1016, A1019, Th31, GOBOARD7:36;
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A1025: f1 | k = f2 | k ; :: thesis: S1[k + 1]
per cases ( k = 0 or k = 1 or k > 1 ) by NAT_1:26;
suppose A1027: k > 1 ; :: thesis: S1[k + 1]
A1028: ( f1 /. 1 = f1 /. (len f1) & f2 /. 1 = f2 /. (len f2) ) by FINSEQ_6:def 1;
now
per cases ( len f1 > k or k >= len f1 ) ;
suppose A1029: len f1 > k ; :: thesis: S1[k + 1]
set m = k -' 1;
A1030: 1 <= k -' 1 by A1027, NAT_D:49;
then A1031: (k -' 1) + 1 = k by NAT_D:43;
then A1032: front_left_cell f1,(k -' 1),(Gauge C,n) = front_left_cell (f1 | k),(k -' 1),(Gauge C,n) by A1009, A1029, A1030, GOBRD13:43;
A1033: (k -' 1) + (1 + 1) = k + 1 by A1031;
A1034: k + 1 <= len f1 by A1029, NAT_1:13;
then A1040: k + 1 <= len f2 by NAT_1:13;
A1041: front_right_cell f2,(k -' 1),(Gauge C,n) = front_right_cell (f2 | k),(k -' 1),(Gauge C,n) by A1015, A1030, A1031, A1035, GOBRD13:43;
A1042: front_left_cell f2,(k -' 1),(Gauge C,n) = front_left_cell (f2 | k),(k -' 1),(Gauge C,n) by A1015, A1030, A1031, A1035, GOBRD13:43;
A1043: front_right_cell f1,(k -' 1),(Gauge C,n) = front_right_cell (f1 | k),(k -' 1),(Gauge C,n) by A1009, A1029, A1030, A1031, GOBRD13:43;
now end;
hence S1[k + 1] ; :: thesis: verum
end;
end;
end;
hence S1[k + 1] ; :: thesis: verum
end;
end;
end;
A1050: S1[ 0 ] ;
for k being Element of NAT holds S1[k] from NAT_1:sch 1(A1050, A1021);
hence f1 = f2 by Th4; :: thesis: verum