let v1, v2 be Function of [:NAT,LTLB_WFF:],BOOLEAN; :: thesis: ( ( for n being Element of NAT holds
( v1 . [n,TFALSUM] = 0 & ( for k being Element of NAT holds
( v1 . [n,(prop k)] = 1 iff prop k in M . n ) ) & ( for p, q being Element of LTLB_WFF holds
( v1 . [n,(p => q)] = (v1 . [n,p]) => (v1 . [n,q]) & ( v1 . [n,(p 'U' q)] = 1 implies ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) ) & ( ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) implies v1 . [n,(p 'U' q)] = 1 ) ) ) ) ) & ( for n being Element of NAT holds
( v2 . [n,TFALSUM] = 0 & ( for k being Element of NAT holds
( v2 . [n,(prop k)] = 1 iff prop k in M . n ) ) & ( for p, q being Element of LTLB_WFF holds
( v2 . [n,(p => q)] = (v2 . [n,p]) => (v2 . [n,q]) & ( v2 . [n,(p 'U' q)] = 1 implies ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) ) & ( ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) implies v2 . [n,(p 'U' q)] = 1 ) ) ) ) ) implies v1 = v2 )

assume A65: for n being Element of NAT holds
( v1 . [n,TFALSUM] = 0 & ( for k being Element of NAT holds
( v1 . [n,(prop k)] = 1 iff prop k in M . n ) ) & ( for p, q being Element of LTLB_WFF holds
( v1 . [n,(p => q)] = (v1 . [n,p]) => (v1 . [n,q]) & ( v1 . [n,(p 'U' q)] = 1 implies ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) ) & ( ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) implies v1 . [n,(p 'U' q)] = 1 ) ) ) ) ; :: thesis: ( ex n being Element of NAT st
( v2 . [n,TFALSUM] = 0 & ( for k being Element of NAT holds
( v2 . [n,(prop k)] = 1 iff prop k in M . n ) ) implies ex p, q being Element of LTLB_WFF st
( v2 . [n,(p => q)] = (v2 . [n,p]) => (v2 . [n,q]) & ( v2 . [n,(p 'U' q)] = 1 implies ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) ) implies ( ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) & not v2 . [n,(p 'U' q)] = 1 ) ) ) or v1 = v2 )

assume A66: for n being Element of NAT holds
( v2 . [n,TFALSUM] = 0 & ( for k being Element of NAT holds
( v2 . [n,(prop k)] = 1 iff prop k in M . n ) ) & ( for p, q being Element of LTLB_WFF holds
( v2 . [n,(p => q)] = (v2 . [n,p]) => (v2 . [n,q]) & ( v2 . [n,(p 'U' q)] = 1 implies ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) ) & ( ex i being Element of NAT st
( 0 < i & v2 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1 ) ) implies v2 . [n,(p 'U' q)] = 1 ) ) ) ) ; :: thesis: v1 = v2
thus v1 = v2 :: thesis: verum
proof
defpred S1[ Element of LTLB_WFF ] means for n being Element of NAT holds v1 . [n,$1] = v2 . [n,$1];
A67: for n being Element of NAT holds S1[ prop n]
proof
let k be Element of NAT ; :: thesis: S1[ prop k]
now :: thesis: for n being Element of NAT holds v1 . [n,(prop k)] = v2 . [n,(prop k)]
let n be Element of NAT ; :: thesis: v1 . [b1,(prop k)] = v2 . [b1,(prop k)]
per cases ( prop k in M . n or not prop k in M . n ) ;
suppose A68: prop k in M . n ; :: thesis: v1 . [b1,(prop k)] = v2 . [b1,(prop k)]
hence v1 . [n,(prop k)] = 1 by A65
.= v2 . [n,(prop k)] by A66, A68 ;
:: thesis: verum
end;
suppose A69: not prop k in M . n ; :: thesis: v1 . [b1,(prop k)] = v2 . [b1,(prop k)]
end;
end;
end;
hence S1[ prop k] ; :: thesis: verum
end;
A70: for p, q being Element of LTLB_WFF st S1[p] & S1[q] holds
( S1[p 'U' q] & S1[p => q] )
proof
let p, q be Element of LTLB_WFF ; :: thesis: ( S1[p] & S1[q] implies ( S1[p 'U' q] & S1[p => q] ) )
assume that
A71: S1[p] and
A72: S1[q] ; :: thesis: ( S1[p 'U' q] & S1[p => q] )
thus S1[p 'U' q] :: thesis: S1[p => q]
proof
let n be Element of NAT ; :: thesis: v1 . [n,(p 'U' q)] = v2 . [n,(p 'U' q)]
per cases ( ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) or for i being Element of NAT holds
( not 0 < i or not v1 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v1 . [(n + j),p] = 1 ) ) )
;
suppose A73: ex i being Element of NAT st
( 0 < i & v1 . [(n + i),q] = 1 & ( for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ) ) ; :: thesis: v1 . [n,(p 'U' q)] = v2 . [n,(p 'U' q)]
then consider i being Element of NAT such that
A74: 0 < i and
A75: v1 . [(n + i),q] = 1 and
A76: for j being Element of NAT st 1 <= j & j < i holds
v1 . [(n + j),p] = 1 ;
A77: v2 . [(n + i),q] = 1 by A72, A75;
A78: now :: thesis: for j being Element of NAT st 1 <= j & j < i holds
v2 . [(n + j),p] = 1
let j be Element of NAT ; :: thesis: ( 1 <= j & j < i implies v2 . [(n + j),p] = 1 )
assume ( 1 <= j & j < i ) ; :: thesis: v2 . [(n + j),p] = 1
then v1 . [(n + j),p] = 1 by A76;
hence v2 . [(n + j),p] = 1 by A71; :: thesis: verum
end;
thus v1 . [n,(p 'U' q)] = 1 by A65, A73
.= v2 . [n,(p 'U' q)] by A66, A74, A77, A78 ; :: thesis: verum
end;
suppose A79: for i being Element of NAT holds
( not 0 < i or not v1 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v1 . [(n + j),p] = 1 ) ) ; :: thesis: v1 . [n,(p 'U' q)] = v2 . [n,(p 'U' q)]
A80: now :: thesis: for i being Element of NAT holds
( not 0 < i or not v2 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v2 . [(n + j),p] = 1 ) )
let i be Element of NAT ; :: thesis: ( not 0 < b1 or not v2 . [(n + b1),q] = 1 or ex j being Element of NAT st
( 1 <= b2 & b2 < j & not v2 . [(n + b2),p] = 1 ) )

