Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
PROSA - Formally Proven Schedulability Analysis
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RT-PROOFS
PROSA - Formally Proven Schedulability Analysis
Commits
4c867396
Commit
4c867396
authored
3 years ago
by
Kimaya Bedarkar
Committed by
Björn Brandenburg
3 years ago
Browse files
Options
Downloads
Patches
Plain Diff
two new utility lemmas on FIFO and job completion
parent
23975eed
No related branches found
No related tags found
1 merge request
!172
New lemmas in job_cost facts and fifo-basic-facts
Pipeline
#57858
passed with warnings
3 years ago
Changes
2
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
analysis/facts/behavior/completion.v
+17
-4
17 additions, 4 deletions
analysis/facts/behavior/completion.v
analysis/facts/priority/fifo.v
+21
-2
21 additions, 2 deletions
analysis/facts/priority/fifo.v
with
38 additions
and
6 deletions
analysis/facts/behavior/completion.v
+
17
−
4
View file @
4c867396
...
@@ -11,6 +11,7 @@ Section CompletionFacts.
...
@@ -11,6 +11,7 @@ Section CompletionFacts.
(** Consider any job type,...*)
(** Consider any job type,...*)
Context
{
Job
:
JobType
}
.
Context
{
Job
:
JobType
}
.
Context
`{
JobCost
Job
}
.
Context
`{
JobCost
Job
}
.
Context
`{
JobArrival
Job
}
.
(** ...any kind of processor model,... *)
(** ...any kind of processor model,... *)
Context
{
PState
:
Type
}
.
Context
{
PState
:
Type
}
.
...
@@ -79,12 +80,24 @@ Section CompletionFacts.
...
@@ -79,12 +80,24 @@ Section CompletionFacts.
exact
INCOMP
.
exact
INCOMP
.
Qed
.
Qed
.
(** Assume that completed jobs do not execute. *)
Hypothesis
H_completed_jobs
:
(** In the remainder of this section, we assume that schedules are
completed_jobs_dont_execute
sched
.
"well-formed": jobs are scheduled neither before their arrival
nor after their completion. *)
Hypothesis
H_jobs_must_arrive_to_execute
:
jobs_must_arrive_to_execute
sched
.
Hypothesis
H_completed_jobs
:
completed_jobs_dont_execute
sched
.
(** We observe that a job that is completed at the instant of its
arrival has a cost of zero. *)
Lemma
completed_on_arrival_implies_zero_cost
:
completed_by
sched
j
(
job_arrival
j
)
->
job_cost
j
=
0
.
Proof
.
by
rewrite
/
completed_by
no_service_before_arrival
//
leqn0
=>
/
eqP
.
Qed
.
(** Further, we note that if a job receives service at some time t, then its
(** Further, we note that if a job receives service at some time t, then its
remaining cost at this time is positive. *)
remaining cost at this time is positive. *)
Lemma
serviced_implies_positive_remaining_cost
:
Lemma
serviced_implies_positive_remaining_cost
:
forall
t
,
forall
t
,
service_at
sched
j
t
>
0
->
service_at
sched
j
t
>
0
->
...
...
This diff is collapsed.
Click to expand it.
analysis/facts/priority/fifo.v
+
21
−
2
View file @
4c867396
...
@@ -26,8 +26,8 @@ Section BasicLemmas.
...
@@ -26,8 +26,8 @@ Section BasicLemmas.
(** Suppose jobs have preemption points ... *)
(** Suppose jobs have preemption points ... *)
Context
`{
JobPreemptable
Job
}
.
Context
`{
JobPreemptable
Job
}
.
(** ...and that the
length of non-preemptive segments is bounde
d. *)
(** ...and that the
preemption model is vali
d. *)
Hypothesis
H_valid_
model_with_bounded_nonpreemptive_segments
:
Hypothesis
H_valid_
preemption_model
:
valid_preemption_model
arr_seq
sched
.
valid_preemption_model
arr_seq
sched
.
(** Assume that the schedule respects the FIFO scheduling policy whenever jobs
(** Assume that the schedule respects the FIFO scheduling policy whenever jobs
...
@@ -60,6 +60,25 @@ Section BasicLemmas.
...
@@ -60,6 +60,25 @@ Section BasicLemmas.
-
by
move
=>
?;
apply
/
andP
;
split
;
[
apply
ltnW
|
rewrite
-
ltnNge
//=
]
.
-
by
move
=>
?;
apply
/
andP
;
split
;
[
apply
ltnW
|
rewrite
-
ltnNge
//=
]
.
Qed
.
Qed
.
(** We prove that in a FIFO-compliant schedule, if a job [j] is
scheduled, then all jobs with higher priority than [j] have been
completed. *)
Lemma
scheduled_implies_higher_priority_completed
:
forall
j
t
,
scheduled_at
sched
j
t
->
forall
j_hp
,
arrives_in
arr_seq
j_hp
->
~~
hep_job
j
j_hp
->
completed_by
sched
j_hp
t
.
Proof
.
move
=>
j'
t
SCHED
j_hp
ARRjhp
HEP
.
have
EARLIER
:
job_arrival
j_hp
<
job_arrival
j'
by
rewrite
-
ltnNge
in
HEP
.
eapply
(
early_hep_job_is_scheduled
arr_seq
_
sched
_
_
_
_
j_hp
j'
_
_
_
t
)
.
Unshelve
.
all
:
eauto
with
basic_facts
.
move
=>
t'
;
apply
/
andP
;
split
=>
//.
by
apply
ltnW
.
Qed
.
(** The next lemma considers FIFO schedules in the context of tasks. *)
(** The next lemma considers FIFO schedules in the context of tasks. *)
Section
SequentialTasks
.
Section
SequentialTasks
.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment