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 )
;
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 sequence of (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 A3:
( 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 A4:
( 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
A5:
IT1 . 0 = ZZ
by A3;
A6:
for m being Nat holds S1[m,IT1 . m,IT1 . (m + 1)]
A7:
IT2 . 0 = ZZ
by A4;
A8:
for m being Nat holds S1[m,IT2 . m,IT2 . (m + 1)]
A9:
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 A10:
S1[
n,
x,
y1]
and A11:
S1[
n,
x,
y2]
;
y1 = y2
A12:
y2 = H1(
n,
x)
by A11;
thus
y1 = y2
by A10, A12;
verum
end;
thus
IT1 = IT2
from NAT_1:sch 14(A5, A6, A7, A8, A9); verum