Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Tej Chajed
iris
Commits
1e519f29
Commit
1e519f29
authored
Mar 01, 2017
by
Ralf Jung
Browse files
prove dist_later_dist; define constant chain
parent
711bead3
Changes
1
Hide whitespace changes
Inline
Sidebyside
theories/algebra/ofe.v
View file @
1e519f29
...
...
@@ 130,6 +130,14 @@ Lemma compl_chain_map `{Cofe A, Cofe B} (f : A → B) c `(NonExpansive f) :
compl
(
chain_map
f
c
)
≡
f
(
compl
c
).
Proof
.
apply
equiv_dist
=>
n
.
by
rewrite
!
conv_compl
.
Qed
.
Program
Definition
chain_const
{
A
:
ofeT
}
(
a
:
A
)
:
chain
A
:
=
{
chain_car
n
:
=
a
}.
Next
Obligation
.
by
intros
A
a
n
i
_
.
Qed
.
Lemma
compl_chain_const
{
A
:
ofeT
}
`
{!
Cofe
A
}
(
a
:
A
)
:
compl
(
chain_const
a
)
≡
a
.
Proof
.
apply
equiv_dist
=>
n
.
by
rewrite
conv_compl
.
Qed
.
(** General properties *)
Section
ofe
.
Context
{
A
:
ofeT
}.
...
...
@@ 192,6 +200,17 @@ Proof. destruct n as [n]. by split. apply dist_equivalence. Qed.
Lemma
dist_dist_later
{
A
:
ofeT
}
n
(
x
y
:
A
)
:
dist
n
x
y
→
dist_later
n
x
y
.
Proof
.
intros
Heq
.
destruct
n
;
first
done
.
exact
:
dist_S
.
Qed
.
Lemma
dist_later_dist
{
A
:
ofeT
}
n
(
x
y
:
A
)
:
dist_later
(
S
n
)
x
y
→
dist
n
x
y
.
Proof
.
done
.
Qed
.
(* We don't actually need this lemma (as our tactics deal with this through
other means), but technically speaking, this is the reason why
precomposing a nonexpansive function to a contractive function
preserves contractivity. *)
Lemma
ne_dist_later
{
A
B
:
ofeT
}
(
f
:
A
→
B
)
:
NonExpansive
f
→
∀
n
,
Proper
(
dist_later
n
==>
dist_later
n
)
f
.
Proof
.
intros
Hf
[
n
]
;
last
exact
:
Hf
.
hnf
.
by
intros
.
Qed
.
Notation
Contractive
f
:
=
(
∀
n
,
Proper
(
dist_later
n
==>
dist
n
)
f
).
Instance
const_contractive
{
A
B
:
ofeT
}
(
x
:
A
)
:
Contractive
(@
const
A
B
x
).
...
...
@@ 221,7 +240,7 @@ Ltac f_contractive :=
end
;
try
match
goal
with


@
dist_later
?A
?n
?x
?y
=>
destruct
n
as
[
n
]
;
[
done

change
(@
dist
A
_
n
x
y
)]
destruct
n
as
[
n
]
;
[
exact
I

change
(@
dist
A
_
n
x
y
)]
end
;
try
reflexivity
.
...
...
Write
Preview
Supports
Markdown
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