text:
Cameron, TX, United States1 week ago on sellswell.us
For sale $2,000mercury green 1970 27,623mi air bags
Email me for more details in848talmadgesugden post.com1968 Mercedes unimog S 404.1 Pritsche Troop Carrier Air Bags, Air Conditioning, Alarm, Anti Lock Brakes, Power Lock, Premium Sound, Reconditioned, Renewed Tax, Inspection Cert,
Santa Fe Springs 90670, CA, United States1 week ago on adpost.com
For sale $2,000mercedes green 1968 27,623mi air bags
Email me for more details : ...@post.com 1968 Mercedes unimog S 404.1 Pritsche (Troop Carrier)
Fenton 63026, MO, United States1 week ago on trucks2cars.com
For sale $1,962mercedes m class 1962 4x4 gasoline
Mercedes-Benz : Other Unimog 404 S 1962 mercedes benz unimog 404 s factory winch 4 x 4 ultimate
mercedes fenton mo
Sandy UT, United States1 week ago on ebay.com
For sale Auctionhummer truck
This is one of the coolest trucks I've ever owned. This truck is a 95 Range Rover Classic with custom Uni-Mog axles. This trucks has more ground ...tires. The rims are some custom beadlock rims. They look awesome on this rover! The Unimog axles have been converted to u-joint style yokes so they can easily be ...
h1 for sale hummer us,
hummer sandy ut
Belton 29627, SC, United States1 week ago on trucks2cars.com
For sale $13,000mercedes m class 1968 truck
Mercedes-Benz : Other ... mercedes military unimog truck
Darby 59829, MT, United States2 weeks ago on ebay.com
For sale Auction2003
Unimog flu-419 see small implement excavator. 5 engine hours on 2003 government rebuild. 2184 Total Miles. Excellent Shape, New paint. Everything works. Includes 4 brand new mill-spec Michelin xl 12.5R20 radials. Hydraulic jack Hammer, Hydraulic Drill, bits & tool kit. Spare Tire. All Military Manuals. Ready to Work or Play.
El Paso 88545, TX, United States3 weeks ago on ebay.com
For sale $13,500mercedes gasoline
Mercedes benz unimog 404 running good- gasoline- 6 cylinders
Vallejo CA, United States3 weeks ago on ebay.com
For sale $61,000mercedes 1989 truck
You are looking at an Excellent Condition U1550L Double Cab (Doka) Mercedes Benz Unimog Firetruck. This was manufactured on December 19th, 1989 and delivered to a Swedish Fire Department. ...this truck unique. In addition its documentation shows that it was ordered with the factory 210hp, Intercooled 366A Turbo Charged engine. Overall condition is excellent. This Unimog will be imported ... ...
mercedes vallejo ca
Santa Clara 95053, CA, United States3 weeks ago on ebay.com
For sale Auctionmercedes 1985 77,777km truck air conditioning
Beautiful 1985 Mercedes-Benz Unimog 1300L. This truck is in excellent condition, was restored and painted about 6 years ago. Everything that was wet painted was stripped to bare metal, epoxy primed, sealed, color painted, and clear coated. Any thing that was powder-coated was sandblasted, powdered, and clear coat for uv protection. The bed was restored and Line-...
unimog california
Edmonton 42129, KY, United States1 month ago on ebay.com
For sale Auctionjeep commander green 1971 18mi truck
Go anywhere, do anything, the only limit is your imagination!The Pinzgauer is a legendary military truck produced by Steyr Daimler Puch for the Swiss military. It is a 4x4 go anywhere type vehicle. The Pizgauer has a four cylinder, air-cooled engine, 5 speed transmission, independent front and rear lockers, all shift on the fly for an incredible ...
jeep commander
Windsor 17366, PA, United States1 month ago on ebay.com
For sale Auctionmercedes 1985 pickup
Mercedes Unimog Front Loader & Rear Backhoe. Purchased from the Town Highway Dept. Has a New York State Title. Sold as is Pickup or drive away only.
Fayetteville 28306, NC, United States1 month ago on sellswell.us
For sale $32,500mercedes 1986 35,000km truck
...works, is 100 complete. Needs nothing. You will have a hard time finding an unimog in a better condition than this. This unimog is currently in Germany. I can have ...
Lothian 20711, MD, United States1 month ago on ebay.com
For sale $29,995standard gold 1998 180mi 4x4
12.00 listed is A rugged off-road emp proof ex-military M1079 camo camper truck that will go anywhere you want it to. 1,050 original miles!. yes! 1,050 original miles. this truck is like new. this truck comes equipped with A snorkel intake and great ground clearance. the 3116 cat turbo inter-cooled engine runs like ...
Yakima, WA, United States1 month ago on craigslist.org
For sale $10,500mercedes 1965 convertible
1965 unimog frame up restore just needs the little things finished up. Have the German title for it and Washington state title. the tires are good. $10500 o.b.o or trade for something cool.
Alpharetta 30022, GA, United States1 month ago on trucks2cars.com
For sale $1,962mercedes 1962 250mi coupe
Mercedes-Benz : Other 404S Extraordinary Original 1962 Mercedes Unimog 404 Military Top Condition Low Miles
Follow this search and create an email alert for Unimog
- Relevance
- Popularity
- Date
- Price
My chat status:
Do not disturb
Show in my chat list:
Most popular
All contacts
My options:
Show online users first
Hide offline users
Small chat list
Medium chat list
Large chat list
Enable sound notifications
Enable desktop notifications
Enable video-chat (Beta version)
Enable my local Web TV (Beta version)
Invite a friend


text:
HOUSTON – Apache helicopter pilot James "Robin" Waltress wore a red scarf on Christmas Day as he flew missions in Afghanistan. "I just told people I was Santa Claus," said Waltress. "The guys on my helicopter gave me a hard time about it. You could see it a mile away against my uniform." The […]
Tag Archives | Janie McGee
Thank you!
By Floyd Ingram | 8:05 AM | February 24, 2014 | Business, Living, News
- MDWFP museum summer camp registration now open March 25, 2015
- DANIEL GARDNER: We'd best pay attention March 28, 2015
- Yokohama Mississippi nearing completion March 28, 2015
- One dead in crash south of Okolona March 28, 2015
- First Turkey March 28, 2015
- Coggins to lead Lenten Luncheon March 31, 2015
- Houston plans for farmer's market March 31, 2015
- LETTER TO THE EDITOR: Help us "Save a Child" March 30, 2015
- Circuit Court term opened Monday March 30, 2015
- BIRTH: Emmitt Verell Wright March 29, 2015
- Tg007.net: if you want the town to grow stop taxing the busin...
- i'm engaged, you can be too | architecture | equality: […] the design and related impacts of a new...
- Royal Chocolate: Great to see progress in my hometown!...
- Cherry Walker: I had heard this woman's name before so I did som...
- Kathryn: I'd say that Mr. Scott nailed it. Well said, sir...
aberdeen amory Army arrest Baptist basketball Bruce business Calhoun City Calhoun County chickasaw Chickasaw County Christmas city County Court crime education Eupora featured fire floyd football Franklin houlka Houston ingram Jones Mantee Mississippi Money Moore MSU Okolona Parker police Pontotoc Prairie school schools Smith Tupelo Vardaman west point Woodland

subset: commoncrawl


text:
Preventing and ending violence against women and girls is a top priority for Zonta International and its nearly 30,000 members in more than 1,200 Zonta clubs around the globe.
Through the Zonta International Strategies to End Violence Against Women (ZISVAW) program, Zonta International has assisted victims of violence and human trafficking around the globe by: raising awareness of, and improving education about, violence against women; promoting and enforcing local laws and policies that protect women and victims of violence; and providing medical, legal, rehabilitation and reintegration services for survivors of violence. Locally, Zonta clubs dedicate time and resources to supporting projects that prevent violence against women and support victims of violence in their communities.


text:
Claim Your Business
Is this your business?
With a free Houzz profile, you can:
- Be found by over 20 million homeowners
- Create a free, beautiful, mobile-ready website
- Collaborate with clients more effectively
Carol Daily, Owner
2905 Old Canton Rd, Jackson, MS 39216
78 Furniture and Accessories in Jackson
Vicksburg, MS, 39180-5782
Custom handmade cypress wood swings and childrens furniture. https://www.cypresswoodswings.com https://www.childrenstableset.com Read More
Roundup, MT, 59072
Jackson, MS, 39288
We believe thriving small manufacturers fuel a sustainable flourishing economy. AllenBooth.com carries furnishings made by America's craftsmen. Master carpenters, metalsmiths,... Read More
Brookhaven, MS, 39601
We are south Mississippi's favorite stop for home furnishings. We have huge showroom stocked with all kinds of furniture for your home, whether your taste is traditional, or more... Read More
Flowood, MS, 39232
yazoo, 39194
Re purposed and Reclaimed wood designer Read More
Vicksburg, MS, 39183
yes Read More
Jackson, MS, 39213
Ridgeland, MS, 39157
Jackson, MS, 39204
Flowood, MS, 39232
Flowood, MS, 39232
Ridgeland, MS, 39157


text:
Now Playing
Connect with Us
Podcasts & RSS Feeds
|All Content
|View all podcasts & RSS feeds
Most Active Stories
- Ron Rash on 'Serena,' 'The World Made Straight' and Knowing When to End a Story
- Dancing the Neural Tango: Dr. Summa-Chadwick Talks Music & Neurological Therapy
- Start It Up Episode 18: The Ins and Outs of Managing Employees
- 10 Days of Giveaways During WUTC's Membership Drive
- 'Dorothy Parker Would Not Approve' Is Stacy Chapman's Prize-Winning Debut Play
The Two-Way
We Should Have Known: Megaseconds Are Much Longer Than Milliseconds
Typos and mistakes are part of the news business — as anyone who regularly reads this blogger surely knows. We don't want them to happen, but they do.
Sometimes they're kind of quirky and educational.
Check out this correction from The New York Times:
"A critic's notebook article on Monday about the prevalence of standing ovations at Broadway shows described incorrectly the quickness with which audience members appeared to be on their feet at a performance of the current revival of Death of a Salesman. Their ovation seemed to occur within a millisecond — one-thousandth of a second — not a megasecond, which is one million seconds."
Now, this blogger can imagine himself making that same mistake. Sure, "milli" certainly isn't the same as "mega." But you get mixed up sometimes. So there willl be no fun poked at the Times here. As they say, "there but for the grace of God go I."
And, after all, that mistake prompted a bit of research that actually taught us something: a megasecond lasts 11.57 days.
Which would be quite slow for a standing ovation.
By the way, NPR's corrections are posted here.
(H/T to brother Jim.)


