diff --git a/src/main/scala/leon/datagen/NaiveDataGen.scala b/src/main/scala/leon/datagen/NaiveDataGen.scala
index 9726d1876529d0717113a07823eeee2c11a7cb2b..3949935200be25d5c219e1752ea1b197c173ed02 100644
--- a/src/main/scala/leon/datagen/NaiveDataGen.scala
+++ b/src/main/scala/leon/datagen/NaiveDataGen.scala
@@ -55,7 +55,7 @@ class NaiveDataGen(ctx: LeonContext, p: Program, evaluator: Evaluator, _bounds :
         // We prioritize base cases among the children.
         // Otherwise we run the risk of infinite recursion when
         // generating lists.
-        val ccChildren = act.knownCCDescendents
+        val ccChildren = act.knownCCDescendants
 
         val (leafs,conss) = ccChildren.partition(_.fields.isEmpty)
         
diff --git a/src/main/scala/leon/datagen/VanuatooDataGen.scala b/src/main/scala/leon/datagen/VanuatooDataGen.scala
index c4100ceef464368de733a11ca9b67f2a5c3226b4..013b8d870a287abf716900f1d98a92650fa3f0f5 100644
--- a/src/main/scala/leon/datagen/VanuatooDataGen.scala
+++ b/src/main/scala/leon/datagen/VanuatooDataGen.scala
@@ -134,7 +134,7 @@ class VanuatooDataGen(ctx: LeonContext, p: Program) extends DataGenerator {
 
     case act: AbstractClassType =>
       constructors.getOrElse(act, {
-        val cs = act.knownCCDescendents.map {
+        val cs = act.knownCCDescendants.map {
           cct => getConstructorFor(cct, act)
         }.toList
 
diff --git a/src/main/scala/leon/purescala/Definitions.scala b/src/main/scala/leon/purescala/Definitions.scala
index 6841dccc776ffcaee7d92e4144a777adfe0ead74..149940742fd55824e2295f0ad11590c646f418d3 100644
--- a/src/main/scala/leon/purescala/Definitions.scala
+++ b/src/main/scala/leon/purescala/Definitions.scala
@@ -138,7 +138,7 @@ object Definitions {
 
     // Guarantees that a parent always appears before its children
     def classHierarchies = classHierarchyRoots map { root =>
-      root +: root.knownDescendents
+      root +: root.knownDescendants
     }
 
     def singleCaseClasses = {
@@ -225,14 +225,14 @@ object Definitions {
 
     def knownChildren: Seq[ClassDef] = _children
 
-    def knownDescendents: Seq[ClassDef] = {
+    def knownDescendants: Seq[ClassDef] = {
       knownChildren ++ knownChildren.flatMap {
-        case acd: AbstractClassDef => acd.knownDescendents
+        case acd: AbstractClassDef => acd.knownDescendants
         case _ => Nil
       }
     }
 
-    def knownCCDescendents: Seq[CaseClassDef] = knownDescendents.collect {
+    def knownCCDescendants: Seq[CaseClassDef] = knownDescendants.collect {
       case ccd: CaseClassDef =>
         ccd
     }
diff --git a/src/main/scala/leon/purescala/ExprOps.scala b/src/main/scala/leon/purescala/ExprOps.scala
index 778c0679c85556ffb547aef153bdde232839d9da..41276c20412ab4464aa8cbb7a1123dbdd37681cc 100644
--- a/src/main/scala/leon/purescala/ExprOps.scala
+++ b/src/main/scala/leon/purescala/ExprOps.scala
@@ -1244,7 +1244,7 @@ object ExprOps {
   def isInductiveOn(sf: SolverFactory[Solver])(expr: Expr, on: Identifier): Boolean = on match {
     case IsTyped(origId, AbstractClassType(cd, tps)) =>
 
-      val toCheck = cd.knownDescendents.collect {
+      val toCheck = cd.knownDescendants.collect {
         case ccd: CaseClassDef =>
           val cct = CaseClassType(ccd, tps)
 
@@ -1465,7 +1465,7 @@ object ExprOps {
 
           def typesOf(tpe: TypeTree): Set[CaseClassDef] = tpe match {
             case AbstractClassType(ctp, _) =>
-              ctp.knownDescendents.collect { case c: CaseClassDef => c }.toSet
+              ctp.knownDescendants.collect { case c: CaseClassDef => c }.toSet
 
             case CaseClassType(ctd, _) =>
               Set(ctd)
diff --git a/src/main/scala/leon/purescala/MethodLifting.scala b/src/main/scala/leon/purescala/MethodLifting.scala
index e87c332e9598c4ab3c46e64031f2508b7a13b36e..5f41bc81188ae93ea5384341b535abf0a1ec53dd 100644
--- a/src/main/scala/leon/purescala/MethodLifting.scala
+++ b/src/main/scala/leon/purescala/MethodLifting.scala
@@ -139,7 +139,7 @@ object MethodLifting extends TransformationPhase {
         nfd.setPos(fd)
         nfd.addFlag(IsMethod(cd))
 
-        if (cd.knownDescendents.forall( _.methods.forall(_.id != fd.id))) {
+        if (cd.knownDescendants.forall( _.methods.forall(_.id != fd.id))) {
           val paramsMap = fd.params.zip(fdParams).map{case (x,y) => (x.id, y.id)}.toMap
           // Don't need to compose methods
           nfd.fullBody = postMap {
@@ -153,16 +153,16 @@ object MethodLifting extends TransformationPhase {
 
           /* (Type) parameter substitutions that look at all subclasses */
           val paramsMap = (for {
-            c <- cd.knownDescendents :+ cd
+            c <- cd.knownDescendants :+ cd
             m <- c.methods if m.id == fd.id
             (from,to) <- m.params zip fdParams
           } yield (from.id, to.id)).toMap
           val classParamsMap = (for {
-            c <- cd.knownDescendents :+ cd
+            c <- cd.knownDescendants :+ cd
             (from, to) <- c.tparams zip ctParams
           } yield (from, to.tp)).toMap
           val methodParamsMap = (for {
-            c <- cd.knownDescendents :+ cd
+            c <- cd.knownDescendants :+ cd
             m <- c.methods if m.id == fd.id
             (from,to) <- m.tparams zip fd.tparams
           } yield (from, to.tp)).toMap
diff --git a/src/main/scala/leon/purescala/Types.scala b/src/main/scala/leon/purescala/Types.scala
index 54e633e08bfa893178d984d9d1ab12925452a630..bbd1884d071c32c25c2ff6aa03fc3f288abbe1ab 100644
--- a/src/main/scala/leon/purescala/Types.scala
+++ b/src/main/scala/leon/purescala/Types.scala
@@ -93,9 +93,9 @@ object Types {
       }
     }
 
-    def knownDescendents = classDef.knownDescendents.map( _.typed(tps) )
+    def knownDescendants = classDef.knownDescendants.map( _.typed(tps) )
 
-    def knownCCDescendents = classDef.knownCCDescendents.map( _.typed(tps) )
+    def knownCCDescendants = classDef.knownCCDescendants.map( _.typed(tps) )
 
     lazy val fieldsTypes = fields.map(_.getType)
 
diff --git a/src/main/scala/leon/solvers/ADTManager.scala b/src/main/scala/leon/solvers/ADTManager.scala
index 2ea69dd3ff585c2ee2e7b41c12d9e212df0fca0e..96c8ad60b762c76775cc3c7b21ae5171aa8cd710 100644
--- a/src/main/scala/leon/solvers/ADTManager.scala
+++ b/src/main/scala/leon/solvers/ADTManager.scala
@@ -28,7 +28,7 @@ class ADTManager(ctx: LeonContext) {
       getHierarchy(p)
     case None => (ct, ct match {
       case act: AbstractClassType =>
-        act.knownCCDescendents
+        act.knownCCDescendants
       case cct: CaseClassType =>
         List(cct)
     })
diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
index 9b78a1fbb57eb43652bcc4283c932047e80e2cce..a261fc10c38cf8b9ab3adfd3fba4b1b25e000526 100644
--- a/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
+++ b/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
@@ -331,7 +331,7 @@ abstract class SMTLIBSolver(val context: LeonContext,
         declareSort(cct)
         val cases = cct match {
           case act: AbstractClassType =>
-            act.knownCCDescendents
+            act.knownCCDescendants
           case cct: CaseClassType =>
             Seq(cct)
         }
diff --git a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
index 9d57eb723046037bd5887af621b8783b2b24b5cd..e3fd1fbc472cde897fe90916666c18e4fe09172d 100644
--- a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
+++ b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
@@ -468,7 +468,7 @@ trait AbstractZ3Solver
         selector(rec(cc))
 
       case IsInstanceOf(act: AbstractClassType, e) =>
-        act.knownCCDescendents match {
+        act.knownCCDescendants match {
           case Seq(cct) =>
             rec(IsInstanceOf(cct, e))
           case more =>
diff --git a/src/main/scala/leon/synthesis/PartialSolution.scala b/src/main/scala/leon/synthesis/PartialSolution.scala
index 774e76254bcd50017e4a9ad161671a61d2257e8e..d3443db76c73e403ca287f754a07a0c6c0f060f1 100644
--- a/src/main/scala/leon/synthesis/PartialSolution.scala
+++ b/src/main/scala/leon/synthesis/PartialSolution.scala
@@ -30,7 +30,7 @@ class PartialSolution(g: Graph, includeUntrusted: Boolean = false) {
           solveWith(on.parent, sol)
 
         case Some(an: AndNode) =>
-          val ssols = for (d <- an.descendents) yield {
+          val ssols = for (d <- an.descendants) yield {
             if (d == n) {
               sol
             } else {
@@ -66,7 +66,7 @@ class PartialSolution(g: Graph, includeUntrusted: Boolean = false) {
         }
 
         if (n.isExpanded) {
-          val descs = on.descendents.filterNot(_.isDeadEnd)
+          val descs = on.descendants.filterNot(_.isDeadEnd)
           if (descs.isEmpty) {
             completeProblem(on.p)
           } else {
@@ -86,7 +86,7 @@ class PartialSolution(g: Graph, includeUntrusted: Boolean = false) {
         }
 
         if (n.isExpanded) {
-          an.ri.onSuccess(n.descendents.map(getSolutionFor)) match {
+          an.ri.onSuccess(n.descendants.map(getSolutionFor)) match {
             case Some(sol) =>
               sol
 
diff --git a/src/main/scala/leon/synthesis/graph/DotGenerator.scala b/src/main/scala/leon/synthesis/graph/DotGenerator.scala
index 2db8025dc1c2bbda6c65800ffc7cc7f272042313..e44496a2de7feb1a6936af8e49a62a86e140c21a 100644
--- a/src/main/scala/leon/synthesis/graph/DotGenerator.scala
+++ b/src/main/scala/leon/synthesis/graph/DotGenerator.scala
@@ -117,7 +117,7 @@ class DotGenerator(g: Graph) {
   }
 
   private def collectEdges(from: Node): Set[(Node, Node)] = {
-    from.descendents.flatMap { d =>
+    from.descendants.flatMap { d =>
       Set(from -> d) ++ collectEdges(d)
     }.toSet
   }
diff --git a/src/main/scala/leon/synthesis/graph/Graph.scala b/src/main/scala/leon/synthesis/graph/Graph.scala
index c4e13648b9d2071c0ce41208b42850b2bdb0d336..aac4d2fd2cc06805cf1c623e4e599337d31ca24e 100644
--- a/src/main/scala/leon/synthesis/graph/Graph.scala
+++ b/src/main/scala/leon/synthesis/graph/Graph.scala
@@ -17,7 +17,7 @@ sealed class Graph(val cm: CostModel, problem: Problem) {
     if (!from.isExpanded) {
       self
     } else {
-      from.descendents.foldLeft(self) {
+      from.descendants.foldLeft(self) {
         case ((c,t), d) =>
           val (sc, st) = getStats(d)
           (c+sc, t+st)
@@ -28,7 +28,7 @@ sealed class Graph(val cm: CostModel, problem: Problem) {
 
 sealed abstract class Node(cm: CostModel, val parent: Option[Node]) {
   var parents: List[Node]     = parent.toList
-  var descendents: List[Node] = Nil
+  var descendants: List[Node] = Nil
 
   // indicates whether this particular node has already been expanded
   var isExpanded: Boolean = false
@@ -75,7 +75,7 @@ sealed abstract class Node(cm: CostModel, val parent: Option[Node]) {
 
     case None =>
       val costs = if (isExpanded) {
-        Some(descendents.map { _.cost })
+        Some(descendants.map { _.cost })
       } else {
         None
       }
@@ -141,9 +141,9 @@ class AndNode(cm: CostModel, parent: Option[Node], val ri: RuleInstantiation) ex
           info(prefix+"     - "+p.asString)
         }
 
-        descendents = probs.map(p => new OrNode(cm, Some(this), p))
+        descendants = probs.map(p => new OrNode(cm, Some(this), p))
 
-        selected = descendents
+        selected = descendants
 
         updateCost()
     }
@@ -162,7 +162,7 @@ class AndNode(cm: CostModel, parent: Option[Node], val ri: RuleInstantiation) ex
     solveds += desc
 
     // Everything is solved correctly
-    if (solveds.size == descendents.size) {
+    if (solveds.size == descendants.size) {
       isSolved = true
       parents.foreach(_.onSolved(this))
     }
@@ -198,7 +198,7 @@ class OrNode(cm: CostModel, parent: Option[Node], val p: Problem) extends Node(c
 
     val ris = getInstantiations(hctx)
 
-    descendents = ris.map(ri => new AndNode(cm, Some(this), ri))
+    descendants = ris.map(ri => new AndNode(cm, Some(this), ri))
     selected = List()
 
     updateCost()
diff --git a/src/main/scala/leon/synthesis/graph/Search.scala b/src/main/scala/leon/synthesis/graph/Search.scala
index 501004cfaceac30fdd04b0e5b9d701c4c75b0de1..9f1726d98c9c55d06484d88a81209814c63a6eaa 100644
--- a/src/main/scala/leon/synthesis/graph/Search.scala
+++ b/src/main/scala/leon/synthesis/graph/Search.scala
@@ -53,8 +53,8 @@ abstract class Search(ctx: LeonContext, ci: ChooseInfo, p: Problem, costModel: C
     case Nil =>
       Some(n)
     case x :: xs =>
-      if (n.isExpanded && n.descendents.size > x) {
-        traversePathFrom(n.descendents(x), xs)
+      if (n.isExpanded && n.descendants.size > x) {
+        traversePathFrom(n.descendants(x), xs)
       } else {
         None
       }
@@ -92,11 +92,11 @@ class SimpleSearch(ctx: LeonContext, ci: ChooseInfo, p: Problem, costModel: Cost
     } else if (!n.isDeadEnd) {
       n match {
         case an: AndNode =>
-          an.descendents.foreach(findIn)
+          an.descendants.foreach(findIn)
 
         case on: OrNode =>
-          if (on.descendents.nonEmpty) {
-            findIn(on.descendents.minBy(_.cost))
+          if (on.descendants.nonEmpty) {
+            findIn(on.descendants.minBy(_.cost))
           }
       }
     }
@@ -233,7 +233,7 @@ class ManualSearch(ctx: LeonContext, ci: ChooseInfo, problem: Problem, costModel
       if (cd.isEmpty) {
         println(title(pathToString(cd)+" \u2510 "+displayNode(n)))
 
-        for ((sn, i) <- n.descendents.zipWithIndex) {
+        for ((sn, i) <- n.descendants.zipWithIndex) {
           val sp = cd ::: List(i)
 
           if (sn.isSolved) {
@@ -247,7 +247,7 @@ class ManualSearch(ctx: LeonContext, ci: ChooseInfo, problem: Problem, costModel
           }
         }
       } else {
-        displayPath(n.descendents(cd.head), cd.tail)
+        displayPath(n.descendants(cd.head), cd.tail)
       }
     }
 
diff --git a/src/main/scala/leon/synthesis/rules/ADTInduction.scala b/src/main/scala/leon/synthesis/rules/ADTInduction.scala
index c493a540e3d88ab28d6677119bf88955c203ffe8..45509bdb78981d841a807b5a6ecece6a949bb8b8 100644
--- a/src/main/scala/leon/synthesis/rules/ADTInduction.scala
+++ b/src/main/scala/leon/synthesis/rules/ADTInduction.scala
@@ -33,7 +33,7 @@ case object ADTInduction extends Rule("ADT Induction") {
         ct.fields.exists(_.getType == origId.getType)
       }
 
-      val isRecursive = ct.knownCCDescendents.exists(isAlternativeRecursive)
+      val isRecursive = ct.knownCCDescendants.exists(isAlternativeRecursive)
 
       // Map for getting a formula in the context of within the recursive function
       val substMap = residualMap + (origId -> Variable(inductOn))
@@ -44,7 +44,7 @@ case object ADTInduction extends Rule("ADT Induction") {
         val innerPC  = substAll(substMap, p.pc)
         val innerWS  = substAll(substMap, p.ws)
 
-        val subProblemsInfo = for (cct <- ct.knownCCDescendents) yield {
+        val subProblemsInfo = for (cct <- ct.knownCCDescendants) yield {
           var recCalls = Map[List[Identifier], List[Expr]]()
           var postFs   = List[Expr]()
 
diff --git a/src/main/scala/leon/synthesis/rules/ADTLongInduction.scala b/src/main/scala/leon/synthesis/rules/ADTLongInduction.scala
index bdf0f4cf7610019244e05c46b418e4df1cc1a014..3f39582e316b7ce686fc89eada8b0d90fec49b84 100644
--- a/src/main/scala/leon/synthesis/rules/ADTLongInduction.scala
+++ b/src/main/scala/leon/synthesis/rules/ADTLongInduction.scala
@@ -34,7 +34,7 @@ case object ADTLongInduction extends Rule("ADT Long Induction") {
         ct.fields.exists(_.getType == origId.getType)
       }
 
-      val isRecursive = ct.knownCCDescendents.exists(isAlternativeRecursive)
+      val isRecursive = ct.knownCCDescendants.exists(isAlternativeRecursive)
 
       // Map for getting a formula in the context of within the recursive function
       val substMap = residualMap + (origId -> Variable(inductOn))
@@ -66,7 +66,7 @@ case object ADTLongInduction extends Rule("ADT Long Induction") {
             val InductCase(ids, calls, pat, pc, trMap) = ic
 
             (for (id <- ids if isRec(id)) yield {
-              for (cct <- ct.knownCCDescendents) yield {
+              for (cct <- ct.knownCCDescendants) yield {
                 val subIds = cct.fields.map(vd => FreshIdentifier(vd.id.name, vd.getType, true)).toList
 
                 val newIds = ids.filterNot(_ == id) ++ subIds
diff --git a/src/main/scala/leon/synthesis/rules/ADTSplit.scala b/src/main/scala/leon/synthesis/rules/ADTSplit.scala
index 1117577772616ad3909561903ec00364a47daaa9..a57cdfb155a24bd110be2b39297620fff03eddad 100644
--- a/src/main/scala/leon/synthesis/rules/ADTSplit.scala
+++ b/src/main/scala/leon/synthesis/rules/ADTSplit.scala
@@ -20,7 +20,7 @@ case object ADTSplit extends Rule("ADT Split.") {
     val candidates = p.as.collect {
       case IsTyped(id, act @ AbstractClassType(cd, tpes)) =>
 
-        val optCases = for (dcd <- cd.knownDescendents.sortBy(_.id.name)) yield dcd match {
+        val optCases = for (dcd <- cd.knownDescendants.sortBy(_.id.name)) yield dcd match {
           case ccd : CaseClassDef =>
             val cct = CaseClassType(ccd, tpes)
             val toSat = and(p.pc, IsInstanceOf(cct, Variable(id)))
diff --git a/src/main/scala/leon/synthesis/utils/ExpressionGrammar.scala b/src/main/scala/leon/synthesis/utils/ExpressionGrammar.scala
index 8e6fec7829361303ec2b7987c9801ab22bb2a2d1..0aad97735d15c348d606801bf1e96eed66de1f8f 100644
--- a/src/main/scala/leon/synthesis/utils/ExpressionGrammar.scala
+++ b/src/main/scala/leon/synthesis/utils/ExpressionGrammar.scala
@@ -117,7 +117,7 @@ object ExpressionGrammars {
         )
 
       case act: AbstractClassType =>
-        act.knownCCDescendents.map { cct =>
+        act.knownCCDescendants.map { cct =>
           Generator[TypeTree, Expr](cct.fields.map(_.getType), { case rs => CaseClass(cct, rs)} )
         }
 
@@ -181,7 +181,7 @@ object ExpressionGrammars {
         )
 
       case act: AbstractClassType =>
-        act.knownCCDescendents.map { cct =>
+        act.knownCCDescendants.map { cct =>
           Generator[TypeTree, Expr](cct.fields.map(_.getType), { case rs => CaseClass(cct, rs)} )
         }
 
@@ -313,7 +313,7 @@ object ExpressionGrammars {
         def ccVariations(gl: L, cc: CaseClass): Seq[(L, Gen)] = {
           val CaseClass(cct, args) = cc
 
-          val neighbors = cct.root.knownCCDescendents diff Seq(cct)
+          val neighbors = cct.root.knownCCDescendants diff Seq(cct)
 
           for (scct <- neighbors if scct.fieldsTypes == cct.fieldsTypes) yield {
             gl -> Generator[L, Expr](Nil, { _ => CaseClass(scct, args) })
@@ -466,7 +466,7 @@ object ExpressionGrammars {
     def computeProductions(l: Label[T]): Seq[Gen] = g.computeProductions(l).flatMap {
       case g: Generator[Label[T], Expr] =>
         if (l.depth == Some(bound) && g.subTrees.nonEmpty) {
-          None  
+          None
         } else if (l.depth.exists(_ > bound)) {
           None
         } else {
diff --git a/src/main/scala/leon/termination/ChainComparator.scala b/src/main/scala/leon/termination/ChainComparator.scala
index 16d4cb460319633a02998f583c4866849b0af89a..a3ab3f8f4fb40eac7871bc4eee73ec4bb3414213 100644
--- a/src/main/scala/leon/termination/ChainComparator.scala
+++ b/src/main/scala/leon/termination/ChainComparator.scala
@@ -17,7 +17,7 @@ trait ChainComparator { self : StructuralSize =>
     def unapply(c: ClassType): Option[(CaseClassType, Seq[(Identifier, TypeTree)])] = c match {
       case cct @ CaseClassType(ccd, _) =>
         if (cct.fields.exists(arg => isSubtypeOf(arg.getType, cct.root))) None
-        else if (ccd.hasParent && ccd.parent.get.knownDescendents.size > 1) None
+        else if (ccd.hasParent && ccd.parent.get.knownDescendants.size > 1) None
         else Some((cct, cct.fields.map(arg => arg.id -> arg.getType)))
       case _ => None
     }
diff --git a/src/main/scala/leon/termination/StructuralSize.scala b/src/main/scala/leon/termination/StructuralSize.scala
index 6e0bed6c082acecb7f95d556dff3b1f59df4c62c..99b3c18f66237796d0dfae14c9d24ebb06c26a3b 100644
--- a/src/main/scala/leon/termination/StructuralSize.scala
+++ b/src/main/scala/leon/termination/StructuralSize.scala
@@ -74,7 +74,7 @@ trait StructuralSize {
     expr.getType match {
       case (ct: ClassType) =>
         val fd = funDef(ct, {
-          case (act: AbstractClassType) => act.knownCCDescendents map caseClassType2MatchCase
+          case (act: AbstractClassType) => act.knownCCDescendants map caseClassType2MatchCase
           case (cct: CaseClassType) => Seq(caseClassType2MatchCase(cct))
         })
         FunctionInvocation(TypedFunDef(fd, ct.tps), Seq(expr))
diff --git a/src/main/scala/leon/utils/TypingPhase.scala b/src/main/scala/leon/utils/TypingPhase.scala
index ec5d8048d20b7cb9693455b55036ff01ba71fa14..0f47e61ac0e8fa4d373e287f87160fd98e57673b 100644
--- a/src/main/scala/leon/utils/TypingPhase.scala
+++ b/src/main/scala/leon/utils/TypingPhase.scala
@@ -82,7 +82,7 @@ object TypingPhase extends LeonPhase[Program, Program] {
     // Part (3)
     pgm.definedClasses.foreach {
       case acd: AbstractClassDef =>
-        if (acd.knownCCDescendents.isEmpty) {
+        if (acd.knownCCDescendants.isEmpty) {
           ctx.reporter.error(acd.getPos, "Class "+acd.id.asString(ctx)+" has no concrete descendant!")
         }
       case _ =>
diff --git a/src/main/scala/leon/verification/InductionTactic.scala b/src/main/scala/leon/verification/InductionTactic.scala
index 7bbd332c617dcc45887d528e289119d09aff74a1..8ce88e490c507a53914acd29067088ed5a4a9d0f 100644
--- a/src/main/scala/leon/verification/InductionTactic.scala
+++ b/src/main/scala/leon/verification/InductionTactic.scala
@@ -30,7 +30,7 @@ class InductionTactic(vctx: VerificationContext) extends DefaultTactic(vctx) {
   override def generatePostconditions(fd: FunDef): Seq[VC] = {
     (fd.body, firstAbsClassDef(fd.params), fd.postcondition) match {
       case (Some(body), Some((parentType, arg)), Some(post)) =>
-        for (cct <- parentType.knownCCDescendents) yield {
+        for (cct <- parentType.knownCCDescendants) yield {
           val selectors = selectorsOfParentType(parentType, cct, arg.toVariable)
 
           val subCases = selectors.map { sel =>
@@ -66,7 +66,7 @@ class InductionTactic(vctx: VerificationContext) extends DefaultTactic(vctx) {
 
         for {
           ((fi@FunctionInvocation(tfd, args), pre), path) <- calls
-          cct <- parentType.knownCCDescendents
+          cct <- parentType.knownCCDescendants
         } yield {
           val selectors = selectorsOfParentType(parentType, cct, arg.toVariable)
 
diff --git a/src/test/scala/leon/test/synthesis/SynthesisSuite.scala b/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
index b8ef5681f52ea8d138d5f76481d94bc365cdf9e2..35c7d6f6efd51aa19c0fa04623e5be9d74321e0a 100644
--- a/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
+++ b/src/test/scala/leon/test/synthesis/SynthesisSuite.scala
@@ -39,7 +39,7 @@ class SynthesisSuite extends LeonTestSuite {
           } else {
             strat match {
               case Decomp(_, sub) =>
-                (an.descendents zip sub).forall {
+                (an.descendants zip sub).forall {
                   case (n, strat) => synthesizeFrom(sctx, n, strat)
                 }
               case _ =>
@@ -50,7 +50,7 @@ class SynthesisSuite extends LeonTestSuite {
 
         case on: OrNode =>
           on.expand(SearchContext(sctx, ci, on, this))
-          val ns = on.descendents.filter {
+          val ns = on.descendants.filter {
             case an: AndNode => matchingDesc(an.ri, strat.ruleName)
             case _ => false
           }