Functional Programming for Business Process Modeling

Size: px
Start display at page:

Download "Functional Programming for Business Process Modeling"

Transcription

1 Functional Programming for Business Process Modeling Abhishek SAINI Laurent THIRY Ecole Nationale Supérieure d Ingènieurs Sud Alsace 12, rue des freres Lumière, Mulhouse ( abhishek.saini@uha.fr, laurent.thiry@uha.fr) Abstract: This paper presents how Functional Programming (FP) helps to provide an other formal semantics (relation between the syntax and the model of computation) for Business Process Modeling (BPM); a semantics relatively different from Object Oriented semantics. More precisely, it proposes a general methodology to model business processes using mathematical functions and higher-order functions. We describe the basic part of Business Process Modeling, behavioral semantics via Petri Nets (PN) and Functional implementation of the models. Also, we will see how the business process model is translated into its equivalent form in Petri Nets and how these can be described through Functional Programming. Keywords: Functional Programming, Semantics, Business Process Modeling, Petri Nets. 1. INTRODUCTION The term Business Process Modeling was coined in the 1960s in the area of systems engineering by S. Williams and until the 1990s, it became popular. BPM is the way of describing processes within enterprises, so that a model (abstract representation which can be manipulated) can be analyzed and improved, (Aguilar-Saven, 2004). A business process is viewed as a set of related, structured activities or tasks within an organization whose objective is to produce a specific product or service. A task needs to be finished before its deadline or in a definite time to work towards goal. There are many techniques to model processes such as a flow chart, functional flow block, Unified Modeling Language (UML), Business Process Model and Notations (BPMN), etc. Functional Programming (FP) is a style of programming in which programs are executed by evaluating expressions. Functional Programming focuses on simplicity and genericity, (Hughes, 1989), functions are considered first-class, which states that they can be passed as parameters to other functions or be returned as a result of a function. FP does computation as the evaluation of mathematical functions without changing state and mutating data. In comparison to Object-Oriented Programming (OOP), order of execution is less important, functions with no sideeffects, uses recursion concept to iterate collection data, supports both Abstraction over Data and Abstraction over Behavior, etc. Semantics is the study of meaning, (Lyons, 1977). In terms of programming language theory, semantics is the field related with the mathematical study of the meaning of programming languages. It describes the processes a computer follows when executing a program in that specific language. This can be viewed by describing the relationship between the input and output of a program, or an execution of how the program will execute on a certain platform, developing a model of computation. In this paper, Functional Programming has been used to propose a formal semantics of business model. Many research papers have been presented and discuss about the concepts of Business Process Modeling with Petri Nets or Workflow nets or Object-oriented but a few are based on Functional Programming. In particular, itask system (itasks) is a task-oriented programming toolkit for programming workflow support application in Clean. The paper is organized into three sections as follows: The next section discusses and introduces Business Process Modeling and Functional Programming. Our proposition is presented in Section 3. Finally, Section 4 concludes this paper by summarizing the main points introduced in the paper and its future aspects. 2. CONCEPTS AND STATE OF THE ART 2.1 Business Process Modeling A business process is a set of tasks and resources required to achieve some services. It is also stated as a set of activities that once completed will accomplish goal. There are constraints and rules that have to be met. Basically, there are three types of business process: (1) Management processes that govern the operations of a production system. (2) Operational processes that constitute the core business and create the primary value stream. (3) Supporting processes which supports the core processes. A business process can be decomposed into several sub processes, with specific attributes. A process model is a representation (graphical or textual) of business processes represented as a set of sequential or parallel process activities combined together to achieve a common goal. Using

2 a model, it becomes possible to find out how the system will behave and the properties it will acquire. There are different modeling languages that are used to model business processes such as BPMN, (Herden et al., 2015), suitability of the BPMN for Business Process Modeling using workflow patterns, (Wohed et al., 2006). Modeling business process through activity diagrams patterns, (Andre et al., 2014). (Mili et al., 2010) describes the classification of business process modeling languages. The two most used graphical notation for business processes are BPMN and Unified Modeling Language Activity Diagram (UML AD) which are discussed in (Geambasu, 2012). As an example, the Figure 1 models the behavior of the ATM machine for withdrawing money with the Business Process Modeling Language (BMPL). off by consuming tokens from all the input arcs while synchronously producing tokens along each output arcs. The Figure 2 gives an example of Petri Net which contains places (S1...S7), place contains tokens and transitions (T 1...T 7) that are joined by directed arcs. Fig. 2. Petri Net of Getting Tram Ticket. Fig. 1. Business Process Modeling ATM. The above model shows how the data flow between the different activities (represented as boxes), how conditions take places and how the flow of control takes place. The activities have some data associated with them, the data related to the current activity and its result will act as an input to the next activity. The arrow shows the transition between the two activities which involves the transfer of data and also the flow of control between activities and it also describes the change in the state of the activities. The diamond is used as a condition which has two outputs and the selection of the output is depend on the output of the previous activity which acts as an input to the condition. The different semantics that are used to give a behavioral description of the business process model are Petri Nets or Workflow nets. A Petri Net is represented as a bipartite graph that have tuple N = (P, T, A) where P is the set of places, T is the set of transitions and A (P T ) (T P ) is the set of flow relations, (Zhang et al., 2010). They are the basic model of parallel and distributed system. They were documented by Carl Adam Petri in 1962 in his PhD thesis Kommunikation mit Automaten. The basic idea behind it, is to draw the changes of state with transitions in a system. Petri Net is a strong technique for modeling and analysis of the system behavior where resource sharing, concurrency and synchronization are a significant matter to take into account, (Reisig, 1985). A classical Petri Net is that which consists of place nodes holding resources, the number of resources is denoted by the number of anonymous tokens on the places, transition nodes consuming and producing resources, and arcs between the nodes specifying dependencies between transitions and places with resources on them. A transition is only enabled if all the input places have sufficient tokens, and an enabled transition can go For a basic purpose, it is sufficient to consider classical Petri Nets to model business process, (van Hee et al., 2013). But sometimes to evaluate process, the classical Petri Nets are not sufficient, that s why the extension of Petri Nets are needed that are know as high-level Petri Nets, especially Coloured Petri Nets (CPN), (Jensen and Kristensen, 2009). In CPN, places are defined with the type that is colour set of tokens, tokens and resources are replaced by individual (or coloured) tokens defined with typed values of some inscription language, sometimes at same place multiple tokens may be found. Transitions and arcs are defined by program code that operates on the token values. Incoming arcs are annotated with variables or patterns which has a code to the transition and to the output arcs. Transition is also parameterized by the values of input tokens, can have additional binding values, can have guards (or conditions) that determine whether the given set of tokens is sufficient for firing of the transition, (Reinke, 2000). A workflow net is a Petri Net that has two special nodes, the first node is known as starting node that is start place and the other node is known as final node that is end place. In a Worflow net every transition is on a path from start to end place. (van der Aalst, 1998) introduced worflow management as an application domain for Petri Nets. The Figure 3 gives an example of Workflow net. Fig. 3. Workflow net. A workflow is a representation of a sequence of activities, declared as a work of persons, of a simple or complex mechanism, or machines. A workflow can be considered a view or picturization of real work. The flow may refer refer to a document, services or a product that is being

