Article CQC_SIM1, MML version 4.99.1005
:: CQC_SIM1:th 1
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
Im(b3 +* ({b1} --> b2),b1) = {b2};
:: CQC_SIM1:th 2
theorem
for b1, b2, b3, b4 being set
for b5 being Relation-like Function-like set holds
(b5 +* (b2 --> b4)) .: b1 c= (b5 .: b1) \/ {b4};
:: CQC_SIM1:th 3
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
for b4 being set holds
(b3 +* ({b1} --> b2)) .: (b4 \ {b1}) = b3 .: (b4 \ {b1});
:: CQC_SIM1:th 4
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
for b4 being set
st not b2 in b3 .: (b4 \ {b1})
holds (b3 +* ({b1} --> b2)) .: (b4 \ {b1}) = ((b3 +* ({b1} --> b2)) .: b4) \ {b2};
:: CQC_SIM1:th 5
theorem
for b1 being Element of CQC-WFF
st b1 is atomic
holds ex b2 being Element of NAT st
ex b3 being Element of b2 -ary_QC-pred_symbols st
ex b4 being CQC-variable_list-like QC-variable_list of b2 st
b1 = b3 ! b4;
:: CQC_SIM1:th 6
theorem
for b1 being Element of CQC-WFF
st b1 is negative
holds ex b2 being Element of CQC-WFF st
b1 = 'not' b2;
:: CQC_SIM1:th 7
theorem
for b1 being Element of CQC-WFF
st b1 is conjunctive
holds ex b2, b3 being Element of CQC-WFF st
b1 = b2 '&' b3;
:: CQC_SIM1:th 8
theorem
for b1 being Element of CQC-WFF
st b1 is universal
holds ex b2 being Element of bound_QC-variables st
ex b3 being Element of CQC-WFF st
b1 = All(b2,b3);
:: CQC_SIM1:th 9
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
proj2 b1 = {b1 . b2 where b2 is Element of NAT: 1 <= b2 & b2 <= len b1};
:: CQC_SIM1:sch 1
scheme CQC_SIM1:sch 1
{F1 -> non empty set,
F2 -> Element of F1(),
F3 -> Element of F1(),
F4 -> Element of F1(),
F5 -> Element of F1(),
F6 -> Element of F1()}:
ex b1 being Function-like quasi_total Relation of QC-WFF,F1() st
b1 . VERUM = F2() &
(for b2 being Element of QC-WFF holds
(b2 is atomic implies b1 . b2 = F3(b2)) &
(b2 is negative implies b1 . b2 = F4(b1 . the_argument_of b2, b2)) &
(b2 is conjunctive implies b1 . b2 = F5(b1 . the_left_argument_of b2, b1 . the_right_argument_of b2, b2)) &
(b2 is universal implies b1 . b2 = F6(b1 . the_scope_of b2, b2)))
:: CQC_SIM1:sch 2
scheme CQC_SIM1:sch 2
{F1 -> non empty set,
F2 -> non empty set,
F3 -> Element of Funcs(F1(),F2()),
F4 -> Element of Funcs(F1(),F2()),
F5 -> Element of Funcs(F1(),F2()),
F6 -> Element of Funcs(F1(),F2()),
F7 -> Element of Funcs(F1(),F2())}:
ex b1 being Function-like quasi_total Relation of CQC-WFF,Funcs(F1(),F2()) st
b1 . VERUM = F3() &
(for b2 being Element of NAT
for b3 being CQC-variable_list-like QC-variable_list of b2
for b4 being Element of b2 -ary_QC-pred_symbols holds
b1 . (b4 ! b3) = F4(b2, b4, b3)) &
(for b2, b3 being Element of CQC-WFF
for b4 being Element of bound_QC-variables holds
b1 . 'not' b2 = F5(b1 . b2, b2) &
b1 . (b2 '&' b3) = F6(b1 . b2, b1 . b3, b2, b3) &
b1 . All(b4,b2) = F7(b4, b1 . b2, b2))
:: CQC_SIM1:sch 3
scheme CQC_SIM1:sch 3
{F1 -> non empty set,
F2 -> non empty set,
F3 -> Function-like quasi_total Relation of CQC-WFF,Funcs(F1(),F2()),
F4 -> Function-like quasi_total Relation of CQC-WFF,Funcs(F1(),F2()),
F5 -> Function-like quasi_total Relation of F1(),F2(),
F6 -> Function-like quasi_total Relation of F1(),F2(),
F7 -> Function-like quasi_total Relation of F1(),F2(),
F8 -> Function-like quasi_total Relation of F1(),F2(),
F9 -> Function-like quasi_total Relation of F1(),F2()}:
F3() = F4()
provided
F3() . VERUM = F5()
and
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
F3() . (b3 ! b2) = F6(b1, b3, b2)
and
for b1, b2 being Element of CQC-WFF
for b3 being Element of bound_QC-variables holds
F3() . 'not' b1 = F7(F3() . b1, b1) &
F3() . (b1 '&' b2) = F8(F3() . b1, F3() . b2, b1, b2) &
F3() . All(b3,b1) = F9(b3, F3() . b1, b1)
and
F4() . VERUM = F5()
and
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
F4() . (b3 ! b2) = F6(b1, b3, b2)
and
for b1, b2 being Element of CQC-WFF
for b3 being Element of bound_QC-variables holds
F4() . 'not' b1 = F7(F4() . b1, b1) &
F4() . (b1 '&' b2) = F8(F4() . b1, F4() . b2, b1, b2) &
F4() . All(b3,b1) = F9(b3, F4() . b1, b1);
:: CQC_SIM1:th 10
theorem
for b1 being Element of CQC-WFF holds
b1 is_subformula_of 'not' b1;
:: CQC_SIM1:th 11
theorem
for b1, b2 being Element of CQC-WFF holds
b1 is_subformula_of b1 '&' b2 & b2 is_subformula_of b1 '&' b2;
:: CQC_SIM1:th 12
theorem
for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables holds
b1 is_subformula_of All(b2,b1);
:: CQC_SIM1:th 13
theorem
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of NAT
st 1 <= b3 & b3 <= len b2
holds b2 . b3 in bound_QC-variables;
:: CQC_SIM1:funcnot 1 => CQC_SIM1:func 1
definition
let a1 be non empty set;
let a2 be Function-like quasi_total Relation of a1,CQC-WFF;
func NEGATIVE A2 -> Element of Funcs(a1,CQC-WFF) means
for b1 being Element of a1
for b2 being Element of CQC-WFF
st b2 = a2 . b1
holds it . b1 = 'not' b2;
end;
:: CQC_SIM1:def 1
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of b1,CQC-WFF
for b3 being Element of Funcs(b1,CQC-WFF) holds
b3 = NEGATIVE b2
iff
for b4 being Element of b1
for b5 being Element of CQC-WFF
st b5 = b2 . b4
holds b3 . b4 = 'not' b5;
:: CQC_SIM1:funcnot 2 => CQC_SIM1:func 2
definition
let a1, a2 be Function-like quasi_total Relation of [:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF;
let a3 be Element of NAT;
func CON(A1,A2,A3) -> Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) means
for b1 being Element of NAT
for b2 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b3, b4 being Element of CQC-WFF
st b3 = a1 .(b1,b2) & b4 = a2 .(b1 + a3,b2)
holds it .(b1,b2) = b3 '&' b4;
end;
:: CQC_SIM1:def 2
theorem
for b1, b2 being Function-like quasi_total Relation of [:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF
for b3 being Element of NAT
for b4 being Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) holds
b4 = CON(b1,b2,b3)
iff
for b5 being Element of NAT
for b6 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b7, b8 being Element of CQC-WFF
st b7 = b1 .(b5,b6) & b8 = b2 .(b5 + b3,b6)
holds b4 .(b5,b6) = b7 '&' b8;
:: CQC_SIM1:funcnot 3 => CQC_SIM1:func 3
definition
let a1 be Function-like quasi_total Relation of [:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF;
let a2 be Element of bound_QC-variables;
func UNIVERSAL(A2,A1) -> Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) means
for b1 being Element of NAT
for b2 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b3 being Element of CQC-WFF
st b3 = a1 .(b1 + 1,b2 +* ({a2} --> x. b1))
holds it .(b1,b2) = All(x. b1,b3);
end;
:: CQC_SIM1:def 3
theorem
for b1 being Function-like quasi_total Relation of [:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF
for b2 being Element of bound_QC-variables
for b3 being Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) holds
b3 = UNIVERSAL(b2,b1)
iff
for b4 being Element of NAT
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b6 being Element of CQC-WFF
st b6 = b1 .(b4 + 1,b5 +* ({b2} --> x. b4))
holds b3 .(b4,b5) = All(x. b4,b6);
:: CQC_SIM1:funcnot 4 => CQC_SIM1:func 4
definition
let a1 be Element of NAT;
let a2 be CQC-variable_list-like QC-variable_list of a1;
let a3 be Element of Funcs(bound_QC-variables,bound_QC-variables);
redefine func a3 * a2 -> CQC-variable_list-like QC-variable_list of a1;
end;
:: CQC_SIM1:funcnot 5 => CQC_SIM1:func 5
definition
let a1 be Element of NAT;
let a2 be Element of a1 -ary_QC-pred_symbols;
let a3 be CQC-variable_list-like QC-variable_list of a1;
func ATOMIC(A2,A3) -> Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) means
for b1 being Element of NAT
for b2 being Element of Funcs(bound_QC-variables,bound_QC-variables) holds
it .(b1,b2) = a2 ! (b2 * a3);
end;
:: CQC_SIM1:def 4
theorem
for b1 being Element of NAT
for b2 being Element of b1 -ary_QC-pred_symbols
for b3 being CQC-variable_list-like QC-variable_list of b1
for b4 being Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) holds
b4 = ATOMIC(b2,b3)
iff
for b5 being Element of NAT
for b6 being Element of Funcs(bound_QC-variables,bound_QC-variables) holds
b4 .(b5,b6) = b2 ! (b6 * b3);
:: CQC_SIM1:funcnot 6 => CQC_SIM1:func 6
definition
let a1 be Element of CQC-WFF;
func QuantNbr A1 -> Element of NAT means
ex b1 being Function-like quasi_total Relation of CQC-WFF,NAT st
it = b1 . a1 &
b1 . VERUM = 0 &
(for b2, b3 being Element of CQC-WFF
for b4 being Element of bound_QC-variables
for b5 being Element of NAT
for b6 being CQC-variable_list-like QC-variable_list of b5
for b7 being Element of b5 -ary_QC-pred_symbols holds
b1 . (b7 ! b6) = 0 &
b1 . 'not' b2 = b1 . b2 &
b1 . (b2 '&' b3) = (b1 . b2) + (b1 . b3) &
b1 . All(b4,b2) = (b1 . b2) + 1);
end;
:: CQC_SIM1:def 5
theorem
for b1 being Element of CQC-WFF
for b2 being Element of NAT holds
b2 = QuantNbr b1
iff
ex b3 being Function-like quasi_total Relation of CQC-WFF,NAT st
b2 = b3 . b1 &
b3 . VERUM = 0 &
(for b4, b5 being Element of CQC-WFF
for b6 being Element of bound_QC-variables
for b7 being Element of NAT
for b8 being CQC-variable_list-like QC-variable_list of b7
for b9 being Element of b7 -ary_QC-pred_symbols holds
b3 . (b9 ! b8) = 0 &
b3 . 'not' b4 = b3 . b4 &
b3 . (b4 '&' b5) = (b3 . b4) + (b3 . b5) &
b3 . All(b6,b4) = (b3 . b4) + 1);
:: CQC_SIM1:funcnot 7 => CQC_SIM1:func 7
definition
let a1 be Function-like quasi_total Relation of CQC-WFF,Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF);
let a2 be Element of CQC-WFF;
redefine func a1 . a2 -> Element of Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF);
end;
:: CQC_SIM1:funcnot 8 => CQC_SIM1:func 8
definition
func SepFunc -> Function-like quasi_total Relation of CQC-WFF,Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) means
it . VERUM = [:NAT,Funcs(bound_QC-variables,bound_QC-variables):] --> VERUM &
(for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
it . (b3 ! b2) = ATOMIC(b3,b2)) &
(for b1, b2 being Element of CQC-WFF
for b3 being Element of bound_QC-variables holds
it . 'not' b1 = NEGATIVE (it . b1) &
it . (b1 '&' b2) = CON(it . b1,it . b2,QuantNbr b1) &
it . All(b3,b1) = UNIVERSAL(b3,it . b1));
end;
:: CQC_SIM1:def 6
theorem
for b1 being Function-like quasi_total Relation of CQC-WFF,Funcs([:NAT,Funcs(bound_QC-variables,bound_QC-variables):],CQC-WFF) holds
b1 = SepFunc
iff
b1 . VERUM = [:NAT,Funcs(bound_QC-variables,bound_QC-variables):] --> VERUM &
(for b2 being Element of NAT
for b3 being CQC-variable_list-like QC-variable_list of b2
for b4 being Element of b2 -ary_QC-pred_symbols holds
b1 . (b4 ! b3) = ATOMIC(b4,b3)) &
(for b2, b3 being Element of CQC-WFF
for b4 being Element of bound_QC-variables holds
b1 . 'not' b2 = NEGATIVE (b1 . b2) &
b1 . (b2 '&' b3) = CON(b1 . b2,b1 . b3,QuantNbr b2) &
b1 . All(b4,b2) = UNIVERSAL(b4,b1 . b2));
:: CQC_SIM1:funcnot 9 => CQC_SIM1:func 9
definition
let a1 be Element of CQC-WFF;
let a2 be Element of NAT;
let a3 be Element of Funcs(bound_QC-variables,bound_QC-variables);
func SepFunc(A1,A2,A3) -> Element of CQC-WFF equals
(SepFunc . a1) . [a2,a3];
end;
:: CQC_SIM1:def 7
theorem
for b1 being Element of CQC-WFF
for b2 being Element of NAT
for b3 being Element of Funcs(bound_QC-variables,bound_QC-variables) holds
SepFunc(b1,b2,b3) = (SepFunc . b1) . [b2,b3];
:: CQC_SIM1:th 14
theorem
QuantNbr VERUM = 0;
:: CQC_SIM1:th 15
theorem
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
QuantNbr (b3 ! b2) = 0;
:: CQC_SIM1:th 16
theorem
for b1 being Element of CQC-WFF holds
QuantNbr 'not' b1 = QuantNbr b1;
:: CQC_SIM1:th 17
theorem
for b1, b2 being Element of CQC-WFF holds
QuantNbr (b1 '&' b2) = (QuantNbr b1) + QuantNbr b2;
:: CQC_SIM1:th 18
theorem
for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables holds
QuantNbr All(b2,b1) = (QuantNbr b1) + 1;
:: CQC_SIM1:th 20
theorem
for b1 being Element of QC-WFF holds
still_not-bound_in b1 is finite;
:: CQC_SIM1:sch 4
scheme CQC_SIM1:sch 4
{F1 -> non empty set,
F2 -> set}:
ex b1 being Element of F1() st
b1 in F2() &
(for b2 being Element of F1()
st b2 in F2()
holds P1[b1, b2])
provided
F2() is finite & F2() <> {} & F2() c= F1()
and
for b1, b2 being Element of F1()
st not (P1[b1, b2])
holds P1[b2, b1]
and
for b1, b2, b3 being Element of F1()
st P1[b1, b2] & P1[b2, b3]
holds P1[b1, b3];
:: CQC_SIM1:funcnot 10 => CQC_SIM1:func 10
definition
let a1 be Element of CQC-WFF;
func NBI A1 -> Element of bool NAT equals
{b1 where b1 is Element of NAT: for b2 being Element of NAT
st b1 <= b2
holds not x. b2 in still_not-bound_in a1};
end;
:: CQC_SIM1:def 9
theorem
for b1 being Element of CQC-WFF holds
NBI b1 = {b2 where b2 is Element of NAT: for b3 being Element of NAT
st b2 <= b3
holds not x. b3 in still_not-bound_in b1};
:: CQC_SIM1:funcreg 1
registration
let a1 be Element of CQC-WFF;
cluster NBI a1 -> non empty;
end;
:: CQC_SIM1:funcnot 11 => CQC_SIM1:func 11
definition
let a1 be Element of CQC-WFF;
func index A1 -> Element of NAT equals
min NBI a1;
end;
:: CQC_SIM1:def 10
theorem
for b1 being Element of CQC-WFF holds
index b1 = min NBI b1;
:: CQC_SIM1:th 21
theorem
for b1 being Element of CQC-WFF holds
index b1 = 0
iff
b1 is closed;
:: CQC_SIM1:th 22
theorem
for b1 being Element of CQC-WFF
for b2 being Element of NAT
st x. b2 in still_not-bound_in b1
holds b2 < index b1;
:: CQC_SIM1:th 23
theorem
index VERUM = 0;
:: CQC_SIM1:th 24
theorem
for b1 being Element of CQC-WFF holds
index 'not' b1 = index b1;
:: CQC_SIM1:th 25
theorem
for b1, b2 being Element of CQC-WFF holds
index b1 <= index (b1 '&' b2) & index b2 <= index (b1 '&' b2);
:: CQC_SIM1:funcnot 12 => CQC_SIM1:func 12
definition
let a1 be set;
redefine func id a1 -> Element of Funcs(a1,a1);
end;
:: CQC_SIM1:funcnot 13 => CQC_SIM1:func 13
definition
let a1 be Element of CQC-WFF;
func SepVar A1 -> Element of CQC-WFF equals
SepFunc(a1,index a1,id bound_QC-variables);
end;
:: CQC_SIM1:def 11
theorem
for b1 being Element of CQC-WFF holds
SepVar b1 = SepFunc(b1,index b1,id bound_QC-variables);
:: CQC_SIM1:th 26
theorem
SepVar VERUM = VERUM;
:: CQC_SIM1:sch 5
scheme CQC_SIM1:sch 5
for b1 being Element of CQC-WFF holds
P1[b1]
provided
P1[VERUM]
and
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
P1[b3 ! b2]
and
for b1 being Element of CQC-WFF
st P1[b1]
holds P1['not' b1]
and
for b1, b2 being Element of CQC-WFF
st P1[b1] & P1[b2]
holds P1[b1 '&' b2]
and
for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables
st P1[b1]
holds P1[All(b2,b1)];
:: CQC_SIM1:th 27
theorem
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
SepVar (b3 ! b2) = b3 ! b2;
:: CQC_SIM1:th 28
theorem
for b1 being Element of CQC-WFF
st b1 is atomic
holds SepVar b1 = b1;
:: CQC_SIM1:th 29
theorem
for b1 being Element of CQC-WFF holds
SepVar 'not' b1 = 'not' SepVar b1;
:: CQC_SIM1:th 30
theorem
for b1, b2 being Element of CQC-WFF
st b1 is negative & b2 = the_argument_of b1
holds SepVar b1 = 'not' SepVar b2;
:: CQC_SIM1:prednot 1 => CQC_SIM1:pred 1
definition
let a1 be Element of CQC-WFF;
let a2 be Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):];
pred A2 is_Sep-closed_on A1 means
[a1,index a1,{}. bound_QC-variables,id bound_QC-variables] in a2 &
(for b1 being Element of CQC-WFF
for b2 being Element of NAT
for b3 being Element of Fin bound_QC-variables
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st ['not' b1,b2,b3,b4] in a2
holds [b1,b2,b3,b4] in a2) &
(for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b1 '&' b2,b3,b4,b5] in a2
holds [b1,b3,b4,b5] in a2 &
[b2,b3 + QuantNbr b1,b4,b5] in a2) &
(for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [All(b2,b1),b3,b4,b5] in a2
holds [b1,b3 + 1,b4 \/ {b2},b5 +* ({b2} --> x. b3)] in a2);
end;
:: CQC_SIM1:dfs 11
definiens
let a1 be Element of CQC-WFF;
let a2 be Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):];
To prove
a2 is_Sep-closed_on a1
it is sufficient to prove
thus [a1,index a1,{}. bound_QC-variables,id bound_QC-variables] in a2 &
(for b1 being Element of CQC-WFF
for b2 being Element of NAT
for b3 being Element of Fin bound_QC-variables
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st ['not' b1,b2,b3,b4] in a2
holds [b1,b2,b3,b4] in a2) &
(for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b1 '&' b2,b3,b4,b5] in a2
holds [b1,b3,b4,b5] in a2 &
[b2,b3 + QuantNbr b1,b4,b5] in a2) &
(for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [All(b2,b1),b3,b4,b5] in a2
holds [b1,b3 + 1,b4 \/ {b2},b5 +* ({b2} --> x. b3)] in a2);
:: CQC_SIM1:def 12
theorem
for b1 being Element of CQC-WFF
for b2 being Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):] holds
b2 is_Sep-closed_on b1
iff
[b1,index b1,{}. bound_QC-variables,id bound_QC-variables] in b2 &
(for b3 being Element of CQC-WFF
for b4 being Element of NAT
for b5 being Element of Fin bound_QC-variables
for b6 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st ['not' b3,b4,b5,b6] in b2
holds [b3,b4,b5,b6] in b2) &
(for b3, b4 being Element of CQC-WFF
for b5 being Element of NAT
for b6 being Element of Fin bound_QC-variables
for b7 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b3 '&' b4,b5,b6,b7] in b2
holds [b3,b5,b6,b7] in b2 &
[b4,b5 + QuantNbr b3,b6,b7] in b2) &
(for b3 being Element of CQC-WFF
for b4 being Element of bound_QC-variables
for b5 being Element of NAT
for b6 being Element of Fin bound_QC-variables
for b7 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [All(b4,b3),b5,b6,b7] in b2
holds [b3,b5 + 1,b6 \/ {b4},b7 +* ({b4} --> x. b5)] in b2);
:: CQC_SIM1:funcnot 14 => CQC_SIM1:func 14
definition
let a1 be Element of CQC-WFF;
func SepQuadruples A1 -> Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):] means
it is_Sep-closed_on a1 &
(for b1 being Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):]
st b1 is_Sep-closed_on a1
holds it c= b1);
end;
:: CQC_SIM1:def 13
theorem
for b1 being Element of CQC-WFF
for b2 being Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):] holds
b2 = SepQuadruples b1
iff
b2 is_Sep-closed_on b1 &
(for b3 being Element of bool [:CQC-WFF,NAT,Fin bound_QC-variables,Funcs(bound_QC-variables,bound_QC-variables):]
st b3 is_Sep-closed_on b1
holds b2 c= b3);
:: CQC_SIM1:th 31
theorem
for b1 being Element of CQC-WFF holds
[b1,index b1,{}. bound_QC-variables,id bound_QC-variables] in SepQuadruples b1;
:: CQC_SIM1:th 32
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st ['not' b2,b3,b4,b5] in SepQuadruples b1
holds [b2,b3,b4,b5] in SepQuadruples b1;
:: CQC_SIM1:th 33
theorem
for b1, b2, b3 being Element of CQC-WFF
for b4 being Element of NAT
for b5 being Element of Fin bound_QC-variables
for b6 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b2 '&' b3,b4,b5,b6] in SepQuadruples b1
holds [b2,b4,b5,b6] in SepQuadruples b1 &
[b3,b4 + QuantNbr b2,b5,b6] in SepQuadruples b1;
:: CQC_SIM1:th 34
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of bound_QC-variables
for b4 being Element of NAT
for b5 being Element of Fin bound_QC-variables
for b6 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [All(b3,b2),b4,b5,b6] in SepQuadruples b1
holds [b2,b4 + 1,b5 \/ {b3},b6 +* ({b3} --> x. b4)] in SepQuadruples b1;
:: CQC_SIM1:th 35
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b5 being Element of Fin bound_QC-variables
st [b1,b3,b5,b4] in SepQuadruples b2 &
[b1,b3,b5,b4] <> [b2,index b2,{}. bound_QC-variables,id bound_QC-variables] &
not ['not' b1,b3,b5,b4] in SepQuadruples b2 &
(for b6 being Element of CQC-WFF holds
not [b1 '&' b6,b3,b5,b4] in SepQuadruples b2) &
(for b6 being Element of CQC-WFF
for b7 being Element of NAT
st b3 = b7 + QuantNbr b6
holds not [b6 '&' b1,b7,b5,b4] in SepQuadruples b2)
holds ex b6 being Element of bound_QC-variables st
ex b7 being Element of NAT st
ex b8 being Element of Funcs(bound_QC-variables,bound_QC-variables) st
b7 + 1 = b3 &
b8 +* ({b6} --> x. b7) = b4 &
([All(b6,b1),b7,b5,b8] in SepQuadruples b2 or [All(b6,b1),b7,b5 \ {b6},b8] in SepQuadruples b2);
:: CQC_SIM1:sch 6
scheme CQC_SIM1:sch 6
{F1 -> Element of CQC-WFF}:
for b1 being Element of CQC-WFF
for b2 being Element of NAT
for b3 being Element of Fin bound_QC-variables
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b1,b2,b3,b4] in SepQuadruples F1()
holds P1[b1, b2, b3, b4]
provided
P1[F1(), index F1(), {}. bound_QC-variables, id bound_QC-variables]
and
for b1 being Element of CQC-WFF
for b2 being Element of NAT
for b3 being Element of Fin bound_QC-variables
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st ['not' b1,b2,b3,b4] in SepQuadruples F1() & P1['not' b1, b2, b3, b4]
holds P1[b1, b2, b3, b4]
and
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b1 '&' b2,b3,b4,b5] in SepQuadruples F1() &
P1[b1 '&' b2, b3, b4, b5]
holds P1[b1, b3, b4, b5] & P1[b2, b3 + QuantNbr b1, b4, b5]
and
for b1 being Element of CQC-WFF
for b2 being Element of bound_QC-variables
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [All(b2,b1),b3,b4,b5] in SepQuadruples F1() &
P1[All(b2,b1), b3, b4, b5]
holds P1[b1, b3 + 1, b4 \/ {b2}, b5 +* ({b2} --> x. b3)];
:: CQC_SIM1:th 36
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b2,b3,b4,b5] in SepQuadruples b1
holds b2 is_subformula_of b1;
:: CQC_SIM1:th 37
theorem
SepQuadruples VERUM = {[VERUM,0,{}. bound_QC-variables,id bound_QC-variables]};
:: CQC_SIM1:th 38
theorem
for b1 being Element of NAT
for b2 being CQC-variable_list-like QC-variable_list of b1
for b3 being Element of b1 -ary_QC-pred_symbols holds
SepQuadruples (b3 ! b2) = {[b3 ! b2,index (b3 ! b2),{}. bound_QC-variables,id bound_QC-variables]};
:: CQC_SIM1:th 39
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Fin bound_QC-variables
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
st [b2,b3,b4,b5] in SepQuadruples b1
holds still_not-bound_in b2 c= (still_not-bound_in b1) \/ b4;
:: CQC_SIM1:th 40
theorem
for b1, b2 being Element of CQC-WFF
for b3, b4 being Element of NAT
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b6 being Element of Fin bound_QC-variables
st [b1,b3,b6,b5] in SepQuadruples b2 & x. b4 in b5 .: b6
holds b4 < b3;
:: CQC_SIM1:th 41
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b5 being Element of Fin bound_QC-variables
st [b1,b3,b5,b4] in SepQuadruples b2
holds not x. b3 in b4 .: b5;
:: CQC_SIM1:th 42
theorem
for b1, b2 being Element of CQC-WFF
for b3, b4 being Element of NAT
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b6 being Element of Fin bound_QC-variables
st [b1,b3,b6,b5] in SepQuadruples b2 & x. b4 in b5 .: still_not-bound_in b2
holds b4 < b3;
:: CQC_SIM1:th 43
theorem
for b1, b2 being Element of CQC-WFF
for b3, b4 being Element of NAT
for b5 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b6 being Element of Fin bound_QC-variables
st [b1,b3,b6,b5] in SepQuadruples b2 & x. b4 in b5 .: still_not-bound_in b1
holds b4 < b3;
:: CQC_SIM1:th 44
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being Element of Funcs(bound_QC-variables,bound_QC-variables)
for b5 being Element of Fin bound_QC-variables
st [b1,b3,b5,b4] in SepQuadruples b2
holds not x. b3 in b4 .: still_not-bound_in b1;
:: CQC_SIM1:th 45
theorem
for b1 being Element of CQC-WFF holds
still_not-bound_in b1 = still_not-bound_in SepVar b1;
:: CQC_SIM1:th 46
theorem
for b1 being Element of CQC-WFF holds
index b1 = index SepVar b1;
:: CQC_SIM1:prednot 2 => CQC_SIM1:pred 2
definition
let a1, a2 be Element of CQC-WFF;
pred A1,A2 are_similar means
SepVar a1 = SepVar a2;
symmetry;
:: for a1, a2 being Element of CQC-WFF
:: st a1,a2 are_similar
:: holds a2,a1 are_similar;
reflexivity;
:: for a1 being Element of CQC-WFF holds
:: a1,a1 are_similar;
end;
:: CQC_SIM1:dfs 13
definiens
let a1, a2 be Element of CQC-WFF;
To prove
a1,a2 are_similar
it is sufficient to prove
thus SepVar a1 = SepVar a2;
:: CQC_SIM1:def 14
theorem
for b1, b2 being Element of CQC-WFF holds
b1,b2 are_similar
iff
SepVar b1 = SepVar b2;
:: CQC_SIM1:th 49
theorem
for b1, b2, b3 being Element of CQC-WFF
st b1,b2 are_similar & b2,b3 are_similar
holds b1,b3 are_similar;