Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
Iris
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
George Pirlea
Iris
Commits
711bead3
Commit
711bead3
authored
Feb 23, 2017
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Note: If f^2 is contractive, that doesn't imply that f is non-expansive
parent
6456f1f9
Changes
1
Hide whitespace changes
Inline
Side-by-side
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