3 transferred from one position to another. A workflow can be viewed as one fundamental building block to be joined with other parts of an organization. 2.2 Functional Programming Functional Programming is a programming paradigm which models computation as the evaluation of expressions, programs are defined by a set of functions and immutable data. Functional Programming is a declarative programming model which means programming is done with expression or declaration instead of statements. Functional Programming requires functions to be treated like other values and can be passed as arguments. A function is a relation or expression that involves one or more variables, or a function f can be defined as a subset of a Cartesian product of two sets X and Y, such as for all (x, y) and (x, y ) in f, if x = x then y = y, (Coquand, 2008). Functional Programming mainly focus on What Information is desired that are Inputs and What Transformations are required that is Actual Logic. The different languages that support Functional Programming are Ocaml, Erlang, Haskell, Scala, etc. The main features of Functional Programming languages are: (1) Higher-order functions: are those functions that take other functions as their arguments and returns a function as its result. (2) Immutable data: instead of altering the actual values, copies are created and the original is preserved. (3) Referential transparency: it states that the computation yields the same value each time they are invoked. (4) Recursion: a function which calls itself, it is the only way to iterate in FP. The advantages of Functional Programming languages are bugs-free code, efficient parallel programming, supports nested functions, increase re-usability, better modularity, robust and reliable code, better performance. The disadvantage of Functional Programming language is requirement of lot of memory. In comparison to imperative programming it provides better support for structured programming and programs are shorter and easier to understand than their equivalent imperative programs. We have chosen Haskell as a tool, so now we will discuss about it. Haskell is a purely (a function has no side-effects) functional programming language. The language is named after Haskell Brooks Curry, whose work in mathematical logic plays as a foundation for functional languages. In Haskell, the evaluation of a program is corresponding to performing a function in the pure mathematical sense. Haskell has a static type system that means the type of every expression is known at compile time, which leads to safer code. A type is a kind of label that every expression has. The type tells in which category of things that expression fits. Functions also have types. When we write our own functions, we try to give them an explicit type declaration. removenonlowercase : : [ Char ] > [ Char ] removenonlowercase s = [ a a < s, a elem [ a.. z ] ] The first line describes the type signature that tells, what is the type of a variable. A type signature can be defined as: type = I n t type > type [ type, type ] ( type, type ) the first says, it is a Integer type variable, the second says, it is a function which takes a parameter of some type and returns a result of same type, the third says, it is a list of same type variable and the last says, it is a tuple which can contain variables of different types. The :: can be read as has type of. The functionremovenonlowercase has a type of [Char]->[Char], it means that it maps from a String to a String because it takes one String as a parameter and returns another as a result. The [Char] type is synonymous with String so if we write removenonlowercase :: String -> String it is also correct, but in this case compiler can infer by itself the type declaration of function. The second line of function describes a list comprehension, that is defined as [x x <- l, p(x)], the last part of the list comprehension is the predicate which is also called filtering. In Haskell, if we want to make our own data type, the way is to use the data keyword to define a type. The Bool data type is defined in the standard library as: data Bool = False True here data means that we are introducing a new data type. The part before the = denotes the type, in this case it is Bool. The part after the = are value constructors (specifies the different values that this type can have ). The is read as or. The another way to write data types is: data Person = Person { firstname : : S t r i n g, lastname : : S t r i n g, age : : Int } d e r i v i n g (Show) instead of giving filed types one after another and separating them with spaces, we use curly brackets, write the name of the field then specify the type and the resulting data type is the same. Haskell functions can take functions as parameters and gives functions as return values. A function that does either of those is called a higher-order function. If we want to define computations by defining what stuff is instead of defining steps that changes some state and looping them, higher-order functions are crucial. The map function in Haskell is an example of a higher-order function. The map takes arguments as a function f with a list of elements and applies that function to every element in the list and produce a new list. This is how the type signature of map is defined in Haskell: map : : ( a > b ) > [ a ] > [ b ] map [ ] = [ ] map f ( x : xs ) = f x : map f xs it says it takes an a and returns a b, a list of a s and return a list of b s. An example of map function is:

