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
Marianna Rapoport
iris-coq
Commits
546ed060
Commit
546ed060
authored
Nov 23, 2016
by
Robbert Krebbers
Browse files
Make some arguments explicit that could not be infered.
parent
b81fb420
Changes
2
Hide whitespace changes
Inline
Side-by-side
prelude/fin_collections.v
View file @
546ed060
...
...
@@ -254,21 +254,21 @@ Proof. rewrite Forall_forall. by setoid_rewrite elem_of_elements. Qed.
Lemma
set_Exists_elements
P
X
:
set_Exists
P
X
↔
Exists
P
(
elements
X
).
Proof
.
rewrite
Exists_exists
.
by
setoid_rewrite
elem_of_elements
.
Qed
.
Lemma
set_Forall_Exists_dec
{
P
Q
:
A
→
Prop
}
(
dec
:
∀
x
,
{
P
x
}
+
{
Q
x
})
X
:
Lemma
set_Forall_Exists_dec
(
P
Q
:
A
→
Prop
)
(
dec
:
∀
x
,
{
P
x
}
+
{
Q
x
})
X
:
{
set_Forall
P
X
}
+
{
set_Exists
Q
X
}.
Proof
.
refine
(
cast_if
(
Forall_Exists_dec
dec
(
elements
X
)))
;
refine
(
cast_if
(
Forall_Exists_dec
P
Q
dec
(
elements
X
)))
;
[
by
apply
set_Forall_elements
|
by
apply
set_Exists_elements
].
Defined
.
Lemma
not_set_Forall_Exists
P
`
{
dec
:
∀
x
,
Decision
(
P
x
)}
X
:
¬
set_Forall
P
X
→
set_Exists
(
not
∘
P
)
X
.
Proof
.
intro
.
by
destruct
(
set_Forall_Exists_dec
dec
X
).
Qed
.
Proof
.
intro
.
by
destruct
(
set_Forall_Exists_dec
P
(
not
∘
P
)
dec
X
).
Qed
.
Lemma
not_set_Exists_Forall
P
`
{
dec
:
∀
x
,
Decision
(
P
x
)}
X
:
¬
set_Exists
P
X
→
set_Forall
(
not
∘
P
)
X
.
Proof
.
by
destruct
(
@
set_Forall_Exists_dec
(
not
∘
P
)
_
(
λ
x
,
swap_if
(
decide
(
P
x
)))
X
).
by
destruct
(
set_Forall_Exists_dec
(
not
∘
P
)
P
(
λ
x
,
swap_if
(
decide
(
P
x
)))
X
).
Qed
.
Global
Instance
set_Forall_dec
(
P
:
A
→
Prop
)
`
{
∀
x
,
Decision
(
P
x
)}
X
:
...
...
prelude/list.v
View file @
546ed060
...
...
@@ -2051,7 +2051,7 @@ Lemma list_subseteq_nil l : [] ⊆ l.
Proof
.
intros
x
.
by
rewrite
elem_of_nil
.
Qed
.
(** ** Properties of the [Forall] and [Exists] predicate *)
Lemma
Forall_Exists_dec
{
P
Q
:
A
→
Prop
}
(
dec
:
∀
x
,
{
P
x
}
+
{
Q
x
})
:
Lemma
Forall_Exists_dec
(
P
Q
:
A
→
Prop
)
(
dec
:
∀
x
,
{
P
x
}
+
{
Q
x
})
:
∀
l
,
{
Forall
P
l
}
+
{
Exists
Q
l
}.
Proof
.
refine
(
...
...
@@ -2232,21 +2232,19 @@ Section Forall_Exists.
Context
{
dec
:
∀
x
,
Decision
(
P
x
)}.
Lemma
not_Forall_Exists
l
:
¬
Forall
P
l
→
Exists
(
not
∘
P
)
l
.
Proof
.
intro
.
destruct
(
Forall_Exists_dec
dec
l
)
;
intuition
.
Qed
.
Proof
.
intro
.
by
destruct
(
Forall_Exists_dec
P
(
not
∘
P
)
dec
l
)
.
Qed
.
Lemma
not_Exists_Forall
l
:
¬
Exists
P
l
→
Forall
(
not
∘
P
)
l
.
Proof
.
(* TODO: Coq 8.6 needs type annotation here, Coq 8.5 did not.
Should we report this? *)
by
destruct
(@
Forall_Exists_dec
(
not
∘
P
)
_
by
destruct
(
Forall_Exists_dec
(
not
∘
P
)
P
(
λ
x
:
A
,
swap_if
(
decide
(
P
x
)))
l
).
Qed
.
Global
Instance
Forall_dec
l
:
Decision
(
Forall
P
l
)
:
=
match
Forall_Exists_dec
dec
l
with
match
Forall_Exists_dec
P
(
not
∘
P
)
dec
l
with
|
left
H
=>
left
H
|
right
H
=>
right
(
Exists_not_Forall
_
H
)
end
.
Global
Instance
Exists_dec
l
:
Decision
(
Exists
P
l
)
:
=
match
Forall_Exists_dec
(
λ
x
,
swap_if
(
decide
(
P
x
)))
l
with
match
Forall_Exists_dec
(
not
∘
P
)
P
(
λ
x
,
swap_if
(
decide
(
P
x
)))
l
with
|
left
H
=>
right
(
Forall_not_Exists
_
H
)
|
right
H
=>
left
H
end
.
...
...
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