text:
User talk:Dr.Nabin

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You can sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page.

Good luck! -- SB_Johnny | talk 16:13, 30 November 2006 (UTC)

title: User talk:Dr.Nabin


text:
Chess Opening Theory/1. e4/1...Nc6/2. Nf3

= Nimzowitsch Defence = At this point, Black can transpose into Open Game with 2...e5. He may also stay in sharp theory with /2...d6/.

Theory table
'1. e4 Nc6 2. Nf3'

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Horticulture/Lettuce

Lettuce is a temperate annual or biennial, grown as a leaf vegetable. In Western countries, it is typically eaten cold and raw, but in other places such as China, lettuce is typically eaten cooked and the uses of the stem are as important as use of the leaf.

Description
The lettuce plant develops as a rosette, but when it blooms, the stem lengthens and branches, and it produces many flower heads that look like those of dandelions, but smaller. This is called bolting. When grown to eat, lettuce is harvested before it bolts.

Growing Conditions
Lettuces are generally considered a cool season crop, but can be grown to a young stage in summer if given some protection from the sun. They can also be grown in cold or hot frames through the winter in most temperate climates.

Lettuces do best in a rich, fast-draining soil. Adequate and consistent watering is required for good growth and taste.

Seeds can be sown in situ or in flats throughout the year, but seeds will not germinate at temperatures above 25C. Plants can be started in a cool area for summer plantings, but will require some shelter from sun and heat in warm climates. When starting in flats, sow 2 seeds in each cell, using small cells if planting out, large cells if growing in the flats for a bench crop. Thin to one plant per cell once germination takes place, planting out as soon as the roots reach the wall.

Varieties
There are six commonly recognised cultivar groups of lettuce which are ordered here by head formation and leaf structure. There are hundreds of cultivars of lettuce selected for leaf shape and colour, as well as extended field and shelf life, within each of these cultivar groups:
 * Butterhead, also called Boston or Bibb, forms loose heads and has a buttery texture. Butterhead cultivars are most popular in Europe.
 * Chinese lettuce types generally have long, sword-shaped, non-head-forming leaves, with a bitter and robust flavour unlike Western types, appropriate for use in stir-fried dishes and stews. Chinese lettuce cultivars are divided into "stem-use" types (called celtuce in English), and "leaf-use" types such as youmaicai or shengcai (生菜).
 * Crisphead, also called Iceberg, forms tight, dense heads that resemble cabbage. They are generally the mildest of the lettuces, valued more for their crunchy texture than for flavour. Cultivars of iceberg lettuce are the most familiar lettuces in the USA.
 * Looseleaf has tender, delicate, and mildly flavoured leaves.
 * Romaine, also called Cos, is a head-forming type with elongated leaves.
 * Summer Crisp, also called Batavian, forms moderately dense heads with a crunchy texture; this type is intermediate between iceberg and loose leaf types.

Some lettuces (especially iceberg) have been specifically bred to remove the bitterness from their leaves. These lettuces have a high water content with very little nutrient value. The more bitter lettuces and the ones with pigmented leaves contain antioxidants.

Uses
The wild predecessor of our modern lettuce, ../Lactuca serriola/, can still be seen all over Europe and the more temperate parts of Asia. It is likely that it originated on the Mediterranean rim on rocky wasteland or woodland clearings. This ancient wild relative of the modern lettuce contains lactucarium, a narcotic similar to opium. The Ancient Romans took advantage of this property by eating lettuce at the end of a meal to induce sleep.

In earlier times the Egyptians held a similar view of the lettuce. However, as well as a hypnotic or an aid to sleep, the plant was also linked with male virility. It is thought these Egyptian plants were closely linked with the modern day Cos lettuce and could have originated on the Turkish coast opposite the island of Kos.

It is certain that these ancient civilizations saw the plant as both an appetite stimulant and an aid to sleep. In ancient Greece this led to confusion whether to eat the plant at the beginning or the end of a meal. The physician Galen, from Pergamon, would eat the plant to allow restful sleep and allow him to study without 'mental churnings' the following day. Somewhat contrary to this, a century earlier, Rufus of Ephesos declared the opposite; claiming lettuce 'fogged the memory and prevented clear thought'.

Maintenance
Lettuces can be planted out as soon as the soil is workable. If sowing directly into the garden, make sure the bed is as weed-free as possible. If there are weed issues, it may be better to plant first in flats, then transplant to the field once the plants are large enough to be easily distinguished from weed seedlings.

Lettuces may "bolt" (send up a flower stalk) in hot weather. The foliage becomes bitter when the plant bolts.

Monitor for slugs, keep thinned to ensure good air circulation.

Propagation
Lettuces are propagated by seed only. Lettuces are mostly self-fertile (except for F1 hybrids, etc.), and often come true from seed.

Harvest
Harvest any time before bolting. Harvested leaves and heads should be chilled by dipping them in ice water, then kept refrigerated until ready to use.

Fungal Diseases

 * Damping off
 * Bottom Rot (Rhizoctinia)
 * Leaf drop (Sclerotinia)

Slugs and Snails
Slugs and snails can be a serious problem.

Arthropod Pests

 * Aphids
 * Thrips
 * Cutworms
 * Flea Beetles
 * Aster leafhopper

Vertebrate Pests

 * Rabbits
 * Deer

Environmental Issues

 * Tipburn: A browning of the leaf tips may occur during periods of high temperatures if the leaves are wet and then allowed to dry too rapidly. Growing in a shaded area or under shadecloth during the hot season can help, as can misting.
 * Bolting: As the days get long and temperatures rise, lettuces will "bolt", sending up a tall stalk on which flowers and seeds will be produced. The greens become bitter once the plant begins to bolt, so the plant should either be pulled out or simply allowed to go to seed.

title: Horticulture/Lettuce


text:
A-level Mathematics/OCR/FP1/Appendix A: Formulae

Formulae
By the end of this module you will be expected to have learnt the following formulae: Formulae marked † are in the standard OCR Maths Data book (as of 2010)

Series

 * $$ \sum_{r=1}^n r = \frac{1}{2} n(n+1) $$
 * $$\sum_{r=1}^n r^2 = \frac{1}{6}n\left(2n+1\right)\left(n+1\right)$$ †
 * $$\sum_{r=1}^n r^3 = \frac{1}{4}n^2\left(n+1\right)^2$$ †

Roots of Polynomials

 * Let $$\alpha\,$$ and $$\beta\,$$ be the roots of $$ax^2+bx+c=0$$. Then, $$\alpha + \beta = - \frac{b}{a},\quad \alpha\beta = \frac{c}{a}$$
 * Let $$\alpha, \beta\,$$ and $$\gamma\,$$ be the roots of $$ax^3+bx^2+cx+d=0$$. Then, $$\sum\alpha = - \frac{b}{a},\quad \sum\alpha\beta = \frac{c}{a},\quad \alpha\beta\gamma = -\frac{d}{a} $$

Where: $$\sum\alpha = \alpha + \beta + \gamma$$

And: $$\sum\alpha\beta = \alpha\beta + \alpha\gamma + \beta\gamma$$

Matrices

 * $$\mathbf{(AB)^{-1}}=\mathbf{B^{-1}A^{-1}}$$


text:
Talk:Control Systems/Stability

I would say instability is also non-infinite, as in simple undesirable oscillationMstachowsky (discuss • contribs) 13:49, 10 April 2014 (UTC)

Some points: In response to the comment above, instability is a test that is either/or. A system can't be "a little bit unstable", and therefore the presence (or absence) of oscillations is not indicative of instability. The confusion comes because you are mixing up a signal with a system. *systems* are unstable, while *signals* do not have a criterion by which to judge stability. Consider the following:

let H(s) = 1/s. This system is unstable. To prove this, we just need to give it a unit step input. Although the input is bounded, the output is unbounded, thus there is at least one bounded input for which the output is unbounded, and we violate the rule of BIBO stability right off the bat. However, if you consider the system's response to a "boxcar" input (which is zero everywhere but some finite time interval, during which it is constant), the system output will not oscillate and will not go to infinity. All that this means is that there is *some* bounded input for which the output is bounded, but since it is not true for *every* bounded input, the system is not BIBO stable.

Second, the claim that an LTI system is stable if all of its poles lie in the OLHP is not sufficient, but it is necessary. A second condition is that the system is proper. Thus saying that an LTI system is stable *if and only if* its poles are in the OLHP is not correct.

Consider:

H(s) = s^2/(s+1)

All if its poles are in the OLHP, but we can re-write as:

H(s) = (s-1) + 1/(s+1)

The step response of this function is:

y(t) = ilaplace(H(s)/s) = delta(t) - e^-t

which is unbounded. Thus the system has all poles in the OLHP but is not BIBO stable. All improper tfs have a proof for instability that is similar, and thus all improper TFs are unstable.

What are peoples' thoughts?Mstachowsky (discuss • contribs) 13:49, 10 April 2014 (UTC)

On Marginal stability: a marginally stable system is unstable since it fails the BIBO stability test. A system with two poles at +/- jw will produce an unbounded output when the input is u(t) = sin(wt). However, in many introductory linear systems courses the concept of "marginal stability" is talked about. Since we use BIBO stability as the most coarse definition of stability, I suggest that we change the section to read something like:

A system with poles on the imaginary axis is often referred to as "marginally stable". This means that there are many bounded inputs for which the output will also be bounded. However (etc...)

Thoughts?Mstachowsky (discuss • contribs) 13:27, 11 April 2014 (UTC)

Calling the angular frequency (ω) as complex frequency (s)?
In the section of Marginal Stability it reads "When the poles of the system in the complex S-Domain exist on the complex frequency axis (the vertical axis)." It's the first time I hear the name "complex frequency" for the variable in the vertical axis. That's wrong. It's not called like that, but as "angular frequency". What is called "complex frequency" is s, not ω. Ι will edit the section to reflect this. Alej27 (discuss • contribs) 00:49, 28 April 2020 (UTC)

title: Talk:Control Systems/Stability


text:
Talk:Control Systems/System Specifications

==System Specs

Classical specs include quarter-decay, overshoot and rise time. Modern ones include the ISA IAE (integrated absolute error) and ISE (integrated squared error). Sometimes there are tight constraints on the output range of the control. A variant of IAE is the CQI (control quality index) which normalizes the IAE to the maximum error possible within output clamps, and is ranged 0-1, with 1 being perfect tracking to setpoint.--Billymac00 18:12, 30 November 2006 (UTC)


text:
Haskell/Denotational semantics

Introduction
This chapter explains how to formalize the meaning of Haskell programs, the denotational semantics. It may seem to be nit-picking to formally specify that the program  means the same as the mathematical  square function that maps each number to its square, but what about the meaning of a program like   that loops forever? In the following, we will exemplify the approach first taken by Scott and Strachey to this question and obtain a foundation to reason about the correctness of functional programs in general and recursive definitions in particular. Of course, we will concentrate on those topics needed to understand Haskell programs.

