+ | `Optimize
+ | `Type ->
+ (match t1 with
+ | Cic.Lambda (Cic.Name arg, s, t) ->
+ (match analyze_type [] s with
+ | `Optimize ->
+
+ "let " ^ ppid name ^ "__1 = function " ^ ppid arg
+ ^ " -> .< " ^
+ at_level2 (pp ~in_type:false t) [Some (Cic.Name arg, Cic.Decl s)]
+ ^ " >. ;;\n"
+ ^ "let " ^ ppid name ^ "__2 = ref ([] : (unit list*unit list) list);;\n"
+ ^ "let " ^ ppid name ^ " = function " ^ ppid arg
+ ^ " -> (try ignore (List.assoc "^ppid arg^" (Obj.magic !"^ppid name
+ ^"__2)) with Not_found -> "^ppid name^"__2 := (Obj.magic ("
+ ^ ppid arg^",.! ("^ppid name^"__1 "^ppid arg^")))::!"
+ ^ppid name^"__2); .< List.assoc "^ppid arg^" (Obj.magic (!"
+ ^ppid name^"__2)) >.\n;;\n"
+ ^" let xxx = prerr_endline \""^ppid name^"\"; .!("^ppid
+ name^" Matita_freescale_opcode.HCS08)"
+ | _ ->
+ "let " ^ ppid name ^ " =\n" ^ pp ~in_type:false t1 [] ^ "\n")
+ | _ -> "let " ^ ppid name ^ " =\n" ^ pp ~in_type:false t1 [] ^ "\n")