Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joshua Yanovski
iriscoq
Commits
711bead3
Commit
711bead3
authored
Feb 23, 2017
by
Ralf Jung
Browse files
Note: If f^2 is contractive, that doesn't imply that f is nonexpansive
parent
6456f1f9
Changes
1
Hide whitespace changes
Inline
Sidebyside
Showing
1 changed file
with
24 additions
and
4 deletions
+24
4
theories/algebra/ofe.v
theories/algebra/ofe.v
+24
4
No files found.
theories/algebra/ofe.v
View file @
711bead3
...
...
@@ 298,12 +298,32 @@ Definition fixpointK `{Cofe A, Inhabited A} k (f : A → A)
Section
fixpointK
.
Local
Set
Default
Proof
Using
"Type*"
.
Context
`
{
Cofe
A
,
Inhabited
A
}
(
f
:
A
→
A
)
(
k
:
nat
).
Context
`
{
f_contractive
:
!
Contractive
(
Nat
.
iter
k
f
)
}
.
(
*
TODO
:
Can
we
get
rid
of
this
assumption
,
derive
it
from
contractivity
?
*
)
Context
{
f_ne
:
NonExpansive
f
}
.
Context
{
f_contractive
:
Contractive
(
Nat
.
iter
k
f
)
}
{
f_ne
:
NonExpansive
f
}
.
(
*
Note
than
f_ne
is
crucial
here
:
there
are
functions
f
such
that
f
^
2
is
contractive
,
but
f
is
not
non

expansive
.
Consider
for
example
f
:
SPred
→
SPred
(
where
SPred
is
"downclosed sets of natural numbers"
).
Define
f
(
using
informative
excluded
middle
)
as
follows
:
f
(
N
)
=
N
(
where
N
is
the
set
of
all
natural
numbers
)
f
(
{
0
,
...,
n
}
)
=
{
0
,
...
n

1
}
if
n
is
even
(
so
n

1
is
at
least

1
,
in
which
case
we
return
the
empty
set
)
f
(
{
0
,
...,
n
}
)
=
{
0
,
...,
n
+
2
}
if
n
is
odd
In
other
words
,
if
we
consider
elements
of
SPred
as
ordinals
,
then
we
decreaste
odd
finite
ordinals
by
1
and
increase
even
finite
ordinals
by
2.
f
is
not
non

expansive
:
Consider
f
(
{
0
}
)
=
∅
and
f
(
{
0
,
1
}
)
=
f
(
{
0
,
1
,
2
,
3
}
).
The
arguments
are
clearly
0

equal
,
but
the
results
are
not
.
Now
consider
g
:=
f
^
2.
We
have
g
(
N
)
=
N
g
(
{
0
,
...,
n
}
)
=
{
0
,
...
n
+
1
}
if
n
is
even
g
(
{
0
,
...,
n
}
)
=
{
0
,
...,
n
+
4
}
if
n
is
odd
g
is
contractive
.
All
outputs
contain
0
,
so
they
are
all
0

equal
.
Now
consider
two
n

equal
inputs
.
We
have
to
show
that
the
outputs
are
n
+
1

equal
.
Either
they
both
do
not
contain
n
in
which
case
they
have
to
be
fully
equal
and
hence
so
are
the
results
.
Or
else
they
both
contain
n
,
so
the
results
will
both
contain
n
+
1
,
so
the
results
are
n
+
1

equal
.
*
)
Let
f_proper
:
Proper
((
≡
)
==>
(
≡
))
f
:=
ne_proper
f
.
Existing
Instance
f_proper
.
Local
Existing
Instance
f_proper
.
Lemma
fixpointK_unfold
:
fixpointK
k
f
≡
f
(
fixpointK
k
f
).
Proof
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment