Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Jeehoon Kang
iriscoq
Commits
c798ff4f
Commit
c798ff4f
authored
Mar 15, 2017
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make fractional lemmas use AsFractional
parent
010154e2
Changes
1
Hide whitespace changes
Inline
Sidebyside
Showing
1 changed file
with
14 additions
and
21 deletions
+14
21
theories/base_logic/lib/fractional.v
theories/base_logic/lib/fractional.v
+14
21
No files found.
theories/base_logic/lib/fractional.v
View file @
c798ff4f
...
...
@@ 22,21 +22,14 @@ Section fractional.
Implicit
Types
Φ
:
Qp
→
uPred
M
.
Implicit
Types
p
q
:
Qp
.
Lemma
fractional_split
`
{!
Fractional
Φ
}
p
q
:
Φ
(
p
+
q
)
%
Qp
⊢
Φ
p
∗
Φ
q
.
Proof
.
by
rewrite
fractional
.
Qed
.
Lemma
fractional_combine
`
{!
Fractional
Φ
}
p
q
:
Φ
p
∗
Φ
q
⊢
Φ
(
p
+
q
)
%
Qp
.
Proof
.
by
rewrite
fractional
.
Qed
.
Lemma
fractional_half_equiv
`
{!
Fractional
Φ
}
p
:
Φ
p
⊣⊢
Φ
(
p
/
2
)
%
Qp
∗
Φ
(
p
/
2
)
%
Qp
.
Proof
.
by
rewrite

(
fractional
(
p
/
2
)
(
p
/
2
))
Qp_div_2
.
Qed
.
Lemma
fractional_half
`
{!
Fractional
Φ
}
p
:
Φ
p
⊢
Φ
(
p
/
2
)
%
Qp
∗
Φ
(
p
/
2
)
%
Qp
.
Proof
.
by
rewrite
fractional_half_equiv
.
Qed
.
Lemma
half_fractional
`
{!
Fractional
Φ
}
p
q
:
Φ
(
p
/
2
)
%
Qp
∗
Φ
(
p
/
2
)
%
Qp
⊢
Φ
p
.
Proof
.
by
rewrite

fractional_half_equiv
.
Qed
.
Lemma
fractional_split
P
P1
P2
Φ
q1
q2
:
AsFractional
P
Φ
(
q1
+
q2
)
→
AsFractional
P1
Φ
q1
→
AsFractional
P2
Φ
q2
→
P
⊣⊢
P1
∗
P2
.
Proof
.
move
=>
[
>
>
]
[
>
_
]
[
>
_
].
done
.
Qed
.
Lemma
fractional_half
P
P12
Φ
q
:
AsFractional
P
Φ
q
→
AsFractional
P12
Φ
(
q
/
2
)
→
P
⊣⊢
P12
∗
P12
.
Proof
.
rewrite
{
1
}
(
Qp_div_2
q
)
=>
[
>>
][
>
_
].
done
.
Qed
.
(
**
Fractional
and
logical
connectives
*
)
Global
Instance
persistent_fractional
P
:
...
...
@@ 132,25 +125,25 @@ Section fractional.
AsFractional
P
Φ
(
q1
+
q2
)
→
AsFractional
P1
Φ
q1
→
AsFractional
P2
Φ
q2
→
IntoAnd
b
P
P1
P2
.
Proof
.
(
*
TODO
:
We
need
a
better
way
to
handle
this
boolean
here
.
(
*
TODO
:
We
need
a
better
way
to
handle
this
boolean
here
;
always
applying
mk_into_and_sep
(
which
only
works
after
introducing
all
assumptions
)
is
rather
annoying
.
Ideally
,
it
'
d
not
even
be
possible
to
make
the
mistake
that
was
originally
made
here
,
which
is
to
give
this
instance
for
"false"
only
,
thus
breaking
some
intro
patterns
.
*
)
intros
H1
H2
H3
.
apply
mk_into_and_sep
.
revert
H1
H2
H3
.
by
rewrite
/
IntoAnd
=>
[
>
>
]
[
>
_
]
[
>
_
].
intros
H1
H2
H3
.
apply
mk_into_and_sep
.
rewrite
[
P
]
fractional_split
//.
Qed
.
Global
Instance
into_and_fractional_half
b
P
Q
Φ
q
:
AsFractional
P
Φ
q
→
AsFractional
Q
Φ
(
q
/
2
)
→
IntoAnd
b
P
Q
Q

100.
Proof
.
intros
H1
H2
.
apply
mk_into_and_sep
.
revert
H1
H2
.
by
rewrite
/
IntoAnd
{
1
}
(
Qp_div_2
q
)
=>
[
>>
][
>
_
].
intros
H1
H2
.
apply
mk_into_and_sep
.
rewrite
[
P
]
fractional_half
//.
Qed
.
(
*
The
instance
[
frame_fractional
]
can
be
tried
at
all
the
nodes
of
the
proof
search
.
The
proof
search
then
fails
almost
always
on
[
AsFractional
R
Φ
r
],
but
the
slowdown
is
still
noticeable
.
For
that
reason
,
we
factorize
the
three
instances
that
could
ave
been
that
reason
,
we
factorize
the
three
instances
that
could
h
ave
been
defined
for
that
purpose
into
one
.
*
)
Inductive
FrameFractionalHyps
R
Φ
RES
:
Qp
→
Qp
→
Prop
:=

frame_fractional_hyps_l
Q
p
p
'
r
:
...
...
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