text:
Stealing Identities
[Sorry, the video for this story has expired, but you can still read the transcript below. ]
SPENCER MICHELS: Tracey Thomas, a 32-year-old computer programmer from Berkeley, California, had her identity stolen two years ago. She had gone to the hospital emergency room and presented her insurance card, which contained her Social Security number, to the admitting clerk.
TRACEY THOMAS, Identity Theft Victim: Her name is very similar to my name, and her age is very similar to my age. So, you know, when I presented my insurance information, she just stole it, wrote it down and made off with it.
SPENCER MICHELS: Thomas, who has since become an advocate for identity theft victims, discovered her loss several months later, but it was too late. Her imposter had opened charge accounts in Thomas' name and didn't pay the bills, ruining Thomas' credit.
TRACEY THOMAS: I was prevented from buying a house. I had… my finances were destroyed, I could not get credit in my own name because of all the fraud that was on my credit report.
JAMES COMEY, U.S. Attorney: We are determined to find those criminals who are using this information to rip off the consumers.
SPENCER MICHELS: The Justice Department says 700,000 Americans were victims of identity theft in 2001, some in big scams like that perpetrated by Phillip Cummings. He was arrested in New York in November, and charged with illegally downloading private information on 30,000 people from credit bureaus, using passwords he obtained in his job. All the 9/11 hijackers had false identities, though they used them for terrorism and not for personal profit. Their attacks heightened public awareness of the problem. Identity theft occurs when someone takes pieces of someone else's identifying information– like a driver's license or Social Security card number– and in most cases uses it to make money or order goods. Although victims are not responsible for paying off fraudulent credit card bills over $50, the costs in time and worry are vast.
TRACEY THOMAS: It takes an enormous amount of time, headache, trial, tribulation. It's very difficult to clear all those frauds off of your credit report. All of this was the research that I did when I was investigating this crime.
SPENCER MICHELS: Victims spend an average of nearly two years clearing up their credit. Thomas invested months investigating her own case, and she finally tracked down the woman who stole her identity. The woman was arrested and convicted.
SPOKESMAN: Florida.
SPENCER MICHELS: The district attorney in San Francisco uses this book of fake driver's licenses, all manufactured by the same criminal, to illustrate how one thief can steal the identity of somebody else and use it to cash checks. Assistant D.A. Jerry Coleman:
JERRY COLEMAN: The same guy, but different licenses from all around the country. Here's Florida and Colorado. And for each of the driver's licenses he's got, he's got checks to go with it that he cashes for small amounts of money. But on one given day he can get hundreds and hundreds of dollars from these check cashing companies.
SPENCER MICHELS: Coleman himself was an identity theft victim.
JERRY COLEMAN: Curiously, my case was a dirty desk clerk at a hotel in San Jose where I was giving a lecture to cops on identity theft, who ripped me off by skimming– that's… that's a huge form of identity theft, skimming– all the information off the back of my credit card, the magnetic stripe on my credit card, onto a hotel room key, and then he sold the room keys along with the credit card numbers that he got by imprinting the card to a bunch of his druggie buddies in the South Bay.
SPOKESMAN: Well, your honor, I believe we have a proposed…
SPENCER MICHELS: In Superior Court, Coleman has prosecuted many cases of ID theft, including recently that of a 34-year-old drug user and his female codefendant.
JERRY COLEMAN: He had in his possession five different forms of both stolen and counterfeit ID's– driver's licenses, many of them; credit cards; checks; Social Security cards, and passports.
SPENCER MICHELS: The DA worked out a deal with the public defender, who addressed the judge.
SPOKESMAN: He wants to enter pleas of "guilty" to the charges of conspiracy to commit identity theft.
SPENCER MICHELS: The defendant agreed to an interview in the county jail on condition that his personal identity was protected.
SPOKESMAN: I've always had a thing for a second ID; I've had collections of them over the years.
SPENCER MICHELS: How did you learn how to make them and how did that progress?
SPOKESMAN: You just… making them… making them's easy. Anybody… you know, any good art student can make an ID I call it magic. Myself, you know, it does take, you know, some people have a knack, and some don't.
SPENCER MICHELS: He got much of the private ID Information he used in garbage dumpsters.
SPOKESMAN: You find the garbage somewhere and sift through it. I've seen a signature card with an account, the account holder, the account number, the amount of money in the account, where the business is located, their taxpayer ID number for the business.
SPENCER MICHELS: And this was all in the garbage.
SPOKESMAN: This was all on one sheet of paper.
SPENCER MICHELS: That was in the garbage.
SPOKESMAN: That was in the garbage at the bank.
SPENCER MICHELS: He and other identity thieves would use computers, scanners and printers to concoct new identities and fraudulent checks, which, he says, banks accept without much scrutiny.
SPOKESMAN: There's not a bank in the world that's going to want to throw one of their clients in jail. And if they look at that piece of paper, and it all matches up, then they're basically obligated to pay you. And there are certain limits that they… each bank has, some's $500, some's $800, you know, at the teller, which means no manager approval required.
SPENCER MICHELS: San Francisco fraud detail inspector Earl Wismer says crimes like that keep police phone lines busy with complaining consumers.
EARL WISMER: Well, that scenario happens probably around 50, 60 times every single day. We have a limited amount of resources, a limited amount of personnel. In the identity theft arena itself, we are unable to assign most of the cases.
SPENCER MICHELS: While police departments often can't keep up, law enforcement criticizes many banks, credit card companies and credit reporting services for offering easy credit and not cracking down harder on identity theft.
JERRY COLEMAN: Many businesses feel that it's a lot easier to us to get credit out there to people and get money from the 98 percent of the people who are willing to pay money over time and bear the cost of the 2 percent who are committing crimes.
SPENCER MICHELS: Banks disagree. Anissa Yates is Vice President of the California Bankers Association.
ANLISSA YATES, California Bankers Association: Identity theft is a very high priority in the banking industry. Our financial institutions, our member banks, we loose billions of dollars a year because of identity theft, and that is not an acceptable loss for us. We would like to see this eradicated.
SPENCER MICHELS: Still, banks, which issue most credit cards, say they want the freedom to solicit new business by sending out pre- approved credit card applications, even though thieves can get a hold of them.
ANLISSA YATES: Identity theft is a crime. Stealing this information is a crime. Offering somebody credit is not a crime.
SPENCER MICHELS: In the past few years, most states and the federal government have passed laws criminalizing identity theft. Now, the California legislature is considering a bill by State Senator Jackie Speier that would make it harder for financial institutions to share or sell private financial information about clients. Speier says protecting privacy would reduce identity theft.
JACKIE SPEIER: It just makes common sense. If more people have access to this information… and this is not just your name and your address, this is your Social Security number, this is your credit card number, your balances on your accounts, they have all that information. They can recreate your identity. And they can take that identity and use it to run up big bills.
SPENCER MICHELS: Banks and credit companies have strongly opposed the privacy bill, arguing that it is an infringement on the right to market their services. And, says Fred Main of the California Chamber of Commerce, the bill would not reduce identity theft.
FRED MAIN, California Chamber of Commerce: We don't think that that's a bad thing that you're being marketed to. It's not what leads to identity theft. Identity theft leads to criminals stealing things, even inside criminals stealing information that whether you have this bill passed or not, will still occur.
SPENCER MICHELS: But experts say consumers can take certain precautions: Shred or burn financial records and advertisements for credit, monitor personal credit reports twice a year, avoid giving out Social Security numbers when possible. While Tracey Thomas endorses those safety measures and others, she says her imposter has made her a permanent victim.
TRACEY THOMAS: It's not over. It's never going to be over. She still has my information. She could have sold it, she could have given it away; you know, a million other people that I've done business with have my Social Security number. This could happen again. There's no way I can protect myself against this.
SPENCER MICHELS: Still, Congress and some states are considering increasing penalties and otherwise toughening the laws against identity theft.


text:
The Championship club is making young players sit through legal training about rape and sexual offences
The former Rangers, Birmingham and Villa boss this week announced he has decided to leave Genk this summer at the end of his one-year deal
Upton Park boss has also been linked with Sunderland, while the Irons have David Moyes and Eddie Howe on their radar ahead of big Olympic Stadium move
Raheem Sterling is ready while Daniel Sturridge and Jordan Henderson could both also play despite niggling injuries
The Scotland midfielder says Potters will travel to west London this weekend to meet the champions-elect believing they can take another top scalp
"If you want to be an international player, you've got to accept tournaments take place in the summer" sniffs Three Lions boss Roy Hodgson
Three Lions boss issues plea to supporters to ditch songs heard in Glasgow and Rome over fears they could spark crowd trouble during Dublin friendly
Rodgers warned defeats in Saturday league game and midweek FA Cup quarter-final replay are not an option as Reds chase a top 4 finish and silverware
Seven players were brought in by Tottenham with differing levels of success after the Welshman was sold for a world record fee
With just seven games to go and eight points separating the top EIGHT teams, the former Watford boss can hear bums squeaking from Bournemouth to Boro
The £85,000-a-week West Ham striker was born and bred in Gateshead and says it reminds him of home
Don't want to be perceived as a 20-year-old money-grabber who has been convinced to move on? There's a simple solution, writes Brian Reade
Charlie Sumner ran onto the pitch during Reading's FA Cup replay with Bradford and performed four front flips, landing on his back each time
Despite the Dutchman pushing for a recall and Falcao being in the goals for Colombia the in-form Belgian will keep his starting spot
The Reds youngster says any player would 'want to be working with world-class players' like Gerrard and Suarez
The Red Devils have lost just two league games in 20 and Young believes the atmosphere within the dressing room is a key reason
Play now!
Get one week free in your first month with code: MATCHWEEK


text:
|Page: 3 of 46
|Sort By:
Horseback Riding Georgia - Experience the horse based on a natural horse/human relationship. Much more than just a typical "stable ride". Your "visit" prepares you to ride with your horses as a willing partner, not just a vehicle. A memorable experience.
Horseback Riding Arizona - We offer a variety of horseback activities for the whole family! Experience the west in true cowboy fashion, whether it is from the back of a horse or in the back of a horse-drawn wagon. We always put the safety and comfort of our guests first!
Horseback Riding Florida - We provide trail rides on the beautiful Point Washington State Forest one mile from the Gulf of Mexico. We are a short ride from Destin, FL to our west and from Panama City, FL to our east.
Horseback Riding Florida - Haile Equestrian offers horseback riding lessons, casual horseback rides, and pony birthday parties in Gainesville, FL. We are convenient to the University of Florida, Santa Fe College, the Oaks Mall, and Shands. Visit our website for more.
Horseback Riding California - Pine Trails Ranch is a lesson facility that offers lessons fro riders of all ages and riding levels. We offer training for your horse as well. We will help you achieve a better partnership with your horse.
Horseback Riding California - We provide a comfortable version of "Roughing It", enjoy gourmet camp cooking and horseback riding in the most beautiful country Santa Barbara has to offer. Experienced and fun guides provide the highest level of service.
Horseback Riding Idaho - Trail Rides Through City of Rocks, Castle Rocks, and Sawtooth National Forest
Horseback Riding Ecuador - La Escondida provides a variety of activities. Guests can horseback ride, mountain bike or hike as well; beginners, intermediate and advance riders are all very welcome. We offer rides from 1 to 12 days by unique trails with stoning views
Horseback Riding Albania - Caravan Travel is a horse riding center placed in Southern Albania, Gjirokastra historical town.Our best and longest trail until now is "the merchants" trail or Zagoria. However, we are proud to offer you this year another trail "King's Skerd
Horseback Riding Hungary - Homoki Lodge offers adventurous center based rides for advanced riders thru the unique Hungarian Puszta. Stay at the exeptional Homoki lodge - Boutique Hotel with lots of space to relax, wellness treatments and hunting grounds at site available.
|Page: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Saddle up and bring out your inner cowboy on your vacation! Trot, canter, and gallop your way through miles of riding trails on one of our horseback tours. Horseback riding is a great adventure for families, couples, and solo travelers. Our trail rides are fun for people of all ages and all riding levels. Enjoy the scenery on one of our horse riding tours and get back in touch with nature. Browse our horseback riding and plan your vacation today!
|Page: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |


text:
Jackson ParkviewSave | Compare
110 Jackson Parkview Ct Hendersonville North Carolina 28792
provided by Localeze
Are you the property manager? Claim This Listing
Other Apartments Nearby
Click here to learn more.
Ballantyne CommonsSave
- 1 Bed: $799 - 825
- 2 Bed: $939 - 999
- 3 Bed: $1165 - 1225
- Apartment Features:Air Conditioning, Balcony, Cable Ready, Ceiling Fan(s), Dishwasher, Island Kitchens, Microwave, New/Renovated Interior, Oversized Closets, Smoke Free, Vaulted Ceilings, View, Washer & Dryer Connections, Garbage Disposal, Refrigerator
- Community Features:Accepts Electronic Payments, Clubhouse, Emergency Maintenance, Extra Storage, Fitness Center, Garage, Public Transportation, Swimming Pool, Wireless Internet Access, On Site Maintenance, On Site Management, Pet Friendly, AT&T U-verse
- Additional Features:Accepts Online Payments, Salt Water Pool, Free WiFi at Clubhouse, Granite Counter Tops, Solid Wood cabinets, Crown Molding, Sprinkler System
Cities Near Hendersonville, NC
Colleges Near Hendersonville, NC
- Asheville Buncombe Technical Community College, NC
- Blue Ridge Community College, NC
- Brevard College, NC
- Furman University, SC
- Haywood Community College, NC
- Montreat College, NC
- North Greenville University, SC
- Schenck Civilian Conservation Center, NC
- South College, NC
- Tri County Community College, NC
- University of North Carolina Asheville, NC
- Warren Wilson College, NC


