14 views

Uploaded by fairdeal2k1

save

- v7n2-5pd
- Algorithms 1
- Image Acquisition
- CS105 Queues
- IBPS IT Officer Exam Capsule Part 2.pdf
- 2nd-Dispatch DLPD IIT-JEE Class-XII English PC(Maths)
- Cs8383 Oops Lab Manual
- Part8-ArraysAndStructs
- Axi4lite Vip User Manual
- 04 Stack Queue
- Stacks Infix Postfix
- SAP HANA and BOBI 4.0 - Universe Design Guide (Multi Source) V2
- 20251 Program Solutions
- BUS786 MGTGameSummary
- 64904817
- 399304_391935_Latihan_UAS
- PDEnotesPart1.pdf
- Calculus Early Transcendentals Solutions Manual Chapter 04
- 3 and 4 addend lesson
- practest
- Mid Model ques - Lab.docx
- Recitation 5
- Math 136 Spring 2019
- 1-4
- standards
- Data structures
- 336789917 Rpt Kssr Math Year 1 DLP
- udl lesson plan with technology
- vectfuncdef
- 336789917-rpt-kssr-math-year-1-DLP.docx
- FI and COPA Reporting_practices
- Checklist for VAT Rate Changes in SAP _ Tax Management Consultancy
- 2018 Calander Final (1)
- Qulon Dishes Preparation
- Apartment_Association_Byelaws_Template.doc
- Bangalore-Building-Byelaws- 2003.pdf
- SAP, Indirect Tax Functionality and Client Needs _ Tax Management Consultancy
- Tummy Exercises
- SAP Reconciliation FICO With COPA Add-On Tool
- Tummy exercises.pdf
- Student Lifecycle Management Extended Booking Check Cookbook
- SAP CO configuration and end-user procedures guide.doc
- Validation Process of VAT Numbers in SAP _ Tax Management Consultancy
- Documentationof SAP Student Lifecycle Management (IS-HER-CM) BS 7(SLCM EHP 4).pdf
- 28781556-SAP-Scripts
- SAP User List
- Student Lifecycle Management Scenarios
- SAP Tips&Tricks for End Users
- Student Lifecycle Management Appraisal Self-Service Cookbook
- Questionnaire MM
- Student Lifecycle Management Academic Advisor User Interface Cookbook
- 10 Must Know ABAP Skills for Functional Consultants
- Student Lifecycle Management Extended Booking Check Cookbook
- Companies in Which SAP ERP is Implemented
- Delta Overview Student Lifecycle Management EHP 4 (Business Suite 7)
- Questionnaire SD
- Role of SAP Consultant in Testing
- Student Lifecycle Management AttendanceTracking Cookbook
- Greenpeace - Uranio.pdf
- CORTINA
- ABB Factory in Italy
- Kitchen Design Styles
- Les Ruines d'Aegae en Éolie 1886
- (Coleção Biografias) Dorian Astor-Lou Andreas-Salomé-L&PM (2016)
- La Agrotecnia
- Il sillabo di italiano L2 e i sussidi didattici: verso una convergenza
- EXERCÍCIOS DA LISTA 01
- [Doi 10.1016_j.ijheatfluidflow.2014.12.004] J. Galindo; A. Tiseira; R. Navarro; M. López -- Influence of Tip Clearance on Flow Behavior and Noise Generation of Centrifugal Compressors in Near-surge
- Efrain Alberto Hoyos
- Exposicion de Hidrologia
- s 0029665196000900 A
- Importancia Del Comercio Exterior en El Desarrollo Del País
- Etapas en el Desarrollo de un Sistema de Información Gerencial
- Dicas básicas para começar a pintar telas.docx
- Guidelines for the Design of FRP TIMBER STRUCTURES
- 121324124.rtf_1
- cleaningvalidationacompleteknowhow-140528034627-phpapp01
- Apuntes electrónica 2007 mejorado
- Práctica3amedias (1)
- Ondas Electromageticas - FenixTech
- Tornillos
- Fc, Sft, Af 18 Julio 2011
- Hugo Correa - El Ataque de Los Selenitas Cuento
- Semana 2 La Mezcla Del Mercadeo y El Producto
- Cortante-04
- Libreria Pantalla Arduino
- Lab 4 Equipos Rolando
- Sistemas Constructivos de Losas

