text:
A short serve of imformation
This might serve as an suitable reply to to the minimal traffic arriving from relatives and friends with regard to posts and letters to relatives, sent out over the past few weeks. Last Sunday went off well although I was the sole survivor of my assoc attending the Anzac Commemoration. Unfortunately the tobacco smoke in one area of the club has affected my eyes, hence watery stinging eyes have made the past three days unpleasant, so this post will only be received by those who have requested it.
Due to my eye problem driving is out, so our proposed trip to see our sons and families down south is off, an email to Andrew no 4 son who rarely checks his email will surprise him that we didn't turn up!!! This post will serve as a reminder to David who answers his email more regularly.
Now here is some real bad news for Smokers. The cost of smokes will shortly increase to recover some of the costs smokers contribute to the poor health of others and to themselves.
..Cigarettes to come in plain pack
CIGARETTE packs will be stripped of company logos, colours and brand imagery from January 2012 in a bid to slash the nation's smoking rate to 10 per cent.
The world-first laws will require cigarettes to be sold in plain white packaging with the product name displayed in small type in a standard colour and typeface on the bottom of the packet - on top of today's expected excise increase.
The mandated health warnings will remain on the flip side of the packet.
The plan to remove one of the last vehicles for tobacco advertising is expected to be announced by the Rudd Government today.
The Government's National Preventative Health Taskforce which called for the law change last year has the support of the Cancer Council and the Australian Medical Association.
Do you think this will work? Tell us below
The Government is expected to develop and test the new designs itself to make them as unappealing as possible to young people.
A 2008 study found packaging to be a key marketing tool for tobacco companies, with people much more likely to rate packs with terms "smooth", "silver" and "gold" as lower tar, lower health risk and easier to quit.
The survey found 44.9 per cent of smokers thought the commercial pack would be low in tar and nicotine compared to 33.3 per cent who thought this about a plain packet of cigarettes.
Tobacco company market testing shows pack design can even influence a smoker's rating of taste when the same cigarette is packaged differently.
Smoking is the single largest preventable cause of disease and death, killing over 15,000 Australians a year. The number of smokers in Australia has almost halved since 1988 from 30.5 per cent of adults to 16.6 per cent.
KISS A NON SMOKER AND TASTE THE DIFFERENCE
Remember, life shrinks or expands in proportion to ones courage. Give it up
Have a wonderful weekend. Vest.
at April 29, 2010 34 comments:
The Australian gold card. A Re Run followed every few days of five posts relating to this issue.
The Australian 'GOLD CARD'. The ongoing Gold Card saga plods its weary way through the morass of political discrimination.
The first requirement for this elusive 'Gold Card is that, you were born in Australia, or if you migrated to Australia and served in the armed services and faced the enemy in the defence or in the interests of Australia; in or overseas.
You dont have to be wounded in action or become the holder of a distinctive decoration, you may be a non combatant in a designated war zone, and of course you must be an Australian citizen at the time of qualification and at the time of the receipt of the award and more than 72 years of age.
I am a ex British serviceman who served in the British Navy for nearly four years during WW2, Korea and middle east conflicts.
Based in Sydney Australia during WW2, the last nine months was spent at sea in the Pacific serving with Australians and the United States forces until the surrender of Japan.
At the end of hostilities, a vast number of British servicemen stayed on in Australia, some illegally I am told, most of whom became Australian citizens, some for nearly sixty years.
Myself, well I being a career Navy man, I was unable to return to Australia until 25 years later.
My main concern is for those British men who have given their all for this country and consider their home to be Australia, Some of these old guys really need this entitlement as much or in some cases more than some of the healthy looking true blue Dinky di Aussies, maybe its more important that an OZ vet gets a new set of gnashers and a face lift due to the sun than an even older ex Brit guy needing a knee replacement. An Australian friend told me he arrived in New Guinea just as the war ended and had to wait several years to see his first Japanese, A tourist in Sydney, good old Al gets the gold card for that overseas holiday, however, most of those vets who served in New Guinea deserve a heap of respect and much more than a bloody Gold card.
I am uncertain as to when this Gold Card was first awarded, however, to my knowledge; it was certanly not around even when I returned to Australia in Aug 1971 and it could not have been one of the many incentives to persuade me to return here. I did not have to rely on charity on my arrival here, my family and I had enough funds to purchase a residence, also a steady income from England, in fact 60% of our income is sourced from the U/K. I have never drawn any Dole payments.
FAQ " Why do other commonwealth citizens ie British not recieve the gold card" ? "answer, I believe its just the rules you know".
In other words it is blatant discrimination, there can be no possible excuse. The costing would be minimal compared to some of the present governments grants to arts weirdo's and other bludging work shy organizations, unnecessary overseas aid and the constant wasteful updating of those outdated Collins Class Submarines, Or the money could be well spent updating the salaries and pensions of some of our more notable Chicken Hawks who escaped overseas during the time Australia was at war, like Malcolm Frazer who became PM by default, our present PM little John, and of course Billy Bunter- Alex Downer Our Foriegn Minister.
The likes of those blokes will have a Gold Card in every pocket.
More to come in my next post. VEST DAILY GAGGLE.
Posted by Vest at 7:33:00 PM 18 comments Links to this post
The Gold Coloured Medallion. Could this be a step closer the medical benefits'Gold Card'
Will the presentation of this Medallion soften the hearts of Canberra Bean Counters ?
Last month I was informed by the Dept of Veteran Affairs that I among many others would be presented with a special medallion which commemorates the 60th anniversary of the end of WW2 in the Pacific, this medallion was to be presented to me by my Federal member of parliament Jill Hall, whom I remember as a helpful and industrious person.
The presentation was low key(Save me the detail) . I took notice that about 30% of the recipients were expat Brits who served in the Pacific during WW2, I was photographed together with Jill Hall (MP), I then received a small box containing a gold coloured medallion, it was enscribed - WORLD WAR 2 SERVICE TO AUSTRALIA. inside of the box a message on a small card states: It is presented in 2005 by the Australion govt on behalf of the Australian people to those who served this nation and her allies during the war from 1939 to 1945.
I also received a folded 6x8inch commemoration form With the Australian coat of arms etc, with printed signatures of our Prime Minister John Winston Howard who signed himself John Howard and vet affairs MP De-Anne Kelly, then finaly Jill Halls signature with a real pen, bless her, Well done Jill Hall.
The statement on the certificate reads thus:
In 2005 we commemorate the 60th anniversary of the end of WW2.
Australia has a long tradition of commemorating our wartime history and honouring
the service and sacrifice of our servicemen and women during those times.
Our veterans and their families have given much to protect the Australian way of life
in times of conflict and helped build our community in times of peace.
We thank you sincerely for your contribution to our nation.
Well well well!! How would anyone interpret this message other than an admission that us Brits who also did more than our bit, should receive the gold card.
Incidently, apart from the official invitation to attend for the presentation, My NAME WAS NOT EVEN PRINTED ON THE DOCUMENT OR INSCRIBED ON THE MEDALLION.
Posted by Vest at 9:05:00 AM 6 comments Links to this post.
THE SAGA OF THE UNNATAINABLE GOLD ENDS HERE WITHOUT A WHIMPER OR RESPONSE FROM ANY GOVT BODY.
LEAST OF ALL I EXPECTED SOME RESPONSE FROM THE PERSONS WHO MAY HAVE BENEFITTED BY THE OFFER OF THE VETERANS (AUS)MEDICAL BENEFITS GOLD CARD
So it seems you only have your selves to blame, that, my platitudes have fallen on the deaf ears of the cheats in Canberra.
Oct 4, I received a letter from people who described themseles as an offshoot of the (RSL)Returned Servicemans League. I was offered tickets for the chance to win a posh house in Queensland(Fat Chance) at $5-00 a pop. The benefits from this lottery going to Australian ex Servicemen, like legacy etc. As a British ex service man who fought for Australia during WW2, and not a gold card recipient, I wrote in reply to their letter telling them where to stuff their begging letter, why in heavens name should I be considered unworthy of recognition, yet be expected to pay the beer and poker machine expenses of some of the fit and healthy and some younger gold card recipients I know, who frequent my local clubs and pubs. Don't they get enough?
My main request is for the more senior members of ex Brit/Aus war vets to be afforded medical assistance (Gold card standard) when in dire need, not as a god given right.
Posted by Vest at 10:28:00 PM 5 comments Links to this post Wednesday, 9 November 2005
WINDING UP THE GOLD CARD SAGA.
A Study of my web stats indicates only about 2% of visitors commented on the previous posts relating to the Gold Card. Not interested, only for oldies and we will never get it attitude possibly by oldies, too proud are you? what a shame, well a lot of you will boot the bucket earlier than you anticipate due to your complacency,and the Govt will double dip due to your earlier departure, the futility of it all will bring gleeful joy to the yellow toothed Uber Rodents in Canberra.
At last I received a letter from De-anne Kelly MP Minister of Veteran Affairs; via my Federal MP Jill Hall; thanks Jill for your efforts to help,you have done your best for us. but it is a losing fight for the aged British Vets, the numbers of those in dire need would be around the lower hundreds.
I shall not consider myself as one of those unfortunates, I being only 80 and only suffering from asbestos related pleurosy.
Mind you our Fed Govt is doing a great job and has managed to spend about $65 million bucks from the several billion surplus on more important ventures like:$12 million to upgrade and expand Aus war memorials, another $11million to build Anzac Hall, $7million for refurbishing of some war memorials, and to encourage 'Pride in Aus Military History' another $15million, other small cosmetic issues add up to around $12.5million.
In addition; we have an outpouring of funds to various countries supposedly in need, who in turn would stab you in the back if the need arose, for example our neighbour Indonesia has been deluged with millions of our hard earned bucks, to enable them to combat bird flu, while us OZZIES have not the faintest hope of getting the vaccine for ourselves.
Meanwhile 'Billy Bunter' aka Foriegn Minister Alex Downer; our famous fat draft dodging hero and chicken hawke wimp is overseas wringing his podgy hands; attempting to appease the Singapore Govt PM; to not hang a Viet born Aussie convicted of serious drug offences. most people are certain the guy will swing within a few days, getting off 'aint gonna happen' as this would set a precedent and seriously stuff up the Singapore Govts draconian drug laws.
Australia has at least three major drug dramas unfolding within Indonesia at the present time, with the possibility of a dozen Australian guys having their guts blown apart by machine gun fire if found guilty; there is little chance of them going free.wanna bet.
It all boils down to one thing , the Feds are spending millions in tax payers money; preferably on the deceased rather than a small minority among the living.
These proposed memorials will again depict names of the glorious past heroes in order of rank and importance; followed in goldleaf bold letters by the incongruous names of the the minister or ministers who performed the act of unveiling, usually a high ranking(Does that mean smelly) politician. There is a plethora of these BUSH arse licking non combatant draft dodging fat cat chicken hawke wimps in Canberra, who can provide hidden back up clauses in the Fed Legislation to prevent non true blue ozzies from pushing the beer swilling golden ozzies Snouts from the benefits trough.
So you sinister ministers in Canberra, yours is a triumph of stupidity and arrogance over commonsense and dignity and at this moment in time I shall present to each a credibility award, that of, 13%lower than that of a Backyard Car Sales Person.
The sooner politicians the world over have their brains replaced with Cauliflowers and religeous orders are abolished globally, we will be then be controlled by the truth and love we all need; instead of the present lies distortions and greed.
De-anne Kelly Minister for Veteran Affairs. So sweet of you to eventually reply.
I am aware of your slogan 'Putting people of Dawson first' doesn't that include you yourself, surely a state based MP would fix that problem, leaving you more time to get stuck into you cushy Canberra pidgeon hole. BTW fancy you of all people having
a branch head with the name of Ian Kelly, surely not two Relo's with similar names.
Enjoy your Idyllic life down on the farm-- until the yellow hordes consume our country, I hope you take notice that a fith column of thousands are here already ( mostly in your state) preparing for the final assault. I would also like to inform you due to that drop of Vitriol at the end of your letter you will not be receiving a xmas card from me in the future, and it please's me to know That I am not of your Banana bending ilk Biologically or by species.
As for the Wretched Medallion which was returned to me uninscribed, by express post, thereby wasting another $7-50 of taxpayer dosh, it has been finaly laid to rest as like the gold card, ignominously slung to the bottom of my sock(sox) Drawer.
Feel free to comment, VEST DAILY GAGGLE>
Posted by Vest at 1:58:00 PM 16 comments Links to this post Friday, 21 October 2005
IF YOU WERE INVITED BY THE AUSTRALIAN GOVT TO DEFEND AUSTRALIA
Like most of us vets did during WW2 and then choose to migrate and remain in Australia as Citizens for up to SIXTY YEARS. You will be technically referred to as 'Lower Grade Australians.'
If you put your life on the line in the defence of Australia in times of war, as did friends relatives and other colleagues of mine and who died as a result, also the other men who survived the horrors of war and chose to stay or migrate to Australia at the first opportunity and become Australians by choice, you must pass a stringent test, and on graduation you will be invited to sing, "We are-you-are-wer'e all Australians" etc.
But wait!! That is only until when you apply for The Elusive Veterans Medical benefits 'GOLD CARD'. At this point you will be informed, "Well!! you are not really Australians are you".
This degrading Gold Card fiasco is a blight on the democratic principles of the Australian Federal Govt, This type of discrimination is similar to that shown by Mr Schickelgruber ( The one balled vegetarian fascist's) anti semetic policy, and should be redressed in Federal Parliament at the earliest opportunity.
Our decendants and those of (Dare I say it) other Australian 'Caste's , will reap the benefits from our efforts to make Australia safe and a great place to live.
Vest, Octogenarian. Daily Gaggle. Proud to be Australian.
Posted by Vest at 6:48:00 PM 12 comments Links to this post Thursday, 13 October 2005
Dear Mr Prime Minister Of Australia, The Hon John Howard MP.
I am left wondering, under what circumstances and by whose whimsical conception WHY ? the hard attitudes of consecutive bigoted Federal Governments of the People of Australia, have decreed that, the Magnitude of the Sacrifice and Achievements by the men of the British Royal Navy in the Pacific Theatre of war 1944-1945, by whose actions gave enormous benefit to our country Australia and its people, should be ignominously considered contentious and unequal to Australians 'Born and Bred.
Sir, If such system of measurement exists, it would be purely hypothetical and genetically passed on by successive leaders who have an axe to grind, and who better to dislike than the Boss or Mother Country, from whence we came to do our bit.
To those 'True Blue Australians' who served with us on British ships and those who crewed borrowed British ships I say well done,you deserve your Medical benefits 'GOLD CARD'.
I would also like to thank the Royal Australian Navy for their role in delivering the Mail to the Fighting Ships.
Finally Sir, it is hoped that you will find a new measure, and that, you Sir will find it large enough to enable your Government to pour a little of its comfort towards our members, if only those; who are mostly over 80 years old, and who may be in dire need, or will what's left of the strength and determination of the Brits that survived, be enough to give them the will to make it through without the Gold Card. Vest not Forget.
Posted by Vest at 6:47:00 AM 5 comments Links to this post Monday, 10 October 2005
THE BRITISH PACIFIC FLEET 1944 - 1946, Known as the FORGOTTEN FLEET.
FLEET STRENGTH AT THE TIME OF THE JAPANESE SURRENDER
BRITISH PACIFIC FLEET AND BRITISH EAST INDIES FLEET
Battleships, 40,000 ton 4. / 2, one French
Fleet Aicraft Carriers 5.
Escort Aircraft Carriers 12. / 16
Heavy & light Cruisers .
6 to 8,000 Tons 10, 2 NZ,1 Canadaian. / 13, 1 Dutch
Destroyers 40, 6 on loan to RAN. / 45, 1 dutch 2 French
The above ships formed the fighting force, except the 6 RAN destroyers on N A S Duties escorting Supply Ships and 'Bringing up the Mail' The "GOLD CARD MEN'
Frigates & Sloops 31./ 59, 5 R Indian Navy
Submarines 29. /14
Minesweepers 33./ 31, 15 R INDIAN NAVY
Landing ships - 21.
Maintenance/Repair ships 15. /21.
Fleet Oil Tankers 22.
Hospital Ships 6.
Ammunition & Store Ships 43.
TOTALS 245 Ships in all. 222 Ships in all.
RN AIR STATIONS 3 BPF/ 8 EAST Indies
Posted by Vest at 9:26:00 AM 13 comments Links to this post
A Poem for ANZAC DAY.
A Poem Worth Reading
He was getting old and paunchy
And his hair was falling fast,
And he sat around the RSL,
Telling stories of the past.
Of a war that he once fought in
And the deeds that he had done,
In his exploits with his buddies;
They were heroes, every one.
And 'tho sometimes to his neighbors
His tales became a joke,
All his buddies listened quietly
For they knew where of he spoke.
But we'll hear his tales no longer,
For ol' Bob has passed away,
And the world's a little poorer
For a Soldier died today.
He won't be mourned by many,
Just his children and his wife..
For he lived an ordinary,
Very quiet sort of life.
He held a job and raised a family,
Going quietly on his way;
And the world won't note his passing,
'Tho a Soldier died today.
When politicians leave this earth,
Their bodies lie in state,
While thousands note their passing,
And proclaim that they were great.
Papers tell of their life stories
>From the time that they were young
But the passing of a Soldier
Goes unnoticed, and unsung.
Is the greatest contribution
To the welfare of our land,
Some jerk who breaks his promise
And cons his fellow man?
Or the ordinary fellow
Who in times of war and strife,
Goes off to serve his country
And offers up his life?
The politician's stipend
And the style in which he lives,
Are often disproportionate,
To the service that he gives.
While the ordinary Soldier,
Who offered up his all,
Is paid off with a medal
And perhaps a pension, small.
It's so easy to forget them,
For it is so many times
That our Bobs and Jims and Johnnys,
Went to battle, but we know,
It is not the politicians
With their compromise and ploys,
Who won for us the freedom
That our country now enjoys.
Should you find yourself in danger,
With your enemies at hand,
Would you really want some cop-out,
With his ever waffling stand?
Or would you want a Soldier--
His home, his country, his kin,
Just a common Soldier,
Who would fight until the end.
He was just a common Soldier,
And his ranks are growing thin,
But his presence should remind us
We may need his like again.
For when countries are in conflict,
We find the Soldier's part
Is to clean up all the troubles
That the politicians start.
If we cannot do him honor
While he's here to hear the praise,
Then at least let's give him homage
At the ending of his days..
Perhaps just a simple headline
In the paper that might say:
"OUR COUNTRY IS IN MOURNING,
A SOLDIER or a SAILOR DIED TODAY."
Pass On The Patriotism!
A veteran is someone who, at one point in his life,
wrote a blank check made payable to 'Australia', 'New Zealand', 'Canada'
'The United States' or any other God fearing country for an amount "up to and including my life".
That is Honor, and there are way too many people in this WORLD who no longer understand it.
Good Queen Bess has her 4Th 21st, St Georges Day and ANZAC DAY.
A quiet start to the week so far no dramas, rising at 8 am Sunday we had an early brekky then drove to Toukley market , which is a mixed bag of things they don't want and you don't want, it would seem that people were cagey and doing lots 'Just looking'. With the sun out in force(SUNDAY) and minus hats we escaped to the local greasy spoon and indulged in a plate of fries, Probably trans fat jobs but tastier than those at Macca's. The remainder of the day devoted to domestic bliss ?
Monday another scorcher, had to put netting over the seed beds covered with old worn sheets damped down. We are in Autumn, and today is cooler at 29 cel.
Yesterday I phoned my dear friend Harry and his Wife Marie, Harry is suffering from terminal cancer. With so many other old ship mates too disabled to attend I shall be at the Anzac remembrance alone with Rosemary. For those unaware of Anzac day, Its origins began after WW1 and commemorates the fallen in subsequent wars, those of both Australia and New Zealand, Although Remembrance day is now commemorated on the Sunday nearest to Nov 11, in Britain, in Australia it remains as Nov 11. and a day off for all, likewise Anzac day this coming Sunday will warrant another LWE for all, the drunks will be the main beneficiaries of this privilege.
Wednesday April 21. On this day the Queen bless her celebrated her 84Th birthday and her 4Th twenty first key of the door, the Windsors will be seen televised on yet another Corgi and Bess show.The Queen is really old, and as much as 86 days older than I. It is surprising how many people in Australia believe the queens birthday is in June.
Today Wednesday we got stuck into the rest of the leg of pork left over from yesterday accompanied with roast potato, butternut pumpkin, broad beans,carrots, cauliflower and rich brown gravy. Tomorrow a nothing day except for handout day for oldies, we are having healthy fish and green veggies.
Friday I shall walk into our bank (St George) under some excuse and confuse them by saying "Happy St Georges Day", our celebratory dinner will be Roast Sirloin of Angus Beef (Australian bred) with horseradish sauce, roast spuds, Brussels sprouts, runner beans and peas with pan juice gravy, lovely eh.
Saturday we hope will be a rest day prior to the 'Anzac Day Commemoration' on Sunday, this year will be sad as I shall be the sole survivor of our Assoc able to attend , this thing starts in a sombre note at the dawn service around 6.30am and finishes at most venues around 1130 pm, last year police closed our local clubs early due to hooliganism by inconsiderate drunks who usually spoil the day anyway.
Today Thursday has arrived;, not a cloud to be seen, a nothing day, like no escape from the heat, 30s expected and winter is expected in 37 days time. I much prefer the winters here when we are able to wear proper clothes occasionally.
We have a change, 1pm; although the sun is shining brightly and clouds have appeared, also a cool southerly has blown up from Antarctica, but it is still warmer than what can be expected in Great Britain where keyboards and inkwells freeze up and communications in general slacken off during the period following the Christmas and Easter card frenzy.Oh to be in England now that Aprils there, you will be tippy toeing to the Loo across the cool lino At 5.30 am then diving back under the duvet for further comforting minute or so before facing the truth that your work place is calling. and in any case its your turn to make the tea or coffee.
The previous situation is a rarity where we reside,usually happening around the middle of July, when crackpot former Europeans have their Christmas in July thingy, Crikey isn't one enough, "Humbug".
Last Saturday at the the club while rosemary was at the pokies(Slots)a middle aged lady asked me "are you newly married sir", I replied "not all that recently". She Say's " I was wondering why you were worth being kissed six or seven times in the past half hour'. The lady declined my offer that if you kiss me six times I shall tell you.why.
Regarding mail, Chris my son has suggested that maybe it is being sent by seamail and the ship has hit a mine or has been hijacked by Somalian Pirates, Rosemary agreed that it was possible and I said I cant see any other way of preventing the mail from the UK from getting through, Ah no! you cant use the volcano as an excuse, too recent.
I shall now close this post and return to report events that have occurred over the forthcoming W/E.
Back later Vest.
THE GREEDY ECCLESIASTICAL LUNATIC OF THE YEAR.
My April 10 2010 post attracted several nasty emails and one nasty comment regarding the movie industry relating to people from the promised land and elsewhere.
So ok you guys here is a bit more to chew on, its dated, but still worth a read, it just goes to show how some people despite being intelligent and worldly wise can be so terribly dimwitted wherever religion rears its ugly head.
RABBI DAVID SLAVIN, THE GREEDY ECCLESIASTICAL LUNATIC OF THE YEAR.
MOST people by now will be aware of my non alignment with the Faith Industry regardless of your choice of calling. Praying to ask that the laws of the universe be annulled for a particular petitioner is not my idea of facing up to the music and getting off your arse and getting on with life in a materialistic manner. Blind faith has few rewards, Hope which is desire and expectation rolled into one; is achieved through using logic and commonsense. However, a sense of Charity is to be expected from all mankind toward all creatures in crisis or beyond any chance of helping thereselves, which brings me back to the Rev Rabbi D Slavin, Who is a leader within the Orthodox Jewish religion Whose exploits were brought to light on my post dated Sept 25 06.(Click back).
At the cost of $19,800.00 two Sydney Councils are forking out to pay for the first KOSHER PEDESTRIAN CROSSING, Because pressing a button on the sabbath-the period of rest between sunset on Friday and sunset on Saturday- is considered a breach of religious law by orthodox Jews, (see my post Sept 25.)
I am suggesting that this bunch of religious crackpots at their future Knee bending sessions at their synogogue pass the chalice around until sufficient cash is collected in order to reimburse their benefactors, or be given to a deserving charity. The extensive list of 'donts' on the Sabbath is endless, like driving, cooking, carrying, handling money(ha ha), using electrical and mechanical devices. Maybe dressing oneself, opening doors, turning on taps(faucets) and pressing the toilet flush have been overlooked, so what in this persons crazy mind is so Bloody different about pressing the button on a pedestrian crossing?
I say Shame on you Rabbi Slavin, you are an absolute Thieving Nutter.
My Jewish Great Grandmother would turn in her grave hearing this.
Posted by Vest at 10:38:00 AM 18 comments Links to this post Friday, 15 December 2006.
FACEBOOK MURDER VICTIMS. Chilling Reports.
How to become a Facebook Murder Victim.
Any offending comment may be deleted or edited.
Weather: Sydney 18°C - 25°C . Fine. Sunny periods.
.The inside story of the Facebook murders.
SARAH Richardson took only moments to change her profile on Facebook from "married" to "single". There was nothing out of the ordinary about the move. Each day across the world, millions of people are constantly updating their pages on internet social networking sites.
Comic Jim Carrey used Twitter last week to announce his break-up with former Playboy model Jenny McCarthy. "Jenny and I have just ended our 5yr relationship. I'm grateful 4 the many blessings we've shared and I wish her the very best! S'okay!" Carrey wrote.
However, the end of the Richardsons' relationship had become increasingly hostile. The pair had been estranged for weeks.
She had moved back home with her parents and although she had told friends they still loved one another, she had concluded they "wanted different things".
Their marriage at an end, Mrs Richardson used the site to let friends know she was entering a new stage of her life. Days later, in May 2008, her husband stabbed her to death.
The case was not the first, or last, to set off alarm bells at the potential consequences of opening up on social networking sites.
Previously, South Yorkshire mother-of-two Tracey Grinhaff had been murdered by her jealous husband after using Facebook to tell the world her marriage was over.
"Been together for 16 years but together for 26!!!! God that makes me sound old," she had written on the site.
More recently, a series of UK crimes have been linked to Facebook and sparked a fierce debate over the site.
Accountant Camille Mathurasingh, 27, was slain after her former boyfriend Paul Bristol saw pictures of her on Facebook with another man. Bristol's rage was so great he flew 6500km from Trinidad to England and stabbed his ex 20 times.
Mathurasingh had been trying to let 25-year-old Bristol down gently, so hadn't told him about her new relationship, but her secret unravelled online, a court was told last month. Facebook says there are about 700 million updates to the site each day as 400 million active users share photos, post messages, contact friends and alter their profiles.
But not everyone sifting through the pages is a close friend or even an acquaintance.
One UK study found 85 per cent of women had been contacted by strangers on Facebook.
Matthew Myron, who conducted the study into online privacy, found users were in a bind as it could be "social suicide" to hold back on disclosing personal details.
In Australia, there has been controversy over the vandalism of Facebook tribute sites, including one dedicated to murdered schoolgirl Trinity Bates and another for 12-year-old Elliott Fletcher, who was stabbed to death at his Queensland school this year.
Police moved to have the offensive material about Elliot taken down from the site.
Facebook argued at the time that self-policing, in which users can report abuse, remained the best way of dealing with problems - but critics said the business had a responsibility to protect the public.
In the case of murdered British woman Mathurasingh, a war of words erupted last month about the Facebook link.
"People should deactivate their Facebook accounts in protest until Facebook brings in some controls," one reader wrote to UK newspaper The Daily Mail.
"Are you people nuts? It is not Facebook causing these problems . . . it's the people," responded another.
Another shocking case set off a similar debate. Ashleigh Hall, 17, was lured to her death after serial rapist Peter Chapham posed as a teenage boy on Facebook. "Disgracebook," read the front page headline in The Sun,* Britain's biggest-selling daily newspaper.
(Vest has a certified first day original copy of the Sun Newspaper dated 1968*). Any Offers?.
Ashleigh's distraught mother Andrea said it was "time somebody introduced controls which stop people putting up false information. The people who run Facebook have a responsibility".
In the wake of Chapman's conviction for murder last month, British Home Secretary Alan Johnson urged the company to consider installing a "panic button" for young users to be able to report sexual predators. Executives ruled out the device within hours.
Schoolgirl Aliza Mirza's Facebook account was also in the frame after her stabbing murder in London last month.
She had reportedly met her ex-boyfriend, who has been charged with her murder, on the internet site and kept the relationship secret from her strict Muslim parents.
Teenagers "should realise the dangers of who they are chatting to on the internet", her father said. Ironically, more than 5000 people joined a Facebook site in her memory.
Similarly, the site was used to appeal for information about the murder of Norwegian student Martine Vik Magnussen. In an extraordinary twist, Farouk Abdulhak, the man UK police wish to question in relation to her death, was initially listed as one of her "friends" on her own Facebook page.
The site's members have shown an increasing willingness to call in the authorities. Reports to the UK's Nottinghamshire police of crimes allegedly involving Facebook jumped from 13 between April 2008 and March 2009, to 58 in the following 11 months.
Keeley Houghton, 18, last year became the first person in Britain to be jailed for bullying on a social networking site after posts that included: "Keeley is going to murder the bitch." She was jailed for three months.
Disturbed by bullying and other pressures on young people from social networking sites, the head of the Catholic Church in Britain spoke out last August. Archbishop of Westminster Vincent Nichols said the transient nature of relationships formed on the sites were a key factor in teen suicide.
Dramatically underlining his point, Holly Grogan, 15, tragically jumped to her death from a bridge a month later.
Her family said in a statement: "Holly struggled to cope with the huge pressures placed upon her by the modern complexities of 'friendship groups' and social networking."A family friend added: "Girls used to bully her on Facebook and leave comments on her wall, calling her names."
And the problems are not limited to social networking sites. The internet has transformed human interaction, which has inevitably led to clashes.
In one of the most shocking examples, Petros Williams, 37, filmed his daughter Yolanda, 4, and son Theo, 2, waving goodbye to their mother before he strangled them with a computer cable.
He had flown into a rage after discovering his wife's use of internet dating sites as their marriage disintegrated, a British court was told this month.
Facebook has at least made some effort to address the problems by working to weed out site users who have nefarious motives. On Wednesday, the website launched a "safety centre" - an internal site designed to provide advice about cyber bullying. There is a designated area for teens, with information on how to report offensive or inappropriate material, and parents have been given additional help. It has also told users they can report profiles belonging to those endorsing terrorist activity or known child molesters.
You are politely requested to stay with the theme of the post whenever possible. Keep the comments clean, any sordid muck will in future be deleted.
at April 18, 2010 8 comments:
Paris pool bans Muslim woman in 'burqini' swimsuit.
A PARIS swimming pool has refused entry to a young Muslim woman wearing a "burqini", a swimsuit covering most of the body, officials said, adding to tensions over Muslim dress in France.
The incident came as French lawmakers conduct hearings on whether to ban the burqa after President Nicolas Sarkozy said the head-to-toe body covering and veil was "not welcome" in France, home to Europe's biggest Muslim minority.
Officials in the Paris suburb of Emerainville said they let the woman swim in the pool in July wearing the "burqini", designed for Muslim women who want to swim without revealing their bodies.
But when she returned in August, they decided to apply hygiene rules and told her she could not swim if she insisted on wearing the garment, which resembles a wetsuit with built-in hood.
Pool staff "reminded her of the rules that apply in all (public) swimming pools which forbid swimming while clothed", said Daniel Guillaume, an official with the pool management.
Le Parisien newspaper said the woman, identified by her first name Carole, was a French convert to Islam and that she was determined to go to the courts to challenge the decision.
"Quite simply, this is segregation," the newspaper quoted her as saying.
"I will fight to try to change things. And if I see that the battle is lost, I cannot rule out leaving France."
That statement would have brought a nationwide sigh of relief and offers to pay her and her sympathisers fares out of the country.
The newspaper ran a photo of the woman sporting her three-piece "burqini" which she said she purchased in Dubai during a recent holiday.
"I bought it thinking that I could enjoy swimming without having to uncover myself," she said.
Local mayor Alain Kelyor said "all this has nothing to do with Islam," adding that the "burqini" was "not an Islamic swimsuit; that type of suit does not exist in the Koran," the Muslim holy book.
France has set up a special panel of 32 lawmakers to consider whether a law should be enacted to bar Muslim women from wearing the burqa.
In an address to parliament in June, Sarkozy said the burka was not a symbol of religious faith but a sign of women's "subservience" and declared that it was "not welcome" in staunchly secular France.
The country has had a long-running debate on how far it is willing to go to accommodate Islam without undermining the tradition of separating church and state, enshrined in a flagship 1905 law.
In 2004, it passed a law banning headscarves or any other "conspicuous" religious symbols in state schools to defend secularism.
The burqa debate in France has drawn chilling warnings from Al-Qaeda that it was ready to "take revenge for the honour of our daughters and sisters".
Communist MP Andre Gerin, who heads the National Assembly's burqa commission, called the "burqini" ridiculous and said pool administrators were right.
We can't allow this. This is proof that there is a political agenda behind such dress," Gerin told Le Parisien.
The Daily Telegraph, delivered daily to my door, still costs only one dollar.
Every day more than 397,000 people buy a copy of The Daily Telegraph. And it's read by more than 1.19 million people!
What makes The Daily Telegraph so popular with all types of people right across the State? Our emphasis is on news, delivered with accuracy and relevance.
We focus on Sydney with a studied balance of national and international news. Our look is crisp, clear and contemporary. Our paper is designed to be user-friendly, with easy-to-find sections and lift-outs that are based on what interests you.
HAVE FUN GETTING RID OF YOUR UNWANTED JUNK MAIL
SEND IT BACK OR TO SOMEONE ELSE
Junk Mail Help: When you get 'ads' enclosed with your phone or utility bill, return these 'ads' with your payment. Let the sending companies throw their own junk mail away.
When you get those 'pre-approved' letters in the mail for everything from credit cards to 2nd mortgages and similar type junk, do not throw away the return envelope. Most of these come with postage- paid envelopes, right? It costs them more than the regular postage 'If ' and when they receive them back.
It costs them nothing if you throw them away, but the postage charges increase according to weight, so in that case, why not get rid of some of your other junk mail and put it into these cool postage return envelopes.
ANOTHER GREAT IDEA is: Send an ad for your local plumber or chimney cleaner to American Express and a Pizza coupon with the assortment of supermarket gunge to Citybank. if you become over loaded with junk mail, stuff it in an old large used envelope and stick their return paid envelope to it.
If you wish to remain anonymous, make sure your name is not on anything you return.
The banks and credit card companies are currently getting back a lot of their junk by mail, but folks, we need to OVERWHELM them. Lets let them know what its like to get lots of junk mail, and best of all they will be paying for it...Twice!.
Let's help keep the postal services busy since they are saying that e-mail is cutting into their business profits, and that is why they need to increase postage costs again.
If enough people follow these tips it will work.
Fat Cricketer Warne Gives up Extra Marital for Gambling. Plus "Happy Motoring."
Probe on Shane Warne-An online betting agency endorsed by former champion cricketer Shane Warne is under investigation by Australia's communications watchdog.
The Australian Communications and Media Authority confirmed yesterday it had received a complaint that the betting site 888sport was in breach of the Integrated Gambling Act.
The spokesman, who would not say who raised the objection, said: "We have had one complaint and our investigation is ongoing. However, we have not closed down the site." He would not comment further.
Yesterday morning, it was up and running and taking bets on races in Victoria and NSW. By afternoon the site suddenly went offline. It stated the service was temporarily unavailable.
The company believed to be owned by 888 Holdings PLC, which is listed on the London Stock Exchange - by phone and email. A customer service spokesman said: "We are temporarily unavailable. That's all I know." Asked if the problem was software-related, the spokesman said: "Don't know. We have been told to just say the service is temporarily unavailable."
Another lead balloon day, yesterday 41 visits to this blog, 62% of them new visitors but only one comment which was on a previous post
As I started to write this comment I heard the loungeroom clock go "CUCKOO"....hmm. Be about right.
IT is a pity we cannot sue the ass of those who create inconveniences within ones personal time, particularly when it involves petty irritating situations.
Due to a tailender on my Ford Falcon St/Wagon last Oct created by an ethnic Italian plumber coming up behind me at traffic lights when I had stopped.
Three return visits to the repairer in all 80 kms and time wasting before the damage was fixed apparently. But not as such it would appear, as this would be due to a sighting of the left hand concealment panel on the tailgate leaving the car at speed whilst traveling the F3 Freeway at 70mph(110 k's) recently.
Insurers Questions. How did it become removed? Did you remove it? Did you see it being removed? Where is the panel now. Oh dear oh dear , do these guys ever listen. one could do better talking to a rocking horse.
Have a normal day, Vest.
You are watching Hebrew Television, There is little other choice.
Unlike Foxtel or Aunty ABC,I don't dish out too many re-runs of my posts.However , today my sedentary mode will be replaced by other activities and catching up with my club friends Jack Daniels and J Walker and possibly a demonstration of my prowess on the dance floor.
After staying up late last night watching movies one in particular prompted me to give this former post another airing.
IT does appear that those who were ostracised by the govt of that 'One balled Chocolate waffling vegetarian Mr Shicklegruber, are now in total control of the media industry and walk hand in hand with their former enemies; the industrial and political Fascists. Both Ideoligies seemingly working together lovingly.
Why do 95% of film makers; despite the many differing creeds and racial origins globaly, always dominate their scripts with hebrew names for their actors.
Mind you, cronyism and nepotism is rife within the film industry and would seem that since the dawn of the Hollywood film set up, the Cecil B De- Mille's, Fred Zimmerman's, Goldberg's and Spielbergs and the like, have passed down opportunities to their own extended families and creed, hence a few years ago an Australian fronting up for his film industry award stated to the embarrassment of many present,"Seems like I am the only Gentile here tonight".
I am sick of people who play the role's of people not of their obvious genetic make up.
For example, like an Arab or Jewish person, portraying an Anglo saxon English country Lord of the manor or village Squire, named Larry Caplan and his beautiful A/sax wife Jennifer-nee- Finklestien. This was brought to my notice by a friend of mine , David, Moshe, Bennett, when only a few days ago told me that, he was staying in that night to watch some Hebrew television.
I am left wondering if I am the Only person to notice this. I dont need any anti semetic crap either; my dear grand mother was Jewish.
I do not take exception to Pantomime role's where for example unshaven men in drag play the part of the Ugly Sisters and women are playing principal boys, that's just too funny, but I do find it distressing when a smelly Billy Goat portrays the part of a Thoroughbred.
6 Comments. sharon levi said...
vestyou hit the nail on the head, Btw I watched a randy panto dvd called SIN derella, the ugly sisters were guys in crinolines and they were asked why they were called the ugly sisters, and both replied ARE YOU EFFING BLIND
Wednesday, 14 December 2005 10:42:00 AM AEDT
click onto the sailor pic for details of J L Spencers novel, great reading. get it quicker and cheaper from the publisher, (warning, some parts contain explicit sexuality) This book has been banned so far only in 46 countries.
Wednesday, 14 December 2005 1:11:00 PM AEDT
Sharon, Obviously you were not offended by my post, thank you,
SEEN IT!!!
Sharon the dvd Sin derella stars Mike READ from East Enders and the blonde ageing "Carry On Film's tart" Barbara Windsor, no relation to the Queen.
Call again Sharon. Vest
The Zombieslayer said...
Mind you, cronyism and nepotism is rife within the film industry
This is it, cronyism and nepotism. Jewish folk got into Hollywood early and never left.
I noticed Hollywood never getting ethnicities right. Jews playing Italians, Italians playing Native Americans, Filipinos playing Indonesians, etc.
Thursday, 15 December 2005 6:33:00 PM AEDT
kate SAN REMO said...
seem to remember that I read half way about the Exodus debacle..sort of anti semetic am I right. did it for queen and country did you..whats your excuse. my mother say's you were a hunk,"Once upon a Time"
Monday, 2 January 2006 2:00:00 AM AEDT
Kate, I remember meeting you at my club, tall g/looker brunette 21?, say thanks to your mom she too must be still worth a look too.
No, I am not into anti semiticism, sorry sweetie not getting drawn into that one. However, their rule of thumb generally is to consider their own first, a form of secularism with added religeous belief. Fini.
Now sweet beautiful clever lady, this is where you stuffed up, It was not for Queen and country, but for KING and country. avag'day,xxxx.
Monday, 2 January 2006 11:48:00 AM AEDT
FACE BOOK PEDOPHILES TARGET BRITAIN'S GOT TALENT, TV STAR.
Facebook pedophiles target Britain's Got Talent TV star Hollie Steel.
BRITISH child star Hollie Steel was targeted by pedophiles using her Facebook page, her worried mum was reported as saying .
Hollie, 11, was sent a series of sick messages by men since appearing on the UK TV contest Britain's Got Talent.
Her mom Nina Steel, 37, said: "We've had pedophiles on the internet write disgusting things.
"Through Hollie's Facebook they write really disgusting messages to her. It's appalling - I don't know how they get away with it.
"I have replied saying, 'This is actually Hollie's mom and I'm going to report you.' I go mad at them. I did report one who was really bad."
A family friend who looks after internet security for Hollie's parents discovered a pedophile was banned for sending sick messages - but kept getting back on to the site by using false names and was accused of grooming young children.
Campaigners have called for a so-called panic button on Facebook after a string of cases where sex offenders befriended victims on social networking sites.
Mrs Steel added: "Because Hollie is only 11, I only ever let her look at the internet when I'm with her.
"Her school supervises that too, so she never sees these messages. But if she wasn't supervised, Hollie would be horrified at them."
Hollie - who broke down in tears on stage under the pressure of the Britain's Got Talent semi-finals last year - lives with her mom, brother Joshua, 16, and dad Jason, 38, in a modest three-bedroom home in northwest England.
at April 08, 2010 1 comment:
Bishop Anthony Fisher The New Faith Industry Broom Shaker for Parramatta.
GODLESSNESS and secularism led to Nazism, Stalinism, mass murder and abortion, according to Anthony Fisher, the new bishop of Parramatta, who has used his inaugural Easter message to launch a scathing attack on atheism, while ignoring the sex abuse scandals besieging the Catholic Church worldwide.
Good Friday is the anniversary of Christ's death on the cross, and the Easter festival shows that he lives despite efforts to kill him off, according to the archbishop, who is tipped by many to become the next head of the church in Australia and leads the largest Catholic diocese in the country. Which is a great idea, as any replacement for Cardinal 'foot in mouth' - Pell would be welcolme, even by staunch R C kneelers.
''Last century we tried godlessness on a grand scale and the effects were devastating,'' he said.
''Nazism, Stalinism, Pol-Pottery, mass murder and broken relationships: all promoted by state-imposed atheism or culture-insinuated secularism.''
It was an illusion to think we could live a better life without God, he said, although he acknowledged that the ''violence, abuse and un-lovingness'' of many believers through the ages had driven some people away from the church.
Cardinal George Pell, the Archbishop of Sydney, made oblique mention of the recent scandals enveloping the Catholic Church.
He used his Easter message to tell the faithful that despite Christianity's faults, it underpins our entire way of life.
''We often hear about Christian failures to live up to Christian standards - and there have been too many scandals and too many victims,'' Cardinal Pell wrote.
''But the great majority of Christians continue to follow the commandments of love through regular service, tolerance, forgiveness and community building.''
Cardinal Pell also attacked atheism, by giving thanks for church-based community organisations, and noting that ''we find no community services sponsored by the atheists''.
''We thank God for our Christian traditions and the works they inspire,'' he said. ''They have helped make Australia what it is.''
Neither Bishop Fisher or Cardinal Pell made any direct reference to the latest Catholic sex abuse scandals in which Pope Benedict XVI has been implicated.
Before World Youth Day in Sydney in 2008, Bishop Fisher was castigated for remarks he made about the case of a priest who raped two girls. He told a news conference he wished people would focus on the positivity of World Youth Day ''rather than dwelling crankily, as a few people are prepared to do.
Vest Say's, " HOLY TEAPOT."
During my school days I was compelled to fear God and honour the King, Severe canings were the reward for anyone attempting to jeopardise the future emploment of the brutal and godly reverend by daring to oppose his teachings. Forced into the RN at 15.5 years of age,compulsary church services etc if deliberately missed was a punishable offence, even up to the 1960s.
This is great news for atheists. We are on the radar. A Faith Industry leader The Catholic Church obviously now perceives us as a threat to their enormous, ancient and powerful institution. So we must be doing something right. Atheists are no longer a marginalised and largely ignored little group.
Archbishops commenting on atheism presents somewhat of a conflict of interest because without a god there'd be no job. Let's look to the inate goodness in people rather than having to find a religious reason to be that way. After all, as a species we would not have survived without getting along with each other. Religion was created by humans for humans to formalise the rules of engagement. It has sadly lost its way and has allowed oragnisations like the Catholic church to prosper. Significantly to the detriment of those good people who follow its doctrine. For those people, you can be good and you don't need a church or a religion to tell you!. The following is an excerpt from my memoirs , click blue pic at top of page,
I was about fourteen years old when I was confirmed into the Church
of England and learned the catechism and Christian principles.
I also learned not to ask adverse questions about the teachings of the Bible.
Our holy man had a heavy hand. He told us that blind faith in the Lord would guide us through our lives, and that the lack of faith in Christianity was an unpardonable sin. When I asked Reverend "Holy"
Harling if his faith would save him if he jumped off a cliff after praying for safety, he chased me round the schoolroom waving his cane.
The malevolent use of the 'unpardonable sin' doctrine years ago by Christian churches justified their mass murdering, torturing, and burning of people at the stake.
Holy Harling was the reincarnation of Dracon 659- 601 BC.
My nose had detected that the Bishop who conducted the confirmation ceremony had been at the sacramental wine. Only once did I attend Holy Communion. I just could not swallow the dogma. The
thought of drinking the blood of Christ and eating his body were inhuman and repulsive to me. VEST.
Unethical Face Book Cashing in on Drug Guinea Pigs.
MORE FACE BOOK SCANDAL
The Sunday Telegraph has uncovered evidence of a "clinical trial recruitment consultancy" targeting social network users with financial incentives to be human guinea pigs.
In Australia, drug companies and researchers are explicitly forbidden from using payments or inducements to recruit volunteers under National Health and Medical Research Council (NHMRC) ethical conduct rules.
Have you been targeted on Facebook? Tell us below
Only reasonable expenses such as transport, food and parking can be reimbursed.
This is to prevent people becoming involved for financial rather than altruistic reasons, as in the UK and US where people will "sell their bodies" for research.
The truth about drug trials
But the company Rewards for Research is sending messages and email alerts with promises of money to potential candidates using social networking sites including Twitter to target young people who are desperate for cash.
Last month it started recruiting for a "$600 Medical Trial for those with Asthma" in Sydney and Queensland. The message - seen by The Sunday Telegraph - clearly offers money to take part.
Rewards for Research managing director Nick Karrasch, who reportedly has 10,000 people on his database, denied knowledge of cash offers in his emails and claimed he was simply advertising on behalf of his clients.
"We are not offering rewards for research, that's just our name," Mr Karrasch said. "There are lots of rewards for taking part in research, such as advancing scientific research and trying to help create and get new drugs onto the market."
But another posting left by his company on Facebook spruiked a "$2000.00 Medical Trial for South East Asians in Adelaide".
Other trials have reportedly paid participants up to $5000.
The Facebook group Rewards for Research has more than 1000 members, who receive regular messages about recruiting trials.
One young woman has posted on the group wall "easiest 300 ever! excluding the blood sample part:("
Another member responded: "i don't know about easy. I was crying for hours" and a third said "u get used to the needles... but the times (sic) in there is fun"
Apart from Facebook, Mr Karrasch has profiles on Twitter, MySpace and bebo.
Although the NHMRC states "payment that is disproportionate to the time involved or any other inducement that is likely to encourage participants to take risks is ethically unacceptable", enforcement is left up to the institution where research takes place.
"NHMRC sets the standard and (the institution's) human research ethics committees consider clinical trial proposals to assess amongst other ethical issues the suitability of payments or reimbursements," a spokeswoman said.
"'People thinking about taking part in a clinical trial should check that the trial has received an ethics committee approval and should ask themselves whether they would still take risks if no payment was offered."
Most formed opinion would be "certainly not"
Mr Karrasch, whose business address is a post office box in South Brisbane, names clients Q-Pharm Pty Ltd and AusTrials on his website. He has also registered the domain name trialfacts.com
Rewards for Research says it uses "innovative online marketing techniques" to "help companies solve the patient recruitment problem". Mr Karrasch asked The Sunday Telegraph to use the term "compensation" instead of remuneration, although his latest clinical trial alert clearly offers "remuneration of $600".
"We are directed by our clients, who are responsible for content, and ensure approval by ethics committees," he said.
More Bum Stabbing Stories emerge from the vatican.Cardinal condemns 'gossip' at Easter Mass
A senior cardinal defended Pope Benedict XVI from "petty gossip" as the pontiff maintained his silence on mounting sex abuse cover-up accusations during his Easter message.
http://www.msnbc.msn.com/id/36166058/ns/world_news-europe/from/ET
Cardinal condemns 'gossip' at Easter Mass
Vest say's, Matrimonny is the obvious answer to these continual sex scandals within the Catholic Church Hetro or gay unions would be better than the archaic miss fist arrangements presently in place.
Anglican priests rarely get a mention in this field of misbehaviour.
Or maybe denutting would resolve the dillemma for the likes of father Bennydickedus.
Robin Williams - Actor and a lousy one to boot. Funnyman? No is the familiar reply.
Then again it could be yes he is funny particularly from nong head residents of Unclesamland whose funny bones are out of joint(Not whacky Baccy). However, not all U/S residents are as unpalatable as Bob* Williams,*Pronounced Barb, but despite his dodgy gender, Barby doll he aint.
Barbs portrayal of Mrs'Doubtfire' in that incredibly stupid movie where he plays the cross dressing guy? in drag who substitutes as nanny-housekeeper to a dim witted nouveau riche American family.
Bob, Barb, Rob Or Knob Dog or shall I refer to him as 'Just Williams' has stirred the latent anger in our prone to fits of such antics, soon to be deposed I hope Kevin Bloody Rudd the Hon Prime Minister of Strayer, he Kevin replying to a snide remark made by Williams which referred to all Aussies being as he put it; basically English Rednecks. Our Kev replied on steam radio that he Williams should visit Alabama the ancestral home of rednecks, probably holding himself in check and not mentioning the ongoing racial problems which were brought to explosion point during the reign of Alabama Governor George Wallace 63-67 'The good ole boy; Boss Hogg type Southern asshole, who considered all Afro Negroes as lesser than dog shite, Wowsers read 'Bow wows calling cards.
Now A Face book site has opened up, called "Kevin Rudd owes Alabama an Apology". There are only three 'fans' so far and one is a gun toting' 'Right to bear arms loony' American whose face book profile photo shows him firing a gun.
The Alabama Governor Bob (Barb) Riley retorted in anger " We do have manners here and I'm not sure if Prime Minister Rudd has ever been to Alabama".
An Email I received today suggests there are so many - far more exciting places in our world to visit other than having to take a look-see at beautiful Alabama where one must close their eyes to the underlying poverty and prevailing raciscim.
My opinion of Mr? Williams, Definitely a Boringly Unfunny person.
Facebook Bad News. Face book Forbidden.
A MAN who alledgedly groomed a girl 11 for sex after befriending her on Face book has been banned from using the site or any other social networking site.
Dwayne Tucker, 27, faced Mount Druitt Local Court yesterday charged with travelling with intent to meet a child whom he had previously groomed for sexual activity..
He was arrested after he allegedy went to a secluded park in Emerton to meet the girl.
The girl who cannot be named, did not turn up. Instead, she told her mother who called the police.
The Australian gold card. A Re Run followed every ...
Good Queen Bess has her 4Th 21st, St Georges Day a...
Fat Cricketer Warne Gives up Extra Marital for Gam...
FACE BOOK PEDOPHILES TARGET BRITAIN'S GOT TALENT, ...
Bishop Anthony Fisher The New Faith Industry Broom...
Robin Williams - Actor and a lousy one to boot. Fu...


Are you thinking of starting a business? Do you already have a business but want it to grow? Are you facing a business puzzle that you'd like help with? Join us for our free Drop In Business Coaching. Location: Auburn IPZ Incubator 110 2nd Street SW Suite 145, Auburn, WA 98001 No appointment needed.
Are you thinking of starting a business? Do you already have a business but want it to grow? Are you facing a business puzzle that you'd like help with? Join us for our free Drop In Business Coaching. Location: King County Library - 212 2nd Ave N, Kent, WA 98032 No appointment needed.
Description: Whether you're n the idea phase or already in business, or looking to apply for a business loan, this Square One session will give you actionable first steps to starting your business and the planning process, introduce you to the programs and services in your area, and offer specific information regarding lending process at Business Impact NW. Taught by Business Impact NW's Domonique Juleon.


text:
{-# LANGUAGE PatternGuards #-}
{-| The coverage and totality checkers for Idris are in this module.
-}
module Idris.Coverage where

import Idris.Core.TT
import Idris.Core.Evaluate
import Idris.Core.CaseTree

import Idris.AbsSyntax
import Idris.Delaborate
import Idris.Error
import Idris.Output (iWarn, iputStrLn)

import Data.List
import Data.Either
import Data.Maybe
import Debug.Trace

import Control.Monad.State.Strict

-- | Generate a pattern from an 'impossible' LHS.
--
-- We need this to eliminate the pattern clauses which have been
-- provided explicitly from new clause generation.
mkPatTm :: PTerm -> Idris Term
mkPatTm t = do i <- getIState
               let timp = addImpl' True [] [] [] i t
               evalStateT (toTT (mapPT deNS timp)) 0
  where
    toTT (PRef _ _ n) = do i <- lift getIState
                           case lookupNameDef n (tt_ctxt i) of
                                [(n', TyDecl nt _)] -> return $ P nt n' Erased
                                _ -> return $ P Ref n Erased
    toTT (PApp _ t args) = do t' <- toTT t
                              args' <- mapM (toTT . getTm) args
                              return $ mkApp t' args'
    -- For alternatives, pick the first and drop the namespaces. It doesn't
    -- really matter which is taken since matching will ignore the namespace.
    toTT (PAlternative _ _ (a : as)) = toTT a
    toTT _ = do v <- get
                put (v + 1)
                return (P Bound (sMN v "imp") Erased)

    deNS (PRef f hl (NS n _)) = PRef f hl n
    deNS t = t

-- | Given a list of LHSs, generate a extra clauses which cover the remaining
-- cases. The ones which haven't been provided are marked 'absurd' so
-- that the checker will make sure they can't happen.
--
-- This will only work after the given clauses have been typechecked and the
-- names are fully explicit!
genClauses :: FC -> Name -> [Term] -> [PTerm] -> Idris [PTerm]
genClauses fc n xs given
   = do i <- getIState
        let lhs_tms = map (\x -> delab' i x True True) xs
        -- if a placeholder was given, don't bother generating cases for it
        let lhs_tms' = zipWith mergePlaceholders lhs_tms
                          (map (stripUnmatchable i) given)
        let lhss = map pUnApply lhs_tms'

        let argss = transpose lhss
        let all_args = map (genAll i) argss
        logLvl 5 $ "COVERAGE of " ++ show n
        logLvl 5 $ show lhss
        logLvl 5 $ show (map length argss) ++ "\n" ++ show (map length all_args)
        logLvl 10 $ show argss ++ "\n" ++ show all_args
        logLvl 3 $ "Original: \n" ++
             showSep "\n" (map (\t -> showTm i (delab' i t True True)) xs)
        -- add an infinite supply of explicit arguments to update the possible
        -- cases for (the return type may be variadic, or function type, so
        -- there may be more case splitting that the idris_implicits record
        -- suggests)
        let parg = case lookupCtxt n (idris_implicits i) of
                        (p : _) ->
                          p ++ repeat (PExp 0 [] (sMN 0 "gcarg") Placeholder)
                        _       -> repeat (pexp Placeholder)
        let tryclauses = mkClauses parg all_args
        logLvl 3 $ show (length tryclauses) ++ " initially to check"
        logLvl 2 $ showSep "\n" (map (showTm i) tryclauses)
        let new = filter (noMatch i) (nub tryclauses)
        logLvl 2 $ show (length new) ++ " clauses to check for impossibility"
        logLvl 4 $ "New clauses: \n" ++ showSep "\n" (map (showTm i) new)
--           ++ " from:\n" ++ showSep "\n" (map (showImp True) tryclauses)
        return new
--         return (map (\t -> PClause n t [] PImpossible []) new)
  where getLHS i term
            | (f, args) <- unApply term = map (\t -> delab' i t True True) args
            | otherwise = []

        pUnApply (PApp _ _ args) = map getTm args
        pUnApply _ = []

        -- Return whether the given clause matches none of the input clauses
        -- (xs)
        noMatch i tm = all (\x -> case matchClause i (stripUnmatchable i (delab' i x True True)) tm of
                                       Right ms -> False
                                       Left miss -> True) xs

        mergePlaceholders :: PTerm -> PTerm -> PTerm
        mergePlaceholders x Placeholder = Placeholder
        mergePlaceholders (PApp fc f args) (PApp fc' f' args')
            = PApp fc' f' (zipWith mergePArg args args')
           where mergePArg x y = let xtm = mergePlaceholders (getTm x) (getTm y) in
                                     x { getTm = xtm}
        mergePlaceholders x _ = x

        mkClauses :: [PArg] -> [[PTerm]] -> [PTerm]
        mkClauses parg args
            | all (== [Placeholder]) args = []
        mkClauses parg args
            = do args' <- mkArg args
                 let tm = PApp fc (PRef fc [] n) (zipWith upd args' parg)
                 return tm
          where
            mkArg :: [[PTerm]] -> [[PTerm]]
            mkArg [] = return []
            mkArg (a : as) = do a' <- a
                                as' <- mkArg as
                                return (a':as')

-- | Does this error result rule out a case as valid when coverage checking?
validCoverageCase :: Context -> Err -> Bool
validCoverageCase ctxt (CantUnify _ (topx, _) (topy, _) e _ _)
    = let topx' = normalise ctxt [] topx
          topy' = normalise ctxt [] topy in
          not (sameFam topx' topy' || not (validCoverageCase ctxt e))
  where sameFam topx topy
            = case (unApply topx, unApply topy) of
                   ((P _ x _, _), (P _ y _, _)) -> x == y
                   _ -> False
validCoverageCase ctxt (CantConvert _ _ _) = False
validCoverageCase ctxt (At _ e) = validCoverageCase ctxt e
validCoverageCase ctxt (Elaborating _ _ e) = validCoverageCase ctxt e
validCoverageCase ctxt (ElaboratingArg _ _ _ e) = validCoverageCase ctxt e
validCoverageCase ctxt _ = True

-- | Check whether an error is recoverable in the sense needed for
-- coverage checking.
recoverableCoverage :: Context -> Err -> Bool
recoverableCoverage ctxt (CantUnify r (topx, _) (topy, _) e _ _)
    = let topx' = normalise ctxt [] topx
          topy' = normalise ctxt [] topy in
          r || checkRec topx' topy'
  where -- different notion of recoverable than in unification, since we
        -- have no metavars -- just looking to see if a constructor is failing
        -- to unify with a function that may be reduced later
        checkRec (App _ f a) p@(P _ _ _) = checkRec f p
        checkRec p@(P _ _ _) (App _ f a) = checkRec p f
        checkRec fa@(App _ _ _) fa'@(App _ _ _)
            | (f, as) <- unApply fa,
              (f', as') <- unApply fa'
                 = if (length as /= length as')
                      then checkRec f f'
                      else checkRec f f' && and (zipWith checkRec as as')
        checkRec (P xt x _) (P yt y _) = x == y || ntRec xt yt
        checkRec _ _ = False

        ntRec x y | Ref <- x = True
                  | Ref <- y = True
                  | (Bound, Bound) <- (x, y) = True
                  | otherwise = False -- name is different, unrecoverable
recoverableCoverage ctxt (At _ e) = recoverableCoverage ctxt e
recoverableCoverage ctxt (Elaborating _ _ e) = recoverableCoverage ctxt e
recoverableCoverage ctxt (ElaboratingArg _ _ _ e) = recoverableCoverage ctxt e
recoverableCoverage _ _ = False

-- FIXME: Just look for which one is the deepest, then generate all
-- possibilities up to that depth.
-- This and below issues for this function are tracked as Issue #1741 on the issue tracker.
--     https://github.com/idris-lang/Idris-dev/issues/1741
genAll :: IState -> [PTerm] -> [PTerm]
genAll i args
   = case filter (/=Placeholder) $ fnub (concatMap otherPats (fnub args)) of
          [] -> [Placeholder]
          xs -> inventConsts xs
  where
    -- if they're constants, invent a new one to make sure that
    -- constants which are not explicitly handled are covered
    inventConsts cs@(PConstant fc c : _) = map (PConstant NoFC) (ic' (mapMaybe getConst cs))
      where getConst (PConstant _ c) = Just c
            getConst _ = Nothing
    inventConsts xs = xs

    -- try constants until they're not in the list.
    -- FIXME: It is, of course, possible that someone has enumerated all
    -- the constants and matched on them (maybe in generated code) and this
    -- will be really slow. This is sufficiently unlikely that we won't
    -- worry for now...

    ic' xs@(I _ : _) = firstMissing xs (lotsOfNums I)
    ic' xs@(BI _ : _) = firstMissing xs (lotsOfNums BI)
    ic' xs@(Fl _ : _) = firstMissing xs (lotsOfNums Fl)
    ic' xs@(B8 _ : _) = firstMissing xs (lotsOfNums B8)
    ic' xs@(B16 _ : _) = firstMissing xs (lotsOfNums B16)
    ic' xs@(B32 _ : _) = firstMissing xs (lotsOfNums B32)
    ic' xs@(B64 _ : _) = firstMissing xs (lotsOfNums B64)
    ic' xs@(Ch _ : _) = firstMissing xs lotsOfChars
    ic' xs@(Str _ : _) = firstMissing xs lotsOfStrings
    -- TODO: Bit vectors
    -- The rest are types with only one case
    ic' xs = xs

    firstMissing cs (x : xs) | x `elem` cs = firstMissing cs xs
                             | otherwise = x : cs

    lotsOfNums t = map t [0..]
    lotsOfChars = map Ch ['a'..]
    lotsOfStrings = map Str (map (("some string " ++).show) [1..])

    nubMap f acc [] = acc
    nubMap f acc (x : xs) = nubMap f (fnub' acc (f x)) xs

    otherPats :: PTerm -> [PTerm]
    otherPats o@(PRef fc hl n) = ops fc n [] o
    otherPats o@(PApp _ (PRef fc hl n) xs) = ops fc n xs o
    otherPats o@(PPair fc hls _ l r)
        = ops fc pairCon
                ([pimp (sUN "A") Placeholder True,
                  pimp (sUN "B") Placeholder True] ++
                 [pexp l, pexp r]) o
    otherPats o@(PDPair fc hls p t _ v)
        = ops fc (sUN "Ex_intro")
                ([pimp (sUN "a") Placeholder True,
                  pimp (sUN "P") Placeholder True] ++
                 [pexp t,pexp v]) o
    otherPats o@(PConstant _ c) = inventConsts [o] -- return o
    otherPats arg = return Placeholder

    ops fc n xs o
        | (TyDecl c@(DCon _ arity _) ty : _) <- lookupDef n (tt_ctxt i)
            = do xs' <- mapM otherPats (map getExpTm xs)
                 let p = resugar (PApp fc (PRef fc [] n) (zipWith upd xs' xs))
                 let tyn = getTy n (tt_ctxt i)
                 case lookupCtxt tyn (idris_datatypes i) of
                         (TI ns _ _ _ _ : _) -> p : map (mkPat fc) (ns \\ [n])
                         _ -> [p]
    ops fc n arg o = return Placeholder

    getExpTm (PImp _ True _ _ _) = Placeholder -- machine inferred, no point!
    getExpTm t = getTm t

    -- put it back to its original form
    resugar (PApp _ (PRef fc hl (UN ei)) [_,_,t,v])
      | ei == txt "Ex_intro"
        = PDPair fc [] TypeOrTerm (getTm t) Placeholder (getTm v)
    resugar (PApp _ (PRef fc hl n) [_,_,l,r])
      | n == pairCon
        = PPair fc [] IsTerm (getTm l) (getTm r)
    resugar t = t

    dropForce force (x : xs) i | i `elem` force
        = upd Placeholder x : dropForce force xs (i + 1)
    dropForce force (x : xs) i = x : dropForce force xs (i + 1)
    dropForce _ [] _ = []

    getTy n ctxt = case lookupTy n ctxt of
                          (t : _) -> case unApply (getRetTy t) of
                                        (P _ tyn _, _) -> tyn
                                        x -> error $ "Can't happen getTy 1 " ++ show (n, x)
                          _ -> error "Can't happen getTy 2"

    mkPat fc x = case lookupCtxt x (idris_implicits i) of
                      (pargs : _)
                         -> PApp fc (PRef fc [] x) (map (upd Placeholder) pargs)
                      _ -> error "Can't happen - genAll"

    fnub :: [PTerm] -> [PTerm]
    fnub xs = fnub' [] xs

    fnub' :: [PTerm] -> [PTerm] -> [PTerm]
    fnub' acc (x : xs) | x `qelem` acc = fnub' acc (filter (not.(quickEq x)) xs)
                       | otherwise = fnub' (x : acc) xs
    fnub' acc [] = acc

    -- quick check for constructor equality
    quickEq :: PTerm -> PTerm -> Bool
    quickEq (PConstant _ n) (PConstant _ n') = n == n'
    quickEq (PRef _ _ n) (PRef _ _ n') = n == n'
    quickEq (PApp _ t as) (PApp _ t' as')
        | length as == length as'
           = quickEq t t' && and (zipWith quickEq (map getTm as) (map getTm as'))
    quickEq Placeholder Placeholder = True
    quickEq x y = False

    qelem :: PTerm -> [PTerm] -> Bool
    qelem x [] = False
    qelem x (y : ys) | x `quickEq` y = True
                     | otherwise = qelem x ys

upd :: t -> PArg' t -> PArg' t
upd p' p = p { getTm = p' }

-- Check whether function and all descendants cover all cases (partial is
-- okay, as long as it's due to recursion)

checkAllCovering :: FC -> [Name] -> Name -> Name -> Idris ()
checkAllCovering fc done top n | not (n `elem` done)
   = do i <- get
        case lookupTotal n (tt_ctxt i) of
             [tot@(Partial NotCovering)] ->
                    do let msg = show top ++ " is " ++ show tot ++ " due to " ++ show n
                       putIState i { idris_totcheckfail = (fc, msg) : idris_totcheckfail i }
                       addIBC (IBCTotCheckErr fc msg)
             [Partial _] ->
                case lookupCtxt n (idris_callgraph i) of
                     [cg] -> mapM_ (checkAllCovering fc (n : done) top)
                                   (map fst (calls cg))
                     _ -> return ()
             x -> return () -- stop if total
checkAllCovering _ _ _ _ = return ()

-- Check if, in a given group of type declarations mut_ns,
-- the constructor cn : ty is strictly positive,
-- and update the context accordingly

checkPositive :: [Name] -> (Name, Type) -> Idris Totality
checkPositive mut_ns (cn, ty')
    = do let ty = delazy' True ty'
         let p = cp ty
         i <- getIState
         let tot = if p then Total (args ty) else Partial NotPositive
         let ctxt' = setTotal cn tot (tt_ctxt i)
         putIState (i { tt_ctxt = ctxt' })
         logLvl 5 $ "Constructor " ++ show cn ++ " is " ++ show tot ++ " with " ++ show mut_ns
         addIBC (IBCTotal cn tot)
         return tot
  where
    args t = [0..length (getArgTys t)-1]

    cp (Bind n (Pi _ aty _) sc) = posArg aty && cp sc
    cp t | (P _ n' _, args) <- unApply t,
           n' `elem` mut_ns = all noRec args
    cp _ = True

    posArg (Bind _ (Pi _ nty _) sc)
        | (P _ n' _, args) <- unApply nty
            = n' `notElem` mut_ns && all noRec args && posArg sc
    posArg t | (P _ n' _, args) <- unApply t,
               n' `elem` mut_ns = all noRec args
    posArg _ = True

    noRec arg = all (\x -> x `notElem` mut_ns) (allTTNames arg)

calcProd :: IState -> FC -> Name -> [([Name], Term, Term)] -> Idris Totality
calcProd i fc topn pats
    = cp topn pats []
   where
     -- every application of n must be in an argument of a coinductive
     -- constructor, in every function reachable from here in the
     -- call graph.
     cp n pats done = do patsprod <- mapM (prodRec n done) pats
                         if (and patsprod)
                            then return Productive
                            else return (Partial NotProductive)

     prodRec :: Name -> [Name] -> ([Name], Term, Term) -> Idris Bool
     prodRec n done _ | n `elem` done = return True
     prodRec n done (_, _, tm) = prod n done False (delazy' True tm)

     prod :: Name -> [Name] -> Bool -> Term -> Idris Bool
     prod n done ok ap@(App _ _ _)
        | (P nt f _, args) <- unApply ap
            = do recOK <- checkProdRec (n:done) f
                 let ctxt = tt_ctxt i
                 let [ty] = lookupTy f ctxt -- must exist!
                 let co = cotype nt f ty in
                     if (not recOK) then return False else
                       if f == topn
                         then do argsprod <- mapM (prod n done co) args
                                 return (and (ok : argsprod) )
                         else do argsprod <- mapM (prod n done co) args
                                 return (and argsprod)
     prod n done ok (App _ f a) = liftM2 (&&) (prod n done False f)
                                              (prod n done False a)
     prod n done ok (Bind _ (Let t v) sc)
         = liftM2 (&&) (prod n done False v) (prod n done False v)
     prod n done ok (Bind _ b sc) = prod n done ok sc
     prod n done ok t = return True

     checkProdRec :: [Name] -> Name -> Idris Bool
     checkProdRec done f
        = case lookupCtxt f (idris_patdefs i) of
               [(def, _)] -> do ok <- mapM (prodRec f done) def
                                return (and ok)
               _ -> return True -- defined elsewhere, can't call topn

     cotype (DCon _ _ _) n ty
        | (P _ t _, _) <- unApply (getRetTy ty)
            = case lookupCtxt t (idris_datatypes i) of
                   [TI _ True _ _ _] -> True
                   _ -> False
     cotype nt n ty = False

-- | Calculate the totality of a function from its patterns.
-- Either follow the size change graph (if inductive) or check for
-- productivity (if coinductive)
calcTotality :: FC -> Name -> [([Name], Term, Term)] -> Idris Totality
calcTotality fc n pats
    = do i <- getIState
         let opts = case lookupCtxt n (idris_flags i) of
                            [fs] -> fs
                            _ -> []
         case mapMaybe (checkLHS i) (map (\ (_, l, r) -> l) pats) of
            (failure : _) -> return failure
            _ -> checkSizeChange n
  where
    checkLHS i (P _ fn _)
        = case lookupTotal fn (tt_ctxt i) of
               [Partial _] -> return (Partial (Other [fn]))
               _ -> Nothing
    checkLHS i (App _ f a) = mplus (checkLHS i f) (checkLHS i a)
    checkLHS _ _ = Nothing

checkTotality :: [Name] -> FC -> Name -> Idris Totality
checkTotality path fc n
    | n `elem` path = return (Partial (Mutual (n : path)))
    | otherwise = do
        t <- getTotality n
        i <- getIState
        ctxt' <- do ctxt <- getContext
                    tclift $ simplifyCasedef n (getErasureInfo i) ctxt
        setContext ctxt'
        ctxt <- getContext
        i <- getIState
        let opts = case lookupCtxt n (idris_flags i) of
                            [fs] -> fs
                            _ -> []
        t' <- case t of
                Unchecked ->
                    case lookupDef n ctxt of
                        [CaseOp _ _ _ _ pats _] ->
                            do t' <- if AssertTotal `elem` opts
                                        then return $ Total []
                                        else calcTotality fc n pats
                               setTotality n t'
                               addIBC (IBCTotal n t')
                               return t'
                        [TyDecl (DCon _ _ _) ty] ->
                            case unApply (getRetTy ty) of
                              (P _ tyn _, _) -> do
                                 let ms = case lookupCtxt tyn (idris_datatypes i) of
                                       [TI _ _ _ _ xs@(_:_)] -> xs
                                       ts -> [tyn]
                                 checkPositive ms (n, ty)
                              _-> return $ Total []
                        _ -> return $ Total []
                x -> return x
        case t' of
            Total _ -> return t'
            Productive -> return t'
            e -> do w <- cmdOptType WarnPartial
                    if TotalFn `elem` opts
                       then do totalityError t'; return t'
                       else do when (w && not (PartialFn `elem` opts)) $
                                   warnPartial n t'
                               return t'
  where
    totalityError t = do i <- getIState
                         let msg = show n ++ " is " ++ show t
                         putIState i { idris_totcheckfail = (fc, msg) : idris_totcheckfail i}
                         addIBC (IBCTotCheckErr fc msg)

    warnPartial n t
       = do i <- getIState
            case lookupDef n (tt_ctxt i) of
               [x] -> do
                  iWarn fc . pprintErr i . Msg $ "Warning - " ++ show n ++ " is " ++ show t
--                                ++ "\n" ++ show x
--                   let cg = lookupCtxtName Nothing n (idris_callgraph i)
--                   iputStrLn (show cg)

checkDeclTotality :: (FC, Name) -> Idris Totality
checkDeclTotality (fc, n)
    = do logLvl 2 $ "Checking " ++ show n ++ " for totality"
--          buildSCG (fc, n)
--          logLvl 2 $ "Built SCG"
         i <- getIState
         let opts = case lookupCtxt n (idris_flags i) of
                              [fs] -> fs
                              _ -> []
         when (CoveringFn `elem` opts) $ checkAllCovering fc [] n n
         t <- checkTotality [] fc n
         case t of
              -- if it's not total, it can't reduce, to keep
              -- typechecking decidable
              p@(Partial _) -> do setAccessibility n Frozen
                                  addIBC (IBCAccess n Frozen)
                                  logLvl 5 $ "HIDDEN: "
                                               ++ show n ++ show p
              _ -> return ()
         return t

-- | Calculate the size change graph for this definition
--
-- SCG for a function f consists of a list of:
--    (g, [(a1, sizechange1), (a2, sizechange2), ..., (an, sizechangen)])
--
-- where g is a function called
-- a1 ... an are the arguments of f in positions 1..n of g
-- sizechange1 ... sizechange2 is how their size has changed wrt the input
-- to f
--    Nothing, if the argument is unrelated to the input
buildSCG :: (FC, Name) -> Idris ()
buildSCG (_, n) = do
   ist <- getIState
   case lookupCtxt n (idris_callgraph ist) of
       [cg] -> case lookupDefExact n (tt_ctxt ist) of
           Just (CaseOp _ _ _ pats _ cd) ->
             let (args, sc) = cases_totcheck cd in
               do logLvl 2 $ "Building SCG for " ++ show n ++ " from\n"
                                ++ show pats ++ "\n" ++ show sc
                  let newscg = buildSCG' ist (rights pats) args
                  logLvl 5 $ "SCG is: " ++ show newscg
                  addToCG n ( cg { scg = newscg } )
       [] -> logLvl 5 $ "Could not build SCG for " ++ show n ++ "\n"
       x -> error $ "buildSCG: " ++ show (n, x)

delazy = delazy' False -- not lazy codata
delazy' all t@(App _ f a)
     | (P _ (UN l) _, [_, _, arg]) <- unApply t,
       l == txt "Force" = delazy' all arg
     | (P _ (UN l) _, [P _ (UN lty) _, _, arg]) <- unApply t,
       l == txt "Delay" && (all || lty == txt "LazyEval") = delazy arg
     | (P _ (UN l) _, [P _ (UN lty) _, arg]) <- unApply t,
       l == txt "Lazy'" && (all || lty == txt "LazyEval") = delazy' all arg
delazy' all (App s f a) = App s (delazy' all f) (delazy' all a)
delazy' all (Bind n b sc) = Bind n (fmap (delazy' all) b) (delazy' all sc)
delazy' all t = t

data Guardedness = Toplevel | Unguarded | Guarded
  deriving Show

buildSCG' :: IState -> [(Term, Term)] -> [Name] -> [SCGEntry]
buildSCG' ist pats args = nub $ concatMap scgPat pats where
  scgPat (lhs, rhs) = let lhs' = delazy lhs
                          rhs' = delazy rhs
                          (f, pargs) = unApply (dePat lhs') in
                            findCalls Toplevel (dePat rhs') (patvars lhs') pargs

  findCalls guarded ap@(App _ f a) pvs pargs
     -- under a call to "assert_total", don't do any checking, just believe
     -- that it is total.
     | (P _ (UN at) _, [_, _]) <- unApply ap,
       at == txt "assert_total" = []
     -- under a call to "Delay LazyCodata", don't do any checking of the
     -- immediate call, as long as the call is guarded.
     -- Then check its arguments
     | (P _ (UN del) _, [_,_,arg]) <- unApply ap,
       Guarded <- guarded,
       del == txt "Delay"
           = let (capp, args) = unApply arg in
                 concatMap (\x -> findCalls guarded x pvs pargs) args
     | (P _ n _, args) <- unApply ap
        = let nguarded = case guarded of
                              Unguarded -> Unguarded
                              _ -> if isConName n (tt_ctxt ist)
                                      then Guarded
                                      else Unguarded in
              mkChange n args pargs ++
                 concatMap (\x -> findCalls nguarded x pvs pargs) args
  findCalls guarded (App _ f a) pvs pargs
        = findCalls Unguarded f pvs pargs ++ findCalls Unguarded a pvs pargs
  findCalls guarded (Bind n (Let t v) e) pvs pargs
        = findCalls Unguarded t pvs pargs ++
          findCalls Unguarded v pvs pargs ++ findCalls guarded e (n : pvs) pargs
  findCalls guarded (Bind n t e) pvs pargs
        = findCalls Unguarded (binderTy t) pvs pargs ++
          findCalls guarded e (n : pvs) pargs
  findCalls guarded (P _ f _ ) pvs pargs
      | not (f `elem` pvs) = [(f, [])]
  findCalls _ _ _ _ = []

  expandToArity n args
     = case lookupTy n (tt_ctxt ist) of
            [ty] -> expand 0 (normalise (tt_ctxt ist) [] ty) args
            _ -> args
     where expand i (Bind n (Pi _ _ _) sc) (x : xs) = x : expand (i + 1) sc xs
           expand i (Bind n (Pi _ _ _) sc) [] = Just (i, Same) : expand (i + 1) sc []
           expand i _ xs = xs

  mkChange n args pargs = [(n, expandToArity n (sizes args))]
    where
      sizes [] = []
      sizes (a : as) = checkSize a pargs 0 : sizes as

      -- find which argument in pargs <a> is smaller than, if any
      checkSize a (p : ps) i
          | a == p = Just (i, Same)
          | (P _ (UN as) _, [_,_,arg,_]) <- unApply a,
            as == txt "assert_smaller" && arg == p
                  = Just (i, Smaller)
          | smaller Nothing a (p, Nothing) = Just (i, Smaller)
          | otherwise = checkSize a ps (i + 1)
      checkSize a [] i = Nothing

      -- the smaller thing we find must be the same type as <a>, and
      -- not be coinductive - so carry the type of the constructor we've
      -- gone under.

      smaller (Just tyn) a (t, Just tyt)
         | a == t = isInductive (fst (unApply (getRetTy tyn)))
                                (fst (unApply (getRetTy tyt)))
      smaller ty a (ap@(App _ f s), _)
          | (P (DCon _ _ _) n _, args) <- unApply ap
               = let tyn = getType n in
                     any (smaller (ty `mplus` Just tyn) a)
                         (zip args (map toJust (getArgTys tyn)))
      -- check higher order recursive arguments
      smaller ty (App _ f s) a = smaller ty f a
      smaller _ _ _ = False

      toJust (n, t) = Just t

      getType n = case lookupTy n (tt_ctxt ist) of
                       [ty] -> delazy ty -- must exist

      isInductive (P _ nty _) (P _ nty' _) =
          let co = case lookupCtxt nty (idris_datatypes ist) of
                        [TI _ x _ _ _] -> x
                        _ -> False in
              nty == nty' && not co
      isInductive _ _ = False

  dePat (Bind x (PVar ty) sc) = dePat (instantiate (P Bound x ty) sc)
  dePat t = t

  patvars (Bind x (PVar _) sc) = x : patvars sc
  patvars _ = []

checkSizeChange :: Name -> Idris Totality
checkSizeChange n = do
   ist <- getIState
   case lookupCtxt n (idris_callgraph ist) of
       [cg] -> do let ms = mkMultiPaths ist [] (scg cg)
                  logLvl 5 ("Multipath for " ++ show n ++ ":\n" ++
                            "from " ++ show (scg cg) ++ "\n" ++
                            show (length ms) ++ "\n" ++
                            showSep "\n" (map show ms))
                  logLvl 6 (show cg)
                  -- every multipath must have an infinitely descending
                  -- thread, then the function terminates
                  -- also need to checks functions called are all total
                  -- (Unchecked is okay as we'll spot problems here)
                  let tot = map (checkMP ist (getArity ist n)) ms
                  logLvl 4 $ "Generated " ++ show (length tot) ++ " paths"
                  logLvl 6 $ "Paths for " ++ show n ++ " yield " ++ (show tot)
                  return (noPartial tot)
       [] -> do logLvl 5 $ "No paths for " ++ show n
                return Unchecked
  where getArity ist n
          = case lookupTy n (tt_ctxt ist) of
                 [ty] -> arity (normalise (tt_ctxt ist) [] ty)
                 _ -> error "Can't happen: checkSizeChange.getArity"

type MultiPath = [SCGEntry]

mkMultiPaths :: IState -> MultiPath -> [SCGEntry] -> [MultiPath]
mkMultiPaths ist path [] = [reverse path]
mkMultiPaths ist path cg
    = concat (map extend cg)
  where extend (nextf, args)
           | (nextf, args) `elem` path = [ reverse ((nextf, args) : path) ]
           | [Unchecked] <- lookupTotal nextf (tt_ctxt ist)
               = case lookupCtxt nextf (idris_callgraph ist) of
                    [ncg] -> mkMultiPaths ist ((nextf, args) : path) (scg ncg)
                    _ -> [ reverse ((nextf, args) : path) ]
           | otherwise = [ reverse ((nextf, args) : path) ]

--     do (nextf, args) <- cg
--          if ((nextf, args) `elem` path)
--             then return (reverse ((nextf, args) : path))
--             else case lookupCtxt nextf (idris_callgraph ist) of
--                     [ncg] -> mkMultiPaths ist ((nextf, args) : path) (scg ncg)
--                     _ -> return (reverse ((nextf, args) : path))

-- If any route along the multipath leads to infinite descent, we're fine.
-- Try a route beginning with every argument.
--   If we reach a point we've been to before, but with a smaller value,
--   that means there is an infinitely descending path from that argument.

checkMP :: IState -> Int -> MultiPath -> Totality
checkMP ist i mp = if i > 0
                     then let paths = (map (tryPath 0 [] mp) [0..i-1]) in
--                               trace ("Paths " ++ show paths) $
                               collapse paths
                     else tryPath 0 [] mp 0
  where
    tryPath' d path mp arg
           = let res = tryPath d path mp arg in
                 trace (show mp ++ "\n" ++ show arg ++ " " ++ show res) res

    tryPath :: Int -> [((SCGEntry, Int), Int)] -> MultiPath -> Int -> Totality
    tryPath desc path [] _ = Total []
--     tryPath desc path ((UN "believe_me", _) : _) arg
--             = Partial BelieveMe
    -- if we get to a constructor, it's fine as long as it's strictly positive
    tryPath desc path ((f, _) : es) arg
        | [TyDecl (DCon _ _ _) _] <- lookupDef f (tt_ctxt ist)
            = case lookupTotal f (tt_ctxt ist) of
                   [Total _] -> Unchecked -- okay so far
                   [Partial _] -> Partial (Other [f])
                   x -> error $ "CAN'T HAPPEN: " ++ show x ++ " for " ++ show f
        | [TyDecl (TCon _ _) _] <- lookupDef f (tt_ctxt ist)
            = Total []
    tryPath desc path (e@(f, args) : es) arg
        | e `elem` es && allNothing args = Partial (Mutual [f])
    tryPath desc path (e@(f, nextargs) : es) arg
        | Just d <- lookup (e, arg) path
            = if desc > 0
                   then -- trace ("Descent " ++ show (desc - d) ++ " "
                        --      ++ show (path, e)) $
                        Total []
                   else Partial (Mutual (map (fst . fst . fst) path ++ [f]))
        | e `elem` map (fst . fst) path
           && not (f `elem` map fst es)
              = Partial (Mutual (map (fst . fst . fst) path ++ [f]))
        | [Unchecked] <- lookupTotal f (tt_ctxt ist) =
            let argspos = case collapseNothing (zip nextargs [0..]) of
                               [] -> [(Nothing, 0)]
                               x -> x
--               trace (show (argspos, nextargs, path)) $
                pathres =
                  do (a, pos) <- argspos
                     case a of
                        Nothing -> -- don't know, but if the
                                   -- rest definitely terminates without
                                   -- any cycles with route so far,
                                   -- then we might yet be total
                            case collapse (map (tryPath 0 (((e, arg), 0):path) es)
                                          [0..length nextargs - 1]) of
                                Total _ -> return Unchecked
                                x -> return x
                        Just (nextarg, sc) ->
                          if nextarg == arg then
                            case sc of
                              Same -> return $ tryPath desc (((e, arg), desc) : path)
                                                       es pos
                              Smaller -> return $ tryPath (desc+1)
                                                          (((e, arg), desc) : path)
                                                          es
                                                          pos
                              _ -> trace ("Shouldn't happen " ++ show e) $
                                      return (Partial Itself)
                            else return Unchecked in
--                   trace (show (desc, argspos, path, es, pathres)) $
                   collapse' Unchecked pathres

        | [Total a] <- lookupTotal f (tt_ctxt ist) = Total a
        | [Partial _] <- lookupTotal f (tt_ctxt ist) = Partial (Other [f])
        | otherwise = Unchecked

allNothing :: [Maybe a] -> Bool
allNothing xs = null (collapseNothing (zip xs [0..]))

collapseNothing :: [(Maybe a, b)] -> [(Maybe a, b)]
collapseNothing ((Nothing, _) : xs)
   = filter (\ (x, _) -> case x of
                             Nothing -> False
                             _ -> True) xs
collapseNothing (x : xs) = x : collapseNothing xs
collapseNothing [] = []

noPartial :: [Totality] -> Totality
noPartial (Partial p : xs) = Partial p
noPartial (_ : xs)         = noPartial xs
noPartial []               = Total []

collapse :: [Totality] -> Totality
collapse xs = collapse' Unchecked xs
collapse' def (Total r : xs)   = Total r
collapse' def (Unchecked : xs) = collapse' def xs
collapse' def (d : xs)         = collapse' d xs
-- collapse' Unchecked []         = Total []
collapse' def []               = def

redpajama_set_name: RedPajamaGithub


text:
The Baiwang Bridge () is a historic stone arch bridge over a stream in Yuecheng District of Shaoxing, Zhejiang, China.

History
The original bridge dates back to the Tang dynasty (618–907), but because of war and natural disasters has been rebuilt numerous times since then. The present version was completed in 1689, during the reign of Kangxi Emperor of the Qing dynasty (1644–1911).

On 6 May 2013, it was listed among the seventh batch of "Major National Historical and Cultural Sites in Zhejiang" by the State Council of China.

Gallery

References

Bridges in Zhejiang
Arch bridges in China
Bridges completed in 1689
Qing dynasty architecture
Buildings and structures completed in 1689
1689 establishments in China
Major National Historical and Cultural Sites in Zhejiang

redpajama_set_name: RedPajamaWikipedia