Another aim of this chapter is to illustrate the notions strict and lazy that capture the idea that a function needs or needs not to evaluate its argument. This is a basic ingredient to predict the course of evaluation of Haskell programs and hence of primary interest to the programmer. Interestingly, these notions can be formulated concisely with denotational semantics alone, no reference to an execution model is necessary. They will be put to good use in Graph Reduction, but it is this chapter that will familiarize the reader with the denotational definition and involved notions such as ⊥ ("Bottom"). The reader only interested in strictness may wish to poke around in section Bottom and Partial Functions and quickly head over to Strict and Non-Strict Semantics.

What is Denotational Semantics and what is it for?
What does a Haskell program mean? This question is answered by the denotational semantics of Haskell. In general, the denotational semantics of a programming language maps each of its programs to a mathematical object (denotation), that represents the meaning of the program in question. As an example, the mathematical object for the Haskell programs,  ,   and   can be represented by the integer 10. We say that all those programs denote the integer 10. The collection of such mathematical objects is called the semantic domain.

The mapping from program code to a semantic domain is commonly written down with double square brackets ("Oxford brackets") around program code. For example, $$[\![\texttt{2*5}]\!] = 10.$$ Denotations are compositional, i.e. the meaning of a program like  only depends on the meaning of its constituents: $$[\![\texttt{a+b}]\!] = [\![\texttt{a}]\!]+[\![\texttt{b}]\!].$$ The same notation is used for types, i.e. $$[\![\texttt{Integer}]\!]=\mathbb{Z}.$$ For simplicity however, we will silently identify expressions with their semantic objects in subsequent chapters and use this notation only when clarification is needed.

It is one of the key properties of purely functional languages like Haskell that a direct mathematical interpretation like " denotes 10" carries over to functions, too: in essence, the denotation of a program of type   is a mathematical function $$\mathbb{Z}\to\mathbb{Z}$$ between integers. While we will see that this expression needs refinement generally, to include non-termination, the situation for imperative languages is clearly worse: a procedure with that type denotes something that changes the state of a machine in possibly unintended ways. Imperative languages are tightly tied to operational semantics which describes their way of execution on a machine. It is possible to define a denotational semantics for imperative programs and to use it to reason about such programs, but the semantics often has operational nature and sometimes must be extended in comparison to the denotational semantics for functional languages. In contrast, the meaning of purely functional languages is by default completely independent from their way of execution. The Haskell98 standard even goes as far as to specify only Haskell's non-strict denotational semantics, leaving open how to implement them.

In the end, denotational semantics enables us to develop formal proofs that programs indeed do what we want them to do mathematically. Ironically, for proving program properties in day-to-day Haskell, one can use Equational reasoning, which transforms programs into equivalent ones without seeing much of the underlying mathematical objects we are concentrating on in this chapter. But the denotational semantics actually show up whenever we have to reason about non-terminating programs, for instance in Infinite Lists.

Of course, because they only state what a program is, denotational semantics cannot answer questions about how long a program takes or how much memory it eats; this is governed by the evaluation strategy which dictates how the computer calculates the normal form of an expression. On the other hand, the implementation has to respect the semantics, and to a certain extent, it is the semantics that determines how Haskell programs must be evaluated on a machine. We will elaborate on this in Strict and Non-Strict Semantics.

What to choose as Semantic Domain?
We are now looking for suitable mathematical objects that we can attribute to every Haskell program. In case of the example,   and  , it is clear that all expressions should denote the integer 10. Generalizing, every value  of type   is likely to denote an element of the set $$\mathbb{Z}$$. The same can be done with values of type. For functions like, we can appeal to the mathematical definition of "function" as a set of (argument,value)-pairs, its graph.

But interpreting functions as their graph was too quick, because it does not work well with recursive definitions. Consider the definition

shaves :: Integer -> Integer -> Bool 1 `shaves` 1 = True 2 `shaves` 2 = False 0 `shaves` x = not (x `shaves` x) _ `shaves` _ = False

We can think of,  and   as being male persons with long beards and the question is who shaves whom. Person  shaves himself, but   gets shaved by the barber   because evaluating the third equation yields. In general, the third line says that the barber  shaves all persons that do not shave themselves.