text:
MFPS 2011 Concurrent separation logic and operational semantics Viktor Vafeiadis Max Planck Institute for Software Systems (MPI-SWS), Germany Abstract This paper presents a new soundness proof for concurrent separation logic (CSL) in terms of a standard operational semantics. The proof gives a direct meaning to CSL judgments, which can easily be adapted to accommodate extensions of CSL, such as permissions and storable locks, as well as more advanced program logics, such as RGSep. Further, it explains clearly why resource invariants should be 'precise' in proofs using the conjunction rule. Keywords: Separation logic; concurrency; soundness; race condition 1 Introduction Concurrent separation logic [15] (CSL) is a concurrent program logic, a formal system for proving certain correctness properties of concurrent programs. It is based on the notion of resource ownership, where the resource typically is dynamically allocated memory (i.e., the heap). Since its inception by O'Hearn, it has become quite popular, because it permits elegant correctness proofs of some complex concurrent pointer programs that keep track of their memory consumption and explicitly deallocate any unused memory. Its popularity is evident by the number of extensions to CSL (e.g., permissions [2,1], locks in the heap [9,13], variables as resource [16], re-entrant locks [11]). Besides having many extensions, CSL also has many soundness proofs. Some proofs [3,12,10] are about plain CSL, some [5,9,13,11] are about a par- ticular extension, while others [6,4] are abstract. Following Brookes's original proof [3], several proofs [13,6,4] give the se- mantics of triples in terms of a non-standard 'intermediate' semantics that keeps explicit track of resource ownership during execution. In such seman- tics, acquiring and releasing a lock, operations that normally update a single This paper is electronically published in Electronic Notes in Theoretical Computer Science URL: www.elsevier.nl/locate/entcs Vafeiadis bit, instead allocate or deallocate part of the heap (receiving it from or sending to a shared resource). The adequacy of the intermediate semantics is usually justified by an 'erasure' theorem stating that the intermediate semantics sim- ulates a standard semantics. Some other proofs [11,14,9,10] instead are completely syntactic: they never define the meaning of CSL judgments, but rather establish a global invariant that ensures data-race freedom and that is preserved under execution steps. This proof technique is similar to the "progress and preservation" strategy that is common in soundness proofs of type systems and is rather fragile. If, for instance, a new construct were to be added to the language, the soundness of the existing rules would have to be reproved. Moreover, as the meaning of CSL judgments is never defined except perhaps for closed 'top-level' programs, it is never clear what program specifications actually mean. In this paper, we take a direct approach to proving soundness of CSL. We define the meaning of CSL judgments directly in terms of a standard concrete operational semantics for the programming language. Our definition is concise and results in a relatively simple soundness proof, which we have formalised in Isabelle/HOL. 1 Our soundness statement has three important benefits: (i) It encompasses the framing aspect of separation logic. As a result, the proof does not technically require that the operational semantics satisfies the "safety monotonicity" and the "frame" properties [20]. (ii) It does not insist on resource invariants being precise. Similar to Gots- man et al. [10], we prove (a) that CSL with possibly imprecise resource invariants and without the conjunction rule is sound, and (b) that the conjunction rule is sound provided that the resource invariants in scope are precise. Both proofs use the same semantics for CSL judgments. (iii) It can easily be adapted to cover CSL extensions, such as permissions [2,1], RGSep [19], deny/guarantee, and concurrent abstract predicates [7]. Paper Outline. For pedagogic reasons, we will first focus on a cut down version of CSL where the only construct for synchronisation is an atomic block executing in one atomic step (§2). We shall give the syntax and semantics of the programming language and of separation logic assertions, as well as the CSL proof rules. We shall then define carefully the semantics of the CSL judgments (§3) and prove that the proof rules are sound (§4). Later, in §5, we shall consider O'Hearn's original setting with multiple named conditional critical regions that execute non-atomically, but in mutual exclusion, and prove CSL's data race freedom result. Finally, we will adapt our correctness statements to handle extensions of CSL, such as permissions (§6) and RGSep (§7). 1 The proof scripts are available at http://www.mpi-sws.org/~viktor/cslsound [18]. 2 Vafeiadis (Seq1) C, σ →∗ skip, σ (skip; C2 ), σ → C2 , σ (Atom) (atomic C), σ → skip, σ C1 , σ → C1 , σ (Seq2) C1 , σ → C1 , σ (C1 ; C2 ), σ → (C1 ; C2 ), σ (Par1) (C1 C2 ), σ → (C1 C2 ), σ C1 , σ → abort (SeqA) C2 , σ → C2 , σ (C1 ; C2 ), σ → abort (Par2) (C1 C2 ), σ → (C1 C2 ), σ σ = (s, h) [[B]](s) (If1) (Par3) (if B then C1 else C2 ), σ → C1 , σ (skip skip), σ → skip, σ σ = (s, h) ¬[[B]](s) C1 , σ → abort (If2) (ParA1) (if B then C1 else C2 ), σ → C2 , σ (C1 C2 ), σ → abort C, σ →∗ abort C2 , σ → abort (AtomA) (ParA2) atomic C, σ → abort (C1 C2 ), σ → abort (Loop) (while B do C), σ → (if B then (C; while B do C) else skip), σ (Assign) x := E, (s, h) → skip, (s[x := [[E]](s)], h) (Read) x := [E], (s, h) → skip, (s[x := v], h) if h([[E]](s)) = v (ReadA) x := [E], (s, h) → abort if [[E]](s) ∈ dom(h) / (Wri) [E]:=E , (s, h) → skip, (s, h[[[E]](s) := [[E ]](s)]) if [[E]](s) ∈ dom(h) (WriA) [E]:=E , (s, h) → abort if [[E]](s) ∈ dom(h) / (All) x := alloc(E), (s, h) → skip, (s[x := ], h[ := [[E]](s)]) where ∈ dom(h) / (Free) dispose(E), (s, h) → skip, (s, h[[[E]](s) := ⊥]) if [[E]](s) ∈ dom(h) (FreeA) dispose(E), (s, h) → abort if [[E]](s) ∈ dom(h) / Fig. 1. Small-step operational semantics for commands. 2 Concurrent Separation Logic Consider the following simple language of commands: E ::= x | n | E + E | E − E | . . . B ::= B ∧ B | ¬B | E = E | E ≤ E | . . . C ::= skip | x := E | x := [E] | [E] := E | x := alloc(E) | dispose(E) | C1 ; C2 | C1 C2 | if B then C1 else C2 | while B do C | atomic C Arithmetic expressions, E, consist of program variables, integer constants, and arithmetic operations. Boolean expressions, B, consist of arithmetic equalities and inequalities and Boolean operations. Commands, C, include the empty command, variable assignments, memory reads, writes, allocations and deallo- cations, sequential composition, parallel composition, conditionals, loops, and atomic commands. We assume a domain of variable names (VarName), a domain of memory locations (Loc) and a domain of values (Val) that includes memory locations 3 Vafeiadis and define the following composite domains: def s ∈ Stack = VarName → Val stacks (interpretations for variables) def h ∈ Heap = Loc fin Val heaps (dynamically allocated memory) def σ ∈ State = Stack × Heap program states Arithmetic and Boolean expressions are interpreted denotationally as total functions from stacks to values or Boolean values respectively: [[ ]] : Exp → Stack → Val [[ ]] : BoolExp → Stack → {true, false} def def [[x]](s) = s(x) [[B1 ∧ B2 ]](s) = [[B1 ]](s) ∧ [[B2 ]](s) def def [[E1 + E2 ]](s) = [[E1 ]](s) + [[E2 ]](s) [[E1 ≤ E2 ]](s) = [[E1 ]](s) ≤ [[E2 ]](s) Commands are given a small-step operational semantics in Figure 1. Con- figurations are pairs (C, σ) of a command and a state. There are transitions from one configuration to another as well as transitions from a configuration to abort denoting execution errors such as accessing an unallocated memory location. Parallel composition interleaves executions of its two components, while atomic commands execute their body, C, in one transition. In the premise of Atom, →∗ stands for zero or more → transitions. 2 Separation logic assertions include Boolean expressions, all the classical connectives, first order quantification, and five assertions pertinent to separa- tion logic. These are the empty heap assertion (emp), the points-to assertion (E1 → E2 ) indicating that the heap consists of a single memory cell with ad- dress E1 and contents E2 , separating conjunction (∗), separating implication ∗), (− and an iterative version of separating conjunction ( ): P, Q, R, J ::= B | P ∨ Q | P ∧ Q | ¬P | P ⇒ Q | ∀x. P | ∃x. P ∗ | emp | E1 → E2 | P ∗ Q | P − Q | i∈I Pi Assertions denote sets of states. Their semantics is given as a modelling relation, s, h |= P , stating that the state (s, h) satisfies the assertion P . def s, h |= emp ⇐⇒ dom(h) = ∅ def s, h |= E → E ⇐⇒ dom(h) = [[E]](s) ∧ h([[E]](s)) = [[E ]](s) def s, h |= P ∗ Q ⇐⇒ ∃h1 , h2 . h = h1 h2 ∧ (s, h1 |= P ) ∧ (s, h2 |= Q) def ∗ s, h |= P − Q ⇐⇒ ∀h1 . def(h h1 ) ∧ (s, h1 |= P ) =⇒ (s, h h1 |= Q) Here, h1 h2 stands for the union of the two heaps h1 and h2 and is undefined unless dom(h1 ) ∩ dom(h2 ) = ∅. We write def(X) to say that X is defined. 2 Normally, in addition to Atom, there should be another rule for infinite executions for the body of atomic blocks. For simplicity, we omit such a rule. In §5, we will present a different semantics that does not involve →∗ and does not suffer from this problem. 4 Vafeiadis (Skip) J {P1 } C1 {Q1 } J {P } skip {P } J {P2 } C2 {Q2 } x ∈ fv(J) / fv(J, P1 , C1 , Q1 ) ∩ wr(C2 ) = ∅ (Assign) J {[E/x]P } x := E {P } fv(J, P2 , C2 , Q2 ) ∩ wr(C1 ) = ∅ (Par) J {P1 ∗ P2 } C1 C2 {Q1 ∗ Q2 } x ∈ fv(E, E , J) / (Read) J {E → E } x := [E] {E → E ∧ x = E } J ∗R {P } C {Q} (Share) J {P ∗ R} C {Q ∗ R} (Write) J {E → −} [E] := E {E → E } J {P } C {Q} x ∈ fv(E, J) / fv(R) ∩ wr(C) = ∅ (Alloc) (Frame) J {emp} x:=alloc(E) {x → E} J {P ∗ R} C {Q ∗ R} (Free) J {P } C {Q} J {E → −} dispose(E) {emp} P ⇒P Q⇒Q (Conseq) J {P } C1 {Q} J {Q} C2 {R} J {P } C {Q } (Seq) J {P } C1 ; C2 {R} J {P1 } C {Q1 } J {P ∧ B} C1 {Q} J {P2 } C {Q2 } (Disj) J {P ∧ ¬B} C2 {Q} J {P1 ∨ P2 } C {Q1 ∨ Q2 } (If) J {P } if B then C1 else C2 {Q} J {P } C {Q} x ∈ fv(C) / (Ex) J {P ∧ B} C {P } J {∃x. P } C {∃x. Q} (While) J {P } while B do C {P ∧ ¬B} J {P1 } C {Q1 } emp {P ∗ J} C {Q ∗ J} J {P2 } C {Q2 } J precise (Atom) (Conj) J {P } atomic C {Q} J {P1 ∧ P2 } C {Q1 ∧ Q2 } Fig. 2. Concurrent separation logic proof rules. The other assertions are interpreted classically. Finally, we write E → − as a shorthand for ∃v. E → v where v ∈ fv(E). / An important class of assertions are the so-called precise assertions, which are assertions satisfied by at most one subheap of any given heap. Formally, if there are satisfied by two such heaps, h1 and h1 , the two must be equal: Definition 2.1 An assertion, P , is precise iff for all h1 , h2 , h1 , and h2 , if def(h1 h2 ) and h1 h2 = h1 h2 and s, h1 |= P and s, h1 |= P , then h1 = h1 . CSL judgments are of the form, J {P } C {Q}, where J is known as the resource invariant, P as the precondition, and Q as the postcondition. Informally, these specifications say that if C is executed from an initial state satisfying P ∗ J, then J will be satisfied throughout execution and the final state (if the command terminates) will satisfy Q ∗ J. There is also an own- ership reading attached to the specifications saying that the command 'owns' the state described by its precondition: the command can change it and can assume that no other parallel thread can change it. In contrast, the state described by J can be changed by other concurrently executing threads. The 5 Vafeiadis only guarantee is that it will always satisfy the resource invariant, J. The proof rules are shown in Figure 2. Among the proof rules, some are particularly noteworthy. Read and Write both require that the memory cell accessed is part of the precondition: this ensures that the cell is allocated (and hence, the access will be safe) and that no other thread is accessing it concurrently. Atom allows the body of atomic blocks to use the resource invariant, J, and requires them to re-establish it at the postcondition. Par allows us to compose two threads in parallel if and only if their preconditions describe disjoint parts of the heap. This prevents data races on memory locations. The side-conditions ensure that there are also no data races on program variables—here, fv returns the set of free variables of a command or an assertion, whereas wr(C) returns the set of variables being assigned to by the command C. 3 Share allows us at any time to extend the resource invariant by separatingly conjoining part of the local state, R. Frame allows us to ignore part of the local state, the frame R, which is not used by the command, ensuring that R is still true at the postcondition. Finally, the conjunction rule, Conj, has a perhaps surprising side-condition. This side-condition is necessary for soundness as illustrated by Reynolds's counterexample [15, §11]. Most presentations require precise J's in all judg- ments. This, however, is unnecessary: only Conj needs precision. 3 The Meaning of CSL Judgments We define the semantics of CSL judgments in terms of an auxiliary predicate, safen (C, s, h, J, Q), stating that the command C executing with a stack, s, and a local heap, h, is safe with respect to the resource invariant J and the post- condition Q for up to n execution steps. A CSL judgment, J |= {P } C {Q}, simply says that the program C is safe with respect to J and Q for every initial local state satisfying the precondition, P , and for any number of steps: Definition 3.1 (Configuration Safety) safe0 (C, s, h, J, Q) holds always. safen+1 (C, s, h, J, Q) holds if and only if (i ) if C = skip, then s, h |= Q; and (ii ) for all hJ and hF , if s, hJ |= J and (h hJ hF ) is defined, then C, (s, h hJ hF ) → abort; and (iii ) for all C , hJ , hF , h and s , if s, hJ |= J, and (h hJ hF ) is defined, and C, (s, h hJ hF ) → C , (s , h ), then there exist h and hJ such that h =h hJ hF and s , hJ |= J and safen (C , s , h , J, Q). Definition 3.2 J |= {P } C {Q} if and only if for all n, s, and h, if s, h |= P , then safen (C, s, h, J, Q). 3 For simplicity, we impose draconian variable side-conditions. In effect, only heap cells may be shared among threads, as J cannot mention any updateable variables. 6 Vafeiadis Intuitively, any configuration is safe for zero steps. For n + 1 steps, it must (i ) satisfy the postcondition if it is a terminal configuration, (ii ) not abort, and (iii ) after any step, re-establish the resource invariant and be safe for another n steps. The number of steps merely ensures the definition is structurally decreasing. In more detail, h is the part of the heap that is 'owned' by the command: the command can update h and no other command can access it in parallel. In conditions (ii ) and (iii ), hJ represents the part of the heap that is shared among threads, and must hence satisfy the resource invariant. So, condition (iii ) ensures that after the transition a new such component, hJ , can be found. Finally, hF represents the remaining part of the heap owned by the rest of the system. In condition (ii ), the command must not abort regardless of what that remaining part is. In condition (iii ), the command must not change any part of the heap that could be owned by another thread. Therefore, hF must be a subheap of the new heap h . Safety Monotonicity & Frame Property. The purpose of the hF quan- tifications is to admit the frame rule. In condition (ii ), hF essentially plays the role of "safety monotonicity" [20], which requires that if (C, h) is safe (i.e., does not abort), then (C, h hF ) is also safe. Similarly, in condition (iii ), hF plays the role of the "frame property" [20], which requires that whenever (C, h) is safe and C, (s, h hF ) → C , (s , h ), then there exists h such that C, (s, h) → C , (s , h ) and h = h hF . Condition (iii ) does not quite imply the frame property, as it does not require that C, (s, h) → C , (s , h ). It rather takes the transition C, (s, h) → C , (s , h ) into account even though it might not be present. The difference is quite subtle. In particular, if the operational semantics satisfies the safety monotonicity and frame properties (which it does in our case), we can drop the hF quantification. (See [18] for a proof.) Having the quantification, however, is crucial for some of the CSL extensions (see §6) and even simplifies some of the proofs for the normal CSL (Par and Frame). Discussion. A nice aspect of Definition 3.1 is that the straightforward lemmas about safety of compound commands are usually already inductive, thereby rendering the otherwise most challenging part of soundness proofs trivial. The only exception is Lemma 5.3 about the resource declaration rule (for an extension of Definition 3.1 to handle multiple named CCRs), which was arguably the most intellectually challenging part of the proof. A second benefit is that we do not strictly require an abort semantics to prove the soundness of CSL: if we drop condition (ii ) from Definition 3.1, we can still prove the soundness of CSL without ever referring to an abort semantics. In contrast, proofs relying on the safety monotonicity and frame properties heavily depend on an abort semantics (e.g., [3,4,5,6,9,10]). 7 Vafeiadis 4 Soundness Proof We start with some basic –but important– properties of the semantics. In the following, let [s ∼ s ]X stand for ∀x ∈ X. s(x) = s (x) and X for the complement of set X. Proposition 4.1 If C, (s, h) → C , (s , h ), then fv(C ) ⊆ fv(C), wr(C ) ⊆ wr(C), and [s ∼ s ]wr(C) . Proposition 4.2 (i) If [s ∼ s ]fv(E) , then [[E]](s) = [[E]](s ). (ii) If [s ∼ s ]fv(B) , then [[B]](s) = [[B]](s ). (iii) If [s ∼ s ]fv(P ) , then s, h |= P if and only if s , h |= P . (iv) If [s ∼ s ]fv(C) and C, s → abort, then C, s → abort. (v) If X ⊇ fv(C) and [s ∼ s ]X and C, s → C1 , s1 , then there exist s1 such that C, s → C1 , s1 and [s1 ∼ s1 ]X . Now, consider Definition 3.1. By construction, safe is monotonic with respect to n: if a configuration is safe for a number of steps, n, it is also safe for a smaller number of steps, m. (This is proved by induction on m.) Lemma 4.3 If safen (C, s, h, J, Q) and m ≤ n, then safem (C, s, h, J, Q). Further, as a corollary of Proposition 4.2, safen (C, s, h, J, Q) depends only on the values of variables that are mentioned in C, J, Q. Lemma 4.4 If safen (C, s, h, J, Q) and [s ∼ s ]fv(C,J,Q) , then safen (C, s , h, J, Q). The soundness theorem for CSL is the following: Theorem 4.5 (CSL Soundness) If J {P } C {Q}, then J |= {P } C {Q}. Our proof strategy is to prove that each proof rule is a sound implication if we replace all the by |=. Then, the theorem follows by a straightforward rule induction. For brevity, we only show the proofs of the most interesting rules. (Skip) The rule for skip follows immediately from the following lemma, whose proof is trivial because there are no transitions from skip. Lemma 4.6 For all n, s, h, J, and Q, if s, h |= Q, then safen (skip, s, h, J, Q). (Atom) We need an auxiliary lemma for code executing in atomic blocks: Lemma 4.7 If ∀n. safen (C, s, h, emp, Q) and def(h hF ), then (i) ¬(C, (s, h hF ) →∗ abort); and (ii) if, moreover, C, (s, h hF ) →∗ skip, (s , h ), then there exists h such that h =h hF and s , h |= Q. This lemma is proved by an induction on the length of the →∗ traces, noting that when J = emp, the second clause of Definition 3.1 simplifies to 8 Vafeiadis safen+1 (C, s, h, emp, Q) if and only if (i) if C = skip, then s, h |= Q; and (ii ) for all hF , if def(h hF ), then C, (s, h hF ) → abort; and (iii ) for all hF , C , s , h , if C, (s, h hF ) → C , (s , h ), then there exists h such that h = h hF and safen (C , s , h , J, Q). The main lemma for atomic commands is as follows: Lemma 4.8 If emp |= {P ∗ J} C {Q ∗ J}, then J |= {P } atomic C {Q}. Proof. Assume (*) emp |= {P ∗ J} C {Q ∗ J}, and pick arbitrary s, h |= P and n. We have to show that safen (atomic C, s, h, J, Q). If n = 0, this is trivial; so consider n = m + 1. Condition (i ) is trivial as atomic C = skip. (ii ) If atomic C, (s, h hJ hF ) → abort, then from the operational semantics C, (s, h hJ hF ) →∗ abort, which with Lemma 4.7 contradicts (*). (iii ) The only way for atomic C, (s, h hJ hF ) → C , (s , h ) is if C = skip and C, (s, h hJ hF ) →∗ skip, (s , h ). Hence, from assumption (*) and Lemma 4.7, there exists h such that h = h hF and s , h |= Q ∗ J. So, there exist h and hJ such that h = h hJ , s , h |= Q, and s , hJ |= J. Finally, from Lemma 4.6, we get safem (skip, s , h , J, Q). 2 (Par) For parallel composition, we need the following auxiliary lemma: Lemma 4.9 If safen (C1 , s, h1 , J, Q1 ), safen (C2 , s, h2 , J, Q1 ), h1 h2 is defined, fv(J, C1 , Q1 ) ∩ wr(C2 ) = ∅, and fv(J, C2 , Q2 ) ∩ wr(C1 ) = ∅, then safen (C1 C2 , s, h1 h2 , J, Q1 ∗ Q2 ). def Proof. By induction on n. In the inductive step, we know IH (n) = ∀C1 , h1 , C2 , h2 . safen (C1 , s, h1 , J, Q1 ) ∧ safen (C2 , s, h2 , J, Q1 ) ∧ def(h1 h2 ) ∧ fv(J, C1 , Q1 ) ∩ wr(C2 ) = ∅ ∧ fv(J, C2 , Q2 ) ∩ wr(C1 ) = ∅ =⇒ safen (C1 C2 , s, h1 h2 , J, Q1 ∗ Q2 ) and we have to show IH (n+1). So, pick arbitrary C1 , h1 , C2 , h2 and assume (1) safen+1 (C1 , s, h1 , J, Q1 ), (2) safen+1 (C2 , s, h2 , J, Q2 ), (3) def(h1 h2 ) and (4) the variable side-conditions, and try to show safen+1 (C1 C2 , s, h1 h2 , J, Q1 ∗ Q2 ). Condition (i ) is trivial. (ii ) If C1 C2 , (s, h1 h2 hJ hF ) → abort, then according to the operational semantics C1 , (s, h1 h2 hJ hF ) → abort or C2 , (s, h1 h2 hJ hF ) → abort, contradicting our assumptions (1) and (2). (iii ) Pick arbitrary C , hJ , hF , s , h such that s, hJ |= J, (h1 h2 hJ hF ) is defined, and C1 C2 , (s, h1 h2 hJ hF ) → (C , s , h ). The operational semantics has three possible transitions for C1 C2 . Case (Par1). C = C1 C2 and C1 , (s, h1 h2 hJ hF ) → C1 , (s , h ). From (1), there exist h1 and hJ such that h = h1 hJ (h2 hF ), s , hJ |= J, and safen (C1 , s , h1 , J, Q1 ). 9 Vafeiadis From (2) and Proposition 4.3, we have safen (C2 , s, h2 , J, Q2 ). Then, from Propositions 4.4 and 4.1, and assumption (4), we have safen (C2 , s , h2 , J, Q2 ). Also, from Proposition 4.1 and (4), fv(C1 , Q1 ) ∩ wr(C2 ) = ∅ and fv(C2 , Q2 ) ∩ wr(C1 ) = ∅, and hence from IH (n), safen (C1 C2 , s , h1 h2 , J, Q1 ∗ Q2 ). Case (Par2). This case is completely symmetric. Case (Par3). C1 = C2 = C = skip, h = h1 h2 hJ hF . From (1) and (2), unfolding the definition of safe, we have that s, h1 |= Q1 and s, h2 |= Q2 . So, s, h1 h2 |= Q1 ∗ Q2 , and, from Lemma 4.6, safen (skip, s, h1 h2 ). 2 (Frame) The frame rule is a cut-down version of the parallel composition rule. It follows directly from the following lemma: Lemma 4.10 If safen (C, s, h, J, Q), fv(R) ∩ wr(C) = ∅, h hR is defined, and s, hR |= R, then safen (C, s, h hR , J, Q ∗ R). Proof. By induction on n. The base case is trivial. For the inductive step, assume (*) safen+1 (C, s, h, J, Q), (†) fv(R) ∩ wr(C) = ∅, and (‡) s, hR |= R. Now, we have to prove safen+1 (C, s, h hR , J, Q ∗ R). (i ) From (*), we get s, h |= Q and so, using (‡), s, h hR |= Q ∗ R. (ii ) Pick hJ and hF . Then, from (*), C, (s, h hR hJ hF ) → abort. (iii ) If C, (s, h hR hJ hF ) → C , (s , h ), then from (*), there exist h , hJ such that h = h hJ (hR hF ) and s , hJ |= J and safen (C , s , h , J, Q). Now, from (†), (‡), Prop. 4.1 and 4.2, we get s , hR |= R and fv(R)∩wr(C ) = ∅. Therefore, from the induction hypothesis, safen (C , s , h hR , J, Q ∗ R). 2 (Share) We need the following lemma, which is similar to the previous one. Lemma 4.11 If safen (C, s, h, J ∗ R, Q), h hR is defined, and s, hR |= R, then safen (C, s, h hR , J, Q ∗ R). Proof. By induction on n. For the inductive step, (i ) From our assumptions, s, h |= Q and s, hR |= R, and so s, h hR |= Q ∗ R. (ii ) C, (s, h hR hJ hF ) → abort follows directly from our assumptions. (iii ) If C, (s, h hR hJ hF ) → C , (s , h ), then from our assumptions, there exist h , hJR such that h = h hJR hF and s , hJR |= J ∗ R and safen (C , s , h , J ∗ R, Q). From the definition of ∗, there exist hJ and hR such that hJR = hJ hR and s , hJ |= J and s , hR |= R. Therefore, from the induction hypothesis, safen (C , s , h hR , J, Q ∗ R), as required. 2 (Conj) Now consider the conjunction rule. Its soundness rests upon the validity of the following implication: safen (C, s, h, J, Q1 ) ∧ safen (C, s, h, J, Q2 ) =⇒ safen (C, s, h, J, Q1 ∧ Q2 ) . Naturally, one would expect to prove this implication by induction on n with an induction hypothesis quantifying over all C and h. The base case is trivial; 10 Vafeiadis (C1 , σ) → (C1 , σ ) (C2 , σ) → (C2 , σ ) locked(C1 ) ∩ locked(C2 ) = ∅ locked(C1 ) ∩ locked(C2 ) = ∅ (Par1) (Par2) (C1 C2 , σ) → (C1 C2 , σ ) (C1 C2 , σ) → (C1 C2 , σ ) (accesses(C1 , s) ∩ writes(C2 , s)) ∪ (accesses(C2 , s) ∩ writes(C1 , s)) = ∅ (RaceDetect) (C1 C2 , (s, h)) → abort (Res1) resource r in C, σ → resource r in C , σ if C, σ → C , σ (Res2) resource r in skip, σ → skip, σ (With1) with r when B do C, σ → within r do C, σ if σ = (s, h) and [[B]](s) (With2) within r do C, σ → within r do C , σ if C, σ → C , σ (With3) within r do skip, σ → skip, σ (ResA) resource r in C, σ → abort if C, σ → abort (WithA) within r do C, σ → abort if C, σ → abort Fig. 3. Operational semantics for CCRs. so consider the n + 1 case. The first two subcases are easy; so consider subcase (iii ). From the first assumption, we know that there exist h1 and h1 such that J h = h1 h1 and h1 |= J and safen (C , h1 , J, Q1 ). Similarly, from the first J J assumption, there exist h2 and h2 such that h = h2 h2 and h2 |= J and J J J safen (C , h2 , J, Q2 ), but, in general, we do not know that h1 = h2 which would allow us to complete the proof. Since, however, J must be precise, then (from Definition 2.1) h1 = h2 , and since is cancellative, we also have h1 = h2 and J J the result follows by applying the induction hypothesis. 2 5 Multiple Resources & Data Race Freedom In this section, we consider the programming language used by O'Hearn [15] and Brookes [3], which has multiple named resources and permits the execu- tion of critical regions acting on different resources to go on in parallel. The programming language replaces atomic commands, atomic C, with two new constructs and an intermediate command form: C ::= . . . | resource r in C | with r when B do C | within r do C The first declares a new mutual exclusion lock, r, known as a resource or a resource bundle in CSL terminology. The second construct denotes a condi- tional critical region (CCR) which runs in isolation with respect to any other CCRs with the same lock. Executing a CCR blocks until the resource is avail- able and the condition B is true, and then executes the body C in isolation to other CCRs acting on the same resource. This is achieved by holding a lock for the duration of testing whether B is satisfied and the execution of its body. Finally, within r do C represents a partially executed CCR: one that has acquired the lock, tested the condition, and still has to execute C. We 11 Vafeiadis define locked(C) to be the set of regions syntactically locked by C: those r for which C contains a within r do C subterm. The operational semantics is given by the rules of Figure 1 (excluding Par1, Par2, Atom, AtomA) and the new rules shown in Figure 3. The reduction rules for parallel composition (Par1, Par2) have been adapted to check that two threads do not hold the same lock at the same time. This was unnecessary in the simpler setting because atomic blocks executed in one step. To show absence of data races, we have added a rule (RaceDetect) that aborts whenever a data race is observed. Here, the functions accesses(C, s) and writes(C, s) return the set of heap locations accessed or modified by C respectively. Their formal definitions can be found in [18]. CSL judgments for multiple resources are of the form Γ {P } C {Q}, where Γ is a mapping from resource names, r, to their corresponding resource invariants, which are normal assertions. We have the proof rules from Figure 2 –except (Atom) and (Share)– uniformly replacing J by Γ. In addition, we have the following two rules concerning resource declarations and CCRs: Γ, r : J {P } C {Q} Γ {(P ∗ J) ∧ B} C {Q ∗ J} Γ {P ∗ J} resource r in C {Q ∗ J} Γ, r : J {P } with r when B do C {Q} The first rule is analogous to the Share rule: it allows us to declare a new resource bundle, r, and associate a resource invariant with it. The second rule is analogous to Atom, allowing the verifier to assume that the relevant resource invariant holds separately at the beginning of the CCR and requiring him to be re-establish it at the end of the CCR. The definition of configuration safety is adapted as follows: Definition 5.1 safe0 (C, s, h, Γ, Q) holds always. safen+1 (C, s, h, Γ, Q) if and only if (i ) if C = skip, then s, h |= Q; and (ii ) for all hF , if (h hF ) is defined, then C, (s, h hF ) → abort; and (iii ) accesses(C, s) ⊆ dom(h); and (iv ) for all C , hΓ , hF , s , h , L , if s, hΓ |= r∈locked(C )\locked(C) Γ(r), and (C, (s, h hΓ hF ), L) → (C , (s , h ), L ), then there exist h and hΓ such that h = h hΓ hF and s , hΓ |= r∈locked(C)\locked(C ) Γ(r) and safen (C , s , h , Γ, Q). Similar to Definition 3.1, here h is the part of the heap owned by the com- mand; hΓ is the part that belongs to definitely unacquired resources (since any memory cells belonging to a currently acquired resource are part of the local heap of the thread that holds the lock for that resource); and hF represents the frame, namely memory cells belonging to other parts of the system. The set locked(C ) \ locked(C) represents the set of locks that have been acquired by the transition from C to C : for all of those, we assume that the resource invariant holds. Conversely, locked(C ) \ locked(C) is the set of locks released 12 Vafeiadis by the transition: for all those, we check that the resource invariant is estab- lished. Finally, the new conjunct accesses(C, s) ⊆ dom(h) is included so that we can show that safe programs do not have any data races. As before, the semantics of triples is given in terms of the safe predicate: Definition 5.2 Γ |= {P } C {Q} if and only if for all n, s, h, if s, h |= P then safen (C, L, s, h, Γ, Q). The proof of soundness proceeds as before and has been fully formalised in Isabelle/HOL. See [18] for details. We say that a command is well-formed if and only if it does not have two different subcommands simultaneously having acquired the same CCR lock, as this cannot occur in a normal execution. To prove the soundness of the two new rules, we use the following lemmas: Lemma 5.3 If safen (C, s, h, (Γ, r : R), Q) and C is well-formed and fv(R) ∩ wr(C) = ∅, then (i) if r ∈ locked(C), then for all hR , if dom(h)∩dom(hR ) = ∅ and s, hR |= R, / then safen (resource r in C, s, h hR , Γ, Q ∗ R); and (ii) if r ∈ locked(C), then safen (resource r in C, s, h, Γ, Q ∗ R). Lemma 5.4 If safen (C, s, h, Γ, Q∗R) and within r do C is well-formed, then safen (within r do C, s, h, (Γ, r : R), Q). The proofs of these lemmas can be found in [18]. Our formalisation also covers local variable declarations as well as the auxiliary variable elimination rule as in Brookes's original proof [3]. 6 Permissions Permissions [2,1] are an extension to the standard heap model that enables read-sharing between parallel threads. Consider, for example, the Hoare triple: {10 → −} x := [10] y := [10] {10 → −}. Standard CSL cannot verify that the program satisfies its specification because to read from [10] both threads must know that the cell is allocated (i.e., have 10 → − as a precondition), but the assertion 10 → − ∗ 10 → − (required by the parallel composition rule) is unsatisfiable. With permissions, one can instead split 10 → − into two half 0.5 0.5 permissions, (10 → −) ∗ (10 → −), and give one to each thread. The idea then is such partial permissions are read-only: they allow the cell to be read, but not updated. This is captured by the following new proof rule: x ∈ fv(E, E , E , J) / (Read2) E E J {E → E } x := [E] {E → E ∧ x = E } 13 Vafeiadis At the postcondition, the two half permissions are collected and joined to give 1 back 10 → −, which is just shorthand notation for 10 → −. Permission models are sets, K, with a distinguished element, ∈ K, called full permission, and a commutative and associative partial operator, ⊕, denoting addition of two permissions, satisfying the following properties: ∀k ∈ K. ¬def( ⊕ k) and ∀k ∈ K \ { }. ∃k ∈ K. k ⊕ k = The first equation says that is the greatest permission, as it cannot be combined with any other permission. The second equation says that every non-full permission has a complement permission which when added to it gives full permission. The model we saw previously is known as fractional permissions. K is the set of numbers in the range (0, 1], ⊕ is ordinary addition and is undefined when the result falls out of the range, and = 1. The complement of fractional permission k is simply 1 − k. To model a heap with permissions, we extend ⊕ to act on permission-value pairs as follows: def (k1 ⊕ k2 , v1 ) if v1 = v2 and def(k1 ⊕ k2 ) (k1 , v1 ) ⊕ (k2 , v2 ) = undefined otherwise def We also extend ⊕ to act on permission-heaps, PH = Loc (Perm × Val), as follows. We take h1 ⊕ h2 to be defined if and only if h1 (a) ⊕ h2 (a) is defined for all a ∈ (dom(h1 ) ∩ dom(h2 )). If h1 ⊕ h2 is defined, it has domain dom(h1 ) ∪ dom(h2 ) with the following values: h1 (a) ⊕ h2 (a) if a ∈ (dom(h1 ) ∩ dom(h2 )) def (h1 ⊕ h2 )(a) = h1 (a) if a ∈ (dom(h1 ) \ dom(h2 )) h2 (a) if a ∈ (dom(h2 ) \ dom(h1 )) As expected, adding two permission-heaps is defined whenever for each loca- tion in their overlap, the heaps store the same value and permissions that can be added together. The result is a permission-heap whose permissions for the location in the overlap is just the sum of the individual heaps. Assertions are now modelled by permission-heaps, PH. The new assertion E2 form E1 → E3 has the following semantics: E2 def s, h |= E1 → E3 ⇐⇒ dom(h) = {[[E1 ]](s)} ∧ h([[E1 ]](s)) = ([[E2 ]](s), [[E3 ]](s)) We can consider the set of concrete heaps as being a subset of that of permission-heaps by equating a concrete heap, h, with the permission-heap, h , which has the same domain as h and for each location ∈ dom(h), h ( ) = 14 Vafeiadis ( , h( )). In other words, h has full permission and the same values for every location in h, and no permission for any other location. Observe that every permission-heap can be extended to a normal heap: ∀h ∈ PH. ∃hF ∈ PH. (h ⊕ hF ) ∈ Heap . This allows us to use the same definitions for safe predicate as we have seen already, uniformly replacing with ⊕ and having the h, hF , etc. range over permission-heaps rather than normal heaps. The definition is a bit subtle: as the operational semantics is defined over normal heaps, (C, h ⊕ hJ ⊕ hF ) → . . . makes sense only when h⊕hJ ⊕hF is a normal heap, a condition that is always possible to achieve as hF is universally quantified. The check in the safe definition that hF does not change by transitions ensures that programs update the values only of heap locations they have full permission to, but allows threads to access any memory they partially own. The soundness proof carries over to permission-heaps with no difficulty. See the machine-checked proof [18] for details. 7 RGSep RGSep [19] is a more radical extension to CSL replacing resource invariants by two binary predicates, R and G, known as the rely and the guarantee respectively. As in CSL, the heap is logically divided into parts owned by threads and other parts owned by resources (and hence shared among threads, but accessed only within an atomic commands). The rely, R, describes the changes made to the resource-owned states by the environment (i.e., every other thread in the system that could execute concurrently with the current command), whereas the guarantee, G, describes the changes made by the command itself. Preconditions and postconditions are also changed into binary predicates describing both the local (thread-owned) and the shared (resource-owned) components of the state. We shall use the notation s, (h1 , h2 ) |= P to denote that the stack s and the heaps h1 and h2 satisfy the binary assertion P , whether it is a pre-, a post-, a rely or a guarantee condition. 4 The safeRG predicate records not only the local heap, hL , but also the shared heap, hS , as this is needed for R and G: Definition 7.1 safeRG (C, s, hL , hS , R, G, Q) holds always. 0 safeRG (C, s, hL , hS , R, G, Q) if and only if n+1 (i ) if C = skip, then s, (hL , hS ) |= Q; and 4 RGSep uses different syntax to denote pre- and postconditions than the one used to denote rely and guarantee conditions. In this paper, however, we shall not go into the syntax of RGSep assertions, and so we overlook such syntactic differences. 15 Vafeiadis (ii ) for all hF , C, (s, hL hS hF ) → abort; and (iii ) whenever C, (s, hL hS hF ) → C , (s , h ), then there exist hL and hS such that h = hL hS hF and s, (hS , hS ) |= G and safeRG (C , s , hL , hS , R, G, Q); n (iv ) whenever s, (hS , hS )|=R and def(hL hS ), then safeRG (C, s, hL , hS , R, G, Q). n A configuration is safe for n + 1 steps if (i) whenever it is a terminal configuration, it satisfies the postcondition; and (ii) it does not abort; and (iii) whenever it performs a transition, its change to the shared state satisfies the guarantee and the new configuration remains safe for n steps; and finally (iv) whenever the environment changes the shared state according to the rely, the resulting configuration remains safe for another n steps. The semantics of RGSep judgments is defined in terms of safeRG in the standard way: Definition 7.2 R; G |=RGSep {P } C {Q} if and only if for all s, hL , hS , and n, if s, (hL , hS ) |= P , then safeRG (C, s, hL , hS , R, G, Q). n Note that the RGSep definitions use exactly the same operational seman- tics for commands as the CSL definitions: we did not have to come up with a new special semantics. As we did earlier with CSL, it is possible to extend the RGSep definitions to multiple shared regions. The soundness proof goes through in pretty much the same way as in §4 and in [17]. 8 Conclusion The paper has presented a concise soundness proof of CSL and related pro- gram logics that does not involve any intermediate instrumented semantics, unlike most proofs in the literature (e.g., [3,5,9,13,6]). We have shown that inventing elaborate semantics is unnecessary and have argued that it is also harmful because it obscures the soundness argument. This becomes increas- ingly problematic as one moves towards larger languages and more complicated concurrent program logics. As mentioned already, there exist several soundness proofs for concurrent separation logic, while even the first proof by Brookes [3] came 3-4 years af- ter the CSL proof rules were conceived. This is partly due to the intricacy of the soundness resulting from imprecise assertions (cf., Reynolds's coun- terexample [15, §11]) and partly due to the numerous extensions to CSL that came along (e.g., permissions [2,1], "variables as resource" [16], "locks-in-the- heap" [9,13]) for which existing proofs required adaptation (e.g. [5]) or new proofs were developed [9,11,13]. A partial solution to the plethora of adapted proofs was given by Calcagno et al. [6] with abstract separation logic, a soundness proof of CSL with respect to an abstract operational semantics to commands that could be instantiated 16 Vafeiadis to the various permission and variables-as-resource models. This unifying approach, unfortunately, has a significant drawback: the soundness of any particular instance of the logic (e.g., CSL with fractional permissions) tells us nothing about how verified programs behave when executed by the hardware. This is because the instantiated abstract semantics bears little resemblance to the 'machine semantics.' To get a meaningful correspondence, one would have to relate the two semantics, a task that is most likely non-trivial. This is why our proof is instead based on a concrete semantics. The style of semantic definitions presented in this paper has also been used to justify the soundness of more advanced program logics, such as the concurrent abstract predicates of Dinsdale-Young et al. [7]. So far, however, we have used this style of semantic definitions to justify the correctness only of program logics about partial correctness. It is quite possible to extend these definitions in order to capture certain kinds of liveness properties. For example, we can define the meaning of a Hoare triple for obstruction-freedom by changing safe0 (C, h, ...) instead of always being true to require that C terminates under no environment interference. In the future, I would like to explore this direction further. Acknowledgement I would like to thank Stephen Brookes, Matthew Parkinson, Peter O'Hearn, and Glynn Winskel, who encouraged me to write this paper, and also John Wickerson and the anonymous reviewers for their valuable comments. References [1] Bornat, R., Calcagno, C., O'Hearn, P. W., Parkinson, M. J., Permission accounting in separation logic, in: POPL (2005), pp. 259–270. [2] Boyland, J., Checking interference with fractional permissions, in: 10th SAS, LNCS 2694 (2003), pp. 55–72. [3] Brookes, S., A semantics for concurrent separation logic, Theor. Comput. Sci. 375 (2007), pp. 227–270. [4] Brookes, S., Fairness, resources, and separation, Electr. Notes Theor. Comput. Sci. 265 (2010), pp. 177–195. [5] Brookes, S., Variables as resource for shared-memory programs: Semantics and soundness, Electr. Notes Theor. Comput. Sci. 158 (2006), pp. 123–150. [6] Calcagno, C., O'Hearn, P. W., Yang, H., Local action and abstract separation logic, in: LICS (2007), pp. 366–378. [7] Dinsdale-Young, T., Dodds, M., Parkinson, M., Gardner, P., Vafeiadis, V., Concurrent abstract predicates, in: ECOOP, LNCS 6183 (2010), pp. 504–528. [8] Gotsman, A., "Logics and analyses for concurrent heap-manipulating programs," Ph.D. dissertation, University of Cambridge Computer Laboratory (2009), also available as Technical Report UCAM-CL-TR-758. 17 Vafeiadis [9] Gotsman, A., Berdine, J., Cook, B., Rinetzky, N., Sagiv, M., Local reasoning for storable locks and threads, in: Shao, Z., editor, APLAS, LNCS 4807 (2007), pp. 19–37. [10] Gotsman, A., Berdine, J., Cook, B., Precision and the conjunction rule in concurrent separation logic, in: MFPS, (20011) [11] Haack, C., Huisman, M., Hurlin, C., Reasoning about Java's reentrant locks, in: Ramalingam, G., editor, APLAS, LNCS 5356 (2008), pp. 171–187. [12] Hayman, J., Winskel, G., Independence and concurrent separation logic, in: LICS (2006), pp. 147–156. [13] Hobor, A., Appel, A. W., Zappa Nardelli, F., Oracle semantics for concurrent separation logic, in: S. Drossopoulou, editor, ESOP, LNCS 4960 (2008), pp. 353–367. [14] Jacobs, B., Piessens, F., Expressive modular fine-grained concurrency specification, in: POPL (2011). [15] O'Hearn, P. W., Resources, concurrency and local reasoning, Theor. Comput. Sci. 375 (2007), pp. 271–307. [16] Parkinson, M. J., Bornat, R., Calcagno, C., Variables as resource in Hoare logics, in: LICS (2006), pp. 137–146. [17] Vafeiadis, V., "Fine-grained concurrency verification," Ph.D. dissertation, University of Cambridge Computer Laboratory (2007), available as Technical Report UCAM-CL-TR-726. [18] Vafeiadis, V., Concurrent separation logic and operational semantics (Isabelle proof ) (2011), http://www.mpi-sws.org/~viktor/cslsound/. [19] Vafeiadis, V., Parkinson, M., A marriage of rely/guarantee and separation logic, in: Caires, L., Vasconcelos, V. T., editors, CONCUR, LNCS 4703 (2007), pp. 256–271. [20] Yang, H., O'Hearn, P. W., A semantic basis for local reasoning, in: Nielsen, M., Engberg, U., editors, FoSSaCS, LNCS 2303 (2002), pp. 402–416. 18
Pages to are hidden for
"Concurrent separation logic and operational semantics"Please download to view full document