4 map (+3) [ 2, 5, 9, 1 5 ] r e t u r n s [ 5, 8, 12, 1 8 ] The benefits of Haskell are: (1) Code is shorter, cleaner and high maintainable. (2) Higher-order function to reduce the amount of repetition. (3) Requires shorter development times. (4) List comprehension to make a list based on existing list. (5) Less prone to errors, higher reliability. (6) It is easy to learn and programs are often easier to understand. (7) Lambda expression to create functions without giving them explicit names. 3. PROPOSITION In this section we will discuss Business Process Modeling using Functional Programming. The Figure 4 shows big picture of our proposition concept. kind of data, the number of resources are indicated by the number of anonymous tokens on the places. The arrow represents a transition, which takes resources from the previous place and provides it to the next place, that is the output place. A transition is only enabled when tokens are available on all input places. When a transition is fired it consumes a token from all the input places and provides tokens to each output places. We use Coloured Petri Nets to differentiate tokens when multiple tokens are available in the same place. Till now we have discussed how to represent business processes using Petri Nets. Now, we will see how the different elements of a business model can be viewed in terms of Functional Programming. The activities that are actions for a particular purpose, information that is data related to a particular activity and links which are connection between the different activities. More precisely, we can say that activities in the model can be represented through functions, the information can be represented through data types and the transitions that are transformations of one activity to another activity that can be represented through higher-order functions or list comprehension. Table 1 shows the relation of the different elements of a model in respect of Functional Programming. Business Process Functional Program Activity Function (Data - Data) Information Datatype Link Higher-order function Table 1. Translation of Business Process into Function Programs. Fig. 4. Big picture of our proposition concept. Earlier we have already discussed about the model of ATM machine for withdrawing money (Figure 1). Now, we will describe the same model in terms of Petri Net as a part of our contribution. The Figure 5 shows how the different processes of ATM model can be illustrated through Petri Net, in this we have divided the conditional part by a pair of transitions. Fig. 5. Petri Net for the ATM Figure 1. The activities can be denoted through circles and each circle represents a place which is a simply container where resources may be located. The resources can be of any As we will be using Haskell language as a tool for implementing our proposition, so now we will define how Haskell can be mapped with Petri Net and we will also present a general support code for the proposition. In Haskell, we have places with names, types, initial marking, transitions with names, optional conditions or guards and arrows from input places to output places. Transitions cannot be mapped to a functions directly because for a given marking a single transition might be enabled for several combination of input tokens and there can be a possibility that the mapping would give transition functions of different types but here for easy understanding we are using the same type of functions for this proposition. The Haskell code for single step simulation with a textual trace for the Petri Net model (Figure 5) is presented in different parts with explanation as follows: In Figure 6, the third line says that we have defined the type Mark which is the list of places in the net representing the type of marking in them, each place may contain multiple tokens in it. The m0 :: Mark describes that m0 is a type of Mark and represents the initial marking on the first place. The lines 12, 13, 14 and 15 describes that we are making a synonym for an already existing data type, Name will have the name of the transition which is a string value, for the condition part, it will have parameter of type Mark and returns a result of Boolean type, for the action part, it will have Mark as a parameter and returns a result of same type and Transition will have three things Name, Condition and Action.

5 Fig. 9. Code part 4. Fig. 6. Code Part 1. In Figure 7, ts :: [Transition] describes that ts is a type of list of Transition. The general form of the Transition is defined as [( Name, Condition, Action)] here the Name represents the name of the transitions, Condition is represented through anonymous function which will check the input place is not empty and Action is defined as, the transition of first markings from input places to next output place and the process continues until all the markings from the list of markings on input place has been exhausted or certain conditions were not met causing the transition to stop. Fig. 10. Code part 5. In Figure 11, is about the program execution. The do keyword is use to stick together several Input/Output actions into one. The program begins from the main function which calls the main simulation function that is run which is parametrized by initial marking. Firstly it will print the markings of the initial input place then it will call enabledts with two parameters and take available transitions which will be printed by printts function. Then, after taking input from user applyts will compare the input from user with the name of available enabled transition and action will be applied accordingly. Fig. 7. Code Part 2. In Figure 8, shows the function printts which prints the name of the transitions. This function prints the transitions if they are available otherwise it will wait and check for other transitions to print. Fig. 11. Code part 6. Fig. 8. Code part 3. In Figure 9, shows the function enabledts which checks the available transition in the net. Depending on the availability of tokens on input place it checks if the transition is possible and if the condition is met it takes the available transitions and enables them. In Figure 10, shows the applyts function which compares the name given by the user with the name of available enabled transitions, if the name matches then the defined Action will be applied to the model or the model will end and user will have to start it again. The graphical specification of communication structure (Nets) is represented in the form of textual specification so that the programmer can have easy access to perform experiments and data manipulation. The limitation of this code that it has single marking on the input place and every transition will perform a single action on that marking which is predefined in the code. Depending on the user, the code can be further improved by taking different markings on different places of different types like Int, Long, String, Double. And also, the code can be further modified so that the user can provide markings during runtime which can also be saved to a text file and can be used later. This code can be found at:

