begin
:: deftheorem defines -deltaInterpreter FOMODEL2:def 1 :
for U being non empty set holds U -deltaInterpreter = chi (((U -concatenation) .: (id (1 -tuples_on U))),(2 -tuples_on U));
:: deftheorem DefInterpreter1 defines Interpreter FOMODEL2:def 2 :
for S being Language
for U being non empty set
for s being ofAtomicFormula Element of S
for b4 being set holds
( ( s is relational implies ( b4 is Interpreter of s,U iff b4 is Function of ((abs (ar s)) -tuples_on U),BOOLEAN ) ) & ( not s is relational implies ( b4 is Interpreter of s,U iff b4 is Function of ((abs (ar s)) -tuples_on U),U ) ) );
:: deftheorem DefInterpreter2 defines Interpreter FOMODEL2:def 3 :
for S being Language
for U being non empty set
for b3 being Function holds
( b3 is Interpreter of S,U iff for s being own Element of S holds b3 . s is Interpreter of s,U );
:: deftheorem DefInterpreterLike defines -interpreter-like FOMODEL2:def 4 :
for S being Language
for U being non empty set
for f being Function holds
( f is S,U -interpreter-like iff ( f is Interpreter of S,U & f is Function-yielding ) );
Lm2:
for S being Language
for U being non empty set
for f being Interpreter of S,U holds OwnSymbolsOf S c= dom f
Lm18:
for S being Language
for U being non empty set
for f being Function st f is S,U -interpreter-like holds
OwnSymbolsOf S c= dom f
:: deftheorem defines ReassignIn FOMODEL2:def 5 :
for f being Function
for x, y being set holds (x,y) ReassignIn f = f +* (x .--> ({} .--> y));
:: deftheorem Def6 defines ^^^ FOMODEL2:def 6 :
for f being Function-yielding Function
for g, b3 being Function holds
( b3 = ^^^g,f__ iff ( dom b3 = dom f & ( for x being set st x in dom f holds
b3 . x = g * (f . x) ) ) );
:: deftheorem Def7 defines ^^^ FOMODEL2:def 7 :
for f being Function-yielding Function
for g, b3 being Function holds
( b3 = ^^^f,g__ iff ( dom b3 = (dom f) /\ (dom g) & ( for x being set st x in dom b3 holds
b3 . x = (f . x) . (g . x) ) ) );
Lm15:
for U being non empty set
for S being Language
for I being b2,b1 -interpreter-like Function
for t being termal string of S holds (abs (ar t)) -tuples_on U = dom (I . ((S -firstChar) . t))
by FUNCT_2:def 1;
theorem
Lm20:
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for xx being Function of (AllTermsOf S),U holds
( ^^^(I * (S -firstChar)),^^^xx,(S -subTerms)____ is Element of Funcs ((AllTermsOf S),U) & AllTermsOf S c= dom (I * (S -firstChar)) )
definition
let S be
Language;
let U be non
empty set ;
let u be
Element of
U;
let I be
S,
U -interpreter-like Function;
func (
I,
u)
-TermEval -> Function of
NAT,
(Funcs ((AllTermsOf S),U)) means :
DefTermEval1:
(
it . 0 = (AllTermsOf S) --> u & ( for
mm being
Element of
NAT holds
it . (mm + 1) = ^^^(I * (S -firstChar)),^^^(it . mm),(S -subTerms)____ ) );
existence
ex b1 being Function of NAT,(Funcs ((AllTermsOf S),U)) st
( b1 . 0 = (AllTermsOf S) --> u & ( for mm being Element of NAT holds b1 . (mm + 1) = ^^^(I * (S -firstChar)),^^^(b1 . mm),(S -subTerms)____ ) )
uniqueness
for b1, b2 being Function of NAT,(Funcs ((AllTermsOf S),U)) st b1 . 0 = (AllTermsOf S) --> u & ( for mm being Element of NAT holds b1 . (mm + 1) = ^^^(I * (S -firstChar)),^^^(b1 . mm),(S -subTerms)____ ) & b2 . 0 = (AllTermsOf S) --> u & ( for mm being Element of NAT holds b2 . (mm + 1) = ^^^(I * (S -firstChar)),^^^(b2 . mm),(S -subTerms)____ ) holds
b1 = b2
end;
:: deftheorem DefTermEval1 defines -TermEval FOMODEL2:def 8 :
for S being Language
for U being non empty set
for u being Element of U
for I being b1,b2 -interpreter-like Function
for b5 being Function of NAT,(Funcs ((AllTermsOf S),U)) holds
( b5 = (I,u) -TermEval iff ( b5 . 0 = (AllTermsOf S) --> u & ( for mm being Element of NAT holds b5 . (mm + 1) = ^^^(I * (S -firstChar)),^^^(b5 . mm),(S -subTerms)____ ) ) );
Lm21:
for S being Language
for U being non empty set
for u being Element of U
for I being b1,b2 -interpreter-like Function
for t being termal string of S
for mm being Element of NAT holds
( (((I,u) -TermEval) . (mm + 1)) . t = (I . ((S -firstChar) . t)) . ((((I,u) -TermEval) . mm) * (SubTerms t)) & ( t is 0 -termal implies (((I,u) -TermEval) . (mm + 1)) . t = (I . ((S -firstChar) . t)) . {} ) )
Lm1:
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for u1, u2 being Element of U
for m being Nat
for t being b6 -termal string of S
for n being Nat holds (((I,u1) -TermEval) . (m + 1)) . t = (((I,u2) -TermEval) . ((m + 1) + n)) . t
:: deftheorem DefTermEval2 defines -TermEval FOMODEL2:def 9 :
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for t being Element of AllTermsOf S
for b5 being Element of U holds
( b5 = I -TermEval t iff for u1 being Element of U
for mm being Element of NAT st t in (S -termsOfMaxDepth) . mm holds
b5 = (((I,u1) -TermEval) . (mm + 1)) . t );
:: deftheorem DefTermEval3 defines -TermEval FOMODEL2:def 10 :
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for b4 being Function of (AllTermsOf S),U holds
( b4 = I -TermEval iff for t being Element of AllTermsOf S holds b4 . t = I -TermEval t );
:: deftheorem defines === FOMODEL2:def 11 :
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function holds I === = I +* ((TheEqSymbOf S) .--> (U -deltaInterpreter));
:: deftheorem DefExtension defines -extension FOMODEL2:def 12 :
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for x being set holds
( x is I -extension iff x = I === );
:: deftheorem defines -AtomicEval FOMODEL2:def 13 :
for S being Language
for U being non empty set
for I being b1,b2 -interpreter-like Function
for phi being 0wff string of S holds I -AtomicEval phi = ((I ===) . ((S -firstChar) . phi)) . ((I -TermEval) * (SubTerms phi));
:: deftheorem defines -InterpretersOf FOMODEL2:def 14 :
for S being Language
for U being non empty set holds U -InterpretersOf S = { f where f is Element of Funcs ((OwnSymbolsOf S),(PFuncs ((U *),(U \/ BOOLEAN)))) : f is S,U -interpreter-like } ;
definition
let S be
Language;
let U be non
empty set ;
func S -TruthEval U -> Function of
[:(U -InterpretersOf S),(AtomicFormulasOf S):],
BOOLEAN means :
DefTruth6:
for
I being
Element of
U -InterpretersOf S for
phi being
Element of
AtomicFormulasOf S holds
it . (
I,
phi)
= I -AtomicEval phi;
existence
ex b1 being Function of [:(U -InterpretersOf S),(AtomicFormulasOf S):],BOOLEAN st
for I being Element of U -InterpretersOf S
for phi being Element of AtomicFormulasOf S holds b1 . (I,phi) = I -AtomicEval phi
uniqueness
for b1, b2 being Function of [:(U -InterpretersOf S),(AtomicFormulasOf S):],BOOLEAN st ( for I being Element of U -InterpretersOf S
for phi being Element of AtomicFormulasOf S holds b1 . (I,phi) = I -AtomicEval phi ) & ( for I being Element of U -InterpretersOf S
for phi being Element of AtomicFormulasOf S holds b2 . (I,phi) = I -AtomicEval phi ) holds
b1 = b2
end;
:: deftheorem DefTruth6 defines -TruthEval FOMODEL2:def 15 :
for S being Language
for U being non empty set
for b3 being Function of [:(U -InterpretersOf S),(AtomicFormulasOf S):],BOOLEAN holds
( b3 = S -TruthEval U iff for I being Element of U -InterpretersOf S
for phi being Element of AtomicFormulasOf S holds b3 . (I,phi) = I -AtomicEval phi );
:: deftheorem DefExFunc defines -ExFunctor FOMODEL2:def 16 :
for S being Language
for U being non empty set
for I being Element of U -InterpretersOf S
for f being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN
for phi being Element of ((AllSymbolsOf S) *) \ {{}} holds
( ( ex u being Element of U ex v being literal Element of S st
( phi . 1 = v & f . (((v,u) ReassignIn I),(phi /^ 1)) = TRUE ) implies f -ExFunctor (I,phi) = TRUE ) & ( ( for u being Element of U
for v being literal Element of S holds
( not phi . 1 = v or not f . (((v,u) ReassignIn I),(phi /^ 1)) = TRUE ) ) implies f -ExFunctor (I,phi) = FALSE ) );
definition
let S be
Language;
let U be non
empty set ;
let g be
Element of
PFuncs (
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN);
func ExIterator g -> PartFunc of
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN means :
DefExIter:
( ( for
x being
Element of
U -InterpretersOf S for
y being
Element of
((AllSymbolsOf S) *) \ {{}} holds
(
[x,y] in dom it iff ex
v being
literal Element of
S ex
w being
string of
S st
(
[x,w] in dom g &
y = <*v*> ^ w ) ) ) & ( for
x being
Element of
U -InterpretersOf S for
y being
Element of
((AllSymbolsOf S) *) \ {{}} st
[x,y] in dom it holds
it . (
x,
y)
= g -ExFunctor (
x,
y) ) );
existence
ex b1 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st
( ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b1 iff ex v being literal Element of S ex w being string of S st
( [x,w] in dom g & y = <*v*> ^ w ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b1 holds
b1 . (x,y) = g -ExFunctor (x,y) ) )
uniqueness
for b1, b2 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b1 iff ex v being literal Element of S ex w being string of S st
( [x,w] in dom g & y = <*v*> ^ w ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b1 holds
b1 . (x,y) = g -ExFunctor (x,y) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b2 iff ex v being literal Element of S ex w being string of S st
( [x,w] in dom g & y = <*v*> ^ w ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b2 holds
b2 . (x,y) = g -ExFunctor (x,y) ) holds
b1 = b2
end;
:: deftheorem DefExIter defines ExIterator FOMODEL2:def 17 :
for S being Language
for U being non empty set
for g being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)
for b4 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN holds
( b4 = ExIterator g iff ( ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b4 iff ex v being literal Element of S ex w being string of S st
( [x,w] in dom g & y = <*v*> ^ w ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b4 holds
b4 . (x,y) = g -ExFunctor (x,y) ) ) );
definition
let S be
Language;
let U be non
empty set ;
let f be
PartFunc of
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN;
let I be
Element of
U -InterpretersOf S;
let phi be
Element of
((AllSymbolsOf S) *) \ {{}};
func f -NorFunctor (
I,
phi)
-> Element of
BOOLEAN equals :
DefNew:
TRUE if ex
w1,
w2 being
Element of
((AllSymbolsOf S) *) \ {{}} st
(
[I,w1] in dom f &
f . (
I,
w1)
= FALSE &
f . (
I,
w2)
= FALSE &
phi = (<*(TheNorSymbOf S)*> ^ w1) ^ w2 )
otherwise FALSE ;
coherence
( ( ex w1, w2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( [I,w1] in dom f & f . (I,w1) = FALSE & f . (I,w2) = FALSE & phi = (<*(TheNorSymbOf S)*> ^ w1) ^ w2 ) implies TRUE is Element of BOOLEAN ) & ( ( for w1, w2 being Element of ((AllSymbolsOf S) *) \ {{}} holds
( not [I,w1] in dom f or not f . (I,w1) = FALSE or not f . (I,w2) = FALSE or not phi = (<*(TheNorSymbOf S)*> ^ w1) ^ w2 ) ) implies FALSE is Element of BOOLEAN ) )
;
consistency
for b1 being Element of BOOLEAN holds verum
;
end;
:: deftheorem DefNew defines -NorFunctor FOMODEL2:def 18 :
for S being Language
for U being non empty set
for f being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN
for I being Element of U -InterpretersOf S
for phi being Element of ((AllSymbolsOf S) *) \ {{}} holds
( ( ex w1, w2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( [I,w1] in dom f & f . (I,w1) = FALSE & f . (I,w2) = FALSE & phi = (<*(TheNorSymbOf S)*> ^ w1) ^ w2 ) implies f -NorFunctor (I,phi) = TRUE ) & ( ( for w1, w2 being Element of ((AllSymbolsOf S) *) \ {{}} holds
( not [I,w1] in dom f or not f . (I,w1) = FALSE or not f . (I,w2) = FALSE or not phi = (<*(TheNorSymbOf S)*> ^ w1) ^ w2 ) ) implies f -NorFunctor (I,phi) = FALSE ) );
definition
let S be
Language;
let U be non
empty set ;
let g be
Element of
PFuncs (
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN);
func NorIterator g -> PartFunc of
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN means :
DefNorIter:
( ( for
x being
Element of
U -InterpretersOf S for
y being
Element of
((AllSymbolsOf S) *) \ {{}} holds
(
[x,y] in dom it iff ex
phi1,
phi2 being
Element of
((AllSymbolsOf S) *) \ {{}} st
(
y = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2 &
[x,phi1] in dom g &
[x,phi2] in dom g ) ) ) & ( for
x being
Element of
U -InterpretersOf S for
y being
Element of
((AllSymbolsOf S) *) \ {{}} st
[x,y] in dom it holds
it . (
x,
y)
= g -NorFunctor (
x,
y) ) );
existence
ex b1 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st
( ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b1 iff ex phi1, phi2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( y = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2 & [x,phi1] in dom g & [x,phi2] in dom g ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b1 holds
b1 . (x,y) = g -NorFunctor (x,y) ) )
uniqueness
for b1, b2 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b1 iff ex phi1, phi2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( y = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2 & [x,phi1] in dom g & [x,phi2] in dom g ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b1 holds
b1 . (x,y) = g -NorFunctor (x,y) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b2 iff ex phi1, phi2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( y = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2 & [x,phi1] in dom g & [x,phi2] in dom g ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b2 holds
b2 . (x,y) = g -NorFunctor (x,y) ) holds
b1 = b2
end;
:: deftheorem DefNorIter defines NorIterator FOMODEL2:def 19 :
for S being Language
for U being non empty set
for g being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)
for b4 being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN holds
( b4 = NorIterator g iff ( ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} holds
( [x,y] in dom b4 iff ex phi1, phi2 being Element of ((AllSymbolsOf S) *) \ {{}} st
( y = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2 & [x,phi1] in dom g & [x,phi2] in dom g ) ) ) & ( for x being Element of U -InterpretersOf S
for y being Element of ((AllSymbolsOf S) *) \ {{}} st [x,y] in dom b4 holds
b4 . (x,y) = g -NorFunctor (x,y) ) ) );
definition
let S be
Language;
let U be non
empty set ;
func (
S,
U)
-TruthEval -> Function of
NAT,
(PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)) means :
DefTruth1:
(
it . 0 = S -TruthEval U & ( for
mm being
Element of
NAT holds
it . (mm + 1) = ((ExIterator (it . mm)) +* (NorIterator (it . mm))) +* (it . mm) ) );
existence
ex b1 being Function of NAT,(PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)) st
( b1 . 0 = S -TruthEval U & ( for mm being Element of NAT holds b1 . (mm + 1) = ((ExIterator (b1 . mm)) +* (NorIterator (b1 . mm))) +* (b1 . mm) ) )
uniqueness
for b1, b2 being Function of NAT,(PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)) st b1 . 0 = S -TruthEval U & ( for mm being Element of NAT holds b1 . (mm + 1) = ((ExIterator (b1 . mm)) +* (NorIterator (b1 . mm))) +* (b1 . mm) ) & b2 . 0 = S -TruthEval U & ( for mm being Element of NAT holds b2 . (mm + 1) = ((ExIterator (b2 . mm)) +* (NorIterator (b2 . mm))) +* (b2 . mm) ) holds
b1 = b2
end;
:: deftheorem DefTruth1 defines -TruthEval FOMODEL2:def 20 :
for S being Language
for U being non empty set
for b3 being Function of NAT,(PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN)) holds
( b3 = (S,U) -TruthEval iff ( b3 . 0 = S -TruthEval U & ( for mm being Element of NAT holds b3 . (mm + 1) = ((ExIterator (b3 . mm)) +* (NorIterator (b3 . mm))) +* (b3 . mm) ) ) );
theorem Th2:
definition
let S be
Language;
let m be
Nat;
let U be non
empty set ;
func (
S,
U)
-TruthEval m -> Element of
PFuncs (
[:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],
BOOLEAN)
means :
DefTruth2:
for
mm being
Element of
NAT st
m = mm holds
it = ((S,U) -TruthEval) . mm;
existence
ex b1 being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) st
for mm being Element of NAT st m = mm holds
b1 = ((S,U) -TruthEval) . mm
uniqueness
for b1, b2 being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) st ( for mm being Element of NAT st m = mm holds
b1 = ((S,U) -TruthEval) . mm ) & ( for mm being Element of NAT st m = mm holds
b2 = ((S,U) -TruthEval) . mm ) holds
b1 = b2
end;
:: deftheorem DefTruth2 defines -TruthEval FOMODEL2:def 21 :
for S being Language
for m being Nat
for U being non empty set
for b4 being Element of PFuncs ([:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN) holds
( b4 = (S,U) -TruthEval m iff for mm being Element of NAT st m = mm holds
b4 = ((S,U) -TruthEval) . mm );
Lm26:
for m being Nat
for x being set
for S being Language
for U being non empty set
for n being Nat st x in dom ((S,U) -TruthEval m) holds
( x in dom ((S,U) -TruthEval (m + n)) & ((S,U) -TruthEval m) . x = ((S,U) -TruthEval (m + n)) . x )
Lm25:
for x, X, Y, Z being set holds
( x in (X \/ Y) \/ Z iff ( x in X or x in Y or x in Z ) )
Lm23:
for S being Language
for U1, U2 being non empty set
for m being Nat
for I1 being Element of U1 -InterpretersOf S
for I2 being Element of U2 -InterpretersOf S
for w being string of S st [I1,w] in dom ((S,U1) -TruthEval m) holds
[I2,w] in dom ((S,U2) -TruthEval m)
Lm22:
for mm being Element of NAT
for S being Language
for U being non empty set holds curry (((S,U) -TruthEval) . mm) is Function of (U -InterpretersOf S),(PFuncs ((((AllSymbolsOf S) *) \ {{}}),BOOLEAN))
Lm28:
for m being Nat
for S being Language
for U being non empty set holds curry ((S,U) -TruthEval m) is Function of (U -InterpretersOf S),(PFuncs ((((AllSymbolsOf S) *) \ {{}}),BOOLEAN))
:: deftheorem defines -TruthEval FOMODEL2:def 22 :
for S being Language
for U being non empty set
for m being Nat
for I being Element of U -InterpretersOf S holds (I,m) -TruthEval = (curry ((S,U) -TruthEval m)) . I;
Lm29:
for m, n being Nat
for S being Language
for U being non empty set
for I being Element of U -InterpretersOf S holds (I,m) -TruthEval c= (I,(m + n)) -TruthEval
Lm24:
for m being Nat
for S being Language
for U1, U2 being non empty set
for I1 being Element of U1 -InterpretersOf S
for I2 being Element of U2 -InterpretersOf S holds dom ((I1,m) -TruthEval) c= dom ((I2,m) -TruthEval)
Lm27:
for mm being Element of NAT
for S being Language
for U1, U2 being non empty set
for I1 being Element of U1 -InterpretersOf S
for I2 being Element of U2 -InterpretersOf S holds dom ((I1,mm) -TruthEval) = dom ((I2,mm) -TruthEval)
:: deftheorem DefFormula1 defines -formulasOfMaxDepth FOMODEL2:def 23 :
for S being Language
for m being Nat
for b3 being Subset of (((AllSymbolsOf S) *) \ {{}}) holds
( b3 = S -formulasOfMaxDepth m iff for U being non empty set
for I being Element of U -InterpretersOf S
for mm being Element of NAT st m = mm holds
b3 = dom ((I,mm) -TruthEval) );
Lm4:
for m, n being Nat
for S being Language holds S -formulasOfMaxDepth m c= S -formulasOfMaxDepth (m + n)
Lm3:
for S being Language holds S -formulasOfMaxDepth 0 = AtomicFormulasOf S
:: deftheorem DefWff1 defines -wff FOMODEL2:def 24 :
for S being Language
for m being Nat
for w being string of S holds
( w is m -wff iff w in S -formulasOfMaxDepth m );
:: deftheorem DefWff2 defines wff FOMODEL2:def 25 :
for S being Language
for w being string of S holds
( w is wff iff ex m being Nat st w is m -wff );
:: deftheorem DefTruth4 defines -TruthEval FOMODEL2:def 26 :
for S being Language
for U being non empty set
for I being Element of U -InterpretersOf S
for w being wff string of S
for b5 being Element of BOOLEAN holds
( b5 = I -TruthEval w iff for m being Nat st w is m -wff holds
b5 = ((I,m) -TruthEval) . w );
:: deftheorem defines AllFormulasOf FOMODEL2:def 27 :
for S being Language holds AllFormulasOf S = { w where w is string of S : ex m being Nat st w is m -wff } ;
theorem Th3:
theorem
theorem
theorem
for
x,
X,
Y,
Z being
set holds
(
x in (X \/ Y) \/ Z iff (
x in X or
x in Y or
x in Z ) )
by Lm25;
theorem
:: deftheorem DefFormulas defines -formulasOfMaxDepth FOMODEL2:def 28 :
for S being Language
for m being Nat
for b3 being Subset of (((AllSymbolsOf S) *) \ {{}}) holds
( b3 = S -formulasOfMaxDepth m iff for U being non empty set
for I being Element of U -InterpretersOf S holds b3 = dom ((I,m) -TruthEval) );
Lm31:
for m being Nat
for S being Language
for U being non empty set holds curry ((S,U) -TruthEval m) is Function of (U -InterpretersOf S),(Funcs ((S -formulasOfMaxDepth m),BOOLEAN))
theorem Lm32:
:: deftheorem defines -ExFormulasOf FOMODEL2:def 29 :
for S being Language
for m being Nat holds m -ExFormulasOf S = { (<*v*> ^ phi) where v is Element of LettersOf S, phi is Element of S -formulasOfMaxDepth m : verum } ;
:: deftheorem defines -NorFormulasOf FOMODEL2:def 30 :
for S being Language
for m being Nat holds m -NorFormulasOf S = { ((<*(TheNorSymbOf S)*> ^ phi1) ^ phi2) where phi1, phi2 is Element of S -formulasOfMaxDepth m : verum } ;
Lm33:
for m being Nat
for S being Language
for U being non empty set holds dom (NorIterator ((S,U) -TruthEval m)) = [:(U -InterpretersOf S),(m -NorFormulasOf S):]
Lm35:
for m being Nat
for S being Language
for U being non empty set holds dom (ExIterator ((S,U) -TruthEval m)) = [:(U -InterpretersOf S),(m -ExFormulasOf S):]
theorem Lm37:
theorem Th10:
:: deftheorem DefDepth defines Depth FOMODEL2:def 31 :
for S being Language
for phi being wff string of S
for b3 being Nat holds
( b3 = Depth phi iff ( phi is b3 -wff & ( for n being Nat st phi is n -wff holds
b3 <= n ) ) );
Lm16:
for m being Nat
for S being Language
for phi being wff string of S st phi in (S -formulasOfMaxDepth m) \ (S -formulasOfMaxDepth 0) holds
ex n being Nat st
( phi is n + 1 -wff & not phi is n -wff & n + 1 <= m )
Lm8:
for m being Nat
for S being Language
for w being string of S st w is m + 1 -wff & not w is m -wff & ( for v being literal Element of S
for phi being b1 -wff string of S holds not w = <*v*> ^ phi ) holds
ex phi1, phi2 being b1 -wff string of S st w = (<*(TheNorSymbOf S)*> ^ phi1) ^ phi2
:: deftheorem DefExal defines exal FOMODEL2:def 32 :
for S being Language
for w being string of S holds
( w is exal iff (S -firstChar) . w is literal );
Lm5:
for S being Language
for phi being wff string of S st not phi is 0wff holds
Depth phi <> 0
Lm30:
for S being Language
for w being string of S st w is wff & not w is 0wff & not w . 1 in LettersOf S holds
w . 1 = TheNorSymbOf S
Lm6:
for m being Nat
for S being Language holds S -formulasOfMaxDepth m is S -prefix
Lm11:
for S being Language holds AllFormulasOf S is S -prefix
theorem
theorem
Lm12:
for U being non empty set holds (U -deltaInterpreter) " {1} = (U -concatenation) .: (id (1 -tuples_on U))
theorem Th13:
theorem Th14:
theorem
Lm14:
for m being Nat
for S being Language
for phi being wff string of S st Depth phi = m + 1 & phi is exal holds
phi in m -ExFormulasOf S
Lm44:
for S being Language
for l being literal Element of S
for phi1 being wff string of S holds Depth (<*l*> ^ phi1) > Depth phi1
Lm13:
for m being Nat
for S being Language
for phi being wff string of S st Depth phi = m + 1 & not phi is exal holds
phi in m -NorFormulasOf S
theorem Th16:
Lm39:
for S being Language
for phi1, phi2 being wff string of S holds
( Depth ((<*(TheNorSymbOf S)*> ^ phi1) ^ phi2) > Depth phi1 & Depth ((<*(TheNorSymbOf S)*> ^ phi1) ^ phi2) > Depth phi2 )
Lm40:
for S being Language
for phi1, phi2 being wff string of S holds Depth ((<*(TheNorSymbOf S)*> ^ phi1) ^ phi2) = (max ((Depth phi1),(Depth phi2))) + 1
Lm46:
for S being Language
for U being non empty set
for I being Relation st I in U -InterpretersOf S holds
dom I = OwnSymbolsOf S
Lm41:
for m being Nat
for S being Language
for w being string of S
for U being non empty set
for I being Element of U -InterpretersOf S st w is m -wff holds
((I,m) -TruthEval) . w = ((S,U) -TruthEval m) . [I,w]
Lm43:
for m being Nat
for S being Language
for U being non empty set
for l being literal Element of S
for phi1 being wff string of S
for I being Element of U -InterpretersOf S
for f being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st dom f = [:(U -InterpretersOf S),(S -formulasOfMaxDepth m):] & phi1 is m -wff holds
( f -ExFunctor (I,(<*l*> ^ phi1)) = 1 iff ex u being Element of U st f . (((l,u) ReassignIn I),phi1) = TRUE )
Lm47:
for S being Language
for U being non empty set
for l being literal Element of S
for phi being wff string of S
for I being Element of U -InterpretersOf S holds
( I -TruthEval (<*l*> ^ phi) = TRUE iff ex u being Element of U st ((l,u) ReassignIn I) -TruthEval phi = 1 )
Lm38:
for m being Nat
for S being Language
for w2 being string of S
for U being non empty set
for phi1 being wff string of S
for I being Element of U -InterpretersOf S
for f being PartFunc of [:(U -InterpretersOf S),(((AllSymbolsOf S) *) \ {{}}):],BOOLEAN st dom f = [:(U -InterpretersOf S),(S -formulasOfMaxDepth m):] & phi1 is m -wff holds
( f -NorFunctor (I,((<*(TheNorSymbOf S)*> ^ phi1) ^ w2)) = 1 iff ( f . (I,phi1) = 0 & f . (I,w2) = 0 ) )
Lm45:
for S being Language
for U being non empty set
for phi1, phi2 being wff string of S
for I being Element of U -InterpretersOf S holds
( I -TruthEval ((<*(TheNorSymbOf S)*> ^ phi1) ^ phi2) = TRUE iff ( I -TruthEval phi1 = FALSE & I -TruthEval phi2 = FALSE ) )
:: deftheorem defines xnot FOMODEL2:def 33 :
for S being Language
for w being string of S holds xnot w = (<*(TheNorSymbOf S)*> ^ w) ^ w;
:: deftheorem DefCover defines -mincover FOMODEL2:def 34 :
for S being Language
for X being set holds
( X is S -mincover iff for phi being wff string of S holds
( phi in X iff not xnot phi in X ) );
theorem Th17:
theorem
theorem
theorem Th20:
theorem Th21:
definition
let S be
Language;
let phi be
wff string of
S;
set F =
S -firstChar ;
set d =
Depth phi;
set s =
(S -firstChar) . phi;
set L =
LettersOf S;
set N =
TheNorSymbOf S;
set FF =
AllFormulasOf S;
set SS =
AllSymbolsOf S;
defpred S1[
set ]
means ex
phi1 being
wff string of
S ex
p being
FinSequence st
(
p is
AllSymbolsOf S -valued & $1
= [phi1,p] &
phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p );
func SubWffsOf phi -> set means :
DefSub1:
ex
phi1 being
wff string of
S ex
p being
FinSequence st
(
p is
AllSymbolsOf S -valued &
it = [phi1,p] &
phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p )
if not
phi is
0wff otherwise it = [phi,{}];
existence
( ( not phi is 0wff implies ex b1 being set ex phi1 being wff string of S ex p being FinSequence st
( p is AllSymbolsOf S -valued & b1 = [phi1,p] & phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p ) ) & ( phi is 0wff implies ex b1 being set st b1 = [phi,{}] ) )
uniqueness
for b1, b2 being set holds
( ( not phi is 0wff & ex phi1 being wff string of S ex p being FinSequence st
( p is AllSymbolsOf S -valued & b1 = [phi1,p] & phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p ) & ex phi1 being wff string of S ex p being FinSequence st
( p is AllSymbolsOf S -valued & b2 = [phi1,p] & phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p ) implies b1 = b2 ) & ( phi is 0wff & b1 = [phi,{}] & b2 = [phi,{}] implies b1 = b2 ) )
consistency
for b1 being set holds verum
;
end;
:: deftheorem DefSub1 defines SubWffsOf FOMODEL2:def 35 :
for S being Language
for phi being wff string of S
for b3 being set holds
( ( not phi is 0wff implies ( b3 = SubWffsOf phi iff ex phi1 being wff string of S ex p being FinSequence st
( p is AllSymbolsOf S -valued & b3 = [phi1,p] & phi = (<*((S -firstChar) . phi)*> ^ phi1) ^ p ) ) ) & ( phi is 0wff implies ( b3 = SubWffsOf phi iff b3 = [phi,{}] ) ) );
:: deftheorem defines head FOMODEL2:def 36 :
for S being Language
for phi being wff string of S holds head phi = (SubWffsOf phi) `1 ;
:: deftheorem defines tail FOMODEL2:def 37 :
for S being Language
for phi being wff string of S holds tail phi = (SubWffsOf phi) `2 ;
theorem
theorem Th23:
Lm49:
for m being Nat
for S being Language
for phi being wff string of S st Depth phi = m + 1 & not phi is exal holds
ex phi2 being b1 -wff string of S st tail phi = phi2
Lm50:
for m being Nat
for S being Language
for phi being wff string of S st not phi is 0wff & not phi is exal & phi is m + 1 -wff holds
( head phi is b1 -wff string of S & tail phi is b1 -wff string of S )
theorem Th24:
Lm51:
for S being Language
for U being non empty set
for phi0 being 0wff string of S
for I being Element of U -InterpretersOf S holds I -TruthEval phi0 = I -AtomicEval phi0
Lm52:
for X being set
for S being Language
for U being non empty set
for I1, I2 being b2,b3 -interpreter-like Function st I1 | X = I2 | X holds
(I1 -TermEval) | (X *) = (I2 -TermEval) | (X *)
theorem
:: deftheorem DefOccur defines -occurring FOMODEL2:def 38 :
for X being set
for S being Language
for s being Element of S holds
( s is X -occurring iff s in SymbolsOf ((((AllSymbolsOf S) *) \ {{}}) /\ X) );
:: deftheorem defines -containing FOMODEL2:def 39 :
for S being Language
for s being Element of S
for X being set holds
( X is s -containing iff s in SymbolsOf (((AllSymbolsOf S) *) \ ({{}} /\ X)) );
Lm53:
for S being Language
for w being string of S st w is termal holds
(rng w) /\ (LettersOf S) <> {}
Lm54:
for S being Language
for w being string of S st w is wff holds
(rng w) /\ (LettersOf S) <> {}
theorem
:: deftheorem defines -covering FOMODEL2:def 40 :
for S being Language
for X being set holds
( X is S -covering iff for phi being wff string of S holds
( phi in X or xnot phi in X ) );
:: deftheorem defines ExFormulasOf FOMODEL2:def 41 :
for S being Language holds ExFormulasOf S = { phi where phi is string of S : ( phi is wff & phi is exal ) } ;
:: deftheorem DefSat defines -satisfied FOMODEL2:def 42 :
for U being non empty set
for S being Language
for I being Element of U -InterpretersOf S
for X being set holds
( X is I -satisfied iff for phi being wff string of S st phi in X holds
I -TruthEval phi = 1 );
:: deftheorem DefSat2 defines -satisfying FOMODEL2:def 43 :
for S being Language
for U being non empty set
for X being set
for I being Element of U -InterpretersOf S holds
( I is X -satisfying iff X is I -satisfied );
:: deftheorem SeqCorr defines -correct FOMODEL2:def 44 :
for S being Language
for X being set holds
( X is S -correct iff for U being non empty set
for I being Element of U -InterpretersOf S
for x being b4 -satisfied set
for phi being wff string of S st [x,phi] in X holds
I -TruthEval phi = 1 );
theorem
theorem
:: deftheorem defines -implied FOMODEL2:def 45 :
for X being set
for S being Language
for phi being wff string of S holds
( phi is X -implied iff for U being non empty set
for I being Element of U -InterpretersOf S st X is I -satisfied holds
I -TruthEval phi = 1 );