POPULARITY
In this episode we are joined by co-authors Lillian-Yvonne Bertram and Nick Montfort to talk about their new publication Output: An Anthology of Computer Generated Text, 1953-2023. We learn about their path into digital poetry and the process of putting together this anthology.ReferencesBertram, Lillian-Yvonne. 2019.Travesty generator. Noemi Press.Bertram, Lillian-Yvonne and Nick Montfort. 2024.Output: An Anthology of Computer-Generated Text, 1953–2023. The MIT Press.Gysin, Brion and Ian Sommerville. 1960.Permutation Poems.H. Yngve, Victor. 1961.Random Sentences.Knowles, Alison and James Tenney. 1967.The House of Dust.Lutz, Theo. 1959.Stochastic Texts.Montfort, Nick. 2017.The Truelist. Counterpath.Montfort, Nick and Noah Wardrip-Fruin. 2003.The New Media Reader.Nish-Lapidus, Matt. 2020.Work, Life, Balance.Richardson, Leonard. 2013.Alice's Adventures in the Whale.Stiles, Sasha. 2021.Technelegy. The Black Spring Press Group.Strachey, Christopher. 1953.Love Letters.
Lytton Strachey's first great success, and his most famous achievement, was "Eminent Victorians" (1918), a collection of four short biographies of Victorian heroes. With a dry wit, he exposed the human failings of his subjects and what he saw as the hypocrisy at the centre of Victorian morality. This work was followed in the same style by "Queen Victoria" (1921). (From Wikipedia.)Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
Lytton Strachey's first great success, and his most famous achievement, was "Eminent Victorians" (1918), a collection of four short biographies of Victorian heroes. With a dry wit, he exposed the human failings of his subjects and what he saw as the hypocrisy at the centre of Victorian morality. This work was followed in the same style by "Queen Victoria" (1921). (From Wikipedia.)Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
Lytton Strachey's first great success, and his most famous achievement, was "Eminent Victorians" (1918), a collection of four short biographies of Victorian heroes. With a dry wit, he exposed the human failings of his subjects and what he saw as the hypocrisy at the centre of Victorian morality. This work was followed in the same style by "Queen Victoria" (1921). (From Wikipedia.)Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
Lytton Strachey's first great success, and his most famous achievement, was "Eminent Victorians" (1918), a collection of four short biographies of Victorian heroes. With a dry wit, he exposed the human failings of his subjects and what he saw as the hypocrisy at the centre of Victorian morality. This work was followed in the same style by "Queen Victoria" (1921). (From Wikipedia.)Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
Lytton Strachey's first great success, and his most famous achievement, was "Eminent Victorians" (1918), a collection of four short biographies of Victorian heroes. With a dry wit, he exposed the human failings of his subjects and what he saw as the hypocrisy at the centre of Victorian morality. This work was followed in the same style by "Queen Victoria" (1921). (From Wikipedia.)Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
This lecture will explore the world of the second Bloomsbury generation, delving into the intricacies of being young and queer in the 1920s, and how their open way of living and loving is still relevant to our present day. Lesser known than their predecessors, they continued the celebration of freedom of expression and creativity.The lecture will introduce artists and intellectuals such as Eddy Sackville-West, Stephen Tomlin and Julia Strachey, who led an unapologetic life by pushing gender boundaries and social conventions, as well as exploring gender fluidity and pansexuality.This lecture was recorded by Nino Strachey on 11th June 2024 at Barnard's Inn Hall, LondonThe transcript of the lecture is available from the Gresham College website:https://www.gresham.ac.uk/watch-now/queer-bloomsburyGresham College has offered free public lectures for over 400 years, thanks to the generosity of our supporters. There are currently over 2,500 lectures free to access. We believe that everyone should have the opportunity to learn from some of the greatest minds. To support Gresham's mission, please consider making a donation: https://gresham.ac.uk/support/Website: https://gresham.ac.ukTwitter: https://twitter.com/greshamcollegeFacebook: https://facebook.com/greshamcollegeInstagram: https://instagram.com/greshamcollegeSupport the Show.
On today's show, Alex and Calvin are thrilled to be joined by Dr. Patricia Fancher, a Continuing Lecturer in the Writing Program at the University of California, Santa Barbara. In her fabulous new book Queer Techné: Bodies, Rhetorics, and Desire in the History of Computing, Dr. Fancher offers a groundbreaking history of how the Manchester University Computer and discourses about it were shaped by queerness, embodied gender performativity, and invisibilized gendered labor in the early 1950s. Some of the figures that Fancher's book offers new understandings of include Alan Turing, Christopher Strachey, Audrey Bates, and Cicely Popplewell, with each case study capturing how technical communication and technology development are about more than just usability, efficiency, and innovation. A recurring theme in Dr. Fancher's rhetorical reading of Turing and his colleagues is that there is something queer, performative, and playful about intelligence, and that these dimensions are mostly ignored by the hype around so-called “artificial intelligence” tools like large language models. To explore this theme, we chat about Christopher Strachey's rudimentary love letter generation program, comparing its output to ChatGPT's for similar prompts. We ultimately explore what Turing might have thought of LLMs, and how we can begin to ask queerer questions of our digital tools to produce more interesting and intelligent discourses and technologies. Works and Concepts Referenced in this EpisodeEdenfield, A. C., Holmes, S., & Colton, J. S. (2019). Queering tactical technical communication: DIY HRT. Technical Communication Quarterly, 28(3), 177-191.Fancher, P. (2024). Queer Techné: Bodies, Rhetorics, and Desire in the History of Computing. NCTE.Fancher, P. (2016). Composing artificial intelligence: Performing Whiteness and masculinity. Present Tense, 6(1).Haas, A. M. (2012). Race, rhetoric, and technology: A case study of decolonial technical communication theory, methodology, and pedagogy. Journal of Business and Technical Communication, 26(3), 277-310.Henrik Oleson exhibition about Turing.Matt Sefton and David Link's web version of Strachey's love letter programRhodes, J., & Alexander, J. (2015). Techne: Queer meditations on writing the self. Computers and Composition Digital Press/Utah State University Press.
Welcome to Glenn Robison's Rapidly Rotating Records, bringing you vintage music to which you can't *not* tap your toes, from rapidly rotating 78 RPM records of the 1920s and '30s. Do you know who this little guy is? He's John Francis Strachey before he became songwriter Jack Strachey, probably best known for co-writing “These Foolish […] The post Dave Franklin, Jack Strachey and… RRR #1211 Oct. 1, 2023 appeared first on Glenn Robison's Rapidly Rotating 78 RPM Records.
After a long discussion about gametes and multipara, Lexman interviews Cristiano Amon about Strachey and Profligacies.
One of the issues that is so close to our heart is how art influences culture. We often say that nothing can change the world the way art can—it brings us together across so many of our divides to discuss important issues. And boy, does our guest this week have a story about a group of artists who lived authentically and pushed against social boundaries. Nino Strachey. Nino is a writer, historian and public speaker who worked as Head of Research for the National Trust. Since starting her career with the Landmark Trust, she has worked for English Heritage and the National Trust, curating the homes of scientists, politicians and writers. Her new book "Young Bloomsbury: Young Bloomsbury: The Generation That Redefined Love, Freedom, and Self-Expression in 1920s England," is now available to order. --- Send in a voice message: https://anchor.fm/alyssa-milano-sorry-not-sorry/message
In the years before the First World War, a collection of writers and artists began to make a name for themselves in England and America for their irreverent spirit and provocative works of literature, art, and criticism. They called themselves the Bloomsbury Group and by the 1920s, they were at the height of their influence. Then a new generation stepped forward—creative young people who tantalized their elders with their captivating looks, bold ideas, and subversive energy. The group had always celebrated sexual equality and freedom in private, feeling that every person had the right to live and love in the way they chose. But as transgressive self-expression became more public, this younger generation gave Old Bloomsbury a new voice. Join us when Nino Strachey discuss her book, Young Bloomsbury which celebrates an open way of living and loving that would not be embraced for another hundred years, on this installment of Leonard Lopate at Large.
This week, we watched the fourth and final (until we get that Kickstarter off the ground) movie in the Donald Strachey mysteries, Ice Blues. The most comprehensible and therefore the least fun of the series, it's also his least gay, but don't worry, we'll still find plenty to talk about, like how much killing a man with his bare hands seems to turn Strachey's husband on. Topics discussed: Why do bearer bonds exist? What would you name your lawfirm? This title doesn't make any sense Pizza crime We Read Movies This podcast is hosted by ZenCast.fm
Step back in time with us as Kate visits Charleston home of Vanessa Bell and important gathering place for the members of the Bloomsbury Group, that collection of writers and artists including Virginia Woolf that coalesced around Gordon Square in London. Undaunted by the ghosts of her relatives Nino Strachey, author of a new book, Young Bloomsbury, joins us to discuss the up-and-coming younger generation, such as writer Julia Strachey, sculptor Stephen Tomlin and photographer Cecil Beaton, who followed in their footsteps. Nino considers the interplay of creative inspiration that flowed between the generations, but also the spirit of tolerance and acceptance of different gender identities and chosen families that allowed these young creatives to flourish. Leave us a comment on our The Book Club Review website, where you'll also find more information on all the books mentioned, a transcript and our comments forum. Let us know your thoughts on the episode, or a Bloomsbury Group book that you love. Follow us between episodes for regular reviews and book recommendations on Instagram @bookclubreviewpodcast, or on Twitter @bookclubrvwpod. Find Nino on Twitter or Instagram @NinoStrachey. Book recommendations Lytton Strachey by Michael Holroyd (Penguin) Eminent Victorians by Lytton Strachey Cheerful Weather for the Wedding by Julia Strachey Love Letters: Vita and Virginia (Penguin) Orlando by Virginia Woolf (Penguin) L.O.T.E. by Sheila von Reinhold (Jaracanda) All Passion Spent by Vita Sackville West (Penguin), which we talked about on episode 12. The Waves and To The Lighthouse by Virginia Woolf (Penguin) Sissinghurst: The Creation of a Garden by Sarah Raven A Boy at the Hogarth Press by Richard Kennedy (Slightly Foxed) Vile Bodies by Evelyn Waugh (Penguin) A Moveable Feast by Ernest Hemingway (Penguin) Mrs Hemingway by Naomi Wood (Picador) The Paris Wife by Paula McLain (Virago)
Surprisingly little has been written about second-generation Bloomsbury who tantalised the original 'Bloomsburies' at Gordon Square parties with their captivating looks and provocative ideas. Young Bloomsbury introduces us to an extraordinarily colourful cast of characters, including novelist and music critic Eddy Sackville-West, 'who wore elaborate make-up and dressed in satin and black velvet', sculptor Stephen Tomlin and writer Julia Strachey. Talented and productive, these larger-than-life figures had high-achieving professional lives and extremely complicated emotional lives. Bloomsbury had always celebrated sexual equality and freedom in private, but by the 1920s, self-expression was becoming more public, with cross-dressing Young Bloomsbury giving Old Bloomsbury a new voice in a chosen family of a shared rebellion against pre-war conventions.
David Hill reviews Young Bloomsbury by Nino Strachey, published by Hachette.
Julia Strachey Heiteres Wetter zur Hochzeit Deutsch von Nicole Seifert Dörlemann Verlag, Zürich 2021 bei amazon bei Thalia Rezension zum Nachlesen
Ep:105 Richard Stevenson Lipez, 83, of Becket, died peacefully in his sleep on March 16, 2022, after a long exceptional life, and then an all-too-quick cancer. He would have liked to have lived longer, but considered himself lucky, nonetheless. - The opening above ccomes from an obituary written by Richard's son Zach for The Berkshire Eagle. A link to the full obituary is below.Queer Writers of Crimes is rated by Buzzfeed as one of the 20 Best Queer Podcasts to Tune in to While Going About Your Daily Queer Life.Dick" Lipez known most as Richard Stevenson, the author of the Donald Strachey Mysteries Series which began in 1981. his last novel in the series will publish by ReQueered Tales in fall 2022.Here is the link to Richard Stevenson's obituary: https://legcy.co/34UEdVXDisclosure: To cover the cost of producing Queer Writers of Crime, some of the links below are affiliate links. This means that, at zero cost to you, Brad will earn an affiliate commission if you click through the link and finalize a purchase.Knock of the Hat: A Clifford Waterman Gay Philly Mystery: available on AmazonLink to the novel: https://amzn.to/3qf09THIS last Donald Strachey novel will publish in the fall 2022. In addition, he mentions in this episode he is looking for a publisher for a private investigator series located in Philadelphia in in the 1940s. Amble Press, where Michael Nava is manager, welcomed Dick's book Knock Off The Hat publishes April 26 2022.I mentioned Chasing Rembrandt is available for pre-order. That was my mistake. However ReQueered Tales is republishing all the Strachey novels with better formatting and beautiful new covers. Check requeeredtales.com periodically to see when it publishes, or make life easier by signing up for their newsletter. Here is their link: requeeredtales.comHelp Support This Podcast buymeacoffee.com/queerwriters Queer Writers of Crime website: queerwritersofcrime.comLeave a Review https://lovethepodcast.com/queerwritersofcrimeBrad's Website: bradshreve.comSupport Requeered Tales re-publishing award-winning, post-Stonewall gay and lesbian fiction — with a focus on mystery, literary and horror/sci-fi genres.requeeredtales.com
There has been a proliferation of technological developments in the last few years that are beginning to improve how we perceive, attend to, notice, analyse and remember events, people, data and other information. There has been a proliferation of technological developments in the last few years that are beginning to improve how we perceive, attend to, notice, analyse and remember events, people, data and other information. These include machine learning, computer vision, advanced user interfaces (e.g. augmented reality) and sensor technologies. A goal of being augmented with ever more computational capabilities is to enable us to see more and, in doing so, make more intelligent decisions. But to what extent are the new interfaces enabling us to become more super-human? What is gained and lost through our reliance on ever pervasive computational technology? In my lecture, I will cover latest developments in technological advances, such as conversational interfaces, data visualisation, and augmented reality. I will then draw upon relevant recent findings in the HCI and cognitive science literature that demonstrate how our human capabilities are being extended but also struggling to adapt to the new demands on our attention. Finally, I will show their relevance to investigating the physical and digital worlds when trying to discover or uncover new information.
Mixed Signals: audio and wearable data analysis for health diagnostics Wearable and mobile devices are very good proxies for human behaviour. Yet, making the inference from the raw sensor data to individuals' behaviour remains difficult. The list of challenges is very long: from collecting the right data and using the right sensor, respecting resource constraints, identifying the right analysis techniques, labelling the data, limiting privacy invasion, to dealing with heterogeneous data sources and adapting to changes in behaviour.
The advantages of computing for society are tremendous. But while new technological developments emerge, we also witness a number disadvantages and unwanted side-effects. The advantages of computing for society are tremendous. But while new technological developments emerge, we also witness a number disadvantages and unwanted side-effects: from the speed with which fake news spreads to the formation of new echo-chambers and the enhancement of polarization in society. It is time to reflect upon the successes and failures of collective rationality, particularly as embodied in modern mechanisms for mass information-aggregation and information-exchange. What can the study of the social and epistemic benefits and costs, posed by various contemporary mechanisms for information exchange and belief aggregation, tell us? I will use Logic and Philosophy to shed some light on this topic. Ultimately we look for an answer to the question of how we can ensure that truth survives the information age?
Dolly ist im Begriff, den Ehrenwerten Owen Bingham zu heiraten. Die Begegnung mit ihrem enttäuschten Verehrer, der es nicht geschafft hat, sie für sich zu gewinnen, schreckt die Braut auf. Dolly wendet sich einer Flasche Rum zu, in der Hoffnung, mit deren Unterstützung doch noch vor den Altar zu treten. Julia Stracheys Roman "Heiteres Wetter zur Hochzeit" erschien erstmals 1932, aber auch heute liest es sich genauso erheiternd und scharfsinnig wie vor siebzig Jahren. Eine Buchkritik von Manuela Reichart
Photo: In 1921, Keynes wrote that he had fallen "very much in love" with Lydia Lopokova, a well-known Russian ballerina and one of the stars of Sergei Diaghilev's Ballets Russes.In 1921, Keynes wrote that he had fallen "very much in love" with Lydia Lopokova, a well-known Russian ballerina and one of the stars of Sergei Diaghilev's Ballets Russes.[160] In the early years of his courtship, he maintained an affair with a younger man, Sebastian Sprott, in tandem with Lopokova, but eventually chose Lopokova exclusively. They were married in 1925, with Keynes's former lover Duncan Grant as best man."What a marriage of beauty and brains, the fair Lopokova and John Maynard Keynes" was said at the time. Keynes later commented to Strachey that beauty and intelligence were rarely found in the same person, and that only in Duncan Grant had he found the combination. The union was happy, with biographer Peter Clarke writing that the marriage gave Keynes "a new focus, a new emotional stability and a sheer delight of which he never wearied". The couple hoped to have children but this did not happen.CBS Eye on the World with John BatchelorCBS Audio Network@BatchelorshowKeynes 2021: "Both history and Keynesian-influenced economic theory teach that . . ." @VerodeRugy @Marcatushttps://www.mercatus.org/publications/government-spending/keynesian-stimulus-virtuous-semicircle
As AI technologies enter our everyday lives at an ever increasing pace, there is a greater need for AI systems to work synergistically with humans. As AI technologies enter our everyday lives at an ever increasing pace, there is a greater need for AI systems to work synergistically with humans. This requires AI systems to exhibit behavior that is explainable to humans. Synthesizing such behavior requires AI systems to reason not only with their own models of the task at hand, but also about the mental models of the human collaborators. At a minimum, AI agents need approximations of human's task and goal models, as well as the human's model of the AI agent's task and goal models. The former will guide the agent to anticipate and manage the needs, desires and attention of the humans in the loop, and the latter allow it to act in ways that are interpretable to humans (by conforming to their mental models of it), and be ready to provide customized explanations when needed. Using several case-studies from our ongoing research, I will discuss how such multi-model reasoning forms the basis for explainable behavior in human-aware AI systems.
Innovation is the main event of the modern age, the reason we experience both dramatic improvements in our living standards and unsettling changes in our society. Innovation is the main event of the modern age, the reason we experience both dramatic improvements in our living standards and unsettling changes in our society. Forget short-term symptoms like Donald Trump and Brexit, it is innovation itself that explains them and that will itself shape the 21st century for good and ill. Yet innovation remains a mysterious process, poorly understood by policy makers and businessmen, hard to summon into existence to order, yet inevitable and inexorable when it does happen.
In this week's episode, Mandy and Caroline watch a movie that Caroline literally had to google the name of while writing this (it's called "On the Other Hand, Death: A Donald Strachey Mystery"). Join them on this adventure of murder, lesbians, and barns. If you want to watch this movie that we can not remember the name of, you can watch it on Amazon Prime. For inquiries, comments, or a cold brew, email us at thegaysthegoysandthejews@gmail.com.
I do not own the rights to this. This paper is being read for educational purposes only.
Ep:045 Born 1938 Lock Haven, PA, Richard Stevenson graduated Lock Haven State College, did graduate work in American lit at Penn State. He joined the Peace Corps and fled grad school to teach English in Ethiopia 1962-64---He says it's the best thing he ever did. Worked as Peace Corps program evaluator around the world 1964-67. Ran the anti-poverty program in Pittsfield, MA, 1968-71. Free-lance writer after that. Wrote for magazines and newspapers, including 15 years as an editorial writer at The Berkshire Eagle, Pittsfield, MA. Won New England AP Press Association award for editorials on gay marriage. Wrote a thriller, GRAND SCAM (Dial, 1979) with Peter Stein. Wrote the 16 Strachey books under the name Richard Stevenson, starting with DEATH TRICK in 1981. Four of them filmed by HereTV. He has been reviewing books regularly for The Washington Post for many years and continues to do so.He has two children, both excellent human beings now in their forties, one a teacher, one a writer and musician. He's been with Joe Wheaton, sculptor and video artist since 1990. Married since the first day it was legal in MA in 2004.Transcript available on website. gaymysterypodcast.comKiller Reunion by Richard StevensonNew Man in Town by Edward KendrickBrad's Website: https://bradshreve.com/requeeredtales.comInstagram: @gaymysterypodcastFacebook: Gay Mystery-Thriller-Suspense Fiction GroupQuestions or comments can be emailed to info@gaymysterypodcast.com
Nesse episódio, eu dou continuidade à série sobre romances que se passam em colégios internos e foram adaptados para o cinema, e falo sobre a escritora inglesa Dorothy Bussy (Strachey) e seu romance Olivia (1949), adaptado ao cinema por Jacqueline Audry (1951). // Sugira uma autora ou livro que voce gostaria de ver no podcast: https://semclassepodcast.wordpress.com/indice/indice-de-autoras/sugira-uma-autora-um-livro/ // Desafio literário (Bingo): https://semclassepodcast.wordpress.com/2019/12/11/desafio-literario-do-classicxs-sem-classe-para-2020-bingo-sem-classe/ // Grupo no Goodreads: https://www.goodreads.com/group/show/1042519-cl-ssicxs-sem-classe // Leituras conjuntas: https://semclassepodcast.wordpress.com/project-tag/leitura-conjunta // Playlists por tema: https://semclassepodcast.wordpress.com/playlists-por-tema/ // Minhas redes sociais: https://linktr.ee/blankgarden // Página do podcast: https://semclassepodcast.wordpress.com // Musica tema: trilha sonora do filme The Prime of Miss Jean Brodie, composta por Rod McKuen, em 1969. --- Send in a voice message: https://anchor.fm/julianabrina/message
The wildly nuanced and complex life and work of Russian novelist Fyodor Dostoevsky. Focuses on his main works, and how his life and big questions influenced them. Works Cited (in order of mention): Nietzsche, F. (1888). Twilight of the Idols. As found on p. 715 of the Barnes & Noble Classics ed. of Brothers Karamazov by F. Dostoevsky (2004). Notable Biographies. (n.d.). Fyoder Dostoevsky Biography. Retrieved from https://www.notablebiographies.com/De-Du/Dostoevsky-Fyodor.html Grossman, J. D. (1988, January 10). Who Killed Fyodor's Father? Fyodor Dostoevsky A Writer's Life. In Los Angeles Times. Retrieved from https://www.latimes.com/archives/la-xpm-1988-01-10-bk-34549-story.html Kidder, D. S., & Oppenheim, (2012). The Intellectual Devotional. Barnes & Noble Books. Dostoevsky, F. (1961). Notes from Underground, White Nights, Ridiculous Man, The House of the Dead. (A. R. MacAndrew, Trans.). New York, NY: NAL PENGUIN INC.. (Original work published 1864) Dostoevsky, F. (1987). Crime and Punishment. (C. Garnett, Trans.). New York, NY: Bantam Books. (Original work published 1866) Dostoevsky, F. (2004). The Idiot. (C. Garnett, Trans.). New York, NY: Barnes & Noble Books. (Original work published 1868) Dostoevsky, F. (1861). The Insulted and the Injured. Dostoevsky, F. (2004). The Brothers Karamazov. (C. Garnett, Trans.). New York, NY: Barnes & Noble Books. (Original work published 1879) Freud, S. (1961). Dostoevsky and Parricide. (J. Strachey, Trans.). London, England: The Hogarth Press and the Institute of Psycho-Analysis. Retrieved from https://www.sas.upenn.edu/~cavitch/pdf-library/Freud_Dostoevsky_Parricide.pdf (Original work published 1924) Lazar, M. (1914, July). Little Review. As found on p. 715 of the Barnes & Noble Classics ed. of Brothers Karamazov by F. Dostoevsky (2004).
A conversation for the interest of students and practitioners of History and others interested in scholarly approaches and attitudes to biography and autobiography as historical methods. Professor Barbara Caine explains changing perceptions of biography in the historiography and the emergence of what some refer to as a biological turn and more recently an autobiographical turn. Professor Caine is author of Biography and History and books on the Strachey family, English feminism, Victorian feminists, and the sisters of Beatrice Webb, among other works. Professor Caine's current research is on the history of women's autobiography from the mid 18th century to the present.
On this day in Tudor history, 4th April 1572, William Strachey, writer and historian of Virginia, was born in Saffron Walden in Essex, England.Strachey's account of the 1609 shipwreck of the Sea Venture in a hurricane was used as a source for William Shakespeare's "The Tempest". Find out more about Strachey, how he was marooned for a year, and why he died in poverty, in today's talk from Claire Ridgway, founder of the Tudor Society. Here's a link to find out more about Strachey's signet ring - https://historicjamestowne.org/selected-artifacts/stracheys-ring-2/Also on this day in Tudor history, 4th April 1589, Mildred Cecil, Lady Burghley, wife of William Cecil, Lord Burghley, and an accomplished and influential woman in her own right, died. You can find out more about her in last year’s video - https://youtu.be/Jaap4Mj2Jbg
Reading Sigmund Freud “civilization and its discontents, chapter 1“ published by WW Norton and Company, translated by James Strachey in 1961. I do not own the rights to this essay or chapter, this is for educational purposes only.
Narrated by Sean Salas “After all, what is liberty? What distinguishes liberty from license? Ask your countrymen that. I am sure they will not reply that liberty is just doing what one likes.” -Benito Mussolini https://www.nationalreformation.org/post/james-strachey-barnes-talks-with-mussolini-1937
Narrated by Sean Salas “After all, what is liberty? What distinguishes liberty from license? Ask your countrymen that. I am sure they will not reply that liberty is just doing what one likes.” -Benito Mussolini https://www.americanblackshirts.com/single-post/2019/03/11/James-Strachey-Barnes-Talks-With-Mussolini
Professor Leslie Kaelbling (MIT) gives the 2019 Stachey lecture. The Strachey Lectures are generously supported by OxFORD Asset Management. We, as robot engineers, have to think hard about our role in the design of robots and how it interacts with learning, both in 'the factory' (that is, at engineering time) and in 'the wild' (that is, when the robot is delivered to a customer). I will share some general thoughts about the strategies for robot design and then talk in detail about some work I have been involved in, both in the design of an overall architecture for an intelligent robot and in strategies for learning to integrate new skills into the repertoire of an already competent robot.
Why has AI been so hard and what are the problems that we might work on in order to make real progress to human level intelligence, or even the super intelligence that many pundits believe is just around the corner? In his 1950 paper "Computing Machinery and Intelligence" Alan Turing estimated that sixty people working for fifty years should be able to program a computer (running at 1950 speed) to have human level intelligence. AI researchers have spent orders of magnitude more effort than that and are still not close. Why has AI been so hard and what are the problems that we might work on in order to make real progress to human level intelligence, or even the super intelligence that many pundits believe is just around the corner? This talk will discuss those steps we can take, what aspects we really still do not have much of a clue about, what we might be currently getting completely wrong, and why it all could be centuries away. Importantly the talk will make distinctions between research questions and barriers to technology adoption from research results, with a little speculation on things that might go wrong (spoiler alert: it is the mundane that will have the big consequences, not the Hollywood scenarios that the press and some academics love to talk about).
This talk is about the experience of providing privacy when running analytics on users' personal data. The two-sided market of Cloud Analytics emerged almost accidentally, initially from click-through associated with user's response to search results, and then adopted by many other services, whether web mail or social media. The business model seen by the user is of a free service (storage and tools for photos, video, social media etc). The value to the provider is untrammeled access to the user's data over space and time, allowing upfront income from the ability to run recommenders and targeted adverts, to background market research about who is interested in what information, goods and services, when and where. The value to the user is increased personalisation. This all comes at a cost, both of privacy (and the risk of loss of reputation or even money) for the user, and at the price of running highly expensive data centers for the providers, and increased cost in bandwidth and energy consumption (mobile network costs & device battery life). The attack surface of our lives expands to cover just about everything. This talk will examine several alternative directions that this will evolve in the future. Firstly, we look at a toolchain for traditional cloud processing which offers privacy through careful control of the lifecycle of access to data, processing, and production of results by combining several relatively new techniques. Secondly, we present a fully decentralized approach, on low cost home devices, which can potentially lead to large reduction in risks of loss of confidentiality.
Stroustrup discusses the development and evolution of the C++, one of the most widely used programming languages ever. The development of C++ started in 1979. Since then, it has grown to be one of the most widely used programming languages ever, with an emphasis on demanding industrial uses. It was released commercially in 1985 and evolved through one informal standard (“the ARM”) and several ISO standards: C++98, C++11, C++14, and C++17. How could an underfinanced language without a corporate owner succeed like that? What are the key ideas and design principles? How did the original ideas survive almost 40 years of development and 30 years of attention from a 100+ member standards committee? What is the current state of C++ and what is likely to happen over the next few years? What are the problems we are trying to address through language evolution?
Stroustrup discusses the development and evolution of the C++, one of the most widely used programming languages ever. The development of C++ started in 1979. Since then, it has grown to be one of the most widely used programming languages ever, with an emphasis on demanding industrial uses. It was released commercially in 1985 and evolved through one informal standard (“the ARM”) and several ISO standards: C++98, C++11, C++14, and C++17. How could an underfinanced language without a corporate owner succeed like that? What are the key ideas and design principles? How did the original ideas survive almost 40 years of development and 30 years of attention from a 100+ member standards committee? What is the current state of C++ and what is likely to happen over the next few years? What are the problems we are trying to address through language evolution?
Christopher Strachey believed that the gap between theory and practice was impeding the development of computing science. In Robert’s talk, he considers how the work he did with Strachey on the essay that ultimately became their book tried to narrow the gap, by formalising, and reasoning about, the implementation concepts for programming languages. A particular focus will be the proof techniques for imperative programs that use storage, which were implicit, but not very easy to discern, in the book.
In this presentation, Uday brings together two strands of Christopher Strachey’s thought: parametric polymorphism and abstract models of storage. The term parametric polymorphism was introduced in by Strachey who distinguished it from “ad hoc” polymorphism. In the words of John Reynolds, “a parametric polymorphic function is one that behaves the same way for all types,” whereas an ad hoc polymorphic function may have unrelated meanings at different types. A very similar intuition arose in mathematics, some twenty years earlier, for which Eilenberg and MacLane proposed a “General Theory of Natural Equivalences”, what we now call category theory. Relating the two notions allows us to develop a broad view of “parametricity” (the idea of acting the same way for all types), which is applicable not only to programming languages but also to mathematics and perhaps other disciplines. A particularly important application of this broad view is for Strachey’s “mathematical semantics” of programming languages. For modelling imperative programming languages that operate by manipulating a store, Strachey presented a basic model of storage based on “locations”, while promising a further paper on an “abstract model of storage” to appear in future. Unfortunately the latter never appeared. In succeeding work, Reynolds proposed an abstract model of store as well as an “intuitionistic” functor category approach to model the stack discipline of the store. O'Hearn and Tennent made the crucial observation that the model needs to be embellished with parametricity to capture the data abstraction aspects of the store. In this talk, Uday reviews these developments as well as his own recent work on integrating the Reynolds model with parametricity to capture the fact that state changes of the store are irreversible. One way to understand these developments is to view them as a “parametric mathematical semantics” of programming languages.
Hongseok begins by talking about a program of Strachey’s that wrote “love letters” using the Manchester University computer. He then uses this as a lead in for discussing probabilistic methods of generating algorithms and programs.
The logician Dana Scott played a crucial part in the story of denotational semantics, working for a term with Christopher Strachey in Autumn 1969, when he created a mathematical model for the foundation of the method. In this talk, Dana discusses this period as well as reminiscing about his life and career up to that point.
In this panel discussion, three people who knew Christopher Strachey in different contexts talk about their memories of him. Michael Jackson discusses being taught by Strachey as a boy at Harrow, David Hartley talks about work with Strachey on the programming language CPL, and Roger Penrose remembers working with Strachey at the National Research Development Corporation and introducing him to lambda calculus.
Christopher Strachey’s right-hand man at Oxford talks about Strachey’s time as the head of the Programming Research Group (PRG). The talk covers the foundation of the PRG and the research performed at the (PRG), with an emphasis on the equal importance of theoretical and practical work.
During Peter’s DPhil studies, supervised by Christopher Strachey, he developed a prototype of a system for executing programs based on their denotational semantics. It involved partial evaluation of lambda-notation, implemented using Wadsworth's call-by-need algorithm. He continued the development of the system as a postdoc at Oxford, and subsequently at Aarhus, Denmark. The system was called SIS: Semantics Implementation System. In this talk, Peter recalls Strachey's influence on his research and on the development of SIS, starting from Strachey’s summer school course on symbolic computation at the PRG in 1969.
Chrisopher Strachey was the most significant contributor to the design and implementation of the programming language CPL. At the time there was little understanding of the complexities of computer language design and how type systems could cope with lists and the kinds of structures needed to represent, for instance, parse trees. The CPL project cannot be regarded as being successful since it did not result in a usable CPL compiler. The reasons being that the language became too large and complicated, there were insufficient people to implement the compiler and, in the middle of the three year project, all work had to be transferred from Edsac 2 to Titan, a newly designed version of the Ferranti Atlas computer which as yet had no operating system. Even so, we can be proud of the work that went into CPL and its influence on the design of many later languages.
A historian’s perspective on the earlier years of Christopher Strachey’s life. The talk covers his familial connections, his early career as a school master, and his first computing projects.
Professor Kraus will show how combining machine learning techniques for human modelling, human behavioural models, formal decision-making and game theory approaches enables agents to interact well with people. Automated agents that interact proficiently with people can be useful in supporting, training or replacing people in complex tasks. The inclusion of people presents novel problems for the design of automated agents' strategies. People do not necessarily adhere to the optimal, monolithic strategies that can be derived analytically. Their behaviour is affected by a multitude of social and psychological factors. In this talk I will show how combining machine learning techniques for human modelling, human behavioural models, formal decision-making and game theory approaches enables agents to interact well with people. Applications include intelligent agents. The Strachey Lectures are generously supported by OxFORD Asset Management.
Professor Zoubin Ghahramani gives a talk on probabilistic modelling from it's foundations to current areas of research at the frontiers of machine learning. Probabilistic modelling provides a mathematical framework for understanding what learning is, and has therefore emerged as one of the principal approaches for designing computer algorithms that learn from data acquired through experience. Professor Ghahramani will review the foundations of this field, from basics to Bayesian nonparametric models and scalable inference. He will then highlight some current areas of research at the frontiers of machine learning, leading up to topics such as probabilistic programming, Bayesian optimisation, the rational allocation of computational resources, and the Automatic Statistician. The Strachey lectures are generously supported by OxFORD Asset Management.
Professor Andrew Hodges author of 'Alan Turing: The Enigma' talks about Turing's work and ideas from the definition of computability, the universal machine to the prospect of Artificial Intelligence. In 1951, Christopher Strachey began his career in computing. He did so as a colleague of Alan Turing, who had inspired him with a 'Utopian' prospectus for programming. By that time, Turing had already made far-reaching and futuristic innovations, from the definition of computability and the universal machine to the prospect of Artificial Intelligence. This talk will describe the origins and impacts of these ideas, and how wartime codebreaking allowed theory to turn into practice. After 1951, Turing was no less innovative, applying computational techniques to mathematical biology. His sudden death in 1954 meant the loss of most of this work, and its rediscovery in modern times has only added to Turing's iconic status as a scientific visionary seeing far beyond his short life. Andrew Hodges is the author of Alan Turing: The Enigma (1983), which inspired the 2014 film The Imitation Game. The Strachey Lectures are generously supported by OxFORD Asset Management.
Professor Andrew Hodges author of 'Alan Turing: The Enigma' talks about Turing's work and ideas from the definition of computability, the universal machine to the prospect of Artificial Intelligence. In 1951, Christopher Strachey began his career in computing. He did so as a colleague of Alan Turing, who had inspired him with a 'Utopian' prospectus for programming. By that time, Turing had already made far-reaching and futuristic innovations, from the definition of computability and the universal machine to the prospect of Artificial Intelligence. This talk will describe the origins and impacts of these ideas, and how wartime codebreaking allowed theory to turn into practice. After 1951, Turing was no less innovative, applying computational techniques to mathematical biology. His sudden death in 1954 meant the loss of most of this work, and its rediscovery in modern times has only added to Turing's iconic status as a scientific visionary seeing far beyond his short life. Andrew Hodges is the author of Alan Turing: The Enigma (1983), which inspired the 2014 film The Imitation Game. The Strachey Lectures are generously supported by OxFORD Asset Management.
Dr Scott Aaronson (MIT, UT Austin) gives the 2016 Strachey lecture. In the near future, it will likely become possible to perform special-purpose quantum computations that, while not immediately useful for anything, are plausibly hard to simulate using a classical computer. These "quantum supremacy experiments" would be a scientific milestone---decisively answering quantum computing skeptics, while casting doubt on one of the foundational tenets of computer science, the Extended Church-Turing Thesis. At the same time, these experiments also raise fascinating questions for computational complexity theorists: for example, on what grounds should we believe that a given quantum system really is hard to simulate classically? Does classical simulation become easier as a quantum system becomes noisier? and how do we verify the results of such an experiment? In this lecture, I'll discuss recent results and open problems about these questions, using three proposed "quantum supremacy experiments" as examples: BosonSampling, IQP / commuting Hamiltonians, and random quantum circuits. Based partly on joint work with Alex Arkhipov and with Lijie Chen. The Strachey Lectures are generously supported by OxFORD Asset Management.
Dr Scott Aaronson (MIT, UT Austin) gives the 2016 Strachey lecture. In the near future, it will likely become possible to perform special-purpose quantum computations that, while not immediately useful for anything, are plausibly hard to simulate using a classical computer. These "quantum supremacy experiments" would be a scientific milestone---decisively answering quantum computing skeptics, while casting doubt on one of the foundational tenets of computer science, the Extended Church-Turing Thesis. At the same time, these experiments also raise fascinating questions for computational complexity theorists: for example, on what grounds should we believe that a given quantum system really is hard to simulate classically? Does classical simulation become easier as a quantum system becomes noisier? and how do we verify the results of such an experiment? In this lecture, I'll discuss recent results and open problems about these questions, using three proposed "quantum supremacy experiments" as examples: BosonSampling, IQP / commuting Hamiltonians, and random quantum circuits. Based partly on joint work with Alex Arkhipov and with Lijie Chen. The Strachey Lectures are generously supported by OxFORD Asset Management.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s'adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s'intéressent principalement aux programmes à espaces d'états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d'assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l'importance de la notion d'ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d'autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d'assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d'un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l'idée bien différente d'utiliser la réécriture de termes comme outil applicable à la fois pour l'optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d'information, et toutes les fonctions sont rendues totales par l'ajout explicite d'éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d'interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d'ordre supérieur. Au début des années 1970, cette théorie a été à l'origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l'indéfini s'est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l'interprétation abstraite créé par P. et R. Cousot en 1977. L'idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d'accélération des calculs de points fixes. L'interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l'absence d'erreurs à l'exécution dans le code de pilotage de l'Airbus A380. Elle est également utilisée pour l'évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d'autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L'idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d'interaction homme-machine permettant d'organiser les preuves logiques à grand échelle, augmenté d'automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu'aux calculs d'ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l'exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L'atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l'informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s'adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s'intéressent principalement aux programmes à espaces d'états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d'assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l'importance de la notion d'ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d'autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d'assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d'un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l'idée bien différente d'utiliser la réécriture de termes comme outil applicable à la fois pour l'optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d'information, et toutes les fonctions sont rendues totales par l'ajout explicite d'éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d'interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d'ordre supérieur. Au début des années 1970, cette théorie a été à l'origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l'indéfini s'est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l'interprétation abstraite créé par P. et R. Cousot en 1977. L'idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d'accélération des calculs de points fixes. L'interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l'absence d'erreurs à l'exécution dans le code de pilotage de l'Airbus A380. Elle est également utilisée pour l'évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d'autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L'idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d'interaction homme-machine permettant d'organiser les preuves logiques à grand échelle, augmenté d'automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu'aux calculs d'ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l'exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L'atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l'informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.
Gérard Berry Algorithmes, machines et langages Année 2014-2015 Prouver les programmes : pourquoi, quand, comment ? Troisième leçon : Les méthodes générales : assertions, réécriture, interprétation abstraite, logiques et assistants de preuve Il y a deux principaux types de méthodes formelles pour la preuve de programme : les méthodes générales, qui s’adressent à tous les types de programmes et seront présentées dans ce cours, et celles de la vérification de modèles (model-checking), qui s’intéressent principalement aux programmes à espaces d’états finis et aux circuits électroniques et seront traitées dans le cours no 5 du 25 mars 2015. La nécessité de traiter les programmes comme des objets mathématiques à part entière a été reconnue par A. Turing dès 1949. Il a alors introduit la notion d’assertion associant un prédicat logique à un point de contrôle du programme, ainsi que l’importance de la notion d’ordre bien fondé pour montrer la terminaison des programmes. Son approche par assertions est la première que nous traiterons dans le cours. Elle a été étendue et perfectionnée par R. Floyd, C.A.R. Hoare, E.W. Dijkstra, et bien d’autres, pour aboutir à une théorie et une pratique complètes de la définition logique des langages de programmation et de la vérification de programmes, applicables initialement aux programmes séquentiels impératifs. La notion d’assertion a été ensuite étendue en celle de contrat (assume/guarantee) à respecter par les fonctions ou modules d’un programme, applicable aussi aux langages objets et aux langages parallèles. En 1963, dans un article fondateur militant pour le traitement mathématique de la programmation et introduisant une brochette remarquable de nouveaux concepts, J. McCarthy a introduit l’idée bien différente d’utiliser la réécriture de termes comme outil applicable à la fois pour l’optimisation de programmes et leur vérification formelle. Cette approche, la seconde que nous étudierons, a eu une longue descendance dans les systèmes de vérification (Boyer&More, ACL2, PVS, Key, ProVerif, etc.), et continue d'irriguer les autres approches. Elle a eu des succès remarquables en circuits, en avionique, en sécurité, etc. La troisième approche historique est celle de la sémantique dénotationnelle des langages introduite par Scott et Strachey vers 1970. Ici, un programme est interprété comme une fonction dans un espace topologique ordonné par un ordre d’information, et toutes les fonctions sont rendues totales par l’ajout explicite d’éléments indéfinis. Une théorie générale du point fixe dans les espaces ordonnés permet d’interpréter de façon uniforme les boucles, la récursion et la programmation fonctionnelle d’ordre supérieur. Au début des années 1970, cette théorie a été à l’origine du pionnier des assistants de preuve de programmes, LCF, créé par Milner et al. Mais le traitement explicite de l’indéfini s’est révélé trop compliqué, et les assistants de preuve ont ensuite suivi un autre chemin. La sémantique dénotationnelle a cependant eu un succès considérable dans une autre approche de la vérification, l’interprétation abstraite créé par P. et R. Cousot en 1977. L’idée est ici de travailler avec des assertions portant non plus sur les valeurs exactes calculées, mais sur une abstraction de celles-ci, comme la preuve par 9 le fait pour détecter des erreurs dans la multiplication. De nombreux domaines abstraits ont été développés, ainsi que des méthodes algorithmiques générales de combinaison de ces domaines et d’accélération des calculs de points fixes. L’interprétation abstraite est maintenant développée industriellement. Elle a permis de vérifier des propriétés critiques de très gros programmes, comme l’absence d’erreurs à l’exécution dans le code de pilotage de l’Airbus A380. Elle est également utilisée pour l’évaluation du temps de calcul maximal de logiciels embarqués et pour accélérer les calculs dans d’autres types de système de vérification. La quatrième approche traitée dans ce cours est la vérification par assistants de preuves logiques. L’idée est ici de traduire le problème de vérification informatique en un problème purement logique, et de fournir une aide à la vérification à travers un système de tactiques et d’interaction homme-machine permettant d’organiser les preuves logiques à grand échelle, augmenté d’automatisations partielles pour des sous-domaines spécifiques utilisant par exemple des techniques de réécriture. Les assistants actuels traitent plusieurs types de logique, allant du calcul des prédicats de premier ordre augmenté par la théorie des ensembles (Rodin pour Event B, etc.) ou par la logique temporelle (TLA+), jusqu’aux calculs d’ordre supérieur (HOL, Isabelle, Coq, etc.). Ce cours présentera sommairement les ateliers de premier ordre, les ordres supérieurs étant traités dans le cours suivant. Nous prendrons l’exemple des formalismes B et Event-B de J.-R. Abrial (orateur du dernier séminaire du 1er avril 2015). L’atelier B a été utilisé pour la spécification, la programmation et la vérification formelle de logiciels critiques pour la conduite du RER A, de la ligne 14 (Meteor) du métro parisien, et de plusieurs autres systèmes ferroviaires. Event-B et son système Rodin sont une évolution de B vers les systèmes événementiels qui sont ubiquitaires dans l’informatique embarquée.