6 4. CONCLUSION AND FUTURE WORK In this paper we have presented a new semantics for Business Process Modeling and how to model business processes using Petri Nets. We have also presented Business Process Modeling using Functional Programming for which we have used Haskell language. The code has been presented as an example to help our proposition. We have also drawn a comparison between Functional Programming and Object Oriented Programming. We have also discussed important features, advantages and disadvantages of Functional Programming and also discussed the benefits of Haskell language. For future work we plan to develop a generator that will automatically translate the business process model into the Functional Programming concepts. We have to do more experiments on more complex models to find out its efficiency. We proposed to develop a Graphical User Interface (GUI) that can be considered to facilitate the use as a tool/simulator for translation purposes. van Hee, K.M., Sidorova, N., and van der Werf, J.M. (2013). Business Process Modeling Using Petri Nets, Springer Berlin Heidelberg, Berlin, Heidelberg. Wohed, P., van der Aalst, W.M.P., Dumas, M., ter Hofstede, A.H.M., and Russell, N. (2006). On the Suitability of BPMN for Business Process Modelling: 4th International Conference, BPM 2006, Vienna, Austria, September 5-7, Proceedings, Springer Berlin Heidelberg, Berlin, Heidelberg. Zhang, N., Jiang, M., and Ding, Z. (2010). Executing petri net based system model. In 2010 International Conference on Computer Application and System Modeling (ICCASM 2010), volume 4, 4. REFERENCES Aguilar-Saven, R.S. (2004). Business process modelling: Review and framework. International Journal of Production Economics, 90(2), Production Planning and Control. Andre, E., Choppy, C., and Reggio, G. (2014). Activity Diagrams Patterns for Modeling Business Processes, Springer International Publishing, Heidelberg. Coquand, T. (2008). Constructive Mathematics and Functional Programming: 17th European Symposium on Programming, ESOP 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, Proceedings, Springer Berlin Heidelberg, Berlin, Heidelberg. Geambasu, C.V. (2012). Bpmn vs. uml activity diagram for business process modeling. Journal of Accounting and Management Information Systems, 11(4), Herden, A., Farias, P.P.M., and Albuquerque, A.B. (2015). An Approach Based on BPMN to Detail Use Cases, Springer International Publishing, Cham. Hughes, J. (1989). Why functional programming matters. Comput. J., 32(2), Jensen, K. and Kristensen, L.M. (2009). Coloured Petri Nets: Modelling and Validation of Concurrent Systems. Springer Publishing Company, Incorporated, 1st edition. Lyons, J. (1977). Semantics. Semantics. Cambridge University Press. Mili, H., Tremblay, G., Jaoude, G.B., Lefebvre, E., Elabed, L., and Boussaidi, G. (2010). Business process modeling languages: Sorting through the alphabet soup. ACM Comput. Surv., 43(1), 4 1. Reinke, C. (2000). Haskell-Coloured Petri Nets: 11th International Workshop, IFL 99, Lochem, The Netherlands, September 7-10, Selected Papers, Springer Berlin Heidelberg, Berlin, Heidelberg. Reisig, W. (1985). Petri Nets: An Introduction. Springer- Verlag New York, Inc., New York, NY, USA. van der Aalst, W.M.P. (1998). The application of petri nets to workflow management. Journal of Circuits, Systems and Computers, 08(01),

Workflow : Patterns and Specifications

Workflow : Patterns and Specifications Workflow : Patterns and Specifications Seminar Presentation by Ahana Pradhan Under the guidance of Prof. Rushikesh K. Joshi Department of Computer Science and Engineering Indian Institute of Technology,

More information

CS 11 Haskell track: lecture 1

CS 11 Haskell track: lecture 1 CS 11 Haskell track: lecture 1 This week: Introduction/motivation/pep talk Basics of Haskell Prerequisite Knowledge of basic functional programming e.g. Scheme, Ocaml, Erlang CS 1, CS 4 "permission of

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 13 February 12, 2018 Mutable State & Abstract Stack Machine Chapters 14 &15 Homework 4 Announcements due on February 20. Out this morning Midterm results

More information

Dealing with Artifact-Centric Systems: a Process Mining Approach

Dealing with Artifact-Centric Systems: a Process Mining Approach Dealing with Artifact-Centric Systems: a Process Mining Approach Guangming Li and Renata Medeiros de Carvalho 2 Abstract: Process mining provides a series of techniques to analyze business processes based

More information

Petri-net-based Workflow Management Software

Petri-net-based Workflow Management Software Petri-net-based Workflow Management Software W.M.P. van der Aalst Department of Mathematics and Computing Science, Eindhoven University of Technology, P.O. Box 513, NL-5600 MB, Eindhoven, The Netherlands,

More information

Structure of Abstract Syntax trees for Colored Nets in PNML

Structure of Abstract Syntax trees for Colored Nets in PNML Structure of Abstract Syntax trees for Colored Nets in PNML F. Kordon & L. Petrucci Fabrice.Kordon@lip6.fr Laure.Petrucci@lipn.univ-paris13.fr version 0.2 (draft) June 26, 2004 Abstract Formalising the

More information

A SMIL Editor and Rendering Tool for Multimedia Synchronization and Integration

A SMIL Editor and Rendering Tool for Multimedia Synchronization and Integration A SMIL Editor and Rendering Tool for Multimedia Synchronization and Integration Stephen J.H. Yang 1, Norman W.Y. Shao 2, Kevin C.Y. Kuo 3 National Central University 1 National Kaohsiung First University

More information

Supporting the Workflow Management System Development Process with YAWL

Supporting the Workflow Management System Development Process with YAWL Supporting the Workflow Management System Development Process with YAWL R.S. Mans 1, W.M.P. van der Aalst 1 Department of Mathematics and Computer Science, Eindhoven University of Technology, P.O. ox 513,

More information

Introduction to OCaml

Introduction to OCaml Fall 2018 Introduction to OCaml Yu Zhang Course web site: http://staff.ustc.edu.cn/~yuzhang/tpl References Learn X in Y Minutes Ocaml Real World OCaml Cornell CS 3110 Spring 2018 Data Structures and Functional

More information

Concepts of Programming Languages

Concepts of Programming Languages Concepts of Programming Languages Lecture 15 - Functional Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages

More information

IMPERATIVE PROGRAMS BEHAVIOR SIMULATION IN TERMS OF COMPOSITIONAL PETRI NETS

IMPERATIVE PROGRAMS BEHAVIOR SIMULATION IN TERMS OF COMPOSITIONAL PETRI NETS IMPERATIVE PROGRAMS BEHAVIOR SIMULATION IN TERMS OF COMPOSITIONAL PETRI NETS Leontyev Denis Vasilevich, Kharitonov Dmitry Ivanovich and Tarasov Georgiy Vitalievich ABSTRACT Institute of Automation and