text:
Just Released: Start Profiting ASAP! We are looking for a few members to test our New Push Button Commissions System that just hit the market.
If accepted, you can start generating up to $3,488 a day using this new app.
This is for BEGINNERS only.
Click Here for Private Registration.


text:
Does pregnancy speed HIV progression?
Because pregnancy itself is thought to suppress immunity, concerns have been raised that pregnancy in HIV-infected women could hasten HIV-related deterioration of the immune system. (1) But the evidence to date suggests that pregnancy does not have such an effect, at least in the short term. (2)
Early reports of pregnancy in HIV-infected women seemed to support the hypothesis that pregnancy accelerates HIV disease progression. However, these studies involved small numbers of women and lacked control groups or the ability to adjust for other factors known to influence disease progression, such as disease stage or time of HIV exposure. (3) A systematic review of studies published from 1983 to 1996 on pregnancy's effect on HIV progression and survival found a weak association between HIV disease progression and pregnancy in HIV-infected women, but it concluded that the potential for study bias was too great to draw definitive conclusions. (4)
A study published in 2000 was able to control for many potential confounding factors, including time since seroconversion (when virus can be detected in the blood), which occurs about three months after HIV infection. This study, which followed 365 HIV-infected French women--241 of whom were pregnant--detected no increased risk of HIV progression during pregnancy. (5) Like other prospective studies with similar findings, (6) the French study involved mostly women who had not yet developed symptoms of HIV disease. Therefore, the possibility of increased risk of disease progression among pregnant women with more advanced HIV infection could not be ruled out.
Several studies from developing countries also suggest that pregnancy does not increase the risk of disease progression. In a study among HIV-infected women in Haiti, no statistically significant difference was observed in the rate of progression to AIDS or death between 44 pregnant women and 96 nonpregnant women. (7) And two studies in sub-Saharan Africa--one among 823 pregnant Kenyan women and another that included 229 pregnant women in Malawi--detected no statistically significant differences in immune status between HIV-positive and HIV-negative women during pregnancy. (8)
"Of course, more rigorous studies are needed," says Dr. Marleen Temmerman, principal investigator of the Kenya study and professor of obstetrics and gynecology at the University of Ghent in Belgium. "But most studies in Europe, the United States, and Africa did not show an impact on disease progression, so if there is any impact at all, it will be a very minimal one."
(1) Vimercati A, Greco P, Lopalco PL, et al. Immunological markers in HIV-infected pregnant and nonpregnant women. Eur J Obstet Gynecol Reprod Biol 2000;90(1):37-41.
(2) Watts H. Effect of pregnancy. J Acquir Immune Defic Syndr 2005;38(Suppl 1):36-37.
(3) Scott GB, Fischl MA, Klimas N, et al. Mothers of infants with the acquired immunodeficiency syndrome. JAMA 1985;253(3):363-66; Minkoff H, Ragt RH, Landesman S, et al. Pneumocystis carinii pneumonia associated with acquired immunodeficiency syndrome in pregnancy: a report of three maternal deaths. Obstet Gynecol 1986;67(2):284; Minkoff H, Nanda D, Menez R, et al. Pregnancies resulting in infants with acquired immunodeficiency syndrome or AIDS-related complex: follow-up of mothers, children, and subsequently born siblings. Obstet Gynecol 1987;69(3 Part 1):288-91; Koonin LM, Ellerbrock RV, Atrash HK, et al. Pregnancy-associated deaths due to AIDS in the United States. JAMA 1989;261(10):1306-9; Lindgren A, Anzen B, Bohlin AB, et al. HIV and childbearing: clinical outcome and aspects of mother to infant transmission. AIDS 1991;5(9):1111-16.
(4) French R, Brocklehurst P. The effect of pregnancy on survival in women infected with HIV: a systematic review of the literature and meta-analysis. Br J Obstet Gynaecol 1998;105(8):827-35.
(5) Saada M, Le Chenadec J, Berrebi A, et al. Pregnancy and progression to AIDS: results of the French prospective cohorts. AIDS 2000;14(15):2355-60.
(6) Hocke C, Morlat P, Chene G, et al. Prospective cohort study of the effect of pregnancy on the progression of human immunodeficiency virus infection. The Groupe d'Epidemiologie Clinique du SIDA en Aquitaine. Obstet Gynecol 1995;86(6):886-91; Weisser M, Rudin C, Battlegay M, et al. Does pregnancy influence the course of HIV infection? Evidence from two large Swiss cohort studies. J Acquir Immune Defic Syndr 1998;17(5):404-10; Burns DN, Landesman S, Minkoff H, et al. The influence of pregnancy on human immunodeficiency virus type 1 infection: antepartum and postpartum changes in human immunodeficiency virus type 1 viral load. Am J Obstet Gynecol 1998; 178(2):355-59; Brettle RP, Raab GM, Ross A, et al. HIV infection in women: immunological markers and the influence of pregnancy. AIDS 1995;9(10):1177-84.
(7) Deschamps M, Pape J, Desvarieux M, et al. A prospective study of HIV-seropositive asymptomatic women of childbearing age in a developing country. J Acquir Immune Defic Syndr 1993;6(5):446-51.
(8) Temmerman M, Nagelkerke N, Bwayo J, et al. HIV-1 and immunological changes during pregnancy: a comparison between HIV-1 seropositive and HIV-1 seronegative women in Nairobi, Kenya. AIDS 1995;9(9):1057-60; Miotti P, Liomba G, Dallabetta GA, et al. T-lymphocyte subsets during and after pregnancy: analysis in human immunodeficiency virus type-1-infected and uninfected Malawian mothers. J Infect Dis 1992;165(6):1116-19.
Reader Opinion
|Printer friendly Cite/link Email Feedback
|Title Annotation:
|Hormonal Contraceptive Use by HIV-infected Women
|Shears, Kathleen Henry
|Jun 22, 2007
|Previous Article:
|Does hormonal contraception speed HIV progression?
|Next Article:
|Contraceptive options for HIV-infected women.


