Abstract
Forward chaining is an effective method of reasoning used in production systems. Enhancing it with a transaction support enables rollback actions in productions and opens a way to define and perform reversible reasoning schemes. We present selected implementation details of a custom transactional production system with forward chaining, based on the Rete algorithm, realized in the functional programming style. We also discuss some design issues, like operating in multi-core environment, indexing, using immutable collections, and the Software Transactional Memory in Haskell. Additionally we give a prospect of exploiting partial knowledge stored in Rete network for the purpose of performing analysis in the absence of information.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Bacchus, F.: Yee Whye Teh: Making Forward Chaining Relevant. In: Proc. 4th Intl. Conf. AI Planning Systems (1998)
Ugur, K., Nau, D.: Forward-Chaining Planning in Nondeterministic Domains. In: (AAAI 2004) Nineteenth National Conference on Artificial Intelligence (2004)
Siler, W., Buckley, J.J.: Fuzzy Expert Systems and Fuzzy Reasoning. John Wiley & Sons, Inc. (2005)
Sasikumar, M., Ramani, S., Muthu Raman, S., Anjaneyulu, K.S.R., Chandrasekar, R.: A Practical Introduction to Rule Based Expert Systems. Narosa Publishing House, New Delhi (2007)
Polach, P., Valenta, J., Jirsik, V.: Knowledge coding methods for rule-based expert systems. WSEAS Transactions on Information Science and Applications 7(8), 1101–1114 (2010)
Pakiarajah, V., Crowther, P., Hartnett, J.: Conflict Resolution Techniques for Expert Systems Used to Classify Remotely Sensed Satellite Images. GeoComputation (2000), http://www.geocomputation.org/2000/GC025/Gc025.htm
Weikum, G., Vossen, G.: Transactional Information Systems Theory - Algorithms, and the Practice of Concurrency Control and Recovery. The Morgan Kaufmann Series in Data Management Systems. Morgan Kaufmann Publishers (2002)
Bernstein, P.A., Newcomer, E.: Principles of Transaction Processing, 2nd edn. Morgan Kaufmann Publishers (2009)
Clayman, S.: Developing and Measuring Parallel Rule-Based Systems in a Functional Programming Environment. PhD Thesis. University College London, Department of Computer Science (1993)
Forgy, C.: On the efficient implementation of production systems. Department of Computer Science, Carnegie-Mellon University (1979)
Doorenbos, R.B.: Production Matching for Large Learning Systems. PhD Thesis. Computer Science Department, Carnegie Mellon University Pittsburgh, PA (1995)
Veera Narayana, M., Sunil Kumar, A., Suneel Kumar, B., Samkishan, N., Jogeswara Rao, B.: Implementation of RETE Algorithm Using Lemon Expert System. International Journal of Emerging Research in Management & Technology 2(7) (2013) ISSN: 2278-9359
Bird, R., Wadler, R.: Introduction to Functional Programming. Series in Computer Science (Hoare, C.A.R. (ed.)). Prentice Hall International (UK) Ltd. (1988)
Awodey, S.: Category Theory, 2nd edn. Oxford University Press (2010)
Peyton Jones, S.: The Implementation of Functional Programming Languages. Prentice-Hall International Series in Computer Science. Prentice Hall International (UK) Ltd. (1987)
Hudak, P.: The Haskell School of Expression, Learning Functional Programming by Multimedia. Cambridge University Press (2000)
Lipovaca, M.: Learn You a Haskell for Great Good!: A Beginner’s Guide, 1st edn. No Starch Press (April 21, 2011)
Doets, K., van Eijck, J.: The Haskell Road to Logic. Math and Programming. College Publications (2004) ISBN-10: 0954300696, ISBN-13: 978-0954300692
Haskell Wikibook, http://en.wikibooks.org/wiki/Haskell
Haskell Programming Guidelines - HaskellWiki, http://www.haskell.org/haskellwiki/Programming_guidelines
Haskell Programming Tips - HaskellWiki, http://www.haskell.org/haskellwiki/Things_to_avoid
Allison, L.: Circular Programs and SelfReferential Structures. Software Practice and Experience 19(2), 99–109 (1989)
Hughes, J.R.: A Novel Representation of Lists and Its Application to the Function “Reverse”. Information Processing Letters 22, 141–144 (1986)
Hinze, R., Paterson, R.: Finger trees: a simple general-purpose data structure. Journal of Functional Programming 16(2), 197–217 (2006)
Discolo, A., Harris, T., Marlow, S., Peyton Jones, S., Singh, S.: Lock-Free Data Structures using STM in Haskell. In: Hagiya, M. (ed.) FLOPS 2006. LNCS, vol. 3945, pp. 65–80. Springer, Heidelberg (2006)
Harris, T., Peyton Jones, S.: Transactional memory with data invariants. In: First ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing, Ottawa, Canada (June 11, 2006)
Marlow, S.: Parallel and Concurrent Programming in Haskell. OReilly Media, Inc., Sebastopol (2013) ISBN: 978-1-449-33594-6
Rete GitHub Repository, https://github.com/kongra/Rete
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Grzanek, K. (2015). Transactional Forward Chaining: A Functional Approach. In: Rutkowski, L., Korytkowski, M., Scherer, R., Tadeusiewicz, R., Zadeh, L., Zurada, J. (eds) Artificial Intelligence and Soft Computing. ICAISC 2015. Lecture Notes in Computer Science(), vol 9120. Springer, Cham. https://doi.org/10.1007/978-3-319-19369-4_54
Download citation
DOI: https://doi.org/10.1007/978-3-319-19369-4_54
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-19368-7
Online ISBN: 978-3-319-19369-4
eBook Packages: Computer ScienceComputer Science (R0)