More information

Functional programming in C#

Functional programming in C# Functional programming in C# A quick approach to another paradigm Nacho Iborra IES San Vicente This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License.

More information

Chapter 11 :: Functional Languages

Chapter 11 :: Functional Languages Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative

More information

Management Science Letters

Management Science Letters Management Science Letters 4 (2014) 111 116 Contents lists available at GrowingScience Management Science Letters homepage: www.growingscience.com/msl A new method for converting extended version of petri

More information

CSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc.

CSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc. CSC312 Principles of Programming Languages : Functional Programming Language Overview of Functional Languages They emerged in the 1960 s with Lisp Functional programming mirrors mathematical functions:

More information

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE?

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE? 1. Describe History of C++? The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity

More information

JVM ByteCode Interpreter

JVM ByteCode Interpreter JVM ByteCode Interpreter written in Haskell (In under 1000 Lines of Code) By Louis Jenkins Presentation Schedule ( 15 Minutes) Discuss and Run the Virtual Machine first

More information

7. Introduction to Denotational Semantics. Oscar Nierstrasz

7. Introduction to Denotational Semantics. Oscar Nierstrasz 7. Introduction to Denotational Semantics Oscar Nierstrasz Roadmap > Syntax and Semantics > Semantics of Expressions > Semantics of Assignment > Other Issues References > D. A. Schmidt, Denotational Semantics,

More information

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming. Big Picture. Design of Programming Languages Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics

More information

Process Mining Discovering Workflow Models from Event-Based Data

Process Mining Discovering Workflow Models from Event-Based Data Process Mining Discovering Workflow Models from Event-Based Data A.J.M.M. Weijters W.M.P van der Aalst Eindhoven University of Technology, P.O. Box 513, NL-5600 MB, Eindhoven, The Netherlands, +31 40 2473857/2290

More information

Computation of enabled transition instances for colored Petri nets

Computation of enabled transition instances for colored Petri nets Computation of enabled transition instances for colored Petri nets Fei Liu and Monika Heiner Department of Computer Science, Brandenburg University of Technology Postbox 10 13 44, 03013 Cottbus, Germany

More information

Haskell 98 in short! CPSC 449 Principles of Programming Languages

Haskell 98 in short! CPSC 449 Principles of Programming Languages Haskell 98 in short! n Syntax and type inferencing similar to ML! n Strongly typed! n Allows for pattern matching in definitions! n Uses lazy evaluation" F definition of infinite lists possible! n Has

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland)

Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland) UML STATECHARTS AND PETRI NETS MODEL COMPARIS FOR SYSTEM LEVEL MODELLING Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland) The system level modelling can be carried out with using some miscellaneous

More information

Haske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell

Haske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dk The most popular purely functional, lazy programming language Functional programming language : a program

More information

CA441 BPM - Modelling Workflow with Petri Nets. Modelling Workflow with Petri Nets. Workflow Management Issues. Workflow. Process.

CA441 BPM - Modelling Workflow with Petri Nets. Modelling Workflow with Petri Nets. Workflow Management Issues. Workflow. Process. Modelling Workflow with Petri Nets 1 Workflow Management Issues Georgakopoulos,Hornick, Sheth Process Workflow specification Workflow Implementation =workflow application Business Process Modelling/ Workflow

More information

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen COP4020 Programming Languages Functional Programming Prof. Robert van Engelen Overview What is functional programming? Historical origins of functional programming Functional programming today Concepts

More information

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered

More information

Com S 541. Programming Languages I

Com S 541. Programming Languages I Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR

More information

An introduction introduction to functional functional programming programming using usin Haskell

An introduction introduction to functional functional programming programming using usin Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dkau Haskell The most popular p purely functional, lazy programming g language Functional programming language : a program

More information

THE SELECTION OF THE ARCHITECTURE OF ELECTRONIC SERVICE CONSIDERING THE PROCESS FLOW

THE SELECTION OF THE ARCHITECTURE OF ELECTRONIC SERVICE CONSIDERING THE PROCESS FLOW THE SELECTION OF THE ARCHITECTURE OF ELECTRONIC SERVICE CONSIDERING THE PROCESS FLOW PETERIS STIPRAVIETIS, MARIS ZIEMA Institute of Computer Control, Automation and Computer Engineering, Faculty of Computer

More information

On the correctness of template metaprograms

On the correctness of template metaprograms Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007 Vol 2 pp 301 308 On the correctness of template metaprograms Ádám Sipos, István Zólyomi, Zoltán

More information

Functional Programming Lecture 13: FP in the Real World

Functional Programming Lecture 13: FP in the Real World Functional Programming Lecture 13: FP in the Real World Viliam Lisý Artificial Intelligence Center Department of Computer Science FEE, Czech Technical University in Prague viliam.lisy@fel.cvut.cz 1 Mixed

More information

Overloading, Type Classes, and Algebraic Datatypes

Overloading, Type Classes, and Algebraic Datatypes Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827

More information

SD314 Outils pour le Big Data

SD314 Outils pour le Big Data Institut Supérieur de l Aéronautique et de l Espace SD314 Outils pour le Big Data Functional programming in Python Christophe Garion DISC ISAE Christophe Garion SD314 Outils pour le Big Data 1/ 35 License

More information

Processadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II)

Processadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II) Processadors de Llenguatge II Functional Paradigm Pratt A.7 Robert Harper s SML tutorial (Sec II) Rafael Ramirez Dep Tecnologia Universitat Pompeu Fabra Paradigm Shift Imperative Paradigm State Machine

More information

A general introduction to Functional Programming using Haskell

