text:
Connecting Biology, Service-Learning and Youth Awareness
By RATNA GUPTA, Ph.D
Ratna is an Assistant Professor, Science department at Our Lady of the Lake College in Baton Rouge, Louisiana. She holds a Ph.D degree in Biochemistry and teaches general biology I/II, general biology laboratory I/II, histology, genetics and biochemistry. Her goal is to teach using a mix of pedagogies like service-learning, team-based learning, problem-based learning, and simulations to keep students' engaged, develop critical thinking and help them retain course material in the long run.
I do not think I will be able to tell this story without admitting that I am an absolute novice to service learning pedagogy and have no experience in any community service. It took more than a semester and numerous discussions with our service learning Director, Dr. Reddix for me to decide that I will try using this pedagogy in teaching general biology II course.
Biology II course is a 'boring' course, as per college students' feedback. As an instructor, I obviously do not agree but the resilient question was how to make a course, which covers a wide range of organisms/topics including bacteria; viruses, protists; fungi, plant, animals, the origin of life, and evolution-engaging, interesting and learnable! Learning this course material involves quite a bit of memorization (that's the nature of the material covered in this course). I am quite sure keeping students engaged in this type of course is a challenge!
I searched for a pedagogy, which could help our students retain the information, attain meaningful learning as well as relate to the material covered in this course. Thus, I decided to integrate Service-Learning (SL) into this course where students could learn the material and teach high school students, with the focus on how different organisms are involved in diseases process.
When I started designing the service learning project for undergraduate students, I was fully aware that it will truly engage the students, but I was not sure of its scope and its impact on either college students or high school students. Nonetheless, I know now that our SL project is worth sharing as it embraces one of the debilitating issues not only in United States but around the world- AIDS (Acquired Immunodeficiency Syndrome), caused by HIV (Human Immunodeficiency Virus) and other infectious diseases. The most nerve wracking concern about HIV infection/syndrome is that it does not differentiate between age, sex (male/female), race, religion. While HIV virus can be transmitted during sexual contact, one can also acquire this infection even during pregnancy, childbirth, or breastfeeding.
In United States, one in four new HIV infections is among youth ages 13 to 24. Every month 1,000 young people are infected with HIV and over 76,400 young people are currently living with HIV across the country. Thus, it is most imperative to educate youth age to prevent its transmission.
The SL project was designed to educate the high school students (age 12-16 y) about magnitude of infectious diseases ranging from common cold, food poisoning, strep throat, meningitis, vaginal candidiasis, athlete's foot, herpes to HIV/AIDS. The first step towards this is to understand the biology of organisms and mechanisms responsible for causing different infectious diseases.
This SL project focused on after-school programs, which emphasizes on growth, development and creating opportunities for school youth to develop their own personal knowledge and growth for future success. The project connected college biology students with high-school students while they learned the material and most importantly learned to work collectively.
I also arranged trips for high-school students to visit our campus to do experiments in our laboratory. The response was overwhelming. In my view, this opportunity was multi-faceted; allowed the high school students to do laboratory activities in a biological laboratory, which many school lack (for example use of microscope), provided them first-hand experience in observation of the materials of science, facilitated their learning as well as helped them to identify their career or educational goal. Some of the feedbacks from high school students were extremely positive, which substantiated my line of thought "I learned everything about medicine. Viruses can make you really really sick", "I feel like I Learned a lot about the spread of the virus", "I thought it was fun doing an experiment".
The success of the whole service learning project ought to be divided in three phases. But before I get into the details, this SL project would not have been successful without our college students' hard work, team work, sincerity, enthusiasm and willingness to participate in such a project to make a difference in the real world! The biology students were almost wonderful, after all they are freshmen! Nonetheless, they all worked diligently to carry out this project. Phase I involved educating the high school students that there are many different organisms that exist besides humans on this planet and there is a specific (scientific) way to classify and identify (taxonomy) them. Phase II involved learning the biology (structure, function and types) of bacteria, viruses and fungi and whether they are harmful, useful or both to humans. The last phase (phase III) involved the specific diseases/infections they may cause, how they cause such infections and how to prevent them?
One of the vital outcomes of this project was to educate the high school students about HIV/AIDS transmission as well as demonstrate the simplest way how to prevent it- Create awareness!
In this aspect of the project, we addressed the following questions: (a) types of viruses- their structure and organisms they infect (b) how do different viruses cause infection in humans (mechanism)? (c) what is the virus which causes HIV infection and weakens the body's immune system (your defense mechanism against microbial infections) so that it loses the ability to fight off microbial infection and illnesses? (d) How is HIV transmitted? (e) Does having HIV mean you will become sick and start showing the symptoms immediately? (e) How can we prevent the spread of HIV infection and other infectious diseases?
Our students lectured for 5-10 min, organized games (jeopardy), showed animated videos and offered candies for extra attention, together they used variety of tools to keep high school students focused and help in their learning. The comparison between pre- and post quizzes provided evidence of learning. In addition, a simple experiment was performed involving high school students, which clearly demonstrated the power and beauty of simple experiments and reiterated the fact that an enquiry based problem/issue/task is the best way to teach science. The experiment demonstrated the rate at which HIV virus may spread within a community.
In this experiment, all students mixed the liquid in their test tubes, except one student, with at least 4 other students by pouring the solution back and forth. The liquid mimicked their body fluids (semen, vaginal fluids, blood, breast milk, or even residual liquids in used needles).
At the end of the experiment, a reagent (weak acid) was dropped into the solution;
• If the solution turned "pink", that demonstrated that the student is infected!
• The intensity of 'pink' color indicates the severity of infection
• If the solution stays clear, this demonstrated that the student was not infected!
A total of forty three percent high school students in class were found to be heavily infected in just 1 h. The student who did not mix his/her liquid was the only one who was uninfected. The results were eye opener and initiated a plethora of questions. The students were motivated and comments like "it was very fun and eye opening to make sure we know what our sexual partner(s) have", "I felt somewhat good because I felt like I was a real scientist and I am glad that I turned out with no AIDS", "I am glad that I am not most infected! I was scared for a second" were encouraging and indicated the importance of hands-on activities in students' learning and specifically understanding about HIV infection.
The project was a huge success for both high school and college students. They were involved in learning different aspects about this deadly virus. They were able to learn how HIV virus initiates the infection at the cellular level (mechanism) and saw clearly how the infection get spread so quickly in the class room with varying intensity except the one who did not mix his/her liquid (body fluids) with any one. The benefits for my students' (college) were multifaceted, they learned not only the course material but also to work in a team and apply the information to real-world problems.
The following comments were encouraging and a testimony of a successful project:
"Throughout this project, I have learned how to diligently work in groups and deal with unexpected problems. I especially learned how to professionally and courteously deal with frustrating situations. I am very grateful for the service-learning experience because it gave me an opportunity to learn skills and manners I can apply to my personal life and in the real world"
"While preparing this assignment I retained so much information that I did not know about viruses".
"My knowledge of kingdom fungi drastically improved after researching for our project. Knowing enough to pass a test is far different than knowing enough to teach a class. I have a new appreciation for teachers. It is hard to make subjects interesting".
"My goal was to change at least one student's views about disease and transmission. If I could reach one student, then our job as service learning instructors would be successful".
"In the beginning of this group service learning assignment, my group was not really all together. In fact it took us a while to actually get on the same page".
"A young man truly believed that AIDS was acne, and this was extremely alarming".
"Throughout this project, I have learned how to diligently work in groups and deal with unexpected problems. I especially learned how to professionally and courteously deal with frustrating situations. I am very grateful for the service-learning experience because it gave me an opportunity to learn skills and manners I can apply to my personal life and in the real world"
"While preparing this assignment I retained so much information that I did not know about viruses".
"My knowledge of kingdom fungi drastically improved after researching for our project. Knowing enough to pass a test is far different than knowing enough to teach a class. I have a new appreciation for teachers. It is hard to make subjects interesting".
"My goal was to change at least one student's views about disease and transmission. If I could reach one student, then our job as service learning instructors would be successful".
"In the beginning of this group service learning assignment, my group was not really all together. In fact it took us a while to actually get on the same page".
"A young man truly believed that AIDS was acne, and this was extremely alarming".
I am certain that this project helped my students increase their knowledge and retain the course material. Teaching what students learn is a great way to give back to the community. The project kept college as well as high school students actively engaged. College students wanted to be exceedingly prepared for any questions and high school were trying to ask as many questions as they can think. The type and number of questions asked by the high school demonstrated that the students were trying to really understand the biology of the virus, learn how it spreads and hopefully the different 'myths' they had about AIDS, got clarified in their minds! I sincerely hope that this is life-long learning experience that will help them in making sensible decisions in future.
I would like to express my sincere thanks to Boys and Girls Club of Greater Baton Rouge, Louisiana for partnering with OLOL college and support. I also would like to thank Dr. Reddix, Director OLOL college office of service learning for providing support and valuable insights leading to the successful completion of this project. I would like to extend my thanks to Dr. Phyllis Simpson for her constructive recommendations on this community service project.


text:
Flash Contact Mgmt
Orçamento $100-300 USD
I need a web based contact management system with database backend. Flash front end with PHP to hit the database.
Database with tables for first name, last name, category, 2 address lines, city, state, zip, and phone number. Must have ability to list all contacts, add, delete, modify contacts and import and export them via .csv
And have the ability to email all or portion of the contacts.
Feedback and suggestions appreciated. Source code must be included with finished product.
24 freelancers estão ofertando em média $254 para esse trabalho
Hello Sir, I read your project specs and would like to assure you that we can do this job in the earnest. We are CZONE Technologies, a growing web development company from New Delhi, [login to view URL] have made flash presentat Mais
Hello I can Provide this Service tou you. If you want to cooperate with a true developer, please give me a sign. Please Contact me on PMB. Thank you.
Please view your PM for detail. Thank you. EncodedArt Inc.
Our bid is for really very high quality work for your Flash Contact Mgmt that will be made to be upgradable in case you need some upgrades in future. We will always be available for upgrades. Our bid includes six week Mais
Hi, This is pretty interesting and we are best for it. Raisul
Hi, We can do this.. We have done this in JSP at [login to view URL] This whole site is controlled by the admin panel, the contents, graphics, flash.... We can do this in PHP too.. But your bu Mais
Hi, I have done this before, please see pmb for more details. Thanks.
Hi, please pm me and tell me details about your project
Please see PMB and let us start a new business relation.
Hi, I have over 5 years experience in the same industry..For details please see PMB..thanks
at most 14 days, but you'll certainly get it sooner

