Journal of Formalized Mathematics
Volume 7, 1995
University of Bialystok
Copyright (c) 1995
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Yatsuka Nakamura,
- Piotr Rudnicki,
- Andrzej Trybulec,
and
- Pauline N. Kawamoto
- Received April 10, 1995
- MML identifier: CIRCUIT2
- [
Mizar article,
MML identifier index
]
environ
vocabulary MSAFREE2, AMI_1, MSUALG_1, ZF_REFLE, PBOOLE, PRALG_1, MSAFREE,
FUNCT_1, TREES_3, FINSEQ_1, TREES_4, ALG_1, QC_LANG1, FINSEQ_4, RELAT_1,
TREES_2, TDGROUP, CARD_3, DTCONSTR, BOOLE, FREEALG, CIRCUIT1, FUNCT_4,
FUNCOP_1, UNIALG_2, MSATERM, PRELAMB, REALSET1, FUNCT_6, CARD_1,
FINSET_1, SQUARE_1, PRALG_2, SEQM_3, CIRCUIT2, MEMBERED;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, XREAL_0, RELAT_1,
MEMBERED, FUNCT_1, FUNCT_2, SEQM_3, FUNCT_4, NAT_1, FINSEQ_1, FINSET_1,
TREES_2, TREES_3, TREES_4, GROUP_1, CARD_1, CARD_3, FINSEQ_4, FUNCT_6,
LANG1, DTCONSTR, PBOOLE, STRUCT_0, PRALG_1, MSUALG_1, MSUALG_2, PRALG_2,
MSUALG_3, MSAFREE, PRE_CIRC, MSAFREE2, CIRCUIT1, MSATERM;
constructors MSATERM, CIRCUIT1, MSUALG_3, PRALG_2, NAT_1, SEQM_3, FINSEQ_4,
FINSUB_1, MEMBERED, XBOOLE_0;
clusters MSUALG_1, DTCONSTR, PRE_CIRC, MSAFREE, MSAFREE2, CIRCUIT1, TREES_3,
PRALG_1, FUNCT_1, PRELAMB, MSUALG_3, RELSET_1, STRUCT_0, FINSEQ_1,
GROUP_2, ARYTM_3, MEMBERED, XREAL_0, XBOOLE_0, ORDINAL2;
requirements NUMERALS, BOOLE, SUBSET;
begin
reserve IIG for monotonic Circuit-like non void (non empty ManySortedSign);
theorem :: CIRCUIT2:1
for X being non-empty ManySortedSet of the carrier of IIG,
H being ManySortedFunction of FreeMSA X, FreeMSA X,
HH being Function-yielding Function,
v being SortSymbol of IIG,
p being DTree-yielding FinSequence,
t being Element of (the Sorts of FreeMSA X).v
st v in InnerVertices IIG
& t = [action_at v,the carrier of IIG]-tree p
& H is_homomorphism FreeMSA X, FreeMSA X
& HH = H * the_arity_of action_at v
ex HHp being DTree-yielding FinSequence
st HHp = HH..p & H.v.t = [action_at v,the carrier of IIG]-tree HHp;
definition
let IIG;
let SCS be non-empty Circuit of IIG,
s be State of SCS,
iv be InputValues of SCS;
redefine func s +* iv -> State of SCS;
end;
definition
let IIG;
let A be non-empty Circuit of IIG, iv be InputValues of A;
func Fix_inp iv -> ManySortedFunction of FreeGen the Sorts of A,
the Sorts of FreeEnv A means
:: CIRCUIT2:def 1
for v being Vertex of IIG
holds (v in InputVertices IIG implies it.v
= FreeGen(v, the Sorts of A) --> root-tree[iv.v, v])
& (v in SortsWithConstants IIG implies
it.v = FreeGen(v, the Sorts of A)
--> root-tree [action_at v,the carrier of IIG])
& (v in (InnerVertices IIG \ SortsWithConstants IIG) implies
it.v = id FreeGen(v, the Sorts of A));
end;
definition
let IIG;
let A be non-empty Circuit of IIG, iv be InputValues of A;
func Fix_inp_ext iv -> ManySortedFunction of FreeEnv A, FreeEnv A means
:: CIRCUIT2:def 2
it is_homomorphism FreeEnv A, FreeEnv A
& Fix_inp iv c= it;
end;
theorem :: CIRCUIT2:2
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
e being Element of (the Sorts of FreeEnv A).v,
x being set st
v in InnerVertices IIG \ SortsWithConstants IIG & e = root-tree[x,v]
holds (Fix_inp_ext iv).v.e = e;
theorem :: CIRCUIT2:3
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
x being Element of (the Sorts of A).v
st v in InputVertices IIG
holds (Fix_inp_ext iv).v.(root-tree[x,v]) = root-tree[iv.v,v];
theorem :: CIRCUIT2:4
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
e being Element of (the Sorts of FreeEnv A).v,
p, q being DTree-yielding FinSequence
st v in InnerVertices IIG & e = [action_at v,the carrier of IIG]-tree p
& dom p = dom q
& for k being Nat st k in dom p
holds q.k = (Fix_inp_ext iv).((the_arity_of action_at v)/.k).(p.k)
holds (Fix_inp_ext iv).v.e = [action_at v,the carrier of IIG]-tree q;
theorem :: CIRCUIT2:5
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
e being Element of (the Sorts of FreeEnv A).v
st v in SortsWithConstants IIG
holds (Fix_inp_ext iv).v.e = root-tree[action_at v,the carrier of IIG];
theorem :: CIRCUIT2:6
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
e, e1 being Element of (the Sorts of FreeEnv A).v,
t, t1 being DecoratedTree
st t = e & t1 = e1 & e1 = (Fix_inp_ext iv).v.e
holds dom t = dom t1;
theorem :: CIRCUIT2:7
for A being non-empty Circuit of IIG, iv being InputValues of A,
v being Vertex of IIG,
e, e1 being Element of (the Sorts of FreeEnv A).v
st e1 = (Fix_inp_ext iv).v.e
holds card e = card e1;
definition
let IIG;
let SCS be non-empty Circuit of IIG, v be Vertex of IIG,
iv be InputValues of SCS;
func IGTree(v,iv) -> Element of (the Sorts of FreeEnv SCS).v means
:: CIRCUIT2:def 3
ex e being Element of (the Sorts of FreeEnv SCS).v
st card e = size(v,SCS) & it = (Fix_inp_ext iv).v.e;
end;
theorem :: CIRCUIT2:8
for SCS being non-empty Circuit of IIG, v being Vertex of IIG,
iv being InputValues of SCS
holds IGTree(v,iv) = (Fix_inp_ext iv).v.IGTree(v,iv);
theorem :: CIRCUIT2:9
for SCS being non-empty Circuit of IIG,
v being Vertex of IIG,
iv being InputValues of SCS,
p being DTree-yielding FinSequence st v in InnerVertices IIG
& dom p = dom the_arity_of action_at v
& for k being Nat st k in dom p
holds p.k = IGTree((the_arity_of action_at v)/.k, iv)
holds IGTree(v,iv) = [action_at v,the carrier of IIG]-tree p;
definition
let IIG;
let SCS be non-empty Circuit of IIG, v be Vertex of IIG,
iv be InputValues of SCS;
func IGValue(v,iv) -> Element of (the Sorts of SCS).v equals
:: CIRCUIT2:def 4
(Eval SCS).v.(IGTree(v,iv));
end;
theorem :: CIRCUIT2:10
for SCS being non-empty Circuit of IIG,
v being Vertex of IIG, iv being InputValues of SCS
st v in InputVertices IIG
holds IGValue(v,iv) = iv.v;
theorem :: CIRCUIT2:11
for SCS being non-empty Circuit of IIG,
v being Vertex of IIG, iv being InputValues of SCS
st v in SortsWithConstants IIG
holds IGValue(v,iv) = (Set-Constants SCS).v;
begin
::---------------------------------------------------------------------------
:: Computations
::---------------------------------------------------------------------------
definition
let IIG be Circuit-like non void (non empty ManySortedSign);
let SCS be non-empty Circuit of IIG,
s be State of SCS;
func Following s -> State of SCS means
:: CIRCUIT2:def 5
for v being Vertex of IIG
holds (v in InputVertices IIG implies it.v = s.v)
& (v in InnerVertices IIG implies
it.v = (Den(action_at v,SCS)).(action_at v depends_on_in s));
end;
theorem :: CIRCUIT2:12
for SCS being non-empty Circuit of IIG,
s being State of SCS,
iv being InputValues of SCS
st iv c= s
holds iv c= Following s;
definition
let IIG be Circuit-like non void (non empty ManySortedSign);
let SCS be non-empty Circuit of IIG;
let IT be State of SCS;
attr IT is stable means
:: CIRCUIT2:def 6
IT = Following IT;
end;
definition
let IIG;
let SCS be non-empty Circuit of IIG,
s be State of SCS,
iv be InputValues of SCS;
func Following(s,iv) -> State of SCS equals
:: CIRCUIT2:def 7
Following(s+*iv);
end;
definition
let IIG;
let SCS be non-empty Circuit of IIG, InpFs be InputFuncs of SCS,
s be State of SCS;
func InitialComp(s,InpFs) -> State of SCS equals
:: CIRCUIT2:def 8
s +* (0-th_InputValues InpFs) +* Set-Constants SCS;
end;
definition
let IIG;
let SCS be non-empty Circuit of IIG,
InpFs be InputFuncs of SCS,
s be State of SCS;
func Computation(s,InpFs) -> Function of NAT, (product the Sorts of SCS)
means
:: CIRCUIT2:def 9
it.0 = InitialComp(s,InpFs)
& for i being Nat
holds it.(i+1) = Following(it.i,(i+1)-th_InputValues InpFs);
end;
reserve SCS for non-empty Circuit of IIG;
reserve s for State of SCS;
reserve iv for InputValues of SCS;
theorem :: CIRCUIT2:13
for k being Nat
st for v being Vertex of IIG st depth(v,SCS) <= k
holds s.v = IGValue(v,iv)
holds
for v1 being Vertex of IIG st depth(v1,SCS) <= k+1
holds (Following s).v1 = IGValue(v1,iv);
reserve IIG for finite monotonic Circuit-like non void
(non empty ManySortedSign);
reserve SCS for non-empty Circuit of IIG;
reserve InpFs for InputFuncs of SCS;
reserve s for State of SCS;
reserve iv for InputValues of SCS;
theorem :: CIRCUIT2:14
commute InpFs is constant & InputVertices IIG is non empty
implies
for s, iv st iv = (commute InpFs).0
for k being Nat
holds iv c= (Computation(s,InpFs)).k;
theorem :: CIRCUIT2:15
for n being Nat st commute InpFs is constant
& InputVertices IIG is non empty
& (Computation(s,InpFs)).n is stable
for m being Nat st n <= m
holds (Computation(s,InpFs)).n = (Computation(s,InpFs)).m;
theorem :: CIRCUIT2:16
commute InpFs is constant & InputVertices IIG is non empty
implies for s, iv st iv = (commute InpFs).0
for k being Nat, v being Vertex of IIG
st depth(v,SCS) <= k
holds ((Computation(s,InpFs)).k
qua Element of product the Sorts of SCS).v = IGValue(v,iv);
theorem :: CIRCUIT2:17
commute InpFs is constant & InputVertices IIG is non empty
& iv = (commute InpFs).0 implies
for s being State of SCS, v being Vertex of IIG,
n being Element of NAT st n = depth SCS
holds ((Computation(s,InpFs)).n qua State of SCS).v
= IGValue(v,iv);
theorem :: CIRCUIT2:18
commute InpFs is constant & InputVertices IIG is non empty implies
for s being State of SCS, n be Element of NAT st n = depth SCS
holds (Computation(s,InpFs)).n is stable;
theorem :: CIRCUIT2:19
commute InpFs is constant & InputVertices IIG is non empty implies
for s1, s2 being State of SCS
holds (Computation(s1,InpFs)).(depth SCS)
= (Computation(s2,InpFs)).(depth SCS);
Back to top