You are on page 1of 11

Lutz Hamel Dept. of Computer Science and Statistics University of Rhode Island Kingston, RI 02881 hamel@cs.uri.edu – DRAFT 9/22/06 –

Getting Started

BOBJ is a speciﬁcation language based on equational logic and algebra.1 Informally, in equational logic axioms are expressed as equations with algebras as models and term rewriting as operational semantics. Due to the eﬃcient operational semantics, BOBJ speciﬁcations are executable; once you have speciﬁed your system, you can actually run the speciﬁcation and see if it behaves correctly. Furthermore, due to the fact that BOBJ is rigorously based on mathematical foundations you can use BOBJ to prove things about your speciﬁcations. Speciﬁcations The basic speciﬁcation unit in BOBJ is called an object. objects themselves consist of type deﬁnitions (called sorts in BOBJ lingo) and operator name deﬁnitions. Behavior is deﬁned for the operators via a set of equations. The equations themselves can also contain variables. The following could be considered a typical speciﬁcation: obj NUMBERS is sort Nat . op 0 : -> Nat . op s : Nat -> Nat . op _+_ : Nat Nat -> Nat . var M : Nat . var N : Nat . eq M + s(N) = s(M + N) . eq M + 0 = M . endo

1 Actually BOBJ is based on hidden (or behavioral), order-sorted equational logic, here we only discuss the many-sorted sublanguage of BOBJ.

1

Finally. we can deﬁne preﬁx.1991 SRI International 2002 Nov 21 Thu 7:33:22 BOBJ> At this point you are ready to load speciﬁcation ﬁles into BOBJ.1989. we assign some behavior to the + operator with the equations appearing at the end of the object.jar \|||||||||||||||||/ --. that is. or postﬁx operator symbols. and op + : Nat Nat -> Nat deﬁnes an inﬁx binary operator.bob”. This keyword activates BOBJ’s theorem proving engine. 2 . BOBJ provides us with another keyword to accomplish that : reduce. inﬁx. Within this object we deﬁne the sort Nat as well as the three operator symbols: 0.0 built: 2000 Jun 20 Tue 20:18:45 Copyright 1988. We can type in the following command: BOBJ> reduce s(0) + s(s(0)) == s( s(0) + s(0) ) . The system will respond: [lutz]% java -jar bobj. You can use underscores to tell the BOBJ parser how the operator is to appear in the target expressions. When no special action is taken during the deﬁnition of a function symbol it defaults to being a preﬁx function symbol. op s : Nat -> Nat deﬁnes a unary function symbol that takes a value in domain Nat to its codomain Nat. BOBJ admits mixﬁx operator declarations. usually by typing the keyword bobj at the Unix command prompt.Welcome to BOBJ --/|||||||||||||||||\ BOBJ version 2. Following the operator declarations we have the variable declarations. then in order to load this into BOBJ you type in numbers: BOBJ> in numbers ========================================== obj NUMBERS BOBJ> Once the ﬁle is loaded we might want to demonstrate that our speciﬁcation behaves appropriately. and +. s. The notation for the operator symbol declaration follows very closely standard mathematical practice: op 0 : -> Nat deﬁnes a constant of type Nat. The ﬁrst equation states that computing the successor of N and then adding that to M is the same as ﬁrst adding M and N and then computing the successor of the sum. Running BOBJ Before you can load a speciﬁcation into BOBJ your have to start BOBJ.This speciﬁcation deﬁnes the object NUMBERS. The second equation states that adding zero to a value will not change the value. Assume that the above speciﬁcation is called “numbers. Consider that we want to show that the ﬁrst equations holds during an actual computation.

