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
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
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
Lasse Blaauwbroek
PROSA - Formally Proven Schedulability Analysis
Commits
ba46a30c
Commit
ba46a30c
authored
9 years ago
by
Felipe Cerqueira
Browse files
Options
Downloads
Patches
Plain Diff
Proofs broken - foldl
parent
97dc173f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
BertognaResponseTimeDefs.v
+14
-10
14 additions, 10 deletions
BertognaResponseTimeDefs.v
helper.v
+16
-0
16 additions, 0 deletions
helper.v
with
30 additions
and
10 deletions
BertognaResponseTimeDefs.v
+
14
−
10
View file @
ba46a30c
...
@@ -288,18 +288,27 @@ Module ResponseTimeAnalysis.
...
@@ -288,18 +288,27 @@ Module ResponseTimeAnalysis.
(* Assume that for any interfering task, a response-time
(* Assume that for any interfering task, a response-time
bound R_other is known. *)
bound R_other is known. *)
Hypothesis
H_response_time_of_interfering_tasks_is_known
:
Hypothesis
H_all_interfering_tasks_in_hp_bounds
:
[
seq
tsk_hp
<-
ts
|
interferes_with_tsk
tsk_hp
]
=
unzip1
hp_bounds
.
Lemma
exists_R
:
forall
hp_tsk
,
forall
hp_tsk
,
hp_tsk
\
in
ts
->
hp_tsk
\
in
ts
->
interferes_with_tsk
hp_tsk
->
interferes_with_tsk
hp_tsk
->
exists
R
,
exists
R
,
(
hp_tsk
,
R
)
\
in
hp_bounds
.
(
hp_tsk
,
R
)
\
in
hp_bounds
.
Proof
.
intros
hp_tsk
IN
INTERF
.
rewrite
-
[
hp_bounds
]
zip_unzip
;
apply
exists_unzip2
.
by
rewrite
zip_unzip
-
H_all_interfering_tasks_in_hp_bounds
mem_filter
;
apply
/
andP
.
Qed
.
Hypothesis
H_response_time_of_interfering_tasks_is_known2
:
Hypothesis
H_response_time_of_interfering_tasks_is_known2
:
forall
hp_tsk
R
,
forall
hp_tsk
R
,
(
hp_tsk
,
R
)
\
in
hp_bounds
->
(
hp_tsk
,
R
)
\
in
hp_bounds
->
is_response_time_bound_of_task
job_cost
job_task
hp_tsk
rate
sched
R
.
is_response_time_bound_of_task
job_cost
job_task
hp_tsk
rate
sched
R
.
(* Assume that the response-time bounds are larger than task costs. *)
(* Assume that the response-time bounds are larger than task costs. *)
Hypothesis
H_response_time_bounds_ge_cost
:
Hypothesis
H_response_time_bounds_ge_cost
:
forall
hp_tsk
R
,
forall
hp_tsk
R
,
...
@@ -354,8 +363,8 @@ Module ResponseTimeAnalysis.
...
@@ -354,8 +363,8 @@ Module ResponseTimeAnalysis.
H_valid_job_parameters
into
PARAMS
,
H_valid_job_parameters
into
PARAMS
,
H_valid_task_parameters
into
TASK_PARAMS
,
H_valid_task_parameters
into
TASK_PARAMS
,
H_restricted_deadlines
into
RESTR
,
H_restricted_deadlines
into
RESTR
,
H_response_time_of_interfering_tasks_is_known
into
ALLHP
,
H_response_time_of_interfering_tasks_is_known2
into
RESP
,
H_response_time_of_interfering_tasks_is_known2
into
RESP
,
H_all_interfering_tasks_in_hp_bounds
into
FST
,
H_interfering_tasks_miss_no_deadlines
into
NOMISS
,
H_interfering_tasks_miss_no_deadlines
into
NOMISS
,
H_rate_equals_one
into
RATE
,
H_rate_equals_one
into
RATE
,
H_global_scheduling_invariant
into
INVARIANT
,
H_global_scheduling_invariant
into
INVARIANT
,
...
@@ -403,7 +412,7 @@ Module ResponseTimeAnalysis.
...
@@ -403,7 +412,7 @@ Module ResponseTimeAnalysis.
{
{
move
=>
tsk_k
/
andP
[
INk
INTERk
]
R_k
HPk
.
move
=>
tsk_k
/
andP
[
INk
INTERk
]
R_k
HPk
.
unfold
x
,
workload_bound
;
rewrite
INk
INTERk
andbT
.
unfold
x
,
workload_bound
;
rewrite
INk
INTERk
andbT
.
exploit
(
ALLHP
tsk_k
);
[
by
ins
|
by
ins
|
intro
INhp
;
des
]
.
exploit
(
exists_R
tsk_k
);
[
by
ins
|
by
ins
|
intro
INhp
;
des
]
.
apply
leq_trans
with
(
n
:=
workload
job_task
rate
sched
tsk_k
apply
leq_trans
with
(
n
:=
workload
job_task
rate
sched
tsk_k
(
job_arrival
j
)
(
job_arrival
j
+
R
))
.
(
job_arrival
j
)
(
job_arrival
j
+
R
))
.
{
{
...
@@ -692,19 +701,14 @@ Module ResponseTimeAnalysis.
...
@@ -692,19 +701,14 @@ Module ResponseTimeAnalysis.
{
{
rewrite
(
eq_bigr
(
fun
i
=>
minn
(
x
(
fst
i
))
(
R
-
task_cost
tsk
+
1
)));
rewrite
(
eq_bigr
(
fun
i
=>
minn
(
x
(
fst
i
))
(
R
-
task_cost
tsk
+
1
)));
last
by
ins
;
destruct
i
.
last
by
ins
;
destruct
i
.
rewrite
(
bigID
(
fun
i
=>
(
fst
i
\
in
ts
)
&&
interferes_with_tsk
(
fst
i
)))
/=.
rewrite
-
[
\
sum_
(_
<-
_)
_]
addn0
;
apply
leq_add
;
last
by
ins
.
apply
leq_trans
with
(
n
:=
\
sum_
(
tsk_k
<-
ts
|
interferes_with_tsk
tsk_k
)
minn
(
x
tsk_k
)
(
R
-
task_cost
tsk
+
1
))
.
apply
leq_trans
with
(
n
:=
\
sum_
(
tsk_k
<-
ts
|
interferes_with_tsk
tsk_k
)
minn
(
x
tsk_k
)
(
R
-
task_cost
tsk
+
1
))
.
{
{
rewrite
[
\
sum_
(_
<-
_
|
interferes_with_tsk
_)_]
big_mkcond
eq_leq
//.
rewrite
[
\
sum_
(_
<-
_
|
interferes_with_tsk
_)_]
big_mkcond
eq_leq
//.
apply
eq_bigr
;
intros
i
_;
unfold
x
.
apply
eq_bigr
;
intros
i
_;
unfold
x
.
by
destruct
(
interferes_with_tsk
i
);
rewrite
?andbT
?andbF
?min0n
.
by
destruct
(
interferes_with_tsk
i
);
rewrite
?andbT
?andbF
?min0n
.
}
}
have
MAP
:=
big_map
(
fun
x
=>
fst
x
)
(
fun
i
=>
(
i
\
in
ts
)
&&
interferes_with_tsk
i
)
(
fun
i
=>
minn
(
x
i
)
(
R
-
task_cost
tsk
+
1
))
.
have
MAP
:=
big_map
(
fun
x
=>
fst
x
)
(
fun
i
=>
true
)
(
fun
i
=>
minn
(
x
i
)
(
R
-
task_cost
tsk
+
1
))
.
rewrite
-
MAP
-
big_filter
-
[
\
sum_
(_
<-
[
seq
fst
x0
|
x0
<-
_]
|
_)_]
big_filter
;
clear
MAP
.
by
unfold
unzip1
in
*
;
rewrite
-
MAP
-
FST
-
big_filter
.
apply
leq_sum_subseq
;
rewrite
subseq_filter
;
apply
/
andP
;
split
;
first
by
apply
/
allP
;
intro
i
;
rewrite
mem_filter
andbC
.
admit
.
}
}
apply
ltn_div_trunc
with
(
d
:=
num_cpus
);
apply
ltn_div_trunc
with
(
d
:=
num_cpus
);
first
by
apply
H_at_least_one_cpu
.
first
by
apply
H_at_least_one_cpu
.
...
...
This diff is collapsed.
Click to expand it.
helper.v
+
16
−
0
View file @
ba46a30c
...
@@ -582,6 +582,22 @@ Proof.
...
@@ -582,6 +582,22 @@ Proof.
by
apply
SORT
;
rewrite
mem_rcons
in_cons
;
apply
/
orP
;
left
.
by
apply
SORT
;
rewrite
mem_rcons
in_cons
;
apply
/
orP
;
left
.
Qed
.
Qed
.
Lemma
exists_unzip2
:
forall
{
T1
T2
:
eqType
}
(
l
:
seq
(
T1
*
T2
))
x
(
IN
:
x
\
in
(
unzip1
l
)),
exists
y
,
(
x
,
y
)
\
in
l
.
Proof
.
intros
T1
T2
l
;
induction
l
as
[|
(
x'
,
y'
)
l'
];
first
by
ins
.
{
intros
x
IN
;
simpl
in
IN
.
rewrite
in_cons
in
IN
;
move
:
IN
=>
/
orP
[
/
eqP
HEAD
|
TAIL
];
first
by
subst
x'
;
exists
y'
;
rewrite
in_cons
;
apply
/
orP
;
left
.
{
specialize
(
IHl'
x
TAIL
);
des
;
exists
y
.
by
rewrite
in_cons
;
apply
/
orP
;
right
.
}
}
Qed
.
(*Program Definition fun_ord_to_nat2 {n} {T} (x0: T) (f: 'I_n -> T)
(*Program Definition fun_ord_to_nat2 {n} {T} (x0: T) (f: 'I_n -> T)
(x : nat) : T :=
(x : nat) : T :=
match (x < n) with
match (x < n) with
...
...
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