Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
rtproofs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Felipe Cerqueira
rtproofs
Commits
6fd564da
Commit
6fd564da
authored
Sep 16, 2016
by
Felipe Cerqueira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new lemmas about service
parent
25ef280e
Changes
1
Hide whitespace changes
Inline
Sidebyside
Showing
1 changed file
with
126 additions
and
3 deletions
+126
3
model/uni/schedule.v
model/uni/schedule.v
+126
3
No files found.
model/uni/schedule.v
View file @
6fd564da
...
...
@@ 310,10 +310,133 @@ Module UniprocessorSchedule.
by
rewrite
SCHED1
in
SCHED2
;
inversion
SCHED2
.
Qed
.
End
OnlyOneJobScheduled
.
End
OnlyOneJobScheduled
.
Section
ServiceIsAStepFunction
.
(
*
First
,
we
show
that
the
service
received
by
any
job
j
is
a
step
function
.
*
)
Lemma
service_is_a_step_function
:
forall
j
,
is_step_function
(
service
sched
j
).
Proof
.
unfold
is_step_function
,
service
,
service_during
;
intros
j
t
.
rewrite
addn1
big_nat_recr
//=.
by
apply
leq_add
;
last
by
apply
leq_b1
.
Qed
.
(
*
Next
,
consider
any
job
j
at
any
time
t
...
*
)
Variable
j
:
JobIn
arr_seq
.
Variable
t
:
time
.
(
*
...
and
let
s0
be
any
value
less
than
the
service
received
by
job
j
by
time
t
.
*
)
Variable
s0
:
time
.
Hypothesis
H_less_than_s
:
s0
<
service
sched
j
t
.
(
*
Then
,
we
show
that
there
exists
an
earlier
time
t0
where
job
j
had
s0
units
of
service
.
*
)
Corollary
exists_intermediate_service
:
exists
t0
,
t0
<
t
/
\
service
sched
j
t0
=
s0
.
Proof
.
feed
(
exists_intermediate_point
(
service
sched
j
));
[
by
apply
service_is_a_step_function

intros
EX
].
feed
(
EX
0
t
);
first
by
done
.
feed
(
EX
s0
);
first
by
rewrite
/
service
/
service_during
big_geq
//.
by
move
:
EX
=>
/=
[
x_mid
EX
];
exists
x_mid
.
Qed
.
End
ServiceIsAStepFunction
.
Section
ServiceNotZero
.
(
*
Let
j
be
any
job
.
*
)
Variable
j
:
JobIn
arr_seq
.
(
*
Assume
that
the
service
received
by
j
during
[
t1
,
t2
)
is
not
zero
.
*
)
Variable
t1
t2
:
time
.
Hypothesis
H_service_not_zero
:
service_during
sched
j
t1
t2
>
0.
(
*
Then
,
there
must
be
a
time
t
where
job
j
is
scheduled
.
*
)
Lemma
cumulative_service_implies_scheduled
:
exists
t
,
t1
<=
t
<
t2
/
\
scheduled_at
sched
j
t
.
Proof
.
rename
H_service_not_zero
into
NONZERO
.
case
(
boolP
([
exists
t
:
'
I_t2
,
(
t
>=
t1
)
&&
(
service_at
sched
j
t
!=
0
)]))
=>
[
EX

ALL
].
{
move:
EX
=>
/
existsP
[
x
/
andP
[
GE
SERV
]].
rewrite
eqb0
negbK
in
SERV
.
exists
x
;
split
;
last
by
done
.
by
apply
/
andP
;
split
;
last
by
apply
ltn_ord
.
}
{
rewrite
negb_exists
in
ALL
;
move
:
ALL
=>
/
forallP
ALL
.
rewrite
/
service_during
big_nat_cond
in
NONZERO
.
rewrite
big1
?
ltn0
// in NONZERO.
intros
i
;
rewrite
andbT
;
move
=>
/
andP
[
GT
LT
].
specialize
(
ALL
(
Ordinal
LT
));
simpl
in
ALL
.
by
rewrite
GT
andTb
negbK
in
ALL
;
apply
/
eqP
.
}
Qed
.
End
ServiceNotZero
.
(
*
In
this
section
,
we
prove
some
lemmas
about
time
instants
with
same
service
.
*
)
Section
TimesWithSameService
.
(
*
Let
j
be
any
job
in
the
arrival
sequence
.
*
)
Variable
j
:
JobIn
arr_seq
.
(
*
Consider
any
time
instants
t1
and
t2
...
*
)
Variable
t1
t2
:
time
.
(
*
...
where
job
j
has
received
the
same
amount
of
service
.
*
)
Hypothesis
H_same_service
:
service
sched
j
t1
=
service
sched
j
t2
.
(
*
First
,
we
show
that
job
j
is
scheduled
at
some
point
t
<
t1
iff
j
is
scheduled
at
some
point
t
'
<
t2
.
*
)
Lemma
same_service_implies_scheduled_at_earlier_times
:
[
exists
t
:
'
I_t1
,
scheduled_at
sched
j
t
]
=
[
exists
t
'
:
'
I_t2
,
scheduled_at
sched
j
t
'
].
Proof
.
rename
H_same_service
into
SERV
.
move:
t1
t2
SERV
;
clear
t1
t2
;
move
=>
t
t
'
.
wlog:
t
t
'
/
(
t
<=
t
'
)
=>
[
EX
SAME

LE
SERV
].
by
case
/
orP
:
(
leq_total
t
t
'
);
ins
;
[

symmetry
];
apply
EX
.
apply
/
idP
/
idP
;
move
=>
/
existsP
[
t0
SCHED
].
{
have
LT0
:
t0
<
t
'
by
apply
:
(
leq_trans
_
LE
).
by
apply
/
existsP
;
exists
(
Ordinal
LT0
).
}
{
destruct
(
ltnP
t0
t
)
as
[
LT01

LE10
];
first
by
apply
/
existsP
;
exists
(
Ordinal
LT01
).
exfalso
;
move
:
SERV
=>
/
eqP
SERV
.
rewrite

[
_
==
_
]
negbK
in
SERV
.
move:
SERV
=>
/
negP
BUG
;
apply
BUG
;
clear
BUG
.
rewrite
neq_ltn
;
apply
/
orP
;
left
.
rewrite
/
service
/
service_during
.
rewrite
>
big_cat_nat
with
(
n
:=
t0
)
(
p
:=
t
'
);
[
simpl

by
done

by
apply
ltnW
].
rewrite

addn1
;
apply
leq_add
;
first
by
apply
extend_sum
.
destruct
t0
as
[
t0
LT
];
simpl
in
*
.
destruct
t
'
;
first
by
rewrite
ltn0
in
LT
.
rewrite
big_nat_recl
;
last
by
done
.
by
rewrite
/
service_at
SCHED
.
}
Qed
.
End
TimesWithSameService
.
End
Lemmas
.
End
Schedule
.
End
UniprocessorSchedule
.
\ No newline at end of file
End
UniprocessorSchedule
.
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