var M : Int . eq fib(0) = 0 . Again. Within the equation section we have what is referred to as a conditional equation which starts of with the keyword ceq and includes an if clause to the right of its deﬁnition. i.2) if M =/= 0 and M =/= 1 . Consider: BOBJ> reduce s(0) + s(s(0)) . Built-ins In the previous section we used the zero constant and successor function to simulate integers. we get back what we expected. reduce in NUMBERS : s(0) + s(s(0)) rewrites: 3 result Nat: s(s(s(0))) BOBJ> In this case we want to know what happens when we add the successor of zero to the successor of the successor of zero. that the behavior deﬁned by the equation is what we expected. BOBJ includes a module INT and we can use it in our own speciﬁcations. BOBJ allows us to use regular integer notation via a built-in module. ceq fib(M) = fib(M . As the results show. endo This speciﬁcation introduces a number of new features in BOBJ. BOBJ has proven that the property indeed holds. Here we make sure that this equation is only applied when the variable M is neither 0 or 1. op fib : Int -> Int . Assume that we want to write a speciﬁcation for a function that computes the Fibonacci numbers: obj FIB is protecting INT . With the == symbol you are asking BOBJ to prove that the left term is equal to the right term. raising our conﬁdence that our speciﬁcation is indeed correct.1) + fib(M . eq fib(1) = 1 . we can use the BOBJ theorem prover to convince ourselves that the speciﬁcation behaves appropriately: 3 . First.e.reduce in NUMBERS : s(0) + s(s(0)) == s(s(0) + s(0)) rewrites: 4 result Bool: true BOBJ> Note that we get back the result true. we have the protecting keyword which allows us to import other modules.. We can also use BOBJ to simulate actual computations within the speciﬁcation. in this case the built-in module INT.

say ladd.BOBJ> reduce fib(10) == 55 . Also. the structure of objects in BOBJ is as follows: obj <object name> is <include directives> <type definitions> <operator name definitions> <variable declarations> <equations> endo It worthwhile pointing out that each statement within an object needs to be followed by a period. Exercise 2 Write a speciﬁcation for a list of integers representation (hint: cons function from Lisp. the period needs to be separated from the text by a space. and 3!. Use the reduce command to demonstrate that your function speciﬁcation works correctly. 2. reduce – activates the BOBJ theorem prover. Use the reduce command to demonstrate that your function speciﬁcation works correctly for 0!. reduce in FIB : fib(10) == 55 rewrites: 1058 result Bool: true BOBJ> Exercise 1 Write a speciﬁcation for a function that computes the factorial of a given integer. 4 . BOBJ provides two useful commands: 1. Once you have the representation. 1!. As we pointed out above. null to represent empty lists). write a function. in – allows you to load object speciﬁcations into BOBJ. At the command line level. Summary In general. equations can have a simple format eq lhs = rhs . or they can have the conditional format: ceq lhs = rhs if cond . that returns the sum of the elements in an integer list.

op e2 : -> Element . op e1 : -> Element . The second equation states that popping a pushed element returns the original stack. The speciﬁcation follows the pattern deﬁned in the previous section. Then we deﬁne our operation symbols: top is an operation that allows us to inspect the top of a stack. We deﬁne two sorts. Stack -> Stack .s)))) == s . Let’s take a look at a slightly more complicated speciﬁcation. The following is a speciﬁcation of a stack. we give this speciﬁcation our intended behavior with the two equations. op s : -> Stack . The following is our proof score that demonstrates some basic properties of stacks. Now we are ready to examine some properties of stacks.A Stack Speciﬁcation So far we looked at very simple speciﬁcations.push(e2. obj STACK is sort Stack . eq top(push(E. one for the stack and one for the elements that can be pushed on the stack. ***> demonstrate some basic properties of stacks reduce pop(pop(push(e1. The ﬁrst equation states that looking at the top of the stack after something has been pushed will return the element that has been pushed. push allows us to push an element on a stack. Finally.push(e2.s)))) == e2 .S)) endo Element . = S . *** Stack Proof Score *** open STACK . We introduce a new feature of BOBJ to do that: proof scores.S)) eq pop(push(E. but we are interested in specifying software systems. sort Element . We also declare two variables S and E. close 5 . Stack . and ﬁnally pop allows us to pop the top of the stack. reduce top(pop(push(e1. = E . You can think of a proof score as a program for BOBJ’s theorem prover. var E : Element . op top : Stack -> op push : Element op pop : Stack -> var S : Stack .

e.s))) = top(s).push(e2. demonstrate that top(pop(push(e. Once this is in place we can go ahead and demonstrate some system properties by ﬁrst loading the stack object and then its proof score. [lutz]$ java -jar bobj.s)))) == e2 rewrites: 3 result Bool: true ========================================== close BOBJ> Exercise 3 Build a proof score that uses the reduce command to demonstrate that a top of a pop of a push is just the top of the original stack. Here.jar \|||||||||||||||||/ --. 6 .push(e2. In our case our object of interest is STACK. This makes the operations and equations of the object available to the theorem prover..1989.Proof scores usually begin with opening the object that we want to prove things about. ========================================== op e1 : -> Element . ========================================== ***> demonstrate some basic properties of stacks ========================================== reduce in STACK : pop(pop(push(e1. ========================================== op e2 : -> Element . s stands for all stacks and e1 and e2 are place holders for element values.Welcome to BOBJ --/|||||||||||||||||\ BOBJ version 2.0 built: 2000 Jun 20 Tue 20:18:45 Copyright 1988.1991 SRI International 2002 Nov 21 Thu 15:32:15 BOBJ> in stack ========================================== obj STACK BOBJ> in stackscore ========================================== open STACK ========================================== op s : -> Stack . i.s)))) == s rewrites: 3 result Bool: true ========================================== reduce in STACK : top(pop(push(e1. Once we have access to our object we declare some constants as place holders for general values.

An empty queue is represented with the nil operation symbol.Q)) = Q .nil)) == cons(e’. sort Element . q’ : -> Queue . var Q : Queue .Q)) = cons(E2.cons(e’. An BOBJ speciﬁcation of a queue might look somehting like the following: obj QUEUE is sort Queue .q) . Like in the previous example. We have three functions that manipulate the queue.nil) .add(E1. ***> assume that all queues q under consideration are non-empty 7 . op op op op q : -> Queue . ***> show some basic properties of queues reduce add(e.A Queue Speciﬁcation Continuing with our notion of software speciﬁcation.nil)) . op remove : Queue -> Queue .q)) . op peek : Queue -> Element . op nil : -> Queue . op add : Element Queue -> Queue .q))) == add(e.cons(e. eq add(E.Q)) . e’ : -> Element . *** proof score open QUEUE . op cons : Element Queue -> Queue . vars E E1 E2 : Element . we do all our demonstration and proving in a proof score. let’s specify a queue.cons(e’.cons(E2. namely: peek which returns the ﬁrst element in the queue.nil) = cons(E. and add which adds a new element to the end of the queue.q)) == cons(e’. endo What is noteworthy about the speciﬁcation is that we represent the internal list structure with the cons operation symbol. reduce add(e. eq peek(cons(E.add(e. reduce remove(add(e. eq remove(cons(E. remove which removes the ﬁrst element of the queue.Q)) = E . A queue is a list-like data structure but the operations on this list are constrained: you are only able to add elements to the end of the list and you can only remove elements from the beginning of the list. eq add(E1. e : -> Element .cons(e’.

cons(e’.q)) == add(e.remove(q)) .1989. add(e. nil)) result Bool: true rewrite time: 43ms parse time: 18ms ========================================== reduce in QUEUE : add(e.q’) . q) result Bool: true rewrite time: 1ms parse time: 4ms ========================================== ***> assume that all queues q under consideration are non-empty ========================================== 8 . cons(e. ***> prove that remove and add can be swapped on non-empty queues reduce remove(add(e.1991 SRI International 2002 Nov 21 Thu 16:18:04 BOBJ> in queue ========================================== obj QUEUE BOBJ> in queuescore ========================================== open QUEUE ========================================== op q : -> Queue ========================================== op q’ : -> Queue ========================================== op e : -> Element ========================================== op e’ : -> Element ========================================== ***> show some basic properties of queues ========================================== reduce in QUEUE : add(e. cons(e’.eq q = cons(e. q)) == cons(e’. nil)) == cons(e’.Welcome to BOBJ --/|||||||||||||||||\ BOBJ version 2. close Here is a session with the queue speciﬁcation and proof score: [lutz]$ java -jar bobj. cons(e’. q))) == add(e. q)) result Bool: true rewrite time: 1ms parse time: 29ms ========================================== reduce in QUEUE : remove(add(e.0 built: 2000 Jun 20 Tue 20:18:45 Copyright 1988.jar \|||||||||||||||||/ --.

op remember : Int State -> State . op display : State -> Int . We also see that displaying a value is simply removing a remembered value from the internal state and printing it out. and display. q)) == add(e. which let you enter a value into the calculator. var S : State .S)) = I . 9 .S))) = remember(I2 .S) .eq q = cons(e. remove(q)) result Bool: true rewrite time: 8ms parse time: 5ms ========================================== close BOBJ> Exercise 4 Show that peek is invariant under the add operation for all nonempty queues. op sub : State -> State . sub. perform a subtraction. The central part of the speciﬁcation is the notion of a state that can remember values that were entered. op enter : Int State -> State . op add : State -> State . eq add(remember(I1. What is striking about adding and subtracting is the fact that as binary operations they remove the two most recently remembered values from the calculator state and then add the sum or diﬀerence of the two values. eq sub(remember(I1. and display a value. respectively. eq enter(I. vars I I1 I2 : Int .S))) = remember(I1 + I2.remember(I2. respectively.S) . eq display(remember(I. sort State . A Calculator Speciﬁcation As our ﬁnal example we take a look at the speciﬁcation of a postﬁx style calculator. Here is the speciﬁcation of the calculator: obj CALCULATOR is protecting INT .I1. The idea is that the calculator has four buttons: enter. perform an addition. back to the calculator state.remember(I2.S) . add.S) = remember(I. endo We see that entering a value simply means remembering this value in the internal state of the calculator. q’) ========================================== ***> prove that remove and add can be swapped on non-empty queues ========================================== reduce in QUEUE : remove(add(e.

enter(n. op op op op l m n s : : : : -> -> -> -> Int .1989.add(remember(m.Welcome to BOBJ --/|||||||||||||||||\ BOBJ version 2.enter(2.remember(n.s)))) == 5 . reduce display(add(enter(m. State .remember(n.s)) == 3 .remember(m.jar \|||||||||||||||||/ --.s))))) == add(remember(l. m.s)))) == m + n . ***> demonstrate some system properties reduce display(enter(3. reduce display(add(enter(3. Int .s))))) .1991 SRI International 2002 Nov 21 Thu 16:36:05 BOBJ> in calc ========================================== obj CALCULATOR BOBJ> in calcscore ========================================== open CALCULATOR ========================================== op l : -> Int ========================================== op m : -> Int ========================================== op n : -> Int ========================================== op s : -> State ========================================== ***> demonstrate some system properties 10 .0 built: 2000 Jun 20 Tue 20:18:45 Copyright 1988. Int . n reduce add(add(remember(l. ***> prove associativity of add for all integer values l. close Here is a sample session with the calculator speciﬁcation and proof score: [lutz]$ java -jar bobj.As before we use the notion of a proof score to demonstrate properties of this speciﬁcation: *** proof score open CALCULATOR .

s))))) result Bool: true rewrite time: 7ms parse time: 5ms ========================================== close BOBJ> Exercise 5 Prove the commutativity of add. remember(n. 11 . s))))) == add(remember(l. add(remember(m.========================================== reduce in CALCULATOR : display(enter(3. s)))) == 5 result Bool: true rewrite time: 7ms parse time: 4ms ========================================== reduce in CALCULATOR : display(add(enter(m. enter(n. enter(2. n ========================================== reduce in CALCULATOR : add(add(remember(l. s)) == 3 result Bool: true rewrite time: 40ms parse time: 6ms ========================================== reduce in CALCULATOR : display(add(enter(3. m. remember(m. remember(n. s)))) == m + n result Bool: true rewrite time: 5ms parse time: 29ms ========================================== ***> prove associativity of add for all integer values l.

- v7n2-5pdUploaded byBasem Hanna
- Algorithms 1Uploaded byPraveen Sahi
- Image AcquisitionUploaded byyrikki
- CS105 QueuesUploaded byNagara Akuma
- IBPS IT Officer Exam Capsule Part 2.pdfUploaded bySreeLatha
- 2nd-Dispatch DLPD IIT-JEE Class-XII English PC(Maths)Uploaded byAnirban Paul
- Cs8383 Oops Lab ManualUploaded byKarthik Subramani
- Part8-ArraysAndStructsUploaded byMafuzal Hoque
- Axi4lite Vip User ManualUploaded byUdit Agrawal
- 04 Stack QueueUploaded byBhaskar Gundu
- Stacks Infix PostfixUploaded byBeeAshh
- SAP HANA and BOBI 4.0 - Universe Design Guide (Multi Source) V2Uploaded byjoesaran
- 20251 Program SolutionsUploaded byashwani
- BUS786 MGTGameSummaryUploaded byLu Wang
- 64904817Uploaded byKashyap Rt
- 399304_391935_Latihan_UASUploaded byArmando Fransisco Ongko
- PDEnotesPart1.pdfUploaded byafl_usa
- Calculus Early Transcendentals Solutions Manual Chapter 04Uploaded byJonathan Martinez Cuesi
- 3 and 4 addend lessonUploaded byapi-376418411
- practestUploaded byapi-251391936
- Mid Model ques - Lab.docxUploaded bysivaeeinfo
- Recitation 5Uploaded bystlonginus1942
- Math 136 Spring 2019Uploaded byNegus Kim
- 1-4Uploaded bysarasmile2009
- standardsUploaded byapi-349490383
- Data structuresUploaded byBonventure Kipkirui
- 336789917 Rpt Kssr Math Year 1 DLPUploaded byTinagaran Perumal
- udl lesson plan with technologyUploaded byapi-333561286
- vectfuncdefUploaded byStelios Kondos
- 336789917-rpt-kssr-math-year-1-DLP.docxUploaded byHeldreennal Abong

- FI and COPA Reporting_practicesUploaded byfairdeal2k1
- Checklist for VAT Rate Changes in SAP _ Tax Management ConsultancyUploaded byfairdeal2k1
- 2018 Calander Final (1)Uploaded byfairdeal2k1
- Qulon Dishes PreparationUploaded byfairdeal2k1
- Apartment_Association_Byelaws_Template.docUploaded byfairdeal2k1
- Bangalore-Building-Byelaws- 2003.pdfUploaded byfairdeal2k1
- SAP, Indirect Tax Functionality and Client Needs _ Tax Management ConsultancyUploaded byfairdeal2k1
- Tummy ExercisesUploaded byfairdeal2k1
- SAP Reconciliation FICO With COPA Add-On ToolUploaded byfairdeal2k1
- Tummy exercises.pdfUploaded byfairdeal2k1
- Student Lifecycle Management Extended Booking Check CookbookUploaded byfairdeal2k1
- SAP CO configuration and end-user procedures guide.docUploaded byfairdeal2k1
- Validation Process of VAT Numbers in SAP _ Tax Management ConsultancyUploaded byfairdeal2k1
- Documentationof SAP Student Lifecycle Management (IS-HER-CM) BS 7(SLCM EHP 4).pdfUploaded byfairdeal2k1
- 28781556-SAP-ScriptsUploaded byfairdeal2k1
- SAP User ListUploaded byfairdeal2k1
- Student Lifecycle Management ScenariosUploaded byfairdeal2k1
- SAP Tips&Tricks for End UsersUploaded byfairdeal2k1
- Student Lifecycle Management Appraisal Self-Service CookbookUploaded byfairdeal2k1
- Questionnaire MMUploaded byfairdeal2k1
- Student Lifecycle Management Academic Advisor User Interface CookbookUploaded byfairdeal2k1
- 10 Must Know ABAP Skills for Functional ConsultantsUploaded byfairdeal2k1
- Student Lifecycle Management Extended Booking Check CookbookUploaded byfairdeal2k1
- Companies in Which SAP ERP is ImplementedUploaded byfairdeal2k1
- Delta Overview Student Lifecycle Management EHP 4 (Business Suite 7)Uploaded byfairdeal2k1
- Questionnaire SDUploaded byfairdeal2k1
- Role of SAP Consultant in TestingUploaded byfairdeal2k1
- Student Lifecycle Management AttendanceTracking CookbookUploaded byfairdeal2k1

- Greenpeace - Uranio.pdfUploaded byvelisa815986
- CORTINAUploaded byKaren
- ABB Factory in ItalyUploaded byMahmoud Waly
- Kitchen Design StylesUploaded bycmv2
- Les Ruines d'Aegae en Éolie 1886Uploaded bymetaten9948
- (Coleção Biografias) Dorian Astor-Lou Andreas-Salomé-L&PM (2016)Uploaded byLeonardo Buzatto
- La AgrotecniaUploaded byLopez JJ
- Il sillabo di italiano L2 e i sussidi didattici: verso una convergenzaUploaded byLaura Barberis
- EXERCÍCIOS DA LISTA 01Uploaded bysandrasoaresrj78
- [Doi 10.1016_j.ijheatfluidflow.2014.12.004] J. Galindo; A. Tiseira; R. Navarro; M. López -- Influence of Tip Clearance on Flow Behavior and Noise Generation of Centrifugal Compressors in Near-surgeUploaded byAdhitya Kurniawan
- Efrain Alberto HoyosUploaded byNoqueria Sabernada
- Exposicion de HidrologiaUploaded bySamuel Emersson Aguilar Huaman
- s 0029665196000900 AUploaded byPrathamesh Deo
- Importancia Del Comercio Exterior en El Desarrollo Del PaísUploaded byMarielena Revilla Villanueva
- Etapas en el Desarrollo de un Sistema de Información GerencialUploaded byjennidr
- Dicas básicas para começar a pintar telas.docxUploaded byValdirene Moreira
- Guidelines for the Design of FRP TIMBER STRUCTURESUploaded byRC
- 121324124.rtf_1Uploaded byEdar D3mon
- cleaningvalidationacompleteknowhow-140528034627-phpapp01Uploaded byJPensacola
- Apuntes electrónica 2007 mejoradoUploaded byPablo Gutierrez
- Práctica3amedias (1)Uploaded byRaul Fernandez
- Ondas Electromageticas - FenixTechUploaded byFundacionFenixtech
- TornillosUploaded byLizbeth Montoya
- Fc, Sft, Af 18 Julio 2011Uploaded byAlexander YV
- Hugo Correa - El Ataque de Los Selenitas CuentoUploaded byNads Reser Coco Lara
- Semana 2 La Mezcla Del Mercadeo y El ProductoUploaded byLiliana Monsalve Tarazona
- Cortante-04Uploaded byLuiz Amilton Sales
- Libreria Pantalla ArduinoUploaded byJuan Archman
- Lab 4 Equipos RolandoUploaded byRolando De la Cruz
- Sistemas Constructivos de LosasUploaded byLeonardo Ermitaño