What about the barber himself, is  true or not? If it is, then the third equation says that it is not. If it is not, then the third equation says that it is. Puzzled, we see that we just cannot attribute  or   to  ; the graph we use as interpretation for the function   must have an empty spot. We realize that our semantic objects must be able to incorporate partial functions, functions that are undefined for some values of their arguments (..that is otherwise permitted by the arguments' types).

It is well known that this famous example gave rise to serious foundational problems in set theory. It's an example of an impredicative definition, a definition which uses itself, a logical circle. Unfortunately for recursive definitions, the circle is not the problem but the feature.

⊥ Bottom
To define partial functions, we introduce a special value ⊥, named bottom and commonly written  in typewriter font. We say that ⊥ is the completely "undefined" value or function. Every basic data type like  or   contains one ⊥ besides their usual elements. So the possible values of type  are

$$\bot, 0, +1, -1, +2, -2, +3, -3, \dots$$

Adding ⊥ to the set of values is also called lifting. This is often depicted by a subscript like in $$\mathbb{Z}_\bot$$. While this is the correct notation for the mathematical set "lifted integers", we prefer to talk about "values of type ". We do this because $$\mathbb{Z}_\bot$$ suggests that there are "real" integers $$\mathbb{Z}$$, but inside Haskell, the "integers" are.

As another example, the type  with only one element actually has two inhabitants:

$$\bot, $$

For now, we will stick to programming with s. Arbitrary algebraic data types will be treated in section Algebraic Data Types since strict and non-strict languages diverge on how these include ⊥.

In Haskell, the expression  denotes ⊥. With its help, one can indeed verify some semantic properties of actual Haskell programs. has the polymorphic type  which of course can be specialized to ,  ,   and so on. In the Haskell Prelude, it is defined as

As a side note, it follows from the Curry-Howard isomorphism that any value of the polymorphic type  must denote ⊥.

Partial Functions and the Semantic Approximation Order
Now, $$\bot$$ gives us the possibility to have partial functions:

$$f(n) = \begin{cases} 1 & \mbox{ if } n \mbox{ is } 0 \\ -2 & \mbox{ if } n \mbox{ is } 1 \\ \bot & \mbox{ else } \end{cases} $$

Here, $$f(n)$$ yields well defined values for $$n=0$$ and $$n=1$$ but gives $$\bot$$ for all other $$n$$.

The type  has its $$\bot$$ too, and it is defined with the help of the $$\bot$$ from   this way:

$$\bot(n) = \bot$$ for all $$n$$

where the $$\bot$$ on the left hand side is of type, and the one on the right hand side is of type.

To formalize, partial functions say, of type  are at least mathematical mappings from the lifted integers $$\mathbb{Z}_\bot=\{\bot, 0, \pm 1, \pm 2, \pm 3, \dots\}$$ to the lifted integers. But this is not enough, since it does not acknowledge the special role of $$\bot$$. For example, the definition

$$g(n) = \begin{cases} 1 & \mbox{ if } n \mbox{ is } \bot \\ \bot & \mbox{ else } \end{cases} $$

is a function that turns infinite loops into terminating programs and vice versa, which is solving the halting problem. How can $$g(\bot)$$ yield a defined value when $$g(1)$$ is undefined? The intuition is that every partial function $$g$$ should yield more defined answers for more defined arguments. To formalize, we can say that every concrete number is more defined than $$\bot$$:

$$\bot\sqsubset 1\ ,\ \bot\sqsubset 2\, \dots$$

Here, $$a\sqsubset b$$ denotes that $$b$$ is more defined than $$a$$. Likewise, $$a\sqsubseteq b$$ will denote that either $$b$$ is more defined than $$a$$ or both are equal (and so have the same definedness). $$\sqsubset$$ is also called the semantic approximation order because we can approximate defined values by less defined ones thus interpreting "more defined" as "approximating better". Of course, $$\bot$$ is designed to be the least element of a data type, we always have that $$\bot\sqsubset x$$ for all $$x$$, except the case when $$x$$ happens to denote $$\bot$$ itself:

$$\forall x\neq\bot\ \ \ \bot\sqsubset x $$

As no number is more defined than another, the mathematical relation $$\sqsubset$$ is false for any pair of numbers:

$$ 1 \sqsubset 1 $$ does not hold. neither $$1 \sqsubset 2$$ nor $$2 \sqsubset 1$$ hold.

This is contrasted to ordinary order predicate $$\le$$, which can compare any two numbers. A quick way to remember this is the sentence: "$$1$$ and $$2$$ are different in terms of information content but are equal in terms of information quantity". That's another reason why we use a different symbol: $$\sqsubseteq$$. neither $$1 \sqsubseteq 2$$ nor $$2 \sqsubseteq 1$$ hold, but $$1 \sqsubseteq 1$$ holds.

One says that $$\sqsubseteq$$ specifies a partial order and that the values of type  form a partially ordered set (poset for short). A partial order is characterized by the following three laws
 * Reflexivity, everything is just as defined as itself: $$x \sqsubseteq x$$ for all $$x$$
 * Transitivity: if $$x \sqsubseteq y$$ and $$y \sqsubseteq z$$, then $$x \sqsubseteq z$$
 * Antisymmetry: if both $$x \sqsubseteq y$$ and $$y \sqsubseteq x$$ hold, then $$x$$ and $$y$$ must be equal: $$x=y$$.

We can depict the order $$\sqsubseteq$$ on the values of type  by the following graph

where every link between two nodes specifies that the one above is more defined than the one below. Because there is only one level (excluding $$\bot$$), one says that  is a flat domain. The picture also explains the name of $$\bot$$: it's called bottom because it always sits at the bottom.

Monotonicity
Our intuition about partial functions now can be formulated as following: every partial function $$f$$ is a monotone mapping between partially ordered sets. More defined arguments will yield more defined values:

$$ x\sqsubseteq y \Rightarrow f(x)\sqsubseteq f(y) $$

In particular, a monotone function $$h$$ with $$h(\bot)=1$$ is constant: $$h(n)=1$$ for all $$n$$. Note that here it is crucial that $$1 \sqsubseteq 2$$ etc. don't hold.

Translated to Haskell, monotonicity means that we cannot use $$\bot$$ as a condition, i.e. we cannot pattern match on $$\bot$$, or its equivalent. Otherwise, the example $$g$$ from above could be expressed as a Haskell program. As we shall see later, $$\bot$$ also denotes non-terminating programs, so that the inability to observe $$\bot$$ inside Haskell is related to the halting problem.

Of course, the notion of more defined than can be extended to partial functions by saying that a function is more defined than another if it is so at every possible argument:

$$f \sqsubseteq g \mbox{ if } \forall x. f(x) \sqsubseteq g(x)$$

Thus, the partial functions also form a poset, with the undefined function $$\bot(x)=\bot$$ being the least element.

Approximations of the Factorial Function
Now that we have the means to describe partial functions, we can give an interpretation to recursive definitions. Let's take the prominent example of the factorial function $$f(n)=n!$$ whose recursive definition is

$$f(n) = \mbox{ if } n == 0 \mbox{ then } 1 \mbox{ else } n \cdot f(n-1)$$

Although we saw that interpreting this recursive function directly as a set description may lead to problems, we intuitively know that in order to calculate $$f(n)$$ for every given $$n$$ we have to iterate the right hand side. This iteration can be formalized as follows: we calculate a sequence of functions $$f_k$$ with the property that each function consists of the right hand side applied to the previous function, that is

$$f_{k+1}(n) = \mbox{ if } n == 0 \mbox{ then } 1 \mbox{ else } n \cdot f_k(n-1)$$

We start with the undefined function $$f_0(n) = \bot$$, and the resulting sequence of partial functions reads:

$$f_1(n) = \begin{cases} 1 & \mbox{ if } n \mbox{ is } 0 \\ \bot & \mbox{ else } \end{cases} \ ,\ f_2(n) = \begin{cases} 1 & \mbox{ if } n \mbox{ is } 0 \\ 1 & \mbox{ if } n \mbox{ is } 1 \\ \bot & \mbox{ else } \end{cases} \ ,\ f_3(n) = \begin{cases} 1 & \mbox{ if } n \mbox{ is } 0 \\ 1 & \mbox{ if } n \mbox{ is } 1 \\ 2 & \mbox{ if } n \mbox{ is } 2 \\ \bot & \mbox{ else } \end{cases} $$

and so on. Clearly,

$$\bot=f_0 \sqsubseteq f_1 \sqsubseteq f_2 \sqsubseteq \dots $$

and we expect that the sequence converges to the factorial function.

The iteration follows the well known scheme of a fixed point iteration

$$ x_0, g(x_0), g(g(x_0)), g(g(g(x_0))), \dots $$

In our case, $$x_0$$ is a function and $$g$$ is a functional, a mapping between functions. We have

$$ x_0 = \bot$$ and $$ g(x) = n\mapsto\mbox{ if } n == 0 \mbox{ then } 1 \mbox{ else } n*x(n-1) \,$$

If we start with $$x_0 = \bot$$, the iteration will yield increasingly defined approximations to the factorial function

$$ \bot\sqsubseteq g(\bot)\sqsubseteq g(g(\bot))\sqsubseteq g(g(g(\bot)))\sqsubseteq \dots $$

(Proof that the sequence increases: The first inequality $$\bot\sqsubseteq g(\bot)$$ follows from the fact that $$\bot$$ is less defined than anything else. The second inequality follows from the first one by applying $$g$$ to both sides and noting that $$g$$ is monotone. The third follows from the second in the same fashion and so on.)

It is very illustrative to formulate this iteration scheme in Haskell. As functionals are just ordinary higher order functions, we have

g :: (Integer -> Integer) -> (Integer -> Integer) g x = \n -> if n == 0 then 1 else n * x (n-1) x0 :: Integer -> Integer x0 = undefined (f0:f1:f2:f3:f4:fs) = iterate g x0

We can now evaluate the functions  at sample arguments and see whether they yield   or not:

> f3 0 1 > f3 1 1 > f3 2 2 > f3 5 *** Exception: Prelude.undefined > map f3 [0..] [1,1,2,*** Exception: Prelude.undefined > map f4 [0..] [1,1,2,6,*** Exception: Prelude.undefined > map f1 [0..] [1,*** Exception: Prelude.undefined

Of course, we cannot use this to check whether  is really undefined for all arguments.

Convergence
To the mathematician, the question whether this sequence of approximations converges is still to be answered. For that, we say that a poset is a directed complete partial order (dcpo) iff every monotone sequence $$x_0\sqsubseteq x_1\sqsubseteq \dots$$ (also called chain) has a least upper bound (supremum)

$$\sup_{\sqsubseteq} \{x_0\sqsubseteq x_1\sqsubseteq \dots\} = x$$.

If that's the case for the semantic approximation order, we clearly can be sure that monotone sequence of functions approximating the factorial function indeed has a limit. For our denotational semantics, we will only meet dcpos which have a least element $$\bot$$ which are called complete partial orders (cpo).

The s clearly form a (d)cpo, because the monotone sequences consisting of more than one element must be of the form

$$\bot\sqsubseteq\dots\sqsubseteq\ \bot\sqsubseteq n\sqsubseteq n\sqsubseteq \dots\sqsubseteq n$$

where $$n$$ is an ordinary number. Thus, $$n$$ is already the least upper bound.

For functions, this argument fails because monotone sequences may be of infinite length. But because  is a (d)cpo, we know that for every point $$n$$, there is a least upper bound

$$\sup_{\sqsubseteq} \{\bot=f_0(n) \sqsubseteq f_1(n) \sqsubseteq f_2(n) \sqsubseteq \dots\} =: f(n)$$.

As the semantic approximation order is defined point-wise, the function $$f$$ is the supremum we looked for.

These have been the last touches for our aim to transform the impredicative definition of the factorial function into a well defined construction. Of course, it remains to be shown that $$f(n)$$ actually yields a defined value for every $$n$$, but this is not hard and far more reasonable than a completely ill-formed definition.

Bottom includes Non-Termination
It is instructive to try our newly gained insight into recursive definitions on an example that does not terminate:

$$f(n) = f(n+1)$$

The approximating sequence reads

$$f_0 = \bot, f_1 = \bot, \dots$$

and consists only of $$\bot$$. Clearly, the resulting limit is $$\bot$$ again. From an operational point of view, a machine executing this program will loop indefinitely. We thus see that $$\bot$$ may also denote a non-terminating function or value. Hence, given the halting problem, pattern matching on $$\bot$$ in Haskell is impossible.

Interpretation as Least Fixed Point
Earlier, we called the approximating sequence an example of the well known "fixed point iteration" scheme. And of course, the definition of the factorial function $$f$$ can also be thought as the specification of a fixed point of the functional $$g$$:

$$f = g(f) = n\mapsto\mbox{ if } n == 0 \mbox{ then } 1 \mbox{ else } n\cdot f(n-1)$$

However, there might be multiple fixed points. For instance, there are several $$f$$ which fulfill the specification

$$f = n\mapsto\mbox{ if } n == 0 \mbox{ then } 1 \mbox{ else } f(n+1)$$,

Of course, when executing such a program, the machine will loop forever on $$f(1)$$ or $$f(2)$$ and thus not produce any valuable information about the value of $$f(1)$$. This corresponds to choosing the least defined fixed point as semantic object $$f$$ and this is indeed a canonical choice. Thus, we say that

$$f=g(f)$$,

defines the least fixed point $$f$$ of $$g$$. Clearly, least is with respect to our semantic approximation order $$\sqsubseteq$$.

The existence of a least fixed point is guaranteed by our iterative construction if we add the condition that $$g$$ must be continuous (sometimes also called "chain continuous"). That simply means that $$g$$ respects suprema of monotone sequences:

$$\sup_{\sqsubseteq}\{g(x_0)\sqsubseteq g(x_1) \sqsubseteq\dots\} = g\left(\sup_{\sqsubseteq}\{x_0\sqsubseteq x_1\sqsubseteq\dots\}\right)$$

We can then argue that with

$$f=\sup_{\sqsubseteq}\{x_0\sqsubseteq g(x_0)\sqsubseteq g(g(x_0))\sqsubseteq\dots\}$$

we have

$$\begin{array}{lcl} g(f) &=& g\left(\sup_{\sqsubseteq}\{x_0\sqsubseteq g(x_0)\sqsubseteq g(g(x_0))\sqsubseteq\dots\}\right)\\ &=& \sup_{\sqsubseteq}\{g(x_0)\sqsubseteq g(g(x_0))\sqsubseteq\dots\}\\ &=& \sup_{\sqsubseteq}\{x_0 \sqsubseteq g(x_0)\sqsubseteq g(g(x_0))\sqsubseteq\dots\}\\ &=& f \end{array}$$

and the iteration limit is indeed a fixed point of $$g$$. You may also want to convince yourself that the fixed point iteration yields the least fixed point possible.

By the way, how do we know that each Haskell function we write down indeed is continuous? Just as with monotonicity, this has to be enforced by the programming language. Admittedly, these properties can somewhat be enforced or broken at will, so the question feels a bit void. But intuitively, monotonicity is guaranteed by not allowing pattern matches on $$\bot$$. For continuity, we note that for an arbitrary type, every simple function   is automatically continuous because the monotone sequences of  s are of finite length. Any infinite chain of values of type  gets mapped to a finite chain of  s and respect for suprema becomes a consequence of monotonicity. Thus, all functions of the special case  must be continuous. For functionals like $$g$$, the continuity then materializes due to currying, as the type is isomorphic to  and we can take.

In Haskell, the fixed interpretation of the factorial function can be coded as

with the help of the fixed point combinator

.

We can define it by

which leaves us somewhat puzzled because when expanding $$factorial$$, the result is not anything different from how we would have defined the factorial function in Haskell in the first place. But of course, the construction this whole section was about is not at all present when running a real Haskell program. It's just a means to put the mathematical interpretation of Haskell programs on a firm ground. Yet it is very nice that we can explore these semantics in Haskell itself with the help of.

Strict and Non-Strict Semantics
After having elaborated on the denotational semantics of Haskell programs, we will drop the mathematical function notation $$f(n)$$ for semantic objects in favor of their now equivalent Haskell notation.

Strict Functions
A function  with one argument is called strict, if and only if

.

Here are some examples of strict functions

id    x = x succ   x = x + 1 power2 0 = 1 power2 n = 2 * power2 (n-1)

and there is nothing unexpected about them. But why are they strict? It is instructive to prove that these functions are indeed strict. For, this follows from the definition. For, we have to ponder whether   is   or not. If it was not, then we should for example have  or more general   for some concrete number k. We remember that every function is monotone, so we should have for example

as. But neither of,   nor   is valid so that k cannot be 2. In general, we obtain the contradiction

.

and thus the only possible choice is

and  is strict.

Non-Strict and Strict Languages
Searching for non-strict functions, it happens that there is only one prototype of a non-strict function of type :

one x = 1

Its variants are  for every concrete number. Why are these the only ones possible? Remember that  can be no less defined than. As  is a flat domain, both must be equal.

Why is  non-strict? To see that it is, we use a Haskell interpreter and try

> one (undefined :: Integer) 1

which is not ⊥. This is reasonable as  completely ignores its argument. When interpreting ⊥ in an operational sense as "non-termination", one may say that the non-strictness of  means that it does not force its argument to be evaluated and therefore avoids the infinite loop when evaluating the argument ⊥. But one might as well say that every function must evaluate its arguments before computing the result which means that  should be ⊥, too. That is, if the program computing the argument does not halt,  should not halt as well. It shows up that one can choose freely this or the other design for a functional programming language. One says that the language is strict or non-strict depending on whether functions are strict or non-strict by default. The choice for Haskell is non-strict. In contrast, the functional languages ML and Lisp choose strict semantics.

Functions with several Arguments
The notion of strictness extends to functions with several variables. For example, a function  of two arguments is strict in the second argument if and only if

for every. But for multiple arguments, mixed forms where the strictness depends on the given value of the other arguments, are much more common. An example is the conditional

cond b x y = if b then x else y

We see that it is strict in  depending on whether the test   is   or  :

cond True x ⊥ = x cond False x ⊥ = ⊥

and likewise for. Apparently,  is certainly ⊥ if both   and   are, but not necessarily when at least one of them is defined. This behavior is called joint strictness.

Clearly,  behaves like the if-then-else statement where it is crucial not to evaluate both the   and the   branches:

if null xs then 'a' else head xs if n == 0 then  1  else 5 / n

Here, the else part is ⊥ when the condition is met. Thus, in a non-strict language, we have the possibility to wrap primitive control statements such as if-then-else into functions like. This way, we can define our own control operators. In a strict language, this is not possible as both branches will be evaluated when calling  which makes it rather useless. This is a glimpse of the general observation that non-strictness offers more flexibility for code reuse than strictness. See the chapter Laziness for more on this subject.

Algebraic Data Types
After treating the motivation case of partial functions between s, we now want to extend the scope of denotational semantics to arbitrary algebraic data types in Haskell.

A word about nomenclature: the collection of semantic objects for a particular type is usually called a domain. This term is more a generic name than a particular definition and we decide that our domains are cpos (complete partial orders), that is sets of values together with a relation more defined that obeys some conditions to allow fixed point iteration. Usually, one adds additional conditions to the cpos that ensure that the values of our domains can be represented in some finite way on a computer and thereby avoiding to ponder the twisted ways of uncountable infinite sets. But as we are not going to prove general domain theoretic theorems, the conditions will just happen to hold by construction.

Constructors
Let's take the example types

data Bool   = True | False data Maybe a = Just a | Nothing

Here,,   and   are nullary constructors whereas   is a unary constructor. The inhabitants of  form the following domain:

Remember that ⊥ is added as least element to the set of values  and , we say that the type is lifted. A domain whose poset diagram consists of only one level is called a flat domain. We already know that $$Integer$$ is a flat domain as well, it's just that the level above ⊥ has an infinite number of elements.

What are the possible inhabitants of ? They are

⊥, Nothing, Just ⊥, Just True, Just False

So the general rule is to insert all possible values into the unary (binary, ternary, ...) constructors as usual but without forgetting ⊥. Concerning the partial order, we remember the condition that the constructors should be monotone just as any other functions. Hence, the partial order looks as follows

But there is something to ponder: why isn't ? I mean "Just undefined" is just as undefined as "undefined"! The answer is that this depends on whether the language is strict or non-strict. In a strict language, all constructors are strict by default, i.e.  and the diagram would reduce to

As a consequence, all domains of a strict language are flat.

But in a non-strict language like Haskell, constructors are non-strict by default and  is a new element different from ⊥, because we can write a function that reacts differently to them:

f (Just _) = 4 f Nothing = 7

As  ignores the contents of the   constructor,   is   but   is   (intuitively, if   is passed ⊥, it will not be possible to tell whether to take the Just branch or the Nothing branch, and so ⊥ will be returned).

This gives rise to non-flat domains as depicted in the former graph. What should these be of use for? In the context of Graph Reduction, we may also think of ⊥ as an unevaluated expression. Thus, a value  may tell us that a computation (say a lookup) succeeded and is not , but that the true value has not been evaluated yet. If we are only interested in whether  succeeded or not, this actually saves us from the unnecessary work to calculate whether   is   or   as would be the case in a flat domain. The full impact of non-flat domains will be explored in the chapter Laziness, but one prominent example are infinite lists treated in section Recursive Data Types and Infinite Lists.

Pattern Matching
In the section Strict Functions, we proved that some functions are strict by inspecting their results on different inputs and insisting on monotonicity. However, in the light of algebraic data types, there can only be one source of strictness in real life Haskell: pattern matching, i.e.  expressions. The general rule is that pattern matching on a constructor of a -type will force the function to be strict, i.e. matching ⊥ against a constructor always gives ⊥. For illustration, consider

const1 _ = 1

const1' True = 1 const1' False = 1

The first function  is non-strict whereas the   is strict because it decides whether the argument is   or   although its result doesn't depend on that. Pattern matching in function arguments is equivalent to -expressions

const1' x = case x of   True  -> 1 False -> 1

which similarly impose strictness on : if the argument to the   expression denotes ⊥ the whole   will denote ⊥, too. However, the argument for case expressions may be more involved as in

foo k table = case lookup ("Foo." ++ k) table of  Nothing -> ...   Just x  -> ...

and it can be difficult to track what this means for the strictness of.

An example for multiple pattern matches in the equational style is the logical :

or True _ = True or _ True = True or _ _   = False

Note that equations are matched from top to bottom. The first equation for  matches the first argument against , so   is strict in its first argument. The same equation also tells us that  is non-strict in. If the first argument is, then the second will be matched against   and   is strict in. Note that while wildcards are a general sign of non-strictness, this depends on their position with respect to the pattern matches against constructors.

There is another form of pattern matching, namely irrefutable patterns marked with a tilde. Their use is demonstrated by

f ~(Just x) = 1 f Nothing  = 2

An irrefutable pattern always succeeds (hence the name) resulting in. But when changing the definition of  to

f ~(Just x) = x + 1 f Nothing  = 2      -- this line may as well be left away

we have

f ⊥      = ⊥ + 1 = ⊥ f (Just 1) = 1 + 1 = 2

If the argument matches the pattern,  will be bound to the corresponding value. Otherwise, any variable like  will be bound to ⊥.

By default,  and   bindings are non-strict, too:

foo key map = let Just x = lookup key map in ...

is equivalent to

foo key map = case (lookup key map) of ~(Just x) -> ...

Recursive Data Types and Infinite Lists
The case of recursive data structures is not very different from the base case. Consider a list of unit values

data List = [] | : List

Though this seems like a simple type, there is a surprisingly complicated number of ways you can fit $$\bot$$ in here and there, and therefore the corresponding graph is complicated. The bottom of this graph is shown below. An ellipsis indicates that the graph continues along this direction. A red ellipse behind an element indicates that this is the end of a chain; the element is in normal form.

and so on. But now, there are also chains of infinite length like

This causes us some trouble as we noted in section Convergence that every monotone sequence must have a least upper bound. This is only possible if we allow for infinite lists. Infinite lists (sometimes also called streams) turn out to be very useful and their manifold use cases are treated in full detail in chapter Laziness. Here, we will show what their denotational semantics should be and how to reason about them. Note that while the following discussion is restricted to lists only, it easily generalizes to arbitrary recursive data structures like trees.

In the following, we will switch back to the standard list type

data [a] = [] | a : [a]

to close the syntactic gap to practical programming with infinite lists in Haskell.

Calculating with infinite lists is best shown by example. For that, we need an infinite list

ones :: [Integer] ones = 1 : ones

When applying the fixed point iteration to this recursive definition, we see that  ought to be the supremum of

,

that is an infinite list of. Let's try to understand what  should be. With the definition of

take 0 _     = [] take n (x:xs) = x : take (n-1) xs take n []    = []

we can apply  to elements of the approximating sequence of  :

take 2 ⊥      ==>  ⊥ take 2 (1:⊥)  ==>  1 : take 1 ⊥      ==>  1 : ⊥ take 2 (1:1:⊥) ==> 1 : take 1 (1:⊥)  ==>  1 : 1 : take 0 ⊥ ==> 1 : 1 : []

We see that  and so on must be the same as   because   is fully defined. Taking the supremum on both the sequence of input lists and the resulting sequence of output lists, we can conclude

take 2 ones = 1:1:[]

Thus, taking the first two elements of  behaves exactly as expected.

Generalizing from the example, we see that reasoning about infinite lists involves considering the approximating sequence and passing to the supremum, the truly infinite list. Still, we did not give it a firm ground. The solution is to identify the infinite list with the whole chain itself and to formally add it as a new element to our domain: the infinite list is the sequence of its approximations. Of course, any infinite list like  can be compactly depicted as

ones = 1 : 1 : 1 : 1 : ...

what simply means that

ones = (⊥ $$\sqsubseteq$$ 1:⊥ $$\sqsubseteq$$ 1:1:⊥ $$\sqsubseteq$$ ...)

What about the puzzle of how a computer can calculate with infinite lists? It takes an infinite amount of time, after all? Well, this is true. But the trick is that the computer may well finish in a finite amount of time if it only considers a finite part of the infinite list. So, infinite lists should be thought of as potentially infinite lists. In general, intermediate results take the form of infinite lists whereas the final value is finite. It is one of the benefits of denotational semantics that one can treat the intermediate infinite data structures as truly infinite when reasoning about program correctness.

As a last note, the construction of a recursive domain can be done by a fixed point iteration similar to recursive definition for functions. Yet, the problem of infinite chains has to be tackled explicitly. See the literature in External Links for a formal construction.

Haskell specialities: Strictness Annotations and Newtypes
Haskell offers a way to change the default non-strict behavior of data type constructors by strictness annotations. In a data declaration like

data Maybe' a = Just' !a | Nothing'

an exclamation point  before an argument of the constructor specifies that it should be strict in this argument. Hence we have  in our example. Further information may be found in chapter Strictness.

In some cases, one wants to rename a data type, like in

data Couldbe a = Couldbe (Maybe a)

However,  contains both the elements   and. With the help of a  definition

newtype Couldbe a = Couldbe (Maybe a)

we can arrange that  is semantically equal to , but different during type checking. In particular, the constructor  is strict. Yet, this definition is subtly different from

data Couldbe' a = Couldbe' !(Maybe a)

To explain how, consider the functions

f (Couldbe  m) = 42 f' (Couldbe' m) = 42

Here,  will cause the pattern match on the constructor   to fail with the effect that. But for the newtype, the match on  will never fail, we get. In a sense, the difference can be stated as: with the agreement that a pattern match on ⊥ fails and that a match on  does not.
 * for the strict case,  is a synonym for ⊥
 * for the newtype, ⊥ is a synonym for

Newtypes may also be used to define recursive types. An example is the alternate definition of the list type

newtype List a = In (Maybe (a, List a))

Again, the point is that the constructor  does not introduce an additional lifting with ⊥.

Here are a few more examples to differentiate between  and non-strict and strict   declarations (in the interactive prompt):

Prelude> data D = D Int Prelude> data SD = SD !Int Prelude> newtype NT = NT Int Prelude> (\(D _) -> 42) (D undefined) 42 Prelude> (\(SD _) -> 42) (SD undefined) *** Exception: Prelude.undefined [...] Prelude> (\(NT _) -> 42) (NT undefined) 42 Prelude> (\(D _) -> 42) undefined *** Exception: Prelude.undefined [...] Prelude> (\(SD _) -> 42) undefined *** Exception: Prelude.undefined [...] Prelude> (\(NT _) -> 42) undefined 42

Abstract Interpretation and Strictness Analysis
As lazy evaluation means a constant computational overhead, a Haskell compiler may want to discover where inherent non-strictness is not needed at all which allows it to drop the overhead at these particular places. To that extent, the compiler performs strictness analysis just like we proved in some functions to be strict section Strict Functions. Of course, details of strictness depending on the exact values of arguments like in our example  are out of scope (this is in general undecidable). But the compiler may try to find approximate strictness information and this works in many common cases like.

Now, abstract interpretation is a formidable idea to reason about strictness: ...

For more about strictness analysis, see the research papers about strictness analysis on the Haskell wiki.

Interpretation as Powersets
So far, we have introduced ⊥ and the semantic approximation order $$\sqsubseteq$$ abstractly by specifying their properties. However, both as well as any inhabitants of a data type like  can be interpreted as ordinary sets. This is called the powerset construction. {| class="wikitable collapsible collapsed" style="text-align: left;margin:0px;" ! style="text-align: left;width:100em;" |

NOTE: i'm not sure whether this is really true. Someone who knows, please correct this.

 * Possible correction to my correction below, your notation for bottom isn't a powerset, its just a set which led to my correction. Having read more, I have to retract the correction but I suspect `undefined = { {}, {} }` in the first example and I'm not sure that has any meaning in terms of Haskell notation so I guess it would be correct to call it ⊥
 * Possible correction to my correction below, your notation for bottom isn't a powerset, its just a set which led to my correction. Having read more, I have to retract the correction but I suspect `undefined = { {}, {} }` in the first example and I'm not sure that has any meaning in terms of Haskell notation so I guess it would be correct to call it ⊥

Original correction: This isn't true, consider  which would lead to   which isn't true in Haskell:

{}  \    \  ⊥ = {}

Furthermore:

{Just True}  {Just False} \    /           \   / {Nothing} {Just True, Just False} \     /       \    /  ⊥ = {Nothing, Just True, Just False}

excludes

but perhaps we'd be benefited if we could say

data powerset Writer a b = Writer a b

and get:

∀x y.Writer x y           /             \ /              \  ∀x.Writer x ⊥        ∀y.Writer ⊥ y            \             / \          /              Writer ⊥ ⊥

where  as the least defined occupant.
 * }

The idea is to think of ⊥ as the set of all possible values and that a computation retrieves more information this by choosing a subset. In a sense, the denotation of a value starts its life as the set of all values which will be reduced by computations until there remains a set with a single element only.

As an example, consider  where the domain looks like

{True} {False} \     /     \    /    ⊥ = {True, False}

The values  and   are encoded as the singleton sets   and   and ⊥ is the set of all possible values.

Another example is :

{Just True}  {Just False} \    /           \   / {Nothing} {Just True, Just False} \     /       \    /  ⊥ = {Nothing, Just True, Just False}

We see that the semantic approximation order is equivalent to set inclusion, but with arguments switched:

$$x\sqsubseteq y \iff x \supseteq y$$

This approach can be used to give a semantics to exceptions in Haskell.

Naïve Sets are unsuited for Recursive Data Types
In the section What to choose as Semantic Domain?, we argued that taking simple sets as denotation for types doesn't work well with partial functions. In the light of recursive data types, things become even worse as John C. Reynolds showed in his paper Polymorphism is not set-theoretic.

Reynolds actually considers the recursive type

newtype U = In ((U -> Bool) -> Bool)

Interpreting  as the set   and the function type   as the set of functions from   to , the type   cannot denote a set. This is because  is the set of subsets (powerset) of   which, due to a diagonal argument analogous to Cantor's argument that there are "more" real numbers than natural ones, always has a bigger cardinality than. Thus,  has an even bigger cardinality than   and there is no way for it to be isomorphic to. Hence, the set  must not exist, a contradiction.

In our world of partial functions, this argument fails. Here, an element of  is given by a sequence of approximations taken from the sequence of domains

and so on

where ⊥ denotes the domain with the single inhabitant ⊥. While the author of this text admittedly has no clue on what such a thing should mean, the constructor gives a perfectly well defined object for. We see that the type  merely consists of shifted approximating sequences which means that it is isomorphic to.

As a last note, Reynolds actually constructs an equivalent of  in the second order polymorphic lambda calculus. There, it happens that all terms have a normal form, i.e. there are only total functions when we do not include a primitive recursion operator. Thus, there is no true need for partial functions and ⊥, yet a naïve set theoretic semantics fails. We can only speculate that this has to do with the fact that not every mathematical function is computable. In particular, the set of computable functions  should not have a bigger cardinality than.

title: Haskell/Denotational semantics


text:
User talk:Rcragun

Hi Rcragun, I'm a doctoral student at Indiana University. I'm currently working on a Wikibook study about online authors' experiences and perceptions with my advisor. I read your wikibook of introduction to sociology. It's very impressive. We would like to learn more from your and Deborahcragun's experiences. If you would like to participate in the case study, please contact me by email (cl17@indiana.edu) or leave a message. We'll discuss the detailed information about the study. (The format will be a one hour interview in person or by phone or email.) Thanks for your time and consideration. Your input will be greatly appreciated. Best regards, inkeys
 * responded via email --Rcragun (talk) 15:14, 30 April 2008 (UTC)

-- Hi there, my name is Martin M. Elissetche. I am the creator of a social science dictionary located at www.socialsciencedictionry.org. I wanted to know if I could place a copy of your book on my web site or whether you prefer if I just link to it. Please let me know what you think at info@socialsciencedictionary.org. Cheers, m.
 * responded via email --Rcragun (talk) 15:14, 30 April 2008 (UTC)

Hi, I am Piotr Konieczny - PhD candidate from University of Pittsburgh and a long time Wikipedia editor. I will be teaching an Intro to Soc course this summer, and I plan to contribute to our wikicourse; for starters by updating the Introduction to Sociology/Sociological Videos page with some online videos. My @ is piokon at post dot pl. PS. You may want to activate your email.--Piotrus (talk) 14:30, 5 June 2008 (UTC)

Hi Rcragun, If you are still using SPSS, can you please email me asap? Thank you, gherson @ snet-dot-net Gherson (discuss • contribs) 23:49, 3 September 2014 (UTC)

I read your article
Hi Ryan,

I've been a wikibookian since 2006 when my colleagues and I began developing our first book and then our current book. Now, I'm starting to write my dissertation, and my lit search led me to your article in Elec. Journal of Sociology about your Intro to Sociology book.

First, congrats on taking the initiative to get this project started. I agree with you that, while we're in troubled waters, it's worth the associated risks. Our students love it, too.

Second, I wanted to ask you if you'd considered the further empirical study of students working on your book. My team at Old Dominion University is very interested in forming partnerships in disciplines besides our own, and yours seems like a really interesting context. Let me know if you're interested in talking more about this when you have the chance, and have a great day!

PbakerODU (talk) 18:58, 29 March 2009 (UTC)

Thanks for the book - Introduction To Sociology
Just finished reading the PDF version. It's well written and very informative. The download PDF version seems more neutral than the current edits. The recent edits seem to lean more towards a "leftist" view which is fine but I like my "Introductions" to any subject to be neutral since further advanced study will generally allow me to choose the viewpoint I wish to explore.

I think Wikibooks is a great idea and hopefully editors like yourself will keep adding more titles.

Thanks for the book. --Sluffs (talk) 22:58, 5 September 2009 (UTC)

 * Hi Sluffs. Glad you liked it.  I'm still working on incorporating the new edits.  Hopefully I'll be able make them a bit more neutral.  --Rcragun (talk) 23:46, 5 September 2009 (UTC)

Regarding Using SPSS and PASW RfD
You can upload the images locally if they fall under fair use. I've replied to your RfD. --Panic (talk) 23:26, 12 May 2010 (UTC)

 * See WB:RFP. Any images you upload must have Information and Non-free media rationale placed on the image page or they will be deleted.  See WB:FILES if needed. -- Adrignola talk contribs 01:19, 13 May 2010 (UTC)
 * Will do.--Rcragun (talk) 11:46, 13 May 2010 (UTC)

 * Yay! I'm glad you asked for the Uploader priv, I'm glad you got it, and I'm glad you stuck around.  Thanks for the good work! --Jomegat (talk) 03:18, 13 May 2010 (UTC)
 * Thanks for letting me know about it as an option.--Rcragun (talk) 11:46, 13 May 2010 (UTC)

Amplification of Using SPSS and PASW
Hi there and thanks for a great wikibook.

I would be keen to use the wikibook in our SPSS training program but to fit our needs it would take some amplification. I wrote one page as an example of what I mean. You can find it here. In this example I found I wanted to add some basic notes on statistical terms and to give some further advice about recoding in SPSS - looking at it, I will split this page now and deal with those separately, but that's another issue. Your work is fairly focussed on the software, so it might not suit your purpose to have statistical notes in there. You might not feel that added material is helpful either! At the moment the book has a good number of pages and probably shouldn't get much longer.

What I am wondering is where and whether to fit my amplifications in wikibooks. Your book is marked as considered complete and I don't particularly want to step on the authors' toes - you've all done a great job. However, the obvious move for me would be to just insert my pages in appropriate sequence in your book. For some topics, I could perhaps add them as appendices but probably not for all.

Do you have a view?Jimbotyson (discuss • contribs) 13:28, 25 July 2011 (UTC)

 * Hi Jimbotyson. Adding the pages to the book is not a problem at all.  In fact, I'd be happy to help in whatever way I can.  I did mark the book as complete as it covered all of the material I needed it to for my statistics class (I have my students buy a hard copy of a stats text and then use the wikibook for SPSS).  I'd love to see a fully developed statistics text on wikibooks that I could use instead.  So, let me know how I can help and feel free to add whatever content you'd like.--Rcragun (discuss • contribs) 13:38, 25 July 2011 (UTC)

title: User talk:Rcragun


text:
User talk:Billymac00

 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.

Control Systems
Thanks for your help, edits, and contributions to the Control Systems book. There arent a lot of people on this project (read: I'm generally the only one) with any knowledge in this area, so it's always a welcome change to get some help with the book. --Whiteknight (talk) (projects) 22:30, 30 November 2006 (UTC)

well, my time is limited, can definitely add screenshots/graphics from my ongoing project, things like PID interface screen etc.--Billymac00 17:02, 1 December 2006 (UTC)
 * Either way, any help is certainly very appreciated. Please let me know on my talk page if there is anything that you need, or any questions that you have. --Whiteknight (talk) (projects) 02:54, 4 December 2006 (UTC)

Control Systems/Resources
I rearranged the books that you added to this page. You had added those references under the heading "Wikibooks", so I moved them down the page, and renamed one of the headings "External Resources" to account for them. --Whiteknight (talk) (projects) 15:12, 21 December 2006 (UTC)

Engineering, etc
First, I wanted to thank you for your continued help on the Control Systems book. If you don't mind my asking, what is your knowledge in the area? Are you an engineer? It's been my goal to set this book up as a replacement for traditional control engineering textbooks, so that students (a group of people who traditionally have little money) can learn without having to buy expensive textbooks every semester. I think the book is getting close to the point were it can be advertised to colleges, and where we can ask external people to read and review it. What are your thoughts on the matter? --Whiteknight (talk) (projects) 02:46, 28 December 2006 (UTC)

 * Thanks for the reply! I'm a graduate student in controls myself, and most of the stuff i've been learning is theoretical and very specialized (We've been doing alot of satellite attitude control, for example). Because I'm just a student, and not part of the "real world", I don't always know the good practical ways to implement all the math stuff I've learned, and I certainly don't know how things are implemented in industry. Any help is always appreciated, talk to you later. --Whiteknight (talk) (projects) 15:55, 28 December 2006 (UTC)

Wikijunior:What can you use maths for?/Glossary

 * I only just saw this and know nothing about it, unless I just tried to add additional entries to the glossary.--Billymac00 (discuss • contribs) 22:34, 28 August 2016 (UTC)

title: User talk:Billymac00


text:
Talk:Blender 3D: Noob to Pro/Create a Clayman

the shaping of the head is really not clear at all. i couldn't grasp it. can someone help?

The harsh rules being applied when it comes to image deletion on this site is rather ridiculous. The author appears to have tried to add a public-domain image tag before, but a lot of images were removed anyway. Someone needs to adopt better fuzzy logic when dealing with images uploaded for illustration purposes that have no copyright tags. --Tybee 04:20, 25 October 2007 (UTC)

This page is no longer useful
The removal of images, along with the ambiguity and out-dated-ness of this article seems to only create a junk page that is better deleted, I feel.--Bullercruz1 (talk) 20:30, 9 March 2009 (UTC)

I don't want to have this page removed.
This page is for beginners. You will not learn how to add details. You need to improve it if you see it is not very good, not to delete it. AmieKim (discuss • contribs) 04:54, 10 July 2011 (UTC)


text:
Wikijunior:Europe/Belgium

Belgium is a small country in northern and western Europe. It shares borders with France, the Netherlands, Germany and Luxembourg. The capital city is Brussels. Other big cities are Antwerp and Liège. Belgium has been part of the European Union (EU) since the organization started in the 1950s and uses the Euro as its currency. Many of the main government buildings of the European Union are based in Brussels.

Belgium's History
Belgium became independent in 1830. Before that date the country was a part of the "Low Countries", an historical region corresponding to the modern states of the Netherlands, Belgium and Luxembourg. This group of states is now called Benelux. The "Low Countries" used to be a set of feudal states between the Holy German Empire and France with different degrees of autonomy. At the end of the Middle Ages, the region was economically and culturally flourishing. However several wars between the Dutch, the Spaniards, the English, the French, the Germans and the Austrians plundered the country.

After independence the country became a center of the Industrial Revolution in Europe and participated in the colonization of Africa. During the first half of the twentieth century the country became prosperous again. However the oil crisis of the seventies put the country (and in particular its southern part Wallonia) into an enduring economic crisis.

Belgium's Geography
Belgium is one of the smallest countries in Europe. The country is about 280 km (about 175 miles) long and about 145 km (about 90 miles) wide. Belgium's winters are mild with cool, windy summers. Belgium is often considered to be one of the low countries because it is mostly flat - the largest mountain is Signal de Botrange at 694 metres.

Belgium's People
The population of Belgium is just over 11 million. Belgium is divided into three different regions: Flanders, Wallonia, and Brussels. In Flanders most people speak Dutch. In Wallonia most people speak French. In Brussels the people speak both languages. About 80 percent of the Belgian population is Roman Catholic. Other religions practiced within the country include Islam and Judaism.

Education
Education is required from six to eighteen for Belgians, but many continue to study until around the age of 23.

Free pre-primary schooling (Dutch: kleuteronderwijs; French: enseignement maternel; German: Kindergarten) is provided to every child from the age of 2 years 6 months. In most schools the child can start in school as soon as they reach this age, so class size for the youngest children grows during the year. In the Flemish region, start dates are limited to 6 per year, after a school holiday period and the first school day in February. There are no formal lessons or assessments, and everything is done in a playful way. Although it is not required, more than 90% of all children in the age category attend pre-school. Most pre-schools are attached to a particular primary school. Pre- and primary schools often share buildings and other facilities. Some schools offer special pre-primary education for children with disabilities or other special needs.

Primary school (Dutch: lager onderwijs; French: enseignement primaire; German: Grundschule) consists of six years and the subjects given are generally the same at all schools. Primary schooling is free and age is the only entrance requirement.

When graduating from primary school around the age of 12, students enter secondary education. Here they have to choose a direction that they want to follow, depending on their skill level and interests.

Sports
The 1920 Summer Olympics were held in Antwerp, Belgium. Football (soccer) and cycling are especially popular. Jean-Marie Pfaff, a former Belgian goalie, is considered one of the greatest goalkeepers in the history of the game. With five victories in the Tour de France and many other cycling records, Belgian Eddy Merckx ranks high in the list of great cyclists. His hour speed record (set in 1972) stood for twelve years. Kim Clijsters and Justine Henin, two Belgian tennis champions, were highly ranked players.

Belgium's Sights
Tourists come to Belgium to see the cities and visit the museums and try out the food. Belgian chocolates are internationally known. Oostende is the most popular beach resort in Belgium.

Belgium has ten UNESCO World Heritage Sites including the Historical Centre of Bruges and La Grand-Place in Brussels.

title: Wikijunior:Europe/Belgium


text:
Wikijunior:Europe/Estonia

Estonia (Eesti in Estonian) is a small country in northern and eastern Europe. It shares borders with Russia and Latvia. The capital city is Tallinn. The other big cities are Tartu and Narva. Estonia joined the European Union in 2004 and uses the Euro as its currency.

Estonia's History
For centuries, Estonia was ruled over by Sweden and Russia and the population was a mix of ethnic Estonians, Germans, Swedes and Russians.

In 1918, Estonia had a brief period of independence that lasted until the Soviet Union took over the country. In 1991, Estonia gained its independence from the Soviet Union. In 2004, Estonia gained full membership into the European Union and started using the Euro as its currency in 2011.

Estonia's Geography
Estonia is one of the smallest countries in Europe covering an area of 45,227 km2 (17,462 sq mi). Estonia has more than 1,150 lakes and reservoirs, which coversg about 5 percent of the land. Nearly half the country's land is forested. Estonia generally has cool summers and cold winters. There are many islands off the north and west coast of Estonia. Saaremaa is the largest of Estonia's islands.

The Baltic Sea forms Estonia's western and northern edges. Although the country is small it has almost 4,000 km of coastline because the coast is so indented. The country's highest mountain, Suur Munamägi (Big Egg Mountain), is only 318 metres above sea level.

Estonia's People
The population of Estonia is 1,349,000. Estonians makes up about 65 percent of the population. Russians are the largest minority group. They make up around 30 percent of the population. About 46 percent of the population are practicing Christians. 36 percent of the population claim to have no religion. Muslims and Jewish faiths are also present throughout the country. Estonia, along with Czech Republic, is often considered to be the most irreligious (non-religious) country in the world.

The official language of Estonia is Estonian. A large minority speak Russian. Almost all Estonians are literate. Education is required for 9 years beginning at the age of 7. The country is very technically advanced with very high Internet usage and has seen many Internet start-ups including Skype. Estonia has had internet voting in national elections for many years.

Estonia's Sights
Estonia has 2 UNESCO World Heritage Sites, these are the Historical Centre of Tallinn and the Struve Geodetic Arc which is an imaginary line which runs through many countries including Estonia, Russia, Latvia, Lithuania, Ukraine and Moldova and during the 19th century was used to calculate the exact size and shape of the Earth.

Tallinn is extremely popular for cultural and night-life holidays for people from all over Europe. Elsewhere in the country, the cities of Tartu and Parnu are popular as well as the islands of Saaremaa and Hiiumaa for their natural landscapes.

title: Wikijunior:Europe/Estonia


text:
User talk:Annamuschinzki

Introduction
Hello, I am Anna Muschinzki, 17, from Holland. You might ask why I don't work on the Dutch wiki, but the English version is simply bigger and better (there you have it). I should add that I don't use the Dutch wiki much, but if I ever do, I'll work on it (that seems only fair). Anyway, talk ahead.

Welcome
Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You can sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page.

Good luck! -- Herby talk thyme 12:02, 1 December 2006 (UTC)

Welcome to the Muggles' Guide!
Always glad to see another active editor... and do stick around!

I am going to make a couple of requests of you, if I might...

 * On the Discussion page for the book, there is a link to the frameworks we use for new pages; that link is here also. We're sort of trying to keep a consistent look through all the Guide so that it will look better when it prints.

 * When you have a comment, as Herby says, if you sign it with four tildes ~, that will expand to your user ID and timestamp; this is useful so we know who's commenting and when.

If you have any questions, you have by to ask... though I would suggest that within focus (if I might steal his sig), the real main guy on this project, might have better answers than me. Chazz 22:41, 13 December 2006 (UTC)

Wikibooks Newsletter, Volume 1
(Wikibooks gazette home | Discuss | Bulletin board | Subscription list)

This is a short newsletter that is being distributed to all active wikibookians. You are getting this message because you are recognized as an established contributor to the project. This newsletter will be distributed on a regular basis to help share news, information, and tips. It comes from a bot account, User:The Staff. User:The Staff is currently operated by a team of wikibooks admins, the complete list of which is available on the user page of the bot. If you would like to not receive this newletter anymore, please remove your name from the list at Active wikibookians.

The work you do at Wikibooks is greatly appreciated. However there are plenty of other opportunities for you to get involved and help us to create a thriving Wikibooks community. We are sure that there are things we can do to help you and your understanding of Wikibooks and similarly there are certainly things you could do to help Wikibooks become a better place.

We would like to ask all wikibookians to add the Bulletin Board to your watchlists. The Bulletin Board is a fast and easy way for wikibookians to communicate important news and events to the entire community. If you have important news to share with the community, you can feel free to add your own entry to that page.

If you have general questions or comments about Wikibooks, you are welcome to post a message on The Staff Lounge, a free discussion area. Your input would also be welcomed in the Votes for Deletion and Requests for Adminship discussion pages. These pages are all active discussion areas that help to shape the Wikibooks community as a whole.

Sometimes it is easy to forget that the Wikibooks community is much larger and more diverse then the people who work in a single book, or on a single bookshelf. Hopefully, together we can all make Wikibooks a better place, and a more valuable educational resource.

The Staff 04:16, 19 December 2006 (UTC)

title: User talk:Annamuschinzki


text:
User:69.11.59.65

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks. Xania 21:56, 30 November 2006 (UTC)

title: User:69.11.59.65


text:
Radiation Oncology/Heterotopic ossification

Etiology

 * HO is a dystrophic calcification, occurring in the setting of soft-tissue insult
 * Traumatic - fractures, dislocations, contusions, operations, burns
 * Neurogenic - spinal trauma, head injury
 * Genetic - fibrodysplasia ossificans progressive (FOP), progressive osseous heteroplasia (POH), Albright's hereditary osteodystrophy (AHO)
 * Locations
 * Hip most common - typically after ORIF (52% any grade, 19% Grade III-IV) or THA (43% any grade, 9% Grade III-IV)
 * Elbow common with burn injuries
 * Other major joints sometimes affected
 * Rarely soft tissue locations not associated with joints (quadriceps contusions, abdominal muscles after surgery)
 * Clinical Presentation
 * Most commonly incidental finding on radiograph
 * If symptomatic, typically decreased range of motion; can sometimes present as complete ankylosis
 * Risk factors (best studied for hip; limited info for other organs)
 * History of HO most important (60-90% risk)

Pathophysiology

 * Inappropriate differentiation of pluripotent mesenchymal cells into osteoblasts
 * Dysfunction of bone formation/remodelling process
 * Components necessary
 * Osteogenic precursor cells
 * Inducing agents (BMPs likely involved)
 * Permissive environment
 * RT 30/1 given to rats within first week of healing prevents bone repair, but same dose during second week has no effect. It is speculated that osteogenic progenitors are present early, and are radiosensitive due to high mitotic rate as they are proliferating and differentiating into osteoblasts and chondrocytes
 * From clinical trials, it appears this window is during first 3-4 days

Classification
Brooker Classification: (radiographic)
 * I - islands of bone within the soft tissue (clinically silent)
 * II - bone spurs from the pelvis or proximal femur; >= 1 cm gap between opposing surfaces (clinically insignificant)
 * III - bone spurs from the pelvis or proximal femur; < 1 cm gap between opposing surfaces (clinically significant)
 * IV - ankylosis (clinically significant)

Treatment Overview

 * Clinically significant HO - surgery
 * Prophylaxis modalities
 * NSAIDs (Indomethacin)
 * RT - better by meta-analysis, but absolute gain <2%. Dose dependent, with 6/1 comparable to NSAIDs, and higher doses better
 * RT schedule
 * Typically 7 Gy - 8 Gy single fraction; 5.5/1 appears insufficient
 * Timing <4 hours pre-operatively OR <72 hours post-operatively
 * RT side effects
 * Carcinogenesis concern (see )
 * Trochanteric non-union (but data from older surgical techniques that had high nonunion rates in nonirradiated patients as well)
 * Testicular tolerance (for hip prophylaxis)
 * One abstract suggests that 8 Gy hip dose results in mean testicular dose of 25 cGy -> reversible azoospermia
 * Testicular shielding reduced dose by ~50%
 * Data mostly available for hip, although other sites are treated as well

RT vs. NSAIDs
Meta-analysis
 * Greece, 2004 PMID 15465207 -- "Radiotherapy vs. nonsteroidal anti-inflammatory drugs for the prevention of heterotopic ossification after major hip procedures: a meta-analysis of randomized trials." (Pakos EE, Int J Radiat Oncol Biol Phys. 2004 Nov 1;60(3):888-95.)
 * Meta-analysis. 7 randomized trials, 1143 patients.
 * Prevention: Brooker Grade 3-4: RT more effective than NSAIDs, RR 0.42 (SS), absolute risk difference 1.8%; Any Grade: RR 0.75 (NS)
 * Subgroups: early preop (16-20 hours) not effective; 6 Gy/fx comparable to NSAIDs; higher doses better (SS)
 * Conclusion: RT almost twice more effective than NSAIDs, but absolute benefit gain small (<2%)

Randomized
 * Wurzburg, Germany (1995-1996) -- RT 7/1 vs NSAID x 2 weeks
 * Randomized. 100 patients, total hip replacement. Arm 1) prophylactic RT 7/1 given 16-20 hours before surgery vs. Arm 2) NSAID (Voltaren 2 x 75 mg/d x 2 weeks) starting first postop day. Historical control 100 patients with no prophylactic therapy
 * 1998 PMID 9788422 -- "Preoperative irradiation versus the use of nonsteroidal anti-inflammatory drugs for prevention of heterotopic ossification following total hip replacement: the results of a randomized trial." (Kolbl O, Int J Radiat Oncol Biol Phys. 1998 Sep 1;42(2):397-401.)
 * Outcome: HO preop RT 48% vs. NSAID 11% (SS). For clinically significant HO (Brooker III-IV), no difference between RT and NSAID. Historical control 68% (SS)
 * Conclusion: RT and use of NSAID can reduce incidence of clinically relevant HO after THR

Risk of Long Bone Non-Union with NSAIDs
 * JBJS, 2003 PMID 12892193 -- "Heterotopic ossification prophylaxis with indomethacin increases the risk of long-bone nonunion." (Burd TA, J Bone Joint Surg Br. 2003 Jul;85(5):700-5.)
 * 282 patients with open reduction and internal fixation of an acetabular fracture randomized to XRT or indomethacin.
 * XRT was 800 cGy x 1 within 72 hrs of surgery. Indomethacin was 25 mg tid x 6 wks.
 * When comparing patients who received indomethacin with those who did not, a significant difference was noted in the rate of nonunion (26% v 7%; p = 0.004)
 * Conclusion: Patients with concurrent fractures of the acetabulum and long bones who receive indomethacin have a significantly greater risk of nonunion of the fractures of the long bones when compared with those who receive XRT or no prophylaxis.

Fractionation (Hip)

 * Initial dose chosen in the 1980s was 20/10, based on pediatric observations of bony growth inhibition
 * In 1988, a retrospective comparison of 20/10 with 10/5 showed no difference. RT was effective if delivered <=96 hours after surgery
 * Also in 1988, a retrospective review of 7/1 schedule found it effective. All but 1 patients were treated <=72 hours
 * In 1992, randomized comparison of 10/5 vs. 8/1 in <=96 hours after surgery found no difference
 * In 1994, randomized comparison of preop RT 7-8/1 in <4 hours prior to surgery vs. postop RT 7-8/1 in <48 hours after surgery found no difference
 * In 1995, in order to bring the dose even lower, retrospective comparison of 7/1 with 5.5/1 in <=72 hours after surgery found higher failure rate with 5.5 Gy
 * In 1997, randomized trial of preop RT 7/1 in <4 hours vs. postop RT 17.5/5 in <72 hours found benefit for postop RT. The poor outcomes were seen in patients with significant disease (Grade III-IV) treated with preop RT. There was no difference in no/low risk disease (Grade 0-II)
 * In 2003, a randomized comparison of 10/5 vs. 5/2 in <=96 hours after surgery found no difference in clinical HO
 * Therefore, post-op RT 7/1 within 72 hours (and possibly up to 96 hours) is effective. RT 5/2 post-op may be effective clinically, but RT 5/1 post-op was not effective. Preop RT 7/1 is effective for low disease burden (preventive, or Grade I-II) if given <4 hours prior to surgery, and may be easier logistically

 * Cornell, 2003 PMID 14513439 -- "The efficacy of 500 CentiGray radiation in the prevention of heterotopic ossification after total hip arthroplasty: a prospective, randomized, pilot study." (Padgett DE, J Arthroplasty. 2003 Sep;18(6):677-86.)
 * Randomized. 59 patients. Treated with 10/5 vs. 5/2 in <=96 hours
 * Treatment failure: 10/5 3% vs. 5/2 7% (p=0.09)
 * Conclusion: 5/2 appears effective in preventing clinically significant HO

 * German Cooperative Group, 2001 PMID 11697322 -- "Radiation prophylaxis for heterotopic ossification about the hip joint--a multicenter study." (Seegenschmiedt MH, Int J Radiat Oncol Biol Phys. 2001 Nov 1;51(3):756-65.)
 * Patterns of care study in 1999. 114 institutions, 5989 hips treated.
 * RT dose: preop 7/1 most common (5-10 Gy); postop 7/1 most common (5-16). RT timing: preop 0.5-24 hours; postop 1-120 hours
 * Failure rate: radiographic 11%, functional 5%. If treated >8 hours pre-op or >72 hours post-op higher failure rate
 * Conclusion: Single dose 7 Gy has become standard in most institutions, either preop or postop

 * Erlangen HOP2, 1997 (1992-1995) PMID 9300751 -- "Prevention of heterotopic ossification about the hip: final results of two randomized trials in 410 patients using either preoperative or postoperative radiation therapy." (Seegenschmiedt MH, Int J Radiat Oncol Biol Phys. 1997 Aug 1;39(1):161-71.)
 * Randomized. 161 patients. Preop RT 7/1 (<4 hours) vs. Postop RT 17.5/5 (<=96 hours). Portals periacetabular and intertrochanteric soft tissues
 * Failure rate: radiological overall 11%; preop 19% vs. postop 5% (SS). Functional 14% Highest failure in pre-op RT for Brooker Grade III-IV (39%), otherwise preo-op and post-op outcomes comparable
 * Conclusion: preop RT inferior to postop RT, except in Grade I-II, where no difference

 * Erlangen HOP1, 1997 (1987-1992) PMID 9300751 -- "Prevention of heterotopic ossification about the hip: final results of two randomized trials in 410 patients using either preoperative or postoperative radiation therapy." (Seegenschmiedt MH, Int J Radiat Oncol Biol Phys. 1997 Aug 1;39(1):161-71.)
 * Randomized. 249 patients, high risk. Post-op RT 10/5 vs. 17.5/5. Portals periacetabular and intertrochanteric soft tissues
 * Failure rate: radiological overall 9%; low dose 11% vs. high dose 6% (NS). Functional 7%
 * Conclusion: no difference in post-op dose

 * Lahey Clinic, 1995 PMID 7713977 -- "Single-dose irradiation for the prevention of heterotopic ossification after total hip arthroplasty. A comparison of doses of five hundred and fifty and seven hundred centigray." (Healy WL, J Bone Joint Surg Am. 1995 Apr;77(4):590-5.)
 * Retrospective. 107 hips in 94 patients. Post-op RT, either 7/1 (88 hips) or 5.5/1 (19 hips)
 * Failure rate: radiographic 7/1 10% vs. 5.5/1 63% (SS); symptomatic 0/88 vs. 2/19
 * Conclusion: recommend 7/1

 * Rochester, 1994 PMID 8083129 -- "Randomized trial comparing preoperative versus postoperative irradiation for prevention of heterotopic ossification following prosthetic total hip replacement: preliminary results." (Gregoritch SJ, Int J Radiat Oncol Biol Phys. 1994 Aug 30;30(1):55-62.)
 * Randomized, multi-institutional. 98/122 patients with risk factors, following elective hip replacement. Treated with pre-op RT 7-8/1 <4 hours vs. post-op RT 7-8/1 <48 hours. Fields to soft tissues between periacetabular region of pelvis and intertrochanteric portion of femur. Median F/U 9.5 months
 * Failure rate: radiographic preop 26% vs. postop 28% (NS); clinical 2% vs. 5% (NS)
 * Conclusion: no difference between preop and postop

 * Rochester, 1992 PMID 1541613 -- "Prevention of heterotopic ossification with irradiation after total hip arthroplasty. Radiation therapy with a single dose of eight hundred centigray administered to a limited field." (Pellegrini VD Jr, J Bone Joint Surg Am. 1992 Feb;74(2):186-200.)
 * Randomized. 62 hips in 55 patients at high risk. Treated with postop RT 8/1 vs. 10/5 limited field (includes lateral aspect of greater trochanter). Minimum F/U 6 months
 * Failure rate: Single fraction 21% vs. multifraction 21%
 * Conclusion: Single fraction effective.

 * Lahey Clinic, 1988 (1981-1986) PMID 3136510 -- "Heterotopic bone formation after hip surgery: prevention with single-dose postoperative hip irradiation." (Lo TC, Radiology. 1988 Sep;168(3):851-4.)
 * Retrospective. 23 patients at high risk. RT post-op 7/1, given <=72 hours. Minimum F/U 6 months
 * Failure rate: 4%
 * Conclusion: 7/1 appears comparable to fractionated doses

 * UCLA, 1988 (1980-1986) PMID 3343154 -- "The use of postoperative irradiation for the prevention of heterotopic bone formation after total hip replacement." (Sylvester JE, Int J Radiat Oncol Biol Phys. 1988 Mar;14(3):471-6.)
 * Retrospective. 28 patients at high risk. 1980-1982 RT 20/10, then 1982-1986 10/5. Median F/U 1 year
 * Conclusion: 10/5 as effective as 20/10, and should begin as early as possible, in <4 days

Other sites
Elbow
 * Incidence
 * Isolated dislocation: 3-10%
 * Dislocation + fracture: 15-20%

 * Rush Univerisity; 2011 PMID 22016869 -- "Radiation therapy for heterotopic ossification prophylaxis afer high-risk elbow surgery." (Strauss JB, Am J Orthop (Belle Mead NJ). 2011 Aug;40(8):400-5.)
 * Retrospective. 44 patients, status post surgery and single-fraction radiation, with NSAID use. Median follow up 4.5 months
 * Outcome: radiographic evidence of HO in 48%, however in all cases small and not functionally significant. No complications
 * Conclusion: RT in combination with NSAID is safe and efficacious

 * Cleveland Clinic; 2010 (1993-2006) PMID 20637977 -- "Postoperative single-fraction radiation for prevention of heterotopic ossification of the elbow." (Robinson CG, Int J Radiat Oncol Biol Phys. 2010 Aug 1;77(5):1493-9.)
 * Retrospective. 36 patients, 72% had evidence of HO prior to surgery, elbow surgery followed by single fraction 7 Gy RT (median 1 day postop). Median F/U 8.7 months
 * Outcome: new HO 8%; all patients improvement in ROM from baseline
 * Conclusion: RT after surgery associated with favorable functional and radiographic outcomes
 * Comment (PMID 21195881): most of these were for secondary prophylaxis, after development of HO, rather than primary prophylaxis after the initial injury

 * NYU; 2003 PMID 15156818 -- "Prevention of heterotopic ossification at the elbow following trauma using radiation therapy." (Stein DA, Bull Hosp Jt Dis. 2003;61(3-4):151-4.)
 * Retrospective. 11 patients. Trauma followed by ORIF, and post-op RT 7/1 in <=72 hours. Minimum F/U 12 months
 * Failure: radiographic 27%, clinical 9%. No healing complications

 * Frankfurt; 2001 (Germany) PMID 11341414 -- "Radiation therapy for the prevention of heterotopic ossification at the elbow." (Heyd r, J Bone Joint Surg Br. 2001 Apr;83(3):332-4.)
 * Case series. 9 patients with clinically significant HO at elbow. Post-op RT, 5 patients 5/2, 4 patients 6-7/1. Mean F/U 7.7 months
 * Failure rate: 0; 8/9 patients had clinical improvement

 * Miami; 1998 PMID 9160948 -- "Early excision of heterotopic ossification about the elbow followed by radiation therapy." (McAuliffe JA, J Bone Joint Surg Am. 1997 May;79(5):749-55.)
 * Retrospective. 8 patients with HO at elbow. Post-op RT 10/5. Median F/U 4 years
 * Failure: 0

Re-treatment

 * Lahey Clinic, 2001 PMID 11459729 -- "Re-irradiation for prophylaxis of heterotopic ossification after hip surgery." (Lo TC, Br J Radiol. 2001 Jun;74(882):503-6.)
 * Case reports. Single dose-reirradiation
 * Conclusion: possible and safe

Dosimetry

 * Louisville; 2008 PMID 18982191 -- "Evaluation of scrotal and testicular radiation doses for heterotopic ossification prophylaxis." (Patel H, Am J Orthop. 2008 Sep;37(9):E163-6.)
 * Prospective. HO in hip/femur region. TLD placed inside and outside testicular shield
 * Outcome: mean inside dose 10 cGy, mean outside dose 20 cGy
 * Conclusion: Given that sperm abnormalities have been reported with 15 cGy, young males should be counseled and treated with a testicular shield

Second malignancy risk
1 case report exists in the literature

 * U. Mississippi; 2012 PMID 24674090 - -- "Radiation-induced sarcoma following radiation prophylaxis of heterotopic ossification." (Mourad WF, Pract Radiat Oncol. 2012 Apr;2(2):151-154.)
 * 7 Gy x 1. High grade undifferentiated sarcoma of the proximal thigh diagnosed 16 months after prophylactic RT in a 51 yo.

 * University of Cambridge; 2014 PMID 25089852 -- "Prophylactic radiotherapy against heterotopic ossification following internal fixation of acetabular fractures: a comparative estimate of risk." (Burnet NG, Br J Radiol. 2014 Oct;87(1042):20140398. doi: 10.1259/bjr.20140398. Epub 2014 Aug 4.)
 * Estimation of competing risks:
 * Risk of fatal cancer by ICRP (International Commission on Radiologic Protection) risk: 1:1,000 to 1:10,000
 * Risk of fatal cancer by Trott and Kemprad method: 1:3,000; may rise to 1:2,000 for younger patients and fall to 1:6,000 for elderly patients
 * Risk of gastric bleeding or perforation from indomethacin: 1:180 to 1:900 in older patients
 * Risk of death from reoperation for HO: 1,4000 to 1:30,000
 * Conclusion: Results endore multidisciplinary management

Reviews

 * Harvard, 2006 - PMID 16863921 — "Heterotopic ossification: Pathophysiology, clinical features, and the role of radiotherapy for prophylaxis." Balboni TA et al. Int J Radiat Oncol Biol Phys. 2006 Aug 1;65(5):1289-99.


text:
Cookbook:Jamaican Chicken Fingers with Honey-Mustard Sauce

 * Jamaican Cuisine | Chicken entree

Ingredients

 * 1 pound (500 g) boneless, skinless chicken breast
 * 2 egg whites
 * 1 tablespoon (15 ml) honey
 * 3 cups (750 ml) cornflakes, crushed to make 1 ½ cups
 * 1 ½ teaspoons (7.5 ml) jerk seasoning
 * ½ cup (125 ml) honey-mustard salad dressing
 * 1 teaspoon (5 ml) grated lime peel
 * 2 mangoes, seeded, peeled, and sliced

Procedure

 * 1) Preheat oven to 450°F.
 * 2) Trim fat from chicken.
 * 3) Cut chicken lengthwise into ¾ inch-wide strips.
 * 4) In shallow dish whisk together egg whites and honey.
 * 5) In another shallow dish combine cereal and jerk seasoning.
 * 6) Dip chicken pieces in egg mixture and then roll dipped pieces in cereal mixture.
 * 7) Place the cereal-coated pieces in a single layer on an ungreased baking sheet.
 * 8) Bake at 450°F for 11–13 minutes or until tender and no longer pink.
 * 9) While baking, in small bowl stir together salad dressing and lime peel.
 * 10) Serve chicken and mango slices with salad dressing mixture.

