set SS = AllSymbolsOf S;
set II = U -InterpretersOf S;
set AF = AtomicFormulasOf S;
set Strings = ((AllSymbolsOf S) *) \ {{}};
set D = [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):];
set Z = S -TruthEval U;
( [:(U -InterpretersOf S),(AtomicFormulasOf S):] c= [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):] & BOOLEAN c= BOOLEAN )
by ZFMISC_1:96;
then
( dom (S -TruthEval U) c= [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):] & rng (S -TruthEval U) c= BOOLEAN )
by XBOOLE_1:1;
then
S -TruthEval U is Relation of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN
by RELSET_1:4;
then reconsider ZZ = S -TruthEval U as Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) by PARTFUN1:45;
deffunc H1( set , Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)) -> Element of bool [:[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN:] = ((ExIterator $2) +* (NorIterator $2)) +* $2;
defpred S1[ set , set , set ] means for f being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) st $2 = f holds
$3 = H1($1,f);
let IT1, IT2 be Function of NAT,(PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)); ( IT1 . 0 = S -TruthEval U & ( for mm being Element of NAT holds IT1 . (mm + 1) = ((ExIterator (IT1 . mm)) +* (NorIterator (IT1 . mm))) +* (IT1 . mm) ) & IT2 . 0 = S -TruthEval U & ( for mm being Element of NAT holds IT2 . (mm + 1) = ((ExIterator (IT2 . mm)) +* (NorIterator (IT2 . mm))) +* (IT2 . mm) ) implies IT1 = IT2 )
assume B11:
( IT1 . 0 = S -TruthEval U & ( for mm being Element of NAT holds IT1 . (mm + 1) = ((ExIterator (IT1 . mm)) +* (NorIterator (IT1 . mm))) +* (IT1 . mm) ) )
; ( not IT2 . 0 = S -TruthEval U or ex mm being Element of NAT st not IT2 . (mm + 1) = ((ExIterator (IT2 . mm)) +* (NorIterator (IT2 . mm))) +* (IT2 . mm) or IT1 = IT2 )
assume B12:
( IT2 . 0 = S -TruthEval U & ( for mm being Element of NAT holds IT2 . (mm + 1) = ((ExIterator (IT2 . mm)) +* (NorIterator (IT2 . mm))) +* (IT2 . mm) ) )
; IT1 = IT2
B1:
IT1 . 0 = ZZ
by B11;
B2:
for m being Nat holds S1[m,IT1 . m,IT1 . (m + 1)]
B3:
IT2 . 0 = ZZ
by B12;
B4:
for m being Nat holds S1[m,IT2 . m,IT2 . (m + 1)]
B5:
for n being Nat
for x, y1, y2 being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) st S1[n,x,y1] & S1[n,x,y2] holds
y1 = y2
proof
let n be
Nat;
for x, y1, y2 being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) st S1[n,x,y1] & S1[n,x,y2] holds
y1 = y2let x,
y1,
y2 be
Element of
PFuncs (
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN);
( S1[n,x,y1] & S1[n,x,y2] implies y1 = y2 )
assume that C1:
S1[
n,
x,
y1]
and C2:
S1[
n,
x,
y2]
;
y1 = y2
C4:
y2 = H1(
n,
x)
by C2;
thus
y1 = y2
by C1, C4;
verum
end;
thus
IT1 = IT2
from NAT_1:sch 14(B1, B2, B3, B4, B5); verum