subset: commoncrawl


text:
I didn't stick with it, being fairly involved with a number of other creative endeavours (and, of course, having my nose permanently stuck in a book, which made doing anything else pretty difficult). In fact, I wouldn't pick it up again until the summer of 2000, when I started to work at the Historic Site Which Shall Not Be Named. For the first time in my life, a wholly Protestant work ethic asserted itself: I could not stand to be on site without something to do with my hands. I borrowed an Opinel knife, grabbed some kindling, and carved my own cedar knitting needles. (In case you were wondering, cedar is a singularly poor material to make knitting needles out of, as it is so soft that it breaks without much encouragement.) I sort of remembered how to knit from my grandmother's lessons, so I got someone else to cast on for me, and away I went. Even then, I didn't do much with it when I wasn't at work.
Three years after this, I asked Middle Sister what she wanted for Christmas, and she asked me to buy her a knitting book for beginners. As soon as I saw the cover for Stitch'n'Bitch, which has just been published, I knew it was exactly what she was looking for...what I didn't know is that it was what I was looking for, too. I began to knit more frequently, and to choose projects that were actual projects, and not just scarves. I realized quickly that all of the time I had spent knitting in the seventeenth century had led to a lot of creating my own stitches and ways for doing things: I had even figured out a way of purling backwards so that I didn't have to turn my knitting at the end of the row--I would just work back across it. Following patterns meant having to un-learn some of the things I had taught myself, because it made following patterns very difficult. I also wrap the wrong way, which meant that for the first few years that I knit, all of my stitches were twisted. (Rather than changing my wraps, I eventually figured out a way to accomodate for this; it's one of the reasons why my gauge is generally looser than the norm.) When I moved to Guelph to do my MA, I was faced with the reality of living alone in a city where I knew no one and nothing, and knitting became a solace from some of that loneliness. (It also eventually led to some friendships with the other people in my program--there were a lot of knitters that year.)
Knitting means something different to me now than it did back then, but that's the story of how I became a knitter.
*My mother also knits: she went through a fair isle sweater phase that outfitted us three girls, our cousins, and various friends of the family in beautiful pastel sweaters. However, she never really tried to get any of us to knit, perhaps because she is a leftie and all of us girls are right handed.


text:
One of the biggest mental shifts that I've had to make over the years as I think about computers--which I do a lot--is learning how to think about networks. Way back in the day--and I mean waaaay back in the day--my law firm put a box on my desk (it was a 286! w00t!), connected it to a network, and that was it. It ran or it didn't, and no one ever explained why to me. This was a big firm.
Twenty-one years later, my main business machine is a laptop (my beloved Thinkpad T61, still a classic) that travels largely between the wired network at my office over which I have some control, and a wireless network at my house over which I have complete control. It also trundles around from time to time to hook up with public networks from SeaTac to Aruba and parts in between (I'm particularly fond of the wireless network at the Satellite Cafe in Albuquerque, New Mexico).
I've always been able to make the laptop's connections work. But. In doing a little end-of-the-month maintenance on my system this morning, I focused for the first time that I have the following software running simultaneously on my Thinkpad:
(1) The Windows Vista Network and Sharing Center (part of the OS AFAICT);
(2) Lenovo's Access Connections (which has always worked really well); and
(3) Network Magic, which I used to set up my Rube Goldberg system at home that links a Win XP Home machine, a Windows 7 beta machine, a Windows 2000 machine, an XBox 360, a Zune, and, from time to time, my laptop (Vista Business SP 2 beta RC).
Now, I still know next-to-nothing about networks. How is it that I have been able to persuade these three pieces of software to peacefully coexist (and to split infinitives)? Is it time for dialectical bootstrapping?
I'm holding my breath.
holding my breath
Posted by the goddess at 10:23:00 AM
No comments:
Subscribe to: Post Comments (Atom)


text:
|Game Haven Lodge
|Region: South
|Low Price: US$58
|High Price: US$105
|Price Basis: B&B, pppn
|No of Rooms: 25
|Tel: +265 (0)99997 1287
|Fax: +265 (0)1 712 417
|Website: visit now
This serene, beautiful 500 acre game park and lodge is set in one of the last remaining indigenous forests and grasslands of the Shire Highlands of Southern Malawi approximately 20km from Blantyre on Chimwenya Game Park, Bvumbwe.
Two conference halls in this quiet environment provides the ideal venue.
Enjoy international cuisine at the Ambrosia restaurant, relax at the picturesque swimming pool or fishing and braaing on the lawns of Lake Bvumbwe. Mwana Park will open shortly, a children's playground.


text:
International Clothing Retailer Transforms Changing Rooms To 'Gender Neutral' Following 'Transgender' Complaint
Nov 13, 2017 | 0 |
Concerns are being raised as an international clothing retailer has confirmed that its changing rooms are to be considered "gender neutral" following a controversial incident in one of its U.K. stores. Travis Alabanza, a man who identifies as a female and uses the pronoun "they" to describe himself, was recently shopping with friends at a Topshop store in Manchester when he attempted to enter a women's
changing room. However, he was stopped by an attendant, who told him that he would have to use a men's changing room. "She wasn't rude, but she wasn't sympathetic either," Alabanza stated. When the store employee directed Alabanza to try on his clothes in a men's changing room downstairs, he became upset and frustrated


text:
- Aubrey Sutton
- 3 years ago
- Views:
1 A TLA Solution to the RPC-Memory Specication Problem Martn Abadi 1, Leslie Lamport 1, and Stephan Merz 2 1 Systems Research Center, Digital Equipment Corporation 2 Institut fur Informatik, Technische Universitat Munchen Abstract. We present a complete solution to the Broy-Lamport speci- cation problem. Our specications are written in TLA +, a formal language based on TLA. We give the high levels of structured proofs and sketch the lower levels, which will appear in full elsewhere. Table of Contents Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2 1 The Procedure Interface : : : : : : : : : : : : : : : : : : : : : : : The Module and its Parameters State Functions, State Predicates, and Actions Temporal Formulas A Memory Component : : : : : : : : : : : : : : : : : : : : : : : : The Parameters The Memory Specication Solution to Problem Implementing the Memory : : : : : : : : : : : : : : : : : : : : : : The RPC Component The Parameters Module Problem 2: The RPC Component's Specication The Implementation The Memory Clerk The Implementation Proof Implementing the RPC Component : : : : : : : : : : : : : : : : A Lossy RPC The RPC Implementation The RPC Clerk The Implementation Proof References : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 44 Index : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 46
2 Introduction Broy and Lamport have proposed a specication and verication problem [5]. It calls for specifying simple memory and RPC (remote procedure call) components, and proving the correctness of two simple implementations. We present a complete solution to this problem using TLA, the temporal logic of actions [12]. We assume the reader is familiar with Broy and Lamport's problem statement. Since the problem is so much simpler than the ones encountered in real applications, any approach that claims to be both practical and formal should allow a completely formal solution. Our specications are written in TLA +, a formal language based on TLA. Our proofs are completely formal, except that some names are abbreviated for readability. We use a hierarchical proof method [10] that is the most reliable way weknow of to write hand proofs. Here, we present only the higher levels of the proofs. Proofs carried down to the level where each justication involves instantiation of proof rules and simple predicate logic will be available on aweb page [4]. Although our proofs are careful and detailed, neither they nor the specications have been checked mechanically minor errors undoubtedly remain. Rigor entails a certain degree of tedium. A complete programming language requires boring details like variable declarations that can be omitted in informal pseudo-code. Writing specications is harder with a formal language than with an informal approach even one based on a formalism. Formal proofs that are detailed enough to be easy to check are long and boring. However, rigor has its advantages. Informal specications can be ambiguous. The short, interesting proofs favored by mathematicians are notoriously error prone. Our specications and proofs are rigorous, hence somewhat laborious. We assume no prior knowledge of TLA or TLA +. Concepts and notations are explained as they are introduced the index on page 46 can help the reader nd those explanations. TLA is described in detail in [12], and there are several published examples of TLA + specications [11, 14]. Further information about TLA and TLA + can be found on the Web [9]. The problem is not very challenging for TLA, TLA +, or our proof style. With our experience, it was possible to grind out the requisite specications and proofs without much thought. More dicult was choosing from among the many possible ways of writing the specications. We tried to make the specications as clear as possible without unduly complicating the correctness proofs. We beneted from studying the many preliminary solutions presented at a Dagstuhl workshop on the specication problem. In particular, we emulated some of these solutions by writing our specications as the composition of individual process specications. We also beneted from comments by Ketil Stlen. We found no signicant ambiguities in the problem statement, perhaps because we had rst-hand knowledge of the authors' intent. However, we did discover some anomalies in the lossy-rpc specication, which we discuss in Section 4. Our presentation parallels Broy and Lamport's problem statement. In particular, our section numbering corresponds to theirs, with the addition of lower-level sections.
3 1 The Procedure Interface A TLA specication is a temporal-logic formula. It expresses a predicate on behaviors, where a behavior is an innite sequence of states and astateis an assignment ofvalues to variables. TLA + is a formal language for writing TLA specications. It introduces precise conventions for denitions and a module system with name scoping that is modeled after those of programming languages. In this paper, we describe TLA and TLA + as they are used. TLA does not have any built-in communication primitives such as message passing or data streams. One can use TLA to dene such primitives. 3 We begin by specifying a procedure-calling interface in which a multiprocess caller component interacts with a multiprocess returner component. In this section, we present a module named ProcedureInterface that is meant to help specify systems that use the procedure-calling interface. As we explain below, a system may have several such interfaces, described by dierent \copies" of the module. We describe a rather arbitrary, abstract procedure-calling interface. One might want a specication that describes an actual procedure-calling software standard, complete with register-usage conventions. One might also want a different high-level abstraction. We can convert our specications into ones with a dierent interface abstraction by using an interface renement, as described in [3, page 518] and [7]. Our specication makes precise one important detail that is not quite stated in the informal specication. We interpret the requirement: [A]fter one process issues a call, other processes can issue calls to the same component before the component issues a return from the rst call. to imply that the same process cannot issue another call until the rst one returns. 1.1 The Module and its Parameters Module ProcedureInterface is given in Figure 1 on the next page. The module rst declares some parameters, which are the free symbols that may appear in the expressions dened by the module. By replacing dened symbols with their denitions, all expressions dened in the module can be reduced to ones containing only the parameters and the primitives of TLA +. The parameter ch is the variable representing the interface. A variable parameter can have a dierent value in dierent states of a behavior. TLA is an untyped logic, so there are no type constraints on the values a variable can have. A constant parameter is one that has the same value in every state of a behavior. The 3 Like most logics, TLA uses variables. One could therefore say that TLA formulas use shared variables as a communication primitive. In the same sense, one could say that the equations x + y = 7 and x ; y =1communicate via the shared variables x and y.
4 parameters PrIds Args : constant ch : variable caller(p) = hch[p]:arg ch[p]:cbit i rtrner(p) = hch[p]:res ch[p]:rbit i Calling(p) = ch[p]:cbit 6= ch[p]:rbit module ProcedureInterface Call(p v) = ^:Calling(p) ^ ch[p]:cbit 0 6= ch[p]:rbit ^ ch[p]:arg 0 = v Return(p v) = ^ Calling(p) ^ ch[p]:rbit 0 = ch[p]:cbit ^ ch[p]:res 0 = v LegalCaller = 8 p 2 PrIds : :Calling(p) ^ 2[9 a 2 Args : Call(p a)] caller(p) LegalReturner = 8 p 2 PrIds : 2[9 v : Return(p v)] rtrner(p) Fig. 1. Module ProcedureInterface. constant parameter PrIds is the set of all process identiers for each p in PrIds, process p of the caller component issues calls to the corresponding process p of the returner component. The parameter Args is the set of all \syntactically correct" procedure arguments. Suppose some module M has a set P of process identiers and two procedurecalling interfaces, represented by the variables x and y, with syntactically correct argument values in sets S x and S y, respectively. Module M will include all the denitions from module ProcedureInterface twice, with the following substitutions for its parameters: ch x PrIds P Args S x ch y PrIds P Args S y It is conventional to follow the parameter declarations with a horizontal bar. These bars have no semantic signicance. 1.2 State Functions, State Predicates, and Actions To model the procedure-calling interface, we let ch[p] be a\channel" over which process p of the caller componentinteracts with process p of the returner component. Our model uses a standard two-phase handshake protocol [16] illustrated in Figure 2 on the next page. Channel ch[p] contains two \wires" controlled by the caller a signaling wire ch[p]:cbit and an argument-passing wire ch[p]:arg and
5 initial state call Read(23) return :333 call Write(14 3:5) ch[p]:cbit: ch[p]:arg: ; h\read" 23i h\read" 23i h\write" 14 3:5i... ch[p]:rbit: ch[p]:res: ; ; :333 : Fig. 2. The two-phase handshake protocol for the channel ch[p]. two wires controlled by the returner a signaling wire ch[p]:rbit and a resultreturning wire ch[p]:res. In the standard two-phase handshake protocol shown in Figure 2, the signaling values ch[p]:cbit and ch[p]:rbit are bits. For simplicity, we allow them to assume arbitrary values, since all that matters is whether or not they equal one another. The ProcedureInterface module denes the state function caller(p) to be the pair hch[p]:arg ch[p]:cbit i composed of the process p caller's wires. A state function is an expression that may contain variables and constants. It is interpreted semantically as a mapping from states to values. For example, ch[p]:arg is the state function that assigns to any state the arg record component of the pth array element of the value that the state assigns to the variable ch. 4 The state function rtrner(p) is similarly dened to be the pair composed of the returner's wires. The module denes the state predicate Calling(p) to equal true i (if and only if) the values on the two signaling wires are unequal. A state predicate is a boolean-valued expression that may contain variables and constants it is interpreted semantically as a mapping from states to booleans. For the handshake protocol, Calling(p) equals true i process p is in the middle of a procedure call (the caller has issued a call and the returner has not yet returned). Next comes the denition of the action Call(p v). An action is a booleanvalued expression that may contain variables and constants, and the operator 0 (prime), which may not be nested. Semantically, it is interpreted as a booleanvalued function on steps, where a step is a pair of states. Unprimed expressions refer to the rst (old) state, and primed expressions refer to the second (new) state. For example, the action (x +1) 0 = y is true of a step i 1 plus the value assigned to x by the new state equals the value assigned to y by the old state. Action Call(p v) describes the issuing of a call with argument v by the process p caller. More precisely, a step represents this event iitisacall(p v) step (one for which Call(p v) equals true). The rst conjunct 5 in the denition asserts 4 This value is unspecied if the value assigned to ch by the state is not an array whose pth element is a record with an arg component. 5 We let a list of formulas bulleted with ^ or _ denote the conjunction or disjunction of the formulas, using indentation to eliminate parentheses. We also let ) have lower precedence than the other Boolean operators.
6 that a call on channel ch[p] is not in progress. The second conjunct asserts that the new value of ch[p]:cbit is dierent from the old value of ch[p]:rbit. The nal conjunct asserts that the new value of ch[p]:arg equals v. Readers familiar with conventional programming languages or state-transition systems can think of Call(p v) as an atomic statement or transition that is enabled when :Calling(p v) is true, that nondeterministically sets ch[p]:rbit to anyvalue dierent from ch[p]:cbit, and that sets ch[p]:arg to v. Action Return(p v) represents the issuing of a return with result v by the process p returner. We do not distinguish in the interface description between normal and exceptional returns the distinction will be encoded in the result v. 1.3 Temporal Formulas Module ProcedureInterface concludes by dening the two temporal formulas LegalCaller and LegalReturner. Formula LegalCaller is dened in terms of formulas of the form I ^ 2[N ] v where I is a state predicate, N is an action (called the next-state action), and v is a state function. A temporal formula is true or false on a behavior (an innite sequence of states). Viewed as a temporal formula, a predicate I is true on a behavior i I is true in the rst state. The formula 2[N ] v is true of a behavior i the action [N ] v, which is dened to equal N _ (v 0 = v), is true for every step (successive pair of states) in the behavior. Thus, I ^ 2[N ] v asserts of a behavior that I is true in the rst state and every step is an N step or leaves the value of v unchanged. Formula LegalCaller therefore asserts that, for every p in PrIds: { The predicate :Calling(p) is true in the initial state. In other words, initially there is no call in progress on channel ch[p]. { Every step is either a Call(p a) step, for some a in Args, or else leaves caller(p) unchanged. In other words, every step that changes the caller's part of the interface ch[p] isacall(p a) step with a legal argument a. Formula LegalCaller species what it means for a caller to obey the two-phase handshake protocol. It species the values of caller(p), for p in PrIds. More precisely, LegalCaller is a temporal formula whose semantic meaning is a predicate on behaviors that depends only on the values assigned by the states of a behavior to the state functions caller(p) and ch[p]:rbit. We interpret it as describing the possible values of caller(p) as a function of the values of ch[p]:rbit. Since we consider caller(p) to represent the part of an interface controlled by the caller component, we consider LegalCaller to be the specication of a caller. However, the reader should not confuse this intuitive interpretation of LegalCaller with its formal semantics as a predicate on behaviors. Formula LegalReturner is similar to LegalCaller. It asserts that, for every process p, every change to the returner's part of the interface ch[p] isareturn(p v) step for some value v. It is our specication of what it means for a returner component to obey the handshake protocol. Formula LegalReturner has no initial
7 predicate because we have arbitrarily assigned the initial condition on the channel to the caller's specication. 6 Unlike LegalCaller, which requires that the arguments be elements of Args, formula LegalReturner does not place any restriction on the results returned. This asymmetry arises because the specication problem involves syntactic restrictions on arguments, but not on results. A more realistic general-purpose interface specication would include as an additional parameter the set of legal results and would dene LegalReturner to assert that results are in this set. Composing a caller component and a returner component produces a system in which the two components interact according to the protocol. In TLA, composition is conjunction [3]. A simple calculation, using predicate logic and the fact that 2 distributes over ^ and 8,shows that LegalCaller ^ LegalReturner is equivalent to 8 p 2 PrIds : ^:Calling(p) 2 ^ 26 4 _^9a 2 Args : Call(p a) ^ rtrner(p) 0 = rtrner(p) _^9v : Return(p v) ^ caller(p) 0 = caller(p) hcaller(p) rtrner(p) i This formula asserts that, for each process p, initially p is not processing a procedure call, and every step is either 7 (i) a Call(p a) step, for a legal argument a, that leaves rtrner(p) unchanged, (ii) a Return(p v) step that leaves caller(p) unchanged, or (iii) a step that leaves both caller(p) and rtrner(p) unchanged. The conjunction of the specications of the two components therefore expresses what we would expect to be the specication of the complete handshake protocol. (The conjunction represents two components communicating over the same channel because the specications have the same free variable ch.) We are using a noninterleaving representation [3], in which a single step can represent operations performed by several processes. This approach seems more convenient for this specication problem than the more traditional interleaving representation, in which each step represents an operation of at most one process. TLA is not inherently biased towards either specication style. 2 A Memory Component In this section we give two specications of the memory component described in the problem statement. In both specications, the memory component supports read and write operations. The two specications dier on whether the memory component is reliable the unreliable version can return memory-failure exceptions, while the reliable version cannot. 6 Each component's specication would have had an initial condition on its signaling wire had we constrained the values of those wires for example, by requiring signaling values to be 0 or 1. 7 For any actions A and B, ana _ B step is an A step or a B step.
8 2.1 The Parameters For expository reasons, we split the specications into two modules. The rst module, MemoryParameters, is given in Figure 3 on this page. It declares the parameters of the memory specication. The export statement is explained below. The parameters section declares the following parameters. memch This variable represents the procedure-calling interface to the memory. MemLocs, MemVals, InitVal As in the problem statement, MemLocs is a set of memory locations, MemVals is a set of values that can be stored in those locations, and InitVal is the initial value of all locations. Vals This is the set of syntactically legal argumentvalues mentioned in the problem statement. In particular, we assume that the procedure-calling mechanism allows only read and write calls with arguments in Vals. PrIds The same as for the ProcedureInterface module. The module next asserts assumption ParamAssump about the constant parameters. The assumption's rst conjunct states that MemLocs and MemVals are subsets of Vals, so every semantically legal argument is also syntactically legal. The second conjunct states that the strings \BadArg" and \MemFailure" are not elements of MemVals. These strings are used to represent the corresponding exceptions in the problem statement. For convenience, we let a successful read operation return a memory value and represent an exception by returning one of these strings. A successful write operation returns the string \OK". The third conjunct of ParamAssump asserts that InitVal is an element of MemVals, a condition implied by the problem statement. module MemoryParameters export MemoryParameters, E parameters MemLocs MemVals InitVal Vals PrIds : constant memch : variable assumption ParamAssump = ^ MemLocs [ MemVals Vals ^f\badarg" \MemFailure"g\MemVals = fg ^ InitVal 2 MemVals LegalArgs = (f\read"g Vals) [ (f\write"g Vals Vals) include ProcedureInterface as E with ch memch Args LegalArgs Fig. 3. Module MemoryParameters.
9 The module denes LegalArgs to be the set of syntactically legal arguments of procedure calls to the memory. Finally, the include statement includes a copy of the ProcedureInterface module, with each dened symbol X renamed as E:X, with memch substituted for the parameter ch, with LegalArgs substituted for the parameter Args, and with PrIds (which is a parameter of the current module) implicitly substituted for the parameter PrIds. For example, this statement includes the denitions: E:caller(p) = hmemch[p]:arg memch[p]:cbit i E:LegalCaller = 8 p 2 PrIds : ^:E:Calling(p) ^ 2[9 a 2 LegalArgs : E:Call(p a)] E :caller(p) The E in the export statement asserts that all these included denitions are exported. Exported symbols are the ones obtained by any other module that includes the MemoryParameters module. The MemoryParameters in the export statement asserts that the symbols dened in the module itself in this case, ParamAssump and LegalArgs are exported. Omitting an export statement in a module M is equivalent to adding the statement export M. 2.2 The Memory Specication The specications of the reliable and unreliable memories are contained in module Memory of Figure 4 on the next page and Figure 5 on page 11. The module begins by importing the MemoryParameters module. The import statement is equivalent to simply copying the entire Memory module its parameter declarations, assumption, and denitions into the current module. (However, imported denitions are not automatically exported.) The export statement is needed because we want to use formula E:LegalCaller in asserting the correctness of an implementation. The reader should note the distinction between import and include. Importing a module imports its denitions and parameters. Including a module includes its denitions (with renaming), but its parameters are instantiated, not included. We now explain our specication in a top-down fashion, starting with the nal denition. Our specications of the reliable and unreliable memory components are the formulas RSpec and USpec dened in Figure 5, at the end of the module. The two specications are almost identical, so we now discuss only RSpec, the reliable-memory specication. Afterwards, we explain how USpec diers from it. Formula RSpec is dened to equal 9 mem result : Inner:IRSpec.Intuitively,it asserts of a behavior that there exist assignments of values for the variables mem and result possibly assigning dierent values in each state of the behavior for which the behavior satises Inner:IRSpec. Formula 9 mem result : Inner:IRSpec asserts nothing about the actual values of the variables mem and result it is the specication obtained by \hiding" mem and result in the specication Inner:IRSpec.
10 import MemoryParameters export Memory, E parameters mem result : variable module Memory module Inner NotAResult = choose v : v =2 f\ok" \BadArg" \MemFailure"g[MemVals MInit(l) = mem[l] =InitVal PInit(p) = result[p] =NotAResult Read(p) = 9 l : ^ E:Calling(p) ^ memch[p]:arg = h\read" l i ^ result 0 [p] =if l 2 MemLocs then mem[l] else \BadArg" ^ unchanged E:rtrner(p) Write(p l) = 9 v : ^ E:Calling(p) ^ memch[p]:arg = h\write" l v i ^_^(l 2 MemLocs) ^ (v 2 MemVals) ^ mem 0 [l] =v ^ result 0 [p] =\OK" _^:((l 2 MemLocs) ^ (v 2 MemVals)) ^ result 0 [p] =\BadArg" ^ unchanged mem[l] ^ unchanged E:rtrner(p) Fail(p) = ^ E:Calling(p) ^ result 0 [p] =\MemFailure" ^ unchanged E:rtrner(p) Return(p) = ^ result[p] 6= NotAResult ^ result 0 [p] =NotAResult ^ E:Return(p result[p]) RNext(p) = Read(p) _ (9 l : Write(p l)) _ Return(p) UNext(p) = RNext(p) _ Fail(p) pvars(p) RPSpec(p) = he:rtrner(p) result[p]i = ^ PInit(p) ^ 2[RNext(p)] pvars(p) ^ WF pvars(p) (RNext(p)) ^ WF pvars(p) (Return(p)) Fig. 4. First part of module Memory.
11 UPSpec(p) MSpec(l) IRSpec IUSpec = ^ PInit(p) ^ 2[UNext(p)] pvars(p) ^ WF pvars(p) (RNext(p)) ^ WF pvars(p) (Return(p)) = MInit(l) ^ 2[9 p 2 PrIds : Write(p l)] mem[l] = (8 p 2 PrIds : RPSpec(p)) ^ (8 l 2 MemLocs : MSpec(l)) = (8 p 2 PrIds : UPSpec(p)) ^ (8 l 2 MemLocs : MSpec(l)) RSpec USpec = 9 mem result : Inner:IRSpec = 9 mem result : Inner:IUSpec Fig. 5. Second part of module Memory. Since mem and result are not free variables of the specication, they should not be parameters of module Memory. We therefore introduce a submodule named Inner having these variables as its parameters. 8 The symbol IRSpec de- ned in submodule Inner is named Inner:IRSpec when used outside the submodule. The symbol Inner:IRSpec can appear only in a context in which mem and result are declared for example, in the scope of the quantier 9 mem result. The bound variable mem represents the current contents of memory mem[l] equals the contents of memory location l. The bound variable result records the activity of the memory component processes. For each process p, result[p] initially equals NotAResult, which is a value dierent from any that a procedure call can return. 9 When process p is ready to return a result, that result is result[p]. (Even though it is ready to return, the process can \change its mind" and choose a dierent result before actually returning.) Formula IRSpec is the conjunction of two formulas, which describe two components that constitute the memory component. The rst component is responsible for communicating on the channel memch and managing the variable result the second component manages the variable mem. The second conjunct is itself the conjunction 10 of formulas MSpec(l), for each memory location l. We view MSpec(l) as the specication of a separate process that manages mem[l]. Formula MSpec(l) has the familiar form I ^ 2[N ] v. It asserts that MInit(l) holds in the initial state, and that every step is either a Write(p l) step for some process p, or else leaves mem[l] unchanged. The initial 8 Instead of introducing a submodule, we could have made mem and result explicit parameters of all the denitions in which they now occur free. 9 The denition of NotAResult in submodule Inner uses the operator choose, which is the TLA + name for Hilbert's " [15]. We can dene NotAResult in this way because the axioms of set theory imply that, for every set S, there exists a value not in S. 10 Informally, we often think of 8 x 2 S : F (x) as the conjunction of the formulas F (x) for all x in S.
12 Read(p) _9l : Write(p l) - result[p] = NotAResult Read(p) _ 9 l : Write(p l) Y Return(p) U result[p] 6= NotAResult j Fig. 6. A predicate-action diagram of pvars(p) for formula RPSpec(p) of the Memory module. predicate MInit(l) asserts that mem[l] equals InitVal, the initial memory value. Action Write(p l), which we discuss below, is enabled only when the memory component is processing a procedure call by process p to write some value v to location l awrite(p l) step sets the new value of mem[l] to this v. The rst conjunct of IRSpec is the conjunction of formulas RPSpec(p) for each process p in PrIds. We view RPSpec(p) as the specication of a process that manages the returner's part of the channel memch[p] and the variable result[p]. Formula RPSpec(p) has the form I ^ 2[N ] v ^ F. A formula 2[N ] v asserts that every step that changes v is an N step, but it does not require any such steps to occur. It allows a behavior in which v never changes. We require that certain changes do occur by conjoining an additional condition F, which constrains what must eventually happen but does not disallow any individual step. We call I ^2[N ] v the safety condition of the specication and F its fairness or liveness condition. We now examine the safety condition of RPSpec(p) its fairness condition is considered below. A formula I ^ 2[N ] v describes how the state function v may change. For RPSpec(p), the subscript v is the state function pvars(p), which isdenedtobe the pair he:rtrner(p) result[p]i. Apairchanges i one of its elements changes, so RPSpec(p) describes changes to E:rtrner(p), the returner's part of the communication channel memch[p], and to result[p]. We explain RPSpec(p) with the help of the predicate-action diagram [13] of Figure 6 on this page. This diagram has the following meaning. { The small arrow indicates that initially, result[p] equals NotAResult. { When result[p] equals NotAResult, the pair pvars(p) can be changed only by aread(p) steporawrite(p l) step, for some l. Such a step sets result[p] unequal to NotAResult. { When result[p] is not equal to NotAResult, the pair pvars(p) can be changed only by a Read(p) step, some Write(p l) step, or a Return(p) step. A Read(p) or Write(p l) step leaves result[p] unequal to NotAResult, while a Return(p) step sets it to NotAResult.
13 Predicate-action diagrams are dened formally in [13] to represent TLA formulas. The assertion that Figure 6 is a diagram for RPSpec(p) means that RPSpec(p) implies the formula represented by the diagram. In general, one can draw many dierent diagrams for the same formula. Proving that a diagram is a predicate-action diagram for a specication helps conrm our understanding of the specication. The proof for Figure 6 is trivial. This diagram is actually equivalent to the safety partofrpspec(p). To complete our understanding of the safety part of RPSpec(p), we must examine what steps are allowed by the actions Read(p), Write(p l), and Return(p). Action Read(p) is enabled when E:Calling(p) is true and memch[p]:arg equals h\read" l i for some l, so the process p caller has called the read procedure with argument l and the process p returner has not yet returned a result. If l is a legal memory address, then a Read(p) step sets result[p] tomem[l] otherwise it sets result[p] to the string \BadArg". The step leaves E:rtrner unchanged. (The TLA + action unchanged v is dened to equal v 0 = v, for any state function v.) Action Write(p l) is similar. It is enabled when there is a pending request to write some value v in memory location l it sets result[p] to the appropriate result and sets mem[l] tov i the request is valid. Action Return(p) issues the return of result[p] and resets result[p] to equal NotAResult. The action is enabled i result[p] is unequal to NotAResult and action E:Return(p) is enabled, which is the case i E:Calling(p) equals true. Looking at Figure 6 again, we now see that returner process p goes through the following cycle. It waits (with result[p] equal to NotAResult) until a procedure call occurs. It then does one or more internal Read(p) or Write(p l) steps, which choose result[p]. Finally, it returns result[p] and resets result[p] to NotAResult. Allowing multiple Write(p l) steps is important because mem[l] couldbechanged between those steps by Write(q l) steps for some q dierent from p. Such Write(q l) steps are allowed by Figure 6 (and by RPSpec(p)) if they do not change pvars(p). It makes no dierence to the nal specication RSpec whether or not multiple Read(p) steps are allowed. The changes to memch are the same as if only the last one were performed, and memch is the only free variable of RSpec. Allowing multiple Read(p) steps simplies the specication a bit. This completes our explanation of the safety condition of RPSpec(p). We now consider the fairness condition. The safety condition of RPSpec(p) implies that the steps described by Figure 6 are the only ones that are allowed to happen. We want the fairness condition to assert that they must happen. In particular, we want to assert the following two requirements: (L1) after a procedure call has been issued, the transition out of the result[p] = NotAResult state eventually occurs, and (L2) the transition back to that state eventually occurs. These requirements are expressed with weak fairness formulas of the form WF v (A). Such a formula asserts that if the action A ^ (v 0 6= v) remains continually enabled, then an A ^ (v 0 6= v) step must occur. In other words, if it remains possible to take ana step that changes v, thensuchastepmust eventually be taken.
14 Condition L1 is implied by WF pvars(p) (RNext(p)). To see this, suppose that result[p] equals NotAResult and a read or write call is issued. Then Read(p) or some Write(p l) action is enabled, so RNext(p) is enabled. Assuming that the caller obeys the handshake protocol, action RNext(p) will remain enabled until a Read(p) or Write(p l) step occurs. Formula WF pvars(p) (RNext(p)) therefore implies that a RNext(p) step does occur, and that step can only be the desired Read(p) orwrite(p l) step. Formula WF pvars(p) (RNext(p)) implies that, while result[p] 6= NotAResult remains true, RNext(p) steps must keep occurring. However, those steps could be Read(p) orwrite(p l) steps. (Read(p) steps can change pvars(p) ifintervening steps by other processes keep changing mem[l].) Formula WF pvars(p) (Return(p)), the second conjunct of RPSpec(p)'s fairness condition, asserts that a Return(p) step must eventually occur when result[p] 6= NotAResult holds. There are other possible fairness conditions for RPSpec(p). Two other obvious choices are obtained by replacing WF pvars(p) (RNext(p)) with one of the following: WF pvars(p) (Read(p)) ^ WF pvars(p) (9 l : Write(p l)) WF pvars(p) (Read(p)) ^ (8 l : WF pvars(p) (Write(p l))) It is not hard to check that the conjunction of E:LegalCaller (the specication that the caller obeys the handshake protocol) and the safety condition of RPSpec(p) implies that both formulas are equivalent towf pvars(p) (RNext(p)), for any p in PrIds. We care what the memory component doesonlywhenthe caller obeys the protocol. Hence, any of these three choices of fairness conditions for RPSpec(p) yield essentially the same specication. (The three fairness conditions need not be equivalent on a behavior in which memch[p]:arg changes while the memory is processing a procedure call by process p.) Weak fairness is a standard concept of concurrency [6, 17]. The reader who is not already familiar with it may nd fairness conditions dicult to understand. Fairness can be subtle, and it is not obvious why we express it in TLA with WF formulas. For example, it might seem easier to express L1 by writing the temporal-logic formula (result[p] =NotAResult) ^ E:Calling(p) (result[p] 6= NotAResult) which asserts that if result[p] ever equals NotAResult when E:Calling(p) is true, then it must eventually become unequal to NotAResult. We have found that the use of arbitrary temporal-logic formulas makes it easy to write incorrect specications, and using WF formulas helps us avoid errors. Finally, let us consider the specication USpec of the unreliable memory component. It is identical to RSpec except it has action UNext(p) instead of RNext(p) as its next-state action. Action UNext(p) diers from RNext(p) by also allowing internal Fail(p) steps, which set result[p] to \MemFailure". Such steps can occur instead of, before, after, or between Read(p) or Write(p l) steps. We could have replaced RNext(p) withunext(p) in the fairness condition
15 LegalCaller implies that the two denitions of USpec are equivalent. However, it might seem odd to require the eventual occurrence of a step that may be a failure step. 2.3 Solution to Problem 1 (a) Formulas RSpec and USpec are what we callcomponent specications. They describe a system containing a properly operating (reliable or unreliable) memory component. Whether they constitute the specications of a memory depends on what the specications are for. Component specications can be used to describe a complete system in which all the components function properly, allowing us to prove properties of the system. The simplest such complete-system specication of a system containing a reliable memory component isrspec ^ E:LegalCaller, which asserts that the memory component behaves properly and the rest of the system follows the handshake protocol. Another possible use of a memory specication is to serve as a contract between the user of the memory and its implementor. Such a specication should be satised by precisely those behaviors that represent physical histories in which the memory fullls its obligations. Formula RSpec cannot serve as such a specication because it says nothing about the memory's environment. A real memory that uses the two-phase handshake protocol will display completely unpredictable behavior if its environment doesnot correctly follow the protocol. To be implementable, the specication must assert only that RSpec is satised if the memory's environment satises the caller's part of the handshake protocol in other words, if E:LegalCaller is satised. We might therefore expect the specication of a reliable memory to be E:LegalCaller ) RSpec. However, for reasons explained in [3], we instead write this specication as the formula E:LegalCaller ;. + RSpec. This formula means roughly that RSpec remains true as long as E:LegalCaller does. Such a formula is called an assumption/guarantee specication [8] the memory guarantees to satisfy its component-specication RSpec as long as the environment assumption E:LegalCaller is satised. When we present a component specication as a solution to one of the specication problems, we indicate its environment assumption. Writing the corresponding assumption/guarantee specication is then trivial. When we write a component specication, we think of steps satisfying the specication's next-state action as representing operations performed by that component. We could make this an explicit assumption by formally attributing every step to either the component oritsenvironment, as described in [3]. However, whether the component oritsenvironment actually performs an operation is a question of physical reality, and the connection between a mathematical specication and reality can never be made completely formal. The assumption ParamAssump about the parameters is not part of our memory component specications, since the formulas RSpec and USpec are not de- ned in terms of ParamAssump. We could weaken the specications by adding ParamAssump as an assumption and writing, for example, ParamAssump )
16 RSpec. We do not need to do so as we will see below, putting the assumption ParamAssump into the Memory module allows us to use it when proving the correctness of an implementation of the memory component. (b) In TLA, implementation is implication. To prove that a reliable memory implements an unreliable one, it suces to prove the theorem RSpec ) USpec. The proof is easy expanding the denitions shows that it suces to prove 2[RNext(p)] pvars(p) ) 2[UNext(p)] pvars(p), which is trivial since RNext(p) obviously implies UNext(p). In general, we would not expect such an implication to be valid. For example, it would not have beenvalid had we written WF pvars(p) (UNext(p)) instead of WF pvars(p) (RNext(p)) in the fairness condition of UPSpec(p). Component specications like RSpec and USpec describe how the component should behave when its environment behaves properly. They do not constrain the environment's behavior, and they may allow bizarre behaviors when the environment behaves improperly. A priori, there is no reason why the particular bizarre behaviors allowed by RSpec as the result of an incorrectly functioning environment should also be allowed by USpec. Hence, we would expect RSpec ) USpec to be true only for those behaviors satisfying the memory's environment specication, E:LegalCaller. We would therefore expect to prove only E:LegalCaller ) (RSpec ) USpec), which is equivalent to E:LegalCaller ^ RSpec ) USpec (1) We can also phrase implementation in terms of assumption/guarantee specications. Such specications are satised by precisely those behaviors in which the memory meets its obligation. We would expect the assumption/guarantee specication of the reliable memory to imply that of the unreliable memory: (E:LegalCaller + ;. RSpec) ) (E:LegalCaller + ;. USpec) (2) The relation between the two forms of implementation conditions exemplied by (1) and (2) is investigated in [3]. Because our two memory-component specications are so similar, we can prove RSpec ) USpec, which implies (1) and (2). (c) If the memory is implemented with unreliable components that can fail forever, then there is no way to guarantee that anything but \MemFailure" exceptions will ever occur. (For example, this will be the case if it is implemented with an RPC component that always returns \RPCFailure" exceptions.) We can easily dene a memory that guarantees eventual success. We do so by requiring that if enough calls of some particular kind are issued, then one of them eventually succeeds. Dierent conditions are obtained by dierent choices of the kind of calls for example, calls to a particular memory location, or reads by a particular process. Such conditions can be expressed using strong fairness formulas of the form SF v (A). This formula asserts that if A ^ (v 0 6= v) is enabled often enough, then an A ^ (v 0 6= v) step must occur. (Strong fairness is stronger than weak fairness because it requires a step to occur if the action is
17 enabled often enough, even if the action does not remain continuously enabled.) For example, to strengthen the specication to require that, if process p keeps issuing calls, then it will eventually receive a result other than \MemFailure", we simply replace the fairness condition of UPSpec(p) by: ^ SF pvars(p) (Read(p) _ (9 l : Write(p l))) ^ SF pvars(p) (Return(p) ^ (result[p] 6= \MemFailure")) To solve Problem 3 (proving the correctness of a memory implementation), we would then need to add a corresponding liveness condition to the RPC component. 3 Implementing the Memory The memory implementation is obtained by composing a memory clerk component, an RPC component, and a reliable memory component. The memory clerk translates memory calls into RPC calls, and optionally retries RPC calls when they result in RPC failures. In this section we describe the RPC and the memory clerk components, and then prove the correctness of the implementation. 3.1 The RPC Component The RPC component connects a sender to a receiver. As with the memory component, we split its specication into two modules. The Parameters Module The specication of the RPC component begins with module RPCParameters in Figure 7 on the next page the module declares parameters and both makes and includes some denitions. The RPCParameters module imports the module Naturals, a predened module that denes the natural numbers and the usual operators on them. It then imports the Sequences module, which denes operators on nite sequences. In TLA +, an n-tuple hv 1 ::: v n i is a function whose domain is the set f1 ::: ng of natural numbers, where hv 1 ::: v n i[i] equals v i,for1 i n. 11 The Sequences module represents sequences as tuples. The module appeared in [14] (without the denition of Seq, which was not needed there) and is given without further explanation in Figure 8 on the next page. It denes the usual operators Head, Tail, (concatenation), and Len (length) on sequences, as well as the operator Seq, where Seq(S) is the set of sequences of elements in S. (The values of Head(s) and Tail(s) are not constrained when s is the empty sequence.) The parameters declared in module RPCParameters have the following interpretations: 11 TLA + uses square brackets to denote function application. An \array variable" is just a variable whose value is a function.
18 module RPCParameters export RPCParameters, Snd, Rcv import Naturals, Sequences parameters sndch rcvch : variable Procs ArgNum Vals PrIds : constant assumption ParamAssump = ArgNum 2 [Procs! Nat] LegalSndArgs = f\remotecall"g string Seq(Vals) = LegalRcvArgs fs 2 Seq(Procs [ Vals) : ^ Len(s) > 0 ^ Head(s) 2 Procs ^ Tail(s) 2 Seq(Vals) ^ Len(s) =1+ArgNum[Head(s)] g include ProcedureInterface as Snd with ch sndch Args LegalSndArgs include ProcedureInterface as Rcv with ch rcvch Args LegalRcvArgs Fig. 7. Module RPCParameters. import Naturals module Sequences OneTo(n) = fi 2 Nat : (1 i) ^ (i n)g Seq(S) = union f[oneto(n)! S] : n 2 Natg Len(s) = choose n : (n 2 Nat) ^ ((Domain s) =OneTo(n)) Head(s) = s[1] Tail(s) = [i 2 OneTo(Len(s) ; 1) 7! s[i +1]] (s) (t) = [i 2 OneTo(Len(s) +Len(t)) 7! if i Len(s) then s[i] else t[i ; Len(s)] ] Fig. 8. Module Sequences.
19 sndch The procedure-calling interface between the sender and the RPC component. rcvch The procedure-calling interface between the RPC component and the receiver. Procs, ArgNum As in the problem statement, Procs is a set of legal procedure names and ArgNum is a function that assigns to each legal procedure name its number of arguments. Vals The set of all possible syntactically valid arguments. PrIds ThesameasfortheProcedureInterface module. Assumption ParamAssump asserts that ArgNum is a function with domain Procs and range a subset of the set Nat of natural numbers. (The denition of Nat comes from the Naturals module.) The module next denes LegalSndArgs to be the set of syntactically valid arguments with which the RPC component can be called. Calls to the RPC component take two arguments, the rst of which is an element of string, the set of all strings, and the second of which is a sequence of elements in Vals. We use the same convention as in the memory specication, that the argument of a procedure call is a tuple consisting of the procedure name followed by its arguments. The RPC component has a single procedure, whose name is \RemoteCall". The module denes LegalRcvArgs to be the set of syntactically valid arguments with which the RPC component can call the receiver. These consist of all tuples of the form hp v 1 ::: v n i with p in Procs, thev i in Vals, andn equal to ArgNum[p]. Finally, the module includes two copies of the ProcedureInterface module, one for each of the interfaces, with the appropriate instantiations. The export statement (at the beginning of the module) exports these included denitions. Problem 2: The RPC Component's Specication The specication of the RPC component appears in module RPC of Figure 10 on page 21. It is the formula 9 rstate : Inner:ISpec, where ISpec is dened in a submodule named Inner. We explain the specication ISpec with the aid of the diagram of Figure 9 on the next page. This is a predicate-action diagram for ISpec of all changes to vars(p), where p is any element of PrIds. The state function vars(p) is the triple hrstate[p] Snd:rtrner(p) Rcv:caller(p)i that forms the state of the RPC component's process p. The dotted arrows are not formally part of the diagram. The initial-condition arrow indicates obligations of both the RPC component and its environment the other dotted arrows represent state changes caused by the environment that do not change the RPC component's state. (Recall that :::Calling(p) can be changed by either the caller changing :::caller(p) or the returner changing :::rtrner(p).) The top dotted arrow represents the
20 - ' ^:Snd :Calling(p) & ^:Rcv :Calling(p) ^ rstate[p] =\A" ' ^ Snd :Calling(p) & ^:Rcv :Calling(p) ^ rstate[p] =\B" Reply(p) _ Fail(p) 6 $ % Y Reject(p) _ Fail(p) $ % j ' ^ Snd :Calling(p) & ^:Rcv :Calling(p) ^ rstate[p] =\A" $ % ' Forward(p) $? ^ Snd :Calling(p) & ^ Rcv :Calling(p) % ^ rstate[p] =\B" Fig. 9. A predicate-action diagram of vars(p) for formula ISpec of module RPC, where p is an element ofprids. (The dotted arrows are not formally part of the diagram.) sender's action of calling the RPC component, which makes Snd:Calling(p) true. The bottom dotted arrow represents the receiver's return action, which makes Rcv:Calling false. The solid arrows (the real arrows of the predicate-action diagram) represent steps of process p of the RPC component. The Forward(p) action relays the call to the receiver, making Rcv:Calling(p) true. The Fail(p) action returns \RPCFailure". The Reject(p) action returns \BadCall" without relaying the request. The Reply(p) action returns to the sender the result returned by the receiver. The variable rstate is needed to distinguish the upper right and lowerleft states. The values \A" and \B" are arbitrary any two values can be used. The specication Spec of the RPC component appears in module RPC of Figure 10 on the next page. It is similar enough to the memory specication that it should require little additional explanation. The denition of RelayArg makes use of the way sequences are represented as tuples, and it may seem a little obscure. When the sender's process p has called the RPC component, RelayArg(p) is the argument with which the RPC component should call the receiver. For example, if the RPC component is called with argument h\remotecall" \Write" h17 p 2ii, then RelayArg(p) equals h\write" 17 p 2i. In the denitions of the actions, we have eliminated some redundant instances of the conjuncts Snd:Calling(p) and:rcv:calling(p) that appear in the predicateaction diagram Snd:Calling(p) is implied by Snd:Return(p :::), and the diagram shows that :Rcv:Calling(p) is implied by rstate[p] =\A" in every reachable state. Formula Spec of the RPC module is the component specication of the RPC component. The component's environment specication is Snd:LegalCaller ^ Rcv:LegalReturner. As described above, the conjunction of these two formulas
Verication by Finitary Abstraction Weizmann Institute of Sciences and Universite Joseph Fourier, Grenoble Fourth International Spin Workshop (SPIN'98) Paris 2.11.98 Joint work with: Y. Kesten Ben GurionMore information
Summation Algebra. x i
2 Summation Algebra In the next 3 chapters, we deal with the very basic results in summation algebra, descriptive statistics, and matrix algebra that are prerequisites for the study of SEM theory. YouMore information
Mathematics for Computer Science/Software Engineering. Notes for the course MSM1F3 Dr. R. A. Wilson
Mathematics for Computer Science/Software Engineering Notes for the course MSM1F3 Dr. R. A. Wilson October 1996 Chapter 1 Logic Lecture no. 1. We introduce the concept of a proposition, which is a statementMore information
2. Methods of Proof Types of Proofs. Suppose we wish to prove an implication p q. Here are some strategies we have available to try.
2. METHODS OF PROOF 69 2. Methods of Proof 2.1. Types of Proofs. Suppose we wish to prove an implication p q. Here are some strategies we have available to try. Trivial Proof: If we know q is true thenMore information
Higher-Order Logic. Specification and Verification with Higher-Order Logic
Higher-Order Logic Specification and Verification with Higher-Order Logic Arnd Poetzsch-Heffter Software Technology Group Fachbereich Informatik Technische Universität Kaiserslautern Sommersemester 2010More information
(Refer Slide Time: 1:41)
Discrete Mathematical Structures Dr. Kamala Krithivasan Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture # 10 Sets Today we shall learn about sets. You mustMore information
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommendedMore information
CBV Semantics (Draft) Navit Fedida, John Havlicek, Nissan Levi, and Hillel Miller Motorola, Inc. 7700 W. Parmer Lane Austin, TX 78729 13 January 2002 Abstract A precise denition is given of the semanticsMore information
Reading 13 : Finite State Automata and Regular Expressions
CS/Math 24: Introduction to Discrete Mathematics Fall 25 Reading 3 : Finite State Automata and Regular Expressions Instructors: Beck Hasti, Gautam Prakriya In this reading we study a mathematical modelMore information
A simple algorithm with no simple verication
A simple algorithm with no simple verication Laszlo Csirmaz Central European University Abstract The correctness of a simple sorting algorithm is resented, which algorithm is \evidently wrong" at the rstMore information
WUCT121. Discrete Mathematics. Logic
WUCT121 Discrete Mathematics Logic 1. Logic 2. Predicate Logic 3. Proofs 4. Set Theory 5. Relations and Functions WUCT121 Logic 1 Section 1. Logic 1.1. Introduction. In developing a mathematical theory,More information
The Generalized Railroad Crossing: A Case Study in Formal. Abstract
The Generalized Railroad Crossing: A Case Study in Formal Verication of Real-Time Systems Constance Heitmeyer Nancy Lynch y Abstract A new solution to the Generalized Railroad Crossing problem, based onMore information
Predicate Calculus. There are certain arguments that seem to be perfectly logical, yet they cannot be expressed by using propositional calculus.
Predicate Calculus (Alternative names: predicate logic, first order logic, elementary logic, restricted predicate calculus, restricted functional calculus, relational calculus, theory of quantification,More information
Sets and functions. {x R : x > 0}.
Sets and functions 1 Sets The language of sets and functions pervades mathematics, and most of the important operations in mathematics turn out to be functions or to be expressible in terms of functions.More information
Mathematics for Economics (Part I) Note 5: Convex Sets and Concave Functions
Natalia Lazzati Mathematics for Economics (Part I) Note 5: Convex Sets and Concave Functions Note 5 is based on Madden (1986, Ch. 1, 2, 4 and 7) and Simon and Blume (1994, Ch. 13 and 21). Concave functionsMore information
Logic, Sets, and Proofs
Logic, Sets, and Proofs David A. Cox and Catherine C. McGeoch Amherst College 1 Logic Logical Statements. A logical statement is a mathematical statement that is either true or false. Here we denote logicalMore information
DISCRETE MATHEMATICS W W L CHEN c W W L Chen, 1982, 2008. This chapter originates from material used by the author at Imperial College, University of London, between 1981 and 1990. It is available freeMore information
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematicalMore information
Chapter 1. Logic and Proof
Chapter 1. Logic and Proof 1.1 Remark: A little over 100 years ago, it was found that some mathematical proofs contained paradoxes, and these paradoxes could be used to prove statements that were knownMore information
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay Lecture - 17 Shannon-Fano-Elias Coding and Introduction to Arithmetic CodingMore information
CHAPTER 3 Numbers and Numeral Systems
CHAPTER 3 Numbers and Numeral Systems Numbers play an important role in almost all areas of mathematics, not least in calculus. Virtually all calculus books contain a thorough description of the natural,More information
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimesMore information
Automata and Languages
Automata and Languages Computational Models: An idealized mathematical model of a computer. A computational model may be accurate in some ways but not in others. We shall be defining increasingly powerfulMore information
Valid formulas, games and network protocols
Valid formulas, games and network protocols Jean-Louis Krivine & Yves Legrandgérard Paris VII University, CNRS November 14, 2007 Introduction We describe a remarkable relation between a fundamental notionMore information
Formal Languages and Automata Theory - Regular Expressions and Finite Automata -
Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich MarchMore information
NASA Technical Memorandum 108991 (Revised) An Elementary Tutorial on Formal. Specication and Verication. Using PVS 2. Ricky W.
NASA Technical Memorandum 108991 (Revised) An Elementary Tutorial on Formal Specication and Verication Using PVS 2 Ricky W. Butler September 1993 (revised June 1995) NASA National Aeronautics and SpaceMore information
Chapter II. Controlling Cars on a Bridge
Chapter II. Controlling Cars on a Bridge 1 Introduction The intent of this chapter is to introduce a complete example of a small system development. During this development, you will be made aware of theMore information
Applications of Methods of Proof
CHAPTER 4 Applications of Methods of Proof 1. Set Operations 1.1. Set Operations. The set-theoretic operations, intersection, union, and complementation, defined in Chapter 1.1 Introduction to Sets areMore information
Linear Codes. Chapter 3. 3.1 Basics
Chapter 3 Linear Codes In order to define codes that we can encode and decode efficiently, we add more structure to the codespace. We shall be mainly interested in linear codes. A linear code of lengthMore information
CHAPTER 3. Methods of Proofs. 1. Logical Arguments and Formal Proofs
CHAPTER 3 Methods of Proofs 1. Logical Arguments and Formal Proofs 1.1. Basic Terminology. An axiom is a statement that is given to be true. A rule of inference is a logical rule that is used to deduceMore information
This chapter is all about cardinality of sets. At first this looks like a
CHAPTER Cardinality of Sets This chapter is all about cardinality of sets At first this looks like a very simple concept To find the cardinality of a set, just count its elements If A = { a, b, c, d },More information
The Foundations: Logic and Proofs. Chapter 1, Part III: Proofs
The Foundations: Logic and Proofs Chapter 1, Part III: Proofs Rules of Inference Section 1.6 Section Summary Valid Arguments Inference Rules for Propositional Logic Using Rules of Inference to Build ArgumentsMore information
Introduction to mathematical arguments
Introduction to mathematical arguments (background handout for courses requiring proofs) by Michael Hutchings A mathematical proof is an argument which convinces other people that something is true. MathMore information
Mathematical Induction
Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) HowMore information
MAT2400 Analysis I. A brief introduction to proofs, sets, and functions
MAT2400 Analysis I A brief introduction to proofs, sets, and functions In Analysis I there is a lot of manipulations with sets and functions. It is probably also the first course where you have to takeMore information
3. Recurrence Recursive Definitions. To construct a recursively defined function:
3. RECURRENCE 10 3. Recurrence 3.1. Recursive Definitions. To construct a recursively defined function: 1. Initial Condition(s) (or basis): Prescribe initial value(s) of the function.. Recursion: Use aMore information
Predicate Logic Review
Predicate Logic Review UC Berkeley, Philosophy 142, Spring 2016 John MacFarlane 1 Grammar A term is an individual constant or a variable. An individual constant is a lowercase letter from the beginningMore information
Chapter 1: Key Concepts of Programming and Software Engineering
Chapter 1: Key Concepts of Programming and Software Engineering Software Engineering Coding without a solution design increases debugging time - known fact! A team of programmers for a large software developmentMore information
Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2
CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2 Proofs Intuitively, the concept of proof should already be familiar We all like to assert things, and few of usMore information
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope youMore information
Document Production: Visual or Logical?
Document Production: Visual or Logical? Leslie Lamport 24 February 1987 The Choice Document production systems convert the user s input his keystrokes and mouse clicks into a printed document. There areMore information
Chapter 6 Finite sets and infinite sets. Copyright 2013, 2005, 2001 Pearson Education, Inc. Section 3.1, Slide 1
Chapter 6 Finite sets and infinite sets Copyright 013, 005, 001 Pearson Education, Inc. Section 3.1, Slide 1 Section 6. PROPERTIES OF THE NATURE NUMBERS 013 Pearson Education, Inc.1 Slide Recall that denotesMore information
Revised Version of Chapter 23. We learned long ago how to solve linear congruences. ax c (mod m)
Chapter 23 Squares Modulo p Revised Version of Chapter 23 We learned long ago how to solve linear congruences ax c (mod m) (see Chapter 8). It s now time to take the plunge and move on to quadratic equations.More information
Chapter 1 LOGIC AND PROOF
Chapter 1 LOGIC AND PROOF To be able to understand mathematics and mathematical arguments, it is necessary to have a solid understanding of logic and the way in which known facts can be combined to proveMore information
MATH 55: HOMEWORK # SOLUTIONS ERIC PETERSON * 1. SECTION 1.5: NESTED QUANTIFIERS 1.1. Problem 1.5.8. Determine the truth value of each of these statements if the domain of each variable consists of allMore information
Database design theory, Part I
Database design theory, Part I Functional dependencies Introduction As we saw in the last segment, designing a good database is a non trivial matter. The E/R model gives a useful rapid prototyping tool,More information
COLORED GRAPHS AND THEIR PROPERTIES BEN STEVENS 1. Introduction This paper is concerned with the upper bound on the chromatic number for graphs of maximum vertex degree under three different sets of coloringMore information
A Systematic Approach. to Parallel Program Verication. Tadao TAKAOKA. Department of Computer Science. Ibaraki University. Hitachi, Ibaraki 316, JAPAN
A Systematic Approach to Parallel Program Verication Tadao TAKAOKA Department of Computer Science Ibaraki University Hitachi, Ibaraki 316, JAPAN E-mail: firstname.lastname@example.com Phone: +81 94 38 5130More information
Introduction to Proofs
Chapter 1 Introduction to Proofs 1.1 Preview of Proof This section previews many of the key ideas of proof and cites [in brackets] the sections where they are discussed thoroughly. All of these ideas areMore information
Betweenness of Points
Math 444/445 Geometry for Teachers Summer 2008 Supplement : Rays, ngles, and etweenness This handout is meant to be read in place of Sections 5.6 5.7 in Venema s text [V]. You should read these pages afterMore information
3 Extending the Refinement Calculus
Building BSP Programs Using the Refinement Calculus D.B. Skillicorn? Department of Computing and Information Science Queen s University, Kingston, Canada email@example.com Abstract. We extend theMore information
Regular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressionsMore information
An Innocent Investigation
An Innocent Investigation D. Joyce, Clark University January 2006 The beginning. Have you ever wondered why every number is either even or odd? I don t mean to ask if you ever wondered whether every numberMore information
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lectureMore information
You know from calculus that functions play a fundamental role in mathematics.
CHPTER 12 Functions You know from calculus that functions play a fundamental role in mathematics. You likely view a function as a kind of formula that describes a relationship between two (or more) quantities.More information
(LMCS, p. 317) V.1. First Order Logic. This is the most powerful, most expressive logic that we will examine.
(LMCS, p. 317) V.1 First Order Logic This is the most powerful, most expressive logic that we will examine. Our version of first-order logic will use the following symbols: variables connectives (,,,,More information
Cryptography and Network Security Department of Computer Science and Engineering Indian Institute of Technology Kharagpur
Cryptography and Network Security Department of Computer Science and Engineering Indian Institute of Technology Kharagpur Module No. # 01 Lecture No. # 05 Classic Cryptosystems (Refer Slide Time: 00:42)More information
From Workflow Design Patterns to Logical Specifications
AUTOMATYKA/ AUTOMATICS 2013 Vol. 17 No. 1 http://dx.doi.org/10.7494/automat.2013.17.1.59 Rados³aw Klimek* From Workflow Design Patterns to Logical Specifications 1. Introduction Formal methods in softwareMore information
Software Engineering
Software Engineering Lecture 04: The B Specification Method Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 50 The B specification methodMore information
Induction. Margaret M. Fleck. 10 October These notes cover mathematical induction and recursive definition
Induction Margaret M. Fleck 10 October 011 These notes cover mathematical induction and recursive definition 1 Introduction to induction At the start of the term, we saw the following formula for computingMore information
Degrees of Truth: the formal logic of classical and quantum probabilities as well as fuzzy sets.
Degrees of Truth: the formal logic of classical and quantum probabilities as well as fuzzy sets. Logic is the study of reasoning. A language of propositions is fundamental to this study as well as trueMore information
3. Mathematical Induction
3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)More information
31 is a prime number is a mathematical statement (which happens to be true).
Chapter 1 Mathematical Logic In its most basic form, Mathematics is the practice of assigning truth to welldefined statements. In this course, we will develop the skills to use known true statements toMore information
A Semantical Perspective on Verification of Knowledge
A Semantical Perspective on Verification of Knowledge Paul Leemans, Jan Treur, Mark Willems Vrije Universiteit Amsterdam, Department of Artificial Intelligence De Boelelaan 1081a, 1081 HV Amsterdam TheMore information
Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products
Chapter 3 Cartesian Products and Relations The material in this chapter is the first real encounter with abstraction. Relations are very general thing they are a special type of subset. After introducingMore information
Domain Theory: An Introduction
Domain Theory: An Introduction Robert Cartwright Rebecca Parsons Rice University This monograph is an unauthorized revision of Lectures On A Mathematical Theory of Computation by Dana Scott [3]. ScottMore information
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No. # 11 Block Cipher Standards (DES) (Refer SlideMore information
Section 1. Statements and Truth Tables. Definition 1.1: A mathematical statement is a declarative sentence that is true or false, but not both.
M3210 Supplemental Notes: Basic Logic Concepts In this course we will examine statements about mathematical concepts and relationships between these concepts (definitions, theorems). We will also considerMore information
CHAPTER 2. Logic. 1. Logic Definitions. Notation: Variables are used to represent propositions. The most common variables used are p, q, and r.
CHAPTER 2 Logic 1. Logic Definitions 1.1. Propositions. Definition 1.1.1. A proposition is a declarative sentence that is either true (denoted either T or 1) or false (denoted either F or 0). Notation:More information
Students in their first advanced mathematics classes are often surprised
CHAPTER 8 Proofs Involving Sets Students in their first advanced mathematics classes are often surprised by the extensive role that sets play and by the fact that most of the proofs they encounter areMore information
Induction and the Division Theorem 2.1 The Method of Induction
2 Induction and the Division Theorem 2.1 The Method of Induction In the Introduction we discussed a mathematical problem whose solution required the verification of an infinite family of statements. WeMore information
Managing large sound databases using Mpeg7
Max Jacob 1 1 Institut de Recherche et Coordination Acoustique/Musique (IRCAM), place Igor Stravinsky 1, 75003, Paris, France Correspondence should be addressed to Max Jacob (firstname.lastname@example.com) ABSTRACTMore information
THE TURING DEGREES AND THEIR LACK OF LINEAR ORDER JASPER DEANTONIO Abstract. This paper is a study of the Turing Degrees, which are levels of incomputability naturally arising from sets of natural numbers.More information
2. The Language of First-order Logic
2. The Language of First-order Logic KR & R Brachman & Levesque 2005 17 Declarative language Before building system before there can be learning, reasoning, planning, explanation... need to be able toMore information
Theory of Computation Prof. Kamala Krithivasan Department of Computer Science and Engineering Indian Institute of Technology, Madras
Theory of Computation Prof. Kamala Krithivasan Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture No. # 31 Recursive Sets, Recursively Innumerable Sets, EncodingMore information
Chapter 6: Formal Proofs and Boolean Logic
Chapter 6: Formal Proofs and Boolean Logic The Fitch program, like the system F, uses introduction and elimination rules. The ones we ve seen so far deal with the logical symbol =. The next group of rulesMore information
Mathematical Induction
Mathematical Induction Victor Adamchik Fall of 2005 Lecture 2 (out of three) Plan 1. Strong Induction 2. Faulty Inductions 3. Induction and the Least Element Principal Strong Induction Fibonacci NumbersMore information
Software development process
OpenStax-CNX module: m14619 1 Software development process Trung Hung VO This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License 2.0 Abstract A software developmentMore information
4. FIRST-ORDER LOGIC Contents 4.1: Splitting the atom: names, predicates and relations 4.2: Structures 4.3: Quantification:, 4.4: Syntax 4.5: Semantics 4.6: De Morgan s laws for and 4.7: Truth trees forMore information
Language. Johann Eder. Universitat Klagenfurt. Institut fur Informatik. Universiatsstr. 65. A-9020 Klagenfurt / AUSTRIA
PLOP: A Polymorphic Logic Database Programming Language Johann Eder Universitat Klagenfurt Institut fur Informatik Universiatsstr. 65 A-9020 Klagenfurt / AUSTRIA February 12, 1993 Extended Abstract TheMore information
Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.
Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. # 8 Functional Dependencies and Normal Forms Two different kindsMore information
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainlyMore information
Foundations of Artificial Intelligence
Foundations of Artificial Intelligence 7. Propositional Logic Rational Thinking, Logic, Resolution Wolfram Burgard, Bernhard Nebel and Martin Riedmiller Albert-Ludwigs-Universität Freiburg Contents 1 AgentsMore information
How to Make a Correct Multiprocess Program Execute Correctly on a Multiprocessor
How to Make a Correct Multiprocess Program Execute Correctly on a Multiprocessor Leslie Lamport 1 Digital Equipment Corporation February 14, 1993 Minor revisions January 18, 1996 and September 14, 1996More information
Inference Rules and Proof Methods
Inference Rules and Proof Methods Winter 2010 Introduction Rules of Inference and Formal Proofs Proofs in mathematics are valid arguments that establish the truth of mathematical statements. An argumentMore information
Predicate Logic. Example: All men are mortal. Socrates is a man. Socrates is mortal.
Predicate Logic Example: All men are mortal. Socrates is a man. Socrates is mortal. Note: We need logic laws that work for statements involving quantities like some and all. In English, the predicate isMore information
The rigorous development and verication of a boiler system specication is presented.
Stepwise Development and Verication of a Boiler System Specication Peter Bishop and Glenn Bruns and Stuart Anderson Abstract The rigorous development and verication of a boiler system specication is presented.More information
2. Compressing data to reduce the amount of transmitted data (e.g., to save money).
Presentation Layer The presentation layer is concerned with preserving the meaning of information sent across a network. The presentation layer may represent (encode) the data in various ways (e.g., dataMore information
programming languages, programming language standards and compiler validation
Software Quality Issues when choosing a Programming Language C.J.Burgess Department of Computer Science, University of Bristol, Bristol, BS8 1TR, England Abstract For high quality software, an importantMore information
Chapter I Logic and Proofs
MATH 1130 1 Discrete Structures Chapter I Logic and Proofs Propositions A proposition is a statement that is either true (T) or false (F), but or both. s Propositions: 1. I am a man.. I am taller thanMore information
Discrete Mathematics
Slides for Part IA CST 2014/15 Discrete Mathematics Prof Marcelo Fiore email@example.com What are we up to? Learn to read and write, and also work with, mathematicalMore information
Fundamentals of Mathematics Lecture 6: Propositional Logic
Fundamentals of Mathematics Lecture 6: Propositional Logic Guan-Shieng Huang National Chi Nan University, Taiwan Spring, 2008 1 / 39 Connectives Propositional Connectives I 1 Negation: (not A) A A T FMore information
Math Circle Beginners Group October 18, 2015
Math Circle Beginners Group October 18, 2015 Warm-up problem 1. Let n be a (positive) integer. Prove that if n 2 is odd, then n is also odd. (Hint: Use a proof by contradiction.) Suppose that n 2 is oddMore information
The Classes P and NP
The Classes P and NP We now shift gears slightly and restrict our attention to the examination of two families of problems which are very important to computer scientists. These families constitute theMore information
The Set Data Model CHAPTER 7. 7.1 What This Chapter Is About
CHAPTER 7 The Set Data Model The set is the most fundamental data model of mathematics. Every concept in mathematics, from trees to real numbers, is expressible as a special kind of set. In this book,More information
1. R In this and the next section we are going to study the properties of sequences of real numbers.
+a 1. R In this and the next section we are going to study the properties of sequences of real numbers. Definition 1.1. (Sequence) A sequence is a function with domain N. Example 1.2. A sequence of realMore information
It is time to prove some theorems. There are various strategies for doing
CHAPTER 4 Direct Proof It is time to prove some theorems. There are various strategies for doing this; we now examine the most straightforward approach, a technique called direct proof. As we begin, itMore information
Lecture notes for Choice Under Uncertainty
Lecture notes for Choice Under Uncertainty 1. Introduction In this lecture we examine the theory of decision-making under uncertainty and its application to the demand for insurance. The undergraduateMore information
CHAPTER 3. Sequences. 1. Basic Properties
CHAPTER 3 Sequences We begin our study of analysis with sequences. There are several reasons for starting here. First, sequences are the simplest way to introduce limits, the central idea of calculus.More information
Process Modeling Notations and Workflow Patterns
Process Modeling Notations and Workflow Patterns Stephen A. White, IBM Corp., United States ABSTRACT The research work of Wil van der Aalst, Arthur ter Hofstede, Bartek Kiepuszewski, and Alistair BarrosMore information