Distributed CTL model checking using MapReduce : theory and practice