A general introduction to Functional Programming using Haskell A general introduction to Functional Programming using Haskell Matteo Rossi Dipartimento di Elettronica e Informazione Politecnico di Milano rossi@elet.polimi.it 1 Functional programming in a nutshell

More information

Typestate-Oriented Design

Typestate-Oriented Design Typestate-Oriented Design A Coloured Petri Net Approach Jorge Luis Guevara Díaz Department of Computer Science Institute of Mathematics and Statistics São Paulo University,São Paulo-Brazil jorjasso@vision.ime.usp.br

More information

Monad Background (3A) Young Won Lim 11/18/17

Monad Background (3A) Young Won Lim 11/18/17 Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Haskell Overview II (2A) Young Won Lim 8/9/16

Haskell Overview II (2A) Young Won Lim 8/9/16 (2A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

CSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions

CSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions 1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions

More information

PETRI NET ANALYSIS OF BATCH RECIPES

PETRI NET ANALYSIS OF BATCH RECIPES Presented at FOCAPO 98, Snowbird, USA. PETRI NET ANALYSIS OF BATCH RECIPES STRUCTURED WITH GRAFCHART Charlotta Johnsson and Karl-Erik Årzén Department of Automatic Control, Lund Institute of Technology,

More information

THE CONCEPTION AND APPLICATION OF PFL : A PROCESS FUNCTIONAL PROGRAMMING LANGUAGE

THE CONCEPTION AND APPLICATION OF PFL : A PROCESS FUNCTIONAL PROGRAMMING LANGUAGE UDC 51:681.3 Ján Kollár THE CONCEPTION AND APPLICATION OF PFL : A PROCESS FUNCTIONAL PROGRAMMING LANGUAGE A new process functional programming paradigm and its application in PFL a process functional programming

More information

Integration of UML and Petri Net for the Process Modeling and Analysis in Workflow Applications

Integration of UML and Petri Net for the Process Modeling and Analysis in Workflow Applications Integration of UML and Petri Net for the Process Modeling and Analysis in Workflow Applications KWAN-HEE HAN *, SEOCK-KYU YOO **, BOHYUN KIM *** Department of Industrial & Systems Engineering, Gyeongsang

More information

Selection of UML Models for Test Case Generation: A Discussion on Techniques to Generate Test Cases

Selection of UML Models for Test Case Generation: A Discussion on Techniques to Generate Test Cases St. Cloud State University therepository at St. Cloud State Culminating Projects in Computer Science and Information Technology Department of Computer Science and Information Technology 6-2018 Selection

More information

A Solution Based on Modeling and Code Generation for Embedded Control System

A Solution Based on Modeling and Code Generation for Embedded Control System J. Software Engineering & Applications, 2009, 2: 160-164 doi:10.4236/jsea.2009.23023 Published Online October 2009 (http://www.scirp.org/journal/jsea) A Solution Based on Modeling and Code Generation for

More information

Monad Background (3A) Young Won Lim 11/8/17

Monad Background (3A) Young Won Lim 11/8/17 Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Advanced Topics in Programming Languages Lecture 2 - Introduction to Haskell

Advanced Topics in Programming Languages Lecture 2 - Introduction to Haskell Advanced Topics in Programming Languages Lecture 2 - Introduction to Haskell Ori Bar El Maxim Finkel 01/11/17 1 History Haskell is a lazy, committee designed, pure functional programming language that

More information

MODELING INTERACTIVE SYSTEMS WITH HIERARCHICAL COLORED PETRI NETS

MODELING INTERACTIVE SYSTEMS WITH HIERARCHICAL COLORED PETRI NETS MODELING INTERACTIVE SYSTEMS WITH HIERARCHICAL COLORED PETRI NETS Mohammed Elkoutbi and Rudolf K. Keller Université de Montréal, DIRO, C.P. 6128, Succursale Centre-ville, Montréal, Canada, H3C 3J7 {elkoutbi,

More information

Functional Programming and Haskell

Functional Programming and Haskell Functional Programming and Haskell Tim Dawborn University of Sydney, Australia School of Information Technologies Tim Dawborn Functional Programming and Haskell 1/22 What are Programming Paradigms? A programming

More information

From Event-B Models to Dafny Code Contracts

From Event-B Models to Dafny Code Contracts From Event-B Models to Dafny Code Contracts Mohammadsadegh Dalvandi, Michael Butler, Abdolbaghi Rezazadeh Electronic and Computer Science School, University of Southampton Southampton, United Kingdom {md5g11,mjb,ra3}@ecs.soton.ac.uk

More information

Issues on Decentralized Consistency Checking of Multi-lateral Collaborations

Issues on Decentralized Consistency Checking of Multi-lateral Collaborations Issues on Decentralized Consistency Checking of Multi-lateral Collaborations Andreas Wombacher University of Twente Enschede The Netherlands a.wombacher@utwente.nl Abstract Decentralized consistency checking

More information

Scala : an LLVM-targeted Scala compiler

Scala : an LLVM-targeted Scala compiler Scala : an LLVM-targeted Scala compiler Da Liu, UNI: dl2997 Contents 1 Background 1 2 Introduction 1 3 Project Design 1 4 Language Prototype Features 2 4.1 Language Features........................................

More information

Paradigms of computer programming

Paradigms of computer programming Paradigms of computer programming Louv1.1x and Louv1.2x form a two-course sequence Together they teach programming as a unified discipline that covers all programming languages Second-year university level:

More information

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Summary 1. Predictive Parsing 2. Large Step Operational Semantics (Natural) 3. Small Step Operational Semantics

More information

Introduction to Concepts in Functional Programming. CS16: Introduction to Data Structures & Algorithms Spring 2017

Introduction to Concepts in Functional Programming. CS16: Introduction to Data Structures & Algorithms Spring 2017 Introduction to Concepts in Functional Programming CS16: Introduction to Data Structures & Algorithms Spring 2017 Outline Functions State Functions as building blocks Higher order functions Map Reduce

More information

Process Model Consistency Measurement

Process Model Consistency Measurement IOSR Journal of Computer Engineering (IOSRJCE) ISSN: 2278-0661, ISBN: 2278-8727Volume 7, Issue 6 (Nov. - Dec. 2012), PP 40-44 Process Model Consistency Measurement Sukanth Sistla CSE Department, JNTUniversity,

More information

Logical Methods in... using Haskell Getting Started

Logical Methods in... using Haskell Getting Started Logical Methods in... using Haskell Getting Started Jan van Eijck May 4, 2005 Abstract The purpose of this course is to teach a bit of functional programming and logic, and to connect logical reasoning

More information

A Brief Introduction to Scheme (I)

A Brief Introduction to Scheme (I) A Brief Introduction to Scheme (I) Philip W. L. Fong pwlfong@cs.uregina.ca Department of Computer Science University of Regina Regina, Saskatchewan, Canada Scheme Scheme I p.1/44 Scheme: Feature Set A

More information

The design of a programming language for provably correct programs: success and failure

The design of a programming language for provably correct programs: success and failure The design of a programming language for provably correct programs: success and failure Don Sannella Laboratory for Foundations of Computer Science School of Informatics, University of Edinburgh http://homepages.inf.ed.ac.uk/dts

More information

9/21/17. Outline. Expression Evaluation and Control Flow. Arithmetic Expressions. Operators. Operators. Notation & Placement

9/21/17. Outline. Expression Evaluation and Control Flow. Arithmetic Expressions. Operators. Operators. Notation & Placement Outline Expression Evaluation and Control Flow In Text: Chapter 6 Notation Operator evaluation order Operand evaluation order Overloaded operators Type conversions Short-circuit evaluation of conditions

More information

Joint Entity Resolution

Joint Entity Resolution Joint Entity Resolution Steven Euijong Whang, Hector Garcia-Molina Computer Science Department, Stanford University 353 Serra Mall, Stanford, CA 94305, USA {swhang, hector}@cs.stanford.edu No Institute

More information

Qualitative Analysis of WorkFlow nets using Linear Logic: Soundness Verification

Qualitative Analysis of WorkFlow nets using Linear Logic: Soundness Verification Proceedings of the 2009 IEEE International Conference on Systems, Man, and Cybernetics San Antonio, TX, USA - October 2009 Qualitative Analysis of WorkFlow nets using Linear Logic: Soundness Verification

More information

A Tool for Supporting Object-Aware Processes

A Tool for Supporting Object-Aware Processes A Tool for Supporting Object-Aware Processes Carolina Ming Chiao, Vera Künzle, Kevin Andrews, Manfred Reichert Institute of Databases and Information Systems University of Ulm, Germany Email: {carolina.chiao,

More information

Termination Analysis of the Transformation UML to CSP

Termination Analysis of the Transformation UML to CSP Magyar Kutatók 8. Nemzetközi Szimpóziuma 8 th International Symposium of Hungarian Researchers on Computational Intelligence and Informatics Termination Analysis of the Transformation UML to CSP Márk Asztalos,

More information

Programming Paradigms

Programming Paradigms PP 2017/18 Unit 12 Functions and Data Types in Haskell 1/45 Programming Paradigms Unit 12 Functions and Data Types in Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE

More information

2015 International Conference on Computer, Control, Informatics and Its Applications

2015 International Conference on Computer, Control, Informatics and Its Applications 2015 International Conference on Computer, Control, Informatics and Its Applications Business Process Optimization from Single Timestamp Event Log Riyanarto Sarno *, Fitrianing Haryadita, Kartini, Sarwosri

More information

Programming with Math and Logic

Programming with Math and Logic .. Programming with Math and Logic an invitation to functional programming Ed Morehouse Wesleyan University The Plan why fp? terms types interfaces The What and Why of Functional Programming Computing

More information

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and

More information

Building Petri nets tools around Neco compiler

Building Petri nets tools around Neco compiler Building Petri nets tools around Neco compiler Lukasz Fronc and Franck Pommereau {fronc,pommereau}@ibisc.univ-evry.fr IBISC, Université d Évry/Paris-Saclay IBGBI, 23 boulevard de France 91037 Évry Cedex,

More information

Analysis of BPMN Models

Analysis of BPMN Models Analysis of BPMN Models Addis Gebremichael addisalemayehu.gebremichael@student.uantwerpen.be Abstract The Business Process Modeling Notation (BPMN) is a standard notation for capturing business processes,

More information

Shell CSCE 314 TAMU. Haskell Functions

Shell CSCE 314 TAMU. Haskell Functions 1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can

More information

Programming language design and analysis

Programming language design and analysis Programming language design and analysis Introduction Marius Minea 25 September 2017 Why this course? Programming languages are fundamental and one of the oldest CS fields Language design is an important

More information

3. Functional Programming. Oscar Nierstrasz

3. Functional Programming. Oscar Nierstrasz 3. Functional Programming Oscar Nierstrasz Roadmap > Functional vs. Imperative Programming > Pattern Matching > Referential Transparency > Lazy Evaluation > Recursion > Higher Order and Curried Functions

More information

Modeling Routing Constructs to Represent Distributed Workflow Processes Using Extended Petri Nets

Modeling Routing Constructs to Represent Distributed Workflow Processes Using Extended Petri Nets Modeling Routing Constructs to Represent Distributed Workflow Processes Using Extended Petri Nets Mehmet Karay * Final International University, Business Administrative, Toroslar Avenue, No:6, 99370, Catalkoy,

More information

CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011

CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011 CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics Dan Grossman Spring 2011 Review e ::= λx. e x e e c v ::= λx. e c τ ::= int τ τ Γ ::= Γ, x : τ (λx. e) v e[v/x] e 1 e 1 e 1 e

More information

Side Effects (3A) Young Won Lim 1/13/18

Side Effects (3A) Young Won Lim 1/13/18 Side Effects (3A) Copyright (c) 2016-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Intermediate Code Generation

Intermediate Code Generation Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

More information

Haskell Overview II (2A) Young Won Lim 8/23/16

Haskell Overview II (2A) Young Won Lim 8/23/16 (2A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

HYBRID PETRI NET MODEL BASED DECISION SUPPORT SYSTEM. Janetta Culita, Simona Caramihai, Calin Munteanu

HYBRID PETRI NET MODEL BASED DECISION SUPPORT SYSTEM. Janetta Culita, Simona Caramihai, Calin Munteanu HYBRID PETRI NET MODEL BASED DECISION SUPPORT SYSTEM Janetta Culita, Simona Caramihai, Calin Munteanu Politehnica University of Bucharest Dept. of Automatic Control and Computer Science E-mail: jculita@yahoo.com,

More information

Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language

Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language Economy Informatics, vol. 9, no. 1/2009 13 Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language Ian ORLOVSKI Technical University of Moldova, Chisinau, Moldova

More information

Lecture 8: Summary of Haskell course + Type Level Programming

Lecture 8: Summary of Haskell course + Type Level Programming Lecture 8: Summary of Haskell course + Type Level Programming Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense October 31, 2017 Principles from Haskell

More information

Chapter 2 Basic Elements of C++

Chapter 2 Basic Elements of C++ C++ Programming: From Problem Analysis to Program Design, Fifth Edition 2-1 Chapter 2 Basic Elements of C++ At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class Discussion

More information

Introduction to Functional Programming in Haskell 1 / 56

Introduction to Functional Programming in Haskell 1 / 56 Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order

More information

Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems

Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems Somayeh Azizi 1, Vahid Panahi 2 Computer science department, Sama Technical and vocational, Training

More information

An introduction to functional programming. July 23, 2010

An introduction to functional programming. July 23, 2010 An introduction to functional programming July 23, 2010 About Outline About About What is functional programming? What is? Why functional programming? Why? is novel. is powerful. is fun. About A brief

More information

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona 1/37 CSc 372 Comparative Programming Languages 2 : Functional Programming Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/37 Programming Paradigms

More information

Towards Automated Process Modeling based on BPMN Diagram Composition

Towards Automated Process Modeling based on BPMN Diagram Composition Towards Automated Process Modeling based on BPMN Diagram Composition Piotr Wiśniewski, Krzysztof Kluza and Antoni Ligęza AGH University of Science and Technology al. A. Mickiewicza 30, 30-059 Krakow, Poland

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 20 February 28, 2018 Transition to Java Announcements HW05: GUI programming Due: THURSDAY!! at 11:59:59pm Lots of TA office hours today Thursday See Piazza

More information

CS 242. Fundamentals. Reading: See last slide

CS 242. Fundamentals. Reading: See last slide CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language

More information

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS 1 THE FORMALIZATION OF MATHEMATICS by Harvey M. Friedman Ohio State University Department of Mathematics friedman@math.ohio-state.edu www.math.ohio-state.edu/~friedman/ May 21, 1997 Can mathematics be

More information

CMSC 330: Organization of Programming Languages. Operational Semantics

CMSC 330: Organization of Programming Languages. Operational Semantics CMSC 330: Organization of Programming Languages Operational Semantics Notes about Project 4, Parts 1 & 2 Still due today (7/2) Will not be graded until 7/11 (along with Part 3) You are strongly encouraged

More information

Denotational Semantics. Domain Theory

Denotational Semantics. Domain Theory Denotational Semantics and Domain Theory 1 / 51 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning

More information

Introduction. chapter Functions

Introduction. chapter Functions chapter 1 Introduction In this chapter we set the stage for the rest of the book. We start by reviewing the notion of a function, then introduce the concept of functional programming, summarise the main

More information

CSCC24 Functional Programming Scheme Part 2

CSCC24 Functional Programming Scheme Part 2 CSCC24 Functional Programming Scheme Part 2 Carolyn MacLeod 1 winter 2012 1 Based on slides from Anya Tafliovich, and with many thanks to Gerald Penn and Prabhakar Ragde. 1 The Spirit of Lisp-like Languages

More information

Lists. Michael P. Fourman. February 2, 2010

Lists. Michael P. Fourman. February 2, 2010 Lists Michael P. Fourman February 2, 2010 1 Introduction The list is a fundamental datatype in most functional languages. ML is no exception; list is a built-in ML type constructor. However, to introduce

More information

CSE 3302 Programming Languages Lecture 8: Functional Programming

CSE 3302 Programming Languages Lecture 8: Functional Programming CSE 3302 Programming Languages Lecture 8: Functional Programming (based on the slides by Tim Sheard) Leonidas Fegaras University of Texas at Arlington CSE 3302 L8 Spring 2011 1 Functional Programming Languages

More information

Background Type Classes (1B) Young Won Lim 6/28/18

Background Type Classes (1B) Young Won Lim 6/28/18 Background Type Classes (1B) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Haskell Programming

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Haskell Programming About the Tutorial Haskell is a widely used purely functional language. Functional programming is based on mathematical functions. Besides Haskell, some of the other popular languages that follow Functional

More information

CODING TCPN MODELS INTO THE SIMIO SIMULATION ENVIRONMENT

CODING TCPN MODELS INTO THE SIMIO SIMULATION ENVIRONMENT CODING TCPN MODELS INTO THE SIMIO SIMULATION ENVIRONMENT Miguel Mujica (a), Miquel Angel Piera (b) (a,b) Autonomous University of Barcelona, Faculty of Telecommunications and Systems Engineering, 08193,

More information