let compile_let_item = function
  | (Formula.Cons _ | Formula.Type _
    | Formula.Function _ | Formula.Predicate _ | Formula.Trecord _) as item -> item
  | Formula.FunctionDef(xs,t,e) -> Formula.FunctionDef(xs,t,Fol_eval.elet_expansion e)
  | Formula.PredicateDef(xs,p) -> 
      let xs,p = Fol_let.compile_def xs p in
      Formula.PredicateDef(xs,p)
  | Formula.Axiom p -> Formula.Axiom (Fol_let.compile p)