text:
Frogger the Food Giants in B'ham have it. I deliver to them. There's one in Roebuck and one out in Moody. Also Aporto Madrid. Bessemer and Hueytown. You won't find it in Piggly Wiggly or Winn Dixie. Just the Mom and Pop stores.
Frogger, sorry no reply--somehow I didn't see the recent activity on this thread. Been brewing some apfelwein lately and following the wine/cider threads I guess. Anyway, I'm quite a bit farther north of you. The Foodland is the one at Priceville, near Decatur. The last exit heading north before the Tennessee River. Get off I-65, take a right, about 1/2 mile on left. Also Dave R, the Piggly Wiggly here carries PME as well--just about 5 miles down the road from the Foodland. I've been driving 30 miles to the LHBS in Huntsville and I'm surrounded by malt!
Good to know about the Pig, jcobbs. I also deliver to the Foodland in Priceville. I'm usually there Friday afternoon about 2 pm. Come on by and we'll compare notes. Just look out back for the big truck at the dock.
Cool, Dave, I'll try to do that sometime. Hoping to try an extract version of "Brandon O's Graff" with PME sometime soon. If it tastes as good as I hope I'll be stopping by the Foodland or the Piggly Wiggly regularly!
I drank several glasses of this the other day. It's starting to mellow out.
Ticking away the moments that make up a dull day...
i poured about one half of a pint last night and WOW! is this stuff great! The bitterness I have experienced with previous batches of premier was not there or it was covered up by the sweetness from the 120L crystal and the spiciness of the Chinook hops. whatever the case, i did not have an arrogant bastard to compare it with directly but it tastes pretty spot-on to me. I will get an arrogant bastard to compare it with asap and post a follow-up
Charlie Papazian's Joy of Home Brewing has a recipe called Wise Ass Red Bitter using this very same light hopped Premier malt extract. I've made it several times and it's still one of my favorite easy drinking beers. And it has a beautiful coppery-red color. I've been brewing for 17 years and this book is absolutely the best there is. I still refer to it constantly, and if you follow his simple, clear advice and tips, you can't help but make great beer. This book is worth its weight in gold, and the best money you'll ever spend on brewing. His other book, the Homebrewer's Companion, is really good, too, and has a lot more info on all grain brewing.
Just came back from a trip and headed out to the "brewery/winery" (workshop) to check my PME extract Graff. Bubbling happily and smells awesome! I had just about given up on brewing beer in favor of apfelwein & Graff, but if this PME Graff ends up as good as it's starting out, I think I'm going to give a batch of beer a whirl. The price is certainly right--the same store that has the PME has spring water for $1.20 a gallon, in nice tall jugs that make perfectly fine one-use carboys. Do a one-gallon boil, mix it all in my 5-gallon bottling bucket, pitch the yeast, and pour it back into the the jugs to ferment. Including the extra sugar, a one-can 5 gallon batch will run about $14. If you get 50 bottles in a batch, (allowing for racking and sampling) that's about 28 cents a bottle! I realize that the object of homebrewing is to make good beer, not cheap beer, but if you can make a decent, drinkable "lawnmower" beer for just over a quarter a bottle, why not brew a batch? Or several?


