The certificate of job sequencing #
The syntax of the Σ₁ definition of DescriptiveComplexity.JobSequencing: the
existential block and the first-order kernel. What is guessed is
sched, the schedule – a binary relation the kernel forces to be a linear order, which on a finite universe is a permutation;late, the jobs that miss their deadline;ps sandcy s, the running totals and the carries of two walks: ats = truethe completion times, walking the jobs alongschedand adding execution times, and ats = falsethe penalties of the late jobs, walking them along the instance's own order.
Both walks run on the wide positions of DescriptiveComplexity.Numbers.Wide, since
a completion time is a sum of every execution time and a penalty total a sum
of every penalty; neither need fit where the instance writes. They are the
same five clauses read twice, so the clause family is a function of s, as in
DescriptiveComplexity.Problems.Partition.Membership.
What is new here, and what job sequencing needs that no earlier problem did,
is comparing two numbers rather than adding them: a job is late when its
deadline is smaller than its completion time, and the schedule is good when
the bound is not smaller than the penalty total. Both are written by the
highest differing position (DescriptiveComplexity.binNum_lt_iff), the deadline and
the bound being read on the wide positions through their lowest block
(DescriptiveComplexity.binNum_wide_bot).
The existential block #
The relation variables of the certificate: the schedule, the late jobs, and the running totals and carries of the two walks.
- sched : JIdx
The schedule.
- late : JIdx
The jobs that miss their deadline.
- ps
(s : Bool)
: JIdx
The running total of the walk
s. - cy
(s : Bool)
: JIdx
The carries of the walk
s.
Instances For
Dependency graph
Dependency graph
Equations
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.sched DescriptiveComplexity.JIdx.sched = isTrue ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.sched DescriptiveComplexity.JIdx.late = isFalse DescriptiveComplexity.instDecidableEqJIdx.decEq._proof_1
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.sched (DescriptiveComplexity.JIdx.ps s) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.sched (DescriptiveComplexity.JIdx.cy s) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.late DescriptiveComplexity.JIdx.sched = isFalse DescriptiveComplexity.instDecidableEqJIdx.decEq._proof_4
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.late DescriptiveComplexity.JIdx.late = isTrue ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.late (DescriptiveComplexity.JIdx.ps s) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq DescriptiveComplexity.JIdx.late (DescriptiveComplexity.JIdx.cy s) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.ps s) DescriptiveComplexity.JIdx.sched = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.ps s) DescriptiveComplexity.JIdx.late = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.ps a) (DescriptiveComplexity.JIdx.ps b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.ps s) (DescriptiveComplexity.JIdx.cy s_1) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.cy s) DescriptiveComplexity.JIdx.sched = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.cy s) DescriptiveComplexity.JIdx.late = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.cy s) (DescriptiveComplexity.JIdx.ps s_1) = isFalse ⋯
- DescriptiveComplexity.instDecidableEqJIdx.decEq (DescriptiveComplexity.JIdx.cy a) (DescriptiveComplexity.JIdx.cy b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Dependency graph
The single existential block of the Σ₁ definition of job sequencing: the
schedule (binary), the late jobs (unary), and, for each walk, the running
totals and the carries (ternary: a job and a wide position, itself a pair).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The symbol of the schedule relation variable.
Equations
Instances For
Dependency graph
The symbol of the late-jobs relation variable.
Equations
Instances For
Dependency graph
The symbol of the running total of the walk s.
Equations
Instances For
Dependency graph
The symbol of the carries of the walk s.
Equations
Instances For
Dependency graph
The vocabulary of the kernel.
Equations
Instances For
Dependency graph
The job symbol in the kernel's vocabulary.
Instances For
Dependency graph
The position symbol in the kernel's vocabulary.
Instances For
Dependency graph
The execution-time symbol in the kernel's vocabulary.
Instances For
Dependency graph
The deadline symbol in the kernel's vocabulary.
Instances For
Dependency graph
The penalty symbol in the kernel's vocabulary.
Instances For
Dependency graph
The bound symbol in the kernel's vocabulary.
Instances For
Dependency graph
The order symbol in the kernel's vocabulary.
Instances For
Dependency graph
The schedule symbol in the kernel's vocabulary.
Instances For
Dependency graph
The late-jobs symbol in the kernel's vocabulary.
Instances For
Dependency graph
The running-total symbol of the walk s in the kernel's vocabulary.
Equations
Instances For
Dependency graph
The carry symbol of the walk s in the kernel's vocabulary.
Equations
Instances For
Dependency graph
Formula builders #
x is a job, as a formula.
Equations
Instances For
Dependency graph
x is a bit position, as a formula.
Equations
Instances For
Dependency graph
The execution time of j has bit 1 at p, as a formula.
Equations
Instances For
Dependency graph
The deadline of j has bit 1 at p, as a formula.
Equations
Instances For
Dependency graph
The penalty of j has bit 1 at p, as a formula.
Equations
Instances For
Dependency graph
The bound has bit 1 at p, as a formula.
Equations
Instances For
Dependency graph
x ≤ y, as a formula.
Equations
Instances For
Dependency graph
x = y, as a formula.
Equations
Instances For
Dependency graph
x is scheduled at or before y, as a formula.
Equations
Instances For
Dependency graph
x is late, as a formula.
Equations
Instances For
Dependency graph
Bit (x, p) of the running total of the walk s at i, as a formula.
Equations
Instances For
Dependency graph
The carry at (x, p) of the step appending i to the walk s, as a
formula.
Equations
Instances For
Dependency graph
The order the walk s follows: the schedule for the completion times, the
instance's own order for the penalties.
Equations
Instances For
Dependency graph
The jobs the walk s adds up: all of them for the completion times, the
late ones for the penalties.
Equations
Instances For
Dependency graph
The number the walk s adds: the execution time, or the penalty.
Equations
Instances For
Dependency graph
x is a minimum of the order, as a formula.
Equations
Instances For
Dependency graph
x is a maximum of the order, as a formula.
Equations
Instances For
Dependency graph
The bit the job i contributes to the walk s at the wide position
(x, p): its number's bit, in the lowest block, if the walk adds it up.
Equations
- DescriptiveComplexity.jqAddF s i x p = DescriptiveComplexity.jqSelF s i ⊓ (DescriptiveComplexity.jqBotF x ⊓ DescriptiveComplexity.jqWtF s i p)
Instances For
Dependency graph
Bit (x, p) of the deadline of j, read on the wide positions.
Equations
Instances For
Dependency graph
Bit (x, p) of the bound, read on the wide positions.
Equations
Instances For
Dependency graph
The exclusive or of three formulas, as x ↔ (y ↔ z).
Equations
- DescriptiveComplexity.jqXor3F x y z = x.iff (y.iff z)
Instances For
Dependency graph
The majority of three formulas.
Equations
- DescriptiveComplexity.jqMaj3F x y z = x ⊓ y ⊔ (x ⊓ z ⊔ y ⊓ z)
Instances For
Dependency graph
i is the first job of the walk s, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
i is the last job of the walk s, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
j is the job right after i in the walk s, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
p is the lowest position, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
p is the highest position, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
q is the position right above p, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
y is the element right after x in the whole universe, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(x, p) is the lowest wide position, as a formula.
Equations
Instances For
Dependency graph
(x, p) is the highest wide position, as a formula.
Equations
Instances For
Dependency graph
(y, q) is the wide position right above (x, p), as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(x, p) ≤ (y, q) on the wide positions, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(y, q) ≠ (x, p) on the wide positions, as a formula.
Equations
Instances For
Dependency graph
The clauses #
Kernel clause: the order is reflexive.
Equations
Instances For
Dependency graph
Kernel clause: the order is transitive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: the order is antisymmetric.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: the order is total.
Equations
Instances For
Dependency graph
Kernel clause: the schedule is reflexive.
Equations
Instances For
Dependency graph
Kernel clause: the schedule is transitive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: the schedule is antisymmetric.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: the schedule is total.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: only jobs are late.
Equations
Instances For
Dependency graph
Kernel clause: at the first job of the walk s the running total is that
job's contribution.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: each step of the walk s adds a bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: each step of the walk s propagates its carry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: nothing is carried into the lowest wide position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: nothing is carried out of the highest wide position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The clauses of one walk.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: a job is late exactly when its deadline is smaller than its completion time, compared at the highest wide position where the two differ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Kernel clause: the penalty total the second walk ends on does not exceed the bound – there is no wide position carrying the total's bit above which the two agree.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The first-order kernel of the Σ₁ definition of job sequencing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Reading an assignment #
What the guessed relations mean, and what the numbers the kernel talks about
decode to. Everything the walks carry lives on the wide positions, so each
number of the instance appears there through its lowest block – named by
minimality, since that is all a formula can say, which is why the predicates
below quantify over Unit → A the way the kernel's ∀ produces.
A number of the instance, read on the wide positions: its own bits, in the lowest block.
Equations
- DescriptiveComplexity.JWide b u = ((∀ (y : Unit → A), DescriptiveComplexity.JSLe u.1 (y ())) ∧ b u.2)
Instances For
Dependency graph
Dependency graph
Read on the wide positions, a number still has its value.
Dependency graph
The bits the walk s adds up: the execution times, or the penalties.
Equations
Instances For
Dependency graph
The number the walk s adds up: the execution time, or the penalty.
Equations
Instances For
Dependency graph
The bit the walk s reads at a wide position.
Equations
Instances For
Dependency graph
The deadline of a job, read on the wide positions.
Equations
Instances For
Dependency graph
The bound, read on the wide positions.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The schedule, read off an assignment of the block.
Equations
Instances For
Dependency graph
The late jobs, read off an assignment of the block.
Equations
Instances For
Dependency graph
The running total of the walk s, read off an assignment of the block.
Equations
- DescriptiveComplexity.JPS ρ s i u = ρ (DescriptiveComplexity.JIdx.ps s) ![i, u.1, u.2]
Instances For
Dependency graph
The carries of the walk s, read off an assignment of the block.
Equations
- DescriptiveComplexity.JCy ρ s i u = ρ (DescriptiveComplexity.JIdx.cy s) ![i, u.1, u.2]
Instances For
Dependency graph
The order the walk s follows: the guessed schedule for the completion
times, the instance's own order for the penalties.
Equations
Instances For
Dependency graph
The jobs the walk s adds up: all of them for the completion times, the
late ones for the penalties.