Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
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
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
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
Sergey Bozhko
rtproofs
Commits
f1879960
Commit
f1879960
authored
Jul 18, 2019
by
Björn Brandenburg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add prefix_map transformation and two supporting lemmas
parent
bf4412d0
Changes
1
Hide whitespace changes
Inline
Sidebyside
Showing
1 changed file
with
104 additions
and
0 deletions
+104
0
restructuring/analysis/transform/prefix.v
restructuring/analysis/transform/prefix.v
+104
0
No files found.
restructuring/analysis/transform/prefix.v
0 → 100644
View file @
f1879960
From
mathcomp
Require
Import
ssrnat
ssrbool
fintype
.
From
rt
.
restructuring
.
behavior
Require
Import
schedule
facts
.
all
.
(** This file provides an operation that transforms a finite prefix of
a given schedule by applying a pointwise transformation to each
instant up to a given horizon. *)
Section
SchedulePrefixMap
.
(* For any type of jobs and... *)
Context
{
Job
:
JobType
}.
(* ... any given type of processor states ... *)
Context
{
PState
:
eqType
}.
Context
`
{
ProcessorState
Job
PState
}.
(* ... we define a procedure that applies a given function to every
point in a given finite prefix of the schedule.
The pointwise transformation f is given a schedule and the point
to transform, and must yield a transformed schedule that is used
in subsequent operations. *)
Fixpoint
prefix_map
(
sched
:
schedule
PState
)
(
f
:
schedule
PState
>
instant
>
schedule
PState
)
(
horizon
:
instant
)
:
=
match
horizon
with

0
=>
sched

S
t
=>
let
prefix
:
=
prefix_map
sched
f
t
in
f
prefix
t
end
.
(** We provide a utility lemma that establishes that, if the
pointwise transformation maintains a given property of the
original schedule, then the prefix_map does so as well. *)
Section
PropertyPreservation
.
(* Given any property of schedules... *)
Variable
P
:
schedule
PState
>
Prop
.
(* ...and a pointwise transformation [f],... *)
Variable
f
:
schedule
PState
>
instant
>
schedule
PState
.
(* ...if [f] maintains property [P],... *)
Hypothesis
H_f_maintains_P
:
forall
sched
t
,
P
sched
>
P
(
f
sched
t
).
(* ...then so does a prefix map of [f]. *)
Lemma
prefix_map_property_invariance
:
forall
sched
h
,
P
sched
>
P
(
prefix_map
sched
f
h
).
Proof
.
move
=>
sched
h
P_sched
.
induction
h
;
first
by
rewrite
/
prefix_map
.
rewrite
/
prefix_map
/
prefix_map
.
by
apply
:
H_f_maintains_P
.
Qed
.
End
PropertyPreservation
.
(** Next, we consider the case where the pointwise transformation
establishes a new property stepbystep. *)
Section
PointwiseProperty
.
(* Given any property of schedules [P],... *)
Variable
P
:
schedule
PState
>
Prop
.
(* ...any pointwise property [Q],... *)
Variable
Q
:
schedule
PState
>
instant
>
Prop
.
(* ...and a pointwise transformation [f],... *)
Variable
f
:
schedule
PState
>
instant
>
schedule
PState
.
(* ...if [f] maintains [P]... *)
Hypothesis
H_f_maintains_P
:
forall
sched
t_ref
,
P
sched
>
P
(
f
sched
t_ref
).
(* ...and establishes [Q] (provided that [P] holds)... *)
Hypothesis
H_f_grows_Q
:
forall
sched
t_ref
,
P
sched
>
(
forall
t'
,
t'
<
t_ref
>
Q
sched
t'
)
>
forall
t'
,
t'
<=
t_ref
>
Q
(
f
sched
t_ref
)
t'
.
(* ...then the prefixmap operation will "grow" [Q] up to the horizon. *)
Lemma
prefix_map_pointwise_property
:
forall
sched
horizon
,
P
sched
>
forall
t
,
t
<
horizon
>
Q
(
prefix_map
sched
f
horizon
)
t
.
Proof
.
move
=>
sched
h
P_holds
.
induction
h
as
[
h
Q_holds_before_h
]
;
first
by
rewrite
/
prefix_map
.
rewrite
/
prefix_map
/
prefix_map
=>
t
.
rewrite
ltnS
=>
LE_t_h
.
apply
H_f_grows_Q
=>
//.
by
apply
prefix_map_property_invariance
.
Qed
.
End
PointwiseProperty
.
End
SchedulePrefixMap
.
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