text:
RAF online survey Got 5 minutes to help us improve our site? Yes, I'll take the survey No thanks
HomeNewsRaf Yearbook 2011 06052011
Sorry, the news article you have requested cannot be found, please try again from our index page.
News articles by date
Get RSS Feed:
What is RSS?
Rate this page:
© UK Crown copyright 2015


text: Marc Andreessen exits eBay's board ahead of its PayPal spinoff by Laura Lorenzetti @FortuneMagazine October 20, 2014, 8:42 AM EDT E-mail Tweet Facebook Google Plus Linkedin Share icons Marc Andreessen will step down from eBay's board of directors Monday in the wake of the board's approval to spinoff the company's PayPal unit. Andreessen, founder of venture capital firm Andreessen Horowitz, said now is the right time for him to step down and called his time as part of Ebay's leadership "an absolute privilege." He has served on the board for six years alongside other members including eBay founder Pierre Omidyar and Ford Executive Chairman William C. Ford. The venture capitalist initially took to Twitter to announce his resignation in a series of public tweets. 1/After 6 years of service + completed decision to split, I've decided now is a good time to step off the eBay Board of Directors. — Marc Andreessen (@pmarca) October 20, 2014 2/It's been an absolute privilege to serve with John, Pierre, and team, and I could not be more proud of what we've accomplished. — Marc Andreessen (@pmarca) October 20, 2014 3/I wish eBay, and both of its successor companies, all the best in the years to come & will seek to continue to help as much as I can. — Marc Andreessen (@pmarca) October 20, 2014 Ebay CEO John Donahoe followed up shortly there after with a release confirming Andreessen's exit and commending his leadership. "He has provided invaluable support to me, the board and the entire company," Donahoe said. Last month, the board voted in favor of spinning off its PayPal business, which will launch as a separate, publicly traded company in the second half of 2015. Ebay EBAY had come under pressure earlier in the year from activist investor Carl Ichan to make the move, which Ichan said would build more value by focusing the companies in their core competencies.