per cases ( not 0 < i or not v1 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v1 . [(n + j),p] = 1 ) )
by A79;
suppose not 0 < i ; :: thesis: ( not 0 < b1 or not v2 . [(n + b1),q] = 1 or ex j being Element of NAT st
( 1 <= b2 & b2 < j & not v2 . [(n + b2),p] = 1 ) )

hence ( not 0 < i or not v2 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v2 . [(n + j),p] = 1 ) ) ; :: thesis: verum
end;
suppose not v1 . [(n + i),q] = 1 ; :: thesis: ( not 0 < b1 or not v2 . [(n + b1),q] = 1 or ex j being Element of NAT st
( 1 <= b2 & b2 < j & not v2 . [(n + b2),p] = 1 ) )

hence ( not 0 < i or not v2 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v2 . [(n + j),p] = 1 ) ) by A72; :: thesis: verum
end;
suppose ex j being Element of NAT st
( 1 <= j & j < i & not v1 . [(n + j),p] = 1 ) ; :: thesis: ( not 0 < b1 or not v2 . [(n + b1),q] = 1 or ex j being Element of NAT st
( 1 <= b2 & b2 < j & not v2 . [(n + b2),p] = 1 ) )

then consider j being Element of NAT such that
A81: ( 1 <= j & j < i ) and
A82: not v1 . [(n + j),p] = 1 ;
not v2 . [(n + j),p] = 1 by A71, A82;
hence ( not 0 < i or not v2 . [(n + i),q] = 1 or ex j being Element of NAT st
( 1 <= j & j < i & not v2 . [(n + j),p] = 1 ) ) by A81; :: thesis: verum
end;
end;
end;
v1 . [n,(p 'U' q)] = 0 by XBOOLEAN:def 3, A65, A79;
hence v1 . [n,(p 'U' q)] = v2 . [n,(p 'U' q)] by A66, XBOOLEAN:def 3, A80; :: thesis: verum
end;
end;
end;
thus S1[p => q] :: thesis: verum
proof
let n be Element of NAT ; :: thesis: v1 . [n,(p => q)] = v2 . [n,(p => q)]
thus v1 . [n,(p => q)] = (v1 . [n,p]) => (v1 . [n,q]) by A65
.= (v2 . [n,p]) => (v1 . [n,q]) by A71
.= (v2 . [n,p]) => (v2 . [n,q]) by A72
.= v2 . [n,(p => q)] by A66 ; :: thesis: verum
end;
end;
now :: thesis: for n being Element of NAT holds v1 . [n,TFALSUM] = v2 . [n,TFALSUM]
let n be Element of NAT ; :: thesis: v1 . [n,TFALSUM] = v2 . [n,TFALSUM]
thus v1 . [n,TFALSUM] = 0 by A65
.= v2 . [n,TFALSUM] by A66 ; :: thesis: verum
end;
then A83: S1[ TFALSUM ] ;
A84: for A being Element of LTLB_WFF holds S1[A] from HILBERT2:sch 2(A83, A67, A70);
A85: for x being Element of [:NAT,LTLB_WFF:] st x in dom v1 holds
v1 . x = v2 . x
proof
let x be Element of [:NAT,LTLB_WFF:]; :: thesis: ( x in dom v1 implies v1 . x = v2 . x )
consider y, z being object such that
A86: y in NAT and
A87: z in LTLB_WFF and
A88: x = [y,z] by ZFMISC_1:def 2;
reconsider y1 = y as Element of NAT by A86;
assume x in dom v1 ; :: thesis: v1 . x = v2 . x
thus v1 . x = v2 . x by A84, A86, A87, A88; :: thesis: verum
reconsider z1 = z as Element of LTLB_WFF by A87;
end;
dom v1 = [:NAT,LTLB_WFF:] by FUNCT_2:def 1
.= dom v2 by FUNCT_2:def 1 ;
hence v1 = v2 by A85, PARTFUN1:5; :: thesis: verum
end;