abcmiz_1.miz
begin
reserve i for
Nat,
j for
Element of
NAT ,
X,Y,x,y,z for
set;
theorem ::
ABCMIZ_1:1
Th1: for f be
Function holds (f
. x)
c= (
Union f)
proof
let f be
Function;
x
in (
dom f) or not x
in (
dom f);
then (f
. x)
in (
rng f) or (f
. x)
=
{} by
FUNCT_1: 3,
FUNCT_1:def 2;
hence thesis by
ZFMISC_1: 74;
end;
theorem ::
ABCMIZ_1:2
for f be
Function st (
Union f)
=
{} holds (f
. x)
=
{} by
Th1,
XBOOLE_1: 3;
theorem ::
ABCMIZ_1:3
Th3: for f be
Function holds for x,y be
object st f
=
[x, y] holds x
= y
proof
let f be
Function, x,y be
object;
assume
A1: f
=
[x, y];
then
A2:
{x}
in f by
TARSKI:def 2;
A3:
{x, y}
in f by
A1,
TARSKI:def 2;
consider a,b be
object such that
A4:
{x}
=
[a, b] by
A2,
RELAT_1:def 1;
A5:
{a}
=
{a, b} by
A4,
ZFMISC_1: 5;
A6: x
=
{a} by
A4,
ZFMISC_1: 4;
consider c,d be
object such that
A7:
{x, y}
=
[c, d] by
A3,
RELAT_1:def 1;
A8: x
=
{c} & y
=
{c, d} or x
=
{c, d} & y
=
{c} by
A7,
ZFMISC_1: 6;
then c
= a by
A5,
A6,
ZFMISC_1: 4;
hence thesis by
A2,
A3,
A4,
A5,
A7,
A8,
FUNCT_1:def 1;
end;
theorem ::
ABCMIZ_1:4
Th4: ((
id X)
.: Y)
c= Y
proof
let x be
object;
assume x
in ((
id X)
.: Y);
then ex y be
object st
[y, x]
in (
id X) & y
in Y by
RELAT_1:def 13;
hence thesis by
RELAT_1:def 10;
end;
theorem ::
ABCMIZ_1:5
Th5: for S be non
void
Signature holds for X be
non-empty
ManySortedSet of the
carrier of S holds for t be
Term of S, X holds t is non
pair
proof
let S be non
void
Signature;
let X be
non-empty
ManySortedSet of the
carrier of S;
let t be
Term of S, X;
given x,y be
object such that
A1: t
=
[x, y];
(ex s be
SortSymbol of S, v be
Element of (X
. s) st (t
.
{} )
=
[v, s]) or (t
.
{} )
in
[:the
carrier' of S,
{the
carrier of S}:] by
MSATERM: 2;
then (ex s be
SortSymbol of S, v be
Element of (X
. s) st (t
.
{} )
=
[v, s]) or ex a,b be
object st a
in the
carrier' of S & b
in
{the
carrier of S} & (t
.
{} )
=
[a, b] by
ZFMISC_1:def 2;
then
{
{} }
<>
{
{} , (t
.
{} )} by
ZFMISC_1: 5;
then
A2:
[
{} , (t
.
{} )]
<>
{x} by
ZFMISC_1: 5;
{}
in (
dom t) by
TREES_1: 22;
then
[
{} , (t
.
{} )]
in t by
FUNCT_1:def 2;
then
A3:
[
{} , (t
.
{} )]
=
{x, y} by
A1,
A2,
TARSKI:def 2;
x
= y by
A1,
Th3;
hence thesis by
A2,
A3,
ENUMSET1: 29;
end;
registration
let S be non
void
Signature;
let X be non
empty-yielding
ManySortedSet of the
carrier of S;
cluster -> non
pair for
Element of (
Free (S,X));
coherence
proof
let e be
Element of (
Free (S,X));
e is
Term of S, (X
(\/) (the
carrier of S
-->
{
0 })) by
MSAFREE3: 8;
hence thesis by
Th5;
end;
end
theorem ::
ABCMIZ_1:6
Th6: for x,y,z be
set st x
in (
{z}
* ) & y
in (
{z}
* ) & (
card x)
= (
card y) holds x
= y
proof
let x,y,z be
set such that
A1: x
in (
{z}
* ) and
A2: y
in (
{z}
* ) and
A3: (
card x)
= (
card y);
reconsider x, y as
FinSequence of
{z} by
A1,
A2,
FINSEQ_1:def 11;
A4: (
dom x)
= (
Seg (
len x)) by
FINSEQ_1:def 3
.= (
dom y) by
A3,
FINSEQ_1:def 3;
now
let i be
Nat;
assume
A5: i
in (
dom x);
then
A6: (x
. i)
in (
rng x) by
FUNCT_1:def 3;
A7: (y
. i)
in (
rng y) by
A4,
A5,
FUNCT_1:def 3;
thus (x
. i)
= z by
A6,
TARSKI:def 1
.= (y
. i) by
A7,
TARSKI:def 1;
end;
hence thesis by
A4,
FINSEQ_1: 13;
end;
definition
let S be non
void
Signature;
let A be
MSAlgebra over S;
mode
Subset of A is
Subset of (
Union the
Sorts of A);
mode
FinSequence of A is
FinSequence of (
Union the
Sorts of A);
end
registration
let S be non
void
Signature;
let X be non
empty-yielding
ManySortedSet of S;
cluster ->
DTree-yielding for
FinSequence of (
Free (S,X));
coherence
proof
let p be
FinSequence of (
Free (S,X));
let x be
object;
assume x
in (
rng p);
hence thesis;
end;
end
theorem ::
ABCMIZ_1:7
Th7: for S be non
void
Signature holds for X be non
empty-yielding
ManySortedSet of the
carrier of S holds for t be
Element of (
Free (S,X)) holds (ex s be
SortSymbol of S, v be
set st t
= (
root-tree
[v, s]) & v
in (X
. s)) or ex o be
OperSymbol of S, p be
FinSequence of (
Free (S,X)) st t
= (
[o, the
carrier of S]
-tree p) & (
len p)
= (
len (
the_arity_of o)) & p is
DTree-yielding & p is
ArgumentSeq of (
Sym (o,(X
(\/) (the
carrier of S
-->
{
0 }))))
proof
let S be non
void
Signature;
let X be non
empty-yielding
ManySortedSet of the
carrier of S;
let t be
Element of (
Free (S,X));
set V = (X
(\/) (the
carrier of S
-->
{
0 }));
reconsider t9 = t as
Term of S, V by
MSAFREE3: 8;
defpred
P[
set] means $1 is
Element of (
Free (S,X)) implies (ex s be
SortSymbol of S, v be
set st $1
= (
root-tree
[v, s]) & v
in (X
. s)) or ex o be
OperSymbol of S, p be
FinSequence of (
Free (S,X)) st $1
= (
[o, the
carrier of S]
-tree p) & (
len p)
= (
len (
the_arity_of o)) & p is
DTree-yielding & p is
ArgumentSeq of (
Sym (o,V));
A1: for s be
SortSymbol of S, v be
Element of (V
. s) holds
P[(
root-tree
[v, s])]
proof
let s be
SortSymbol of S;
let v be
Element of (V
. s);
set t = (
root-tree
[v, s]);
assume
A2: t is
Element of (
Free (S,X));
{}
in (
dom t) by
TREES_1: 22;
then (t
.
{} )
in (
rng t) by
FUNCT_1: 3;
then
[v, s]
in (
rng t) by
TREES_4: 3;
then v
in (X
. s) by
A2,
MSAFREE3: 35;
hence thesis;
end;
A3: for o be
OperSymbol of S, p be
ArgumentSeq of (
Sym (o,V)) st for t be
Term of S, V st t
in (
rng p) holds
P[t] holds
P[(
[o, the
carrier of S]
-tree p)]
proof
let o be
OperSymbol of S;
let p be
ArgumentSeq of (
Sym (o,V)) such that for t be
Term of S, V st t
in (
rng p) holds
P[t];
set t = (
[o, the
carrier of S]
-tree p);
assume t is
Element of (
Free (S,X));
then
consider s be
object such that
A4: s
in (
dom the
Sorts of (
Free (S,X))) and
A5: t
in (the
Sorts of (
Free (S,X))
. s) by
CARD_5: 2;
reconsider s as
Element of S by
A4;
A6: the
Sorts of (
Free (S,X))
= (S
-Terms (X,V)) by
MSAFREE3: 24;
(
the_sort_of ((
Sym (o,V))
-tree p))
= (
the_result_sort_of o) by
MSATERM: 20;
then s
= (
the_result_sort_of o) by
A5,
A6,
MSAFREE3: 17;
then (
rng p)
c= (
Union (S
-Terms (X,V))) by
A5,
A6,
MSAFREE3: 19;
then
A7: p is
FinSequence of (
Free (S,X)) by
A6,
FINSEQ_1:def 4;
(
len (
the_arity_of o))
= (
len p) by
MSATERM: 22;
hence thesis by
A7;
end;
for t be
Term of S, V holds
P[t] from
MSATERM:sch 1(
A1,
A3);
then
P[t9];
hence thesis;
end;
definition
let A be
set;
::
ABCMIZ_1:def1
func
varcl A ->
set means
:
Def1: A
c= it & (for x, y st
[x, y]
in it holds x
c= it ) & for B be
set st A
c= B & for x, y st
[x, y]
in B holds x
c= B holds it
c= B;
uniqueness
proof
let B1,B2 be
set;
assume
A1: not thesis;
then
A2: B1
c= B2;
B2
c= B1 by
A1;
hence thesis by
A1,
A2,
XBOOLE_0:def 10;
end;
existence
proof
set F = { C where C be
Subset of (
Rank (
the_rank_of A)) : A
c= C & for x, y st
[x, y]
in C holds x
c= C };
take D = (
meet F);
A3: A
c= (
Rank (
the_rank_of A)) by
CLASSES1:def 9;
A4:
now
let x, y;
assume
A5:
[x, y]
in (
Rank (
the_rank_of A));
A6:
{x}
in
{
{x, y},
{x}} by
TARSKI:def 2;
A7:
{
{x, y},
{x}}
c= (
Rank (
the_rank_of A)) by
A5,
ORDINAL1:def 2;
A8: x
in
{x} by
TARSKI:def 1;
{x}
c= (
Rank (
the_rank_of A)) by
A6,
A7,
ORDINAL1:def 2;
hence x
c= (
Rank (
the_rank_of A)) by
A8,
ORDINAL1:def 2;
end;
(
Rank (
the_rank_of A))
c= (
Rank (
the_rank_of A));
then
A9: (
Rank (
the_rank_of A))
in F by
A3,
A4;
hereby
let x be
object;
assume
A10: x
in A;
now
let C be
set;
assume C
in F;
then ex B be
Subset of (
Rank (
the_rank_of A)) st C
= B & A
c= B & for x, y st
[x, y]
in B holds x
c= B;
hence x
in C by
A10;
end;
hence x
in D by
A9,
SETFAM_1:def 1;
end;
hereby
let x, y;
assume
A11:
[x, y]
in D;
thus x
c= D
proof
let z be
object;
assume
A12: z
in x;
now
let X;
assume
A13: X
in F;
then
A14:
[x, y]
in X by
A11,
SETFAM_1:def 1;
ex B be
Subset of (
Rank (
the_rank_of A)) st X
= B & A
c= B & for x, y st
[x, y]
in B holds x
c= B by
A13;
then x
c= X by
A14;
hence z
in X by
A12;
end;
hence thesis by
A9,
SETFAM_1:def 1;
end;
end;
let B be
set;
assume that
A15: A
c= B and
A16: for x, y st
[x, y]
in B holds x
c= B;
set C = (B
/\ (
Rank (
the_rank_of A)));
reconsider C as
Subset of (
Rank (
the_rank_of A)) by
XBOOLE_1: 17;
A17: A
c= C by
A3,
A15,
XBOOLE_1: 19;
now
let x, y;
assume
A18:
[x, y]
in C;
then
[x, y]
in B by
XBOOLE_0:def 4;
then
A19: x
c= B by
A16;
x
c= (
Rank (
the_rank_of A)) by
A4,
A18;
hence x
c= C by
A19,
XBOOLE_1: 19;
end;
then C
in F by
A17;
then
A20: D
c= C by
SETFAM_1: 3;
C
c= B by
XBOOLE_1: 17;
hence thesis by
A20;
end;
projectivity ;
end
theorem ::
ABCMIZ_1:8
Th8: (
varcl
{} )
=
{}
proof
A1: for x, y st
[x, y]
in
{} holds x
c=
{} ;
for B be
set st
{}
c= B & for x, y st
[x, y]
in B holds x
c= B holds
{}
c= B;
hence thesis by
A1,
Def1;
end;
theorem ::
ABCMIZ_1:9
Th9: for A,B be
set st A
c= B holds (
varcl A)
c= (
varcl B)
proof
let A,B be
set such that
A1: A
c= B;
B
c= (
varcl B) by
Def1;
then
A2: A
c= (
varcl B) by
A1;
for x, y st
[x, y]
in (
varcl B) holds x
c= (
varcl B) by
Def1;
hence thesis by
A2,
Def1;
end;
theorem ::
ABCMIZ_1:10
Th10: for A be
set holds (
varcl (
union A))
= (
union the set of all (
varcl a) where a be
Element of A)
proof
let A be
set;
set X = the set of all (
varcl a) where a be
Element of A;
A1: (
union A)
c= (
union X)
proof
let x be
object;
assume x
in (
union A);
then
consider Y such that
A2: x
in Y and
A3: Y
in A by
TARSKI:def 4;
reconsider Y as
Element of A by
A3;
A4: Y
c= (
varcl Y) by
Def1;
(
varcl Y)
in X;
hence thesis by
A2,
A4,
TARSKI:def 4;
end;
now
let x,y be
set;
assume
[x, y]
in (
union X);
then
consider Y be
set such that
A5:
[x, y]
in Y and
A6: Y
in X by
TARSKI:def 4;
ex a be
Element of A st (Y
= (
varcl a)) by
A6;
then
A7: x
c= Y by
A5,
Def1;
Y
c= (
union X) by
A6,
ZFMISC_1: 74;
hence x
c= (
union X) by
A7;
end;
hence (
varcl (
union A))
c= (
union X) by
A1,
Def1;
let x be
object;
assume x
in (
union X);
then
consider Y be
set such that
A8: x
in Y and
A9: Y
in X by
TARSKI:def 4;
consider a be
Element of A such that
A10: Y
= (
varcl a) by
A9;
A is
empty or not A is
empty;
then a
in A or a is
empty by
SUBSET_1:def 1;
then a
c= (
union A) by
ZFMISC_1: 74;
then Y
c= (
varcl (
union A)) by
A10,
Th9;
hence thesis by
A8;
end;
scheme ::
ABCMIZ_1:sch1
Sch14 { A() ->
set , F(
set) ->
set , P[
set] } :
(
varcl (
union { F(z) where z be
Element of A() : P[z] }))
= (
union { (
varcl F(z)) where z be
Element of A() : P[z] });
set Z = { F(z) where z be
Element of A() : P[z] };
set X = { (
varcl F(z)) where z be
Element of A() : P[z] };
A1: (
union Z)
c= (
union X)
proof
let x be
object;
assume x
in (
union Z);
then
consider Y such that
A2: x
in Y and
A3: Y
in Z by
TARSKI:def 4;
A4: ex z be
Element of A() st (Y
= F(z)) & P[z] by
A3;
A5: Y
c= (
varcl Y) by
Def1;
(
varcl Y)
in X by
A4;
hence thesis by
A2,
A5,
TARSKI:def 4;
end;
now
let x,y be
set;
assume
[x, y]
in (
union X);
then
consider Y be
set such that
A6:
[x, y]
in Y and
A7: Y
in X by
TARSKI:def 4;
ex z be
Element of A() st (Y
= (
varcl F(z))) & P[z] by
A7;
then
A8: x
c= Y by
A6,
Def1;
Y
c= (
union X) by
A7,
ZFMISC_1: 74;
hence x
c= (
union X) by
A8;
end;
hence (
varcl (
union Z))
c= (
union X) by
A1,
Def1;
let x be
object;
assume x
in (
union X);
then
consider Y be
set such that
A9: x
in Y and
A10: Y
in X by
TARSKI:def 4;
consider z be
Element of A() such that
A11: Y
= (
varcl F(z)) and
A12: P[z] by
A10;
F(z)
in Z by
A12;
then Y
c= (
varcl (
union Z)) by
A11,
Th9,
ZFMISC_1: 74;
hence thesis by
A9;
end;
theorem ::
ABCMIZ_1:11
Th11: (
varcl (X
\/ Y))
= ((
varcl X)
\/ (
varcl Y))
proof
set A = the set of all (
varcl a) where a be
Element of
{X, Y};
(X
\/ Y)
= (
union
{X, Y}) by
ZFMISC_1: 75;
then
A1: (
varcl (X
\/ Y))
= (
union A) by
Th10;
A
=
{(
varcl X), (
varcl Y)}
proof
now
let x be
object;
assume x
in A;
then
consider a be
Element of
{X, Y} such that
A2: x
= (
varcl a);
a
= X or a
= Y by
TARSKI:def 2;
hence x
in
{(
varcl X), (
varcl Y)} by
A2,
TARSKI:def 2;
end;
let x be
object;
assume x
in
{(
varcl X), (
varcl Y)};
then x
= (
varcl X) & X
in
{X, Y} or x
= (
varcl Y) & Y
in
{X, Y} by
TARSKI:def 2;
hence thesis;
end;
hence thesis by
A1,
ZFMISC_1: 75;
end;
theorem ::
ABCMIZ_1:12
Th12: for A be non
empty
set st for a be
Element of A holds (
varcl a)
= a holds (
varcl (
meet A))
= (
meet A)
proof
let B be non
empty
set;
set A = (
meet B);
assume
A1: for a be
Element of B holds (
varcl a)
= a;
now
thus A
c= A;
let x, y;
assume
A2:
[x, y]
in A;
now
let Y;
assume
A3: Y
in B;
then
A4:
[x, y]
in Y by
A2,
SETFAM_1:def 1;
Y
= (
varcl Y) by
A1,
A3;
hence x
c= Y by
A4,
Def1;
end;
hence x
c= A by
SETFAM_1: 5;
end;
hence (
varcl A)
c= A by
Def1;
thus thesis by
Def1;
end;
theorem ::
ABCMIZ_1:13
Th13: (
varcl ((
varcl X)
/\ (
varcl Y)))
= ((
varcl X)
/\ (
varcl Y))
proof
set A = ((
varcl X)
/\ (
varcl Y));
now
thus A
c= A;
let x, y;
assume
A1:
[x, y]
in A;
then
A2:
[x, y]
in (
varcl X) by
XBOOLE_0:def 4;
A3:
[x, y]
in (
varcl Y) by
A1,
XBOOLE_0:def 4;
A4: x
c= (
varcl X) by
A2,
Def1;
x
c= (
varcl Y) by
A3,
Def1;
hence x
c= A by
A4,
XBOOLE_1: 19;
end;
hence (
varcl ((
varcl X)
/\ (
varcl Y)))
c= ((
varcl X)
/\ (
varcl Y)) by
Def1;
thus thesis by
Def1;
end;
registration
let A be
empty
set;
cluster (
varcl A) ->
empty;
coherence by
Th8;
end
deffunc
F(
set,
set) = {
[(
varcl A), j] where A be
Subset of $2, j be
Element of
NAT : A is
finite };
definition
::
ABCMIZ_1:def2
func
Vars ->
set means
:
Def2: ex V be
ManySortedSet of
NAT st it
= (
Union V) & (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT & for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite };
existence
proof
consider f be
Function such that
A1: (
dom f)
=
NAT and
A2: (f
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A3: for n be
Nat holds (f
. (n
+ 1))
=
F(n,.) from
NAT_1:sch 11;
reconsider f as
ManySortedSet of
NAT by
A1,
PARTFUN1:def 2,
RELAT_1:def 18;
take (
Union f), V = f;
thus (
Union f)
= (
Union V);
thus (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT by
A2;
let n be
Nat;
thus thesis by
A3;
end;
uniqueness
proof
let A1,A2 be
set;
given V1 be
ManySortedSet of
NAT such that
A4: A1
= (
Union V1) and
A5: (V1
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A6: for n be
Nat holds (V1
. (n
+ 1))
=
F(n,.);
given V2 be
ManySortedSet of
NAT such that
A7: A2
= (
Union V2) and
A8: (V2
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A9: for n be
Nat holds (V2
. (n
+ 1))
=
F(n,.);
A10: (
dom V1)
=
NAT by
PARTFUN1:def 2;
A11: (
dom V2)
=
NAT by
PARTFUN1:def 2;
V1
= V2 from
NAT_1:sch 15(
A10,
A5,
A6,
A11,
A8,
A9);
hence thesis by
A4,
A7;
end;
end
theorem ::
ABCMIZ_1:14
Th14: for V be
ManySortedSet of
NAT st (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT & for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite } holds for i,j be
Element of
NAT st i
<= j holds (V
. i)
c= (V
. j)
proof
let V be
ManySortedSet of
NAT such that
A1: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A2: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite };
defpred
Q[
Nat] means (V
.
0 )
c= (V
. $1);
A3:
now
let j;
assume
Q[j];
A4: (V
. (j
+ 1))
= {
[(
varcl A), k] where A be
Subset of (V
. j), k be
Element of
NAT : A is
finite } by
A2;
thus
Q[(j
+ 1)]
proof
let x be
object;
assume x
in (V
.
0 );
then
A5: ex i be
Element of
NAT st x
=
[
{} , i] by
A1;
{}
c= (V
. j);
hence thesis by
A4,
A5,
Th8;
end;
end;
defpred
P[
Nat] means for i st i
<= $1 holds (V
. i)
c= (V
. $1);
A6:
P[
0 ] by
NAT_1: 3;
A7:
now
let j be
Nat;
assume
A8:
P[j];
A9: (V
. j)
c= (V
. (j
+ 1))
proof
per cases by
NAT_1: 6;
suppose j
=
0 ;
hence thesis by
A3;
end;
suppose ex k be
Nat st j
= (k
+ 1);
then
consider k be
Nat such that
A10: j
= (k
+ 1);
reconsider k as
Element of
NAT by
ORDINAL1:def 12;
A11: (V
. j)
= {
[(
varcl A), n] where A be
Subset of (V
. k), n be
Element of
NAT : A is
finite } by
A2,
A10;
A12: (V
. (j
+ 1))
= {
[(
varcl A), n] where A be
Subset of (V
. j), n be
Element of
NAT : A is
finite } by
A2;
A13: (V
. k)
c= (V
. j) by
A8,
A10,
NAT_1: 11;
let x be
object;
assume x
in (V
. j);
then
consider A be
Subset of (V
. k), n be
Element of
NAT such that
A14: x
=
[(
varcl A), n] and
A15: A is
finite by
A11;
A
c= (V
. j) by
A13;
hence thesis by
A12,
A14,
A15;
end;
end;
thus
P[(j
+ 1)]
proof
let i;
assume i
<= (j
+ 1);
then i
= (j
+ 1) or (V
. i)
c= (V
. j) by
A8,
NAT_1: 8;
hence thesis by
A9;
end;
end;
for j be
Nat holds
P[j] from
NAT_1:sch 2(
A6,
A7);
hence thesis;
end;
theorem ::
ABCMIZ_1:15
Th15: for V be
ManySortedSet of
NAT st (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT & for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite } holds for A be
finite
Subset of
Vars holds ex i be
Element of
NAT st A
c= (V
. i)
proof
let V be
ManySortedSet of
NAT such that
A1: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A2: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite };
let A be
finite
Subset of
Vars ;
A3:
Vars
= (
Union V) by
A1,
A2,
Def2;
defpred
P[
object,
object] means $1
in (V
. $2);
A4:
now
let x be
object;
assume x
in A;
then
consider Y such that
A5: x
in Y and
A6: Y
in (
rng V) by
A3,
TARSKI:def 4;
consider i be
object such that
A7: i
in (
dom V) and
A8: Y
= (V
. i) by
A6,
FUNCT_1:def 3;
reconsider i as
object;
take i;
thus i
in
NAT &
P[x, i] by
A5,
A7,
A8;
end;
consider f be
Function such that
A9: (
dom f)
= A & (
rng f)
c=
NAT and
A10: for x be
object st x
in A holds
P[x, (f
. x)] from
FUNCT_1:sch 6(
A4);
per cases ;
suppose A
=
{} ;
then A
c= (V
.
0 );
hence thesis;
end;
suppose A
<>
{} ;
then
reconsider B = (
rng f) as
finite non
empty
Subset of
NAT by
A9,
FINSET_1: 8,
RELAT_1: 42;
reconsider i = (
max B) as
Element of
NAT by
ORDINAL1:def 12;
take i;
let x be
object;
assume
A11: x
in A;
then
A12: (f
. x)
in B by
A9,
FUNCT_1:def 3;
then
reconsider j = (f
. x) as
Element of
NAT ;
j
<= i by
A12,
XXREAL_2:def 8;
then
A13: (V
. j)
c= (V
. i) by
A1,
A2,
Th14;
x
in (V
. j) by
A10,
A11;
hence thesis by
A13;
end;
end;
theorem ::
ABCMIZ_1:16
Th16: the set of all
[
{} , i] where i be
Element of
NAT
c=
Vars
proof
consider V be
ManySortedSet of
NAT such that
A1:
Vars
= (
Union V) and
A2: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite } by
Def2;
(
dom V)
=
NAT by
PARTFUN1:def 2;
then (V
.
0 )
in (
rng V) by
FUNCT_1:def 3;
hence thesis by
A1,
A2,
ZFMISC_1: 74;
end;
theorem ::
ABCMIZ_1:17
Th17: for A be
finite
Subset of
Vars , i be
Nat holds
[(
varcl A), i]
in
Vars
proof
let A be
finite
Subset of
Vars , i be
Nat;
consider V be
ManySortedSet of
NAT such that
A1:
Vars
= (
Union V) and
A2: (V
.
0 )
= the set of all
[
{} , k] where k be
Element of
NAT and
A3: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl b), j] where b be
Subset of (V
. n), j be
Element of
NAT : b is
finite } by
Def2;
consider j be
Element of
NAT such that
A4: A
c= (V
. j) by
A2,
A3,
Th15;
A5: (V
. (j
+ 1))
= {
[(
varcl B), k] where B be
Subset of (V
. j), k be
Element of
NAT : B is
finite } by
A3;
i
in
NAT by
ORDINAL1:def 12;
then
A6:
[(
varcl A), i]
in (V
. (j
+ 1)) by
A4,
A5;
(
dom V)
=
NAT by
PARTFUN1:def 2;
hence thesis by
A1,
A6,
CARD_5: 2;
end;
theorem ::
ABCMIZ_1:18
Th18:
Vars
= {
[(
varcl A), j] where A be
Subset of
Vars , j be
Element of
NAT : A is
finite }
proof
consider V be
ManySortedSet of
NAT such that
A1:
Vars
= (
Union V) and
A2: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A3: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite } by
Def2;
set X = {
[(
varcl A), j] where A be
Subset of
Vars , j be
Element of
NAT : A is
finite };
A4: (
dom V)
=
NAT by
PARTFUN1:def 2;
defpred
P[
Nat] means (V
. $1)
c= X;
A5:
P[
0 ]
proof
let x be
object;
assume
A6: x
in (V
.
0 );
A7:
{}
c=
Vars ;
ex i be
Element of
NAT st x
=
[
{} , i] by
A2,
A6;
hence thesis by
A7,
Th8;
end;
A8:
now
let i be
Nat;
assume
P[i];
A9: (V
. (i
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. i), j be
Element of
NAT : A is
finite } by
A3;
thus
P[(i
+ 1)]
proof
let x be
object;
assume x
in (V
. (i
+ 1));
then
consider A be
Subset of (V
. i), j be
Element of
NAT such that
A10: x
=
[(
varcl A), j] and
A11: A is
finite by
A9;
reconsider ii = i as
Element of
NAT by
ORDINAL1:def 12;
(V
. ii)
in (
rng V) by
A4,
FUNCT_1:def 3;
then (V
. i)
c=
Vars by
A1,
ZFMISC_1: 74;
then A
c=
Vars ;
hence thesis by
A10,
A11;
end;
end;
A12: for i be
Nat holds
P[i] from
NAT_1:sch 2(
A5,
A8);
now
let x;
assume x
in (
rng V);
then ex y be
object st y
in
NAT & x
= (V
. y) by
A4,
FUNCT_1:def 3;
hence x
c= X by
A12;
end;
hence
Vars
c= X by
A1,
ZFMISC_1: 76;
let x be
object;
assume x
in X;
then ex A be
Subset of
Vars , j be
Element of
NAT st x
=
[(
varcl A), j] & A is
finite;
hence thesis by
Th17;
end;
theorem ::
ABCMIZ_1:19
Th19: (
varcl
Vars )
=
Vars
proof
consider V be
ManySortedSet of
NAT such that
A1:
Vars
= (
Union V) and
A2: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A3: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. n), j be
Element of
NAT : A is
finite } by
Def2;
defpred
P[
Nat] means (
varcl (V
. $1))
= (V
. $1);
now
let x, y;
assume
[x, y]
in (V
.
0 );
then ex i be
Element of
NAT st
[x, y]
=
[
{} , i] by
A2;
then x
=
{} by
XTUPLE_0: 1;
hence x
c= (V
.
0 );
end;
then
A4: (
varcl (V
.
0 ))
c= (V
.
0 ) by
Def1;
(V
.
0 )
c= (
varcl (V
.
0 )) by
Def1;
then
A5:
P[
0 ] by
A4,
XBOOLE_0:def 10;
A6:
now
let i;
assume
A7:
P[i];
reconsider i9 = i as
Element of
NAT by
ORDINAL1:def 12;
A8: (V
. (i
+ 1))
= {
[(
varcl A), j] where A be
Subset of (V
. i), j be
Element of
NAT : A is
finite } by
A3;
now
let x, y;
assume
[x, y]
in (V
. (i
+ 1));
then
consider A be
Subset of (V
. i), j be
Element of
NAT such that
A9:
[x, y]
=
[(
varcl A), j] and A is
finite by
A8;
x
= (
varcl A) by
A9,
XTUPLE_0: 1;
then
A10: x
c= (V
. i) by
A7,
Th9;
(V
. i9)
c= (V
. (i9
+ 1)) by
A2,
A3,
Th14,
NAT_1: 11;
hence x
c= (V
. (i
+ 1)) by
A10;
end;
then
A11: (
varcl (V
. (i
+ 1)))
c= (V
. (i
+ 1)) by
Def1;
(V
. (i
+ 1))
c= (
varcl (V
. (i
+ 1))) by
Def1;
hence
P[(i
+ 1)] by
A11,
XBOOLE_0:def 10;
end;
A12:
P[i] from
NAT_1:sch 2(
A5,
A6);
A13: (
varcl
Vars )
= (
union the set of all (
varcl a) where a be
Element of (
rng V)) by
A1,
Th10;
now
let x be
object;
assume x
in (
varcl
Vars );
then
consider Y such that
A14: x
in Y and
A15: Y
in the set of all (
varcl a) where a be
Element of (
rng V) by
A13,
TARSKI:def 4;
consider a be
Element of (
rng V) such that
A16: Y
= (
varcl a) by
A15;
consider i be
object such that
A17: i
in (
dom V) and
A18: a
= (V
. i) by
FUNCT_1:def 3;
reconsider i as
Element of
NAT by
A17;
(
varcl (V
. i))
= a by
A12,
A18;
hence x
in
Vars by
A1,
A14,
A16,
A17,
A18,
CARD_5: 2;
end;
thus thesis by
Def1;
end;
theorem ::
ABCMIZ_1:20
Th20: for X st (
the_rank_of X) is
finite holds X is
finite
proof
let X;
assume (
the_rank_of X) is
finite;
then (
the_rank_of X)
in
NAT by
CARD_1: 61;
then
A1: (
Rank (
the_rank_of X)) is
finite by
CARD_2: 67;
X
c= (
Rank (
the_rank_of X)) by
CLASSES1:def 9;
hence thesis by
A1;
end;
theorem ::
ABCMIZ_1:21
Th21: (
the_rank_of (
varcl X))
= (
the_rank_of X)
proof
A1: X
c= (
Rank (
the_rank_of X)) by
CLASSES1:def 9;
set a = (
the_rank_of X);
A2: a
c= (
succ a) by
ORDINAL3: 1;
(
succ a)
c= (
succ (
succ a)) by
ORDINAL3: 1;
then a
c= (
succ (
succ a)) by
A2;
then
A3: (
Rank a)
c= (
Rank (
succ (
succ a))) by
CLASSES1: 37;
now
let x, y;
assume
[x, y]
in (
Rank (
the_rank_of X));
then x
in (
Rank a) by
A3,
CLASSES1: 45;
hence x
c= (
Rank (
the_rank_of X)) by
ORDINAL1:def 2;
end;
then (
varcl X)
c= (
Rank a) by
A1,
Def1;
hence (
the_rank_of (
varcl X))
c= a by
CLASSES1: 65;
X
c= (
varcl X) by
Def1;
hence thesis by
CLASSES1: 67;
end;
theorem ::
ABCMIZ_1:22
Th22: for X be
finite
Subset of (
Rank
omega ) holds X
in (
Rank
omega )
proof
let X be
finite
Subset of (
Rank
omega );
deffunc
F(
object) = (
the_rank_of $1);
consider f be
Function such that
A1: (
dom f)
= X and
A2: for x be
object st x
in X holds (f
. x)
=
F(x) from
FUNCT_1:sch 3;
A3: (
rng f)
c=
NAT
proof
let y be
object;
assume y
in (
rng f);
then
consider x be
object such that
A4: x
in X and
A5: y
= (f
. x) by
A1,
FUNCT_1:def 3;
(
the_rank_of x)
in
omega by
A4,
CLASSES1: 66;
hence thesis by
A2,
A4,
A5;
end;
per cases ;
suppose X
=
{} ;
then (
the_rank_of X)
=
0 by
CLASSES1: 71;
hence thesis by
CLASSES1: 66;
end;
suppose X
<>
{} ;
then
reconsider Y = (
rng f) as
finite non
empty
Subset of
NAT by
A1,
A3,
FINSET_1: 8,
RELAT_1: 42;
reconsider mY = (
max Y) as
Element of
NAT by
ORDINAL1:def 12;
set i = (1
+ mY);
X
c= (
Rank i)
proof
let x be
object;
reconsider xx = x as
set by
TARSKI: 1;
assume
A6: x
in X;
then
A7: (f
. x)
in Y by
A1,
FUNCT_1:def 3;
A8: (f
. x)
= (
the_rank_of xx) by
A2,
A6;
reconsider j = (f
. x) as
Element of
NAT by
A7;
j
<= mY by
A7,
XXREAL_2:def 8;
then (
Segm j)
c= (
Segm mY) by
NAT_1: 39;
then
A9: j
in (
succ mY) by
ORDINAL1: 22;
(
succ (
Segm mY))
= (
Segm i) by
NAT_1: 38;
hence thesis by
A8,
A9,
CLASSES1: 66;
end;
then (
the_rank_of X)
c= i by
CLASSES1: 65;
then
A10: (
the_rank_of X)
in (
succ i) by
ORDINAL1: 22;
(
Segm (i
+ 1))
= (
succ (
Segm i)) by
NAT_1: 38;
hence thesis by
A10,
CLASSES1: 66;
end;
end;
theorem ::
ABCMIZ_1:23
Th23:
Vars
c= (
Rank
omega )
proof
consider V be
ManySortedSet of
NAT such that
A1:
Vars
= (
Union V) and
A2: (V
.
0 )
= the set of all
[
{} , i] where i be
Element of
NAT and
A3: for n be
Nat holds (V
. (n
+ 1))
= {
[(
varcl a), j] where a be
Subset of (V
. n), j be
Element of
NAT : a is
finite } by
Def2;
let x be
object;
assume x
in
Vars ;
then
consider i be
object such that
A4: i
in (
dom V) and
A5: x
in (V
. i) by
A1,
CARD_5: 2;
reconsider i as
Element of
NAT by
A4;
defpred
P[
Nat] means (V
. $1)
c= (
Rank
omega );
A6:
P[
0 ]
proof
let x be
object;
assume x
in (V
.
0 );
then
consider i be
Element of
NAT such that
A7: x
=
[
{} , i] by
A2;
A8: (
Segm (i
+ 1))
= (
succ (
Segm i)) by
NAT_1: 38;
A9:
{}
c= i;
A10: i
in (i
+ 1) by
A8,
ORDINAL1: 6;
A11:
{}
in (i
+ 1) by
A8,
A9,
ORDINAL1: 6,
ORDINAL1: 12;
A12: (
the_rank_of
{} )
=
{} by
CLASSES1: 73;
A13: (
the_rank_of i)
= i by
CLASSES1: 73;
A14:
{}
in (
Rank (i
+ 1)) by
A11,
A12,
CLASSES1: 66;
i
in (
Rank (i
+ 1)) by
A10,
A13,
CLASSES1: 66;
then
A15: x
in (
Rank (
succ (
succ (i
+ 1)))) by
A7,
A14,
CLASSES1: 45;
(
succ (
succ (i
+ 1)))
c=
omega ;
then (
Rank (
succ (
succ (i
+ 1))))
c= (
Rank
omega ) by
CLASSES1: 37;
hence thesis by
A15;
end;
A16:
now
let n be
Nat such that
A17:
P[n];
A18: (V
. (n
+ 1))
= {
[(
varcl a), j] where a be
Subset of (V
. n), j be
Element of
NAT : a is
finite } by
A3;
thus
P[(n
+ 1)]
proof
let x be
object;
assume x
in (V
. (n
+ 1));
then
consider a be
Subset of (V
. n), j be
Element of
NAT such that
A19: x
=
[(
varcl a), j] and
A20: a is
finite by
A18;
a
c= (
Rank
omega ) by
A17,
XBOOLE_1: 1;
then a
in (
Rank
omega ) by
A20,
Th22;
then
reconsider i = (
the_rank_of a) as
Element of
NAT by
CLASSES1: 66;
reconsider k = (j
\/ i) as
Element of
NAT by
ORDINAL3: 12;
A21: (
the_rank_of (
varcl a))
= i by
Th21;
A22: (
the_rank_of j)
= j by
CLASSES1: 73;
A23: k
in (
succ k) by
ORDINAL1: 6;
then
A24: i
in (
succ k) by
ORDINAL1: 12,
XBOOLE_1: 7;
A25: j
in (
succ k) by
A23,
ORDINAL1: 12,
XBOOLE_1: 7;
A26: (
succ (
Segm k))
= (
Segm (k
+ 1)) by
NAT_1: 38;
then
A27: (
varcl a)
in (
Rank (k
+ 1)) by
A21,
A24,
CLASSES1: 66;
j
in (
Rank (k
+ 1)) by
A22,
A25,
A26,
CLASSES1: 66;
then
A28: x
in (
Rank (
succ (
succ (k
+ 1)))) by
A19,
A27,
CLASSES1: 45;
(
succ (
succ (k
+ 1)))
c=
omega ;
then (
Rank (
succ (
succ (k
+ 1))))
c= (
Rank
omega ) by
CLASSES1: 37;
hence thesis by
A28;
end;
end;
for n be
Nat holds
P[n] from
NAT_1:sch 2(
A6,
A16);
then (V
. i)
c= (
Rank
omega );
hence thesis by
A5;
end;
theorem ::
ABCMIZ_1:24
Th24: for A be
finite
Subset of
Vars holds (
varcl A) is
finite
Subset of
Vars
proof
let A be
finite
Subset of
Vars ;
A
c= (
Rank
omega ) by
Th23;
then A
in (
Rank
omega ) by
Th22;
then (
the_rank_of A)
in
omega by
CLASSES1: 66;
then (
the_rank_of (
varcl A)) is
finite by
Th21;
hence thesis by
Th9,
Th19,
Th20;
end;
registration
cluster
Vars -> non
empty;
correctness
proof
[
{} ,
0 ]
in the set of all
[
{} , i] where i be
Element of
NAT ;
hence thesis by
Th16;
end;
end
definition
mode
variable is
Element of
Vars ;
end
registration
let x be
variable;
cluster (x
`1 ) ->
finite;
coherence
proof
x
in
Vars ;
then
consider A be
Subset of
Vars , j be
Element of
NAT such that
A1: x
=
[(
varcl A), j] and
A2: A is
finite by
Th18;
(x
`1 )
= (
varcl A) by
A1;
hence thesis by
A2,
Th24;
end;
end
notation
let x be
variable;
synonym
vars x for x
`1 ;
end
definition
let x be
variable;
:: original:
vars
redefine
func
vars x ->
Subset of
Vars ;
coherence
proof
x
in
Vars ;
then
consider A be
Subset of
Vars , j be
Element of
NAT such that
A1: x
=
[(
varcl A), j] and
A2: A is
finite by
Th18;
(x
`1 )
= (
varcl A) by
A1;
hence thesis by
A2,
Th24;
end;
end
theorem ::
ABCMIZ_1:25
[
{} , i]
in
Vars
proof
i
in
NAT by
ORDINAL1:def 12;
then
[
{} , i]
in the set of all
[
{} , j];
hence thesis by
Th16;
end;
theorem ::
ABCMIZ_1:26
Th26: for A be
Subset of
Vars holds (
varcl
{
[(
varcl A), j]})
= ((
varcl A)
\/
{
[(
varcl A), j]})
proof
let A be
Subset of
Vars ;
A1:
{
[(
varcl A), j]}
c= ((
varcl A)
\/
{
[(
varcl A), j]}) by
XBOOLE_1: 7;
A2: (
varcl A)
c= ((
varcl A)
\/
{
[(
varcl A), j]}) by
XBOOLE_1: 7;
now
let x, y;
assume
[x, y]
in ((
varcl A)
\/
{
[(
varcl A), j]});
then
[x, y]
in (
varcl A) or
[x, y]
in
{
[(
varcl A), j]} by
XBOOLE_0:def 3;
then
[x, y]
in (
varcl A) or
[x, y]
=
[(
varcl A), j] by
TARSKI:def 1;
then x
c= (
varcl A) or x
= (
varcl A) by
Def1,
XTUPLE_0: 1;
hence x
c= ((
varcl A)
\/
{
[(
varcl A), j]}) by
A2;
end;
hence (
varcl
{
[(
varcl A), j]})
c= ((
varcl A)
\/
{
[(
varcl A), j]}) by
A1,
Def1;
A3:
{
[(
varcl A), j]}
c= (
varcl
{
[(
varcl A), j]}) by
Def1;
[(
varcl A), j]
in
{
[(
varcl A), j]} by
TARSKI:def 1;
then (
varcl A)
c= (
varcl
{
[(
varcl A), j]}) by
A3,
Def1;
hence thesis by
A3,
XBOOLE_1: 8;
end;
theorem ::
ABCMIZ_1:27
Th27: for x be
variable holds (
varcl
{x})
= ((
vars x)
\/
{x})
proof
let x be
variable;
x
in
Vars ;
then
consider A be
Subset of
Vars , j such that
A1: x
=
[(
varcl A), j] and A is
finite by
Th18;
(
varcl
{x})
= ((
varcl A)
\/
{x}) by
A1,
Th26;
hence thesis by
A1;
end;
theorem ::
ABCMIZ_1:28
for x be
variable holds
[((
vars x)
\/
{x}), i]
in
Vars
proof
let x be
variable;
x
in
Vars ;
then
consider A be
Subset of
Vars , j such that
A1: x
=
[(
varcl A), j] and A is
finite by
Th18;
A2: (
varcl
{x})
= ((
varcl A)
\/
{x}) by
A1,
Th26;
A3: (
vars x)
= (
varcl A) by
A1;
i
in
NAT by
ORDINAL1:def 12;
hence thesis by
A2,
A3,
Th18;
end;
begin
notation
let R be
Relation, A be
set;
synonym R
dom A for R
| A;
end
definition
::
ABCMIZ_1:def3
func
QuasiLoci ->
FinSequenceSet of
Vars means
:
Def3: for p be
FinSequence of
Vars holds p
in it iff p is
one-to-one & for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
dom i));
existence
proof
defpred
P[
object] means ex p be
Function st p
= $1 & p is
one-to-one & for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
| i));
consider L be
set such that
A1: for x be
object holds x
in L iff x
in (
Vars
* ) &
P[x] from
XBOOLE_0:sch 1;
L is
FinSequenceSet of
Vars
proof
let x be
object;
assume x
in L;
then x
in (
Vars
* ) by
A1;
hence thesis by
FINSEQ_1:def 11;
end;
then
reconsider L as
FinSequenceSet of
Vars ;
take L;
let p be
FinSequence of
Vars ;
p
in L iff p
in (
Vars
* ) & ex q be
Function st q
= p & q is
one-to-one & for i st i
in (
dom q) holds ((q
. i)
`1 )
c= (
rng (q
| i)) by
A1;
hence thesis by
FINSEQ_1:def 11;
end;
correctness
proof
let L1,L2 be
FinSequenceSet of
Vars such that
A2: for p be
FinSequence of
Vars holds p
in L1 iff p is
one-to-one & for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
| i qua
set)) and
A3: for p be
FinSequence of
Vars holds p
in L2 iff p is
one-to-one & for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
| i qua
set));
now
let x be
object;
assume
A4: x
in L1;
then
reconsider p = x as
FinSequence of
Vars by
FINSEQ_2:def 3;
A5: p is
one-to-one by
A2,
A4;
for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
| i qua
set)) by
A2,
A4;
hence x
in L2 by
A3,
A5;
end;
let x be
object;
assume
A6: x
in L2;
then
reconsider p = x as
FinSequence of
Vars by
FINSEQ_2:def 3;
A7: p is
one-to-one by
A3,
A6;
for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
| i qua
set)) by
A3,
A6;
hence thesis by
A2,
A7;
end;
end
theorem ::
ABCMIZ_1:29
Th29: (
<*>
Vars )
in
QuasiLoci
proof
reconsider p = (
<*>
Vars ) as
FinSequence of
Vars ;
p is
one-to-one & for i st i
in (
dom p) holds ((p
. i)
`1 )
c= (
rng (p
dom i));
hence thesis by
Def3;
end;
registration
cluster
QuasiLoci -> non
empty;
correctness by
Th29;
end
definition
mode
quasi-loci is
Element of
QuasiLoci ;
end
registration
cluster ->
one-to-one for
quasi-loci;
coherence by
Def3;
end
theorem ::
ABCMIZ_1:30
Th30: for l be
one-to-one
FinSequence of
Vars holds l is
quasi-loci iff for i be
Nat, x be
variable st i
in (
dom l) & x
= (l
. i) holds for y be
variable st y
in (
vars x) holds ex j be
Nat st j
in (
dom l) & j
< i & y
= (l
. j)
proof
let l be
one-to-one
FinSequence of
Vars ;
now
assume
A1: l is
quasi-loci;
let i be
Nat, x be
variable such that
A2: i
in (
dom l) and
A3: x
= (l
. i);
let y be
variable such that
A4: y
in (
vars x);
(
vars x)
c= (
rng (l
| i qua
set)) by
A1,
A2,
A3,
Def3;
then
consider z be
object such that
A5: z
in (
dom (l
dom i)) and
A6: y
= ((l
dom i)
. z) by
A4,
FUNCT_1:def 3;
A7: (
dom (l
dom i))
= ((
dom l)
/\ i) by
RELAT_1: 61;
reconsider z as
Element of
NAT by
A5,
A7;
reconsider j = z as
Nat;
take j;
A8: (
card (
Segm z))
= z;
(
card (
Segm i))
= i;
hence j
in (
dom l) & j
< i & y
= (l
. j) by
A5,
A6,
A7,
A8,
FUNCT_1: 47,
NAT_1: 41,
XBOOLE_0:def 4;
end;
assume
A9: for i be
Nat, x be
variable st i
in (
dom l) & x
= (l
. i) holds for y be
variable st y
in (
vars x) holds ex j be
Nat st j
in (
dom l) & j
< i & y
= (l
. j);
now
let i;
assume
A10: i
in (
dom l);
then (l
. i)
in (
rng l) by
FUNCT_1:def 3;
then
reconsider x = (l
. i) as
variable;
thus ((l
. i)
`1 )
c= (
rng (l
dom i))
proof
let y be
object;
assume y
in ((l
. i)
`1 );
then
A11: y
in (
vars x);
then
reconsider y as
variable;
consider j be
Nat such that
A12: j
in (
dom l) and
A13: j
< i and
A14: y
= (l
. j) by
A9,
A10,
A11;
A15: (
card (
Segm i))
= i;
(
card (
Segm j))
= j;
then j
in i by
A13,
A15,
NAT_1: 41;
hence thesis by
A12,
A14,
FUNCT_1: 50;
end;
end;
hence thesis by
Def3;
end;
theorem ::
ABCMIZ_1:31
Th31: for l be
quasi-loci, x be
variable holds (l
^
<*x*>) is
quasi-loci iff not x
in (
rng l) & (
vars x)
c= (
rng l)
proof
let l be
quasi-loci, x be
variable;
A1: ((l
^
<*x*>)
. (1
+ (
len l)))
= x by
FINSEQ_1: 42;
A2: (
dom (l
^
<*x*>))
= (
Seg ((
len l)
+ (
len
<*x*>))) by
FINSEQ_1:def 7
.= (
Seg ((
len l)
+ 1)) by
FINSEQ_1: 39;
1
<= (1
+ (
len l)) by
NAT_1: 11;
then
A3: (1
+ (
len l))
in (
dom (l
^
<*x*>)) by
A2;
A4: (
dom l)
= (
Seg (
len l)) by
FINSEQ_1:def 3;
now
assume
A5: (l
^
<*x*>) is
quasi-loci;
thus not x
in (
rng l)
proof
assume x
in (
rng l);
then
consider a be
object such that
A6: a
in (
dom l) and
A7: x
= (l
. a) by
FUNCT_1:def 3;
reconsider a as
Element of
NAT by
A6;
A8: ((l
^
<*x*>)
. a)
= x by
A6,
A7,
FINSEQ_1:def 7;
A9: a
<= (
len l) by
A4,
A6,
FINSEQ_1: 1;
A10: (
len l)
< (1
+ (
len l)) by
NAT_1: 13;
(
dom l)
c= (
dom (l
^
<*x*>)) by
FINSEQ_1: 26;
hence thesis by
A1,
A3,
A5,
A6,
A8,
A9,
A10,
FUNCT_1:def 4;
end;
thus (
vars x)
c= (
rng l)
proof
let a be
object;
assume
A11: a
in (
vars x);
then
reconsider a as
variable;
consider j be
Nat such that
A12: j
in (
dom (l
^
<*x*>)) and
A13: j
< (1
+ (
len l)) and
A14: a
= ((l
^
<*x*>)
. j) by
A1,
A3,
A5,
A11,
Th30;
reconsider j as
Element of
NAT by
ORDINAL1:def 12;
A15: j
<= (
len l) by
A13,
NAT_1: 13;
j
>= 1 by
A2,
A12,
FINSEQ_1: 1;
then
A16: j
in (
dom l) by
A4,
A15;
then a
= (l
. j) by
A14,
FINSEQ_1:def 7;
hence thesis by
A16,
FUNCT_1:def 3;
end;
end;
assume that
A17: not x
in (
rng l) and
A18: (
vars x)
c= (
rng l);
A19: (l
^
<*x*>) is
one-to-one
proof
let a,b be
object;
assume that
A20: a
in (
dom (l
^
<*x*>)) and
A21: b
in (
dom (l
^
<*x*>)) and
A22: ((l
^
<*x*>)
. a)
= ((l
^
<*x*>)
. b);
reconsider a, b as
Element of
NAT by
A20,
A21;
A23: a
>= 1 by
A2,
A20,
FINSEQ_1: 1;
A24: b
>= 1 by
A2,
A21,
FINSEQ_1: 1;
A25: a
<= (1
+ (
len l)) by
A2,
A20,
FINSEQ_1: 1;
A26: b
<= (1
+ (
len l)) by
A2,
A21,
FINSEQ_1: 1;
A27: a
<= (
len l) or a
= (1
+ (
len l)) by
A25,
NAT_1: 8;
A28: b
<= (
len l) or b
= (1
+ (
len l)) by
A26,
NAT_1: 8;
A29: a
in (
dom l) or a
= (1
+ (
len l)) by
A4,
A23,
A27;
A30: b
in (
dom l) or b
= (1
+ (
len l)) by
A4,
A24,
A28;
A31: a
in (
dom l) & (l
. a)
= ((l
^
<*x*>)
. a) & (l
. a)
in (
rng l) or a
= (1
+ (
len l)) by
A29,
FINSEQ_1:def 7,
FUNCT_1:def 3;
b
in (
dom l) & (l
. b)
= ((l
^
<*x*>)
. b) & (l
. b)
in (
rng l) or b
= (1
+ (
len l)) by
A30,
FINSEQ_1:def 7,
FUNCT_1:def 3;
hence thesis by
A17,
A22,
A31,
FINSEQ_1: 42,
FUNCT_1:def 4;
end;
now
let i be
Nat, z be
variable;
assume that
A32: i
in (
dom (l
^
<*x*>)) and
A33: z
= ((l
^
<*x*>)
. i);
A34: i
>= 1 by
A2,
A32,
FINSEQ_1: 1;
i
<= (1
+ (
len l)) by
A2,
A32,
FINSEQ_1: 1;
then i
<= (
len l) or i
= (1
+ (
len l)) by
NAT_1: 8;
then
A35: i
in (
dom l) or i
= (1
+ (
len l)) & z
= x by
A4,
A33,
A34,
FINSEQ_1: 42;
let y be
variable;
assume
A36: y
in (
vars z);
thus ex j be
Nat st j
in (
dom (l
^
<*x*>)) & j
< i & y
= ((l
^
<*x*>)
. j)
proof
per cases by
A33,
A35,
FINSEQ_1:def 7;
suppose
A37: i
= (1
+ (
len l)) & z
= x;
then
consider k be
object such that
A38: k
in (
dom l) and
A39: y
= (l
. k) by
A18,
A36,
FUNCT_1:def 3;
reconsider k as
Element of
NAT by
A38;
take k;
A40: (
dom l)
c= (
dom (l
^
<*x*>)) by
FINSEQ_1: 26;
k
<= (
len l) by
A4,
A38,
FINSEQ_1: 1;
hence thesis by
A37,
A38,
A39,
A40,
FINSEQ_1:def 7,
NAT_1: 13;
end;
suppose i
in (
dom l) & z
= (l
. i);
then
consider j be
Nat such that
A41: j
in (
dom l) and
A42: j
< i and
A43: y
= (l
. j) by
A36,
Th30;
take j;
(
dom l)
c= (
dom (l
^
<*x*>)) by
FINSEQ_1: 26;
hence thesis by
A41,
A42,
A43,
FINSEQ_1:def 7;
end;
end;
end;
hence thesis by
A19,
Th30;
end;
theorem ::
ABCMIZ_1:32
Th32: for p,q be
FinSequence st (p
^ q) is
quasi-loci holds p is
quasi-loci & q is
FinSequence of
Vars
proof
let p,q be
FinSequence;
assume
A1: (p
^ q) is
quasi-loci;
then
A2: p is
one-to-one
FinSequence of
Vars by
FINSEQ_1: 36,
FINSEQ_3: 91;
now
let i be
Nat, x be
variable such that
A3: i
in (
dom p) and
A4: x
= (p
. i);
let y be
variable such that
A5: y
in (
vars x);
A6: (
dom p)
c= (
dom (p
^ q)) by
FINSEQ_1: 26;
x
= ((p
^ q)
. i) by
A3,
A4,
FINSEQ_1:def 7;
then
consider j be
Nat such that
A7: j
in (
dom (p
^ q)) and
A8: j
< i and
A9: y
= ((p
^ q)
. j) by
A1,
A3,
A5,
A6,
Th30;
take j;
A10: (
dom p)
= (
Seg (
len p)) by
FINSEQ_1:def 3;
(
dom (p
^ q))
= (
Seg (
len (p
^ q))) by
FINSEQ_1:def 3;
then
A11: j
>= 1 by
A7,
FINSEQ_1: 1;
i
<= (
len p) by
A3,
A10,
FINSEQ_1: 1;
then j
< (
len p) by
A8,
XXREAL_0: 2;
hence j
in (
dom p) & j
< i by
A8,
A10,
A11;
hence y
= (p
. j) by
A9,
FINSEQ_1:def 7;
end;
hence thesis by
A1,
A2,
Th30,
FINSEQ_1: 36;
end;
theorem ::
ABCMIZ_1:33
for l be
quasi-loci holds (
varcl (
rng l))
= (
rng l)
proof
let l be
quasi-loci;
now
let x, y;
assume
A1:
[x, y]
in (
rng l);
then
reconsider xy =
[x, y] as
variable;
consider i be
object such that
A2: i
in (
dom l) and
A3: xy
= (l
. i) by
A1,
FUNCT_1:def 3;
reconsider i as
Nat by
A2;
A4: (
vars xy)
= x;
thus x
c= (
rng l)
proof
let a be
object;
assume
A5: a
in x;
then
reconsider a as
variable by
A4;
ex j be
Nat st j
in (
dom l) & j
< i & a
= (l
. j) by
A2,
A3,
A4,
A5,
Th30;
hence thesis by
FUNCT_1:def 3;
end;
end;
hence (
varcl (
rng l))
c= (
rng l) by
Def1;
thus thesis by
Def1;
end;
theorem ::
ABCMIZ_1:34
Th34: for x be
variable holds
<*x*> is
quasi-loci iff (
vars x)
=
{}
proof
let x be
variable;
A1:
<*x*>
= ((
<*>
Vars )
^
<*x*>) by
FINSEQ_1: 34;
A2: (
rng
{} )
=
{} ;
(
vars x)
c=
{} implies (
vars x)
=
{} ;
hence thesis by
A1,
A2,
Th29,
Th31;
end;
theorem ::
ABCMIZ_1:35
Th35: for x,y be
variable holds
<*x, y*> is
quasi-loci iff (
vars x)
=
{} & x
<> y & (
vars y)
c=
{x}
proof
let x,y be
variable;
A1: (
rng
<*x*>)
=
{x} by
FINSEQ_1: 38;
A2:
<*x*> is
quasi-loci iff (
vars x)
=
{} by
Th34;
y
in
{x} iff y
= x by
TARSKI:def 1;
hence thesis by
A1,
A2,
Th31,
Th32;
end;
theorem ::
ABCMIZ_1:36
for x,y,z be
variable holds
<*x, y, z*> is
quasi-loci iff (
vars x)
=
{} & x
<> y & (
vars y)
c=
{x} & x
<> z & y
<> z & (
vars z)
c=
{x, y}
proof
let x,y,z be
variable;
A1: (
rng
<*x, y*>)
=
{x, y} by
FINSEQ_2: 127;
A2:
<*x, y*> is
quasi-loci iff (
vars x)
=
{} & x
<> y & (
vars y)
c=
{x} by
Th35;
z
in
{x, y} iff z
= x or z
= y by
TARSKI:def 2;
hence thesis by
A1,
A2,
Th31,
Th32;
end;
definition
let l be
quasi-loci;
:: original:
"
redefine
func l
" ->
PartFunc of
Vars ,
NAT ;
coherence
proof
A1: (
dom (l
" ))
= (
rng l) by
FUNCT_1: 33;
(
rng (l
" ))
= (
dom l) by
FUNCT_1: 33;
hence thesis by
A1,
RELSET_1: 4;
end;
end
begin
definition
::
ABCMIZ_1:def4
func
a_Type ->
set equals
0 ;
coherence ;
::
ABCMIZ_1:def5
func
an_Adj ->
set equals 1;
coherence ;
::
ABCMIZ_1:def6
func
a_Term ->
set equals 2;
coherence ;
::
ABCMIZ_1:def7
func
* ->
set equals
0 ;
coherence ;
::
ABCMIZ_1:def8
func
non_op ->
set equals 1;
coherence ;
end
definition
let C be
Signature;
::
ABCMIZ_1:def9
attr C is
constructor means
:
Def9: the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } &
{
* ,
non_op }
c= the
carrier' of C & (the
Arity of C
.
* )
=
<*
an_Adj ,
a_Type *> & (the
Arity of C
.
non_op )
=
<*
an_Adj *> & (the
ResultSort of C
.
* )
=
a_Type & (the
ResultSort of C
.
non_op )
=
an_Adj & for o be
Element of the
carrier' of C st o
<>
* & o
<>
non_op holds (the
Arity of C
. o)
in (
{
a_Term }
* );
end
registration
cluster
constructor -> non
empty non
void for
Signature;
coherence ;
end
definition
::
ABCMIZ_1:def10
func
MinConstrSign ->
strict
Signature means
:
Def10: it is
constructor & the
carrier' of it
=
{
* ,
non_op };
existence
proof
set A =
{
a_Type ,
an_Adj ,
a_Term };
reconsider t =
a_Type , a =
an_Adj as
Element of A by
ENUMSET1:def 1;
reconsider aa =
<*a*> as
Element of (A
* );
set C =
ManySortedSign (# A,
{
* ,
non_op }, ((
* ,
non_op )
--> (
<*a, t*>,aa)), ((
* ,
non_op )
--> (t,a)) #);
reconsider C as non
void non
empty
strict
ManySortedSign;
take C;
thus the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } &
{
* ,
non_op }
c= the
carrier' of C;
thus (the
Arity of C
.
* )
=
<*
an_Adj ,
a_Type *> by
FUNCT_4: 63;
thus (the
Arity of C
.
non_op )
=
<*
an_Adj *> by
FUNCT_4: 63;
thus (the
ResultSort of C
.
* )
=
a_Type by
FUNCT_4: 63;
thus (the
ResultSort of C
.
non_op )
=
an_Adj by
FUNCT_4: 63;
thus thesis by
TARSKI:def 2;
end;
correctness
proof
let C1,C2 be
strict
Signature such that
A1: C1 is
constructor and
A2: the
carrier' of C1
=
{
* ,
non_op } and
A3: C2 is
constructor and
A4: the
carrier' of C2
=
{
* ,
non_op };
set A =
{
a_Type ,
an_Adj ,
a_Term };
A5: the
carrier of C1
= A by
A1;
A6: the
carrier of C2
= A by
A3;
A7: (the
Arity of C1
.
* )
=
<*
an_Adj ,
a_Type *> by
A1;
A8: (the
Arity of C2
.
* )
=
<*
an_Adj ,
a_Type *> by
A3;
A9: (the
Arity of C1
.
non_op )
=
<*
an_Adj *> by
A1;
A10: (the
Arity of C2
.
non_op )
=
<*
an_Adj *> by
A3;
A11: (the
ResultSort of C1
.
* )
=
a_Type by
A1;
A12: (the
ResultSort of C2
.
* )
=
a_Type by
A3;
A13: (the
ResultSort of C1
.
non_op )
=
an_Adj by
A1;
A14: (the
ResultSort of C2
.
non_op )
=
an_Adj by
A3;
A15: (
dom the
Arity of C1)
=
{
* ,
non_op } by
A2,
FUNCT_2:def 1;
A16: (
dom the
Arity of C2)
=
{
* ,
non_op } by
A4,
FUNCT_2:def 1;
A17: the
Arity of C1
= ((
* ,
non_op )
--> (
<*
an_Adj ,
a_Type *>,
<*
an_Adj *>)) by
A7,
A9,
A15,
FUNCT_4: 66;
A18: the
Arity of C2
= ((
* ,
non_op )
--> (
<*
an_Adj ,
a_Type *>,
<*
an_Adj *>)) by
A8,
A10,
A16,
FUNCT_4: 66;
A19: (
dom the
ResultSort of C1)
=
{
* ,
non_op } by
A1,
A2,
FUNCT_2:def 1;
A20: (
dom the
ResultSort of C2)
=
{
* ,
non_op } by
A3,
A4,
FUNCT_2:def 1;
the
ResultSort of C1
= ((
* ,
non_op )
--> (
a_Type ,
an_Adj )) by
A11,
A13,
A19,
FUNCT_4: 66;
hence thesis by
A2,
A4,
A5,
A6,
A12,
A14,
A17,
A18,
A20,
FUNCT_4: 66;
end;
end
registration
cluster
MinConstrSign ->
constructor;
coherence by
Def10;
end
registration
cluster
constructor
strict for
Signature;
existence
proof
take
MinConstrSign ;
thus thesis;
end;
end
definition
mode
ConstructorSignature is
constructor
Signature;
end
definition
let C be
ConstructorSignature;
let o be
OperSymbol of C;
::
ABCMIZ_1:def11
attr o is
constructor means
:
Def11: o
<>
* & o
<>
non_op ;
end
theorem ::
ABCMIZ_1:37
for S be
ConstructorSignature holds for o be
OperSymbol of S st o is
constructor holds (
the_arity_of o)
= ((
len (
the_arity_of o))
|->
a_Term )
proof
let S be
ConstructorSignature;
let o be
OperSymbol of S such that
A1: o
<>
* and
A2: o
<>
non_op ;
reconsider t =
a_Term as
Element of
{
a_Term } by
TARSKI:def 1;
A3: (
len ((
len (
the_arity_of o))
|->
a_Term ))
= (
len (
the_arity_of o)) by
CARD_1:def 7;
A4: (
the_arity_of o)
in (
{
a_Term }
* ) by
A1,
A2,
Def9;
((
len (
the_arity_of o))
|-> t)
in (
{
a_Term }
* ) by
FINSEQ_1:def 11;
hence thesis by
A3,
A4,
Th6;
end;
definition
let C be non
empty non
void
Signature;
::
ABCMIZ_1:def12
attr C is
initialized means
:
Def12: ex m,a be
OperSymbol of C st (
the_result_sort_of m)
=
a_Type & (
the_arity_of m)
=
{} & (
the_result_sort_of a)
=
an_Adj & (
the_arity_of a)
=
{} ;
end
definition
let C be
ConstructorSignature;
A1: the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
::
ABCMIZ_1:def13
func
a_Type C ->
SortSymbol of C equals
a_Type ;
coherence by
A1,
ENUMSET1:def 1;
::
ABCMIZ_1:def14
func
an_Adj C ->
SortSymbol of C equals
an_Adj ;
coherence by
A1,
ENUMSET1:def 1;
::
ABCMIZ_1:def15
func
a_Term C ->
SortSymbol of C equals
a_Term ;
coherence by
A1,
ENUMSET1:def 1;
A2:
{
* ,
non_op }
c= the
carrier' of C by
Def9;
A3:
*
in
{
* ,
non_op } by
TARSKI:def 2;
A4:
non_op
in
{
* ,
non_op } by
TARSKI:def 2;
::
ABCMIZ_1:def16
func
non_op C ->
OperSymbol of C equals
non_op ;
coherence by
A2,
A4;
::
ABCMIZ_1:def17
func
ast C ->
OperSymbol of C equals
* ;
coherence by
A2,
A3;
end
theorem ::
ABCMIZ_1:38
for C be
ConstructorSignature holds (
the_arity_of (
non_op C))
=
<*(
an_Adj C)*> & (
the_result_sort_of (
non_op C))
= (
an_Adj C) & (
the_arity_of (
ast C))
=
<*(
an_Adj C), (
a_Type C)*> & (
the_result_sort_of (
ast C))
= (
a_Type C) by
Def9;
definition
::
ABCMIZ_1:def18
func
Modes ->
set equals
[:
{
a_Type },
[:
QuasiLoci ,
NAT :]:];
correctness ;
::
ABCMIZ_1:def19
func
Attrs ->
set equals
[:
{
an_Adj },
[:
QuasiLoci ,
NAT :]:];
correctness ;
::
ABCMIZ_1:def20
func
Funcs ->
set equals
[:
{
a_Term },
[:
QuasiLoci ,
NAT :]:];
correctness ;
end
registration
cluster
Modes -> non
empty;
coherence ;
cluster
Attrs -> non
empty;
coherence ;
cluster
Funcs -> non
empty;
coherence ;
end
definition
::
ABCMIZ_1:def21
func
Constructors -> non
empty
set equals ((
Modes
\/
Attrs )
\/
Funcs );
coherence ;
end
theorem ::
ABCMIZ_1:39
{
* ,
non_op }
misses
Constructors
proof
assume not thesis;
then
consider x be
object such that
A1: x
in
{
* ,
non_op } and
A2: x
in
Constructors by
XBOOLE_0: 3;
x
in (
Modes
\/
Attrs ) or x
in
Funcs by
A2,
XBOOLE_0:def 3;
then x
in
Modes or x
in
Attrs or x
in
Funcs by
XBOOLE_0:def 3;
then
consider Y,Z be
set such that
A3: x
in
[:Y, Z:];
A4: ex y,z be
object st (y
in Y) & (z
in Z) & (
[y, z]
= x) by
A3,
ZFMISC_1:def 2;
reconsider x as
set by
TARSKI: 1;
x
=
* or x
=
non_op by
A1,
TARSKI:def 2;
then (
the_rank_of x)
=
0 or (
the_rank_of x)
= 1 by
CLASSES1: 73;
then (
the_rank_of x)
c= 1;
then (
the_rank_of x)
in (
succ (
succ
{} )) by
ORDINAL1: 6,
ORDINAL1: 12;
then x
in (
Rank (
succ (
succ
{} ))) by
CLASSES1: 66;
hence thesis by
A4,
CLASSES1: 29,
CLASSES1: 45;
end;
definition
let x be
Element of
[:
QuasiLoci ,
NAT :];
:: original:
`1
redefine
func x
`1 ->
quasi-loci ;
coherence by
MCART_1: 10;
:: original:
`2
redefine
func x
`2 ->
Element of
NAT ;
coherence by
MCART_1: 10;
end
notation
let c be
Element of
Constructors ;
synonym
kind_of c for c
`1 ;
end
definition
let c be
Element of
Constructors ;
:: original:
kind_of
redefine
func
kind_of c ->
Element of
{
a_Type ,
an_Adj ,
a_Term } ;
coherence
proof
c
in (
Modes
\/
Attrs ) or c
in
Funcs by
XBOOLE_0:def 3;
then c
in
Modes or c
in
Attrs or c
in
Funcs by
XBOOLE_0:def 3;
then (c
`1 )
in
{
a_Type } or (c
`1 )
in
{
an_Adj } or (c
`1 )
in
{
a_Term } by
MCART_1: 10;
then (c
`1 )
=
a_Type or (c
`1 )
=
an_Adj or (c
`1 )
=
a_Term by
TARSKI:def 1;
hence thesis by
ENUMSET1:def 1;
end;
:: original:
`2
redefine
func c
`2 ->
Element of
[:
QuasiLoci ,
NAT :] ;
coherence
proof
c
in (
Modes
\/
Attrs ) or c
in
Funcs by
XBOOLE_0:def 3;
then c
in
Modes or c
in
Attrs or c
in
Funcs by
XBOOLE_0:def 3;
hence thesis by
MCART_1: 10;
end;
end
definition
let c be
Element of
Constructors ;
::
ABCMIZ_1:def22
func
loci_of c ->
quasi-loci equals ((c
`2 )
`1 );
coherence ;
::
ABCMIZ_1:def23
func
index_of c ->
Nat equals ((c
`2 )
`2 );
coherence ;
end
theorem ::
ABCMIZ_1:40
for c be
Element of
Constructors holds ((
kind_of c)
=
a_Type iff c
in
Modes ) & ((
kind_of c)
=
an_Adj iff c
in
Attrs ) & ((
kind_of c)
=
a_Term iff c
in
Funcs )
proof
let x be
Element of
Constructors ;
A1: x
in (
Modes
\/
Attrs ) or x
in
Funcs by
XBOOLE_0:def 3;
A2: x
in
Modes implies (x
`1 )
in
{
a_Type } by
MCART_1: 10;
A3: x
in
Attrs implies (x
`1 )
in
{
an_Adj } by
MCART_1: 10;
x
in
Funcs implies (x
`1 )
in
{
a_Term } by
MCART_1: 10;
hence thesis by
A1,
A2,
A3,
TARSKI:def 1,
XBOOLE_0:def 3;
end;
definition
::
ABCMIZ_1:def24
func
MaxConstrSign ->
strict
ConstructorSignature means
:
Def24: the
carrier' of it
= (
{
* ,
non_op }
\/
Constructors ) & for o be
OperSymbol of it st o is
constructor holds (the
ResultSort of it
. o)
= (o
`1 ) & (
card (the
Arity of it
. o))
= (
card ((o
`2 )
`1 ));
existence
proof
set S =
{
a_Type ,
an_Adj ,
a_Term };
set O = (
{
* ,
non_op }
\/
Constructors );
deffunc
F(
Element of
Constructors ) = ((
len (
loci_of $1))
|->
a_Term );
consider f be
ManySortedSet of
Constructors such that
A1: for c be
Element of
Constructors holds (f
. c)
=
F(c) from
PBOOLE:sch 5;
deffunc
G(
Element of
Constructors ) = (
kind_of $1);
consider g be
ManySortedSet of
Constructors such that
A2: for c be
Element of
Constructors holds (g
. c)
=
G(c) from
PBOOLE:sch 5;
reconsider t =
a_Type , a =
an_Adj , tr =
a_Term as
Element of S by
ENUMSET1:def 1;
reconsider aa =
<*a*> as
Element of (S
* );
set A = (f
+* ((
* ,
non_op )
--> (
<*a, t*>,aa)));
set R = (g
+* ((
* ,
non_op )
--> (t,a)));
A3: (
dom ((
* ,
non_op )
--> (
<*a, t*>,aa)))
=
{
* ,
non_op } by
FUNCT_4: 62;
A4: (
dom ((
* ,
non_op )
--> (t,a)))
=
{
* ,
non_op } by
FUNCT_4: 62;
A5: (
dom f)
=
Constructors by
PARTFUN1:def 2;
A6: (
dom g)
=
Constructors by
PARTFUN1:def 2;
A7: (
dom A)
= O by
A3,
A5,
FUNCT_4:def 1;
A8: (
dom R)
= O by
A4,
A6,
FUNCT_4:def 1;
(
rng f)
c= (S
* )
proof
let y be
object;
assume y
in (
rng f);
then
consider x be
object such that
A9: x
in
Constructors and
A10: y
= (f
. x) by
A5,
FUNCT_1:def 3;
reconsider x as
Element of
Constructors by
A9;
y
= ((
len (
loci_of x))
|-> tr) by
A1,
A10;
hence thesis by
FINSEQ_1:def 11;
end;
then
A11: ((
rng f)
\/ (
rng ((
* ,
non_op )
--> (
<*a, t*>,aa))))
c= ((S
* )
\/ (S
* )) by
XBOOLE_1: 13;
(
rng g)
c= S
proof
let y be
object;
assume y
in (
rng g);
then
consider x be
object such that
A12: x
in
Constructors and
A13: y
= (g
. x) by
A6,
FUNCT_1:def 3;
reconsider x as
Element of
Constructors by
A12;
y
= (
kind_of x) by
A2,
A13;
hence thesis;
end;
then
A14: ((
rng g)
\/ (
rng ((
* ,
non_op )
--> (t,a))))
c= (S
\/ S) by
XBOOLE_1: 13;
(
rng A)
c= ((
rng f)
\/ (
rng ((
* ,
non_op )
--> (
<*a, t*>,aa)))) by
FUNCT_4: 17;
then
reconsider A as
Function of O, (S
* ) by
A7,
A11,
FUNCT_2: 2,
XBOOLE_1: 1;
(
rng R)
c= ((
rng g)
\/ (
rng ((
* ,
non_op )
--> (t,a)))) by
FUNCT_4: 17;
then
reconsider R as
Function of O, S by
A8,
A14,
FUNCT_2: 2,
XBOOLE_1: 1;
reconsider Max =
ManySortedSign (# S, O, A, R #) as non
empty non
void
strict
Signature;
Max is
constructor
proof
thus the
carrier of Max
=
{
a_Type ,
an_Adj ,
a_Term };
thus
{
* ,
non_op }
c= the
carrier' of Max by
XBOOLE_1: 7;
A15:
*
in
{
* ,
non_op } by
TARSKI:def 2;
A16:
non_op
in
{
* ,
non_op } by
TARSKI:def 2;
thus (the
Arity of Max
.
* )
= (((
* ,
non_op )
--> (
<*a, t*>,aa))
.
* ) by
A3,
A15,
FUNCT_4: 13
.=
<*
an_Adj ,
a_Type *> by
FUNCT_4: 63;
thus (the
Arity of Max
.
non_op )
= (((
* ,
non_op )
--> (
<*a, t*>,aa))
.
non_op ) by
A3,
A16,
FUNCT_4: 13
.=
<*
an_Adj *> by
FUNCT_4: 63;
thus (the
ResultSort of Max
.
* )
= (((
* ,
non_op )
--> (t,a))
.
* ) by
A4,
A15,
FUNCT_4: 13
.=
a_Type by
FUNCT_4: 63;
thus (the
ResultSort of Max
.
non_op )
= (((
* ,
non_op )
--> (t,a))
.
non_op ) by
A4,
A16,
FUNCT_4: 13
.=
an_Adj by
FUNCT_4: 63;
let o be
Element of the
carrier' of Max;
assume that
A17: o
<>
* and
A18: o
<>
non_op ;
A19: not o
in
{
* ,
non_op } by
A17,
A18,
TARSKI:def 2;
then
reconsider c = o as
Element of
Constructors by
XBOOLE_0:def 3;
reconsider tr as
Element of
{
a_Term } by
TARSKI:def 1;
(the
Arity of Max
. o)
= (f
. c) by
A3,
A5,
A19,
FUNCT_4:def 1
.= ((
len (
loci_of c))
|-> tr) by
A1;
hence (the
Arity of Max
. o)
in (
{
a_Term }
* ) by
FINSEQ_1:def 11;
end;
then
reconsider Max as
strict
ConstructorSignature;
take Max;
thus the
carrier' of Max
= (
{
* ,
non_op }
\/
Constructors );
let o be
OperSymbol of Max;
assume that
A20: o
<>
* and
A21: o
<>
non_op ;
A22: not o
in
{
* ,
non_op } by
A20,
A21,
TARSKI:def 2;
then
reconsider c = o as
Element of
Constructors by
XBOOLE_0:def 3;
thus (the
ResultSort of Max
. o)
= (g
. c) by
A4,
A6,
A22,
FUNCT_4:def 1
.= (o
`1 ) by
A2;
thus (
card (the
Arity of Max
. o))
= (
card (f
. c)) by
A3,
A5,
A22,
FUNCT_4:def 1
.= (
card
F(c)) by
A1
.= (
card ((o
`2 )
`1 )) by
CARD_1:def 7;
end;
uniqueness
proof
let it1,it2 be
strict
ConstructorSignature such that
A23: the
carrier' of it1
= (
{
* ,
non_op }
\/
Constructors ) and
A24: for o be
OperSymbol of it1 st o is
constructor holds (the
ResultSort of it1
. o)
= (o
`1 ) & (
card (the
Arity of it1
. o))
= (
card ((o
`2 )
`1 )) and
A25: the
carrier' of it2
= (
{
* ,
non_op }
\/
Constructors ) and
A26: for o be
OperSymbol of it2 st o is
constructor holds (the
ResultSort of it2
. o)
= (o
`1 ) & (
card (the
Arity of it2
. o))
= (
card ((o
`2 )
`1 ));
set S =
{
a_Type ,
an_Adj ,
a_Term };
A27: the
carrier of it1
= S by
Def9;
A28: the
carrier of it2
= S by
Def9;
A29:
now
let c be
Element of
Constructors ;
reconsider o1 = c as
OperSymbol of it1 by
A23,
XBOOLE_0:def 3;
reconsider o2 = o1 as
OperSymbol of it2 by
A23,
A25;
assume that
A30: c
<>
* and
A31: c
<>
non_op ;
A32: o1 is
constructor by
A30,
A31;
A33: o2 is
constructor by
A30,
A31;
A34: (
card (the
Arity of it1
. o1))
= (
card ((c
`2 )
`1 )) by
A24,
A32;
A35: (
card (the
Arity of it2
. o2))
= (
card ((c
`2 )
`1 )) by
A26,
A33;
A36: (the
Arity of it1
. o1)
in (
{
a_Term }
* ) by
A30,
A31,
Def9;
(the
Arity of it2
. o2)
in (
{
a_Term }
* ) by
A30,
A31,
Def9;
then
reconsider p1 = (the
Arity of it1
. o1), p2 = (the
Arity of it2
. o2) as
FinSequence of
{
a_Term } by
A36,
FINSEQ_1:def 11;
A37: (
dom p1)
= (
Seg (
len p1)) by
FINSEQ_1:def 3;
A38: (
dom p2)
= (
Seg (
len p2)) by
FINSEQ_1:def 3;
now
let i be
Nat;
assume
A39: i
in (
dom p1);
then
A40: (p1
. i)
in (
rng p1) by
FUNCT_1:def 3;
A41: (p2
. i)
in (
rng p2) by
A34,
A35,
A37,
A38,
A39,
FUNCT_1:def 3;
(p1
. i)
=
a_Term by
A40,
TARSKI:def 1;
hence (p1
. i)
= (p2
. i) by
A41,
TARSKI:def 1;
end;
hence (the
Arity of it1
. c)
= (the
Arity of it2
. c) by
A34,
A35,
A37,
A38;
end;
now
let o be
OperSymbol of it1;
o
in
{
* ,
non_op } or not o
in
{
* ,
non_op };
then o
=
* or o
=
non_op or o
in
Constructors & o
<>
* & o
<>
non_op by
A23,
TARSKI:def 2,
XBOOLE_0:def 3;
then (the
Arity of it1
. o)
=
<*
an_Adj ,
a_Type *> & (the
Arity of it2
. o)
=
<*
an_Adj ,
a_Type *> or (the
Arity of it1
. o)
=
<*
an_Adj *> & (the
Arity of it2
. o)
=
<*
an_Adj *> or (the
Arity of it1
. o)
= (the
Arity of it2
. o) by
A29,
Def9;
hence (the
Arity of it1
. o)
= (the
Arity of it2
. o);
end;
then
A42: the
Arity of it1
= the
Arity of it2 by
A23,
A25,
A27,
A28,
FUNCT_2: 63;
now
let o be
OperSymbol of it1;
reconsider o9 = o as
OperSymbol of it2 by
A23,
A25;
not o
in
{
* ,
non_op } or o
in
{
* ,
non_op };
then o
=
* or o
=
non_op or o
in
Constructors & o is
constructor & o9 is
constructor by
A23,
TARSKI:def 2,
XBOOLE_0:def 3;
then (the
ResultSort of it1
. o)
=
a_Type & (the
ResultSort of it2
. o)
=
a_Type or (the
ResultSort of it1
. o)
=
an_Adj & (the
ResultSort of it2
. o)
=
an_Adj or (the
ResultSort of it1
. o)
= (o
`1 ) & (the
ResultSort of it2
. o)
= (o
`1 ) by
A24,
A26,
Def9;
hence (the
ResultSort of it1
. o)
= (the
ResultSort of it2
. o);
end;
hence thesis by
A23,
A25,
A27,
A28,
A42,
FUNCT_2: 63;
end;
end
registration
cluster
MinConstrSign -> non
initialized;
correctness
proof
given m,a be
OperSymbol of
MinConstrSign such that (
the_result_sort_of m)
=
a_Type and
A1: (
the_arity_of m)
=
{} and (
the_result_sort_of a)
=
an_Adj and (
the_arity_of a)
=
{} ;
the
carrier' of
MinConstrSign
=
{
* ,
non_op } by
Def10;
then m
=
* or m
=
non_op by
TARSKI:def 2;
hence contradiction by
A1,
Def9;
end;
cluster
MaxConstrSign ->
initialized;
correctness
proof
set m =
[
a_Type ,
[
{} ,
0 ]], a =
[
an_Adj ,
[
{} ,
0 ]];
A2:
a_Type
in
{
a_Type } by
TARSKI:def 1;
A3:
an_Adj
in
{
an_Adj } by
TARSKI:def 1;
A4:
[(
<*>
Vars ),
0 ]
in
[:
QuasiLoci ,
NAT :] by
Th29,
ZFMISC_1:def 2;
then
A5: m
in
Modes by
A2,
ZFMISC_1:def 2;
A6: a
in
Attrs by
A3,
A4,
ZFMISC_1:def 2;
A7: m
in (
Modes
\/
Attrs ) by
A5,
XBOOLE_0:def 3;
A8: a
in (
Modes
\/
Attrs ) by
A6,
XBOOLE_0:def 3;
A9: m
in
Constructors by
A7,
XBOOLE_0:def 3;
A10: a
in
Constructors by
A8,
XBOOLE_0:def 3;
the
carrier' of
MaxConstrSign
= (
{
* ,
non_op }
\/
Constructors ) by
Def24;
then
reconsider m, a as
OperSymbol of
MaxConstrSign by
A9,
A10,
XBOOLE_0:def 3;
A11: m is
constructor;
A12: a is
constructor;
take m, a;
thus (
the_result_sort_of m)
= (m
`1 ) by
A11,
Def24
.=
a_Type ;
(
len (
the_arity_of m))
= (
card ((m
`2 )
`1 )) by
A11,
Def24
.= (
card (
[
{} ,
0 ]
`1 ))
.=
0 ;
hence (
the_arity_of m)
=
{} ;
thus (
the_result_sort_of a)
= (a
`1 ) by
A12,
Def24
.=
an_Adj ;
(
len (
the_arity_of a))
= (
card ((a
`2 )
`1 )) by
A12,
Def24
.= (
card (
[
{} ,
0 ]
`1 ))
.=
0 ;
hence thesis;
end;
end
registration
cluster
initialized
strict for
ConstructorSignature;
correctness
proof
take
MaxConstrSign ;
thus thesis;
end;
end
registration
let C be
initialized
ConstructorSignature;
cluster
constructor for
OperSymbol of C;
existence
proof
consider m,a be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
a_Type and
A2: (
the_arity_of m)
=
{} and (
the_result_sort_of a)
=
an_Adj and (
the_arity_of a)
=
{} by
Def12;
take m;
thus m
<>
* by
A2,
Def9;
thus thesis by
A1,
Def9;
end;
end
begin
definition
let C be
ConstructorSignature;
A1: the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
::
ABCMIZ_1:def25
func
MSVars C ->
ManySortedSet of the
carrier of C means
:
Def25: (it
.
a_Type )
=
{} & (it
.
an_Adj )
=
{} & (it
.
a_Term )
=
Vars ;
uniqueness
proof
let V1,V2 be
ManySortedSet of the
carrier of C such that
A2: (V1
.
a_Type )
=
{} and
A3: (V1
.
an_Adj )
=
{} and
A4: (V1
.
a_Term )
=
Vars and
A5: (V2
.
a_Type )
=
{} and
A6: (V2
.
an_Adj )
=
{} and
A7: (V2
.
a_Term )
=
Vars ;
now
let x be
object;
assume x
in the
carrier of C;
then x
=
a_Type or x
=
an_Adj or x
=
a_Term by
A1,
ENUMSET1:def 1;
hence (V1
. x)
= (V2
. x) by
A2,
A3,
A4,
A5,
A6,
A7;
end;
hence thesis;
end;
existence
proof
deffunc
F(
object) = (
IFEQ ($1,
a_Term ,
Vars ,
{} ));
consider V be
ManySortedSet of the
carrier of C such that
A8: for x be
object st x
in the
carrier of C holds (V
. x)
=
F(x) from
PBOOLE:sch 4;
take V;
A9: (
IFEQ (
a_Type ,
a_Term ,
Vars ,
{} ))
=
{} by
FUNCOP_1:def 8;
A10: (
IFEQ (
an_Adj ,
a_Term ,
Vars ,
{} ))
=
{} by
FUNCOP_1:def 8;
A11: (
IFEQ (
a_Term ,
a_Term ,
Vars ,
{} ))
=
Vars by
FUNCOP_1:def 8;
A12:
a_Type
in the
carrier of C by
A1,
ENUMSET1:def 1;
A13:
an_Adj
in the
carrier of C by
A1,
ENUMSET1:def 1;
a_Term
in the
carrier of C by
A1,
ENUMSET1:def 1;
hence thesis by
A8,
A9,
A10,
A11,
A12,
A13;
end;
end
registration
let C be
ConstructorSignature;
cluster (
MSVars C) -> non
empty-yielding;
coherence
proof
take
a_Term ;
the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
hence
a_Term
in the
carrier of C by
ENUMSET1:def 1;
thus thesis by
Def25;
end;
end
registration
let C be
initialized
ConstructorSignature;
cluster (
Free (C,(
MSVars C))) ->
non-empty;
correctness
proof
set X = (
MSVars C);
consider m,a be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
a_Type and
A2: (
the_arity_of m)
=
{} and
A3: (
the_result_sort_of a)
=
an_Adj and
A4: (
the_arity_of a)
=
{} by
Def12;
A5: (
root-tree
[m, the
carrier of C])
in (the
Sorts of (
Free (C,X))
.
a_Type ) by
A1,
A2,
MSAFREE3: 5;
A6: (
root-tree
[a, the
carrier of C])
in (the
Sorts of (
Free (C,X))
.
an_Adj ) by
A3,
A4,
MSAFREE3: 5;
set x = the
variable;
A7: (
a_Term C)
=
a_Term ;
((
MSVars C)
.
a_Term )
=
Vars by
Def25;
then
A8: (
root-tree
[x,
a_Term ])
in (the
Sorts of (
Free (C,X))
.
a_Term ) by
A7,
MSAFREE3: 4;
assume not the
Sorts of (
Free (C,X)) is
non-empty;
then
{}
in (
rng the
Sorts of (
Free (C,X))) by
RELAT_1:def 9;
then
consider s be
object such that
A9: s
in (
dom the
Sorts of (
Free (C,X))) and
A10:
{}
= (the
Sorts of (
Free (C,X))
. s) by
FUNCT_1:def 3;
s
in the
carrier of C by
A9;
then s
in
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
hence thesis by
A5,
A6,
A8,
A10,
ENUMSET1:def 1;
end;
end
definition
let S be non
void
Signature;
let X be non
empty-yielding
ManySortedSet of the
carrier of S;
let t be
Element of (
Free (S,X));
::
ABCMIZ_1:def26
attr t is
ground means (
Union (S
variables_in t))
=
{} ;
::
ABCMIZ_1:def27
attr t is
compound means
:
Def27: (t
.
{} )
in
[:the
carrier' of S,
{the
carrier of S}:];
end
reserve C for
initialized
ConstructorSignature,
s for
SortSymbol of C,
o for
OperSymbol of C,
c for
constructor
OperSymbol of C;
definition
let C;
mode
expression of C is
Element of (
Free (C,(
MSVars C)));
end
definition
let C, s;
::
ABCMIZ_1:def28
mode
expression of C,s ->
expression of C means
:
Def28: it
in (the
Sorts of (
Free (C,(
MSVars C)))
. s);
existence
proof
set t = the
Element of (the
Sorts of (
Free (C,(
MSVars C)))
. s);
(
dom the
Sorts of (
Free (C,(
MSVars C))))
= the
carrier of C by
PARTFUN1:def 2;
then t
in (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
CARD_5: 2;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:41
Th41: z is
expression of C, s iff z
in (the
Sorts of (
Free (C,(
MSVars C)))
. s)
proof
A1: (
dom the
Sorts of (
Free (C,(
MSVars C))))
= the
carrier of C by
PARTFUN1:def 2;
(the
Sorts of (
Free (C,(
MSVars C)))
. s)
c= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
A1,
CARD_5: 2;
hence thesis by
Def28;
end;
definition
let C;
let c;
::
ABCMIZ_1:def29
func c
term ->
expression of C equals (
[c, the
carrier of C]
-tree
{} );
coherence
proof
(
the_arity_of c)
=
{} by
A1;
then
A2: (
root-tree
[c, the
carrier of C])
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
the_result_sort_of c)) by
MSAFREE3: 5;
(
dom the
Sorts of (
Free (C,(
MSVars C))))
= the
carrier of C by
PARTFUN1:def 2;
then (
root-tree
[c, the
carrier of C])
in (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
A2,
CARD_5: 2;
hence thesis by
TREES_4: 20;
end;
end
theorem ::
ABCMIZ_1:42
Th42: for o st (
len (
the_arity_of o))
= 1 holds for a be
expression of C st ex s st s
= ((
the_arity_of o)
. 1) & a is
expression of C, s holds (
[o, the
carrier of C]
-tree
<*a*>) is
expression of C, (
the_result_sort_of o)
proof
let o be
OperSymbol of C such that
A1: (
len (
the_arity_of o))
= 1;
set X = (
MSVars C);
set Y = (X
(\/) (the
carrier of C
-->
{
0 }));
let a be
expression of C;
given s be
SortSymbol of C such that
A2: s
= ((
the_arity_of o)
. 1) and
A3: a is
expression of C, s;
reconsider ta = a as
Term of C, Y by
MSAFREE3: 8;
A4: (
dom
<*ta*>)
= (
Seg 1) by
FINSEQ_1: 38;
A5: (
dom
<*s*>)
= (
Seg 1) by
FINSEQ_1: 38;
A6: (
the_arity_of o)
=
<*s*> by
A1,
A2,
FINSEQ_1: 40;
A7: the
Sorts of (
Free (C,X))
= (C
-Terms (X,Y)) by
MSAFREE3: 24;
now
let i be
Nat;
assume i
in (
dom
<*ta*>);
then
A8: i
= 1 by
A4,
FINSEQ_1: 2,
TARSKI:def 1;
let t be
Term of C, Y;
assume
A9: t
= (
<*ta*>
. i);
A10: the
Sorts of (
Free (C,X))
c= the
Sorts of (
FreeMSA Y) by
A7,
PBOOLE:def 18;
A11: t
= a by
A8,
A9,
FINSEQ_1: 40;
A12: (the
Sorts of (
Free (C,X))
. s)
c= (the
Sorts of (
FreeMSA Y)
. s) by
A10;
t
in (the
Sorts of (
Free (C,X))
. s) by
A3,
A11,
Th41;
hence (
the_sort_of t)
= ((
the_arity_of o)
. i) by
A2,
A8,
A12,
MSAFREE3: 7;
end;
then
reconsider p =
<*ta*> as
ArgumentSeq of (
Sym (o,Y)) by
A4,
A5,
A6,
MSATERM: 25;
A13: (
variables_in ((
Sym (o,Y))
-tree p))
c= X
proof
let s be
object;
assume s
in the
carrier of C;
then
reconsider s9 = s as
SortSymbol of C;
let x be
object;
assume x
in ((
variables_in ((
Sym (o,Y))
-tree p))
. s);
then
consider t be
DecoratedTree such that
A14: t
in (
rng p) and
A15: x
in ((C
variables_in t)
. s9) by
MSAFREE3: 11;
A16: (C
variables_in a)
c= X by
MSAFREE3: 27;
A17: (
rng p)
=
{a} by
FINSEQ_1: 38;
A18: ((C
variables_in a)
. s9)
c= (X
. s9) by
A16;
t
= a by
A14,
A17,
TARSKI:def 1;
hence thesis by
A15,
A18;
end;
set s9 = (
the_result_sort_of o);
A19: (
the_sort_of ((
Sym (o,Y))
-tree p))
= (
the_result_sort_of o) by
MSATERM: 20;
(the
Sorts of (
Free (C,X))
. s9)
= { t where t be
Term of C, Y : (
the_sort_of t)
= s9 & (
variables_in t)
c= X } by
A7,
MSAFREE3:def 5;
then (
[o, the
carrier of C]
-tree
<*a*>)
in (the
Sorts of (
Free (C,X))
. s9) by
A13,
A19;
hence thesis by
Th41;
end;
definition
let C, o;
let e be
expression of C;
::
ABCMIZ_1:def30
func o
term e ->
expression of C equals
:
Def30: (
[o, the
carrier of C]
-tree
<*e*>);
coherence by
A1,
A2,
Th42;
end
reserve a,b for
expression of C, (
an_Adj C);
theorem ::
ABCMIZ_1:43
Th43: ((
non_op C)
term a) is
expression of C, (
an_Adj C) & ((
non_op C)
term a)
= (
[
non_op , the
carrier of C]
-tree
<*a*>)
proof
A1: (
the_result_sort_of (
non_op C))
= (
an_Adj C) by
Def9;
A2: (
the_arity_of (
non_op C))
=
<*(
an_Adj C)*> by
Def9;
then
A3: (
len (
the_arity_of (
non_op C)))
= 1 by
FINSEQ_1: 40;
A4: ((
the_arity_of (
non_op C))
. 1)
= (
an_Adj C) by
A2,
FINSEQ_1: 40;
then ((
non_op C)
term a)
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
A3,
Def30;
hence thesis by
A1,
A3,
A4,
Th42;
end;
theorem ::
ABCMIZ_1:44
Th44: ((
non_op C)
term a)
= ((
non_op C)
term b) implies a
= b
proof
assume ((
non_op C)
term a)
= ((
non_op C)
term b);
then (
[
non_op , the
carrier of C]
-tree
<*a*>)
= ((
non_op C)
term b) by
Th43
.= (
[
non_op , the
carrier of C]
-tree
<*b*>) by
Th43;
then
<*a*>
=
<*b*> by
TREES_4: 15;
hence thesis by
FINSEQ_1: 76;
end;
registration
let C, a;
cluster ((
non_op C)
term a) ->
compound;
coherence
proof
((
non_op C)
term a)
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
Th43;
then (((
non_op C)
term a)
.
{} )
=
[(
non_op C), the
carrier of C] by
TREES_4:def 4;
hence (((
non_op C)
term a)
.
{} )
in
[:the
carrier' of C,
{the
carrier of C}:] by
ZFMISC_1: 106;
end;
end
registration
let C;
cluster
compound for
expression of C;
existence
proof
set a = the
expression of C, (
an_Adj C);
((
non_op C)
term a) is
compound;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:45
Th45: for o st (
len (
the_arity_of o))
= 2 holds for a,b be
expression of C st ex s1,s2 be
SortSymbol of C st s1
= ((
the_arity_of o)
. 1) & s2
= ((
the_arity_of o)
. 2) & a is
expression of C, s1 & b is
expression of C, s2 holds (
[o, the
carrier of C]
-tree
<*a, b*>) is
expression of C, (
the_result_sort_of o)
proof
let o be
OperSymbol of C such that
A1: (
len (
the_arity_of o))
= 2;
set X = (
MSVars C);
set Y = (X
(\/) (the
carrier of C
-->
{
0 }));
let a,b be
expression of C;
given s1,s2 be
SortSymbol of C such that
A2: s1
= ((
the_arity_of o)
. 1) and
A3: s2
= ((
the_arity_of o)
. 2) and
A4: a is
expression of C, s1 and
A5: b is
expression of C, s2;
reconsider ta = a, tb = b as
Term of C, Y by
MSAFREE3: 8;
A6: (
dom
<*ta, tb*>)
= (
Seg 2) by
FINSEQ_1: 89;
A7: (
dom
<*s1, s2*>)
= (
Seg 2) by
FINSEQ_1: 89;
A8: (
the_arity_of o)
=
<*s1, s2*> by
A1,
A2,
A3,
FINSEQ_1: 44;
A9: the
Sorts of (
Free (C,X))
= (C
-Terms (X,Y)) by
MSAFREE3: 24;
now
let i be
Nat;
assume i
in (
dom
<*ta, tb*>);
then
A10: i
= 1 or i
= 2 by
A6,
FINSEQ_1: 2,
TARSKI:def 2;
let t be
Term of C, Y;
assume
A11: t
= (
<*ta, tb*>
. i);
A12: the
Sorts of (
Free (C,X))
c= the
Sorts of (
FreeMSA Y) by
A9,
PBOOLE:def 18;
A13: i
= 1 & t
= a or i
= 2 & t
= b by
A10,
A11,
FINSEQ_1: 44;
A14: (the
Sorts of (
Free (C,X))
. s1)
c= (the
Sorts of (
FreeMSA Y)
. s1) by
A12;
A15: (the
Sorts of (
Free (C,X))
. s2)
c= (the
Sorts of (
FreeMSA Y)
. s2) by
A12;
i
= 1 & t
in (the
Sorts of (
Free (C,X))
. s1) or i
= 2 & t
in (the
Sorts of (
Free (C,X))
. s2) by
A4,
A5,
A13,
Th41;
hence (
the_sort_of t)
= ((
the_arity_of o)
. i) by
A2,
A3,
A14,
A15,
MSAFREE3: 7;
end;
then
reconsider p =
<*ta, tb*> as
ArgumentSeq of (
Sym (o,Y)) by
A6,
A7,
A8,
MSATERM: 25;
A16: (
variables_in ((
Sym (o,Y))
-tree p))
c= X
proof
let s be
object;
assume s
in the
carrier of C;
then
reconsider s9 = s as
SortSymbol of C;
let x be
object;
assume x
in ((
variables_in ((
Sym (o,Y))
-tree p))
. s);
then
consider t be
DecoratedTree such that
A17: t
in (
rng p) and
A18: x
in ((C
variables_in t)
. s9) by
MSAFREE3: 11;
A19: (C
variables_in a)
c= X by
MSAFREE3: 27;
A20: (C
variables_in b)
c= X by
MSAFREE3: 27;
A21: (
rng p)
=
{a, b} by
FINSEQ_2: 127;
A22: ((C
variables_in a)
. s9)
c= (X
. s9) by
A19;
A23: ((C
variables_in b)
. s9)
c= (X
. s9) by
A20;
t
= a or t
= b by
A17,
A21,
TARSKI:def 2;
hence thesis by
A18,
A22,
A23;
end;
set s9 = (
the_result_sort_of o);
A24: (
the_sort_of ((
Sym (o,Y))
-tree p))
= (
the_result_sort_of o) by
MSATERM: 20;
(the
Sorts of (
Free (C,X))
. s9)
= { t where t be
Term of C, Y : (
the_sort_of t)
= s9 & (
variables_in t)
c= X } by
A9,
MSAFREE3:def 5;
then (
[o, the
carrier of C]
-tree
<*a, b*>)
in (the
Sorts of (
Free (C,X))
. s9) by
A16,
A24;
hence thesis by
Th41;
end;
definition
let C, o;
let e1,e2 be
expression of C;
::
ABCMIZ_1:def31
func o
term (e1,e2) ->
expression of C equals
:
Def31: (
[o, the
carrier of C]
-tree
<*e1, e2*>);
coherence by
A1,
A2,
Th45;
end
reserve t,t1,t2 for
expression of C, (
a_Type C);
theorem ::
ABCMIZ_1:46
Th46: ((
ast C)
term (a,t)) is
expression of C, (
a_Type C) & ((
ast C)
term (a,t))
= (
[
* , the
carrier of C]
-tree
<*a, t*>)
proof
A1: (
the_result_sort_of (
ast C))
= (
a_Type C) by
Def9;
A2: (
the_arity_of (
ast C))
=
<*(
an_Adj C), (
a_Type C)*> by
Def9;
then
A3: (
len (
the_arity_of (
ast C)))
= 2 by
FINSEQ_1: 44;
A4: ((
the_arity_of (
ast C))
. 1)
= (
an_Adj C) by
A2,
FINSEQ_1: 44;
A5: ((
the_arity_of (
ast C))
. 2)
= (
a_Type C) by
A2,
FINSEQ_1: 44;
then ((
ast C)
term (a,t))
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
A3,
A4,
Def31;
hence thesis by
A1,
A3,
A4,
A5,
Th45;
end;
theorem ::
ABCMIZ_1:47
((
ast C)
term (a,t1))
= ((
ast C)
term (b,t2)) implies a
= b & t1
= t2
proof
assume ((
ast C)
term (a,t1))
= ((
ast C)
term (b,t2));
then (
[
* , the
carrier of C]
-tree
<*a, t1*>)
= ((
ast C)
term (b,t2)) by
Th46
.= (
[
* , the
carrier of C]
-tree
<*b, t2*>) by
Th46;
then
<*a, t1*>
=
<*b, t2*> by
TREES_4: 15;
hence thesis by
FINSEQ_1: 77;
end;
registration
let C, a, t;
cluster ((
ast C)
term (a,t)) ->
compound;
coherence
proof
((
ast C)
term (a,t))
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
Th46;
then (((
ast C)
term (a,t))
.
{} )
=
[(
ast C), the
carrier of C] by
TREES_4:def 4;
hence (((
ast C)
term (a,t))
.
{} )
in
[:the
carrier' of C,
{the
carrier of C}:] by
ZFMISC_1: 106;
end;
end
definition
let S be non
void
Signature;
let s be
SortSymbol of S;
::
ABCMIZ_1:def32
mode
OperSymbol of s ->
OperSymbol of S means (
the_result_sort_of it )
= s;
existence by
A1;
end
definition
let C be
ConstructorSignature;
:: original:
non_op
redefine
func
non_op C ->
OperSymbol of (
an_Adj C) ;
coherence
proof
(
the_result_sort_of (
non_op C))
= (
an_Adj C) by
Def9;
hence ex o be
OperSymbol of C st (
the_result_sort_of o)
= (
an_Adj C);
thus thesis by
Def9;
end;
:: original:
ast
redefine
func
ast C ->
OperSymbol of (
a_Type C) ;
coherence
proof
(
the_result_sort_of (
ast C))
= (
a_Type C) by
Def9;
hence ex o be
OperSymbol of C st (
the_result_sort_of o)
= (
a_Type C);
thus thesis by
Def9;
end;
end
theorem ::
ABCMIZ_1:48
Th48: for s1,s2 be
SortSymbol of C st s1
<> s2 holds for t1 be
expression of C, s1 holds for t2 be
expression of C, s2 holds t1
<> t2
proof
set X = (
MSVars C);
set Y = (X
(\/) (the
carrier of C
-->
{
0 }));
A1: ex A be
MSSubset of (
FreeMSA Y) st ((
Free (C,X))
= (
GenMSAlg A)) & (A
= ((
Reverse Y)
"" X)) by
MSAFREE3:def 1;
let s1,s2 be
SortSymbol of C;
the
Sorts of (
Free (C,X)) is
MSSubset of (
FreeMSA Y) by
A1,
MSUALG_2:def 9;
then
A2: the
Sorts of (
Free (C,X))
c= the
Sorts of (
FreeMSA Y) by
PBOOLE:def 18;
then
A3: (the
Sorts of (
Free (C,X))
. s1)
c= (the
Sorts of (
FreeMSA Y)
. s1);
A4: (the
Sorts of (
Free (C,X))
. s2)
c= (the
Sorts of (
FreeMSA Y)
. s2) by
A2;
assume s1
<> s2;
then
A5: (the
Sorts of (
FreeMSA Y)
. s1)
misses (the
Sorts of (
FreeMSA Y)
. s2) by
PROB_2:def 2;
let t1 be
expression of C, s1;
let t2 be
expression of C, s2;
A6: t1
in (the
Sorts of (
Free (C,X))
. s1) by
Def28;
t2
in (the
Sorts of (
Free (C,X))
. s2) by
Def28;
hence thesis by
A3,
A4,
A5,
A6,
XBOOLE_0: 3;
end;
begin
definition
let C;
A1: (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Term C))
c= (
Union the
Sorts of (
Free (C,(
MSVars C))))
proof
let x be
object;
(
dom the
Sorts of (
Free (C,(
MSVars C))))
= the
carrier of C by
PARTFUN1:def 2;
hence thesis by
CARD_5: 2;
end;
::
ABCMIZ_1:def33
func
QuasiTerms C ->
Subset of (
Free (C,(
MSVars C))) equals (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Term C));
coherence by
A1;
end
registration
let C;
cluster (
QuasiTerms C) -> non
empty
constituted-DTrees;
coherence ;
end
definition
let C;
mode
quasi-term of C is
expression of C, (
a_Term C);
end
theorem ::
ABCMIZ_1:49
z is
quasi-term of C iff z
in (
QuasiTerms C) by
Th41;
definition
let x be
variable;
let C;
::
ABCMIZ_1:def34
func x
-term C ->
quasi-term of C equals (
root-tree
[x,
a_Term ]);
coherence
proof
((
MSVars C)
.
a_Term )
=
Vars by
Def25;
then (
root-tree
[x,
a_Term ])
in (
QuasiTerms C) by
MSAFREE3: 4;
hence thesis by
Th41;
end;
end
theorem ::
ABCMIZ_1:50
Th50: for x1,x2 be
variable holds for C1,C2 be
initialized
ConstructorSignature st (x1
-term C1)
= (x2
-term C2) holds x1
= x2
proof
let x1,x2 be
variable;
let C1,C2 be
initialized
ConstructorSignature;
assume (x1
-term C1)
= (x2
-term C2);
then
[x1,
a_Term ]
=
[x2,
a_Term ] by
TREES_4: 4;
hence thesis by
XTUPLE_0: 1;
end;
registration
let x be
variable;
let C;
cluster (x
-term C) -> non
compound;
coherence
proof
(
a_Term C)
in the
carrier of C;
then
A1: (
a_Term C)
<> the
carrier of C;
A2: ((x
-term C)
.
{} )
=
[x, (
a_Term C)] by
TREES_4: 3;
(
a_Term C)
nin
{the
carrier of C} by
A1,
TARSKI:def 1;
hence ((x
-term C)
.
{} )
nin
[:the
carrier' of C,
{the
carrier of C}:] by
A2,
ZFMISC_1: 87;
end;
end
theorem ::
ABCMIZ_1:51
Th51: for p be
DTree-yielding
FinSequence holds (
[c, the
carrier of C]
-tree p) is
expression of C iff (
len p)
= (
len (
the_arity_of c)) & p
in ((
QuasiTerms C)
* )
proof
set o = c;
A1: o
<>
* by
Def11;
A2: o
<>
non_op by
Def11;
let p be
DTree-yielding
FinSequence;
set V = ((
MSVars C)
(\/) (the
carrier of C
-->
{
0 }));
A3: the
Sorts of (
Free (C,(
MSVars C)))
= (C
-Terms ((
MSVars C),V)) by
MSAFREE3: 24;
now
assume
A4: (
[o, the
carrier of C]
-tree p) is
expression of C;
then
A5: (
[o, the
carrier of C]
-tree p) is
Term of C, V by
MSAFREE3: 8;
then
A6: p is
ArgumentSeq of (
Sym (o,V)) by
MSATERM: 1;
hence (
len p)
= (
len (
the_arity_of o)) by
MSATERM: 22;
reconsider q = p as
ArgumentSeq of (
Sym (o,V)) by
A5,
MSATERM: 1;
A7: (
the_sort_of ((
Sym (o,V))
-tree q))
= (
the_result_sort_of o) by
MSATERM: 20;
A8: (
variables_in ((
Sym (o,V))
-tree q))
c= (
MSVars C) by
A4,
MSAFREE3: 27;
((C
-Terms ((
MSVars C),V))
. (
the_result_sort_of o))
= { t where t be
Term of C, V : (
the_sort_of t)
= (
the_result_sort_of o) & (
variables_in t)
c= (
MSVars C) } by
MSAFREE3:def 5;
then ((
Sym (o,V))
-tree p)
in ((C
-Terms ((
MSVars C),V))
. (
the_result_sort_of o)) by
A7,
A8;
then
A9: (
rng p)
c= (
Union (C
-Terms ((
MSVars C),V))) by
A6,
MSAFREE3: 19;
(
rng p)
c= (
QuasiTerms C)
proof
let a be
object;
assume
A10: a
in (
rng p);
then
reconsider ta = a as
expression of C by
A9,
MSAFREE3: 24;
consider i be
object such that
A11: i
in (
dom p) and
A12: a
= (p
. i) by
A10,
FUNCT_1:def 3;
reconsider i as
Nat by
A11;
reconsider t = (p
. i) as
Term of C, V by
A6,
A11,
MSATERM: 22;
A13: (the
Arity of C
. o)
in (
{
a_Term }
* ) by
A1,
A2,
Def9;
A14: (
dom p)
= (
dom (
the_arity_of o)) by
A6,
MSATERM: 22;
A15: (
the_arity_of o) is
FinSequence of
{
a_Term } by
A13,
FINSEQ_1:def 11;
A16: ((
the_arity_of o)
. i)
in (
rng (
the_arity_of o)) by
A11,
A14,
FUNCT_1:def 3;
(
rng (
the_arity_of o))
c=
{(
a_Term C)} by
A15,
FINSEQ_1:def 4;
then ((
the_arity_of o)
. i)
= (
a_Term C) by
A16,
TARSKI:def 1;
then
A17: (
the_sort_of t)
= (
a_Term C) by
A6,
A11,
MSATERM: 23;
t
= ta by
A12;
then (
variables_in t)
c= (
MSVars C) by
MSAFREE3: 27;
then t
in { T where T be
Term of C, V : (
the_sort_of T)
= (
a_Term C) & (
variables_in T)
c= (
MSVars C) } by
A17;
then t
in ((C
-Terms ((
MSVars C),V))
. (
a_Term C)) by
MSAFREE3:def 5;
hence thesis by
A12,
MSAFREE3: 23;
end;
then p is
FinSequence of (
QuasiTerms C) by
FINSEQ_1:def 4;
hence p
in ((
QuasiTerms C)
* ) by
FINSEQ_1:def 11;
end;
assume
A18: (
len p)
= (
len (
the_arity_of o));
assume
A19: p
in ((
QuasiTerms C)
* );
(
Free (C,(
MSVars C)))
= ((
FreeMSA V)
| (C
-Terms ((
MSVars C),V))) by
MSAFREE3: 25;
then the
Sorts of (
Free (C,(
MSVars C))) is
ManySortedSubset of the
Sorts of (
FreeMSA V) by
MSUALG_2:def 9;
then the
Sorts of (
Free (C,(
MSVars C)))
c= the
Sorts of (
FreeMSA V) by
PBOOLE:def 18;
then
A20: (
QuasiTerms C)
c= (the
Sorts of (
FreeMSA V)
. (
a_Term C));
A21: p is
FinSequence of (
QuasiTerms C) by
A19,
FINSEQ_1:def 11;
then
A22: (
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
now
let i be
Nat;
assume
A23: i
in (
dom p);
then (p
. i)
in (
rng p) by
FUNCT_1:def 3;
then
A24: (p
. i)
in (
QuasiTerms C) by
A22;
then
reconsider t = (p
. i) as
expression of C;
A25: (the
Arity of C
. o)
in (
{
a_Term }
* ) by
A1,
A2,
Def9;
A26: (
dom p)
= (
dom (
the_arity_of o)) by
A18,
FINSEQ_3: 29;
A27: (
the_arity_of o) is
FinSequence of
{
a_Term } by
A25,
FINSEQ_1:def 11;
A28: ((
the_arity_of o)
. i)
in (
rng (
the_arity_of o)) by
A23,
A26,
FUNCT_1:def 3;
(
rng (
the_arity_of o))
c=
{(
a_Term C)} by
A27,
FINSEQ_1:def 4;
then
A29: ((
the_arity_of o)
. i)
= (
a_Term C) by
A28,
TARSKI:def 1;
reconsider T = t as
Term of C, V by
MSAFREE3: 8;
take T;
thus T
= (p
. i);
T
in (the
Sorts of (
FreeMSA V)
. (
a_Term C)) by
A20,
A24;
then T
in (
FreeSort (V,(
a_Term C))) by
MSAFREE:def 11;
hence (
the_sort_of T)
= ((
the_arity_of o)
. i) by
A29,
MSATERM:def 5;
end;
then
A30: p is
ArgumentSeq of (
Sym (o,V)) by
A18,
MSATERM: 24;
A31: (
dom the
Sorts of (
Free (C,(
MSVars C))))
= the
carrier of C by
PARTFUN1:def 2;
(
rng p)
c= (
Union (C
-Terms ((
MSVars C),V))) by
A3,
A21,
FINSEQ_1:def 4;
then ((
Sym (o,V))
-tree p)
in ((C
-Terms ((
MSVars C),V))
. (
the_result_sort_of o)) by
A30,
MSAFREE3: 19;
hence thesis by
A3,
A31,
CARD_5: 2;
end;
reserve p for
FinSequence of (
QuasiTerms C);
definition
let C, c;
let p;
A2: p
in ((
QuasiTerms C)
* ) by
FINSEQ_1:def 11;
::
ABCMIZ_1:def35
func c
-trm p ->
compound
expression of C equals
:
Def35: (
[c, the
carrier of C]
-tree p);
coherence
proof
reconsider t = (
[c, the
carrier of C]
-tree p) as
expression of C by
A1,
A2,
Th51;
(t
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
then (t
.
{} )
in
[:the
carrier' of C,
{the
carrier of C}:] by
ZFMISC_1: 106;
hence thesis by
Def27;
end;
end
theorem ::
ABCMIZ_1:52
Th52: (
len p)
= (
len (
the_arity_of c)) implies (c
-trm p) is
expression of C, (
the_result_sort_of c)
proof
set X = (
MSVars C);
set V = (X
(\/) (the
carrier of C
-->
{
0 }));
assume (
len p)
= (
len (
the_arity_of c));
then
A1: ((
Sym (c,V))
-tree p)
= (c
-trm p) by
Def35;
A2: the
Sorts of (
Free (C,X))
= (C
-Terms (X,V)) by
MSAFREE3: 24;
(c
-trm p) is
Term of C, V by
MSAFREE3: 8;
then
reconsider q = p as
ArgumentSeq of (
Sym (c,V)) by
A1,
MSATERM: 1;
(
rng q)
c= (
Union the
Sorts of (
Free (C,X))) by
FINSEQ_1:def 4;
then (c
-trm p)
in ((C
-Terms (X,V))
. (
the_result_sort_of c)) by
A1,
A2,
MSAFREE3: 19;
hence thesis by
A2,
Def28;
end;
theorem ::
ABCMIZ_1:53
Th53: for e be
expression of C holds (ex x be
variable st e
= (x
-term C)) or (ex c be
constructor
OperSymbol of C st ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & e
= (c
-trm p)) or (ex a be
expression of C, (
an_Adj C) st e
= ((
non_op C)
term a)) or ex a be
expression of C, (
an_Adj C) st ex t be
expression of C, (
a_Type C) st e
= ((
ast C)
term (a,t))
proof
let t be
expression of C;
set X = (
MSVars C);
set V = (X
(\/) (the
carrier of C
-->
{
0 }));
per cases by
Th7;
suppose ex s be
SortSymbol of C, v be
set st t
= (
root-tree
[v, s]) & v
in (X
. s);
then
consider s be
SortSymbol of C, v be
set such that
A1: t
= (
root-tree
[v, s]) and
A2: v
in (X
. s);
the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
then
A3: s
=
a_Term or s
=
an_Adj or s
=
a_Type by
ENUMSET1:def 1;
then
reconsider v as
variable by
A2,
Def25;
t
= (v
-term C) by
A1,
A2,
A3,
Def25;
hence thesis;
end;
suppose ex o be
OperSymbol of C, p be
FinSequence of (
Free (C,X)) st t
= (
[o, the
carrier of C]
-tree p) & (
len p)
= (
len (
the_arity_of o)) & p is
DTree-yielding & p is
ArgumentSeq of (
Sym (o,V));
then
consider o be
OperSymbol of C, p be
FinSequence of (
Free (C,X)) such that
A4: t
= (
[o, the
carrier of C]
-tree p) and
A5: (
len p)
= (
len (
the_arity_of o)) and p is
DTree-yielding and
A6: p is
ArgumentSeq of (
Sym (o,V));
per cases ;
suppose
A7: o
=
* ;
then
A8: (
the_arity_of o)
=
<*
an_Adj ,
a_Type *> by
Def9;
A9: (
dom p)
= (
dom (
the_arity_of o)) by
A6,
MSATERM: 22;
A10: (
dom (
the_arity_of o))
= (
Seg 2) by
A8,
FINSEQ_1: 89;
A11: (
len (
the_arity_of o))
= 2 by
A8,
FINSEQ_1: 44;
A12: 1
in (
Seg 2);
A13: 2
in (
Seg 2);
A14: (p
. 1)
in (
rng p) by
A9,
A10,
A12,
FUNCT_1: 3;
(p
. 2)
in (
rng p) by
A9,
A10,
A13,
FUNCT_1: 3;
then
reconsider p1 = (p
. 1), p2 = (p
. 2) as
expression of C by
A14;
reconsider t1 = p1, t2 = p2 as
Term of C, V by
MSAFREE3: 8;
A15: (C
variables_in p1)
c= X by
MSAFREE3: 27;
A16: (
variables_in t1)
= (C
variables_in t1);
A17: (C
variables_in p2)
c= X by
MSAFREE3: 27;
A18: (
variables_in t2)
= (C
variables_in t2);
A19: (
<*
an_Adj ,
a_Type *>
. 2)
= (
a_Type C) by
FINSEQ_1: 44;
A20: (
<*
an_Adj ,
a_Type *>
. 1)
= (
an_Adj C) by
FINSEQ_1: 44;
(
the_sort_of t1)
= ((
the_arity_of o)
. 1) by
A6,
A9,
A10,
A12,
MSATERM: 23;
then t1
in { q where q be
Term of C, V : (
the_sort_of q)
= (
an_Adj C) & (
variables_in q)
c= X } by
A8,
A15,
A16,
A20;
then p1
in ((C
-Terms (X,V))
. (
an_Adj C)) by
MSAFREE3:def 5;
then p1
in (the
Sorts of (
Free (C,X))
. (
an_Adj C)) by
MSAFREE3: 24;
then
reconsider a = p1 as
expression of C, (
an_Adj C) by
Def28;
(
the_sort_of t2)
= ((
the_arity_of o)
. 2) by
A6,
A9,
A10,
A13,
MSATERM: 23;
then t2
in { q where q be
Term of C, V : (
the_sort_of q)
= (
a_Type C) & (
variables_in q)
c= X } by
A8,
A17,
A18,
A19;
then p2
in ((C
-Terms (X,V))
. (
a_Type C)) by
MSAFREE3:def 5;
then p2
in (the
Sorts of (
Free (C,X))
. (
a_Type C)) by
MSAFREE3: 24;
then
reconsider q = p2 as
expression of C, (
a_Type C) by
Def28;
p
=
<*a, q*> by
A5,
A11,
FINSEQ_1: 44;
then t
= ((
ast C)
term (a,q)) by
A4,
A7,
A8,
A11,
A19,
A20,
Def31;
hence thesis;
end;
suppose
A21: o
=
non_op ;
then
A22: (
the_arity_of o)
=
<*
an_Adj *> by
Def9;
A23: (
dom p)
= (
dom (
the_arity_of o)) by
A6,
MSATERM: 22;
A24: (
dom (
the_arity_of o))
= (
Seg 1) by
A22,
FINSEQ_1: 38;
A25: (
len (
the_arity_of o))
= 1 by
A22,
FINSEQ_1: 39;
A26: 1
in (
Seg 1);
then (p
. 1)
in (
rng p) by
A23,
A24,
FUNCT_1: 3;
then
reconsider p1 = (p
. 1) as
expression of C;
reconsider t1 = p1 as
Term of C, V by
MSAFREE3: 8;
A27: (C
variables_in p1)
c= X by
MSAFREE3: 27;
A28: (
variables_in t1)
= (C
variables_in t1);
A29: (
<*
an_Adj *>
. 1)
= (
an_Adj C) by
FINSEQ_1: 40;
(
the_sort_of t1)
= ((
the_arity_of o)
. 1) by
A6,
A23,
A24,
A26,
MSATERM: 23;
then t1
in { q where q be
Term of C, V : (
the_sort_of q)
= (
an_Adj C) & (
variables_in q)
c= X } by
A22,
A27,
A28,
A29;
then p1
in ((C
-Terms (X,V))
. (
an_Adj C)) by
MSAFREE3:def 5;
then p1
in (the
Sorts of (
Free (C,X))
. (
an_Adj C)) by
MSAFREE3: 24;
then
reconsider a = p1 as
expression of C, (
an_Adj C) by
Def28;
p
=
<*a*> by
A5,
A25,
FINSEQ_1: 40;
then t
= ((
non_op C)
term a) by
A4,
A21,
A22,
A25,
A29,
Def30;
hence thesis;
end;
suppose o is
constructor;
then
reconsider o as
constructor
OperSymbol of C;
t
= (
[o, the
carrier of C]
-tree p) by
A4;
then p
in ((
QuasiTerms C)
* ) by
Th51;
then
reconsider p as
FinSequence of (
QuasiTerms C) by
FINSEQ_1:def 11;
t
= (o
-trm p) by
A4,
A5,
Def35;
hence thesis by
A5;
end;
end;
end;
theorem ::
ABCMIZ_1:54
Th54: (
len p)
= (
len (
the_arity_of c)) implies (c
-trm p)
<> ((
non_op C)
term a)
proof
assume (
len p)
= (
len (
the_arity_of c));
then (c
-trm p)
= (
[c, the
carrier of C]
-tree p) by
Def35;
then
A1: ((c
-trm p)
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
assume (c
-trm p)
= ((
non_op C)
term a);
then (c
-trm p)
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
Th43;
then
[c, the
carrier of C]
=
[
non_op , the
carrier of C] by
A1,
TREES_4:def 4;
then c
=
non_op by
XTUPLE_0: 1;
hence thesis by
Def11;
end;
theorem ::
ABCMIZ_1:55
Th55: (
len p)
= (
len (
the_arity_of c)) implies (c
-trm p)
<> ((
ast C)
term (a,t))
proof
assume (
len p)
= (
len (
the_arity_of c));
then (c
-trm p)
= (
[c, the
carrier of C]
-tree p) by
Def35;
then
A1: ((c
-trm p)
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
assume (c
-trm p)
= ((
ast C)
term (a,t));
then (c
-trm p)
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
Th46;
then
[c, the
carrier of C]
=
[
* , the
carrier of C] by
A1,
TREES_4:def 4;
then c
=
* by
XTUPLE_0: 1;
hence thesis by
Def11;
end;
theorem ::
ABCMIZ_1:56
((
non_op C)
term a)
<> ((
ast C)
term (b,t))
proof
assume ((
non_op C)
term a)
= ((
ast C)
term (b,t));
then ((
non_op C)
term a)
= (
[
* , the
carrier of C]
-tree
<*b, t*>) by
Th46;
then (((
non_op C)
term a)
.
{} )
=
[
* , the
carrier of C] by
TREES_4:def 4;
then ((
[
non_op , the
carrier of C]
-tree
<*a*>)
.
{} )
=
[
* , the
carrier of C] by
Th43;
then
[
non_op , the
carrier of C]
=
[
* , the
carrier of C] by
TREES_4:def 4;
hence thesis by
XTUPLE_0: 1;
end;
reserve e for
expression of C;
theorem ::
ABCMIZ_1:57
Th57: (e
.
{} )
=
[
non_op , the
carrier of C] implies ex a st e
= ((
non_op C)
term a)
proof
assume
A1: (e
.
{} )
=
[
non_op , the
carrier of C];
(
non_op C)
in the
carrier' of C;
then
A2: (e
.
{} )
in
[:the
carrier' of C,
{the
carrier of C}:] by
A1,
ZFMISC_1: 106;
per cases by
Th53;
suppose ex x be
variable st e
= (x
-term C);
hence thesis by
A2,
Def27;
end;
suppose ex c, p st (
len p)
= (
len (
the_arity_of c)) & e
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, p be
FinSequence of (
QuasiTerms C) such that
A3: (
len p)
= (
len (
the_arity_of c)) and
A4: e
= (c
-trm p);
e
= (
[c, the
carrier of C]
-tree p) by
A3,
A4,
Def35;
then (e
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
then
non_op
= c by
A1,
XTUPLE_0: 1;
hence thesis by
Def11;
end;
suppose ex a st e
= ((
non_op C)
term a);
hence thesis;
end;
suppose ex a, t st e
= ((
ast C)
term (a,t));
then
consider a, t such that
A5: e
= ((
ast C)
term (a,t));
e
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
A5,
Th46;
then (e
.
{} )
=
[
* , the
carrier of C] by
TREES_4:def 4;
hence thesis by
A1,
XTUPLE_0: 1;
end;
end;
theorem ::
ABCMIZ_1:58
Th58: (e
.
{} )
=
[
* , the
carrier of C] implies ex a, t st e
= ((
ast C)
term (a,t))
proof
assume
A1: (e
.
{} )
=
[
* , the
carrier of C];
(
ast C)
in the
carrier' of C;
then
A2: (e
.
{} )
in
[:the
carrier' of C,
{the
carrier of C}:] by
A1,
ZFMISC_1: 106;
per cases by
Th53;
suppose ex x be
variable st e
= (x
-term C);
hence thesis by
A2,
Def27;
end;
suppose ex c, p st (
len p)
= (
len (
the_arity_of c)) & e
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, p be
FinSequence of (
QuasiTerms C) such that
A3: (
len p)
= (
len (
the_arity_of c)) and
A4: e
= (c
-trm p);
e
= (
[c, the
carrier of C]
-tree p) by
A3,
A4,
Def35;
then (e
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
then
*
= c by
A1,
XTUPLE_0: 1;
hence thesis by
Def11;
end;
suppose ex a be
expression of C, (
an_Adj C) st e
= ((
non_op C)
term a);
then
consider a be
expression of C, (
an_Adj C) such that
A5: e
= ((
non_op C)
term a);
e
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
A5,
Th43;
then (e
.
{} )
=
[
non_op , the
carrier of C] by
TREES_4:def 4;
hence thesis by
A1,
XTUPLE_0: 1;
end;
suppose ex a, t st e
= ((
ast C)
term (a,t));
hence thesis;
end;
end;
begin
reserve a,a9 for
expression of C, (
an_Adj C);
definition
let C, a;
::
ABCMIZ_1:def36
func
Non a ->
expression of C, (
an_Adj C) equals
:
Def36: (a
|
<*
0 *>) if ex a9 st a
= ((
non_op C)
term a9)
otherwise ((
non_op C)
term a);
coherence
proof
now
given a9 be
expression of C, (
an_Adj C) such that
A1: a
= ((
non_op C)
term a9);
A2: a
= (
[
non_op , the
carrier of C]
-tree
<*a9*>) by
A1,
Th43;
(
len
<*a9*>)
= 1 by
FINSEQ_1: 40;
then (a
|
<*
0 *>)
= (
<*a9*>
. (
0
+ 1)) by
A2,
TREES_4:def 4;
hence (a
|
<*
0 *>) is
expression of C, (
an_Adj C) by
FINSEQ_1: 40;
end;
thus thesis by
Th43;
end;
consistency ;
end
definition
let C, a;
::
ABCMIZ_1:def37
attr a is
positive means
:
Def37: not ex a9 st a
= ((
non_op C)
term a9);
end
registration
let C;
cluster
positive for
expression of C, (
an_Adj C);
existence
proof
consider m,a be
OperSymbol of C such that (
the_result_sort_of m)
=
a_Type and (
the_arity_of m)
=
{} and
A1: (
the_result_sort_of a)
=
an_Adj and
A2: (
the_arity_of a)
=
{} by
Def12;
set X = (
MSVars C);
(
root-tree
[a, the
carrier of C])
in (the
Sorts of (
Free (C,X))
.
an_Adj ) by
A1,
A2,
MSAFREE3: 5;
then
reconsider v = (
root-tree
[a, the
carrier of C]) as
expression of C, (
an_Adj C) by
Th41;
take v;
given a9 be
expression of C, (
an_Adj C) such that
A3: v
= ((
non_op C)
term a9);
v
= (
[
non_op , the
carrier of C]
-tree
<*a9*>) by
A3,
Th43;
then
[
non_op , the
carrier of C]
= (v
.
{} ) by
TREES_4:def 4
.=
[a, the
carrier of C] by
TREES_4: 3;
then a
= (
non_op C) by
XTUPLE_0: 1;
hence contradiction by
A2,
Def9;
end;
end
theorem ::
ABCMIZ_1:59
Th59: for a be
positive
expression of C, (
an_Adj C) holds (
Non a)
= ((
non_op C)
term a)
proof
let a be
positive
expression of C, (
an_Adj C);
not ex a9 be
expression of C, (
an_Adj C) st a
= ((
non_op C)
term a9) by
Def37;
hence thesis by
Def36;
end;
definition
let C, a;
::
ABCMIZ_1:def38
attr a is
negative means
:
Def38: ex a9 st a9 is
positive & a
= ((
non_op C)
term a9);
end
registration
let C;
let a be
positive
expression of C, (
an_Adj C);
cluster (
Non a) ->
negative non
positive;
coherence
proof
thus (
Non a) is
negative
proof
take a;
thus thesis by
Th59;
end;
take a;
thus thesis by
Th59;
end;
end
registration
let C;
cluster
negative non
positive for
expression of C, (
an_Adj C);
existence
proof
set a = the
positive
expression of C, (
an_Adj C);
take (
Non a);
thus thesis;
end;
end
theorem ::
ABCMIZ_1:60
Th60: for a be non
positive
expression of C, (
an_Adj C) holds ex a9 be
expression of C, (
an_Adj C) st a
= ((
non_op C)
term a9) & (
Non a)
= a9
proof
let a be non
positive
expression of C, (
an_Adj C);
consider a9 be
expression of C, (
an_Adj C) such that
A1: a
= ((
non_op C)
term a9) by
Def37;
A2: a
= (
[
non_op , the
carrier of C]
-tree
<*a9*>) by
A1,
Th43;
take a9;
(
len
<*a9*>)
= 1 by
FINSEQ_1: 40;
then (a
|
<*
0 *>)
= (
<*a9*>
. (
0
+ 1)) by
A2,
TREES_4:def 4
.= a9 by
FINSEQ_1: 40;
hence thesis by
A1,
Def36;
end;
theorem ::
ABCMIZ_1:61
Th61: for a be
negative
expression of C, (
an_Adj C) holds ex a9 be
positive
expression of C, (
an_Adj C) st a
= ((
non_op C)
term a9) & (
Non a)
= a9
proof
let a be
negative
expression of C, (
an_Adj C);
consider a9 be
expression of C, (
an_Adj C) such that
A1: a9 is
positive and
A2: a
= ((
non_op C)
term a9) by
Def38;
A3: a
= (
[
non_op , the
carrier of C]
-tree
<*a9*>) by
A2,
Th43;
reconsider a9 as
positive
expression of C, (
an_Adj C) by
A1;
take a9;
(
len
<*a9*>)
= 1 by
FINSEQ_1: 40;
then (a
|
<*
0 *>)
= (
<*a9*>
. (
0
+ 1)) by
A3,
TREES_4:def 4
.= a9 by
FINSEQ_1: 40;
hence thesis by
A2,
Def36;
end;
theorem ::
ABCMIZ_1:62
Th62: for a be non
positive
expression of C, (
an_Adj C) holds ((
non_op C)
term (
Non a))
= a
proof
let a be non
positive
expression of C, (
an_Adj C);
ex a9 be
expression of C, (
an_Adj C) st (a
= ((
non_op C)
term a9)) & ((
Non a)
= a9) by
Th60;
hence thesis;
end;
registration
let C;
let a be
negative
expression of C, (
an_Adj C);
cluster (
Non a) ->
positive;
coherence
proof
ex a9 be
positive
expression of C, (
an_Adj C) st a
= ((
non_op C)
term a9) & (
Non a)
= a9 by
Th61;
hence thesis;
end;
end
definition
let C, a;
::
ABCMIZ_1:def39
attr a is
regular means
:
Def39: a is
positive or a is
negative;
end
registration
let C;
cluster
positive ->
regular non
negative for
expression of C, (
an_Adj C);
coherence ;
cluster
negative ->
regular non
positive for
expression of C, (
an_Adj C);
coherence ;
end
registration
let C;
cluster
regular for
expression of C, (
an_Adj C);
existence
proof
set a = the
positive
expression of C, (
an_Adj C);
take a;
thus thesis;
end;
end
definition
let C;
set X = { a : a is
regular };
A1: X
c= (
Union the
Sorts of (
Free (C,(
MSVars C))))
proof
let x be
object;
assume x
in X;
then ex a st x
= a & a is
regular;
hence thesis;
end;
::
ABCMIZ_1:def40
func
QuasiAdjs C ->
Subset of (
Free (C,(
MSVars C))) equals { a : a is
regular };
coherence by
A1;
end
registration
let C;
cluster (
QuasiAdjs C) -> non
empty
constituted-DTrees;
coherence
proof
set v = the
positive
expression of C, (
an_Adj C);
v
in { a : a is
regular };
hence (
QuasiAdjs C) is non
empty;
let x be
object;
assume x
in (
QuasiAdjs C);
hence thesis;
end;
end
definition
let C;
mode
quasi-adjective of C is
regular
expression of C, (
an_Adj C);
end
theorem ::
ABCMIZ_1:63
Th63: z is
quasi-adjective of C iff z
in (
QuasiAdjs C)
proof
z
in (
QuasiAdjs C) iff ex a st z
= a & a is
regular;
hence thesis;
end;
theorem ::
ABCMIZ_1:64
z is
quasi-adjective of C iff z is
positive
expression of C, (
an_Adj C) or z is
negative
expression of C, (
an_Adj C) by
Def39;
registration
let C;
cluster non
positive ->
negative for
quasi-adjective of C;
coherence by
Def39;
cluster non
negative ->
positive for
quasi-adjective of C;
coherence ;
end
registration
let C;
cluster
positive for
quasi-adjective of C;
existence
proof
set a = the
positive
expression of C, (
an_Adj C);
a is
quasi-adjective of C;
hence thesis;
end;
cluster
negative for
quasi-adjective of C;
existence
proof
set a = the
negative
expression of C, (
an_Adj C);
a is
quasi-adjective of C;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:65
Th65: for a be
positive
quasi-adjective of C holds ex v be
constructor
OperSymbol of C st (
the_result_sort_of v)
= (
an_Adj C) & ex p st (
len p)
= (
len (
the_arity_of v)) & a
= (v
-trm p)
proof
let e be
positive
quasi-adjective of C;
per cases by
Th53;
suppose ex x be
variable st e
= (x
-term C);
hence thesis by
Th48;
end;
suppose ex c be
constructor
OperSymbol of C st ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & e
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, p be
FinSequence of (
QuasiTerms C) such that
A1: (
len p)
= (
len (
the_arity_of c)) and
A2: e
= (c
-trm p);
take c;
e is
expression of C, (
the_result_sort_of c) by
A1,
A2,
Th52;
hence (
the_result_sort_of c)
= (
an_Adj C) by
Th48;
take p;
thus thesis by
A1,
A2;
end;
suppose ex a st e
= ((
non_op C)
term a);
hence thesis by
Def37;
end;
suppose ex a, t st e
= ((
ast C)
term (a,t));
then e is
expression of C, (
a_Type C) by
Th46;
hence thesis by
Th48;
end;
end;
theorem ::
ABCMIZ_1:66
Th66: for v be
constructor
OperSymbol of C st (
the_result_sort_of v)
= (
an_Adj C) & (
len p)
= (
len (
the_arity_of v)) holds (v
-trm p) is
positive
quasi-adjective of C
proof
let v be
constructor
OperSymbol of C such that
A1: (
the_result_sort_of v)
= (
an_Adj C);
assume
A2: (
len p)
= (
len (
the_arity_of v));
then
reconsider a = (v
-trm p) as
expression of C, (
an_Adj C) by
A1,
Th52;
a is
positive by
A2,
Th54;
hence thesis;
end;
registration
let C;
let a be
quasi-adjective of C;
cluster (
Non a) ->
regular;
coherence
proof
per cases ;
suppose a is
positive;
then
reconsider a9 = a as
positive
expression of C, (
an_Adj C);
(
Non a9) is
negative;
hence thesis;
end;
suppose a is
negative;
then
reconsider a9 = a as
negative
expression of C, (
an_Adj C);
(
Non a9) is
positive;
hence thesis;
end;
end;
end
theorem ::
ABCMIZ_1:67
Th67: for a be
quasi-adjective of C holds (
Non (
Non a))
= a
proof
let a be
quasi-adjective of C;
per cases ;
suppose a is
positive;
then
reconsider a9 = a as
positive
expression of C, (
an_Adj C);
A1: ex b be
positive
expression of C, (
an_Adj C) st ((
Non a9)
= ((
non_op C)
term b)) & ((
Non (
Non a9))
= b) by
Th61;
(
Non a9)
= ((
non_op C)
term a) by
Th59;
hence thesis by
A1,
Th44;
end;
suppose a is
negative;
then
reconsider a9 = a as
negative
expression of C, (
an_Adj C);
ex b be
positive
expression of C, (
an_Adj C) st a9
= ((
non_op C)
term b) & (
Non a9)
= b by
Th61;
hence thesis by
Th59;
end;
end;
theorem ::
ABCMIZ_1:68
for a1,a2 be
quasi-adjective of C st (
Non a1)
= (
Non a2) holds a1
= a2
proof
let a1,a2 be
quasi-adjective of C;
(
Non (
Non a1))
= a1 by
Th67;
hence thesis by
Th67;
end;
theorem ::
ABCMIZ_1:69
for a be
quasi-adjective of C holds (
Non a)
<> a
proof
let a be
quasi-adjective of C;
per cases ;
suppose a is
positive;
then
reconsider a9 = a as
positive
quasi-adjective of C;
(
Non a9) is
negative
quasi-adjective of C;
hence thesis;
end;
suppose a is
negative;
then
reconsider a9 = a as
negative
quasi-adjective of C;
(
Non a9) is
positive
quasi-adjective of C;
hence thesis;
end;
end;
begin
definition
let C;
let q be
expression of C, (
a_Type C);
::
ABCMIZ_1:def41
attr q is
pure means
:
Def41: not ex a, t st q
= ((
ast C)
term (a,t));
end
theorem ::
ABCMIZ_1:70
Th70: for m be
OperSymbol of C st (
the_result_sort_of m)
=
a_Type & (
the_arity_of m)
=
{} holds ex t st t
= (
root-tree
[m, the
carrier of C]) & t is
pure
proof
let m be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
a_Type and
A2: (
the_arity_of m)
=
{} ;
set X = (
MSVars C);
(
root-tree
[m, the
carrier of C])
in (the
Sorts of (
Free (C,X))
.
a_Type ) by
A1,
A2,
MSAFREE3: 5;
then
reconsider T = (
root-tree
[m, the
carrier of C]) as
expression of C, (
a_Type C) by
Th41;
take T;
thus T
= (
root-tree
[m, the
carrier of C]);
given a, t such that
A3: T
= ((
ast C)
term (a,t));
T
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
A3,
Th46;
then
[
* , the
carrier of C]
= (T
.
{} ) by
TREES_4:def 4
.=
[m, the
carrier of C] by
TREES_4: 3;
then m
= (
ast C) by
XTUPLE_0: 1;
hence contradiction by
A2,
Def9;
end;
theorem ::
ABCMIZ_1:71
Th71: for v be
OperSymbol of C st (
the_result_sort_of v)
=
an_Adj & (
the_arity_of v)
=
{} holds ex a st a
= (
root-tree
[v, the
carrier of C]) & a is
positive
proof
let m be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
an_Adj and
A2: (
the_arity_of m)
=
{} ;
set X = (
MSVars C);
(
root-tree
[m, the
carrier of C])
in (the
Sorts of (
Free (C,X))
.
an_Adj ) by
A1,
A2,
MSAFREE3: 5;
then
reconsider T = (
root-tree
[m, the
carrier of C]) as
expression of C, (
an_Adj C) by
Th41;
take T;
thus T
= (
root-tree
[m, the
carrier of C]);
given a be
expression of C, (
an_Adj C) such that
A3: T
= ((
non_op C)
term a);
T
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
A3,
Th43;
then
[
non_op , the
carrier of C]
= (T
.
{} ) by
TREES_4:def 4
.=
[m, the
carrier of C] by
TREES_4: 3;
then m
=
non_op by
XTUPLE_0: 1;
hence contradiction by
A2,
Def9;
end;
registration
let C;
cluster
pure for
expression of C, (
a_Type C);
existence
proof
consider m,a be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
a_Type and
A2: (
the_arity_of m)
=
{} and (
the_result_sort_of a)
=
an_Adj and (
the_arity_of a)
=
{} by
Def12;
ex t be
expression of C, (
a_Type C) st t
= (
root-tree
[m, the
carrier of C]) & t is
pure by
A1,
A2,
Th70;
hence thesis;
end;
end
reserve q for
pure
expression of C, (
a_Type C),
A for
finite
Subset of (
QuasiAdjs C);
definition
let C;
::
ABCMIZ_1:def42
func
QuasiTypes C ->
set equals {
[A, t] : t is
pure };
coherence ;
end
registration
let C;
cluster (
QuasiTypes C) -> non
empty;
coherence
proof
set q = the
pure
expression of C, (
a_Type C);
{} is
finite
Subset of (
QuasiAdjs C) by
XBOOLE_1: 2;
then
[
{} , q]
in {
[A, t] : t is
pure };
hence thesis;
end;
end
definition
let C;
::
ABCMIZ_1:def43
mode
quasi-type of C ->
set means
:
Def43: it
in (
QuasiTypes C);
existence
proof
set T = the
Element of (
QuasiTypes C);
take T;
thus thesis;
end;
end
theorem ::
ABCMIZ_1:72
Th72: z is
quasi-type of C iff ex A, q st z
=
[A, q]
proof
z
in (
QuasiTypes C) iff ex t, A st z
=
[A, t] & t is
pure;
hence thesis by
Def43;
end;
theorem ::
ABCMIZ_1:73
Th73:
[x, y] is
quasi-type of C iff x is
finite
Subset of (
QuasiAdjs C) & y is
pure
expression of C, (
a_Type C)
proof
now
assume
[x, y] is
quasi-type of C;
then ex A, q st (
[x, y]
=
[A, q]) by
Th72;
hence x is
finite
Subset of (
QuasiAdjs C) & y is
pure
expression of C, (
a_Type C) by
XTUPLE_0: 1;
end;
thus thesis by
Th72;
end;
reserve T for
quasi-type of C;
registration
let C;
cluster ->
pair for
quasi-type of C;
coherence
proof
let x be
quasi-type of C;
ex A, q st x
=
[A, q] by
Th72;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:74
Th74: ex m be
constructor
OperSymbol of C st (
the_result_sort_of m)
= (
a_Type C) & ex p st (
len p)
= (
len (
the_arity_of m)) & q
= (m
-trm p)
proof
set e = q;
per cases by
Th53;
suppose ex x be
variable st e
= (x
-term C);
hence thesis by
Th48;
end;
suppose ex c be
constructor
OperSymbol of C st ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & e
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, p be
FinSequence of (
QuasiTerms C) such that
A1: (
len p)
= (
len (
the_arity_of c)) and
A2: e
= (c
-trm p);
take c;
e is
expression of C, (
the_result_sort_of c) by
A1,
A2,
Th52;
hence (
the_result_sort_of c)
= (
a_Type C) by
Th48;
take p;
thus thesis by
A1,
A2;
end;
suppose ex a st e
= ((
non_op C)
term a);
then e is
expression of C, (
an_Adj C) by
Th43;
hence thesis by
Th48;
end;
suppose ex a st ex q be
expression of C, (
a_Type C) st e
= ((
ast C)
term (a,q));
hence thesis by
Def41;
end;
end;
theorem ::
ABCMIZ_1:75
Th75: for m be
constructor
OperSymbol of C st (
the_result_sort_of m)
= (
a_Type C) & (
len p)
= (
len (
the_arity_of m)) holds (m
-trm p) is
pure
expression of C, (
a_Type C)
proof
let v be
constructor
OperSymbol of C such that
A1: (
the_result_sort_of v)
= (
a_Type C);
assume
A2: (
len p)
= (
len (
the_arity_of v));
then
reconsider a = (v
-trm p) as
expression of C, (
a_Type C) by
A1,
Th52;
a is
pure by
A2,
Th55;
hence thesis;
end;
theorem ::
ABCMIZ_1:76
(
QuasiTerms C)
misses (
QuasiAdjs C) & (
QuasiTerms C)
misses (
QuasiTypes C) & (
QuasiTypes C)
misses (
QuasiAdjs C)
proof
set X = (
MSVars C);
set Y = (X
(\/) (the
carrier of C
-->
{
0 }));
ex A be
MSSubset of (
FreeMSA Y) st ((
Free (C,X))
= (
GenMSAlg A)) & (A
= ((
Reverse Y)
"" X)) by
MSAFREE3:def 1;
then the
Sorts of (
Free (C,X)) is
MSSubset of (
FreeMSA Y) by
MSUALG_2:def 9;
then
A1: the
Sorts of (
Free (C,X))
c= the
Sorts of (
FreeMSA Y) by
PBOOLE:def 18;
then
A2: (
QuasiTerms C)
c= (the
Sorts of (
FreeMSA Y)
. (
a_Term C));
A3: (the
Sorts of (
Free (C,X))
. (
an_Adj C))
c= (the
Sorts of (
FreeMSA Y)
. (
an_Adj C)) by
A1;
(
QuasiAdjs C)
c= (the
Sorts of (
Free (C,X))
. (
an_Adj C))
proof
let x be
object;
assume x
in (
QuasiAdjs C);
then ex a st x
= a & a is
regular;
hence thesis by
Def28;
end;
then
A4: (
QuasiAdjs C)
c= (the
Sorts of (
FreeMSA Y)
. (
an_Adj C)) by
A3;
(the
Sorts of (
FreeMSA Y)
. (
a_Term C))
misses (the
Sorts of (
FreeMSA Y)
. (
an_Adj C)) by
PROB_2:def 2;
hence (
QuasiTerms C)
misses (
QuasiAdjs C) by
A2,
A4,
XBOOLE_1: 64;
now
let x be
object;
assume that
A5: x
in (
QuasiTerms C) and
A6: x
in (
QuasiTypes C);
x is
quasi-type of C by
A6,
Def43;
hence contradiction by
A5;
end;
hence (
QuasiTerms C)
misses (
QuasiTypes C) by
XBOOLE_0: 3;
now
let x be
object;
assume that
A7: x
in (
QuasiAdjs C) and
A8: x
in (
QuasiTypes C);
x is
quasi-type of C by
A8,
Def43;
hence contradiction by
A7;
end;
hence thesis by
XBOOLE_0: 3;
end;
theorem ::
ABCMIZ_1:77
for e be
set holds (e is
quasi-term of C implies not e is
quasi-adjective of C) & (e is
quasi-term of C implies not e is
quasi-type of C) & (e is
quasi-type of C implies not e is
quasi-adjective of C) by
Th48;
notation
let C, A, q;
synonym A
ast q for
[A,q];
end
definition
let C, A, q;
:: original:
ast
redefine
func A
ast q ->
quasi-type of C ;
coherence by
Th73;
end
registration
let C, T;
cluster (T
`1 ) ->
finite;
coherence
proof
ex A, q st T
=
[A, q] by
Th72;
hence thesis;
end;
end
notation
let C, T;
synonym
adjs T for T
`1 ;
synonym
the_base_of T for T
`2 ;
end
definition
let C, T;
:: original:
adjs
redefine
func
adjs T ->
Subset of (
QuasiAdjs C) ;
coherence
proof
ex A, q st T
=
[A, q] by
Th72;
hence thesis;
end;
:: original:
the_base_of
redefine
func
the_base_of T ->
pure
expression of C, (
a_Type C) ;
coherence
proof
ex A, q st T
=
[A, q] by
Th72;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:78
(
adjs (A
ast q))
= A & (
the_base_of (A
ast q))
= q;
theorem ::
ABCMIZ_1:79
for A1,A2 be
finite
Subset of (
QuasiAdjs C) holds for q1,q2 be
pure
expression of C, (
a_Type C) st (A1
ast q1)
= (A2
ast q2) holds A1
= A2 & q1
= q2 by
XTUPLE_0: 1;
theorem ::
ABCMIZ_1:80
Th80: T
= ((
adjs T)
ast (
the_base_of T));
theorem ::
ABCMIZ_1:81
for T1,T2 be
quasi-type of C st (
adjs T1)
= (
adjs T2) & (
the_base_of T1)
= (
the_base_of T2) holds T1
= T2
proof
let T1,T2 be
quasi-type of C;
T1
= ((
adjs T1)
ast (
the_base_of T1));
hence thesis by
Th80;
end;
definition
let C, T;
let a be
quasi-adjective of C;
::
ABCMIZ_1:def44
func a
ast T ->
quasi-type of C equals
[(
{a}
\/ (
adjs T)), (
the_base_of T)];
coherence
proof
a
in (
QuasiAdjs C);
then
{a}
c= (
QuasiAdjs C) by
ZFMISC_1: 31;
then (
{a}
\/ (
adjs T)) is
Subset of (
QuasiAdjs C) by
XBOOLE_1: 8;
hence thesis by
Th73;
end;
end
theorem ::
ABCMIZ_1:82
for a be
quasi-adjective of C holds (
adjs (a
ast T))
= (
{a}
\/ (
adjs T)) & (
the_base_of (a
ast T))
= (
the_base_of T);
theorem ::
ABCMIZ_1:83
for a be
quasi-adjective of C holds (a
ast (a
ast T))
= (a
ast T)
proof
let a be
quasi-adjective of C;
thus (a
ast (a
ast T))
=
[(
{a}
\/ (
{a}
\/ (
adjs T))), (
the_base_of (a
ast T))]
.=
[((
{a}
\/
{a})
\/ (
adjs T)), (
the_base_of (a
ast T))] by
XBOOLE_1: 4
.= (a
ast T);
end;
theorem ::
ABCMIZ_1:84
for a,b be
quasi-adjective of C holds (a
ast (b
ast T))
= (b
ast (a
ast T)) by
XBOOLE_1: 4;
begin
registration
let S be non
void
Signature;
let s be
SortSymbol of S;
let X be
non-empty
ManySortedSet of the
carrier of S;
let t be
Term of S, X;
cluster ((
variables_in t)
. s) ->
finite;
coherence
proof
defpred
P[ non
empty
Relation] means for s be
SortSymbol of S holds ((S
variables_in $1)
. s) is
finite;
A1: for z be
SortSymbol of S, v be
Element of (X
. z) holds
P[(
root-tree
[v, z])]
proof
let z be
SortSymbol of S, v be
Element of (X
. z);
let s be
SortSymbol of S;
s
= z or s
<> z;
hence thesis by
MSAFREE3: 10;
end;
A2: for o be
OperSymbol of S, p be
ArgumentSeq of (
Sym (o,X)) st for t be
Term of S, X st t
in (
rng p) holds
P[t] holds
P[(
[o, the
carrier of S]
-tree p)]
proof
let o be
OperSymbol of S, p be
ArgumentSeq of (
Sym (o,X)) such that
A3: for t be
Term of S, X st t
in (
rng p) holds for s be
SortSymbol of S holds ((S
variables_in t)
. s) is
finite;
let s be
SortSymbol of S;
deffunc
F(
Term of S, X) = ((S
variables_in $1)
. s);
set A = {
F(q) where q be
Term of S, X : q
in (
rng p) };
A4: (
rng p) is
finite;
A5: A is
finite from
FRAENKEL:sch 21(
A4);
now
let B be
set;
assume B
in A;
then ex q be
Term of S, X st B
= ((S
variables_in q)
. s) & q
in (
rng p);
hence B is
finite by
A3;
end;
then
A6: (
union A) is
finite by
A5,
FINSET_1: 7;
((S
variables_in (
[o, the
carrier of S]
-tree p))
. s)
c= (
union A)
proof
let x be
object;
assume x
in ((S
variables_in (
[o, the
carrier of S]
-tree p))
. s);
then
consider t be
DecoratedTree such that
A7: t
in (
rng p) and
A8: x
in ((S
variables_in t)
. s) by
MSAFREE3: 11;
consider i be
object such that
A9: i
in (
dom p) and
A10: t
= (p
. i) by
A7,
FUNCT_1:def 3;
reconsider i as
Nat by
A9;
reconsider t = (p
. i) as
Term of S, X by
A9,
MSATERM: 22;
((S
variables_in t)
. s)
in A by
A7,
A10;
hence thesis by
A8,
A10,
TARSKI:def 4;
end;
hence thesis by
A6;
end;
for t be
Term of S, X holds
P[t] from
MSATERM:sch 1(
A1,
A2);
hence thesis;
end;
end
registration
let S be non
void
Signature;
let s be
SortSymbol of S;
let X be non
empty-yielding
ManySortedSet of the
carrier of S;
let t be
Element of (
Free (S,X));
cluster ((S
variables_in t)
. s) ->
finite;
coherence
proof
reconsider t as
Term of S, (X
(\/) (the
carrier of S
-->
{
0 })) by
MSAFREE3: 8;
((S
variables_in t)
. s)
= ((
variables_in t)
. s);
hence thesis;
end;
end
definition
let S be non
void
Signature;
let X be non
empty-yielding
ManySortedSet of the
carrier of S;
let s be
SortSymbol of S;
::
ABCMIZ_1:def45
func (X,s)
variables_in ->
Function of (
Union the
Sorts of (
Free (S,X))), (
bool (X
. s)) means
:
Def45: for t be
Element of (
Free (S,X)) holds (it
. t)
= ((S
variables_in t)
. s);
uniqueness
proof
let f1,f2 be
Function of (
Union the
Sorts of (
Free (S,X))), (
bool (X
. s)) such that
A1: for t be
Element of (
Free (S,X)) holds (f1
. t)
= ((S
variables_in t)
. s) and
A2: for t be
Element of (
Free (S,X)) holds (f2
. t)
= ((S
variables_in t)
. s);
now
let x be
Element of (
Union the
Sorts of (
Free (S,X)));
reconsider t = x as
Element of (
Free (S,X));
thus (f1
. x)
= ((S
variables_in t)
. s) by
A1
.= (f2
. x) by
A2;
end;
hence thesis by
FUNCT_2: 63;
end;
existence
proof
defpred
P[
object,
object] means ex t be
Element of (
Free (S,X)) st t
= $1 & $2
= ((S
variables_in t)
. s);
A3:
now
let x be
object;
assume x
in (
Union the
Sorts of (
Free (S,X)));
then
reconsider t = x as
Element of (
Free (S,X));
(S
variables_in t)
c= X by
MSAFREE3: 27;
then ((S
variables_in t)
. s)
c= (X
. s);
hence ex y be
object st y
in (
bool (X
. s)) &
P[x, y];
end;
consider f be
Function such that
A4: (
dom f)
= (
Union the
Sorts of (
Free (S,X))) & (
rng f)
c= (
bool (X
. s)) and
A5: for x be
object st x
in (
Union the
Sorts of (
Free (S,X))) holds
P[x, (f
. x)] from
FUNCT_1:sch 6(
A3);
reconsider f as
Function of (
Union the
Sorts of (
Free (S,X))), (
bool (X
. s)) by
A4,
FUNCT_2: 2;
take f;
let x be
Element of (
Free (S,X));
ex t be
Element of (
Free (S,X)) st t
= x & (f
. x)
= ((S
variables_in t)
. s) by
A5;
hence thesis;
end;
end
definition
let C be
initialized
ConstructorSignature;
let e be
expression of C;
::
ABCMIZ_1:def46
func
variables_in e ->
Subset of
Vars equals ((C
variables_in e)
. (
a_Term C));
coherence
proof
A1: ((
MSVars C)
. (
a_Term C))
=
Vars by
Def25;
(C
variables_in e)
c= (
MSVars C) by
MSAFREE3: 27;
hence thesis by
A1;
end;
end
registration
let C, e;
cluster (
variables_in e) ->
finite;
coherence ;
end
definition
let C, e;
::
ABCMIZ_1:def47
func
vars e ->
finite
Subset of
Vars equals (
varcl (
variables_in e));
coherence by
Th24;
end
theorem ::
ABCMIZ_1:85
(
varcl (
vars e))
= (
vars e);
theorem ::
ABCMIZ_1:86
for x be
variable holds (
variables_in (x
-term C))
=
{x} by
MSAFREE3: 10;
theorem ::
ABCMIZ_1:87
for x be
variable holds (
vars (x
-term C))
= (
{x}
\/ (
vars x))
proof
let x be
variable;
thus (
vars (x
-term C))
= (
varcl
{x}) by
MSAFREE3: 10
.= (
{x}
\/ (
vars x)) by
Th27;
end;
theorem ::
ABCMIZ_1:88
Th88: for p be
DTree-yielding
FinSequence st e
= (
[c, the
carrier of C]
-tree p) holds (
variables_in e)
= (
union { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) })
proof
let p be
DTree-yielding
FinSequence;
set X = { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) };
assume
A1: e
= (
[c, the
carrier of C]
-tree p);
then p
in ((
QuasiTerms C)
* ) by
Th51;
then p is
FinSequence of (
QuasiTerms C) by
FINSEQ_1:def 11;
then
A2: (
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
thus (
variables_in e)
c= (
union X)
proof
let a be
object;
assume a
in (
variables_in e);
then
consider t be
DecoratedTree such that
A3: t
in (
rng p) and
A4: a
in ((C
variables_in t)
. (
a_Term C)) by
A1,
MSAFREE3: 11;
reconsider t as
quasi-term of C by
A2,
A3,
Th41;
(
variables_in t)
in X by
A3;
hence thesis by
A4,
TARSKI:def 4;
end;
let a be
object;
assume a
in (
union X);
then
consider Y be
set such that
A5: a
in Y and
A6: Y
in X by
TARSKI:def 4;
ex t be
quasi-term of C st Y
= (
variables_in t) & t
in (
rng p) by
A6;
hence thesis by
A1,
A5,
MSAFREE3: 11;
end;
theorem ::
ABCMIZ_1:89
Th89: for p be
DTree-yielding
FinSequence st e
= (
[c, the
carrier of C]
-tree p) holds (
vars e)
= (
union { (
vars t) where t be
quasi-term of C : t
in (
rng p) })
proof
let p be
DTree-yielding
FinSequence;
assume
A1: e
= (
[c, the
carrier of C]
-tree p);
set A = { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) };
set B = { (
vars t) where t be
quasi-term of C : t
in (
rng p) };
per cases ;
suppose
A2: A
=
{} ;
set b = the
Element of B;
now
assume B
<>
{} ;
then b
in B;
then
consider t be
quasi-term of C such that b
= (
vars t) and
A3: t
in (
rng p);
(
variables_in t)
in A by
A3;
hence contradiction by
A2;
end;
hence thesis by
A1,
A2,
Th8,
Th88,
ZFMISC_1: 2;
end;
suppose A
<>
{} ;
then
reconsider A as non
empty
set;
set D = the set of all (
varcl s) where s be
Element of A;
A4: B
c= D
proof
let a be
object;
assume a
in B;
then
consider t be
quasi-term of C such that
A5: a
= (
vars t) and
A6: t
in (
rng p);
(
variables_in t)
in A by
A6;
then
reconsider s = (
variables_in t) as
Element of A;
a
= (
varcl s) by
A5;
hence thesis;
end;
A7: D
c= B
proof
let a be
object;
assume a
in D;
then
consider s be
Element of A such that
A8: a
= (
varcl s);
s
in A;
then
consider t be
quasi-term of C such that
A9: s
= (
variables_in t) and
A10: t
in (
rng p);
(
vars t)
= a by
A8,
A9;
hence thesis by
A10;
end;
thus (
vars e)
= (
varcl (
union A)) by
A1,
Th88
.= (
union D) by
Th10
.= (
union B) by
A4,
A7,
XBOOLE_0:def 10;
end;
end;
theorem ::
ABCMIZ_1:90
(
len p)
= (
len (
the_arity_of c)) implies (
variables_in (c
-trm p))
= (
union { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) })
proof
assume (
len p)
= (
len (
the_arity_of c));
then (c
-trm p)
= (
[c, the
carrier of C]
-tree p) by
Def35;
hence thesis by
Th88;
end;
theorem ::
ABCMIZ_1:91
(
len p)
= (
len (
the_arity_of c)) implies (
vars (c
-trm p))
= (
union { (
vars t) where t be
quasi-term of C : t
in (
rng p) })
proof
assume (
len p)
= (
len (
the_arity_of c));
then (c
-trm p)
= (
[c, the
carrier of C]
-tree p) by
Def35;
hence thesis by
Th89;
end;
theorem ::
ABCMIZ_1:92
for S be
ManySortedSign, o be
set holds (S
variables_in (
[o, the
carrier of S]
-tree
{} ))
= (
EmptyMS the
carrier of S)
proof
let S be
ManySortedSign, o be
set;
now
let s be
object;
assume
A1: s
in the
carrier of S;
now
let x be
object;
(
rng
{} )
=
{} ;
then x
in ((S
variables_in (
[o, the
carrier of S]
-tree
{} ))
. s) iff ex q be
DecoratedTree st q
in
{} & x
in ((S
variables_in q)
. s) by
A1,
MSAFREE3: 11;
hence x
in ((S
variables_in (
[o, the
carrier of S]
-tree
{} ))
. s) iff x
in ((
EmptyMS the
carrier of S)
. s);
end;
hence ((S
variables_in (
[o, the
carrier of S]
-tree
{} ))
. s)
= ((
EmptyMS the
carrier of S)
. s) by
TARSKI: 2;
end;
hence thesis;
end;
theorem ::
ABCMIZ_1:93
Th93: for S be
ManySortedSign, o be
set, t be
DecoratedTree holds (S
variables_in (
[o, the
carrier of S]
-tree
<*t*>))
= (S
variables_in t)
proof
let S be
ManySortedSign, o be
set, t be
DecoratedTree;
now
let s be
object;
assume
A1: s
in the
carrier of S;
A2: t
in
{t} by
TARSKI:def 1;
now
let x be
object;
(
rng
<*t*>)
=
{t} by
FINSEQ_1: 39;
then x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t*>))
. s) iff ex q be
DecoratedTree st q
in
{t} & x
in ((S
variables_in q)
. s) by
A1,
MSAFREE3: 11;
hence x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t*>))
. s) iff x
in ((S
variables_in t)
. s) by
A2,
TARSKI:def 1;
end;
hence ((S
variables_in (
[o, the
carrier of S]
-tree
<*t*>))
. s)
= ((S
variables_in t)
. s) by
TARSKI: 2;
end;
hence thesis;
end;
theorem ::
ABCMIZ_1:94
Th94: (
variables_in ((
non_op C)
term a))
= (
variables_in a)
proof
((
non_op C)
term a)
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
Th43;
hence thesis by
Th93;
end;
theorem ::
ABCMIZ_1:95
(
vars ((
non_op C)
term a))
= (
vars a) by
Th94;
theorem ::
ABCMIZ_1:96
Th96: for S be
ManySortedSign, o be
set, t1,t2 be
DecoratedTree holds (S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
= ((S
variables_in t1)
(\/) (S
variables_in t2))
proof
let S be
ManySortedSign, o be
set, t1,t2 be
DecoratedTree;
now
let s be
object;
assume
A1: s
in the
carrier of S;
A2: t1
in
{t1, t2} by
TARSKI:def 2;
A3: t2
in
{t1, t2} by
TARSKI:def 2;
now
let x be
object;
(
rng
<*t1, t2*>)
=
{t1, t2} by
FINSEQ_2: 127;
then x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
. s) iff ex q be
DecoratedTree st q
in
{t1, t2} & x
in ((S
variables_in q)
. s) by
A1,
MSAFREE3: 11;
then x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
. s) iff x
in ((S
variables_in t1)
. s) or x
in ((S
variables_in t2)
. s) by
A2,
A3,
TARSKI:def 2;
then x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
. s) iff x
in (((S
variables_in t1)
. s)
\/ ((S
variables_in t2)
. s)) by
XBOOLE_0:def 3;
hence x
in ((S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
. s) iff x
in (((S
variables_in t1)
(\/) (S
variables_in t2))
. s) by
A1,
PBOOLE:def 4;
end;
hence ((S
variables_in (
[o, the
carrier of S]
-tree
<*t1, t2*>))
. s)
= (((S
variables_in t1)
(\/) (S
variables_in t2))
. s) by
TARSKI: 2;
end;
hence thesis;
end;
theorem ::
ABCMIZ_1:97
Th97: (
variables_in ((
ast C)
term (a,t)))
= ((
variables_in a)
\/ (
variables_in t))
proof
((
ast C)
term (a,t))
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
Th46;
then (
variables_in ((
ast C)
term (a,t)))
= (((C
variables_in a)
(\/) (C
variables_in t))
.
a_Term ) by
Th96;
hence thesis by
PBOOLE:def 4;
end;
theorem ::
ABCMIZ_1:98
(
vars ((
ast C)
term (a,t)))
= ((
vars a)
\/ (
vars t))
proof
thus (
vars ((
ast C)
term (a,t)))
= (
varcl ((
variables_in a)
\/ (
variables_in t))) by
Th97
.= ((
vars a)
\/ (
vars t)) by
Th11;
end;
theorem ::
ABCMIZ_1:99
Th99: (
variables_in (
Non a))
= (
variables_in a)
proof
per cases ;
suppose a is non
positive;
then
consider a9 be
expression of C, (
an_Adj C) such that
A1: a
= ((
non_op C)
term a9) and
A2: (
Non a)
= a9 by
Th60;
(
[(
non_op C), the
carrier of C]
-tree
<*a9*>)
= a by
A1,
Th43;
hence thesis by
A2,
Th93;
end;
suppose a is
positive;
then (
Non a)
= ((
non_op C)
term a) by
Th59
.= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
Th43;
hence thesis by
Th93;
end;
end;
theorem ::
ABCMIZ_1:100
(
vars (
Non a))
= (
vars a) by
Th99;
definition
let C;
let T be
quasi-type of C;
::
ABCMIZ_1:def48
func
variables_in T ->
Subset of
Vars equals ((
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T)))
\/ (
variables_in (
the_base_of T)));
coherence
proof
A1: ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T)) is
Subset of (
bool
Vars ) by
Def25;
(
union (
bool
Vars ))
=
Vars by
ZFMISC_1: 81;
then (
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T)))
c=
Vars by
A1,
ZFMISC_1: 77;
hence thesis by
XBOOLE_1: 8;
end;
end
registration
let C;
let T be
quasi-type of C;
cluster (
variables_in T) ->
finite;
coherence
proof
now
let A be
set;
assume A
in ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T));
then
consider x be
object such that
A1: x
in (
Union the
Sorts of (
Free (C,(
MSVars C)))) and x
in (
adjs T) and
A2: A
= ((((
MSVars C),(
a_Term C))
variables_in )
. x) by
FUNCT_2: 64;
reconsider x as
expression of C by
A1;
A
= ((C
variables_in x)
. (
a_Term C)) by
A2,
Def45;
hence A is
finite;
end;
then (
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T))) is
finite by
FINSET_1: 7;
hence thesis;
end;
end
definition
let C;
let T be
quasi-type of C;
::
ABCMIZ_1:def49
func
vars T ->
finite
Subset of
Vars equals (
varcl (
variables_in T));
coherence by
Th24;
end
theorem ::
ABCMIZ_1:101
for T be
quasi-type of C holds (
varcl (
vars T))
= (
vars T);
theorem ::
ABCMIZ_1:102
Th102: for T be
quasi-type of C holds for a be
quasi-adjective of C holds (
variables_in (a
ast T))
= ((
variables_in a)
\/ (
variables_in T))
proof
let T be
quasi-type of C;
let a be
quasi-adjective of C;
A1: (
dom (((
MSVars C),(
a_Term C))
variables_in ))
= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
FUNCT_2:def 1;
thus (
variables_in (a
ast T))
= ((
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs (a
ast T))))
\/ (
variables_in (
the_base_of T)))
.= ((
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
{a}
\/ (
adjs T))))
\/ (
variables_in (
the_base_of T)))
.= ((
union (((((
MSVars C),(
a_Term C))
variables_in )
.:
{a})
\/ ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T))))
\/ (
variables_in (
the_base_of T))) by
RELAT_1: 120
.= (((
union ((((
MSVars C),(
a_Term C))
variables_in )
.:
{a}))
\/ (
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs T))))
\/ (
variables_in (
the_base_of T))) by
ZFMISC_1: 78
.= ((
union (
Im ((((
MSVars C),(
a_Term C))
variables_in ),a)))
\/ (
variables_in T)) by
XBOOLE_1: 4
.= ((
union
{((((
MSVars C),(
a_Term C))
variables_in )
. a)})
\/ (
variables_in T)) by
A1,
FUNCT_1: 59
.= (((((
MSVars C),(
a_Term C))
variables_in )
. a)
\/ (
variables_in T)) by
ZFMISC_1: 25
.= ((
variables_in a)
\/ (
variables_in T)) by
Def45;
end;
theorem ::
ABCMIZ_1:103
for T be
quasi-type of C holds for a be
quasi-adjective of C holds (
vars (a
ast T))
= ((
vars a)
\/ (
vars T))
proof
let T be
quasi-type of C;
let a be
quasi-adjective of C;
thus (
vars (a
ast T))
= (
varcl ((
variables_in a)
\/ (
variables_in T))) by
Th102
.= ((
vars a)
\/ (
vars T)) by
Th11;
end;
theorem ::
ABCMIZ_1:104
Th104: (
variables_in (A
ast q))
= ((
union { (
variables_in a) where a be
quasi-adjective of C : a
in A })
\/ (
variables_in q))
proof
set X = ((((
MSVars C),(
a_Term C))
variables_in )
.: A);
set Y = { (
variables_in a) where a be
quasi-adjective of C : a
in A };
A1: X
c= Y
proof
let z be
object;
assume z
in X;
then
consider a be
object such that a
in (
dom (((
MSVars C),(
a_Term C))
variables_in )) and
A2: a
in A and
A3: z
= ((((
MSVars C),(
a_Term C))
variables_in )
. a) by
FUNCT_1:def 6;
reconsider a as
quasi-adjective of C by
A2,
Th63;
z
= (
variables_in a) by
A3,
Def45;
hence thesis by
A2;
end;
A4: Y
c= X
proof
let z be
object;
assume z
in Y;
then
consider a be
quasi-adjective of C such that
A5: z
= (
variables_in a) and
A6: a
in A;
A7: z
= ((((
MSVars C),(
a_Term C))
variables_in )
. a) by
A5,
Def45;
(
dom (((
MSVars C),(
a_Term C))
variables_in ))
= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
FUNCT_2:def 1;
hence thesis by
A6,
A7,
FUNCT_1:def 6;
end;
thus (
variables_in (A
ast q))
= ((
union ((((
MSVars C),(
a_Term C))
variables_in )
.: (
adjs (A
ast q))))
\/ (
variables_in q))
.= ((
union ((((
MSVars C),(
a_Term C))
variables_in )
.: A))
\/ (
variables_in q))
.= ((
union { (
variables_in a) where a be
quasi-adjective of C : a
in A })
\/ (
variables_in q)) by
A1,
A4,
XBOOLE_0:def 10;
end;
theorem ::
ABCMIZ_1:105
(
vars (A
ast q))
= ((
union { (
vars a) where a be
quasi-adjective of C : a
in A })
\/ (
vars q))
proof
set X = { (
variables_in a) where a be
quasi-adjective of C : a
in A };
set Y = { (
vars a) where a be
quasi-adjective of C : a
in A };
A1: (
union X)
c= (
union Y)
proof
let x be
object;
assume x
in (
union X);
then
consider Z be
set such that
A2: x
in Z and
A3: Z
in X by
TARSKI:def 4;
consider a be
quasi-adjective of C such that
A4: Z
= (
variables_in a) and
A5: a
in A by
A3;
A6: Z
c= (
vars a) by
A4,
Def1;
(
vars a)
in Y by
A5;
hence thesis by
A2,
A6,
TARSKI:def 4;
end;
for x, y st
[x, y]
in (
union Y) holds x
c= (
union Y)
proof
let x, y;
assume
[x, y]
in (
union Y);
then
consider Z be
set such that
A7:
[x, y]
in Z and
A8: Z
in Y by
TARSKI:def 4;
ex a be
quasi-adjective of C st (Z
= (
vars a)) & (a
in A) by
A8;
then
A9: x
c= Z by
A7,
Def1;
Z
c= (
union Y) by
A8,
ZFMISC_1: 74;
hence thesis by
A9;
end;
then
A10: (
varcl (
union X))
c= (
union Y) by
A1,
Def1;
A11: (
union Y)
c= (
varcl (
union X))
proof
let x be
object;
assume x
in (
union Y);
then
consider Z be
set such that
A12: x
in Z and
A13: Z
in Y by
TARSKI:def 4;
consider a be
quasi-adjective of C such that
A14: Z
= (
vars a) and
A15: a
in A by
A13;
(
variables_in a)
in X by
A15;
then (
vars a)
c= (
varcl (
union X)) by
Th9,
ZFMISC_1: 74;
hence thesis by
A12,
A14;
end;
thus (
vars (A
ast q))
= (
varcl ((
union X)
\/ (
variables_in q))) by
Th104
.= ((
varcl (
union X))
\/ (
vars q)) by
Th11
.= ((
union Y)
\/ (
vars q)) by
A10,
A11,
XBOOLE_0:def 10;
end;
theorem ::
ABCMIZ_1:106
Th106: (
variables_in ((
{} (
QuasiAdjs C))
ast q))
= (
variables_in q)
proof
set A = (
{} (
QuasiAdjs C));
set AA = { (
variables_in a) where a be
quasi-adjective of C : a
in A };
AA
c=
{}
proof
let x be
object;
assume x
in AA;
then ex a be
quasi-adjective of C st x
= (
variables_in a) & a
in A;
hence thesis;
end;
then
A1: AA
=
{} ;
(
variables_in (A
ast q))
= ((
union AA)
\/ (
variables_in q)) by
Th104;
hence thesis by
A1,
ZFMISC_1: 2;
end;
theorem ::
ABCMIZ_1:107
Th107: e is
ground iff (
variables_in e)
=
{}
proof
thus e is
ground implies (
variables_in e)
=
{} by
Th1,
XBOOLE_1: 3;
assume that
A1: (
variables_in e)
=
{} and
A2: (
Union (C
variables_in e))
<>
{} ;
set x = the
Element of (
Union (C
variables_in e));
A3: ex y be
object st (y
in (
dom (C
variables_in e))) & (x
in ((C
variables_in e)
. y)) by
A2,
CARD_5: 2;
A4: (
dom (C
variables_in e))
= the
carrier of C by
PARTFUN1:def 2
.=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
A5: (C
variables_in e)
c= (
MSVars C) by
MSAFREE3: 27;
A6: ((
MSVars C)
.
an_Adj )
=
{} by
Def25;
A7: ((
MSVars C)
.
a_Type )
=
{} by
Def25;
A8: ((C
variables_in e)
. (
an_Adj C))
c=
{} by
A5,
A6;
((C
variables_in e)
. (
a_Type C))
c=
{} by
A5,
A7;
hence thesis by
A1,
A3,
A4,
A8,
ENUMSET1:def 1;
end;
definition
let C;
let T be
quasi-type of C;
::
ABCMIZ_1:def50
attr T is
ground means
:
Def50: (
variables_in T)
=
{} ;
end
registration
let C;
cluster
ground
pure for
expression of C, (
a_Type C);
existence
proof
consider m,a be
OperSymbol of C such that
A1: (
the_result_sort_of m)
=
a_Type and
A2: (
the_arity_of m)
=
{} and (
the_result_sort_of a)
=
an_Adj and (
the_arity_of a)
=
{} by
Def12;
(
root-tree
[m, the
carrier of C])
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Type C)) by
A1,
A2,
MSAFREE3: 5;
then
reconsider mm = (
root-tree
[m, the
carrier of C]) as
expression of C, (
a_Type C) by
Th41;
take mm;
set p = (
<*> (
Union the
Sorts of (
Free (C,(
MSVars C)))));
A3: mm
= (
[m, the
carrier of C]
-tree p) by
TREES_4: 20;
A4: m
<>
* by
A2,
Def9;
m
<>
non_op by
A1,
Def9;
then
A5: m is
constructor by
A4;
(
variables_in mm)
c=
{}
proof
let x be
object;
assume x
in (
variables_in mm);
then x
in (
union { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) }) by
A3,
A5,
Th88;
then
consider Y such that x
in Y and
A6: Y
in { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) } by
TARSKI:def 4;
ex t be
quasi-term of C st Y
= (
variables_in t) & t
in (
rng p) by
A6;
hence thesis;
end;
then (
variables_in mm)
=
{} ;
hence mm is
ground by
Th107;
ex t be
expression of C, (
a_Type C) st t
= (
root-tree
[m, the
carrier of C]) & t is
pure by
A1,
A2,
Th70;
hence thesis;
end;
cluster
ground for
quasi-adjective of C;
existence
proof
consider m,a be
OperSymbol of C such that (
the_result_sort_of m)
=
a_Type and (
the_arity_of m)
=
{} and
A7: (
the_result_sort_of a)
=
an_Adj and
A8: (
the_arity_of a)
=
{} by
Def12;
consider mm be
expression of C, (
an_Adj C) such that
A9: mm
= (
root-tree
[a, the
carrier of C]) and
A10: mm is
positive by
A7,
A8,
Th71;
reconsider mm as
quasi-adjective of C by
A10;
take mm;
set p = (
<*> (
Union the
Sorts of (
Free (C,(
MSVars C)))));
A11: mm
= (
[a, the
carrier of C]
-tree p) by
A9,
TREES_4: 20;
A12: a
<>
* by
A7,
Def9;
a
<>
non_op by
A8,
Def9;
then
A13: a is
constructor by
A12;
(
variables_in mm)
c=
{}
proof
let x be
object;
assume x
in (
variables_in mm);
then x
in (
union { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) }) by
A11,
A13,
Th88;
then
consider Y such that x
in Y and
A14: Y
in { (
variables_in t) where t be
quasi-term of C : t
in (
rng p) } by
TARSKI:def 4;
ex t be
quasi-term of C st Y
= (
variables_in t) & t
in (
rng p) by
A14;
hence thesis;
end;
then (
variables_in mm)
=
{} ;
hence thesis by
Th107;
end;
end
theorem ::
ABCMIZ_1:108
Th108: for t be
ground
pure
expression of C, (
a_Type C) holds ((
{} (
QuasiAdjs C))
ast t) is
ground
proof
let t be
ground
pure
expression of C, (
a_Type C);
set T = ((
{} (
QuasiAdjs C))
ast t);
thus (
variables_in T)
= (
variables_in t) by
Th106
.=
{} by
Th107;
end;
registration
let C;
let t be
ground
pure
expression of C, (
a_Type C);
cluster ((
{} (
QuasiAdjs C))
ast t) ->
ground;
coherence by
Th108;
end
registration
let C;
cluster
ground for
quasi-type of C;
existence
proof
set t = the
ground
pure
expression of C, (
a_Type C);
take ((
{} (
QuasiAdjs C))
ast t);
thus thesis;
end;
end
registration
let C;
let T be
ground
quasi-type of C;
let a be
ground
quasi-adjective of C;
cluster (a
ast T) ->
ground;
coherence
proof
thus (
variables_in (a
ast T))
= ((
variables_in a)
\/ (
variables_in T)) by
Th102
.= (
{}
\/ (
variables_in T)) by
Th107
.=
{} by
Def50;
end;
end
begin
definition
::
ABCMIZ_1:def51
func
VarPoset ->
strict non
empty
Poset equals ((
InclPoset the set of all (
varcl A) where A be
finite
Subset of
Vars )
opp );
coherence
proof
set A0 = the
finite
Subset of
Vars ;
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
(
varcl A0)
in V;
then
reconsider V as non
empty
set;
reconsider P = (
InclPoset V) as non
empty
Poset;
(P
opp ) is non
empty;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:109
Th109: for x,y be
Element of
VarPoset holds x
<= y iff y
c= x
proof
let x,y be
Element of
VarPoset ;
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
set A0 = the
finite
Subset of
Vars ;
(
varcl A0)
in V;
then
reconsider V as non
empty
set;
reconsider a = x, b = y as
Element of ((
InclPoset V)
opp );
x
<= y iff (
~ a)
>= (
~ b) by
YELLOW_7: 1;
hence thesis by
YELLOW_1: 3;
end;
theorem ::
ABCMIZ_1:110
Th110: for x holds x is
Element of
VarPoset iff x is
finite
Subset of
Vars & (
varcl x)
= x
proof
let x;
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
set A0 = the
finite
Subset of
Vars ;
(
varcl A0)
in V;
then
reconsider V as non
empty
set;
the
carrier of (
InclPoset V)
= V by
YELLOW_1: 1;
then x is
Element of
VarPoset iff x
in V;
then x is
Element of
VarPoset iff ex A be
finite
Subset of
Vars st x
= (
varcl A);
hence thesis by
Th24;
end;
registration
cluster
VarPoset ->
with_infima
with_suprema;
coherence
proof
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
set A0 = the
finite
Subset of
Vars ;
(
varcl A0)
in V;
then
reconsider V as non
empty
set;
now
let x, y;
assume x
in V;
then
consider A1 be
finite
Subset of
Vars such that
A1: x
= (
varcl A1);
assume y
in V;
then
consider A2 be
finite
Subset of
Vars such that
A2: y
= (
varcl A2);
(x
\/ y)
= (
varcl (A1
\/ A2)) by
A1,
A2,
Th11;
hence (x
\/ y)
in V;
end;
then (
InclPoset V) is
with_suprema by
YELLOW_1: 11;
hence
VarPoset is
with_infima by
LATTICE3: 10;
now
let x, y;
assume x
in V;
then
consider A1 be
finite
Subset of
Vars such that
A3: x
= (
varcl A1);
assume y
in V;
then
consider A2 be
finite
Subset of
Vars such that
A4: y
= (
varcl A2);
reconsider V1 = (
varcl A1), V2 = (
varcl A2) as
finite
Subset of
Vars by
Th24;
(x
/\ y)
= (
varcl (V1
/\ V2)) by
A3,
A4,
Th13;
hence (x
/\ y)
in V;
end;
then (
InclPoset V) is
with_infima by
YELLOW_1: 12;
hence thesis by
YELLOW_7: 16;
end;
end
theorem ::
ABCMIZ_1:111
Th111: for V1,V2 be
Element of
VarPoset holds (V1
"\/" V2)
= (V1
/\ V2) & (V1
"/\" V2)
= (V1
\/ V2)
proof
let V1,V2 be
Element of
VarPoset ;
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
set A0 = the
finite
Subset of
Vars ;
(
varcl A0)
in V;
then
reconsider V as non
empty
set;
A1:
VarPoset
= ((
InclPoset V)
opp );
A2: the
carrier of (
InclPoset V)
= V by
YELLOW_1: 1;
reconsider v1 = V1, v2 = V2 as
Element of ((
InclPoset V)
opp );
reconsider a1 = V1, a2 = V2 as
Element of (
InclPoset V);
V1
in V by
A2;
then
consider A1 be
finite
Subset of
Vars such that
A3: V1
= (
varcl A1);
V2
in V by
A2;
then
consider A2 be
finite
Subset of
Vars such that
A4: V2
= (
varcl A2);
A5: (a1
~ )
= v1;
A6: (a2
~ )
= v2;
A7: (
InclPoset V) is
with_infima
with_suprema by
A1,
LATTICE3: 10,
YELLOW_7: 16;
reconsider x1 = V1, x2 = V2 as
finite
Subset of
Vars by
A3,
A4,
Th24;
(V1
/\ V2)
= (
varcl (x1
/\ x2)) by
A3,
A4,
Th13;
then (V1
/\ V2)
in V;
then (a1
"/\" a2)
= (V1
/\ V2) by
YELLOW_1: 9;
hence (V1
"\/" V2)
= (V1
/\ V2) by
A5,
A6,
A7,
YELLOW_7: 21;
(V1
\/ V2)
= (
varcl (A1
\/ A2)) by
A3,
A4,
Th11;
then (a1
\/ a2)
in V;
then (a1
"\/" a2)
= (V1
\/ V2) by
YELLOW_1: 8;
hence thesis by
A5,
A6,
A7,
YELLOW_7: 23;
end;
registration
let V1,V2 be
Element of
VarPoset ;
identify V1
/\ V2 with V1
"\/" V2;
compatibility by
Th111;
identify V1
\/ V2 with V1
"/\" V2;
compatibility by
Th111;
end
theorem ::
ABCMIZ_1:112
Th112: for X be non
empty
Subset of
VarPoset holds
ex_sup_of (X,
VarPoset ) & (
sup X)
= (
meet X)
proof
let X be non
empty
Subset of
VarPoset ;
set a = the
Element of X;
A1: (
meet X)
c= a by
SETFAM_1: 3;
A2: a is
finite
Subset of
Vars by
Th110;
then
A3: (
meet X)
c=
Vars by
A1,
XBOOLE_1: 1;
for a be
Element of X holds (
varcl a)
= a by
Th110;
then (
varcl (
meet X))
= (
meet X) by
Th12;
then
reconsider m = (
meet X) as
Element of
VarPoset by
A1,
A2,
A3,
Th110;
A4:
now
thus X
is_<=_than m by
SETFAM_1: 3,
Th109;
let b be
Element of
VarPoset ;
assume
A5: X
is_<=_than b;
for Y st Y
in X holds b
c= Y by
Th109,
A5;
then b
c= m by
SETFAM_1: 5;
hence m
<= b by
Th109;
end;
hence
ex_sup_of (X,
VarPoset ) by
YELLOW_0: 15;
hence thesis by
A4,
YELLOW_0:def 9;
end;
registration
cluster
VarPoset ->
up-complete;
coherence
proof
for X be non
empty
directed
Subset of
VarPoset holds
ex_sup_of (X,
VarPoset ) by
Th112;
hence thesis by
WAYBEL_0: 75;
end;
end
theorem ::
ABCMIZ_1:113
(
Top
VarPoset )
=
{}
proof
set V = the set of all (
varcl A) where A be
finite
Subset of
Vars ;
A1: (
{}
Vars )
in V by
Th8;
A2: (
VarPoset
opp ) is
lower-bounded by
YELLOW_7: 31;
((
Bottom (
InclPoset V))
~ )
=
{} by
A1,
YELLOW_1: 13;
hence thesis by
A2,
YELLOW_7: 33;
end;
definition
let C;
::
ABCMIZ_1:def52
func
vars-function C ->
Function of (
QuasiTypes C), the
carrier of
VarPoset means for T be
quasi-type of C holds (it
. T)
= (
vars T);
uniqueness
proof
let f1,f2 be
Function of (
QuasiTypes C), the
carrier of
VarPoset such that
A1: for T be
quasi-type of C holds (f1
. T)
= (
vars T) and
A2: for T be
quasi-type of C holds (f2
. T)
= (
vars T);
now
let T be
Element of (
QuasiTypes C);
reconsider t = T as
quasi-type of C by
Def43;
thus (f1
. T)
= (
vars t) by
A1
.= (f2
. T) by
A2;
end;
hence thesis by
FUNCT_2: 63;
end;
existence
proof
defpred
P[
object,
object] means ex T be
quasi-type of C st $1
= T & $2
= (
vars T);
A3: for x be
object st x
in (
QuasiTypes C) holds ex y be
object st
P[x, y]
proof
let x be
object;
assume x
in (
QuasiTypes C);
then
reconsider T = x as
quasi-type of C by
Def43;
take (
vars T), T;
thus thesis;
end;
consider f be
Function such that
A4: (
dom f)
= (
QuasiTypes C) and
A5: for x be
object st x
in (
QuasiTypes C) holds
P[x, (f
. x)] from
CLASSES1:sch 1(
A3);
(
rng f)
c= the
carrier of
VarPoset
proof
let y be
object;
assume y
in (
rng f);
then
consider x be
object such that
A6: x
in (
dom f) and
A7: y
= (f
. x) by
FUNCT_1:def 3;
consider T be
quasi-type of C such that x
= T and
A8: y
= (
vars T) by
A4,
A5,
A6,
A7;
(
varcl (
vars T))
= (
vars T);
then y is
Element of
VarPoset by
A8,
Th110;
hence thesis;
end;
then
reconsider f as
Function of (
QuasiTypes C), the
carrier of
VarPoset by
A4,
FUNCT_2: 2;
take f;
let x be
quasi-type of C;
x
in (
QuasiTypes C) by
Def43;
then ex T be
quasi-type of C st x
= T & (f
. x)
= (
vars T) by
A5;
hence thesis;
end;
end
definition
let L be non
empty
Poset;
::
ABCMIZ_1:def53
attr L is
smooth means ex C be
initialized
ConstructorSignature, f be
Function of L,
VarPoset st the
carrier of L
c= (
QuasiTypes C) & f
= ((
vars-function C)
| the
carrier of L) & for x,y be
Element of L holds f
preserves_sup_of
{x, y};
end
registration
let C be
initialized
ConstructorSignature;
let T be
ground
quasi-type of C;
cluster
RelStr (#
{T}, (
id
{T}) #) ->
smooth;
coherence
proof
set L =
RelStr (#
{T}, (
id
{T}) #);
A1: T
in (
QuasiTypes C) by
Def43;
then
{T}
c= (
QuasiTypes C) by
ZFMISC_1: 31;
then
reconsider f = ((
vars-function C)
|
{T}) as
Function of L,
VarPoset by
FUNCT_2: 32;
take C, f;
thus the
carrier of L
c= (
QuasiTypes C) by
A1,
ZFMISC_1: 31;
thus f
= ((
vars-function C)
| the
carrier of L);
let x,y be
Element of L;
set F =
{x, y};
assume
ex_sup_of (F,L);
A2: x
= T by
TARSKI:def 1;
y
= T by
TARSKI:def 1;
then
A3: F
=
{T} by
A2,
ENUMSET1: 29;
(
dom f)
=
{T} by
FUNCT_2:def 1;
then
A4: (
Im (f,T))
=
{(f
. x)} by
A2,
FUNCT_1: 59;
hence
ex_sup_of ((f
.: F),
VarPoset ) by
A3,
YELLOW_0: 38;
thus (
sup (f
.: F))
= (f
. x) by
A3,
A4,
YELLOW_0: 39
.= (f
. (
sup F)) by
A2,
TARSKI:def 1;
end;
end
begin
scheme ::
ABCMIZ_1:sch2
StructInd { C() ->
initialized
ConstructorSignature , P[
set], t() ->
expression of C() } :
P[t()]
provided
A1: for x be
variable holds P[(x
-term C())]
and
A2: for c be
constructor
OperSymbol of C() holds for p be
FinSequence of (
QuasiTerms C()) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C() st t
in (
rng p) holds P[t] holds P[(c
-trm p)]
and
A3: for a be
expression of C(), (
an_Adj C()) st P[a] holds P[((
non_op C())
term a)]
and
A4: for a be
expression of C(), (
an_Adj C()) st P[a] holds for t be
expression of C(), (
a_Type C()) st P[t] holds P[((
ast C())
term (a,t))];
defpred
Q[
set] means $1 is
expression of C() implies P[$1];
set X = (
MSVars C());
set V = (X
(\/) (the
carrier of C()
-->
{
0 }));
set S = C(), C = C();
A5: t() is
Term of S, V by
MSAFREE3: 8;
A6: for s be
SortSymbol of S, v be
Element of (V
. s) holds
Q[(
root-tree
[v, s])]
proof
let s be
SortSymbol of S;
let v be
Element of (V
. s);
set t = (
root-tree
[v, s]);
assume
A7: t is
expression of S;
A8: (t
.
{} )
=
[v, s] by
TREES_4: 3;
A9: s
in the
carrier of C;
A10: ((t
.
{} )
`2 )
= s by
A8;
A11: s
<> the
carrier of C by
A9;
per cases by
A7,
Th53;
suppose ex x be
variable st t
= (x
-term C);
hence thesis by
A1;
end;
suppose ex c be
constructor
OperSymbol of C st ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & t
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, p be
FinSequence of (
QuasiTerms C) such that
A12: (
len p)
= (
len (
the_arity_of c)) and
A13: t
= (c
-trm p);
t
= (
[c, the
carrier of C]
-tree p) by
A12,
A13,
Def35;
then (t
.
{} )
=
[c, the
carrier of C] by
TREES_4:def 4;
hence thesis by
A10,
A11;
end;
suppose ex a be
expression of C(), (
an_Adj C()) st t
= ((
non_op C)
term a);
then
consider a be
expression of C(), (
an_Adj C()) such that
A14: t
= ((
non_op C)
term a);
A15: (
the_arity_of (
non_op C))
=
<*(
an_Adj C)*> by
Def9;
A16: (
<*(
an_Adj C)*>
. 1)
= (
an_Adj C) by
FINSEQ_1: 40;
(
len
<*(
an_Adj C)*>)
= 1 by
FINSEQ_1: 40;
then t
= (
[(
non_op C), the
carrier of C]
-tree
<*a*>) by
A14,
A15,
A16,
Def30;
then (t
.
{} )
=
[(
non_op C), the
carrier of C] by
TREES_4:def 4;
hence thesis by
A10,
A11;
end;
suppose ex a be
expression of C(), (
an_Adj C()) st ex q be
expression of C, (
a_Type C) st t
= ((
ast C)
term (a,q));
then
consider a be
expression of C, (
an_Adj C), q be
expression of C, (
a_Type C) such that
A17: t
= ((
ast C)
term (a,q));
A18: (
the_arity_of (
ast C))
=
<*(
an_Adj C), (
a_Type C)*> by
Def9;
A19: (
<*(
an_Adj C), (
a_Type C)*>
. 1)
= (
an_Adj C) by
FINSEQ_1: 44;
A20: (
<*(
an_Adj C), (
a_Type C)*>
. 2)
= (
a_Type C) by
FINSEQ_1: 44;
(
len
<*(
an_Adj C), (
a_Type C)*>)
= 2 by
FINSEQ_1: 44;
then t
= (
[(
ast C), the
carrier of C]
-tree
<*a, q*>) by
A17,
A18,
A19,
A20,
Def31;
then (t
.
{} )
=
[(
ast C), the
carrier of C] by
TREES_4:def 4;
hence thesis by
A10,
A11;
end;
end;
A21: for o be
OperSymbol of S, p be
ArgumentSeq of (
Sym (o,V)) st for t be
Term of S, V st t
in (
rng p) holds
Q[t] holds
Q[(
[o, the
carrier of S]
-tree p)]
proof
let o be
OperSymbol of S;
let p be
ArgumentSeq of (
Sym (o,V)) such that
A22: for t be
Term of S, V st t
in (
rng p) holds
Q[t];
set t = (
[o, the
carrier of S]
-tree p);
assume
A23: t is
expression of S;
per cases by
A23,
Th53;
suppose ex x be
variable st t
= (x
-term C);
hence thesis by
A1;
end;
suppose ex c be
constructor
OperSymbol of C st ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & t
= (c
-trm p);
then
consider c be
constructor
OperSymbol of C, q be
FinSequence of (
QuasiTerms C) such that
A24: (
len q)
= (
len (
the_arity_of c)) and
A25: t
= (c
-trm q);
t
= (
[c, the
carrier of C]
-tree q) by
A24,
A25,
Def35;
then
A26: p
= q by
TREES_4: 15;
now
let t be
quasi-term of C;
t is
Term of S, V by
MSAFREE3: 8;
hence t
in (
rng q) implies P[t] by
A22,
A26;
end;
hence thesis by
A2,
A24,
A25;
end;
suppose ex a be
expression of C(), (
an_Adj C()) st t
= ((
non_op C)
term a);
then
consider a be
expression of C(), (
an_Adj C()) such that
A27: t
= ((
non_op C)
term a);
A28: (
the_arity_of (
non_op C))
=
<*(
an_Adj C)*> by
Def9;
A29: (
<*(
an_Adj C)*>
. 1)
= (
an_Adj C) by
FINSEQ_1: 40;
(
len
<*(
an_Adj C)*>)
= 1 by
FINSEQ_1: 40;
then t
= (
[(
non_op C), the
carrier of C]
-tree
<*a*>) by
A27,
A28,
A29,
Def30;
then
A30: p
=
<*a*> by
TREES_4: 15;
A31: (
rng
<*a*>)
=
{a} by
FINSEQ_1: 39;
A32: a
in
{a} by
TARSKI:def 1;
a is
Term of S, V by
MSAFREE3: 8;
hence thesis by
A3,
A22,
A27,
A30,
A31,
A32;
end;
suppose ex a be
expression of C(), (
an_Adj C()) st ex q be
expression of C, (
a_Type C) st t
= ((
ast C)
term (a,q));
then
consider a be
expression of C, (
an_Adj C), q be
expression of C, (
a_Type C) such that
A33: t
= ((
ast C)
term (a,q));
A34: (
the_arity_of (
ast C))
=
<*(
an_Adj C), (
a_Type C)*> by
Def9;
A35: (
<*(
an_Adj C), (
a_Type C)*>
. 1)
= (
an_Adj C) by
FINSEQ_1: 44;
A36: (
<*(
an_Adj C), (
a_Type C)*>
. 2)
= (
a_Type C) by
FINSEQ_1: 44;
(
len
<*(
an_Adj C), (
a_Type C)*>)
= 2 by
FINSEQ_1: 44;
then t
= (
[(
ast C), the
carrier of C]
-tree
<*a, q*>) by
A33,
A34,
A35,
A36,
Def31;
then
A37: p
=
<*a, q*> by
TREES_4: 15;
A38: (
rng
<*a, q*>)
=
{a, q} by
FINSEQ_2: 127;
A39: a
in
{a, q} by
TARSKI:def 2;
A40: q
in
{a, q} by
TARSKI:def 2;
A41: a is
Term of S, V by
MSAFREE3: 8;
A42: q is
Term of S, V by
MSAFREE3: 8;
P[a] by
A22,
A37,
A38,
A39,
A41;
hence thesis by
A4,
A22,
A33,
A37,
A38,
A40,
A42;
end;
end;
for t be
Term of S, V holds
Q[t] from
MSATERM:sch 1(
A6,
A21);
hence thesis by
A5;
end;
definition
let S be
ManySortedSign;
::
ABCMIZ_1:def54
attr S is
with_an_operation_for_each_sort means
:
Def54: the
carrier of S
c= (
rng the
ResultSort of S);
let X be
ManySortedSet of the
carrier of S;
::
ABCMIZ_1:def55
attr X is
with_missing_variables means (X
"
{
{} })
c= (
rng the
ResultSort of S);
end
theorem ::
ABCMIZ_1:114
Th114: for S be non
void
Signature holds for X be
ManySortedSet of the
carrier of S holds X is
with_missing_variables iff for s be
SortSymbol of S st (X
. s)
=
{} holds ex o be
OperSymbol of S st (
the_result_sort_of o)
= s
proof
let S be non
void
Signature;
let X be
ManySortedSet of the
carrier of S;
A1: (
dom X)
= the
carrier of S by
PARTFUN1:def 2;
hereby
assume X is
with_missing_variables;
then
A2: (X
"
{
{} })
c= (
rng the
ResultSort of S);
let s be
SortSymbol of S;
assume (X
. s)
=
{} ;
then (X
. s)
in
{
{} } by
TARSKI:def 1;
then s
in (X
"
{
{} }) by
A1,
FUNCT_1:def 7;
then
consider o be
object such that
A3: o
in the
carrier' of S and
A4: (the
ResultSort of S
. o)
= s by
A2,
FUNCT_2: 11;
reconsider o as
OperSymbol of S by
A3;
take o;
thus (
the_result_sort_of o)
= s by
A4;
end;
assume
A5: for s be
SortSymbol of S st (X
. s)
=
{} holds ex o be
OperSymbol of S st (
the_result_sort_of o)
= s;
let x be
object;
assume
A6: x
in (X
"
{
{} });
then
A7: (X
. x)
in
{
{} } by
FUNCT_1:def 7;
reconsider x as
SortSymbol of S by
A1,
A6,
FUNCT_1:def 7;
(X
. x)
=
{} by
A7,
TARSKI:def 1;
then ex o be
OperSymbol of S st (
the_result_sort_of o)
= x by
A5;
hence thesis by
FUNCT_2: 4;
end;
registration
cluster
MaxConstrSign ->
with_an_operation_for_each_sort;
coherence
proof
set C =
MaxConstrSign ;
set m =
[
a_Type ,
[
{} ,
0 ]], a =
[
an_Adj ,
[
{} ,
0 ]], f =
[
a_Term ,
[
{} ,
0 ]];
A1:
a_Type
in
{
a_Type } by
TARSKI:def 1;
A2:
an_Adj
in
{
an_Adj } by
TARSKI:def 1;
A3:
a_Term
in
{
a_Term } by
TARSKI:def 1;
A4:
[(
<*>
Vars ),
0 ]
in
[:
QuasiLoci ,
NAT :] by
Th29,
ZFMISC_1:def 2;
then
A5: m
in
Modes by
A1,
ZFMISC_1:def 2;
A6: a
in
Attrs by
A2,
A4,
ZFMISC_1:def 2;
A7: f
in
Funcs by
A3,
A4,
ZFMISC_1:def 2;
A8: m
in (
Modes
\/
Attrs ) by
A5,
XBOOLE_0:def 3;
A9: a
in (
Modes
\/
Attrs ) by
A6,
XBOOLE_0:def 3;
A10: m
in
Constructors by
A8,
XBOOLE_0:def 3;
A11: a
in
Constructors by
A9,
XBOOLE_0:def 3;
A12: f
in
Constructors by
A7,
XBOOLE_0:def 3;
the
carrier' of
MaxConstrSign
= (
{
* ,
non_op }
\/
Constructors ) by
Def24;
then
reconsider m, a, f as
OperSymbol of
MaxConstrSign by
A10,
A11,
A12,
XBOOLE_0:def 3;
A13: m is
constructor;
A14: a is
constructor;
A15: f is
constructor;
A16: (the
ResultSort of C
. m)
= (m
`1 ) by
A13,
Def24;
A17: (the
ResultSort of C
. a)
= (a
`1 ) by
A14,
Def24;
A18: (the
ResultSort of C
. f)
= (f
`1 ) by
A15,
Def24;
A19: (the
ResultSort of C
. m)
=
a_Type by
A16;
A20: (the
ResultSort of C
. a)
=
an_Adj by
A17;
A21: (the
ResultSort of C
. f)
=
a_Term by
A18;
A22: the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
let x be
object;
assume x
in the
carrier of C;
then x
=
a_Type or x
=
an_Adj or x
=
a_Term by
A22,
ENUMSET1:def 1;
hence thesis by
A19,
A20,
A21,
FUNCT_2: 4;
end;
let C be
ConstructorSignature;
cluster (
MSVars C) ->
with_missing_variables;
coherence
proof
set X = (
MSVars C);
let x be
object;
assume
A23: x
in (X
"
{
{} });
then
A24: x
in (
dom X) by
FUNCT_1:def 7;
A25: (X
. x)
in
{
{} } by
A23,
FUNCT_1:def 7;
x
in the
carrier of C by
A24;
then x
in
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
then
A26: x
=
a_Type or x
=
an_Adj or x
=
a_Term by
ENUMSET1:def 1;
A27: (X
. x)
=
{} by
A25,
TARSKI:def 1;
A28: (the
ResultSort of C
. (
ast C))
=
a_Type by
Def9;
(the
ResultSort of C
. (
non_op C))
=
an_Adj by
Def9;
hence thesis by
A26,
A27,
A28,
Def25,
FUNCT_2: 4;
end;
end
registration
let S be
ManySortedSign;
cluster
non-empty ->
with_missing_variables for
ManySortedSet of the
carrier of S;
coherence
proof
let X be
ManySortedSet of the
carrier of S such that
A1: X is
non-empty;
let x be
object;
assume
A2: x
in (X
"
{
{} });
then
A3: x
in (
dom X) by
FUNCT_1:def 7;
A4: (X
. x)
in
{
{} } by
A2,
FUNCT_1:def 7;
A5: (X
. x)
in (
rng X) by
A3,
FUNCT_1:def 3;
(X
. x)
=
{} by
A4,
TARSKI:def 1;
hence thesis by
A1,
A5;
end;
end
registration
let S be
ManySortedSign;
cluster
with_missing_variables for
ManySortedSet of the
carrier of S;
existence
proof
set A = the
non-empty
ManySortedSet of the
carrier of S;
take A;
thus thesis;
end;
end
registration
cluster
initialized
with_an_operation_for_each_sort
strict for
ConstructorSignature;
existence
proof
take
MaxConstrSign ;
thus thesis;
end;
end
registration
let C be
with_an_operation_for_each_sort
ManySortedSign;
cluster ->
with_missing_variables for
ManySortedSet of the
carrier of C;
coherence
proof
let X be
ManySortedSet of the
carrier of C;
A1: (X
"
{
{} })
c= (
dom X) by
RELAT_1: 132;
A2: (
dom X)
= the
carrier of C by
PARTFUN1:def 2;
the
carrier of C
c= (
rng the
ResultSort of C) by
Def54;
hence (X
"
{
{} })
c= (
rng the
ResultSort of C) by
A1,
A2;
end;
end
definition
let G be non
empty
DTConstrStr;
:: original:
Terminals
redefine
func
Terminals G ->
Subset of G ;
coherence
proof
the
carrier of G
= ((
Terminals G)
\/ (
NonTerminals G)) by
LANG1: 1;
hence thesis by
XBOOLE_1: 7;
end;
:: original:
NonTerminals
redefine
func
NonTerminals G ->
Subset of G ;
coherence
proof
the
carrier of G
= ((
Terminals G)
\/ (
NonTerminals G)) by
LANG1: 1;
hence thesis by
XBOOLE_1: 7;
end;
end
theorem ::
ABCMIZ_1:115
Th115: for D1,D2 be non
empty
DTConstrStr st the
Rules of D1
c= the
Rules of D2 holds (
NonTerminals D1)
c= (
NonTerminals D2) & (the
carrier of D1
/\ (
Terminals D2))
c= (
Terminals D1) & ((
Terminals D1)
c= (
Terminals D2) implies the
carrier of D1
c= the
carrier of D2)
proof
let D1,D2 be non
empty
DTConstrStr such that
A1: the
Rules of D1
c= the
Rules of D2;
thus
A2: (
NonTerminals D1)
c= (
NonTerminals D2)
proof
let x be
object;
assume x
in (
NonTerminals D1);
then ex s be
Symbol of D1 st x
= s & ex n be
FinSequence st s
==> n;
then
consider s be
Symbol of D1, n be
FinSequence such that
A3: x
= s and
A4: s
==> n;
A5:
[s, n]
in the
Rules of D1 by
A4;
then
[s, n]
in the
Rules of D2 by
A1;
then
reconsider s9 = s as
Symbol of D2 by
ZFMISC_1: 87;
s9
==> n by
A1,
A5;
hence thesis by
A3;
end;
hereby
let x be
object;
assume
A6: x
in (the
carrier of D1
/\ (
Terminals D2));
then
A7: x
in (
Terminals D2) by
XBOOLE_0:def 4;
reconsider s9 = x as
Symbol of D1 by
A6,
XBOOLE_0:def 4;
reconsider s = x as
Symbol of D2 by
A6;
assume not x
in (
Terminals D1);
then
consider n be
FinSequence such that
A8: s9
==> n;
[s9, n]
in the
Rules of D1 by
A8;
then s
==> n by
A1;
then not ex s be
Symbol of D2 st x
= s & not ex n be
FinSequence st s
==> n;
hence contradiction by
A7;
end;
assume (
Terminals D1)
c= (
Terminals D2);
then ((
Terminals D1)
\/ (
NonTerminals D1))
c= ((
Terminals D2)
\/ (
NonTerminals D2)) by
A2,
XBOOLE_1: 13;
then ((
Terminals D1)
\/ (
NonTerminals D1))
c= the
carrier of D2 by
LANG1: 1;
hence thesis by
LANG1: 1;
end;
theorem ::
ABCMIZ_1:116
Th116: for D1,D2 be non
empty
DTConstrStr st (
Terminals D1)
c= (
Terminals D2) & the
Rules of D1
c= the
Rules of D2 holds (
TS D1)
c= (
TS D2)
proof
let G,G9 be non
empty
DTConstrStr such that
A1: (
Terminals G)
c= (
Terminals G9) and
A2: the
Rules of G
c= the
Rules of G9;
A3: the
carrier of G9
= ((
Terminals G9)
\/ (
NonTerminals G9)) by
LANG1: 1;
A4: the
carrier of G
c= the
carrier of G9 by
A1,
A2,
Th115;
defpred
P[
set] means $1
in (
TS G9);
A5: for s be
Symbol of G st s
in (
Terminals G) holds
P[(
root-tree s)]
proof
let s be
Symbol of G;
assume
A6: s
in (
Terminals G);
then
reconsider s9 = s as
Symbol of G9 by
A1,
A3,
XBOOLE_0:def 3;
(
root-tree s)
= (
root-tree s9);
hence thesis by
A1,
A6,
DTCONSTR:def 1;
end;
A7: for nt be
Symbol of G, ts be
FinSequence of (
TS G) st nt
==> (
roots ts) & for t be
DecoratedTree of the
carrier of G st t
in (
rng ts) holds
P[t] holds
P[(nt
-tree ts)]
proof
let n be
Symbol of G;
let s be
FinSequence of (
TS G) such that
A8:
[n, (
roots s)]
in the
Rules of G and
A9: for t be
DecoratedTree of the
carrier of G st t
in (
rng s) holds
P[t];
(
rng s)
c= (
TS G9) by
A9;
then
reconsider s9 = s as
FinSequence of (
TS G9) by
FINSEQ_1:def 4;
reconsider n9 = n as
Symbol of G9 by
A4;
n9
==> (
roots s9) by
A2,
A8;
hence thesis by
DTCONSTR:def 1;
end;
A10: for t be
DecoratedTree of the
carrier of G st t
in (
TS G) holds
P[t] from
DTCONSTR:sch 7(
A5,
A7);
let x be
object;
assume
A11: x
in (
TS G);
then
reconsider t = x as
Element of (
FinTrees the
carrier of G);
P[t] by
A10,
A11;
hence thesis;
end;
theorem ::
ABCMIZ_1:117
Th117: for S be
ManySortedSign holds for X,Y be
ManySortedSet of the
carrier of S st X
c= Y holds X is
with_missing_variables implies Y is
with_missing_variables
proof
let S be
ManySortedSign;
let X,Y be
ManySortedSet of the
carrier of S such that
A1: X
c= Y and
A2: (X
"
{
{} })
c= (
rng the
ResultSort of S);
let x be
object;
assume
A3: x
in (Y
"
{
{} });
then
A4: x
in (
dom Y) by
FUNCT_1:def 7;
A5: (Y
. x)
in
{
{} } by
A3,
FUNCT_1:def 7;
A6: (
dom X)
= the
carrier of S by
PARTFUN1:def 2;
A7: (Y
. x)
=
{} by
A5,
TARSKI:def 1;
(X
. x)
c= (Y
. x) by
A1,
A4;
then (X
. x)
=
{} by
A7;
then (X
. x)
in
{
{} } by
TARSKI:def 1;
then x
in (X
"
{
{} }) by
A4,
A6,
FUNCT_1:def 7;
hence thesis by
A2;
end;
theorem ::
ABCMIZ_1:118
Th118: for S be
set holds for X,Y be
ManySortedSet of S st X
c= Y holds (
Union (
coprod X))
c= (
Union (
coprod Y))
proof
let S be
set;
let X,Y be
ManySortedSet of S such that
A1: X
c= Y;
A2: (
dom Y)
= S by
PARTFUN1:def 2;
let x be
object;
assume
A3: x
in (
Union (
coprod X));
then
A4: (x
`2 )
in (
dom X) by
CARD_3: 22;
A5: (x
`1 )
in (X
. (x
`2 )) by
A3,
CARD_3: 22;
A6: x
=
[(x
`1 ), (x
`2 )] by
A3,
CARD_3: 22;
(X
. (x
`2 ))
c= (Y
. (x
`2 )) by
A1,
A4;
hence thesis by
A2,
A4,
A5,
A6,
CARD_3: 22;
end;
theorem ::
ABCMIZ_1:119
for S be non
void
Signature holds for X,Y be
ManySortedSet of the
carrier of S st X
c= Y holds the
carrier of (
DTConMSA X)
c= the
carrier of (
DTConMSA Y) by
Th118,
XBOOLE_1: 9;
theorem ::
ABCMIZ_1:120
Th120: for S be non
void
Signature holds for X be
ManySortedSet of the
carrier of S st X is
with_missing_variables holds (
NonTerminals (
DTConMSA X))
=
[:the
carrier' of S,
{the
carrier of S}:] & (
Terminals (
DTConMSA X))
= (
Union (
coprod X))
proof
let S be non
void
Signature;
let X be
ManySortedSet of the
carrier of S such that
A1: X is
with_missing_variables;
set D = (
DTConMSA X), A = (
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod X qua
ManySortedSet of the
carrier of S)));
A2: (
Union (
coprod X))
misses
[:the
carrier' of S,
{the
carrier of S}:] by
MSAFREE: 4;
A3: (
Terminals D)
misses (
NonTerminals D) by
DTCONSTR: 8;
thus (
NonTerminals (
DTConMSA X))
c=
[:the
carrier' of S,
{the
carrier of S}:] by
MSAFREE: 6;
thus
A4:
[:the
carrier' of S,
{the
carrier of S}:]
c= (
NonTerminals D)
proof
let o,x2 be
object;
assume
A5:
[o, x2]
in
[:the
carrier' of S,
{the
carrier of S}:];
then
A6: x2
in
{the
carrier of S} by
ZFMISC_1: 87;
reconsider o as
OperSymbol of S by
A5,
ZFMISC_1: 87;
A7: the
carrier of S
= x2 by
A6,
TARSKI:def 1;
then
reconsider xa =
[o, the
carrier of S] as
Element of the
carrier of D by
A5,
XBOOLE_0:def 3;
set O = (
the_arity_of o);
defpred
P[
object,
object] means $2
in A & ((X
. (O
. $1))
<>
{} implies $2
in (
coprod ((O
. $1),X))) & ((X
. (O
. $1))
=
{} implies ex o be
OperSymbol of S st $2
=
[o, the
carrier of S] & (
the_result_sort_of o)
= (O
. $1));
A8: for a be
object st a
in (
Seg (
len O)) holds ex b be
object st
P[a, b]
proof
let a be
object;
assume a
in (
Seg (
len O));
then
A9: a
in (
dom O) by
FINSEQ_1:def 3;
then
A10: (O
. a)
in (
rng O) by
FUNCT_1:def 3;
then
reconsider s = (O
. a) as
SortSymbol of S;
per cases ;
suppose (X
. (O
. a)) is non
empty;
then
consider x be
object such that
A11: x
in (X
. (O
. a)) by
XBOOLE_0:def 1;
take y =
[x, (O
. a)];
A12: y
in (
coprod ((O
. a),X)) by
A10,
A11,
MSAFREE:def 2;
A13: (O
. a)
in (
rng O) by
A9,
FUNCT_1:def 3;
(
dom (
coprod X))
= the
carrier of S by
PARTFUN1:def 2;
then ((
coprod X)
. (O
. a))
in (
rng (
coprod X)) by
A13,
FUNCT_1:def 3;
then (
coprod ((O
. a),X))
in (
rng (
coprod X)) by
A13,
MSAFREE:def 3;
then y
in (
Union (
coprod X)) by
A12,
TARSKI:def 4;
hence thesis by
A10,
A11,
MSAFREE:def 2,
XBOOLE_0:def 3;
end;
suppose
A14: (X
. (O
. a))
=
{} ;
then
consider o be
OperSymbol of S such that
A15: (
the_result_sort_of o)
= s by
A1,
Th114;
take y =
[o, the
carrier of S];
the
carrier of S
in
{the
carrier of S} by
TARSKI:def 1;
then y
in
[:the
carrier' of S,
{the
carrier of S}:] by
ZFMISC_1: 87;
hence thesis by
A14,
A15,
XBOOLE_0:def 3;
end;
end;
consider b be
Function such that
A16: (
dom b)
= (
Seg (
len O)) & for a be
object st a
in (
Seg (
len O)) holds
P[a, (b
. a)] from
CLASSES1:sch 1(
A8);
reconsider b as
FinSequence by
A16,
FINSEQ_1:def 2;
(
rng b)
c= A
proof
let a be
object;
assume a
in (
rng b);
then ex c be
object st c
in (
dom b) & (b
. c)
= a by
FUNCT_1:def 3;
hence thesis by
A16;
end;
then
reconsider b as
FinSequence of A by
FINSEQ_1:def 4;
reconsider b as
Element of (A
* ) by
FINSEQ_1:def 11;
A17: (
len b)
= (
len O) by
A16,
FINSEQ_1:def 3;
now
let c be
set;
assume
A18: c
in (
dom b);
then
A19:
P[c, (b
. c)] by
A16;
(
dom O)
= (
Seg (
len O)) by
FINSEQ_1:def 3;
then
A20: (O
. c)
in (
rng O) by
A16,
A18,
FUNCT_1:def 3;
(
dom (
coprod X))
= the
carrier of S by
PARTFUN1:def 2;
then ((
coprod X)
. (O
. c))
in (
rng (
coprod X)) by
A20,
FUNCT_1:def 3;
then (
coprod ((O
. c),X))
in (
rng (
coprod X)) by
A20,
MSAFREE:def 3;
then (X
. (O
. c))
<>
{} implies (b
. c)
in (
Union (
coprod X)) by
A19,
TARSKI:def 4;
hence (b
. c)
in
[:the
carrier' of S,
{the
carrier of S}:] implies for o1 be
OperSymbol of S st
[o1, the
carrier of S]
= (b
. c) holds (
the_result_sort_of o1)
= (O
. c) by
A2,
A19,
XBOOLE_0: 3,
XTUPLE_0: 1;
assume
A21: (b
. c)
in (
Union (
coprod X));
now
assume (X
. (O
. c))
=
{} ;
then
A22: ex o be
OperSymbol of S st ((b
. c)
=
[o, the
carrier of S]) & ((
the_result_sort_of o)
= (O
. c)) by
A16,
A18;
the
carrier of S
in
{the
carrier of S} by
TARSKI:def 1;
then (b
. c)
in
[:the
carrier' of S,
{the
carrier of S}:] by
A22,
ZFMISC_1: 87;
hence contradiction by
A2,
A21,
XBOOLE_0: 3;
end;
hence (b
. c)
in (
coprod ((O
. c),X)) by
A16,
A18;
end;
then
[xa, b]
in (
REL X) by
A17,
MSAFREE: 5;
then xa
==> b;
hence thesis by
A7;
end;
thus (
Terminals D)
c= (
Union (
coprod X))
proof
let x be
object;
assume
A23: x
in (
Terminals D);
then not x
in
[:the
carrier' of S,
{the
carrier of S}:] by
A3,
A4,
XBOOLE_0: 3;
hence thesis by
A23,
XBOOLE_0:def 3;
end;
thus thesis by
MSAFREE: 6;
end;
theorem ::
ABCMIZ_1:121
for S be non
void
Signature holds for X,Y be
ManySortedSet of the
carrier of S st X
c= Y & X is
with_missing_variables holds (
Terminals (
DTConMSA X))
c= (
Terminals (
DTConMSA Y)) & the
Rules of (
DTConMSA X)
c= the
Rules of (
DTConMSA Y) & (
TS (
DTConMSA X))
c= (
TS (
DTConMSA Y))
proof
let S be non
void
Signature;
let X,Y be
ManySortedSet of the
carrier of S such that
A1: X
c= Y and
A2: X is
with_missing_variables;
A3: Y is
with_missing_variables by
A1,
A2,
Th117;
set G = (
DTConMSA X), G9 = (
DTConMSA Y);
A4: the
carrier of G
c= the
carrier of G9 by
A1,
Th118,
XBOOLE_1: 9;
A5: (
Terminals G)
= (
Union (
coprod X)) by
A2,
Th120;
A6: (
Terminals G9)
= (
Union (
coprod Y)) by
A3,
Th120;
hence (
Terminals G)
c= (
Terminals G9) by
A1,
A5,
Th118;
A7: (the
carrier of G
* )
c= (the
carrier of G9
* ) by
A4,
FINSEQ_1: 62;
thus the
Rules of G
c= the
Rules of G9
proof
let a,b be
object;
assume
A8:
[a, b]
in the
Rules of G;
then
A9: a
in
[:the
carrier' of S,
{the
carrier of S}:] by
MSAFREE1: 2;
reconsider a as
Element of (
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod X))) by
A9,
XBOOLE_0:def 3;
reconsider a9 = a as
Element of (
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod Y))) by
A9,
XBOOLE_0:def 3;
reconsider b as
Element of ((
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod X)))
* ) by
A8,
MSAFREE1: 2;
reconsider b9 = b as
Element of ((
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod Y)))
* ) by
A7;
now
let o be
OperSymbol of S;
assume
A10:
[o, the
carrier of S]
= a9;
hence
A11: (
len b9)
= (
len (
the_arity_of o)) by
A8,
MSAFREE:def 7;
let x be
set;
assume
A12: x
in (
dom b9);
hence (b9
. x)
in
[:the
carrier' of S,
{the
carrier of S}:] implies for o1 be
OperSymbol of S st
[o1, the
carrier of S]
= (b
. x) holds (
the_result_sort_of o1)
= ((
the_arity_of o)
. x) by
A8,
A10,
MSAFREE:def 7;
A13: (
Union (
coprod Y))
misses
[:the
carrier' of S,
{the
carrier of S}:] by
MSAFREE: 4;
A14: (b
. x)
in (
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod X))) by
A12,
DTCONSTR: 2;
A15: (
dom b9)
= (
Seg (
len b9)) by
FINSEQ_1:def 3;
(
dom (
the_arity_of o))
= (
Seg (
len b9)) by
A11,
FINSEQ_1:def 3;
then
A16: ((
the_arity_of o)
. x)
in the
carrier of S by
A12,
A15,
DTCONSTR: 2;
assume
A17: (b9
. x)
in (
Union (
coprod Y));
(b
. x)
in
[:the
carrier' of S,
{the
carrier of S}:] or (b
. x)
in (
Union (
coprod X)) by
A14,
XBOOLE_0:def 3;
then (b
. x)
in (
coprod (((
the_arity_of o)
. x),X)) by
A8,
A10,
A12,
A13,
A17,
MSAFREE:def 7,
XBOOLE_0: 3;
then
A18: ex a be
set st (a
in (X
. ((
the_arity_of o)
. x))) & ((b
. x)
=
[a, ((
the_arity_of o)
. x)]) by
A16,
MSAFREE:def 2;
(X
. ((
the_arity_of o)
. x))
c= (Y
. ((
the_arity_of o)
. x)) by
A1,
A16;
hence (b9
. x)
in (
coprod (((
the_arity_of o)
. x),Y)) by
A16,
A18,
MSAFREE:def 2;
end;
hence thesis by
A9,
MSAFREE:def 7;
end;
hence thesis by
A1,
A5,
A6,
Th116,
Th118;
end;
theorem ::
ABCMIZ_1:122
Th122: for t be
set holds t
in (
Terminals (
DTConMSA (
MSVars C))) iff ex x be
variable st t
=
[x, (
a_Term C)]
proof
let t be
set;
set X = (
MSVars C);
A1: (
Terminals (
DTConMSA X))
= (
Union (
coprod X)) by
Th120;
A2: (
dom X)
= the
carrier of C by
PARTFUN1:def 2;
A3: the
carrier of C
=
{
a_Type ,
an_Adj ,
a_Term } by
Def9;
A4: (X
.
a_Type )
=
{} by
Def25;
A5: (X
.
an_Adj )
=
{} by
Def25;
A6: (X
.
a_Term )
=
Vars by
Def25;
hereby
assume
A7: t
in (
Terminals (
DTConMSA X));
then
A8: (t
`2 )
in (
dom X) by
A1,
CARD_3: 22;
A9: (t
`1 )
in (X
. (t
`2 )) by
A1,
A7,
CARD_3: 22;
A10: (t
`2 )
=
a_Type or (t
`2 )
=
an_Adj or (t
`2 )
=
a_Term by
A3,
A8,
ENUMSET1:def 1;
reconsider x = (t
`1 ) as
variable by
A3,
A4,
A5,
A6,
A8,
A9,
ENUMSET1:def 1;
take x;
thus t
=
[x, (
a_Term C)] by
A1,
A4,
A5,
A7,
A10,
CARD_3: 22;
end;
given x be
variable such that
A11: t
=
[x, (
a_Term C)];
A12: (t
`1 )
= x by
A11;
(t
`2 )
=
a_Term by
A11;
hence thesis by
A1,
A2,
A6,
A11,
A12,
CARD_3: 22;
end;
theorem ::
ABCMIZ_1:123
Th123: for t be
set holds t
in (
NonTerminals (
DTConMSA (
MSVars C))) iff t
=
[(
ast C), the
carrier of C] or t
=
[(
non_op C), the
carrier of C] or ex c be
constructor
OperSymbol of C st t
=
[c, the
carrier of C]
proof
let t be
set;
set X = (
MSVars C);
A1: (
NonTerminals (
DTConMSA X))
=
[:the
carrier' of C,
{the
carrier of C}:] by
Th120;
hereby
assume t
in (
NonTerminals (
DTConMSA (
MSVars C)));
then
consider a,b be
object such that
A2: a
in the
carrier' of C and
A3: b
in
{the
carrier of C} and
A4: t
=
[a, b] by
A1,
ZFMISC_1:def 2;
reconsider a as
OperSymbol of C by
A2;
A5: b
= the
carrier of C by
A3,
TARSKI:def 1;
a is
constructor or not a is
constructor;
hence t
=
[(
ast C), the
carrier of C] or t
=
[(
non_op C), the
carrier of C] or ex c be
constructor
OperSymbol of C st t
=
[c, the
carrier of C] by
A4,
A5;
end;
the
carrier of C
in
{the
carrier of C} by
TARSKI:def 1;
hence thesis by
A1,
ZFMISC_1: 87;
end;
theorem ::
ABCMIZ_1:124
Th124: for S be non
void
Signature holds for X be
with_missing_variables
ManySortedSet of the
carrier of S holds for t be
set st t
in (
Union the
Sorts of (
Free (S,X))) holds t is
Term of S, (X
(\/) (the
carrier of S
-->
{
0 }))
proof
let S be non
void
Signature;
let X be
with_missing_variables
ManySortedSet of the
carrier of S;
set V = (X
(\/) (the
carrier of S
-->
{
0 }));
set A = (
Free (S,X));
set U = the
Sorts of A;
A1: U
= (S
-Terms (X,V)) by
MSAFREE3: 24;
let t be
set;
assume t
in (
Union U);
then
consider s be
object such that
A2: s
in (
dom U) and
A3: t
in (U
. s) by
CARD_5: 2;
reconsider s as
SortSymbol of S by
A2;
(U
. s)
= { r where r be
Term of S, V : (
the_sort_of r)
= s & (
variables_in r)
c= X } by
A1,
MSAFREE3:def 5;
then ex r be
Term of S, V st t
= r & (
the_sort_of r)
= s & (
variables_in r)
c= X by
A3;
hence thesis;
end;
theorem ::
ABCMIZ_1:125
for S be non
void
Signature holds for X be
with_missing_variables
ManySortedSet of the
carrier of S holds for t be
Term of S, (X
(\/) (the
carrier of S
-->
{
0 })) st t
in (
Union the
Sorts of (
Free (S,X))) holds t
in (the
Sorts of (
Free (S,X))
. (
the_sort_of t))
proof
let S be non
void
Signature;
let X be
with_missing_variables
ManySortedSet of the
carrier of S;
set V = (X
(\/) (the
carrier of S
-->
{
0 }));
set A = (
Free (S,X));
set U = the
Sorts of A;
A1: U
= (S
-Terms (X,V)) by
MSAFREE3: 24;
let t be
Term of S, (X
(\/) (the
carrier of S
-->
{
0 }));
assume t
in (
Union U);
then
consider s be
object such that
A2: s
in (
dom U) and
A3: t
in (U
. s) by
CARD_5: 2;
reconsider s as
SortSymbol of S by
A2;
(U
. s)
= { r where r be
Term of S, V : (
the_sort_of r)
= s & (
variables_in r)
c= X } by
A1,
MSAFREE3:def 5;
then ex r be
Term of S, V st t
= r & (
the_sort_of r)
= s & (
variables_in r)
c= X by
A3;
hence thesis by
A3;
end;
theorem ::
ABCMIZ_1:126
for G be non
empty
DTConstrStr holds for s be
Element of G holds for p be
FinSequence st s
==> p holds p is
FinSequence of the
carrier of G
proof
let G be non
empty
DTConstrStr;
let s be
Element of G;
let p be
FinSequence;
assume s
==> p;
then
[s, p]
in the
Rules of G;
then p
in (the
carrier of G
* ) by
ZFMISC_1: 87;
hence thesis by
FINSEQ_1:def 11;
end;
theorem ::
ABCMIZ_1:127
Th127: for S be non
void
Signature holds for X,Y be
ManySortedSet of the
carrier of S holds for g1 be
Symbol of (
DTConMSA X) holds for g2 be
Symbol of (
DTConMSA Y) holds for p1 be
FinSequence of the
carrier of (
DTConMSA X) holds for p2 be
FinSequence of the
carrier of (
DTConMSA Y) st g1
= g2 & p1
= p2 & g1
==> p1 holds g2
==> p2
proof
let S be non
void
Signature;
let X,Y be
ManySortedSet of the
carrier of S;
A1: (
dom Y)
= the
carrier of S by
PARTFUN1:def 2;
set G1 = (
DTConMSA X);
set G2 = (
DTConMSA Y);
let g1 be
Symbol of G1;
let g2 be
Symbol of G2;
let p1 be
FinSequence of the
carrier of G1;
let p2 be
FinSequence of the
carrier of G2;
assume that
A2: g1
= g2 and
A3: p1
= p2 and
A4: g1
==> p1;
A5:
[g1, p1]
in (
REL X) by
A4;
then
A6: p1
in ((
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod X)))
* ) by
ZFMISC_1: 87;
then
A7: g1
in
[:the
carrier' of S,
{the
carrier of S}:] by
A5,
MSAFREE:def 7;
A8: p2
in ((
[:the
carrier' of S,
{the
carrier of S}:]
\/ (
Union (
coprod Y)))
* ) by
FINSEQ_1:def 11;
now
let o9 be
OperSymbol of S;
assume
A9:
[o9, the
carrier of S]
= g2;
hence
A10: (
len p2)
= (
len (
the_arity_of o9)) by
A2,
A3,
A5,
A6,
MSAFREE:def 7;
let x be
set;
assume
A11: x
in (
dom p2);
hence (p2
. x)
in
[:the
carrier' of S,
{the
carrier of S}:] implies for o1 be
OperSymbol of S st
[o1, the
carrier of S]
= (p2
. x) holds (
the_result_sort_of o1)
= ((
the_arity_of o9)
. x) by
A2,
A3,
A5,
A6,
A9,
MSAFREE:def 7;
x
in (
dom (
the_arity_of o9)) by
A10,
A11,
FINSEQ_3: 29;
then ((
the_arity_of o9)
. x)
in (
rng (
the_arity_of o9)) by
FUNCT_1:def 3;
then
reconsider i = ((
the_arity_of o9)
. x) as
SortSymbol of S;
assume
A12: (p2
. x)
in (
Union (
coprod Y));
then
A13: ((p2
. x)
`2 )
in (
dom Y) by
CARD_3: 22;
A14: ((p2
. x)
`1 )
in (Y
. ((p2
. x)
`2 )) by
A12,
CARD_3: 22;
A15: (p2
. x)
=
[((p2
. x)
`1 ), ((p2
. x)
`2 )] by
A12,
CARD_3: 22;
reconsider nn = the
carrier of S as
set;
A: not nn
in nn;
(p2
. x)
in (
rng p1) by
A3,
A11,
FUNCT_1:def 3;
then the
carrier of S
nin the
carrier of S & (p2
. x)
in
[:the
carrier' of S,
{the
carrier of S}:] or (p2
. x)
in (
Union (
coprod X)) by
XBOOLE_0:def 3,
A;
then (p2
. x)
in (
coprod (i,X)) by
A1,
A2,
A3,
A5,
A6,
A9,
A11,
A13,
A15,
MSAFREE:def 7,
ZFMISC_1: 106;
then ex a be
set st (a
in (X
. i)) & ((p2
. x)
=
[a, i]) by
MSAFREE:def 2;
then i
= ((p2
. x)
`2 );
hence (p2
. x)
in (
coprod (((
the_arity_of o9)
. x),Y)) by
A14,
A15,
MSAFREE:def 2;
end;
then
[g2, p2]
in (
REL Y) by
A2,
A7,
A8,
MSAFREE:def 7;
hence thesis;
end;
theorem ::
ABCMIZ_1:128
Th128: for S be non
void
Signature holds for X be
with_missing_variables
ManySortedSet of the
carrier of S holds (
Union the
Sorts of (
Free (S,X)))
= (
TS (
DTConMSA X))
proof
let S be non
void
Signature;
let X be
with_missing_variables
ManySortedSet of the
carrier of S;
set V = (X
(\/) (the
carrier of S
-->
{
0 }));
set A = (
Free (S,X));
set U = the
Sorts of A;
set G = (
DTConMSA X);
A1: U
= (S
-Terms (X,V)) by
MSAFREE3: 24;
A2: (
dom U)
= the
carrier of S by
PARTFUN1:def 2;
defpred
P[
set] means $1
in (
Union U) implies $1
in (
TS G);
A3: for s be
SortSymbol of S, v be
Element of (V
. s) holds
P[(
root-tree
[v, s])]
proof
let s be
SortSymbol of S;
let v be
Element of (V
. s);
assume (
root-tree
[v, s])
in (
Union U);
then
consider s1 be
object such that
A4: s1
in (
dom U) and
A5: (
root-tree
[v, s])
in (U
. s1) by
CARD_5: 2;
reconsider s1 as
SortSymbol of S by
A4;
(U
. s1)
= { t where t be
Term of S, V : (
the_sort_of t)
= s1 & (
variables_in t)
c= X } by
A1,
MSAFREE3:def 5;
then
consider t be
Term of S, V such that
A6: (
root-tree
[v, s])
= t and (
the_sort_of t)
= s1 and
A7: (
variables_in t)
c= X by
A5;
((
variables_in t)
. s)
=
{v} by
A6,
MSAFREE3: 10;
then
{v}
c= (X
. s) by
A7;
then v
in (X
. s) by
ZFMISC_1: 31;
then
[v, s]
in (
Terminals G) by
MSAFREE: 7;
hence thesis by
DTCONSTR:def 1;
end;
A8: for o be
OperSymbol of S, p be
ArgumentSeq of (
Sym (o,V)) st for t be
Term of S, V st t
in (
rng p) holds
P[t] holds
P[(
[o, the
carrier of S]
-tree p)]
proof
let o be
OperSymbol of S;
let p be
ArgumentSeq of (
Sym (o,V)) such that
A9: for t be
Term of S, V st t
in (
rng p) holds
P[t] and
A10: (
[o, the
carrier of S]
-tree p)
in (
Union U);
consider s be
object such that
A11: s
in (
dom U) and
A12: (
[o, the
carrier of S]
-tree p)
in (U
. s) by
A10,
CARD_5: 2;
reconsider s as
SortSymbol of S by
A11;
(U
. s)
= { t where t be
Term of S, V : (
the_sort_of t)
= s & (
variables_in t)
c= X } by
A1,
MSAFREE3:def 5;
then
consider t be
Term of S, V such that
A13: (
[o, the
carrier of S]
-tree p)
= t and
A14: (
the_sort_of t)
= s and (
variables_in t)
c= X by
A12;
(t
.
{} )
=
[o, the
carrier of S] by
A13,
TREES_4:def 4;
then (
the_result_sort_of o)
= s by
A14,
MSATERM: 17;
then
A15: (
rng p)
c= (
Union U) by
A1,
A12,
MSAFREE3: 19;
(
rng p)
c= (
TS G)
proof
let x be
object;
assume
A16: x
in (
rng p);
then x is
Term of S, V by
A15,
Th124;
hence thesis by
A9,
A15,
A16;
end;
then
reconsider q = p as
FinSequence of (
TS G) by
FINSEQ_1:def 4;
(
NonTerminals G)
=
[:the
carrier' of S,
{the
carrier of S}:] by
Th120;
then
[o, the
carrier of S]
in (
NonTerminals G) by
ZFMISC_1: 106;
then
reconsider oo =
[o, the
carrier of S] as
Symbol of G;
(
Sym (o,V))
==> (
roots p) by
MSATERM: 21;
then oo
==> (
roots q) by
Th127;
hence thesis by
DTCONSTR:def 1;
end;
A17: for t be
Term of S, V holds
P[t] from
MSATERM:sch 1(
A3,
A8);
A18: (
NonTerminals (
DTConMSA X))
=
[:the
carrier' of S,
{the
carrier of S}:] by
Th120;
A19: (
Terminals (
DTConMSA X))
= (
Union (
coprod X)) by
Th120;
defpred
Q[
set] means $1
in (
Union U);
A20: for s be
Symbol of G st s
in (
Terminals G) holds
Q[(
root-tree s)]
proof
let s be
Symbol of G;
assume
A21: s
in (
Terminals G);
then
A22: (s
`2 )
in (
dom X) by
A19,
CARD_3: 22;
A23: (s
`1 )
in (X
. (s
`2 )) by
A19,
A21,
CARD_3: 22;
A24: s
=
[(s
`1 ), (s
`2 )] by
A19,
A21,
CARD_3: 22;
A25: (
dom U)
= the
carrier of S by
PARTFUN1:def 2;
(
root-tree s)
in (the
Sorts of (
Free (S,X))
. (s
`2 )) by
A22,
A23,
A24,
MSAFREE3: 4;
hence thesis by
A22,
A25,
CARD_5: 2;
end;
A26: for nt be
Symbol of G, ts be
FinSequence of (
TS G) st nt
==> (
roots ts) & for t be
DecoratedTree of the
carrier of G st t
in (
rng ts) holds
Q[t] holds
Q[(nt
-tree ts)]
proof
let nt be
Symbol of G;
let ts be
FinSequence of (
TS G) such that
A27: nt
==> (
roots ts) and
A28: for t be
DecoratedTree of the
carrier of G st t
in (
rng ts) holds
Q[t];
nt
in (
NonTerminals G) by
A27;
then
consider o,z be
object such that
A29: o
in the
carrier' of S and
A30: z
in
{the
carrier of S} and
A31: nt
=
[o, z] by
A18,
ZFMISC_1:def 2;
reconsider o as
OperSymbol of S by
A29;
A32: (
rng ts)
c= (
Union U) by
A28;
(
rng ts)
c= (
TS (
DTConMSA V))
proof
let a be
object;
assume a
in (
rng ts);
then
A33: a is
Element of (S
-Terms V) by
A32,
Th124;
(S
-Terms V)
= (
TS (
DTConMSA V)) by
MSATERM:def 1;
hence thesis by
A33;
end;
then
reconsider p = ts as
FinSequence of (
TS (
DTConMSA V)) by
FINSEQ_1:def 4;
reconsider q = p as
FinSequence of (S
-Terms V) by
MSATERM:def 1;
A34: z
= the
carrier of S by
A30,
TARSKI:def 1;
then (
Sym (o,V))
==> (
roots p) by
A27,
A31,
Th127;
then
reconsider q as
ArgumentSeq of (
Sym (o,V)) by
MSATERM: 21;
set t = ((
Sym (o,V))
-tree q);
t
in (U
. (
the_result_sort_of o)) by
A1,
A32,
MSAFREE3: 19;
hence thesis by
A2,
A31,
A34,
CARD_5: 2;
end;
A35: for t be
DecoratedTree of the
carrier of G st t
in (
TS G) holds
Q[t] from
DTCONSTR:sch 7(
A20,
A26);
thus (
Union U)
c= (
TS (
DTConMSA X))
proof
let x be
object;
assume
A36: x
in (
Union U);
then
consider s be
object such that
A37: s
in (
dom U) and
A38: x
in (U
. s) by
CARD_5: 2;
reconsider s as
SortSymbol of S by
A37;
x
in (U
. s) by
A38;
then x is
Term of S, V by
A1,
MSAFREE3: 16;
hence thesis by
A17,
A36;
end;
let x be
object;
assume
A39: x
in (
TS G);
then
reconsider TG = (
TS G) as non
empty
Subset of (
FinTrees the
carrier of G);
x is
Element of TG by
A39;
hence thesis by
A35;
end;
definition
let S be non
void
Signature;
let X be
ManySortedSet of the
carrier of S;
::
ABCMIZ_1:def56
mode
term-transformation of S,X ->
UnOp of (
Union the
Sorts of (
Free (S,X))) means
:
Def56: for s be
SortSymbol of S holds (it
.: (the
Sorts of (
Free (S,X))
. s))
c= (the
Sorts of (
Free (S,X))
. s);
existence
proof
set f = (
id (
Union the
Sorts of (
Free (S,X))));
A1: (
dom f)
= (
Union the
Sorts of (
Free (S,X)));
(
rng f)
= (
Union the
Sorts of (
Free (S,X)));
then
reconsider f as
UnOp of (
Union the
Sorts of (
Free (S,X))) by
A1,
FUNCT_2: 2;
take f;
thus thesis by
Th4;
end;
end
theorem ::
ABCMIZ_1:129
Th129: for S be non
void
Signature holds for X be non
empty
ManySortedSet of the
carrier of S holds for f be
UnOp of (
Union the
Sorts of (
Free (S,X))) holds f is
term-transformation of S, X iff for s be
SortSymbol of S holds for a be
set st a
in (the
Sorts of (
Free (S,X))
. s) holds (f
. a)
in (the
Sorts of (
Free (S,X))
. s)
proof
let S be non
void
Signature;
let X be non
empty
ManySortedSet of the
carrier of S;
A1: (
dom the
Sorts of (
Free (S,X)))
= the
carrier of S by
PARTFUN1:def 2;
let f be
UnOp of (
Union the
Sorts of (
Free (S,X)));
A2: (
dom f)
= (
Union the
Sorts of (
Free (S,X))) by
FUNCT_2: 52;
hereby
assume
A3: f is
term-transformation of S, X;
let s be
SortSymbol of S;
A4: (f
.: (the
Sorts of (
Free (S,X))
. s))
c= (the
Sorts of (
Free (S,X))
. s) by
A3,
Def56;
(the
Sorts of (
Free (S,X))
. s)
in (
rng the
Sorts of (
Free (S,X))) by
A1,
FUNCT_1:def 3;
then
A5: (the
Sorts of (
Free (S,X))
. s)
c= (
Union the
Sorts of (
Free (S,X))) by
ZFMISC_1: 74;
let a be
set;
assume a
in (the
Sorts of (
Free (S,X))
. s);
then (f
. a)
in (f
.: (the
Sorts of (
Free (S,X))
. s)) by
A2,
A5,
FUNCT_1:def 6;
hence (f
. a)
in (the
Sorts of (
Free (S,X))
. s) by
A4;
end;
assume
A6: for s be
SortSymbol of S holds for a be
set st a
in (the
Sorts of (
Free (S,X))
. s) holds (f
. a)
in (the
Sorts of (
Free (S,X))
. s);
let s be
SortSymbol of S;
let x be
object;
assume x
in (f
.: (the
Sorts of (
Free (S,X))
. s));
then ex a be
object st a
in (
dom f) & a
in (the
Sorts of (
Free (S,X))
. s) & x
= (f
. a) by
FUNCT_1:def 6;
hence thesis by
A6;
end;
theorem ::
ABCMIZ_1:130
Th130: for S be non
void
Signature holds for X be non
empty
ManySortedSet of the
carrier of S holds for f be
term-transformation of S, X holds for s be
SortSymbol of S holds for p be
FinSequence of (the
Sorts of (
Free (S,X))
. s) holds (f
* p) is
FinSequence of (the
Sorts of (
Free (S,X))
. s) & (
card (f
* p))
= (
len p)
proof
let S be non
void
Signature;
let X be non
empty
ManySortedSet of the
carrier of S;
set A = (
Free (S,X));
let f be
term-transformation of S, X;
let s be
SortSymbol of S;
let p be
FinSequence of (the
Sorts of A
. s);
A1: (
Union the
Sorts of A)
=
{} or (
Union the
Sorts of A)
<>
{} ;
A2: (
dom the
Sorts of A)
= the
carrier of S by
PARTFUN1:def 2;
A3: (
dom f)
= (
Union the
Sorts of A) by
A1,
FUNCT_2:def 1;
(the
Sorts of A
. s)
in (
rng the
Sorts of A) by
A2,
FUNCT_1:def 3;
then (the
Sorts of A
. s)
c= (
Union the
Sorts of A) by
ZFMISC_1: 74;
then (
rng p)
c= (
dom f) by
A3;
then
A4: (
dom (f
* p))
= (
dom p) by
RELAT_1: 27;
(
dom p)
= (
Seg (
len p)) by
FINSEQ_1:def 3;
then
A5: (f
* p) is
FinSequence by
A4,
FINSEQ_1:def 2;
A6: (
rng (f
* p))
c= (the
Sorts of A
. s)
proof
let z be
object;
assume z
in (
rng (f
* p));
then
consider i be
object such that
A7: i
in (
dom (f
* p)) and
A8: z
= ((f
* p)
. i) by
FUNCT_1:def 3;
(p
. i)
in (
rng p) by
A4,
A7,
FUNCT_1:def 3;
then (f
. (p
. i))
in (the
Sorts of A
. s) by
Th129;
hence thesis by
A7,
A8,
FUNCT_1: 12;
end;
hence (f
* p) is
FinSequence of (the
Sorts of (
Free (S,X))
. s) by
A5,
FINSEQ_1:def 4;
reconsider q = (f
* p) as
FinSequence of (the
Sorts of A
. s) by
A5,
A6,
FINSEQ_1:def 4;
thus (
card (f
* p))
= (
len q)
.= (
len p) by
A4,
FINSEQ_3: 29;
end;
definition
let S be non
void
Signature;
let X be
ManySortedSet of the
carrier of S;
let t be
term-transformation of S, X;
::
ABCMIZ_1:def57
attr t is
substitution means for o be
OperSymbol of S holds for p,q be
FinSequence of (
Free (S,X)) st (
[o, the
carrier of S]
-tree p)
in (
Union the
Sorts of (
Free (S,X))) & q
= (t
* p) holds (t
. (
[o, the
carrier of S]
-tree p))
= (
[o, the
carrier of S]
-tree q);
end
scheme ::
ABCMIZ_1:sch3
StructDef { C() ->
initialized
ConstructorSignature , V,N(
set) ->
expression of C() , F,A(
set,
set) ->
expression of C() } :
ex f be
term-transformation of C(), (
MSVars C()) st (for x be
variable holds (f
. (x
-term C()))
= V(x)) & (for c be
constructor
OperSymbol of C() holds for p,q be
FinSequence of (
QuasiTerms C()) st (
len p)
= (
len (
the_arity_of c)) & q
= (f
* p) holds (f
. (c
-trm p))
= F(c,q)) & (for a be
expression of C(), (
an_Adj C()) holds (f
. ((
non_op C())
term a))
= N(.)) & for a be
expression of C(), (
an_Adj C()) holds for t be
expression of C(), (
a_Type C()) holds (f
. ((
ast C())
term (a,t)))
= A(.,.)
provided
A1: for x be
variable holds V(x) is
quasi-term of C()
and
A2: for c be
constructor
OperSymbol of C() holds for p be
FinSequence of (
QuasiTerms C()) st (
len p)
= (
len (
the_arity_of c)) holds F(c,p) is
expression of C(), (
the_result_sort_of c)
and
A3: for a be
expression of C(), (
an_Adj C()) holds N(a) is
expression of C(), (
an_Adj C())
and
A4: for a be
expression of C(), (
an_Adj C()) holds for t be
expression of C(), (
a_Type C()) holds A(a,t) is
expression of C(), (
a_Type C());
set V = (
MSVars C());
set X = (V
(\/) (the
carrier of C()
-->
{
0 }));
set A = (
Free (C(),V));
set U = the
Sorts of A;
set D = (
Union U);
set G = (
DTConMSA V);
deffunc
TermVal(
Symbol of G) = V(`1);
deffunc
NTermVal(
Symbol of G,
FinSequence,
Function) = (
IFEQ (($1
`1 ),
* ,A(.,.),(
IFEQ (($1
`1 ),
non_op ,N(.),F(`1,$3)))));
consider f be
Function of (
TS G), D such that
A5: for t be
Symbol of G st t
in (
Terminals G) holds (f
. (
root-tree t))
=
TermVal(t) and
A6: for nt be
Symbol of G, ts be
FinSequence of (
TS G) st nt
==> (
roots ts) holds (f
. (nt
-tree ts))
=
NTermVal(nt,roots,*) from
DTCONSTR:sch 8;
D
= (
TS G) by
Th128;
then
reconsider f as
Function of D, D;
f is
term-transformation of C(), V
proof
let s be
SortSymbol of C();
let x be
object;
assume x
in (f
.: (the
Sorts of A
. s));
then
consider a be
Element of D such that
A7: a
in (the
Sorts of A
. s) and
A8: x
= (f
. a) by
FUNCT_2: 65;
defpred
P[
expression of C()] means for s be
SortSymbol of C() st $1
in (the
Sorts of A
. s) holds (f
. $1)
in (the
Sorts of A
. s);
A9: for x be
variable holds
P[(x
-term C())]
proof
let y be
variable;
set a = (y
-term C());
let s be
SortSymbol of C();
assume
A10: a
in (the
Sorts of A
. s);
A11:
[y, (
a_Term C())]
in (
Terminals G) by
Th122;
then
reconsider t =
[y, (
a_Term C())] as
Symbol of G;
(f
. a)
=
TermVal(t) by
A5,
A11
.= V(y);
then
A12: (f
. a) is
quasi-term of C() by
A1;
a is
expression of C(), s by
A10,
Def28;
then s
= (
a_Term C()) by
Th48;
hence thesis by
A12,
Def28;
end;
A13: for c be
constructor
OperSymbol of C() holds for p be
FinSequence of (
QuasiTerms C()) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C() st t
in (
rng p) holds
P[t] holds
P[(c
-trm p)]
proof
let c be
constructor
OperSymbol of C();
let p be
FinSequence of (
QuasiTerms C());
assume that
A14: (
len p)
= (
len (
the_arity_of c)) and
A15: for t be
quasi-term of C() st t
in (
rng p) holds
P[t];
set a = (c
-trm p);
set nt =
[c, the
carrier of C()];
let s be
SortSymbol of C() such that
A16: a
in (the
Sorts of A
. s);
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A17: a
= (nt
-tree ts) by
A14,
Def35;
reconsider aa = a as
Term of C(), X by
MSAFREE3: 8;
the
Sorts of A
= (C()
-Terms (V,X)) by
MSAFREE3: 24;
then the
Sorts of A
c= the
Sorts of (
FreeMSA X) by
PBOOLE:def 18;
then (the
Sorts of A
. s)
c= (the
Sorts of (
FreeMSA X)
. s);
then aa
in ((
FreeSort X)
. s) by
A16;
then aa
in (
FreeSort (X,s)) by
MSAFREE:def 11;
then
A18: (
the_sort_of aa)
= s by
MSATERM:def 5;
A19: c
<>
* by
Def11;
A20: c
<>
non_op by
Def11;
A21: (
rng p)
c= (
QuasiTerms C()) by
FINSEQ_1:def 4;
(
dom f)
= D by
FUNCT_2:def 1;
then
A22: (
rng p)
c= (
dom f);
(
rng (f
* p))
c= (
QuasiTerms C())
proof
let z be
object;
assume z
in (
rng (f
* p));
then
consider i be
object such that
A23: i
in (
dom (f
* p)) and
A24: z
= ((f
* p)
. i) by
FUNCT_1:def 3;
i
in (
dom p) by
A22,
A23,
RELAT_1: 27;
then
A25: (p
. i)
in (
rng p) by
FUNCT_1:def 3;
then
reconsider pi1 = (p
. i) as
quasi-term of C() by
A21,
Th41;
pi1
in (the
Sorts of A
. (
a_Term C())) by
Th41;
then (f
. pi1)
in (the
Sorts of A
. (
a_Term C())) by
A15,
A25;
hence thesis by
A23,
A24,
FUNCT_1: 12;
end;
then
reconsider q = (f
* p) as
FinSequence of (
QuasiTerms C()) by
FINSEQ_1:def 4;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
A26: (
len q)
= (
len p) by
A22,
FINSEQ_2: 29;
a is
Term of C(), X by
MSAFREE3: 8;
then
A27: r is
ArgumentSeq of (
Sym (c,X)) by
A17,
MSATERM: 1;
then
A28: (
the_result_sort_of c)
= s by
A17,
A18,
MSATERM: 20;
(
Sym (c,X))
==> (
roots r) by
A27,
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A17
.= (
IFEQ (c,
non_op ,N(.),F(c,*))) by
A19,
FUNCOP_1:def 8
.= F(c,*) by
A20,
FUNCOP_1:def 8;
then (f
. a) is
expression of C(), (
the_result_sort_of c) by
A2,
A14,
A26;
hence thesis by
A28,
Def28;
end;
A29: for a be
expression of C(), (
an_Adj C()) st
P[a] holds
P[((
non_op C())
term a)]
proof
let v be
expression of C(), (
an_Adj C()) such that
A30:
P[v];
A31: v
in (U
. (
an_Adj C())) by
Def28;
then (f
. v)
in (U
. (
an_Adj C())) by
A30;
then
reconsider fv = (f
. v) as
expression of C(), (
an_Adj C()) by
Def28;
let s be
SortSymbol of C();
assume
A32: ((
non_op C())
term v)
in (U
. s);
A33: ((
non_op C())
term v) is
expression of C(), (
an_Adj C()) by
Th43;
((
non_op C())
term v) is
expression of C(), s by
A32,
Def28;
then
A34: s
= (
an_Adj C()) by
A33,
Th48;
set QA = (U
. (
an_Adj C()));
(
rng
<*v*>)
=
{v} by
FINSEQ_1: 38;
then (
rng
<*v*>)
c= QA by
A31,
ZFMISC_1: 31;
then
reconsider p =
<*v*> as
FinSequence of QA by
FINSEQ_1:def 4;
set c = (
non_op C());
set a = ((
non_op C())
term v);
set nt =
[c, the
carrier of C()];
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A35: a
= (nt
-tree ts) by
Th43;
(
dom f)
= D by
FUNCT_2:def 1;
then
A36: (f
* p)
=
<*fv*> by
FINSEQ_2: 34;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
expression of C(), (
an_Adj C()) by
Th41;
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
a is
Term of C(), X by
MSAFREE3: 8;
then r is
ArgumentSeq of (
Sym (c,X)) by
A35,
MSATERM: 1;
then (
Sym (c,X))
==> (
roots r) by
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A35
.= (
IFEQ (c,
non_op ,N(.),F(c,*))) by
FUNCOP_1:def 8
.= N(.) by
FUNCOP_1:def 8
.= N(fv) by
A36,
FINSEQ_1: 40;
then (f
. a) is
expression of C(), (
an_Adj C()) by
A3;
hence thesis by
A34,
Def28;
end;
A37: for a be
expression of C(), (
an_Adj C()) st
P[a] holds for t be
expression of C(), (
a_Type C()) st
P[t] holds
P[((
ast C())
term (a,t))]
proof
let v be
expression of C(), (
an_Adj C()) such that
A38:
P[v];
let t be
expression of C(), (
a_Type C()) such that
A39:
P[t];
A40: v
in (U
. (
an_Adj C())) by
Def28;
A41: t
in (U
. (
a_Type C())) by
Def28;
A42: (f
. v)
in (U
. (
an_Adj C())) by
A38,
A40;
A43: (f
. t)
in (U
. (
a_Type C())) by
A39,
A41;
reconsider fv = (f
. v) as
expression of C(), (
an_Adj C()) by
A42,
Def28;
reconsider ft = (f
. t) as
expression of C(), (
a_Type C()) by
A43,
Def28;
let s be
SortSymbol of C();
assume
A44: ((
ast C())
term (v,t))
in (U
. s);
A45: ((
ast C())
term (v,t)) is
expression of C(), (
a_Type C()) by
Th46;
((
ast C())
term (v,t)) is
expression of C(), s by
A44,
Def28;
then
A46: s
= (
a_Type C()) by
A45,
Th48;
reconsider p =
<*v, t*> as
FinSequence of D;
set c = (
ast C());
set a = ((
ast C())
term (v,t));
set nt =
[c, the
carrier of C()];
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A47: a
= (nt
-tree ts) by
Th46;
A48: (f
* p)
=
<*fv, ft*> by
FINSEQ_2: 36;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
a is
Term of C(), X by
MSAFREE3: 8;
then r is
ArgumentSeq of (
Sym (c,X)) by
A47,
MSATERM: 1;
then (
Sym (c,X))
==> (
roots r) by
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A47
.= A(.,.) by
FUNCOP_1:def 8
.= A(fv,.) by
A48,
FINSEQ_1: 44
.= A(fv,ft) by
A48,
FINSEQ_1: 44;
then (f
. a) is
expression of C(), (
a_Type C()) by
A4;
hence thesis by
A46,
Def28;
end;
P[a] from
StructInd(
A9,
A13,
A29,
A37);
hence thesis by
A7,
A8;
end;
then
reconsider f as
term-transformation of C(), (
MSVars C());
take f;
hereby
let x be
variable;
x
in
Vars ;
then
A49: x
in (V
. (
a_Term C())) by
Def25;
reconsider x9 = x as
Element of (V
. (
a_Term C())) by
Def25;
reconsider xx =
[x9, (
a_Term C())] as
Symbol of G by
A49,
MSAFREE3: 2;
xx
in (
Terminals G) by
A49,
MSAFREE: 7;
hence (f
. (x
-term C()))
= V(`1) by
A5
.= V(x);
end;
hereby
let c be
constructor
OperSymbol of C();
let p,q be
FinSequence of (
QuasiTerms C());
assume that
A50: (
len p)
= (
len (
the_arity_of c)) and
A51: q
= (f
* p);
set a = (c
-trm p);
set nt =
[c, the
carrier of C()];
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A52: a
= (nt
-tree ts) by
A50,
Def35;
A53: c
<>
* by
Def11;
A54: c
<>
non_op by
Def11;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
a is
Term of C(), X by
MSAFREE3: 8;
then r is
ArgumentSeq of (
Sym (c,X)) by
A52,
MSATERM: 1;
then (
Sym (c,X))
==> (
roots r) by
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A52
.= (
IFEQ (c,
non_op ,N(.),F(c,*))) by
A53,
FUNCOP_1:def 8
.= F(c,*) by
A54,
FUNCOP_1:def 8;
hence (f
. (c
-trm p))
= F(c,q) by
A51;
end;
hereby
let v be
expression of C(), (
an_Adj C());
A55: v
in (U
. (
an_Adj C())) by
Def28;
then (f
. v)
in (U
. (
an_Adj C())) by
Th129;
then
reconsider fv = (f
. v) as
expression of C(), (
an_Adj C()) by
Def28;
set QA = (U
. (
an_Adj C()));
(
rng
<*v*>)
=
{v} by
FINSEQ_1: 38;
then (
rng
<*v*>)
c= QA by
A55,
ZFMISC_1: 31;
then
reconsider p =
<*v*> as
FinSequence of QA by
FINSEQ_1:def 4;
set c = (
non_op C());
set a = ((
non_op C())
term v);
set nt =
[c, the
carrier of C()];
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A56: a
= (nt
-tree ts) by
Th43;
(
dom f)
= D by
FUNCT_2:def 1;
then
A57: (f
* p)
=
<*fv*> by
FINSEQ_2: 34;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
expression of C(), (
an_Adj C()) by
Th41;
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
a is
Term of C(), X by
MSAFREE3: 8;
then r is
ArgumentSeq of (
Sym (c,X)) by
A56,
MSATERM: 1;
then (
Sym (c,X))
==> (
roots r) by
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A56
.= (
IFEQ (c,
non_op ,N(.),F(c,*))) by
FUNCOP_1:def 8
.= N(.) by
FUNCOP_1:def 8;
hence (f
. ((
non_op C())
term v))
= N(.) by
A57,
FINSEQ_1: 40;
end;
let v be
expression of C(), (
an_Adj C());
let t be
expression of C(), (
a_Type C());
A58: v
in (U
. (
an_Adj C())) by
Def28;
A59: t
in (U
. (
a_Type C())) by
Def28;
A60: (f
. v)
in (U
. (
an_Adj C())) by
A58,
Th129;
A61: (f
. t)
in (U
. (
a_Type C())) by
A59,
Th129;
reconsider fv = (f
. v) as
expression of C(), (
an_Adj C()) by
A60,
Def28;
reconsider ft = (f
. t) as
expression of C(), (
a_Type C()) by
A61,
Def28;
reconsider p =
<*v, t*> as
FinSequence of D;
set c = (
ast C());
set a = ((
ast C())
term (v,t));
set nt =
[c, the
carrier of C()];
nt
in (
NonTerminals G) by
Th123;
then
reconsider nt as
Symbol of G;
reconsider ts = p as
FinSequence of (
TS G) by
Th128;
A62: a
= (nt
-tree ts) by
Th46;
A63: (f
* p)
=
<*fv, ft*> by
FINSEQ_2: 36;
(
rng p)
c= (C()
-Terms X)
proof
let z be
object;
assume z
in (
rng p);
then z is
Element of (C()
-Terms X) by
MSAFREE3: 8;
hence thesis;
end;
then
reconsider r = p as
FinSequence of (C()
-Terms X) by
FINSEQ_1:def 4;
a is
Term of C(), X by
MSAFREE3: 8;
then r is
ArgumentSeq of (
Sym (c,X)) by
A62,
MSATERM: 1;
then (
Sym (c,X))
==> (
roots r) by
MSATERM: 21;
then nt
==> (
roots ts) by
Th127;
then (f
. a)
=
NTermVal(nt,roots,*) by
A6,
A62
.= A(.,.) by
FUNCOP_1:def 8
.= A(fv,.) by
A63,
FINSEQ_1: 44;
hence thesis by
A63,
FINSEQ_1: 44;
end;
begin
definition
let A be
set;
let x,y be
set;
let a,b be
Element of A;
:: original:
IFIN
redefine
func
IFIN (x,y,a,b) ->
Element of A ;
coherence by
MATRIX_7:def 1;
end
definition
let C be
initialized
ConstructorSignature;
mode
valuation of C is
PartFunc of
Vars , (
QuasiTerms C);
end
definition
let C be
initialized
ConstructorSignature;
let f be
valuation of C;
::
ABCMIZ_1:def58
attr f is
irrelevant means
:
Def58: for x be
variable st x
in (
dom f) holds ex y be
variable st (f
. x)
= (y
-term C);
end
notation
let C be
initialized
ConstructorSignature;
let f be
valuation of C;
antonym f is
relevant for f is
irrelevant;
end
registration
let C be
initialized
ConstructorSignature;
cluster
empty ->
irrelevant for
valuation of C;
coherence ;
end
registration
let C be
initialized
ConstructorSignature;
cluster
empty for
valuation of C;
existence
proof
take (
{} (
Vars ,(
QuasiTerms C)));
thus thesis;
end;
end
definition
let C be
initialized
ConstructorSignature;
let X be
Subset of
Vars ;
::
ABCMIZ_1:def59
func C
idval X ->
valuation of C equals {
[x, (x
-term C)] where x be
variable : x
in X };
coherence
proof
set f = {
[x, (x
-term C)] where x be
variable : x
in X };
defpred
P[
variable,
set] means $2
= ($1
-term C);
A1:
now
let x be
variable;
reconsider t = (x
-term C) as
Element of (
QuasiTerms C) by
Def28;
take t;
thus
P[x, t];
end;
consider g be
Function of
Vars , (
QuasiTerms C) such that
A2: for x be
variable holds
P[x, (g
. x)] from
FUNCT_2:sch 3(
A1);
f
c= g
proof
let a be
object;
assume a
in f;
then
consider x be
variable such that
A3: a
=
[x, (x
-term C)] and x
in X;
A4: (g
. x)
= (x
-term C) by
A2;
(
dom g)
=
Vars by
FUNCT_2:def 1;
hence thesis by
A3,
A4,
FUNCT_1: 1;
end;
hence thesis by
RELSET_1: 1;
end;
end
theorem ::
ABCMIZ_1:131
Th131: for X be
Subset of
Vars holds (
dom (C
idval X))
= X & for x be
variable st x
in X holds ((C
idval X)
. x)
= (x
-term C)
proof
let X be
Subset of
Vars ;
set f = (C
idval X);
thus (
dom f)
c= X
proof
let a be
object;
assume a
in (
dom f);
then
[a, (f
. a)]
in f by
FUNCT_1:def 2;
then ex x be
variable st
[a, (f
. a)]
=
[x, (x
-term C)] & x
in X;
hence thesis by
XTUPLE_0: 1;
end;
hereby
let x be
object;
assume
A1: x
in X;
then
reconsider a = x as
variable;
[a, (a
-term C)]
in f by
A1;
hence x
in (
dom f) by
FUNCT_1: 1;
end;
let x be
variable;
assume x
in X;
then
[x, (x
-term C)]
in (C
idval X);
hence thesis by
FUNCT_1: 1;
end;
registration
let C be
initialized
ConstructorSignature;
let X be
Subset of
Vars ;
cluster (C
idval X) ->
irrelevant
one-to-one;
coherence
proof
set f = (C
idval X);
A1: (
dom f)
= X by
Th131;
hereby
let x be
variable;
assume
A2: x
in (
dom f);
take y = x;
thus (f
. x)
= (y
-term C) by
A1,
A2,
Th131;
end;
let x,y be
object;
assume that
A3: x
in (
dom f) and
A4: y
in (
dom f);
reconsider x, y as
variable by
A3,
A4;
A5: (f
. x)
= (x
-term C) by
A1,
A3,
Th131;
(f
. y)
= (y
-term C) by
A1,
A4,
Th131;
hence thesis by
A5,
Th50;
end;
end
registration
let C be
initialized
ConstructorSignature;
let X be
empty
Subset of
Vars ;
cluster (C
idval X) ->
empty;
coherence
proof
(
dom (C
idval X))
= X by
Th131;
hence thesis;
end;
end
definition
let C;
let f be
valuation of C;
::
ABCMIZ_1:def60
func f
# ->
term-transformation of C, (
MSVars C) means
:
Def60: (for x be
variable holds (x
in (
dom f) implies (it
. (x
-term C))
= (f
. x)) & ( not x
in (
dom f) implies (it
. (x
-term C))
= (x
-term C))) & (for c be
constructor
OperSymbol of C holds for p,q be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & q
= (it
* p) holds (it
. (c
-trm p))
= (c
-trm q)) & (for a be
expression of C, (
an_Adj C) holds (it
. ((
non_op C)
term a))
= ((
non_op C)
term (it
. a))) & for a be
expression of C, (
an_Adj C) holds for t be
expression of C, (
a_Type C) holds (it
. ((
ast C)
term (a,t)))
= ((
ast C)
term ((it
. a),(it
. t)));
existence
proof
deffunc
V(
variable) = (
IFIN ($1,(
dom f),(f
/. $1) qua
Element of (
QuasiTerms C) qua non
empty
Subset of (
Free (C,(
MSVars C))) qua
expression of C,($1
-term C)));
deffunc
F(
constructor
OperSymbol of C,
FinSequence of (
QuasiTerms C)) = ($1
-trm $2);
deffunc
N(
expression of C) = ((
non_op C)
term $1);
deffunc
A(
expression of C,
expression of C) = ((
ast C)
term ($1,$2));
A1: for x be
variable holds
V(x) is
quasi-term of C
proof
let x be
variable;
(f
/. x) is
quasi-term of C by
Th41;
hence thesis by
MATRIX_7:def 1;
end;
A2: for c be
constructor
OperSymbol of C holds for p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) holds
F(c,p) is
expression of C, (
the_result_sort_of c) by
Th52;
A3: for a holds
N(a) is
expression of C, (
an_Adj C) by
Th43;
A4: for a, t holds
A(a,t) is
expression of C, (
a_Type C) by
Th46;
consider f9 be
term-transformation of C, (
MSVars C) such that
A5: (for x be
variable holds (f9
. (x
-term C))
=
V(x)) & (for c be
constructor
OperSymbol of C holds for p,q be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & q
= (f9
* p) holds (f9
. (c
-trm p))
=
F(c,q)) & (for a holds (f9
. ((
non_op C)
term a))
=
N(.)) & for a, t holds (f9
. ((
ast C)
term (a,t)))
=
A(.,.) from
StructDef(
A1,
A2,
A3,
A4);
take f9;
hereby
let x be
variable;
A6: (f9
. (x
-term C))
=
V(x) by
A5;
x
in (
dom f) implies (f
/. x)
= (f
. x) by
PARTFUN1:def 6;
hence x
in (
dom f) implies (f9
. (x
-term C))
= (f
. x) by
A6,
MATRIX_7:def 1;
thus not x
in (
dom f) implies (f9
. (x
-term C))
= (x
-term C) by
A6,
MATRIX_7:def 1;
end;
thus thesis by
A5;
end;
correctness
proof
let f1,f2 be
term-transformation of C, (
MSVars C) such that
A7: for x be
variable holds (x
in (
dom f) implies (f1
. (x
-term C))
= (f
. x)) & ( not x
in (
dom f) implies (f1
. (x
-term C))
= (x
-term C)) and
A8: for c be
constructor
OperSymbol of C holds for p,q be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & q
= (f1
* p) holds (f1
. (c
-trm p))
= (c
-trm q) and
A9: for a be
expression of C, (
an_Adj C) holds (f1
. ((
non_op C)
term a))
= ((
non_op C)
term (f1
. a)) and
A10: for a be
expression of C, (
an_Adj C) holds for t be
expression of C, (
a_Type C) holds (f1
. ((
ast C)
term (a,t)))
= ((
ast C)
term ((f1
. a),(f1
. t))) and
A11: for x be
variable holds (x
in (
dom f) implies (f2
. (x
-term C))
= (f
. x)) & ( not x
in (
dom f) implies (f2
. (x
-term C))
= (x
-term C)) and
A12: for c be
constructor
OperSymbol of C holds for p,q be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & q
= (f2
* p) holds (f2
. (c
-trm p))
= (c
-trm q) and
A13: for a be
expression of C, (
an_Adj C) holds (f2
. ((
non_op C)
term a))
= ((
non_op C)
term (f2
. a)) and
A14: for a be
expression of C, (
an_Adj C) holds for t be
expression of C, (
a_Type C) holds (f2
. ((
ast C)
term (a,t)))
= ((
ast C)
term ((f2
. a),(f2
. t)));
set D = (
Union the
Sorts of (
Free (C,(
MSVars C))));
A15: (
dom f1)
= D by
FUNCT_2:def 1;
A16: (
dom f2)
= D by
FUNCT_2:def 1;
defpred
P[
expression of C] means (f1
. $1)
= (f2
. $1);
A17: for x be
variable holds
P[(x
-term C)]
proof
let x be
variable;
x
in (
dom f) & (f1
. (x
-term C))
= (f
. x) or x
nin (
dom f) & (f1
. (x
-term C))
= (x
-term C) by
A7;
hence thesis by
A11;
end;
A18: for c be
constructor
OperSymbol of C holds for p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C st t
in (
rng p) holds
P[t] holds
P[(c
-trm p)]
proof
let c be
constructor
OperSymbol of C;
let p be
FinSequence of (
QuasiTerms C);
assume that
A19: (
len p)
= (
len (
the_arity_of c)) and
A20: for t be
quasi-term of C st t
in (
rng p) holds
P[t];
A21: (
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
A22: (
rng (f1
* p))
= (f1
.: (
rng p)) by
RELAT_1: 127;
A23: (
rng (f2
* p))
= (f2
.: (
rng p)) by
RELAT_1: 127;
A24: (
rng (f1
* p))
c= (f1
.: (
QuasiTerms C)) by
A21,
A22,
RELAT_1: 123;
A25: (
rng (f2
* p))
c= (f2
.: (
QuasiTerms C)) by
A21,
A23,
RELAT_1: 123;
A26: (f1
.: (
QuasiTerms C))
c= (
QuasiTerms C) by
Def56;
A27: (f2
.: (
QuasiTerms C))
c= (
QuasiTerms C) by
Def56;
A28: (
rng (f1
* p))
c= (
QuasiTerms C) by
A24,
A26;
(
rng (f2
* p))
c= (
QuasiTerms C) by
A25,
A27;
then
reconsider q1 = (f1
* p), q2 = (f2
* p) as
FinSequence of (
QuasiTerms C) by
A28,
FINSEQ_1:def 4;
A29: (
rng p)
c= D;
then
A30: (
dom q1)
= (
dom p) by
A15,
RELAT_1: 27;
A31: (
dom q2)
= (
dom p) by
A16,
A29,
RELAT_1: 27;
now
let i be
Nat;
assume
A32: i
in (
dom p);
then
A33: (q1
. i)
= (f1
. (p
. i)) by
FUNCT_1: 13;
A34: (q2
. i)
= (f2
. (p
. i)) by
A32,
FUNCT_1: 13;
A35: (p
. i)
in (
rng p) by
A32,
FUNCT_1:def 3;
then (p
. i) is
quasi-term of C by
A21,
Th41;
hence (q1
. i)
= (q2
. i) by
A20,
A33,
A34,
A35;
end;
then (f1
. (c
-trm p))
= (c
-trm q2) by
A8,
A19,
A30,
A31,
FINSEQ_1: 13;
hence thesis by
A12,
A19;
end;
A36: for a be
expression of C, (
an_Adj C) st
P[a] holds
P[((
non_op C)
term a)]
proof
let a be
expression of C, (
an_Adj C);
assume
P[a];
then (f1
. ((
non_op C)
term a))
= ((
non_op C)
term (f2
. a)) by
A9;
hence thesis by
A13;
end;
A37: for a be
expression of C, (
an_Adj C) st
P[a] holds for t be
expression of C, (
a_Type C) st
P[t] holds
P[((
ast C)
term (a,t))]
proof
let a be
expression of C, (
an_Adj C) such that
A38:
P[a];
let t be
expression of C, (
a_Type C);
assume
P[t];
then (f1
. ((
ast C)
term (a,t)))
= ((
ast C)
term ((f2
. a),(f2
. t))) by
A10,
A38;
hence thesis by
A14;
end;
now
let t be
expression of C;
thus
P[t] from
StructInd(
A17,
A18,
A36,
A37);
end;
hence thesis by
FUNCT_2: 63;
end;
end
registration
let C;
let f be
valuation of C;
cluster (f
# ) ->
substitution;
coherence
proof
let o be
OperSymbol of C;
let p,q be
FinSequence of (
Free (C,(
MSVars C))) such that
A1: (
[o, the
carrier of C]
-tree p)
in (
Union the
Sorts of (
Free (C,(
MSVars C)))) and
A2: q
= ((f
# )
* p);
A3: (
dom (f
# ))
= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
FUNCT_2:def 1;
reconsider t = (
[o, the
carrier of C]
-tree p) as
expression of C by
A1;
A4: (t
.
{} )
=
[o, the
carrier of C] by
TREES_4:def 4;
per cases ;
suppose o is
constructor;
then
reconsider c = o as
constructor
OperSymbol of C;
A5: t
= (
[c, the
carrier of C]
-tree p);
then
A6: (
len p)
= (
len (
the_arity_of c)) by
Th51;
p
in ((
QuasiTerms C)
* ) by
A5,
Th51;
then
reconsider p9 = p as
FinSequence of (
QuasiTerms C) by
FINSEQ_1:def 11;
reconsider q9 = ((f
# )
* p9) as
FinSequence of (
QuasiTerms C) by
Th130;
A7: (
len q9)
= (
len p) by
Th130;
thus ((f
# )
. (
[o, the
carrier of C]
-tree p))
= ((f
# )
. (c
-trm p9)) by
A6,
Def35
.= (c
-trm q9) by
A6,
Def60
.= (
[o, the
carrier of C]
-tree q) by
A2,
A6,
A7,
Def35;
end;
suppose
A8: o
=
* ;
then
consider a be
expression of C, (
an_Adj C), s be
expression of C, (
a_Type C) such that
A9: t
= ((
ast C)
term (a,s)) by
A4,
Th58;
a
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Def28;
then ((f
# )
. a)
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Th129;
then
reconsider fa = ((f
# )
. a) as
expression of C, (
an_Adj C) by
Th41;
s
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Type C)) by
Def28;
then ((f
# )
. s)
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Type C)) by
Th129;
then
reconsider fs = ((f
# )
. s) as
expression of C, (
a_Type C) by
Th41;
t
= (
[(
ast C), the
carrier of C]
-tree
<*a, s*>) by
A9,
Th46;
then p
=
<*a, s*> by
TREES_4: 15;
then q
=
<*fa, fs*> by
A2,
A3,
FINSEQ_2: 125;
then (
[o, the
carrier of C]
-tree q)
= ((
ast C)
term (fa,fs)) by
A8,
Th46;
hence thesis by
A9,
Def60;
end;
suppose
A10: o
=
non_op ;
then
consider a such that
A11: t
= ((
non_op C)
term a) by
A4,
Th57;
a
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Def28;
then ((f
# )
. a)
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Th129;
then
reconsider fa = ((f
# )
. a) as
expression of C, (
an_Adj C) by
Th41;
t
= (
[(
non_op C), the
carrier of C]
-tree
<*a*>) by
A11,
Th43;
then p
=
<*a*> by
TREES_4: 15;
then q
=
<*fa*> by
A2,
A3,
FINSEQ_2: 34;
then (
[o, the
carrier of C]
-tree q)
= ((
non_op C)
term fa) by
A10,
Th43;
hence thesis by
A11,
Def60;
end;
end;
end
reserve f for
valuation of C;
definition
let C, f, e;
::
ABCMIZ_1:def61
func e
at f ->
expression of C equals ((f
# )
. e);
coherence ;
end
definition
let C, f;
let p be
FinSequence;
::
ABCMIZ_1:def62
func p
at f ->
FinSequence equals
:
Def62: ((f
# )
* p);
coherence
proof
set A = (
Free (C,(
MSVars C)));
(
dom (f
# ))
= (
Union the
Sorts of A) by
FUNCT_2:def 1;
then
A2: (
dom ((f
# )
* p))
= (
dom p) by
A1,
RELAT_1: 27;
(
dom p)
= (
Seg (
len p)) by
FINSEQ_1:def 3;
hence thesis by
A2,
FINSEQ_1:def 2;
end;
end
definition
let C, f;
let p be
FinSequence of (
QuasiTerms C);
:: original:
at
redefine
::
ABCMIZ_1:def63
func p
at f ->
FinSequence of (
QuasiTerms C) equals ((f
# )
* p);
coherence
proof
A1: ((f
# )
* p) is
FinSequence of (
QuasiTerms C) by
Th130;
(
rng p)
c= (
Union the
Sorts of (
Free (C,(
MSVars C))));
hence thesis by
A1,
Def62;
end;
compatibility
proof
(
rng p)
c= (
Union the
Sorts of (
Free (C,(
MSVars C))));
hence thesis by
Def62;
end;
end
reserve x for
variable;
theorem ::
ABCMIZ_1:132
not x
in (
dom f) implies ((x
-term C)
at f)
= (x
-term C) by
Def60;
theorem ::
ABCMIZ_1:133
x
in (
dom f) implies ((x
-term C)
at f)
= (f
. x) by
Def60;
theorem ::
ABCMIZ_1:134
(
len p)
= (
len (
the_arity_of c)) implies ((c
-trm p)
at f)
= (c
-trm (p
at f)) by
Def60;
theorem ::
ABCMIZ_1:135
(((
non_op C)
term a)
at f)
= ((
non_op C)
term (a
at f)) by
Def60;
theorem ::
ABCMIZ_1:136
(((
ast C)
term (a,t))
at f)
= ((
ast C)
term ((a
at f),(t
at f))) by
Def60;
theorem ::
ABCMIZ_1:137
Th137: for X be
Subset of
Vars holds (e
at (C
idval X))
= e
proof
set t = e;
let X be
Subset of
Vars ;
set f = (C
idval X);
defpred
P[
expression of C] means ($1
at f)
= $1;
A1: for x be
variable holds
P[(x
-term C)]
proof
let x be
variable;
A2: x
in X or x
nin X;
A3: (
dom f)
= X by
Th131;
x
in X implies (f
. x)
= (x
-term C) by
Th131;
hence thesis by
A2,
A3,
Def60;
end;
A4: for c be
constructor
OperSymbol of C holds for p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C st t
in (
rng p) holds
P[t] holds
P[(c
-trm p)]
proof
let c be
constructor
OperSymbol of C;
let p be
FinSequence of (
QuasiTerms C) such that
A5: (
len p)
= (
len (
the_arity_of c)) and
A6: for t be
quasi-term of C st t
in (
rng p) holds
P[t];
(
len (p
at f))
= (
len p) by
Th130;
then
A7: (
dom (p
at f))
= (
dom p) by
FINSEQ_3: 29;
now
let i be
Nat;
assume
A8: i
in (
dom p);
then
A9: (p
. i)
in (
rng p) by
FUNCT_1:def 3;
(
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
then
reconsider pi1 = (p
. i) as
quasi-term of C by
A9,
Th41;
((p
at f)
. i)
= (pi1
at f) by
A8,
FUNCT_1: 13;
hence ((p
at f)
. i)
= (p
. i) by
A6,
A9;
end;
then (p
at f)
= p by
A7;
hence thesis by
A5,
Def60;
end;
A10: for a be
expression of C, (
an_Adj C) st
P[a] holds
P[((
non_op C)
term a)] by
Def60;
A11: for a be
expression of C, (
an_Adj C) st
P[a] holds for t be
expression of C, (
a_Type C) st
P[t] holds
P[((
ast C)
term (a,t))] by
Def60;
thus
P[t] from
StructInd(
A1,
A4,
A10,
A11);
end;
theorem ::
ABCMIZ_1:138
for X be
Subset of
Vars holds ((C
idval X)
# )
= (
id (
Union the
Sorts of (
Free (C,(
MSVars C)))))
proof
let X be
Subset of
Vars ;
set f = (C
idval X);
A1: (
dom (f
# ))
= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
FUNCT_2:def 1;
now
let x be
object;
assume x
in (
Union the
Sorts of (
Free (C,(
MSVars C))));
then
reconsider t = x as
expression of C;
thus ((f
# )
. x)
= (t
at f)
.= x by
Th137;
end;
hence thesis by
A1,
FUNCT_1: 17;
end;
theorem ::
ABCMIZ_1:139
Th139: for f be
empty
valuation of C holds (e
at f)
= e
proof
let f be
empty
valuation of C;
f
= (C
idval (
{}
Vars ));
hence thesis by
Th137;
end;
theorem ::
ABCMIZ_1:140
for f be
empty
valuation of C holds (f
# )
= (
id (
Union the
Sorts of (
Free (C,(
MSVars C)))))
proof
let f be
empty
valuation of C;
A1: (
dom (f
# ))
= (
Union the
Sorts of (
Free (C,(
MSVars C)))) by
FUNCT_2:def 1;
now
let x be
object;
assume x
in (
Union the
Sorts of (
Free (C,(
MSVars C))));
then
reconsider t = x as
expression of C;
thus ((f
# )
. x)
= (t
at f)
.= x by
Th139;
end;
hence thesis by
A1,
FUNCT_1: 17;
end;
definition
let C, f;
let t be
quasi-term of C;
:: original:
at
redefine
func t
at f ->
quasi-term of C ;
coherence
proof
t
in (
QuasiTerms C) by
Def28;
then (t
at f)
in (
QuasiTerms C) by
Th129;
hence thesis by
Th41;
end;
end
definition
let C, f;
let a be
expression of C, (
an_Adj C);
:: original:
at
redefine
func a
at f ->
expression of C, (
an_Adj C) ;
coherence
proof
a
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Def28;
then (a
at f)
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
an_Adj C)) by
Th129;
hence thesis by
Th41;
end;
end
registration
let C, f;
let a be
positive
expression of C, (
an_Adj C);
cluster (a
at f) ->
positive;
coherence
proof
consider v be
constructor
OperSymbol of C such that
A1: (
the_result_sort_of v)
= (
an_Adj C) and
A2: ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of v)) & a
= (v
-trm p) by
Th65;
consider p be
FinSequence of (
QuasiTerms C) such that
A3: (
len p)
= (
len (
the_arity_of v)) and
A4: a
= (v
-trm p) by
A2;
A5: (
len (p
at f))
= (
len p) by
Th130;
(a
at f)
= (v
-trm (p
at f)) by
A3,
A4,
Def60;
hence thesis by
A1,
A3,
A5,
Th66;
end;
end
registration
let C, f;
let a be
negative
expression of C, (
an_Adj C);
cluster (a
at f) ->
negative;
coherence
proof
((
non_op C)
term (
Non a))
= a by
Th62;
then (a
at f)
= ((
non_op C)
term ((
Non a)
at f)) by
Def60
.= (
Non ((
Non a)
at f)) by
Th59;
hence thesis;
end;
end
definition
let C, f;
let a be
quasi-adjective of C;
:: original:
at
redefine
func a
at f ->
quasi-adjective of C ;
coherence
proof
per cases ;
suppose a is
positive;
then
reconsider a as
positive
quasi-adjective of C;
(a
at f) is
positive;
hence thesis;
end;
suppose a is
negative;
then
reconsider a as
negative
quasi-adjective of C;
(a
at f) is
negative;
hence thesis;
end;
end;
end
theorem ::
ABCMIZ_1:141
((
Non a)
at f)
= (
Non (a
at f))
proof
per cases ;
suppose a is
positive;
then
reconsider b = a as
positive
expression of C, (
an_Adj C);
reconsider af = (b
at f) as
positive
expression of C, (
an_Adj C);
thus ((
Non a)
at f)
= (((
non_op C)
term b)
at f) by
Th59
.= ((
non_op C)
term af) by
Def60
.= (
Non (a
at f)) by
Th59;
end;
suppose a is non
positive;
then
consider b be
expression of C, (
an_Adj C) such that
A1: a
= ((
non_op C)
term b) and
A2: (
Non a)
= b by
Th60;
A3: (a
at f)
= ((
non_op C)
term (b
at f)) by
A1,
Def60;
then (a
at f) is non
positive;
then ex k be
expression of C, (
an_Adj C) st (a
at f)
= ((
non_op C)
term k) & (
Non (a
at f))
= k by
Th60;
hence thesis by
A2,
A3,
Th44;
end;
end;
definition
let C, f;
let t be
expression of C, (
a_Type C);
:: original:
at
redefine
func t
at f ->
expression of C, (
a_Type C) ;
coherence
proof
t
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Type C)) by
Def28;
then (t
at f)
in (the
Sorts of (
Free (C,(
MSVars C)))
. (
a_Type C)) by
Th129;
hence thesis by
Th41;
end;
end
registration
let C, f;
let t be
pure
expression of C, (
a_Type C);
cluster (t
at f) ->
pure;
coherence
proof
consider m be
constructor
OperSymbol of C such that
A1: (
the_result_sort_of m)
= (
a_Type C) and
A2: ex p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of m)) & t
= (m
-trm p) by
Th74;
consider p be
FinSequence of (
QuasiTerms C) such that
A3: (
len p)
= (
len (
the_arity_of m)) and
A4: t
= (m
-trm p) by
A2;
A5: (
len (p
at f))
= (
len p) by
Th130;
(t
at f)
= (m
-trm (p
at f)) by
A3,
A4,
Def60;
hence thesis by
A1,
A3,
A5,
Th75;
end;
end
theorem ::
ABCMIZ_1:142
for f be
irrelevant
one-to-one
valuation of C holds ex g be
irrelevant
one-to-one
valuation of C st for x,y be
variable holds x
in (
dom f) & (f
. x)
= (y
-term C) iff y
in (
dom g) & (g
. y)
= (x
-term C)
proof
let f be
irrelevant
one-to-one
valuation of C;
set Y = { x where x be
variable : (x
-term C)
in (
rng f) };
defpred
P[
object,
object] means ex x be
set st x
in (
dom f) & (f
. x)
= (
root-tree
[$1,
a_Term ]) & $2
= (
root-tree
[x,
a_Term ]);
A1: for x be
object st x
in Y holds ex y be
object st
P[x, y]
proof
let x be
object;
assume x
in Y;
then
A2: ex z be
variable st x
= z & (z
-term C)
in (
rng f);
then
reconsider z = x as
variable;
consider y be
object such that
A3: y
in (
dom f) and
A4: (z
-term C)
= (f
. y) by
A2,
FUNCT_1:def 3;
reconsider y as
variable by
A3;
take (y
-term C);
thus thesis by
A3,
A4;
end;
consider g be
Function such that
A5: (
dom g)
= Y and
A6: for y be
object st y
in Y holds
P[y, (g
. y)] from
CLASSES1:sch 1(
A1);
A7: Y
c=
Vars
proof
let x be
object;
assume x
in Y;
then ex z be
variable st x
= z & (z
-term C)
in (
rng f);
hence thesis;
end;
(
rng g)
c= (
QuasiTerms C)
proof
let y be
object;
assume y
in (
rng g);
then
consider x be
object such that
A8: x
in (
dom g) and
A9: y
= (g
. x) by
FUNCT_1:def 3;
reconsider x as
variable by
A5,
A7,
A8;
consider z be
set such that
A10: z
in (
dom f) and (f
. z)
= (x
-term C) and
A11: (g
. x)
= (
root-tree
[z,
a_Term ]) by
A5,
A6,
A8;
reconsider z as
variable by
A10;
y
= (z
-term C) by
A9,
A11;
hence thesis by
Def28;
end;
then
reconsider g as
valuation of C by
A5,
A7,
RELSET_1: 4;
A12: g is
irrelevant
proof
let x be
variable;
assume x
in (
dom g);
then
consider y be
set such that
A13: y
in (
dom f) and (f
. y)
= (x
-term C) and
A14: (g
. x)
= (
root-tree
[y,
a_Term ]) by
A5,
A6;
reconsider y as
variable by
A13;
take y;
thus thesis by
A14;
end;
g is
one-to-one
proof
let z1,z2 be
object;
assume that
A15: z1
in (
dom g) and
A16: z2
in (
dom g) and
A17: (g
. z1)
= (g
. z2);
reconsider z1, z2 as
variable by
A15,
A16;
consider x1 be
set such that
A18: x1
in (
dom f) and
A19: (f
. x1)
= (z1
-term C) and
A20: (g
. z1)
= (
root-tree
[x1,
a_Term ]) by
A5,
A6,
A15;
consider x2 be
set such that
A21: x2
in (
dom f) and
A22: (f
. x2)
= (z2
-term C) and
A23: (g
. z1)
= (
root-tree
[x2,
a_Term ]) by
A5,
A6,
A16,
A17;
reconsider x1, x2 as
variable by
A18,
A21;
(x1
-term C)
= (x2
-term C) by
A20,
A23;
then x1
= x2 by
Th50;
hence thesis by
A19,
A22,
Th50;
end;
then
reconsider g as
irrelevant
one-to-one
valuation of C by
A12;
take g;
let x,y be
variable;
hereby
assume that
A24: x
in (
dom f) and
A25: (f
. x)
= (y
-term C);
(f
. x)
in (
rng f) by
A24,
FUNCT_1:def 3;
hence y
in (
dom g) by
A5,
A25;
then
P[y, (g
. y)] by
A5,
A6;
hence (g
. y)
= (x
-term C) by
A24,
A25,
FUNCT_1:def 4;
end;
assume that
A26: y
in (
dom g) and
A27: (g
. y)
= (x
-term C);
consider z be
set such that
A28: z
in (
dom f) and
A29: (f
. z)
= (
root-tree
[y,
a_Term ]) and
A30: (x
-term C)
= (
root-tree
[z,
a_Term ]) by
A5,
A6,
A26,
A27;
reconsider z as
variable by
A28;
(x
-term C)
= (z
-term C) by
A30;
hence thesis by
A28,
A29,
Th50;
end;
theorem ::
ABCMIZ_1:143
for f,g be
irrelevant
one-to-one
valuation of C st for x,y be
variable holds x
in (
dom f) & (f
. x)
= (y
-term C) implies y
in (
dom g) & (g
. y)
= (x
-term C) holds for e st (
variables_in e)
c= (
dom f) holds ((e
at f)
at g)
= e
proof
let f,g be
irrelevant
one-to-one
valuation of C such that
A1: for x,y be
variable holds x
in (
dom f) & (f
. x)
= (y
-term C) implies y
in (
dom g) & (g
. y)
= (x
-term C);
let t be
expression of C;
defpred
P[
expression of C] means (
variables_in $1)
c= (
dom f) implies (($1
at f)
at g)
= $1;
A2: for x be
variable holds
P[(x
-term C)]
proof
let x be
variable;
assume (
variables_in (x
-term C))
c= (
dom f);
then
{x}
c= (
dom f) by
MSAFREE3: 10;
then
A3: x
in (
dom f) by
ZFMISC_1: 31;
then
consider y be
variable such that
A4: (f
. x)
= (y
-term C) by
Def58;
A5: y
in (
dom g) by
A1,
A3,
A4;
A6: (g
. y)
= (x
-term C) by
A1,
A3,
A4;
((x
-term C)
at f)
= (y
-term C) by
A3,
A4,
Def60;
hence thesis by
A5,
A6,
Def60;
end;
A7: for c be
constructor
OperSymbol of C holds for p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C st t
in (
rng p) holds
P[t] holds
P[(c
-trm p)]
proof
let c be
constructor
OperSymbol of C;
let p be
FinSequence of (
QuasiTerms C) such that
A8: (
len p)
= (
len (
the_arity_of c)) and
A9: for t be
quasi-term of C st t
in (
rng p) holds
P[t] and
A10: (
variables_in (c
-trm p))
c= (
dom f);
(c
-trm p)
= (
[c, the
carrier of C]
-tree p) by
A8,
Def35;
then
A11: (
variables_in (c
-trm p))
= (
union { (
variables_in s) where s be
quasi-term of C : s
in (
rng p) }) by
Th88;
A12: (
len (p
at f))
= (
len p) by
Th130;
A13: (
len ((p
at f)
at g))
= (
len (p
at f)) by
Th130;
A14: (
dom (p
at f))
= (
dom p) by
A12,
FINSEQ_3: 29;
A15: (
dom ((p
at f)
at g))
= (
dom (p
at f)) by
A13,
FINSEQ_3: 29;
now
let i be
Nat;
assume
A16: i
in (
dom p);
then
A17: ((p
at f)
. i)
= ((f
# )
. (p
. i)) by
FUNCT_1: 13;
A18: (p
. i)
in (
rng p) by
A16,
FUNCT_1:def 3;
(
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
then
reconsider pi1 = (p
. i) as
quasi-term of C by
A18,
Th41;
(
variables_in pi1)
in { (
variables_in s) where s be
quasi-term of C : s
in (
rng p) } by
A18;
then
A19: (
variables_in pi1)
c= (
variables_in (c
-trm p)) by
A11,
ZFMISC_1: 74;
(((p
at f)
at g)
. i)
= ((pi1
at f)
at g) by
A14,
A16,
A17,
FUNCT_1: 13;
hence (((p
at f)
at g)
. i)
= (p
. i) by
A9,
A10,
A18,
A19,
XBOOLE_1: 1;
end;
then
A20: ((p
at f)
at g)
= p by
A14,
A15;
((c
-trm p)
at f)
= (c
-trm (p
at f)) by
A8,
Def60;
hence thesis by
A8,
A12,
A20,
Def60;
end;
A21: for a be
expression of C, (
an_Adj C) st
P[a] holds
P[((
non_op C)
term a)]
proof
let a be
expression of C, (
an_Adj C) such that
A22:
P[a] and
A23: (
variables_in ((
non_op C)
term a))
c= (
dom f);
A24: ((
non_op C)
term a)
= (
[
non_op , the
carrier of C]
-tree
<*a*>) by
Th43;
thus ((((
non_op C)
term a)
at f)
at g)
= (((
non_op C)
term (a
at f))
at g) by
Def60
.= ((
non_op C)
term a) by
A22,
A23,
A24,
Def60,
Th93;
end;
A25: for a be
expression of C, (
an_Adj C) st
P[a] holds for t be
expression of C, (
a_Type C) st
P[t] holds
P[((
ast C)
term (a,t))]
proof
let a be
expression of C, (
an_Adj C) such that
A26:
P[a];
let t be
expression of C, (
a_Type C) such that
A27:
P[t] and
A28: (
variables_in ((
ast C)
term (a,t)))
c= (
dom f);
((
ast C)
term (a,t))
= (
[
* , the
carrier of C]
-tree
<*a, t*>) by
Th46;
then
A29: (
variables_in ((
ast C)
term (a,t)))
= (((C
variables_in a)
(\/) (C
variables_in t))
.
a_Term ) by
Th96
.= ((
variables_in a)
\/ (
variables_in t)) by
PBOOLE:def 4;
thus ((((
ast C)
term (a,t))
at f)
at g)
= (((
ast C)
term ((a
at f),(t
at f)))
at g) by
Def60
.= ((
ast C)
term (a,t)) by
A26,
A27,
A28,
A29,
Def60,
XBOOLE_1: 11;
end;
thus
P[t] from
StructInd(
A2,
A7,
A21,
A25);
end;
definition
let C, f;
let A be
Subset of (
QuasiAdjs C);
::
ABCMIZ_1:def64
func A
at f ->
Subset of (
QuasiAdjs C) equals { (a
at f) where a be
quasi-adjective of C : a
in A };
coherence
proof
set X = { (a
at f) where a be
quasi-adjective of C : a
in A };
X
c= (
QuasiAdjs C)
proof
let x be
object;
assume x
in X;
then ex a be
quasi-adjective of C st x
= (a
at f) & a
in A;
hence thesis;
end;
hence thesis;
end;
end
theorem ::
ABCMIZ_1:144
Th144: for A be
Subset of (
QuasiAdjs C) holds for a be
quasi-adjective of C st A
=
{a} holds (A
at f)
=
{(a
at f)}
proof
let A be
Subset of (
QuasiAdjs C);
let a be
quasi-adjective of C such that
A1: A
=
{a};
thus (A
at f)
c=
{(a
at f)}
proof
let x be
object;
assume x
in (A
at f);
then ex b be
quasi-adjective of C st x
= (b
at f) & b
in A;
then x
= (a
at f) by
A1,
TARSKI:def 1;
hence thesis by
TARSKI:def 1;
end;
let x be
object;
assume x
in
{(a
at f)};
then
A2: x
= (a
at f) by
TARSKI:def 1;
a
in A by
A1,
TARSKI:def 1;
hence thesis by
A2;
end;
theorem ::
ABCMIZ_1:145
Th145: for A,B be
Subset of (
QuasiAdjs C) holds ((A
\/ B)
at f)
= ((A
at f)
\/ (B
at f))
proof
let A,B be
Subset of (
QuasiAdjs C);
thus ((A
\/ B)
at f)
c= ((A
at f)
\/ (B
at f))
proof
let x be
object;
assume x
in ((A
\/ B)
at f);
then
consider a be
quasi-adjective of C such that
A1: x
= (a
at f) and
A2: a
in (A
\/ B);
a
in A or a
in B by
A2,
XBOOLE_0:def 3;
then x
in (A
at f) or x
in (B
at f) by
A1;
hence thesis by
XBOOLE_0:def 3;
end;
let x be
object;
assume x
in ((A
at f)
\/ (B
at f));
then x
in (A
at f) or x
in (B
at f) by
XBOOLE_0:def 3;
then A
c= (A
\/ B) & (ex a be
quasi-adjective of C st x
= (a
at f) & a
in A) or B
c= (A
\/ B) & ex a be
quasi-adjective of C st x
= (a
at f) & a
in B by
XBOOLE_1: 7;
hence thesis;
end;
theorem ::
ABCMIZ_1:146
for A,B be
Subset of (
QuasiAdjs C) st A
c= B holds (A
at f)
c= (B
at f)
proof
let A,B be
Subset of (
QuasiAdjs C);
assume A
c= B;
then (A
\/ B)
= B by
XBOOLE_1: 12;
then (B
at f)
= ((A
at f)
\/ (B
at f)) by
Th145;
hence thesis by
XBOOLE_1: 7;
end;
registration
let C be
initialized
ConstructorSignature;
let f be
valuation of C;
let A be
finite
Subset of (
QuasiAdjs C);
cluster (A
at f) ->
finite;
coherence
proof
A1: A is
finite;
deffunc
F(
expression of C) = ($1
at f);
A2: {
F(w) where w be
expression of C : w
in A } is
finite from
FRAENKEL:sch 21(
A1);
(A
at f)
c= {
F(w) where w be
expression of C : w
in A }
proof
let x be
object;
assume x
in (A
at f);
then ex a be
quasi-adjective of C st x
= (a
at f) & a
in A;
hence thesis;
end;
hence thesis by
A2;
end;
end
definition
let C be
initialized
ConstructorSignature;
let f be
valuation of C;
let T be
quasi-type of C;
::
ABCMIZ_1:def65
func T
at f ->
quasi-type of C equals (((
adjs T)
at f)
ast ((
the_base_of T)
at f));
coherence ;
end
theorem ::
ABCMIZ_1:147
for T be
quasi-type of C holds (
adjs (T
at f))
= ((
adjs T)
at f) & (
the_base_of (T
at f))
= ((
the_base_of T)
at f);
theorem ::
ABCMIZ_1:148
for T be
quasi-type of C holds for a be
quasi-adjective of C holds ((a
ast T)
at f)
= ((a
at f)
ast (T
at f))
proof
let T be
quasi-type of C;
let a be
quasi-adjective of C;
a
in (
QuasiAdjs C);
then
reconsider A =
{a} as
Subset of (
QuasiAdjs C) by
ZFMISC_1: 31;
thus ((a
ast T)
at f)
=
[((
adjs (a
ast T))
at f), ((
the_base_of T)
at f)]
.=
[((A
\/ (
adjs T))
at f), ((
the_base_of T)
at f)]
.=
[((A
at f)
\/ ((
adjs T)
at f)), ((
the_base_of T)
at f)] by
Th145
.=
[(
{(a
at f)}
\/ ((
adjs T)
at f)), ((
the_base_of T)
at f)] by
Th144
.=
[(
{(a
at f)}
\/ (
adjs (T
at f))), ((
the_base_of T)
at f)]
.= ((a
at f)
ast (T
at f));
end;
definition
let C be
initialized
ConstructorSignature;
let f,g be
valuation of C;
::
ABCMIZ_1:def66
func f
at g ->
valuation of C means
:
Def66: (
dom it )
= ((
dom f)
\/ (
dom g)) & for x be
variable st x
in (
dom it ) holds (it
. x)
= (((x
-term C)
at f)
at g);
existence
proof
deffunc
h(
object) = ((((
In ($1,
Vars ))
-term C)
at f)
at g);
consider h be
Function such that
A1: (
dom h)
= ((
dom f)
\/ (
dom g)) and
A2: for x be
object st x
in ((
dom f)
\/ (
dom g)) holds (h
. x)
=
h(x) from
FUNCT_1:sch 3;
(
rng h)
c= (
QuasiTerms C)
proof
let y be
object;
assume y
in (
rng h);
then
consider x be
object such that
A3: x
in (
dom h) and
A4: y
= (h
. x) by
FUNCT_1:def 3;
y
=
h(x) by
A1,
A2,
A3,
A4;
hence thesis by
Def28;
end;
then
reconsider h as
valuation of C by
A1,
RELSET_1: 4;
take h;
thus (
dom h)
= ((
dom f)
\/ (
dom g)) by
A1;
let x be
variable;
assume x
in (
dom h);
then (h
. x)
=
h(x) by
A1,
A2;
hence thesis;
end;
uniqueness
proof
let h1,h2 be
valuation of C such that
A5: (
dom h1)
= ((
dom f)
\/ (
dom g)) and
A6: for x be
variable st x
in (
dom h1) holds (h1
. x)
= (((x
-term C)
at f)
at g) and
A7: (
dom h2)
= ((
dom f)
\/ (
dom g)) and
A8: for x be
variable st x
in (
dom h2) holds (h2
. x)
= (((x
-term C)
at f)
at g);
now
let x be
variable;
assume
A9: x
in (
dom h1);
then (h1
. x)
= (((x
-term C)
at f)
at g) by
A6;
hence (h1
. x)
= (h2
. x) by
A5,
A7,
A8,
A9;
end;
hence thesis by
A5,
A7;
end;
end
registration
let C be
initialized
ConstructorSignature;
let f,g be
irrelevant
valuation of C;
cluster (f
at g) ->
irrelevant;
coherence
proof
let x be
variable;
assume
A1: x
in (
dom (f
at g));
then
A2: ((f
at g)
. x)
= (((x
-term C)
at f)
at g) by
Def66;
A3: (
dom (f
at g))
= ((
dom f)
\/ (
dom g)) by
Def66;
per cases ;
suppose
A4: x
in (
dom f);
then
consider y be
variable such that
A5: (f
. x)
= (y
-term C) by
Def58;
A6: ((x
-term C)
at f)
= (y
-term C) by
A4,
A5,
Def60;
then
A7: y
in (
dom g) implies ((f
at g)
. x)
= (g
. y) by
A2,
Def60;
y
nin (
dom g) implies ((f
at g)
. x)
= (y
-term C) by
A2,
A6,
Def60;
hence thesis by
A7,
Def58;
end;
suppose
A8: x
nin (
dom f);
then
A9: ((x
-term C)
at f)
= (x
-term C) by
Def60;
A10: x
in (
dom g) by
A1,
A3,
A8,
XBOOLE_0:def 3;
then ((f
at g)
. x)
= (g
. x) by
A2,
A9,
Def60;
hence thesis by
A10,
Def58;
end;
end;
end
theorem ::
ABCMIZ_1:149
Th149: for f1,f2 be
valuation of C holds ((e
at f1)
at f2)
= (e
at (f1
at f2))
proof
set t = e;
let f1,f2 be
valuation of C;
A1: (
dom (f1
at f2))
= ((
dom f1)
\/ (
dom f2)) by
Def66;
defpred
P[
expression of C] means (($1
at f1)
at f2)
= ($1
at (f1
at f2));
A2: for x be
variable holds
P[(x
-term C)]
proof
let x be
variable;
per cases ;
suppose
A3: x
in (
dom (f1
at f2));
then ((x
-term C)
at (f1
at f2))
= ((f1
at f2)
. x) by
Def60;
hence thesis by
A3,
Def66;
end;
suppose
A4: x
nin (
dom (f1
at f2));
then
A5: x
nin (
dom f1) by
A1,
XBOOLE_0:def 3;
A6: x
nin (
dom f2) by
A1,
A4,
XBOOLE_0:def 3;
A7: ((x
-term C)
at f1)
= (x
-term C) by
A5,
Def60;
((x
-term C)
at f2)
= (x
-term C) by
A6,
Def60;
hence thesis by
A4,
A7,
Def60;
end;
end;
A8: for c be
constructor
OperSymbol of C holds for p be
FinSequence of (
QuasiTerms C) st (
len p)
= (
len (
the_arity_of c)) & for t be
quasi-term of C st t
in (
rng p) holds
P[t] holds
P[(c
-trm p)]
proof
let c be
constructor
OperSymbol of C;
let p be
FinSequence of (
QuasiTerms C) such that
A9: (
len p)
= (
len (
the_arity_of c)) and
A10: for t be
quasi-term of C st t
in (
rng p) holds
P[t];
A11: (
len (p
at f1))
= (
len p) by
Th130;
A12: (
len (p
at (f1
at f2)))
= (
len p) by
Th130;
A13: (
len ((p
at f1)
at f2))
= (
len (p
at f1)) by
Th130;
A14: (
dom (p
at f1))
= (
dom p) by
A11,
FINSEQ_3: 29;
A15: (
dom (p
at (f1
at f2)))
= (
dom p) by
A12,
FINSEQ_3: 29;
A16: (
dom ((p
at f1)
at f2))
= (
dom p) by
A11,
A13,
FINSEQ_3: 29;
now
let i be
Nat;
assume
A17: i
in (
dom p);
then
A18: (((p
at f1)
at f2)
. i)
= ((f2
# )
. ((p
at f1)
. i)) by
A14,
FUNCT_1: 13;
A19: (p
. i)
in (
rng p) by
A17,
FUNCT_1:def 3;
(
rng p)
c= (
QuasiTerms C) by
FINSEQ_1:def 4;
then
reconsider pi1 = (p
. i) as
quasi-term of C by
A19,
Th41;
thus (((p
at f1)
at f2)
. i)
= ((pi1
at f1)
at f2) by
A17,
A18,
FUNCT_1: 13
.= (pi1
at (f1
at f2)) by
A10,
A19
.= ((p
at (f1
at f2))
. i) by
A17,
FUNCT_1: 13;
end;
then
A20: ((p
at f1)
at f2)
= (p
at (f1
at f2)) by
A15,
A16;
thus (((c
-trm p)
at f1)
at f2)
= ((c
-trm (p
at f1))
at f2) by
A9,
Def60
.= (c
-trm (p
at (f1
at f2))) by
A9,
A11,
A20,
Def60
.= ((c
-trm p)
at (f1
at f2)) by
A9,
Def60;
end;
A21: for a be
expression of C, (
an_Adj C) st
P[a] holds
P[((
non_op C)
term a)]
proof
let a be
expression of C, (
an_Adj C);
assume
P[a];
then (((
non_op C)
term (a
at f1))
at f2)
= ((
non_op C)
term (a
at (f1
at f2))) by
Def60
.= (((
non_op C)
term a)
at (f1
at f2)) by
Def60;
hence thesis by
Def60;
end;
A22: for a be
expression of C, (
an_Adj C) st
P[a] holds for t be
expression of C, (
a_Type C) st
P[t] holds
P[((
ast C)
term (a,t))]
proof
let a be
expression of C, (
an_Adj C) such that
A23:
P[a];
let t be
expression of C, (
a_Type C);
assume
P[t];
then (((
ast C)
term ((a
at f1),(t
at f1)))
at f2)
= ((
ast C)
term ((a
at (f1
at f2)),(t
at (f1
at f2)))) by
A23,
Def60
.= (((
ast C)
term (a,t))
at (f1
at f2)) by
Def60;
hence thesis by
Def60;
end;
thus
P[t] from
StructInd(
A2,
A8,
A21,
A22);
end;
theorem ::
ABCMIZ_1:150
Th150: for A be
Subset of (
QuasiAdjs C) holds for f1,f2 be
valuation of C holds ((A
at f1)
at f2)
= (A
at (f1
at f2))
proof
let A be
Subset of (
QuasiAdjs C);
let f1,f2 be
valuation of C;
thus ((A
at f1)
at f2)
c= (A
at (f1
at f2))
proof
let x be
object;
assume x
in ((A
at f1)
at f2);
then
consider a be
quasi-adjective of C such that
A1: x
= (a
at f2) and
A2: a
in (A
at f1);
consider b be
quasi-adjective of C such that
A3: a
= (b
at f1) and
A4: b
in A by
A2;
x
= (b
at (f1
at f2)) by
A1,
A3,
Th149;
hence thesis by
A4;
end;
let x be
object;
assume x
in (A
at (f1
at f2));
then
consider a be
quasi-adjective of C such that
A5: x
= (a
at (f1
at f2)) and
A6: a
in A;
A7: x
= ((a
at f1)
at f2) by
A5,
Th149;
(a
at f1)
in (A
at f1) by
A6;
hence thesis by
A7;
end;
theorem ::
ABCMIZ_1:151
for T be
quasi-type of C holds for f1,f2 be
valuation of C holds ((T
at f1)
at f2)
= (T
at (f1
at f2))
proof
let T be
quasi-type of C;
let f1,f2 be
valuation of C;
thus ((T
at f1)
at f2)
= ((((
adjs T)
at f1)
at f2)
ast ((
the_base_of (T
at f1))
at f2))
.= (((
adjs T)
at (f1
at f2))
ast ((
the_base_of (T
at f1))
at f2)) by
Th150
.= (((
adjs T)
at (f1
at f2))
ast (((
the_base_of T)
at f1)
at f2))
.= (T
at (f1
at f2)) by
Th149;
end;