Notes, tips, and variations

 * This recipe can also be served as an appetizer; it will make 12 servings.
 * Jerk seasoning can be bought ready-made or you can follow the recipe for Jamaican jerk spice


text:
Cookbook:Honey Mustard Salad Dressing

| American Cuisine | Salad Recipes | Salad dressing

There are many variations of this salad dressing. This should serve as a basic template.

Ingredients

 * 1 tablespoon (15 ml) Dijon-style mustard
 * 2 tablespoons (30 ml) honey
 * 3 tablespoons (45 ml) lemon juice
 * ½ teaspoon (7.5 ml) salt
 * ½ teaspoon (7.5 ml) freshly-ground black pepper
 * ¾ cup 250 ml safflower oil

Procedure

 * 1) Combine the mustard, honey, lemon juice, salt, and pepper.
 * 2) Gradually whisk the safflower oil into the mixture to form a creamy dressing.

Notes, tips, and variations

 * When whisking in a bowl on the counter, put a towel under it to keep it from spinning around.

title: Cookbook:Honey Mustard Salad Dressing


text:
User:Tknott

Hello. My name is Tyler Knott.

title: User:Tknott


text:
Neapolitan/501 Neapolitan verbs/trasì

trasì
 * to enter

1. Innecativo
 * a. presente
 * {| class="wikitable"

 * align="left"|io
 * align="left", bgcolor="#c9c8e9"|traso
 * align="left"|tu
 * align="left", bgcolor="#c9c8e9"|trasi
 * align="left"|isso/essa
 * align="left", bgcolor="#c9c8e9"|trase
 * align="left"|isso/essa
 * align="left", bgcolor="#c9c8e9"|trase

 * align="left"|nuje
 * align="left", bgcolor="#c9c8e9"|trasimmo
 * align="left"|vuje
 * align="left", bgcolor="#c9c8e9"|trasite
 * align="left"|isse/lloro
 * align="left", bgcolor="#c9c8e9"|trasono
 * }
 * align="left"|isse/lloro
 * align="left", bgcolor="#c9c8e9"|trasono
 * }

Participio passato
 * trasuto

title: Neapolitan/501 Neapolitan verbs/trasì


text:
User talk:Lpkeys

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You can sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page.

Good luck! -- Herby talk thyme 08:55, 1 December 2006 (UTC)

title: User talk:Lpkeys


text:
User talk:211.30.197.213

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

-- Herby talk thyme 09:36, 1 December 2006 (UTC)

Really
It would be worth signing up so that you can work on the book a little better. I'll remove the tag anyway. -- Herby talk thyme 09:36, 1 December 2006 (UTC)

Help me obi-wan

title: User talk:211.30.197.213