+
+let rec count_node a = function
+ | Note _
+ | Theorem _
+ | Qed _
+ | Id _
+ | Intros _
+ | Clear _
+ | ClearBody _ -> a
+ | Cut (_, t, _)
+ | LetIn (_, t, _)
+ | Apply (t, _) -> I.count_nodes a (H.cic t)
+ | Rewrite (_, t, _, p, _)
+ | Elim (t, _, p, _)
+ | Change (t, _, _, p, _) ->
+ let a = I.count_nodes a (H.cic t) in
+ I.count_nodes a (H.cic p)
+ | Branch (ss, _) -> List.fold_left count_nodes a ss
+
+and count_nodes a = List.fold_left count_node a