:: Mizar Analysis of Algorithms: Preliminaries
:: by Grzegorz Bancerek
::
:: Received July 9, 2007
:: Copyright (c) 2007 Association of Mizar Users
:: AOFA_000 semantic presentation
theorem Th1: :: AOFA_000:1
:: deftheorem Def1 defines is_a_unity_wrt AOFA_000:def 1 :
definition
let f be
homogeneous Function;
attr f is
associative means :
Def2:
:: AOFA_000:def 2
for
x,
y,
z being
set st
<*x,y*> in dom f &
<*y,z*> in dom f &
<*(f . <*x,y*>),z*> in dom f &
<*x,(f . <*y,z*>)*> in dom f holds
f . <*(f . <*x,y*>),z*> = f . <*x,(f . <*y,z*>)*>;
attr f is
unital means :
Def3:
:: AOFA_000:def 3
ex
x being
set st
x is_a_unity_wrt f;
end;
:: deftheorem Def2 defines associative AOFA_000:def 2 :
for
f being
homogeneous Function holds
(
f is
associative iff for
x,
y,
z being
set st
<*x,y*> in dom f &
<*y,z*> in dom f &
<*(f . <*x,y*>),z*> in dom f &
<*x,(f . <*y,z*>)*> in dom f holds
f . <*(f . <*x,y*>),z*> = f . <*x,(f . <*y,z*>)*> );
:: deftheorem Def3 defines unital AOFA_000:def 3 :
theorem Th2: :: AOFA_000:2
theorem Th3: :: AOFA_000:3
:: deftheorem defines +* AOFA_000:def 4 :
theorem Th4: :: AOFA_000:4
theorem Th5: :: AOFA_000:5
:: deftheorem defines orbit AOFA_000:def 5 :
theorem Th6: :: AOFA_000:6
theorem :: AOFA_000:7
theorem :: AOFA_000:8
theorem Th9: :: AOFA_000:9
definition
let f be
Function;
assume A1:
rng f c= dom f
;
let A,
x be
set ;
defpred S1[
Nat]
means for
a being
set st
a in dom f holds
a in dom (iter f,$1);
A2:
(dom f) \/ (rng f) = dom f
by A1, XBOOLE_1:12;
then
iter f,
0 = id (dom f)
by FUNCT_7:70;
then A3:
S1[
0 ]
by FUNCT_1:34;
A4:
now
let i be
Element of
NAT ;
:: thesis: ( S1[i] implies S1[i + 1] )assume A5:
S1[
i]
;
:: thesis: S1[i + 1]thus
S1[
i + 1]
:: thesis: verum
proof
let a be
set ;
:: thesis: ( a in dom f implies a in dom (iter f,(i + 1)) )
assume
a in dom f
;
:: thesis: a in dom (iter f,(i + 1))
then A6:
a in dom (iter f,i)
by A5;
then A7:
(
(iter f,i) . a in rng (iter f,i) &
rng (iter f,i) c= dom f )
by A2, FUNCT_1:def 5, FUNCT_7:74;
iter f,
(i + 1) = f * (iter f,i)
by FUNCT_7:73;
hence
a in dom (iter f,(i + 1))
by A6, A7, FUNCT_1:21;
:: thesis: verum
end;
end;
A8:
for
i being
Element of
NAT holds
S1[
i]
from NAT_1:sch 1(A3, A4);
func A,
x iter f -> Function means :: AOFA_000:def 6
(
dom it = dom f & ( for
a being
set st
a in dom f holds
( (
f orbit a c= A implies
it . a = x ) & ( for
n being
Nat st
(iter f,n) . a nin A & ( for
i being
Nat st
i < n holds
(iter f,i) . a in A ) holds
it . a = (iter f,n) . a ) ) ) );
existence
ex b1 being Function st
( dom b1 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b1 . a = x ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b1 . a = (iter f,n) . a ) ) ) )
uniqueness
for b1, b2 being Function st dom b1 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b1 . a = x ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b1 . a = (iter f,n) . a ) ) ) & dom b2 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b2 . a = x ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b2 . a = (iter f,n) . a ) ) ) holds
b1 = b2
end;
:: deftheorem defines iter AOFA_000:def 6 :
definition
let f be
Function;
assume A1:
rng f c= dom f
;
let A be
set ;
let g be
Function;
defpred S1[
Nat]
means for
a being
set st
a in dom f holds
a in dom (iter f,$1);
A2:
(dom f) \/ (rng f) = dom f
by A1, XBOOLE_1:12;
then
iter f,
0 = id (dom f)
by FUNCT_7:70;
then A3:
S1[
0 ]
by FUNCT_1:34;
A4:
now
let i be
Element of
NAT ;
:: thesis: ( S1[i] implies S1[i + 1] )assume A5:
S1[
i]
;
:: thesis: S1[i + 1]thus
S1[
i + 1]
:: thesis: verum
proof
let a be
set ;
:: thesis: ( a in dom f implies a in dom (iter f,(i + 1)) )
assume
a in dom f
;
:: thesis: a in dom (iter f,(i + 1))
then A6:
a in dom (iter f,i)
by A5;
then A7:
(
(iter f,i) . a in rng (iter f,i) &
rng (iter f,i) c= dom f )
by A2, FUNCT_1:def 5, FUNCT_7:74;
iter f,
(i + 1) = f * (iter f,i)
by FUNCT_7:73;
hence
a in dom (iter f,(i + 1))
by A6, A7, FUNCT_1:21;
:: thesis: verum
end;
end;
A8:
for
i being
Element of
NAT holds
S1[
i]
from NAT_1:sch 1(A3, A4);
func A,
g iter f -> Function means :
Def7:
:: AOFA_000:def 7
(
dom it = dom f & ( for
a being
set st
a in dom f holds
( (
f orbit a c= A implies
it . a = g . a ) & ( for
n being
Nat st
(iter f,n) . a nin A & ( for
i being
Nat st
i < n holds
(iter f,i) . a in A ) holds
it . a = (iter f,n) . a ) ) ) );
existence
ex b1 being Function st
( dom b1 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b1 . a = g . a ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b1 . a = (iter f,n) . a ) ) ) )
uniqueness
for b1, b2 being Function st dom b1 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b1 . a = g . a ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b1 . a = (iter f,n) . a ) ) ) & dom b2 = dom f & ( for a being set st a in dom f holds
( ( f orbit a c= A implies b2 . a = g . a ) & ( for n being Nat st (iter f,n) . a nin A & ( for i being Nat st i < n holds
(iter f,i) . a in A ) holds
b2 . a = (iter f,n) . a ) ) ) holds
b1 = b2
end;
:: deftheorem Def7 defines iter AOFA_000:def 7 :
theorem Th10: :: AOFA_000:10