This paper provides several induction rules that can be used to prove properties of effectful data types. Our results are semantic in nature and build upon Hermida and Jacobs’ fibrational formulation of induction for polynomial data types and its extension to all inductive data types by Ghani, Johann, and Fumex. An effectful data type μ(TF) is built from a functor F that describes data, and a monad T that computes effects. Our main contribution is to derive induction rules that are generic over all functors F and monads T such that μ(TF) exists. Along the way, we also derive a principle of definition by structural recursion for effectful data types that is similarly generic. Our induction rule is also generic over the kinds of properties to be proved: like the work on which we build, we work in a general fibrational setting and so can accommodate very general notions of properties, rather than just those of particular syntactic forms. We give examples exploiting the generality of our results, and show how our results specialize to those in the literature, particularly those of Filinski and Støvring.


  1. 1.
    Atkey, R., Johann, P., Ghani, N.: When is a Type Refinement an Inductive Type? In: Hofmann, M. (ed.) FOSSACS 2011. LNCS, vol. 6604, pp. 72–87. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  2. 2.
    Burstall, R.: Proving Properties of Programs by Structural Induction. Computer Journal 12(1), 41–48 (1969)zbMATHGoogle Scholar
  3. 3.
    Crole, R., Pitts, A.: New Foundations for Fixpoint Computations: FIX-Hyperdoctrines and the FIX-Logic. Information and Computation 98(2), 171–210 (1992)MathSciNetzbMATHCrossRefGoogle Scholar
  4. 4.
    Fokkinga, M.: Monadic Maps and Folds for Arbitrary Datatypes. Technical Report, University of Twente (1994)Google Scholar
  5. 5.
    Filinski, A., Støvring, K.: Inductive Reasoning About Effectful Data Types. In: Proc. International Conference on Functional Programming, pp. 97–110 (2007)Google Scholar
  6. 6.
    Gill, A., Hutton, G.: The worker/wrapper Transformation. Journal of Functional Programming 19(2), 227–251 (2009)zbMATHCrossRefGoogle Scholar
  7. 7.
    Ghani, N., Johann, P., Fumex, C.: Fibrational Induction Rules for Initial Algebras. In: Dawar, A., Veith, H. (eds.) CSL 2010. LNCS, vol. 6247, pp. 336–350. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  8. 8.
    Ghani, N., Johann, P., Fumex, C.: Generic Fibrational Induction (2011) (submitted)Google Scholar
  9. 9.
    Hermida, C., Jacobs, B.: Structural Induction and Coinduction in a Fibrational Setting. Information and Computation 145, 107–152 (1998)MathSciNetzbMATHCrossRefGoogle Scholar
  10. 10.
    Jacobs, B.: Categorical Logic and Type Theory. Studies in Logic and the Foundations of Mathematics, vol. 141. Elsevier (1999)Google Scholar
  11. 11.
    Jacobs, B.: Comprehension Categories and the Semantics of Type Dependency. Theoretical Computer Science 107, 169–207 (1993)MathSciNetzbMATHCrossRefGoogle Scholar
  12. 12.
    Lehmann, D., Smyth, M.: Algebraic Specification of Data Types: A Synthetic Approach. Theory of Computing Systems 14(1), 97–139 (1981)MathSciNetzbMATHGoogle Scholar
  13. 13.
    Moggi, E.: Computational Lambda-Calculus and Monads. In: Proc. Logic in Computer Science, pp. 14–23 (1989)Google Scholar
  14. 14.
    Pardo, A.: Combining Datatypes and Effects. In: Vene, V., Yu, H.-J. (eds.) AFP 2004. LNCS, vol. 3622, pp. 171–209. Springer, Heidelberg (2005)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Robert Atkey
    • 2
  • Neil Ghani
    • 2
  • Bart Jacobs
    • 1
  • Patricia Johann
    • 2
  1. 1.Radboud UniversityThe Netherlands
  2. 2.University of StrathclydeScotland

Personalised recommendations