Skip to content
GitLab
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
65b9ce9f
Commit
65b9ce9f
authored
Jan 03, 2017
by
Robbert Krebbers
Browse files
Document list_remove and list_remove_list.
parent
0a35ba52
Changes
1
Hide whitespace changes
Inline
Side-by-side
theories/prelude/list.v
View file @
65b9ce9f
...
...
@@ -285,18 +285,20 @@ Inductive contains {A} : relation (list A) :=
Infix
"`contains`"
:
=
contains
(
at
level
70
)
:
C_scope
.
Hint
Extern
0
(
_
`
contains
`
_
)
=>
reflexivity
.
Section
contains_dec_help
.
Context
`
{
EqDecision
A
}.
Fixpoint
list_remove
(
x
:
A
)
(
l
:
list
A
)
:
option
(
list
A
)
:
=
match
l
with
|
[]
=>
None
|
y
::
l
=>
if
decide
(
x
=
y
)
then
Some
l
else
(
y
::
)
<$>
list_remove
x
l
end
.
Fixpoint
list_remove_list
(
k
:
list
A
)
(
l
:
list
A
)
:
option
(
list
A
)
:
=
match
k
with
|
[]
=>
Some
l
|
x
::
k
=>
list_remove
x
l
≫
=
list_remove_list
k
end
.
End
contains_dec_help
.
(** Removes [x] from the list [l]. The function returns a [Some] when the
+removal succeeds and [None] when [x] is not in [l]. *)
Fixpoint
list_remove
`
{
EqDecision
A
}
(
x
:
A
)
(
l
:
list
A
)
:
option
(
list
A
)
:
=
match
l
with
|
[]
=>
None
|
y
::
l
=>
if
decide
(
x
=
y
)
then
Some
l
else
(
y
::
)
<$>
list_remove
x
l
end
.
(** Removes all elements in the list [k] from the list [l]. The function returns
a [Some] when the removal succeeds and [None] some element of [k] is not in [l]. *)
Fixpoint
list_remove_list
`
{
EqDecision
A
}
(
k
:
list
A
)
(
l
:
list
A
)
:
option
(
list
A
)
:
=
match
k
with
|
[]
=>
Some
l
|
x
::
k
=>
list_remove
x
l
≫
=
list_remove_list
k
end
.
Inductive
Forall3
{
A
B
C
}
(
P
:
A
→
B
→
C
→
Prop
)
:
list
A
→
list
B
→
list
C
→
Prop
:
=
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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