text:
By Gwen Watson
27. January 2015 09:26
We stumbled across this fantastic recipe for a Valentine's Day themed popcorn treat. Combining sweet and creamy white chocolate with conversation heart candies, this recipe really is a perfect balance of sweet and salty when mixed with lightly salted popcorn. This is a perfect snack to enjoy while cuddling on the couch with your loved ones. More...
5. January 2015 12:07
It's a new month and a new year! Many of us make resolutions to achieve special goals for the near year. One common New Year's resolution is to get in shape. This can mean going to the gym more, eating healthier, or taking up a physical activity as a hobby. Making simple changes to your daily eating habits can have a big influence on keeping your resolutions. One area in particular is snack food. While munching on crackers, chips, and cookies may be convenient, they don't help the waistline.
Making some small swaps in your snacks with healthier options is just one step to eating healthier and helping you maintain your New Year's resolution.More...
5. December 2014 12:57
Decorating a Christmas tree usually involves spools of electric Christmas lights, store-bought and homemade ornaments, with a star or angel resting at the top. Yet these traditions are a result of modern conveniences. When Christmas Trees first rose to prominence in the United States, they were often decorated with fruits and other items. From this, a tradition of stringing popcorn and cranberries into a garland that wrapped around the tree was born.
26. November 2014 08:11
Popcorn is no stranger to the holidays. It is often strung with cranberries to make a Christmas garland that is wrapped around the Christmas tree or around wreaths that are hung throughout the house. However, did you know you can also use popcorn to create unique, do-it-yourself glass ornaments? All you need are a few simple items. More...
Tweets by @KingOfPOPcom
Visit KingOfPOP.com's profile on Pinterest.


