To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
Queues operated by a processor-sharing mode have important applications in many modern systems. However, because of the simultaneous sharing of service capacity by all customers, the distribution function and moments of the sojourn time are difficult to derive, even with a given initial condition. In addition, when a limit on the number of customers in the system is enforced to ensure the quality of service, the sojourn time becomes more complicated. In recent literature, the distribution function is obtained via the Laplace–Stieltjes transform. In this paper, we take a pure algebraic approach to derive the moments of the sojourn time. We obtain an iterative formula and use it to investigate properties of the conditional sojourn time. The approach is simple and intuitive, and applies to queues with multiple class customers as well.
In response to the paper by Cotnoir and Bacon published in RSL 2/2012, we would like to add some remarks regarding supplementation principles. It is known that in a classical mereology, the Strong Supplementation Principle (SSP) together with antisymmetry enforces the Weak Supplementation Principle (WSP). Instead, in the nonwellfounded mereology, the failure of extensionality causes the failure of antisymmetry (Cotnoir, 2010), hence the investigated model is also nonantisymmetric. Cotnoir supposes that the failure of antisymmetry implies the failure of (WSP) when (PP1) is applied, however gives no explicit argument, which we would like to supply in this paper. Additionally, when (PP2) is applied, (SSP) implies (WSP), hence the failure of antisymmetry does not necessarily imply the failure of (WSP).
We prove the undecidability of Core XPath 1.0 (CXP) [G. Gottlob and C. Koch,inProc. of 17th Ann. IEEE Symp. on Logic in Computer Science,LICS ’02(Copenhagen,July 2002). IEEE CS Press (2002) 189–202.] extended with anInflationary Fixed Point (IFP) operator. More specifically,we provethat the satisfiability problem of this language is undecidable. In fact,the fragment ofCXP+IFP containing only the self and descendant axes is already undecidable.
We consider the problem of finding the optimal routing of a single vehicle that delivers K different products to N customers that are served according to a particular order. It is assumed that the demands of the customers for each product are discrete random variables, and the total demand of each customer for all products cannot exceed the vehicle capacity. The joint probability mass function of the demands of each customer is known. It is assumed that all products are stored together in the vehicle's single compartment. The policy that serves all customers with the minimum total expected cost is found by implementing a suitable dynamic programming algorithm. We prove that this policy has a specific threshold-type structure. Furthermore, we study a corresponding infinite-time horizon problem in which the service of the customers is not completed when the last customer has been serviced but it continues periodically with the same customer order. The demands of each customer for the products have the same distributions at different periods. The discounted cost optimal policy and the average-cost optimal policy have the same structure as the optimal policy in the finite-horizon problem. Numerical results are given that illustrate the structural results.
We establish several such new inequalities that improve the accuracy of bounding the probability content of bivariate normal distribution function by the Slepian's inequalities. Apart from the improvement of the accuracy, their easy–to–compute form is another attractive feature of these new inequalities which fact is of considerable interest for both theoretical and practical applications. A novel application possibility is mentioned, too.
Let F be a bathtub-shaped (BT) hazard rate distribution function. It has been shown that the hazard rate function of the order statistics may be BT, increasing, etc. Then, we have carried out a graphical study for some useful lifetime models.
Moreover, we are interested to compare the time that maximizes the mean residual life (MRL) function of F with the one related to a general weighted model in terms of their locations. Also, the times maximizing the conditional reliability proposed by Mi [13] of F have been compared with the corresponding times of a general weighted model. As special cases, we consider order statistics and the proportional hazard rate model.
The inductive and the coinductive types are two important forms of recursive type. Inductive types correspond to least, or initial, solutions of certain type isomorphism equations, and coinductive types correspond to their greatest, or final, solutions. Intuitively, the elements of an inductive type are those that may be obtained by a finite composition of its introductory forms. Consequently, if we specify the behavior of a function on each of the introductory forms of an inductive type, then its behavior is determined for all values of that type. Such a function is called a recursor, or catamorphism. Dually, the elements of a coinductive type are those that behave properly in response to a finite composition of its elimination forms. Consequently, if we specify the behavior of an element on each elimination form, then we have fully specified that element as a value of that type. Such an element is called an generator, or anamorphism.
Motivating Examples
The most important example of an inductive type is the type of natural numbers as formalized in Chapter 9. The type nat is defined to be the least type containing z and closed under s(−). The minimality condition is witnessed by the existence of the recursor, iter e {z ⇒ e0 ∣ s(x) ⇒ e1}, which transforms a natural number into a value of type τ, given its value for zero, and a transformation from its value on a number to its value on the successor of that number.
The dynamics of a language is a description of how programs are to be executed. The most important way to define the dynamics of a language is by the method of structural dynamics, which defines a transition system that inductively specifies the step-by-step process of executing a program. Another method for presenting dynamics, called contextual dynamics, is a variation of structural dynamics in which the transition rules are specified in a slightly different manner. An equational dynamics presents the dynamics of a language equationally by a collection of rules for deducing when one program is definitionally equal to another.
Transition Systems
A transition system is specified by the following four forms of judgment:
s state, asserting that s is a state of the transition system,
s final, where s state, asserting that s is a final state,
s initial, where s state, asserting that s is an initial state,
s ↦ s′, where s state and s′ state, asserting that state s may transition to state s′.
In practice we always arrange things so that no transition is possible from a final state: If s final, then there is no s′ state such that s ↦ s′. A state from which no transition is possible is sometimes said to be stuck. Whereas all final states are, by convention, stuck, there may be stuck states in a transition system that are not final.
Many programs can be seen as instances of a general pattern applied to a particular situation. Very often the pattern is determined by the types of the data involved. For example, in Chapter 9 the pattern of computing by recursion over a natural number is isolated as the defining characteristic of the type of natural numbers. This concept will itself emerge as an instance of the concept of type-generic, or just generic, programming.
Suppose that we have a function f of type ρ → ρ′ that transforms values of type ρ into values of type ρ′. For example, f might be the doubling function on natural numbers. We wish to extend f to a transformation from type [ρ/t]τ to type [ρ′/t]τ by applying f to various spots in the input where a value of type τ occurs to obtain a value of type ρ′, leaving the rest of the data structure alone. For example, τ might be bool × ρ, in which case f could be extended to a function of type bool × ρ → bool × ρ′ that sends the pairs ⟨a, b⟩ to the pair ⟨a, f(b)⟩.
This example glosses over a significant problem of ambiguity of the extension. Given a function f of type ρ → ρ′, it is not obvious in general how to extend it to a function mapping [ρ/t]τ to [ρ′/t]τ.
Parallel computation seeks to reduce the running times of programs by allowing many computations to be carried out simultaneously. For example, if we wish to add two numbers, each given by a complex computation, we may consider evaluating the addends simultaneously, then computing their sum. The ability to exploit parallelism is limited by the dependencies among parts of a program. Obviously, if one computation depends on the result of another, then we have no choice but to execute them sequentially so that we may propagate the result of the first to the second. Consequently, the fewer dependencies among subcomputations, the greater the opportunities for parallelism. This argues for functional models of computation, because the possibility of mutation of shared assignables imposes sequentialization constraints on imperative code.
In this chapter we discuss nested parallelism in which we nest parallel computations within one another in a hierarchical manner. Nested parallelism is sometimes called fork-join parallelism to emphasize the hierarchical structure arising from forking two (or more) parallel computations, then joining these computations to combine their results before proceeding. We consider two forms of dynamics for nested parallelism. The first is a structural dynamics in which a single transition on a compound expression may involve multiple transitions on its constituent expressions. The second is a cost dynamics (introduced in Chapter 7) that focuses attention on the sequential and parallel complexity (also known as the work and depth) of a parallel program by associating a series-parallel graph with each computation.
An interface is a contract that specifies the rights of a client and the responsibilities of an implementor. Being a specification of behavior, an interface is a type. In principle any type may serve as an interface, but in practice it is usual to structure code into modules consisting of separable and reusable components. An interface specifies the behavior of a module expected by a client and imposed on the implementor. It is the fulcrum on which is balanced the tension between separability and integration. As a rule, a module should have a well-defined behavior that can be understood separately, but it is equally important that it be easy to combine modules to form an integrated whole.
A fundamental question is, what is the type of a module? That is, what form should an interface take? One long-standing idea is for an interface to be a labeled tuple of functions and procedures with specified types. The types of the fields of the tuple are traditionally called function headers, because they summarize the call and return types of each function. Using interfaces of this form is called procedural abstraction, because it limits the dependencies between modules to a specified set of procedures. We may think of the fields of the tuple as being the instruction set of an abstract machine. The client makes use of these instructions in its code, and the implementor agrees to provide their implementations.
We saw in Chapter 17 that an untyped language may be viewed as a unityped language in which the so-called untyped terms are terms of a distinguished recursive type. In the case of the untyped λ-calculus this recursive type has a particularly simple form, expressing that every term is isomorphic to a function. Consequently, no run-time errors can occur that are due to the misuse of a value—the only elimination form is application, and its first argument can only be a function. This property breaks down once more than one class of value is permitted into the language. For example, if we add natural numbers as a primitive concept to the untyped λ-calculus (rather than defining them via Church encodings), then it is possible to incur a run-time error arising from attempting to apply a number to an argument or to add a function to a number. One school of thought in language design is to turn this vice into a virtue by embracing a model of computation that has multiple classes of value of a single type. Such languages are said to be dynamically typed, in purported opposition to statically typed languages. But the supposed opposition is illusory: Just as the so-called untyped λ-calculus turns out to be unityped, so dynamic languages turn out to be but restricted forms of static language. This remark is so important it bears repeating: Every dynamic language is inherently a static language in which we confine ourselves to a (needlessly) restricted type discipline to ensure safety.