let rec subst_in_fml (var : t_var) (term : t_term) (fml : t_fml) : t_fml = match fml with | PredApp (pred, term_list) -> PredApp (pred, List.map (subst_in_term var term) term_list) | BinopApp (binop, fml1, fml2) -> BinopApp (binop, subst_in_fml var term fml1, subst_in_fml var term fml2) | UnopApp (unop, fml1) -> UnopApp (unop, subst_in_fml var term fml1) | QuantApp (quant, var1, fml1) -> match var = var1 with |true -> QuantApp (quant, var1, fml1) |false -> QuantApp (quant, var1, subst_in_fml var term fml1)