text:
- News
- Local
- Sports
- Business
- Politics
- Opinion
- Lifestyle
- Entertainment
- Obituaries
- Classifieds
- Autos
- Housing
- Jobs
Plan violates a deal on spending limits, GOP says.
The Senate Budget Committee's top Republican accused the White House of violating a bipartisan agreement on spending limits with its new budget, a sign of tough going for administration priorities.
In the first congressional hearing on President Obama's budget plan, Alabama Sen. Jeff Sessions confronted White House budget director Sylvia Burwell about the president's proposal to spend $28 billion on public works, education, job training and other "investments," with another $28 billion earmarked for the Defense Department.
"You are spending over what the law requires," Sessions said.
Obama's budget request came in $56 billion above the $1.014 trillion limit on discretionary spending that was agreed to in a deal reached in December by Sen. Patty Murray, Democrat of Washington, and Republican Rep. Paul Ryan of Wisconsin. Burwell said spending would be paid for by raising taxes and tightening tax loopholes.
Both sides were anticipating an election-year clash over the budget as Obama pushes Democratic Party priorities and Republicans, mindful of their political base, seek to keep check on spending.
Obama's $3.9 trillion budget proposal would benefit low-income families, college students, researchers and highway users. In turn, he's is asking more from airline passengers, U.S. multinational companies and high earners who would pay a "fair share tax" to pick up the tab for the added spending.
It also emphasizes differences with congressional Republicans, who plan to offer a budget plan of their own.
Under questioning by Sessions, Burwell acknowledged that exceeding the so-called discretionary spending limit by $56 billion "will require an amending of the law."
It wasn't clear what lawmakers might do about the $56 billion, if anything.
Sen. Rob Portman, an Ohio Republican, said the White House didn't do enough to rein in entitlement programs, such as Social Security or Medicare.
"These programs are not sustainable," said Portman, who was director of the Office of Management and Budget under Republican President George W. Bush. He said Obama's answer seemed to be "tax more and more."


text:
Good Morning Honey, you ready to get up?...... I'm making your favorite omelet this morning...... no, no hash browns..... we decided to give them up
Happy Sunday : )
Thought I would 'knock on the ceiling, three times' and say hello, today. I imagine lots has transpired in the past
Good Morning Honey, it's really late, you want coffee anyway?.......Dr. Pepper?........ Oh okay Love, yes gimme 5 minutes.......No, that does not
Good morning Honey, How's your little toe?....... I know it hurt last night, how is it now?....... It is not my fault, why is it my fault?...... Baloney,


text:
|Reviews for On a Clear Day
| Anonymous chapter 1 . 3/12
Holy snap. I loved it.
| Nikolai Vaughn chapter 1 . 2/13
Where the fuck is your Newbery Award? This is amazing.
| evansentranced chapter 1 . 1/28
I never saw this one! I thought I'd read all your fic; I've certainly combed through them enough. How did I miss this gem? That's crazy. As always, I love your broader universe, all the little touches like Harry plying Draco with coffee and the talking cabinet and just the general sense of their personalities, which I love your version of. And this one was satisfyingly long and their relationship built so gradually that you get this immense satisfaction from watching it (the realization) slap them in the face (At least, Draco. I imagine Harry had his own private face-slapping moment, or Draco managed to miss it.)
So many of your stories are my go-tos for so many different fic-reading moods. If fluff is the fic equivalent of candy, these are more like... comfort food. (And I know I said in an earlier review that 'The Haunting' is my favorite oneshot of yours, but I just realized I'd forgotten 'Talk to Me', which is basically the perfect Drarry fic IMO. All time favorite. Sorry, Theo! ...I still love him though. He *makes* the story.) Anyway, I know people say this a lot, but I genuinely want to thank you for writing these! They're lovely.
| TheCauldron chapter 1 . 1/22
THIS *flails and melts, then pops back up to give you a standing ovation*
| SlytherinQueen1704 chapter 1 . 1/13
this is a really great story ! its a lot of fun to read and has the perfect amount of angst , romance and suspense to keep the interest going ! 3
| assassinerblue chapter 1 . 1/5
Re-reading this was a delight. Even better the second time around!
| rainbow-electra531 chapter 1 . 12/30/2014
They kissed at the end, right? Please tell me they kissed. I really want them too!
| Vaelliance chapter 1 . 12/27/2014
Oh gosh, I love the story, it's beautiful, it's wonderful, but most of all, I love the cupboard!
| Ari 3 chapter 1 . 11/4/2014
I can't even begin to express how perfect this story is! You are my favorite writer ever!
| malfoyharry chapter 1 . 11/1/2014
Wow. Just wow. I have never seen a one-shot be so long. Took me a while but it was worth it. That was an excellent story! I can't wait to see what else you have. Keep it up!
Until next time,
| Alice chapter 1 . 10/26/2014
Perfect story. Thank you for the read. :D
| Freedom Writer chapter 1 . 10/24/2014
This was so good, I thoroughly enjoyed it and i was pleasantly surprised at the Caligula reference.
| Articuno chapter 1 . 9/21/2014
Wow! I absolutely loved this! I even liked Mrs Norris. :)
| CleopatraIsMyName chapter 1 . 9/13/2014
Oh I love that Draco sings the Smiths. Of course, why not. Just beautiful. C x
| d1x1lady chapter 1 . 8/28/2014
So fabulous! Love this story.


text:
Search Results for "Jana"
Twistys Treat of the Month - Jana Jordan
Texan Jana is February's treat! Today she's getting in touch with nature - stripping by a tree.
Sexy Jana Miartusova
Czech Jana takes off her mesh top and thong to pose in the nude!
Sofia and Jana
On the third day of Christmas Sofia and Jana showed up topless! Of course their panties don't last too long either..
Blonde Jana
Jana takes off her little pink outfit and relaxes on the couch.
Jana Jordan in the Pool
This sexy 22 year old blonde has fun playing around with the pool toys, oh and she takes her bikini off!
Sandy Summers and Jana Jordan
What started out as an innocent lingerie party has turned quite sexy. These two just can't help themselves!
Handy Jana Miartusova
Jana has a weakness for handymen and she's here to distract them! Another fine lady that likes a good drill..
Yummy Jana Jordan
Stuck inside all day? Invite Jana over and she'll brighten things up!
Jana Miartusova
Brunette Jana strips out of her half see-through dress on the balcony.
Jana Jordan in Bed
22 year old Jana plays the foxy mama stripping and posing on her bed!
Jana Jordan's Pool Party
So, if you had a choice between Jana's and Nicole Graves' pool party, which would you go to? Cute Jana's already into the hot tub!
Judita A and Jana C go Camel Riding
Judita and Jana go naked camel riding out in the middle of nowhere. They sure have a nice set of humps.. (sorry, had to).
Jana Jordan and Georgia Jones
When Jana and Georgia get together on a hot day, they just can't help themselves!
Jana Jordan and a Stripper Pole
Jana shows off how talented she is with a stripper pole and she has the tips to prove it!
Watch Cam Shows for Free!
Basically you can watch girls strip and do shows for free while others tip them. Or you can be nice and tip too, it's up to you! There's a permanent link on S&F to this site for easy access, near the bottom/right of every page.


text:
Now Playing
Podcasts & RSS Feeds
|All Content
|View all podcasts & RSS feeds
Connect with Us
Most Active Stories
- Experts To Brief Lawmakers On Hep C In RI; Cost Of Treatment Likely To Come Up During Budget Talks
- Former Speaker Gordon Fox Pleads Guilty to Bribery, Wire Fraud & Filing a False Tax Return
- Scott MacKay Commentary: Raimondo's Budget Challenges And Secrecy
- Fox Broke Statehouse Iron Rule
- TGIF: 17 Things to Know About Rhode Island Politics & Media
On Politics
4:08 pm
Wed April 17, 2013
Social Event of the Season Thursday at the MET!
Please come to the social/good cause event of the season on Thursday, April 18, at the MET in Pawtucket: The `Made in Rhode Island' Spring Benefit fundraising event for Rhode Island Public Radio featuring NPR congressional correspondent Tamara Keith.
This soiree begins at 6 p.m. at the MET, located in Hope Artiste Village at 1005 Main Street in Pawtucket.
Taste delicious food from some of Rhode Island's best restaurants and food purveyors, including Matunuck Oyster Bar, Blackstone Caterers, Narragansett Creamery, Grey Sail Brewing of Rhode Island, Seven Stars Bakery, Thomas Tew Rum, Daniele Inc., and Farmstead.
You can also get a chance for a raffle that will feature such prizes as a trip to Austin, Texas to meet Ira Glass, a trip to Chicago and Tickets to `Wait, Wait…Don't Tell Me,' and a helicopter tour of Rhode Island lighthouses from Bird's Eye View Helicopters.
Be there or be very square. Ticket information is available here or call 351-0203. Tickets will also be available at the door.


text:
Monday, September 24, 2007
© Copyright 2015 Clayton News Daily
By Joel firstname.lastname@example.com Despite chilly winds and drizzle, hundreds of residents from Clayton, Henry, and Fayette counties waited in line on Friday morning to receive packages of food from Clayton County Community Services in Forest Park. Community Services opened its doors to recipients at 8:30 -- thirty minutes ahead of schedule -- to accommodate the line of people that wrapped around the building in the early hours of the morning. "People are ready, so we don't make them wait," said Jamminese Miller, community support coordinator for the organization.. To receive a bag, residents had to sign in, provide proof of their income, a valid identification card, and proof that they are residents of Clayton, Henry or Fayette counties. "With the Fayette and Henry sites, they are exclusive to their counties," said Miller. "This is the main site, and we don't turn anybody away," if they are from one of the three counties. Each family that is approved receives a bag containing two large cans of juice, one meat, two vegetables, two fruits, and rice -- a total value of about $20 worth of groceries. While that amount of food may only seem like a little to many people, the food goes a long way toward helping those in need, said Miller, who has participated in the food giveaway for eight years. "Typically, we used to see seniors and welfare recipients," she said. "Now, we are seeing working families, who are not making enough. We have single men and single women. With the rising cost of food and transportation, we're finding that people aren't able to maintain their entire household." At the start of the morning, Community Services had filled a room with 986 bags of food. By noon, that number was reduced to less than 200. Pearl Jennings, a Conley resident, said this was her second or third time receiving the food aid. "It's helpful because it provides food, if you run out before you get your paycheck," she said. "It's a good program because, if they didn't have it, a lot of people wouldn't have anything to eat. I take it to my father ... he's 96 years old and on a fixed income, so it works for him." Wilma Mahone, 64, of Forest Park, said she lives by herself in a senior citizen apartment complex, and the food helps her make ends meet. "It definitely helps if you're on a fixed income," she said. "It helps out, because I don't have anything other than my social security income." Delores Showers, who has volunteered with Community Services for two years, said helping local families get the nourishment they need is gratifying. "I wish that I could give them a little more, because I've been there, and I know what the other side of the table feels like," she said. "I makes me feel good to know that I can help someone."
More like this story
- Surplus food to be distributed ( September 25, 2009 )
- Community Services Authority, Lovejoy help needy families ( July 16, 2009 )
- Cupboard almost bare at food pantry
Without help, shelves empty by month's end ( February 27, 2009 )
- CSA gives food, clothes to area families ( October 1, 2009 )
- Financial help with utility bills now available ( January 26, 2008 )


text:
These cuties were a blast to photograph at Tuckahoe Plantation last summer. One of my favorite sessions…
I am finally getting caught up on blogging from 2014!!! Pheeew! I love photographing this family. Enjoy the photos, especially the cute bulldog.I had to keep them a secret until after Christmas….
I have been dying to share these from this summer! They were a surprise for their Dad…….and now the cat is out of the bag, so I can post these! I loved being able to catch up with this old friend while she was visiting our "home"…in King Ferry. Her children are as beautiful as she is!!!
It was so much fun following Gabe around his farm last week! Enjoy a few shots of Gabe's obsession with tractors.
So much fun hanging out with Kristin and her family…..such a beautiful property!!!! Enjoy