PageRenderTime 49ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/contrib/interface/vtp.ml

http://github.com/mzp/coq-ruby
OCaml | 1945 lines | 1940 code | 4 blank | 1 comment | 0 complexity | 800b2516061d36297f5976ac6e81668f MD5 | raw file
Possible License(s): LGPL-2.1, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. open Ascent;;
  2. open Pp;;
  3. (* LEM: This is actually generated automatically *)
  4. let fNODE s n =
  5. (str "n\n") ++
  6. (str ("vernac$" ^ s)) ++
  7. (str "\n") ++
  8. (int n) ++
  9. (str "\n");;
  10. let fATOM s1 =
  11. (str "a\n") ++
  12. (str ("vernac$" ^ s1)) ++
  13. (str "\n");;
  14. let f_atom_string = str;;
  15. let f_atom_int = int;;
  16. let rec fAST = function
  17. | CT_coerce_ID_OR_INT_to_AST x -> fID_OR_INT x
  18. | CT_coerce_ID_OR_STRING_to_AST x -> fID_OR_STRING x
  19. | CT_coerce_SINGLE_OPTION_VALUE_to_AST x -> fSINGLE_OPTION_VALUE x
  20. | CT_astnode(x1, x2) ->
  21. fID x1 ++
  22. fAST_LIST x2 ++
  23. fNODE "astnode" 2
  24. | CT_astpath(x1) ->
  25. fID_LIST x1 ++
  26. fNODE "astpath" 1
  27. | CT_astslam(x1, x2) ->
  28. fID_OPT x1 ++
  29. fAST x2 ++
  30. fNODE "astslam" 2
  31. and fAST_LIST = function
  32. | CT_ast_list l ->
  33. (List.fold_left (++) (mt()) (List.map fAST l)) ++
  34. fNODE "ast_list" (List.length l)
  35. and fBINARY = function
  36. | CT_binary x -> fATOM "binary" ++
  37. (f_atom_int x) ++
  38. str "\n"
  39. and fBINDER = function
  40. | CT_coerce_DEF_to_BINDER x -> fDEF x
  41. | CT_binder(x1, x2) ->
  42. fID_OPT_NE_LIST x1 ++
  43. fFORMULA x2 ++
  44. fNODE "binder" 2
  45. | CT_binder_coercion(x1, x2) ->
  46. fID_OPT_NE_LIST x1 ++
  47. fFORMULA x2 ++
  48. fNODE "binder_coercion" 2
  49. and fBINDER_LIST = function
  50. | CT_binder_list l ->
  51. (List.fold_left (++) (mt()) (List.map fBINDER l)) ++
  52. fNODE "binder_list" (List.length l)
  53. and fBINDER_NE_LIST = function
  54. | CT_binder_ne_list(x,l) ->
  55. fBINDER x ++
  56. (List.fold_left (++) (mt()) (List.map fBINDER l)) ++
  57. fNODE "binder_ne_list" (1 + (List.length l))
  58. and fBINDING = function
  59. | CT_binding(x1, x2) ->
  60. fID_OR_INT x1 ++
  61. fFORMULA x2 ++
  62. fNODE "binding" 2
  63. and fBINDING_LIST = function
  64. | CT_binding_list l ->
  65. (List.fold_left (++) (mt()) (List.map fBINDING l)) ++
  66. fNODE "binding_list" (List.length l)
  67. and fBOOL = function
  68. | CT_false -> fNODE "false" 0
  69. | CT_true -> fNODE "true" 0
  70. and fCASE = function
  71. | CT_case x -> fATOM "case" ++
  72. (f_atom_string x) ++
  73. str "\n"
  74. and fCLAUSE = function
  75. | CT_clause(x1, x2) ->
  76. fHYP_LOCATION_LIST_OR_STAR x1 ++
  77. fSTAR_OPT x2 ++
  78. fNODE "clause" 2
  79. and fCOERCION_OPT = function
  80. | CT_coerce_NONE_to_COERCION_OPT x -> fNONE x
  81. | CT_coercion_atm -> fNODE "coercion_atm" 0
  82. and fCOFIXTAC = function
  83. | CT_cofixtac(x1, x2) ->
  84. fID x1 ++
  85. fFORMULA x2 ++
  86. fNODE "cofixtac" 2
  87. and fCOFIX_REC = function
  88. | CT_cofix_rec(x1, x2, x3, x4) ->
  89. fID x1 ++
  90. fBINDER_LIST x2 ++
  91. fFORMULA x3 ++
  92. fFORMULA x4 ++
  93. fNODE "cofix_rec" 4
  94. and fCOFIX_REC_LIST = function
  95. | CT_cofix_rec_list(x,l) ->
  96. fCOFIX_REC x ++
  97. (List.fold_left (++) (mt()) (List.map fCOFIX_REC l)) ++
  98. fNODE "cofix_rec_list" (1 + (List.length l))
  99. and fCOFIX_TAC_LIST = function
  100. | CT_cofix_tac_list l ->
  101. (List.fold_left (++) (mt()) (List.map fCOFIXTAC l)) ++
  102. fNODE "cofix_tac_list" (List.length l)
  103. and fCOMMAND = function
  104. | CT_coerce_COMMAND_LIST_to_COMMAND x -> fCOMMAND_LIST x
  105. | CT_coerce_EVAL_CMD_to_COMMAND x -> fEVAL_CMD x
  106. | CT_coerce_SECTION_BEGIN_to_COMMAND x -> fSECTION_BEGIN x
  107. | CT_coerce_THEOREM_GOAL_to_COMMAND x -> fTHEOREM_GOAL x
  108. | CT_abort(x1) ->
  109. fID_OPT_OR_ALL x1 ++
  110. fNODE "abort" 1
  111. | CT_abstraction(x1, x2, x3) ->
  112. fID x1 ++
  113. fFORMULA x2 ++
  114. fINT_LIST x3 ++
  115. fNODE "abstraction" 3
  116. | CT_add_field(x1, x2, x3, x4) ->
  117. fFORMULA x1 ++
  118. fFORMULA x2 ++
  119. fFORMULA x3 ++
  120. fFORMULA_OPT x4 ++
  121. fNODE "add_field" 4
  122. | CT_add_natural_feature(x1, x2) ->
  123. fNATURAL_FEATURE x1 ++
  124. fID x2 ++
  125. fNODE "add_natural_feature" 2
  126. | CT_addpath(x1, x2) ->
  127. fSTRING x1 ++
  128. fID_OPT x2 ++
  129. fNODE "addpath" 2
  130. | CT_arguments_scope(x1, x2) ->
  131. fID x1 ++
  132. fID_OPT_LIST x2 ++
  133. fNODE "arguments_scope" 2
  134. | CT_bind_scope(x1, x2) ->
  135. fID x1 ++
  136. fID_NE_LIST x2 ++
  137. fNODE "bind_scope" 2
  138. | CT_cd(x1) ->
  139. fSTRING_OPT x1 ++
  140. fNODE "cd" 1
  141. | CT_check(x1) ->
  142. fFORMULA x1 ++
  143. fNODE "check" 1
  144. | CT_class(x1) ->
  145. fID x1 ++
  146. fNODE "class" 1
  147. | CT_close_scope(x1) ->
  148. fID x1 ++
  149. fNODE "close_scope" 1
  150. | CT_coercion(x1, x2, x3, x4, x5) ->
  151. fLOCAL_OPT x1 ++
  152. fIDENTITY_OPT x2 ++
  153. fID x3 ++
  154. fID x4 ++
  155. fID x5 ++
  156. fNODE "coercion" 5
  157. | CT_cofix_decl(x1) ->
  158. fCOFIX_REC_LIST x1 ++
  159. fNODE "cofix_decl" 1
  160. | CT_compile_module(x1, x2, x3) ->
  161. fVERBOSE_OPT x1 ++
  162. fID x2 ++
  163. fSTRING_OPT x3 ++
  164. fNODE "compile_module" 3
  165. | CT_declare_module(x1, x2, x3, x4) ->
  166. fID x1 ++
  167. fMODULE_BINDER_LIST x2 ++
  168. fMODULE_TYPE_CHECK x3 ++
  169. fMODULE_EXPR x4 ++
  170. fNODE "declare_module" 4
  171. | CT_define_notation(x1, x2, x3, x4) ->
  172. fSTRING x1 ++
  173. fFORMULA x2 ++
  174. fMODIFIER_LIST x3 ++
  175. fID_OPT x4 ++
  176. fNODE "define_notation" 4
  177. | CT_definition(x1, x2, x3, x4, x5) ->
  178. fDEFN x1 ++
  179. fID x2 ++
  180. fBINDER_LIST x3 ++
  181. fDEF_BODY x4 ++
  182. fFORMULA_OPT x5 ++
  183. fNODE "definition" 5
  184. | CT_delim_scope(x1, x2) ->
  185. fID x1 ++
  186. fID x2 ++
  187. fNODE "delim_scope" 2
  188. | CT_delpath(x1) ->
  189. fSTRING x1 ++
  190. fNODE "delpath" 1
  191. | CT_derive_depinversion(x1, x2, x3, x4) ->
  192. fINV_TYPE x1 ++
  193. fID x2 ++
  194. fFORMULA x3 ++
  195. fSORT_TYPE x4 ++
  196. fNODE "derive_depinversion" 4
  197. | CT_derive_inversion(x1, x2, x3, x4) ->
  198. fINV_TYPE x1 ++
  199. fINT_OPT x2 ++
  200. fID x3 ++
  201. fID x4 ++
  202. fNODE "derive_inversion" 4
  203. | CT_derive_inversion_with(x1, x2, x3, x4) ->
  204. fINV_TYPE x1 ++
  205. fID x2 ++
  206. fFORMULA x3 ++
  207. fSORT_TYPE x4 ++
  208. fNODE "derive_inversion_with" 4
  209. | CT_explain_proof(x1) ->
  210. fINT_LIST x1 ++
  211. fNODE "explain_proof" 1
  212. | CT_explain_prooftree(x1) ->
  213. fINT_LIST x1 ++
  214. fNODE "explain_prooftree" 1
  215. | CT_export_id(x1) ->
  216. fID_NE_LIST x1 ++
  217. fNODE "export_id" 1
  218. | CT_extract_to_file(x1, x2) ->
  219. fSTRING x1 ++
  220. fID_NE_LIST x2 ++
  221. fNODE "extract_to_file" 2
  222. | CT_extraction(x1) ->
  223. fID_OPT x1 ++
  224. fNODE "extraction" 1
  225. | CT_fix_decl(x1) ->
  226. fFIX_REC_LIST x1 ++
  227. fNODE "fix_decl" 1
  228. | CT_focus(x1) ->
  229. fINT_OPT x1 ++
  230. fNODE "focus" 1
  231. | CT_go(x1) ->
  232. fINT_OR_LOCN x1 ++
  233. fNODE "go" 1
  234. | CT_guarded -> fNODE "guarded" 0
  235. | CT_hint_destruct(x1, x2, x3, x4, x5, x6) ->
  236. fID x1 ++
  237. fINT x2 ++
  238. fDESTRUCT_LOCATION x3 ++
  239. fFORMULA x4 ++
  240. fTACTIC_COM x5 ++
  241. fID_LIST x6 ++
  242. fNODE "hint_destruct" 6
  243. | CT_hint_extern(x1, x2, x3, x4) ->
  244. fINT x1 ++
  245. fFORMULA_OPT x2 ++
  246. fTACTIC_COM x3 ++
  247. fID_LIST x4 ++
  248. fNODE "hint_extern" 4
  249. | CT_hintrewrite(x1, x2, x3, x4) ->
  250. fORIENTATION x1 ++
  251. fFORMULA_NE_LIST x2 ++
  252. fID x3 ++
  253. fTACTIC_COM x4 ++
  254. fNODE "hintrewrite" 4
  255. | CT_hints(x1, x2, x3) ->
  256. fID x1 ++
  257. fID_NE_LIST x2 ++
  258. fID_LIST x3 ++
  259. fNODE "hints" 3
  260. | CT_hints_immediate(x1, x2) ->
  261. fFORMULA_NE_LIST x1 ++
  262. fID_LIST x2 ++
  263. fNODE "hints_immediate" 2
  264. | CT_hints_resolve(x1, x2) ->
  265. fFORMULA_NE_LIST x1 ++
  266. fID_LIST x2 ++
  267. fNODE "hints_resolve" 2
  268. | CT_hyp_search_pattern(x1, x2) ->
  269. fFORMULA x1 ++
  270. fIN_OR_OUT_MODULES x2 ++
  271. fNODE "hyp_search_pattern" 2
  272. | CT_implicits(x1, x2) ->
  273. fID x1 ++
  274. fID_LIST_OPT x2 ++
  275. fNODE "implicits" 2
  276. | CT_import_id(x1) ->
  277. fID_NE_LIST x1 ++
  278. fNODE "import_id" 1
  279. | CT_ind_scheme(x1) ->
  280. fSCHEME_SPEC_LIST x1 ++
  281. fNODE "ind_scheme" 1
  282. | CT_infix(x1, x2, x3, x4) ->
  283. fSTRING x1 ++
  284. fID x2 ++
  285. fMODIFIER_LIST x3 ++
  286. fID_OPT x4 ++
  287. fNODE "infix" 4
  288. | CT_inline(x1) ->
  289. fID_NE_LIST x1 ++
  290. fNODE "inline" 1
  291. | CT_inspect(x1) ->
  292. fINT x1 ++
  293. fNODE "inspect" 1
  294. | CT_kill_node(x1) ->
  295. fINT x1 ++
  296. fNODE "kill_node" 1
  297. | CT_load(x1, x2) ->
  298. fVERBOSE_OPT x1 ++
  299. fID_OR_STRING x2 ++
  300. fNODE "load" 2
  301. | CT_local_close_scope(x1) ->
  302. fID x1 ++
  303. fNODE "local_close_scope" 1
  304. | CT_local_define_notation(x1, x2, x3, x4) ->
  305. fSTRING x1 ++
  306. fFORMULA x2 ++
  307. fMODIFIER_LIST x3 ++
  308. fID_OPT x4 ++
  309. fNODE "local_define_notation" 4
  310. | CT_local_hint_destruct(x1, x2, x3, x4, x5, x6) ->
  311. fID x1 ++
  312. fINT x2 ++
  313. fDESTRUCT_LOCATION x3 ++
  314. fFORMULA x4 ++
  315. fTACTIC_COM x5 ++
  316. fID_LIST x6 ++
  317. fNODE "local_hint_destruct" 6
  318. | CT_local_hint_extern(x1, x2, x3, x4) ->
  319. fINT x1 ++
  320. fFORMULA x2 ++
  321. fTACTIC_COM x3 ++
  322. fID_LIST x4 ++
  323. fNODE "local_hint_extern" 4
  324. | CT_local_hints(x1, x2, x3) ->
  325. fID x1 ++
  326. fID_NE_LIST x2 ++
  327. fID_LIST x3 ++
  328. fNODE "local_hints" 3
  329. | CT_local_hints_immediate(x1, x2) ->
  330. fFORMULA_NE_LIST x1 ++
  331. fID_LIST x2 ++
  332. fNODE "local_hints_immediate" 2
  333. | CT_local_hints_resolve(x1, x2) ->
  334. fFORMULA_NE_LIST x1 ++
  335. fID_LIST x2 ++
  336. fNODE "local_hints_resolve" 2
  337. | CT_local_infix(x1, x2, x3, x4) ->
  338. fSTRING x1 ++
  339. fID x2 ++
  340. fMODIFIER_LIST x3 ++
  341. fID_OPT x4 ++
  342. fNODE "local_infix" 4
  343. | CT_local_open_scope(x1) ->
  344. fID x1 ++
  345. fNODE "local_open_scope" 1
  346. | CT_local_reserve_notation(x1, x2) ->
  347. fSTRING x1 ++
  348. fMODIFIER_LIST x2 ++
  349. fNODE "local_reserve_notation" 2
  350. | CT_locate(x1) ->
  351. fID x1 ++
  352. fNODE "locate" 1
  353. | CT_locate_file(x1) ->
  354. fSTRING x1 ++
  355. fNODE "locate_file" 1
  356. | CT_locate_lib(x1) ->
  357. fID x1 ++
  358. fNODE "locate_lib" 1
  359. | CT_locate_notation(x1) ->
  360. fSTRING x1 ++
  361. fNODE "locate_notation" 1
  362. | CT_mind_decl(x1, x2) ->
  363. fCO_IND x1 ++
  364. fIND_SPEC_LIST x2 ++
  365. fNODE "mind_decl" 2
  366. | CT_ml_add_path(x1) ->
  367. fSTRING x1 ++
  368. fNODE "ml_add_path" 1
  369. | CT_ml_declare_modules(x1) ->
  370. fSTRING_NE_LIST x1 ++
  371. fNODE "ml_declare_modules" 1
  372. | CT_ml_print_modules -> fNODE "ml_print_modules" 0
  373. | CT_ml_print_path -> fNODE "ml_print_path" 0
  374. | CT_module(x1, x2, x3, x4) ->
  375. fID x1 ++
  376. fMODULE_BINDER_LIST x2 ++
  377. fMODULE_TYPE_CHECK x3 ++
  378. fMODULE_EXPR x4 ++
  379. fNODE "module" 4
  380. | CT_module_type_decl(x1, x2, x3) ->
  381. fID x1 ++
  382. fMODULE_BINDER_LIST x2 ++
  383. fMODULE_TYPE_OPT x3 ++
  384. fNODE "module_type_decl" 3
  385. | CT_no_inline(x1) ->
  386. fID_NE_LIST x1 ++
  387. fNODE "no_inline" 1
  388. | CT_omega_flag(x1, x2) ->
  389. fOMEGA_MODE x1 ++
  390. fOMEGA_FEATURE x2 ++
  391. fNODE "omega_flag" 2
  392. | CT_open_scope(x1) ->
  393. fID x1 ++
  394. fNODE "open_scope" 1
  395. | CT_print -> fNODE "print" 0
  396. | CT_print_about(x1) ->
  397. fID x1 ++
  398. fNODE "print_about" 1
  399. | CT_print_all -> fNODE "print_all" 0
  400. | CT_print_classes -> fNODE "print_classes" 0
  401. | CT_print_ltac id ->
  402. fID id ++
  403. fNODE "print_ltac" 1
  404. | CT_print_coercions -> fNODE "print_coercions" 0
  405. | CT_print_grammar(x1) ->
  406. fGRAMMAR x1 ++
  407. fNODE "print_grammar" 1
  408. | CT_print_graph -> fNODE "print_graph" 0
  409. | CT_print_hint(x1) ->
  410. fID_OPT x1 ++
  411. fNODE "print_hint" 1
  412. | CT_print_hintdb(x1) ->
  413. fID_OR_STAR x1 ++
  414. fNODE "print_hintdb" 1
  415. | CT_print_rewrite_hintdb(x1) ->
  416. fID x1 ++
  417. fNODE "print_rewrite_hintdb" 1
  418. | CT_print_id(x1) ->
  419. fID x1 ++
  420. fNODE "print_id" 1
  421. | CT_print_implicit(x1) ->
  422. fID x1 ++
  423. fNODE "print_implicit" 1
  424. | CT_print_loadpath -> fNODE "print_loadpath" 0
  425. | CT_print_module(x1) ->
  426. fID x1 ++
  427. fNODE "print_module" 1
  428. | CT_print_module_type(x1) ->
  429. fID x1 ++
  430. fNODE "print_module_type" 1
  431. | CT_print_modules -> fNODE "print_modules" 0
  432. | CT_print_natural(x1) ->
  433. fID x1 ++
  434. fNODE "print_natural" 1
  435. | CT_print_natural_feature(x1) ->
  436. fNATURAL_FEATURE x1 ++
  437. fNODE "print_natural_feature" 1
  438. | CT_print_opaqueid(x1) ->
  439. fID x1 ++
  440. fNODE "print_opaqueid" 1
  441. | CT_print_path(x1, x2) ->
  442. fID x1 ++
  443. fID x2 ++
  444. fNODE "print_path" 2
  445. | CT_print_proof(x1) ->
  446. fID x1 ++
  447. fNODE "print_proof" 1
  448. | CT_print_scope(x1) ->
  449. fID x1 ++
  450. fNODE "print_scope" 1
  451. | CT_print_setoids -> fNODE "print_setoids" 0
  452. | CT_print_scopes -> fNODE "print_scopes" 0
  453. | CT_print_section(x1) ->
  454. fID x1 ++
  455. fNODE "print_section" 1
  456. | CT_print_states -> fNODE "print_states" 0
  457. | CT_print_tables -> fNODE "print_tables" 0
  458. | CT_print_universes(x1) ->
  459. fSTRING_OPT x1 ++
  460. fNODE "print_universes" 1
  461. | CT_print_visibility(x1) ->
  462. fID_OPT x1 ++
  463. fNODE "print_visibility" 1
  464. | CT_proof(x1) ->
  465. fFORMULA x1 ++
  466. fNODE "proof" 1
  467. | CT_proof_no_op -> fNODE "proof_no_op" 0
  468. | CT_proof_with(x1) ->
  469. fTACTIC_COM x1 ++
  470. fNODE "proof_with" 1
  471. | CT_pwd -> fNODE "pwd" 0
  472. | CT_quit -> fNODE "quit" 0
  473. | CT_read_module(x1) ->
  474. fID x1 ++
  475. fNODE "read_module" 1
  476. | CT_rec_ml_add_path(x1) ->
  477. fSTRING x1 ++
  478. fNODE "rec_ml_add_path" 1
  479. | CT_recaddpath(x1, x2) ->
  480. fSTRING x1 ++
  481. fID_OPT x2 ++
  482. fNODE "recaddpath" 2
  483. | CT_record(x1, x2, x3, x4, x5, x6) ->
  484. fCOERCION_OPT x1 ++
  485. fID x2 ++
  486. fBINDER_LIST x3 ++
  487. fFORMULA x4 ++
  488. fID_OPT x5 ++
  489. fRECCONSTR_LIST x6 ++
  490. fNODE "record" 6
  491. | CT_remove_natural_feature(x1, x2) ->
  492. fNATURAL_FEATURE x1 ++
  493. fID x2 ++
  494. fNODE "remove_natural_feature" 2
  495. | CT_require(x1, x2, x3) ->
  496. fIMPEXP x1 ++
  497. fSPEC_OPT x2 ++
  498. fID_NE_LIST_OR_STRING x3 ++
  499. fNODE "require" 3
  500. | CT_reserve(x1, x2) ->
  501. fID_NE_LIST x1 ++
  502. fFORMULA x2 ++
  503. fNODE "reserve" 2
  504. | CT_reserve_notation(x1, x2) ->
  505. fSTRING x1 ++
  506. fMODIFIER_LIST x2 ++
  507. fNODE "reserve_notation" 2
  508. | CT_reset(x1) ->
  509. fID x1 ++
  510. fNODE "reset" 1
  511. | CT_reset_section(x1) ->
  512. fID x1 ++
  513. fNODE "reset_section" 1
  514. | CT_restart -> fNODE "restart" 0
  515. | CT_restore_state(x1) ->
  516. fID x1 ++
  517. fNODE "restore_state" 1
  518. | CT_resume(x1) ->
  519. fID_OPT x1 ++
  520. fNODE "resume" 1
  521. | CT_save(x1, x2) ->
  522. fTHM_OPT x1 ++
  523. fID_OPT x2 ++
  524. fNODE "save" 2
  525. | CT_scomments(x1) ->
  526. fSCOMMENT_CONTENT_LIST x1 ++
  527. fNODE "scomments" 1
  528. | CT_search(x1, x2) ->
  529. fID x1 ++
  530. fIN_OR_OUT_MODULES x2 ++
  531. fNODE "search" 2
  532. | CT_search_about(x1, x2) ->
  533. fID_OR_STRING_NE_LIST x1 ++
  534. fIN_OR_OUT_MODULES x2 ++
  535. fNODE "search_about" 2
  536. | CT_search_pattern(x1, x2) ->
  537. fFORMULA x1 ++
  538. fIN_OR_OUT_MODULES x2 ++
  539. fNODE "search_pattern" 2
  540. | CT_search_rewrite(x1, x2) ->
  541. fFORMULA x1 ++
  542. fIN_OR_OUT_MODULES x2 ++
  543. fNODE "search_rewrite" 2
  544. | CT_section_end(x1) ->
  545. fID x1 ++
  546. fNODE "section_end" 1
  547. | CT_section_struct(x1, x2, x3) ->
  548. fSECTION_BEGIN x1 ++
  549. fSECTION_BODY x2 ++
  550. fCOMMAND x3 ++
  551. fNODE "section_struct" 3
  552. | CT_set_natural(x1) ->
  553. fID x1 ++
  554. fNODE "set_natural" 1
  555. | CT_set_natural_default -> fNODE "set_natural_default" 0
  556. | CT_set_option(x1) ->
  557. fTABLE x1 ++
  558. fNODE "set_option" 1
  559. | CT_set_option_value(x1, x2) ->
  560. fTABLE x1 ++
  561. fSINGLE_OPTION_VALUE x2 ++
  562. fNODE "set_option_value" 2
  563. | CT_set_option_value2(x1, x2) ->
  564. fTABLE x1 ++
  565. fID_OR_STRING_NE_LIST x2 ++
  566. fNODE "set_option_value2" 2
  567. | CT_sethyp(x1) ->
  568. fINT x1 ++
  569. fNODE "sethyp" 1
  570. | CT_setundo(x1) ->
  571. fINT x1 ++
  572. fNODE "setundo" 1
  573. | CT_show_existentials -> fNODE "show_existentials" 0
  574. | CT_show_goal(x1) ->
  575. fINT_OPT x1 ++
  576. fNODE "show_goal" 1
  577. | CT_show_implicit(x1) ->
  578. fINT x1 ++
  579. fNODE "show_implicit" 1
  580. | CT_show_intro -> fNODE "show_intro" 0
  581. | CT_show_intros -> fNODE "show_intros" 0
  582. | CT_show_node -> fNODE "show_node" 0
  583. | CT_show_proof -> fNODE "show_proof" 0
  584. | CT_show_proofs -> fNODE "show_proofs" 0
  585. | CT_show_script -> fNODE "show_script" 0
  586. | CT_show_tree -> fNODE "show_tree" 0
  587. | CT_solve(x1, x2, x3) ->
  588. fINT x1 ++
  589. fTACTIC_COM x2 ++
  590. fDOTDOT_OPT x3 ++
  591. fNODE "solve" 3
  592. | CT_strategy(CT_level_list x1) ->
  593. List.fold_left (++) (mt())
  594. (List.map (fun(l,q) -> fLEVEL l ++ fID_LIST q ++ fNODE "pair"2) x1) ++
  595. fNODE "strategy" (List.length x1)
  596. | CT_suspend -> fNODE "suspend" 0
  597. | CT_syntax_macro(x1, x2, x3) ->
  598. fID x1 ++
  599. fFORMULA x2 ++
  600. fINT_OPT x3 ++
  601. fNODE "syntax_macro" 3
  602. | CT_tactic_definition(x1) ->
  603. fTAC_DEF_NE_LIST x1 ++
  604. fNODE "tactic_definition" 1
  605. | CT_test_natural_feature(x1, x2) ->
  606. fNATURAL_FEATURE x1 ++
  607. fID x2 ++
  608. fNODE "test_natural_feature" 2
  609. | CT_theorem_struct(x1, x2) ->
  610. fTHEOREM_GOAL x1 ++
  611. fPROOF_SCRIPT x2 ++
  612. fNODE "theorem_struct" 2
  613. | CT_time(x1) ->
  614. fCOMMAND x1 ++
  615. fNODE "time" 1
  616. | CT_undo(x1) ->
  617. fINT_OPT x1 ++
  618. fNODE "undo" 1
  619. | CT_unfocus -> fNODE "unfocus" 0
  620. | CT_unset_option(x1) ->
  621. fTABLE x1 ++
  622. fNODE "unset_option" 1
  623. | CT_unsethyp -> fNODE "unsethyp" 0
  624. | CT_unsetundo -> fNODE "unsetundo" 0
  625. | CT_user_vernac(x1, x2) ->
  626. fID x1 ++
  627. fVARG_LIST x2 ++
  628. fNODE "user_vernac" 2
  629. | CT_variable(x1, x2) ->
  630. fVAR x1 ++
  631. fBINDER_NE_LIST x2 ++
  632. fNODE "variable" 2
  633. | CT_write_module(x1, x2) ->
  634. fID x1 ++
  635. fSTRING_OPT x2 ++
  636. fNODE "write_module" 2
  637. and fLEVEL = function
  638. | CT_Opaque -> fNODE "opaque" 0
  639. | CT_Level n -> fINT n ++ fNODE "level" 1
  640. | CT_Expand -> fNODE "expand" 0
  641. and fCOMMAND_LIST = function
  642. | CT_command_list(x,l) ->
  643. fCOMMAND x ++
  644. (List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
  645. fNODE "command_list" (1 + (List.length l))
  646. and fCOMMENT = function
  647. | CT_comment x -> fATOM "comment" ++
  648. (f_atom_string x) ++
  649. str "\n"
  650. and fCOMMENT_S = function
  651. | CT_comment_s l ->
  652. (List.fold_left (++) (mt()) (List.map fCOMMENT l)) ++
  653. fNODE "comment_s" (List.length l)
  654. and fCONSTR = function
  655. | CT_constr(x1, x2) ->
  656. fID x1 ++
  657. fFORMULA x2 ++
  658. fNODE "constr" 2
  659. | CT_constr_coercion(x1, x2) ->
  660. fID x1 ++
  661. fFORMULA x2 ++
  662. fNODE "constr_coercion" 2
  663. and fCONSTR_LIST = function
  664. | CT_constr_list l ->
  665. (List.fold_left (++) (mt()) (List.map fCONSTR l)) ++
  666. fNODE "constr_list" (List.length l)
  667. and fCONTEXT_HYP_LIST = function
  668. | CT_context_hyp_list l ->
  669. (List.fold_left (++) (mt()) (List.map fPREMISE_PATTERN l)) ++
  670. fNODE "context_hyp_list" (List.length l)
  671. and fCONTEXT_PATTERN = function
  672. | CT_coerce_FORMULA_to_CONTEXT_PATTERN x -> fFORMULA x
  673. | CT_context(x1, x2) ->
  674. fID_OPT x1 ++
  675. fFORMULA x2 ++
  676. fNODE "context" 2
  677. and fCONTEXT_RULE = function
  678. | CT_context_rule(x1, x2, x3) ->
  679. fCONTEXT_HYP_LIST x1 ++
  680. fCONTEXT_PATTERN x2 ++
  681. fTACTIC_COM x3 ++
  682. fNODE "context_rule" 3
  683. | CT_def_context_rule(x1) ->
  684. fTACTIC_COM x1 ++
  685. fNODE "def_context_rule" 1
  686. and fCONVERSION_FLAG = function
  687. | CT_beta -> fNODE "beta" 0
  688. | CT_delta -> fNODE "delta" 0
  689. | CT_evar -> fNODE "evar" 0
  690. | CT_iota -> fNODE "iota" 0
  691. | CT_zeta -> fNODE "zeta" 0
  692. and fCONVERSION_FLAG_LIST = function
  693. | CT_conversion_flag_list l ->
  694. (List.fold_left (++) (mt()) (List.map fCONVERSION_FLAG l)) ++
  695. fNODE "conversion_flag_list" (List.length l)
  696. and fCONV_SET = function
  697. | CT_unf l ->
  698. (List.fold_left (++) (mt()) (List.map fID l)) ++
  699. fNODE "unf" (List.length l)
  700. | CT_unfbut l ->
  701. (List.fold_left (++) (mt()) (List.map fID l)) ++
  702. fNODE "unfbut" (List.length l)
  703. and fCO_IND = function
  704. | CT_co_ind x -> fATOM "co_ind" ++
  705. (f_atom_string x) ++
  706. str "\n"
  707. and fDECL_NOTATION_OPT = function
  708. | CT_coerce_NONE_to_DECL_NOTATION_OPT x -> fNONE x
  709. | CT_decl_notation(x1, x2, x3) ->
  710. fSTRING x1 ++
  711. fFORMULA x2 ++
  712. fID_OPT x3 ++
  713. fNODE "decl_notation" 3
  714. and fDEF = function
  715. | CT_def(x1, x2) ->
  716. fID_OPT x1 ++
  717. fFORMULA x2 ++
  718. fNODE "def" 2
  719. and fDEFN = function
  720. | CT_defn x -> fATOM "defn" ++
  721. (f_atom_string x) ++
  722. str "\n"
  723. and fDEFN_OR_THM = function
  724. | CT_coerce_DEFN_to_DEFN_OR_THM x -> fDEFN x
  725. | CT_coerce_THM_to_DEFN_OR_THM x -> fTHM x
  726. and fDEF_BODY = function
  727. | CT_coerce_CONTEXT_PATTERN_to_DEF_BODY x -> fCONTEXT_PATTERN x
  728. | CT_coerce_EVAL_CMD_to_DEF_BODY x -> fEVAL_CMD x
  729. | CT_type_of(x1) ->
  730. fFORMULA x1 ++
  731. fNODE "type_of" 1
  732. and fDEF_BODY_OPT = function
  733. | CT_coerce_DEF_BODY_to_DEF_BODY_OPT x -> fDEF_BODY x
  734. | CT_coerce_FORMULA_OPT_to_DEF_BODY_OPT x -> fFORMULA_OPT x
  735. and fDEP = function
  736. | CT_dep x -> fATOM "dep" ++
  737. (f_atom_string x) ++
  738. str "\n"
  739. and fDESTRUCTING = function
  740. | CT_coerce_NONE_to_DESTRUCTING x -> fNONE x
  741. | CT_destructing -> fNODE "destructing" 0
  742. and fDESTRUCT_LOCATION = function
  743. | CT_conclusion_location -> fNODE "conclusion_location" 0
  744. | CT_discardable_hypothesis -> fNODE "discardable_hypothesis" 0
  745. | CT_hypothesis_location -> fNODE "hypothesis_location" 0
  746. and fDOTDOT_OPT = function
  747. | CT_coerce_NONE_to_DOTDOT_OPT x -> fNONE x
  748. | CT_dotdot -> fNODE "dotdot" 0
  749. and fEQN = function
  750. | CT_eqn(x1, x2) ->
  751. fMATCH_PATTERN_NE_LIST x1 ++
  752. fFORMULA x2 ++
  753. fNODE "eqn" 2
  754. and fEQN_LIST = function
  755. | CT_eqn_list l ->
  756. (List.fold_left (++) (mt()) (List.map fEQN l)) ++
  757. fNODE "eqn_list" (List.length l)
  758. and fEVAL_CMD = function
  759. | CT_eval(x1, x2, x3) ->
  760. fINT_OPT x1 ++
  761. fRED_COM x2 ++
  762. fFORMULA x3 ++
  763. fNODE "eval" 3
  764. and fFIXTAC = function
  765. | CT_fixtac(x1, x2, x3) ->
  766. fID x1 ++
  767. fINT x2 ++
  768. fFORMULA x3 ++
  769. fNODE "fixtac" 3
  770. and fFIX_BINDER = function
  771. | CT_coerce_FIX_REC_to_FIX_BINDER x -> fFIX_REC x
  772. | CT_fix_binder(x1, x2, x3, x4) ->
  773. fID x1 ++
  774. fINT x2 ++
  775. fFORMULA x3 ++
  776. fFORMULA x4 ++
  777. fNODE "fix_binder" 4
  778. and fFIX_BINDER_LIST = function
  779. | CT_fix_binder_list(x,l) ->
  780. fFIX_BINDER x ++
  781. (List.fold_left (++) (mt()) (List.map fFIX_BINDER l)) ++
  782. fNODE "fix_binder_list" (1 + (List.length l))
  783. and fFIX_REC = function
  784. | CT_fix_rec(x1, x2, x3, x4, x5) ->
  785. fID x1 ++
  786. fBINDER_NE_LIST x2 ++
  787. fID_OPT x3 ++
  788. fFORMULA x4 ++
  789. fFORMULA x5 ++
  790. fNODE "fix_rec" 5
  791. and fFIX_REC_LIST = function
  792. | CT_fix_rec_list(x,l) ->
  793. fFIX_REC x ++
  794. (List.fold_left (++) (mt()) (List.map fFIX_REC l)) ++
  795. fNODE "fix_rec_list" (1 + (List.length l))
  796. and fFIX_TAC_LIST = function
  797. | CT_fix_tac_list l ->
  798. (List.fold_left (++) (mt()) (List.map fFIXTAC l)) ++
  799. fNODE "fix_tac_list" (List.length l)
  800. and fFORMULA = function
  801. | CT_coerce_BINARY_to_FORMULA x -> fBINARY x
  802. | CT_coerce_ID_to_FORMULA x -> fID x
  803. | CT_coerce_NUM_to_FORMULA x -> fNUM x
  804. | CT_coerce_SORT_TYPE_to_FORMULA x -> fSORT_TYPE x
  805. | CT_coerce_TYPED_FORMULA_to_FORMULA x -> fTYPED_FORMULA x
  806. | CT_appc(x1, x2) ->
  807. fFORMULA x1 ++
  808. fFORMULA_NE_LIST x2 ++
  809. fNODE "appc" 2
  810. | CT_arrowc(x1, x2) ->
  811. fFORMULA x1 ++
  812. fFORMULA x2 ++
  813. fNODE "arrowc" 2
  814. | CT_bang(x1) ->
  815. fFORMULA x1 ++
  816. fNODE "bang" 1
  817. | CT_cases(x1, x2, x3) ->
  818. fMATCHED_FORMULA_NE_LIST x1 ++
  819. fFORMULA_OPT x2 ++
  820. fEQN_LIST x3 ++
  821. fNODE "cases" 3
  822. | CT_cofixc(x1, x2) ->
  823. fID x1 ++
  824. fCOFIX_REC_LIST x2 ++
  825. fNODE "cofixc" 2
  826. | CT_elimc(x1, x2, x3, x4) ->
  827. fCASE x1 ++
  828. fFORMULA_OPT x2 ++
  829. fFORMULA x3 ++
  830. fFORMULA_LIST x4 ++
  831. fNODE "elimc" 4
  832. | CT_existvarc -> fNODE "existvarc" 0
  833. | CT_fixc(x1, x2) ->
  834. fID x1 ++
  835. fFIX_BINDER_LIST x2 ++
  836. fNODE "fixc" 2
  837. | CT_if(x1, x2, x3, x4) ->
  838. fFORMULA x1 ++
  839. fRETURN_INFO x2 ++
  840. fFORMULA x3 ++
  841. fFORMULA x4 ++
  842. fNODE "if" 4
  843. | CT_inductive_let(x1, x2, x3, x4) ->
  844. fFORMULA_OPT x1 ++
  845. fID_OPT_NE_LIST x2 ++
  846. fFORMULA x3 ++
  847. fFORMULA x4 ++
  848. fNODE "inductive_let" 4
  849. | CT_labelled_arg(x1, x2) ->
  850. fID x1 ++
  851. fFORMULA x2 ++
  852. fNODE "labelled_arg" 2
  853. | CT_lambdac(x1, x2) ->
  854. fBINDER_NE_LIST x1 ++
  855. fFORMULA x2 ++
  856. fNODE "lambdac" 2
  857. | CT_let_tuple(x1, x2, x3, x4) ->
  858. fID_OPT_NE_LIST x1 ++
  859. fRETURN_INFO x2 ++
  860. fFORMULA x3 ++
  861. fFORMULA x4 ++
  862. fNODE "let_tuple" 4
  863. | CT_letin(x1, x2) ->
  864. fDEF x1 ++
  865. fFORMULA x2 ++
  866. fNODE "letin" 2
  867. | CT_notation(x1, x2) ->
  868. fSTRING x1 ++
  869. fFORMULA_LIST x2 ++
  870. fNODE "notation" 2
  871. | CT_num_encapsulator(x1, x2) ->
  872. fNUM_TYPE x1 ++
  873. fFORMULA x2 ++
  874. fNODE "num_encapsulator" 2
  875. | CT_prodc(x1, x2) ->
  876. fBINDER_NE_LIST x1 ++
  877. fFORMULA x2 ++
  878. fNODE "prodc" 2
  879. | CT_proj(x1, x2) ->
  880. fFORMULA x1 ++
  881. fFORMULA_NE_LIST x2 ++
  882. fNODE "proj" 2
  883. and fFORMULA_LIST = function
  884. | CT_formula_list l ->
  885. (List.fold_left (++) (mt()) (List.map fFORMULA l)) ++
  886. fNODE "formula_list" (List.length l)
  887. and fFORMULA_NE_LIST = function
  888. | CT_formula_ne_list(x,l) ->
  889. fFORMULA x ++
  890. (List.fold_left (++) (mt()) (List.map fFORMULA l)) ++
  891. fNODE "formula_ne_list" (1 + (List.length l))
  892. and fFORMULA_OPT = function
  893. | CT_coerce_FORMULA_to_FORMULA_OPT x -> fFORMULA x
  894. | CT_coerce_ID_OPT_to_FORMULA_OPT x -> fID_OPT x
  895. and fFORMULA_OR_INT = function
  896. | CT_coerce_FORMULA_to_FORMULA_OR_INT x -> fFORMULA x
  897. | CT_coerce_ID_OR_INT_to_FORMULA_OR_INT x -> fID_OR_INT x
  898. and fGRAMMAR = function
  899. | CT_grammar_none -> fNODE "grammar_none" 0
  900. and fHYP_LOCATION = function
  901. | CT_coerce_UNFOLD_to_HYP_LOCATION x -> fUNFOLD x
  902. | CT_intype(x1, x2) ->
  903. fID x1 ++
  904. fINT_LIST x2 ++
  905. fNODE "intype" 2
  906. | CT_invalue(x1, x2) ->
  907. fID x1 ++
  908. fINT_LIST x2 ++
  909. fNODE "invalue" 2
  910. and fHYP_LOCATION_LIST_OR_STAR = function
  911. | CT_coerce_STAR_to_HYP_LOCATION_LIST_OR_STAR x -> fSTAR x
  912. | CT_hyp_location_list l ->
  913. (List.fold_left (++) (mt()) (List.map fHYP_LOCATION l)) ++
  914. fNODE "hyp_location_list" (List.length l)
  915. and fID = function
  916. | CT_ident x -> fATOM "ident" ++
  917. (f_atom_string x) ++
  918. str "\n"
  919. | CT_metac(x1) ->
  920. fINT x1 ++
  921. fNODE "metac" 1
  922. | CT_metaid x -> fATOM "metaid" ++
  923. (f_atom_string x) ++
  924. str "\n"
  925. and fIDENTITY_OPT = function
  926. | CT_coerce_NONE_to_IDENTITY_OPT x -> fNONE x
  927. | CT_identity -> fNODE "identity" 0
  928. and fID_LIST = function
  929. | CT_id_list l ->
  930. (List.fold_left (++) (mt()) (List.map fID l)) ++
  931. fNODE "id_list" (List.length l)
  932. and fID_LIST_LIST = function
  933. | CT_id_list_list l ->
  934. (List.fold_left (++) (mt()) (List.map fID_LIST l)) ++
  935. fNODE "id_list_list" (List.length l)
  936. and fID_LIST_OPT = function
  937. | CT_coerce_ID_LIST_to_ID_LIST_OPT x -> fID_LIST x
  938. | CT_coerce_NONE_to_ID_LIST_OPT x -> fNONE x
  939. and fID_NE_LIST = function
  940. | CT_id_ne_list(x,l) ->
  941. fID x ++
  942. (List.fold_left (++) (mt()) (List.map fID l)) ++
  943. fNODE "id_ne_list" (1 + (List.length l))
  944. and fID_NE_LIST_OR_STAR = function
  945. | CT_coerce_ID_NE_LIST_to_ID_NE_LIST_OR_STAR x -> fID_NE_LIST x
  946. | CT_coerce_STAR_to_ID_NE_LIST_OR_STAR x -> fSTAR x
  947. and fID_NE_LIST_OR_STRING = function
  948. | CT_coerce_ID_NE_LIST_to_ID_NE_LIST_OR_STRING x -> fID_NE_LIST x
  949. | CT_coerce_STRING_to_ID_NE_LIST_OR_STRING x -> fSTRING x
  950. and fID_OPT = function
  951. | CT_coerce_ID_to_ID_OPT x -> fID x
  952. | CT_coerce_NONE_to_ID_OPT x -> fNONE x
  953. and fID_OPT_LIST = function
  954. | CT_id_opt_list l ->
  955. (List.fold_left (++) (mt()) (List.map fID_OPT l)) ++
  956. fNODE "id_opt_list" (List.length l)
  957. and fID_OPT_NE_LIST = function
  958. | CT_id_opt_ne_list(x,l) ->
  959. fID_OPT x ++
  960. (List.fold_left (++) (mt()) (List.map fID_OPT l)) ++
  961. fNODE "id_opt_ne_list" (1 + (List.length l))
  962. and fID_OPT_OR_ALL = function
  963. | CT_coerce_ID_OPT_to_ID_OPT_OR_ALL x -> fID_OPT x
  964. | CT_all -> fNODE "all" 0
  965. and fID_OR_INT = function
  966. | CT_coerce_ID_to_ID_OR_INT x -> fID x
  967. | CT_coerce_INT_to_ID_OR_INT x -> fINT x
  968. and fID_OR_INT_OPT = function
  969. | CT_coerce_ID_OPT_to_ID_OR_INT_OPT x -> fID_OPT x
  970. | CT_coerce_ID_OR_INT_to_ID_OR_INT_OPT x -> fID_OR_INT x
  971. | CT_coerce_INT_OPT_to_ID_OR_INT_OPT x -> fINT_OPT x
  972. and fID_OR_STAR = function
  973. | CT_coerce_ID_to_ID_OR_STAR x -> fID x
  974. | CT_coerce_STAR_to_ID_OR_STAR x -> fSTAR x
  975. and fID_OR_STRING = function
  976. | CT_coerce_ID_to_ID_OR_STRING x -> fID x
  977. | CT_coerce_STRING_to_ID_OR_STRING x -> fSTRING x
  978. and fID_OR_STRING_NE_LIST = function
  979. | CT_id_or_string_ne_list(x,l) ->
  980. fID_OR_STRING x ++
  981. (List.fold_left (++) (mt()) (List.map fID_OR_STRING l)) ++
  982. fNODE "id_or_string_ne_list" (1 + (List.length l))
  983. and fIMPEXP = function
  984. | CT_coerce_NONE_to_IMPEXP x -> fNONE x
  985. | CT_export -> fNODE "export" 0
  986. | CT_import -> fNODE "import" 0
  987. and fIND_SPEC = function
  988. | CT_ind_spec(x1, x2, x3, x4, x5) ->
  989. fID x1 ++
  990. fBINDER_LIST x2 ++
  991. fFORMULA x3 ++
  992. fCONSTR_LIST x4 ++
  993. fDECL_NOTATION_OPT x5 ++
  994. fNODE "ind_spec" 5
  995. and fIND_SPEC_LIST = function
  996. | CT_ind_spec_list l ->
  997. (List.fold_left (++) (mt()) (List.map fIND_SPEC l)) ++
  998. fNODE "ind_spec_list" (List.length l)
  999. and fINT = function
  1000. | CT_int x -> fATOM "int" ++
  1001. (f_atom_int x) ++
  1002. str "\n"
  1003. and fINTRO_PATT = function
  1004. | CT_coerce_ID_to_INTRO_PATT x -> fID x
  1005. | CT_disj_pattern(x,l) ->
  1006. fINTRO_PATT_LIST x ++
  1007. (List.fold_left (++) (mt()) (List.map fINTRO_PATT_LIST l)) ++
  1008. fNODE "disj_pattern" (1 + (List.length l))
  1009. and fINTRO_PATT_LIST = function
  1010. | CT_intro_patt_list l ->
  1011. (List.fold_left (++) (mt()) (List.map fINTRO_PATT l)) ++
  1012. fNODE "intro_patt_list" (List.length l)
  1013. and fINTRO_PATT_OPT = function
  1014. | CT_coerce_ID_OPT_to_INTRO_PATT_OPT x -> fID_OPT x
  1015. | CT_coerce_INTRO_PATT_to_INTRO_PATT_OPT x -> fINTRO_PATT x
  1016. and fINT_LIST = function
  1017. | CT_int_list l ->
  1018. (List.fold_left (++) (mt()) (List.map fINT l)) ++
  1019. fNODE "int_list" (List.length l)
  1020. and fINT_NE_LIST = function
  1021. | CT_int_ne_list(x,l) ->
  1022. fINT x ++
  1023. (List.fold_left (++) (mt()) (List.map fINT l)) ++
  1024. fNODE "int_ne_list" (1 + (List.length l))
  1025. and fINT_OPT = function
  1026. | CT_coerce_INT_to_INT_OPT x -> fINT x
  1027. | CT_coerce_NONE_to_INT_OPT x -> fNONE x
  1028. and fINT_OR_LOCN = function
  1029. | CT_coerce_INT_to_INT_OR_LOCN x -> fINT x
  1030. | CT_coerce_LOCN_to_INT_OR_LOCN x -> fLOCN x
  1031. and fINT_OR_NEXT = function
  1032. | CT_coerce_INT_to_INT_OR_NEXT x -> fINT x
  1033. | CT_next_level -> fNODE "next_level" 0
  1034. and fINV_TYPE = function
  1035. | CT_inv_clear -> fNODE "inv_clear" 0
  1036. | CT_inv_regular -> fNODE "inv_regular" 0
  1037. | CT_inv_simple -> fNODE "inv_simple" 0
  1038. and fIN_OR_OUT_MODULES = function
  1039. | CT_coerce_NONE_to_IN_OR_OUT_MODULES x -> fNONE x
  1040. | CT_in_modules(x1) ->
  1041. fID_NE_LIST x1 ++
  1042. fNODE "in_modules" 1
  1043. | CT_out_modules(x1) ->
  1044. fID_NE_LIST x1 ++
  1045. fNODE "out_modules" 1
  1046. and fLET_CLAUSE = function
  1047. | CT_let_clause(x1, x2, x3) ->
  1048. fID x1 ++
  1049. fTACTIC_OPT x2 ++
  1050. fLET_VALUE x3 ++
  1051. fNODE "let_clause" 3
  1052. and fLET_CLAUSES = function
  1053. | CT_let_clauses(x,l) ->
  1054. fLET_CLAUSE x ++
  1055. (List.fold_left (++) (mt()) (List.map fLET_CLAUSE l)) ++
  1056. fNODE "let_clauses" (1 + (List.length l))
  1057. and fLET_VALUE = function
  1058. | CT_coerce_DEF_BODY_to_LET_VALUE x -> fDEF_BODY x
  1059. | CT_coerce_TACTIC_COM_to_LET_VALUE x -> fTACTIC_COM x
  1060. and fLOCAL_OPT = function
  1061. | CT_coerce_NONE_to_LOCAL_OPT x -> fNONE x
  1062. | CT_local -> fNODE "local" 0
  1063. and fLOCN = function
  1064. | CT_locn x -> fATOM "locn" ++
  1065. (f_atom_string x) ++
  1066. str "\n"
  1067. and fMATCHED_FORMULA = function
  1068. | CT_coerce_FORMULA_to_MATCHED_FORMULA x -> fFORMULA x
  1069. | CT_formula_as(x1, x2) ->
  1070. fFORMULA x1 ++
  1071. fID_OPT x2 ++
  1072. fNODE "formula_as" 2
  1073. | CT_formula_as_in(x1, x2, x3) ->
  1074. fFORMULA x1 ++
  1075. fID_OPT x2 ++
  1076. fFORMULA x3 ++
  1077. fNODE "formula_as_in" 3
  1078. | CT_formula_in(x1, x2) ->
  1079. fFORMULA x1 ++
  1080. fFORMULA x2 ++
  1081. fNODE "formula_in" 2
  1082. and fMATCHED_FORMULA_NE_LIST = function
  1083. | CT_matched_formula_ne_list(x,l) ->
  1084. fMATCHED_FORMULA x ++
  1085. (List.fold_left (++) (mt()) (List.map fMATCHED_FORMULA l)) ++
  1086. fNODE "matched_formula_ne_list" (1 + (List.length l))
  1087. and fMATCH_PATTERN = function
  1088. | CT_coerce_ID_OPT_to_MATCH_PATTERN x -> fID_OPT x
  1089. | CT_coerce_NUM_to_MATCH_PATTERN x -> fNUM x
  1090. | CT_pattern_app(x1, x2) ->
  1091. fMATCH_PATTERN x1 ++
  1092. fMATCH_PATTERN_NE_LIST x2 ++
  1093. fNODE "pattern_app" 2
  1094. | CT_pattern_as(x1, x2) ->
  1095. fMATCH_PATTERN x1 ++
  1096. fID_OPT x2 ++
  1097. fNODE "pattern_as" 2
  1098. | CT_pattern_delimitors(x1, x2) ->
  1099. fNUM_TYPE x1 ++
  1100. fMATCH_PATTERN x2 ++
  1101. fNODE "pattern_delimitors" 2
  1102. | CT_pattern_notation(x1, x2) ->
  1103. fSTRING x1 ++
  1104. fMATCH_PATTERN_LIST x2 ++
  1105. fNODE "pattern_notation" 2
  1106. and fMATCH_PATTERN_LIST = function
  1107. | CT_match_pattern_list l ->
  1108. (List.fold_left (++) (mt()) (List.map fMATCH_PATTERN l)) ++
  1109. fNODE "match_pattern_list" (List.length l)
  1110. and fMATCH_PATTERN_NE_LIST = function
  1111. | CT_match_pattern_ne_list(x,l) ->
  1112. fMATCH_PATTERN x ++
  1113. (List.fold_left (++) (mt()) (List.map fMATCH_PATTERN l)) ++
  1114. fNODE "match_pattern_ne_list" (1 + (List.length l))
  1115. and fMATCH_TAC_RULE = function
  1116. | CT_match_tac_rule(x1, x2) ->
  1117. fCONTEXT_PATTERN x1 ++
  1118. fLET_VALUE x2 ++
  1119. fNODE "match_tac_rule" 2
  1120. and fMATCH_TAC_RULES = function
  1121. | CT_match_tac_rules(x,l) ->
  1122. fMATCH_TAC_RULE x ++
  1123. (List.fold_left (++) (mt()) (List.map fMATCH_TAC_RULE l)) ++
  1124. fNODE "match_tac_rules" (1 + (List.length l))
  1125. and fMODIFIER = function
  1126. | CT_entry_type(x1, x2) ->
  1127. fID x1 ++
  1128. fID x2 ++
  1129. fNODE "entry_type" 2
  1130. | CT_format(x1) ->
  1131. fSTRING x1 ++
  1132. fNODE "format" 1
  1133. | CT_lefta -> fNODE "lefta" 0
  1134. | CT_nona -> fNODE "nona" 0
  1135. | CT_only_parsing -> fNODE "only_parsing" 0
  1136. | CT_righta -> fNODE "righta" 0
  1137. | CT_set_item_level(x1, x2) ->
  1138. fID_NE_LIST x1 ++
  1139. fINT_OR_NEXT x2 ++
  1140. fNODE "set_item_level" 2
  1141. | CT_set_level(x1) ->
  1142. fINT x1 ++
  1143. fNODE "set_level" 1
  1144. and fMODIFIER_LIST = function
  1145. | CT_modifier_list l ->
  1146. (List.fold_left (++) (mt()) (List.map fMODIFIER l)) ++
  1147. fNODE "modifier_list" (List.length l)
  1148. and fMODULE_BINDER = function
  1149. | CT_module_binder(x1, x2) ->
  1150. fID_NE_LIST x1 ++
  1151. fMODULE_TYPE x2 ++
  1152. fNODE "module_binder" 2
  1153. and fMODULE_BINDER_LIST = function
  1154. | CT_module_binder_list l ->
  1155. (List.fold_left (++) (mt()) (List.map fMODULE_BINDER l)) ++
  1156. fNODE "module_binder_list" (List.length l)
  1157. and fMODULE_EXPR = function
  1158. | CT_coerce_ID_OPT_to_MODULE_EXPR x -> fID_OPT x
  1159. | CT_module_app(x1, x2) ->
  1160. fMODULE_EXPR x1 ++
  1161. fMODULE_EXPR x2 ++
  1162. fNODE "module_app" 2
  1163. and fMODULE_TYPE = function
  1164. | CT_coerce_ID_to_MODULE_TYPE x -> fID x
  1165. | CT_module_type_with_def(x1, x2, x3) ->
  1166. fMODULE_TYPE x1 ++
  1167. fID_LIST x2 ++
  1168. fFORMULA x3 ++
  1169. fNODE "module_type_with_def" 3
  1170. | CT_module_type_with_mod(x1, x2, x3) ->
  1171. fMODULE_TYPE x1 ++
  1172. fID_LIST x2 ++
  1173. fID x3 ++
  1174. fNODE "module_type_with_mod" 3
  1175. and fMODULE_TYPE_CHECK = function
  1176. | CT_coerce_MODULE_TYPE_OPT_to_MODULE_TYPE_CHECK x -> fMODULE_TYPE_OPT x
  1177. | CT_only_check(x1) ->
  1178. fMODULE_TYPE x1 ++
  1179. fNODE "only_check" 1
  1180. and fMODULE_TYPE_OPT = function
  1181. | CT_coerce_ID_OPT_to_MODULE_TYPE_OPT x -> fID_OPT x
  1182. | CT_coerce_MODULE_TYPE_to_MODULE_TYPE_OPT x -> fMODULE_TYPE x
  1183. and fNATURAL_FEATURE = function
  1184. | CT_contractible -> fNODE "contractible" 0
  1185. | CT_implicit -> fNODE "implicit" 0
  1186. | CT_nat_transparent -> fNODE "nat_transparent" 0
  1187. and fNONE = function
  1188. | CT_none -> fNODE "none" 0
  1189. and fNUM = function
  1190. | CT_int_encapsulator x -> fATOM "int_encapsulator" ++
  1191. (f_atom_string x) ++
  1192. str "\n"
  1193. and fNUM_TYPE = function
  1194. | CT_num_type x -> fATOM "num_type" ++
  1195. (f_atom_string x) ++
  1196. str "\n"
  1197. and fOMEGA_FEATURE = function
  1198. | CT_coerce_STRING_to_OMEGA_FEATURE x -> fSTRING x
  1199. | CT_flag_action -> fNODE "flag_action" 0
  1200. | CT_flag_system -> fNODE "flag_system" 0
  1201. | CT_flag_time -> fNODE "flag_time" 0
  1202. and fOMEGA_MODE = function
  1203. | CT_set -> fNODE "set" 0
  1204. | CT_switch -> fNODE "switch" 0
  1205. | CT_unset -> fNODE "unset" 0
  1206. and fORIENTATION = function
  1207. | CT_lr -> fNODE "lr" 0
  1208. | CT_rl -> fNODE "rl" 0
  1209. and fPATTERN = function
  1210. | CT_pattern_occ(x1, x2) ->
  1211. fINT_LIST x1 ++
  1212. fFORMULA x2 ++
  1213. fNODE "pattern_occ" 2
  1214. and fPATTERN_NE_LIST = function
  1215. | CT_pattern_ne_list(x,l) ->
  1216. fPATTERN x ++
  1217. (List.fold_left (++) (mt()) (List.map fPATTERN l)) ++
  1218. fNODE "pattern_ne_list" (1 + (List.length l))
  1219. and fPATTERN_OPT = function
  1220. | CT_coerce_NONE_to_PATTERN_OPT x -> fNONE x
  1221. | CT_coerce_PATTERN_to_PATTERN_OPT x -> fPATTERN x
  1222. and fPREMISE = function
  1223. | CT_coerce_TYPED_FORMULA_to_PREMISE x -> fTYPED_FORMULA x
  1224. | CT_eval_result(x1, x2, x3) ->
  1225. fFORMULA x1 ++
  1226. fFORMULA x2 ++
  1227. fFORMULA x3 ++
  1228. fNODE "eval_result" 3
  1229. | CT_premise(x1, x2) ->
  1230. fID x1 ++
  1231. fFORMULA x2 ++
  1232. fNODE "premise" 2
  1233. and fPREMISES_LIST = function
  1234. | CT_premises_list l ->
  1235. (List.fold_left (++) (mt()) (List.map fPREMISE l)) ++
  1236. fNODE "premises_list" (List.length l)
  1237. and fPREMISE_PATTERN = function
  1238. | CT_premise_pattern(x1, x2) ->
  1239. fID_OPT x1 ++
  1240. fCONTEXT_PATTERN x2 ++
  1241. fNODE "premise_pattern" 2
  1242. and fPROOF_SCRIPT = function
  1243. | CT_proof_script l ->
  1244. (List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
  1245. fNODE "proof_script" (List.length l)
  1246. and fRECCONSTR = function
  1247. | CT_defrecconstr(x1, x2, x3) ->
  1248. fID_OPT x1 ++
  1249. fFORMULA x2 ++
  1250. fFORMULA_OPT x3 ++
  1251. fNODE "defrecconstr" 3
  1252. | CT_defrecconstr_coercion(x1, x2, x3) ->
  1253. fID_OPT x1 ++
  1254. fFORMULA x2 ++
  1255. fFORMULA_OPT x3 ++
  1256. fNODE "defrecconstr_coercion" 3
  1257. | CT_recconstr(x1, x2) ->
  1258. fID_OPT x1 ++
  1259. fFORMULA x2 ++
  1260. fNODE "recconstr" 2
  1261. | CT_recconstr_coercion(x1, x2) ->
  1262. fID_OPT x1 ++
  1263. fFORMULA x2 ++
  1264. fNODE "recconstr_coercion" 2
  1265. and fRECCONSTR_LIST = function
  1266. | CT_recconstr_list l ->
  1267. (List.fold_left (++) (mt()) (List.map fRECCONSTR l)) ++
  1268. fNODE "recconstr_list" (List.length l)
  1269. and fREC_TACTIC_FUN = function
  1270. | CT_rec_tactic_fun(x1, x2, x3) ->
  1271. fID x1 ++
  1272. fID_OPT_NE_LIST x2 ++
  1273. fTACTIC_COM x3 ++
  1274. fNODE "rec_tactic_fun" 3
  1275. and fREC_TACTIC_FUN_LIST = function
  1276. | CT_rec_tactic_fun_list(x,l) ->
  1277. fREC_TACTIC_FUN x ++
  1278. (List.fold_left (++) (mt()) (List.map fREC_TACTIC_FUN l)) ++
  1279. fNODE "rec_tactic_fun_list" (1 + (List.length l))
  1280. and fRED_COM = function
  1281. | CT_cbv(x1, x2) ->
  1282. fCONVERSION_FLAG_LIST x1 ++
  1283. fCONV_SET x2 ++
  1284. fNODE "cbv" 2
  1285. | CT_fold(x1) ->
  1286. fFORMULA_LIST x1 ++
  1287. fNODE "fold" 1
  1288. | CT_hnf -> fNODE "hnf" 0
  1289. | CT_lazy(x1, x2) ->
  1290. fCONVERSION_FLAG_LIST x1 ++
  1291. fCONV_SET x2 ++
  1292. fNODE "lazy" 2
  1293. | CT_pattern(x1) ->
  1294. fPATTERN_NE_LIST x1 ++
  1295. fNODE "pattern" 1
  1296. | CT_red -> fNODE "red" 0
  1297. | CT_cbvvm -> fNODE "vm_compute" 0
  1298. | CT_simpl(x1) ->
  1299. fPATTERN_OPT x1 ++
  1300. fNODE "simpl" 1
  1301. | CT_unfold(x1) ->
  1302. fUNFOLD_NE_LIST x1 ++
  1303. fNODE "unfold" 1
  1304. and fRETURN_INFO = function
  1305. | CT_coerce_NONE_to_RETURN_INFO x -> fNONE x
  1306. | CT_as_and_return(x1, x2) ->
  1307. fID_OPT x1 ++
  1308. fFORMULA x2 ++
  1309. fNODE "as_and_return" 2
  1310. | CT_return(x1) ->
  1311. fFORMULA x1 ++
  1312. fNODE "return" 1
  1313. and fRULE = function
  1314. | CT_rule(x1, x2) ->
  1315. fPREMISES_LIST x1 ++
  1316. fFORMULA x2 ++
  1317. fNODE "rule" 2
  1318. and fRULE_LIST = function
  1319. | CT_rule_list l ->
  1320. (List.fold_left (++) (mt()) (List.map fRULE l)) ++
  1321. fNODE "rule_list" (List.length l)
  1322. and fSCHEME_SPEC = function
  1323. | CT_scheme_spec(x1, x2, x3, x4) ->
  1324. fID x1 ++
  1325. fDEP x2 ++
  1326. fFORMULA x3 ++
  1327. fSORT_TYPE x4 ++
  1328. fNODE "scheme_spec" 4
  1329. and fSCHEME_SPEC_LIST = function
  1330. | CT_scheme_spec_list(x,l) ->
  1331. fSCHEME_SPEC x ++
  1332. (List.fold_left (++) (mt()) (List.map fSCHEME_SPEC l)) ++
  1333. fNODE "scheme_spec_list" (1 + (List.length l))
  1334. and fSCOMMENT_CONTENT = function
  1335. | CT_coerce_FORMULA_to_SCOMMENT_CONTENT x -> fFORMULA x
  1336. | CT_coerce_ID_OR_STRING_to_SCOMMENT_CONTENT x -> fID_OR_STRING x
  1337. and fSCOMMENT_CONTENT_LIST = function
  1338. | CT_scomment_content_list l ->
  1339. (List.fold_left (++) (mt()) (List.map fSCOMMENT_CONTENT l)) ++
  1340. fNODE "scomment_content_list" (List.length l)
  1341. and fSECTION_BEGIN = function
  1342. | CT_section(x1) ->
  1343. fID x1 ++
  1344. fNODE "section" 1
  1345. and fSECTION_BODY = function
  1346. | CT_section_body l ->
  1347. (List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
  1348. fNODE "section_body" (List.length l)
  1349. and fSIGNED_INT = function
  1350. | CT_coerce_INT_to_SIGNED_INT x -> fINT x
  1351. | CT_minus(x1) ->
  1352. fINT x1 ++
  1353. fNODE "minus" 1
  1354. and fSIGNED_INT_LIST = function
  1355. | CT_signed_int_list l ->
  1356. (List.fold_left (++) (mt()) (List.map fSIGNED_INT l)) ++
  1357. fNODE "signed_int_list" (List.length l)
  1358. and fSINGLE_OPTION_VALUE = function
  1359. | CT_coerce_INT_to_SINGLE_OPTION_VALUE x -> fINT x
  1360. | CT_coerce_STRING_to_SINGLE_OPTION_VALUE x -> fSTRING x
  1361. and fSORT_TYPE = function
  1362. | CT_sortc x -> fATOM "sortc" ++
  1363. (f_atom_string x) ++
  1364. str "\n"
  1365. and fSPEC_LIST = function
  1366. | CT_coerce_BINDING_LIST_to_SPEC_LIST x -> fBINDING_LIST x
  1367. | CT_coerce_FORMULA_LIST_to_SPEC_LIST x -> fFORMULA_LIST x
  1368. and fSPEC_OPT = function
  1369. | CT_coerce_NONE_to_SPEC_OPT x -> fNONE x
  1370. | CT_spec -> fNODE "spec" 0
  1371. and fSTAR = function
  1372. | CT_star -> fNODE "star" 0
  1373. and fSTAR_OPT = function
  1374. | CT_coerce_NONE_to_STAR_OPT x -> fNONE x
  1375. | CT_coerce_STAR_to_STAR_OPT x -> fSTAR x
  1376. and fSTRING = function
  1377. | CT_string x -> fATOM "string" ++
  1378. (f_atom_string x) ++
  1379. str "\n"
  1380. and fSTRING_NE_LIST = function
  1381. | CT_string_ne_list(x,l) ->
  1382. fSTRING x ++
  1383. (List.fold_left (++) (mt()) (List.map fSTRING l)) ++
  1384. fNODE "string_ne_list" (1 + (List.length l))
  1385. and fSTRING_OPT = function
  1386. | CT_coerce_NONE_to_STRING_OPT x -> fNONE x
  1387. | CT_coerce_STRING_to_STRING_OPT x -> fSTRING x
  1388. and fTABLE = function
  1389. | CT_coerce_ID_to_TABLE x -> fID x
  1390. | CT_table(x1, x2) ->
  1391. fID x1 ++
  1392. fID x2 ++
  1393. fNODE "table" 2
  1394. and fTACTIC_ARG = function
  1395. | CT_coerce_EVAL_CMD_to_TACTIC_ARG x -> fEVAL_CMD x
  1396. | CT_coerce_FORMULA_OR_INT_to_TACTIC_ARG x -> fFORMULA_OR_INT x
  1397. | CT_coerce_TACTIC_COM_to_TACTIC_ARG x -> fTACTIC_COM x
  1398. | CT_coerce_TERM_CHANGE_to_TACTIC_ARG x -> fTERM_CHANGE x
  1399. | CT_void -> fNODE "void" 0
  1400. and fTACTIC_ARG_LIST = function
  1401. | CT_tactic_arg_list(x,l) ->
  1402. fTACTIC_ARG x ++
  1403. (List.fold_left (++) (mt()) (List.map fTACTIC_ARG l)) ++
  1404. fNODE "tactic_arg_list" (1 + (List.length l))
  1405. and fTACTIC_COM = function
  1406. | CT_abstract(x1, x2) ->
  1407. fID_OPT x1 ++
  1408. fTACTIC_COM x2 ++
  1409. fNODE "abstract" 2
  1410. | CT_absurd(x1) ->
  1411. fFORMULA x1 ++
  1412. fNODE "absurd" 1
  1413. | CT_any_constructor(x1) ->
  1414. fTACTIC_OPT x1 ++
  1415. fNODE "any_constructor" 1
  1416. | CT_apply(x1, x2) ->
  1417. fFORMULA x1 ++
  1418. fSPEC_LIST x2 ++
  1419. fNODE "apply" 2
  1420. | CT_assert(x1, x2) ->
  1421. fID_OPT x1 ++
  1422. fFORMULA x2 ++
  1423. fNODE "assert" 2
  1424. | CT_assumption -> fNODE "assumption" 0
  1425. | CT_auto(x1) ->
  1426. fINT_OPT x1 ++
  1427. fNODE "auto" 1
  1428. | CT_auto_with(x1, x2) ->
  1429. fINT_OPT x1 ++
  1430. fID_NE_LIST_OR_STAR x2 ++
  1431. fNODE "auto_with" 2
  1432. | CT_autorewrite(x1, x2) ->
  1433. fID_NE_LIST x1 ++
  1434. fTACTIC_OPT x2 ++
  1435. fNODE "autorewrite" 2
  1436. | CT_autotdb(x1) ->
  1437. fINT_OPT x1 ++
  1438. fNODE "autotdb" 1
  1439. | CT_case_type(x1) ->
  1440. fFORMULA x1 ++
  1441. fNODE "case_type" 1
  1442. | CT_casetac(x1, x2) ->
  1443. fFORMULA x1 ++
  1444. fSPEC_LIST x2 ++
  1445. fNODE "casetac" 2
  1446. | CT_cdhyp(x1) ->
  1447. fID x1 ++
  1448. fNODE "cdhyp" 1
  1449. | CT_change(x1, x2) ->
  1450. fFORMULA x1 ++
  1451. fCLAUSE x2 ++
  1452. fNODE "change" 2
  1453. | CT_change_local(x1, x2, x3) ->
  1454. fPATTERN x1 ++
  1455. fFORMULA x2 ++
  1456. fCLAUSE x3 ++
  1457. fNODE "change_local" 3
  1458. | CT_clear(x1) ->
  1459. fID_NE_LIST x1 ++
  1460. fNODE "clear" 1
  1461. | CT_clear_body(x1) ->
  1462. fID_NE_LIST x1 ++
  1463. fNODE "clear_body" 1
  1464. | CT_cofixtactic(x1, x2) ->
  1465. fID_OPT x1 ++
  1466. fCOFIX_TAC_LIST x2 ++
  1467. fNODE "cofixtactic" 2
  1468. | CT_condrewrite_lr(x1, x2, x3, x4) ->
  1469. fTACTIC_COM x1 ++
  1470. fFORMULA x2 ++
  1471. fSPEC_LIST x3 ++
  1472. fID_OPT x4 ++
  1473. fNODE "condrewrite_lr" 4
  1474. | CT_condrewrite_rl(x1, x2, x3, x4) ->
  1475. fTACTIC_COM x1 ++
  1476. fFORMULA x2 ++
  1477. fSPEC_LIST x3 ++
  1478. fID_OPT x4 ++
  1479. fNODE "condrewrite_rl" 4
  1480. | CT_constructor(x1, x2) ->
  1481. fINT x1 ++
  1482. fSPEC_LIST x2 ++
  1483. fNODE "constructor" 2
  1484. | CT_contradiction -> fNODE "contradiction" 0
  1485. | CT_contradiction_thm(x1, x2) ->
  1486. fFORMULA x1 ++
  1487. fSPEC_LIST x2 ++
  1488. fNODE "contradiction_thm" 2
  1489. | CT_cut(x1) ->
  1490. fFORMULA x1 ++
  1491. fNODE "cut" 1
  1492. | CT_cutrewrite_lr(x1, x2) ->
  1493. fFORMULA x1 ++
  1494. fID_OPT x2 ++
  1495. fNODE "cutrewrite_lr" 2
  1496. | CT_cutrewrite_rl(x1, x2) ->
  1497. fFORMULA x1 ++
  1498. fID_OPT x2 ++
  1499. fNODE "cutrewrite_rl" 2
  1500. | CT_dauto(x1, x2) ->
  1501. fINT_OPT x1 ++
  1502. fINT_OPT x2 ++
  1503. fNODE "dauto" 2
  1504. | CT_dconcl -> fNODE "dconcl" 0
  1505. | CT_decompose_list(x1, x2) ->
  1506. fID_NE_LIST x1 ++
  1507. fFORMULA x2 ++
  1508. fNODE "decompose_list" 2
  1509. | CT_decompose_record(x1) ->
  1510. fFORMULA x1 ++
  1511. fNODE "decompose_record" 1
  1512. | CT_decompose_sum(x1) ->
  1513. fFORMULA x1 ++
  1514. fNODE "decompose_sum" 1
  1515. | CT_depinversion(x1, x2, x3, x4) ->
  1516. fINV_TYPE x1 ++
  1517. fID_OR_INT x2 ++
  1518. fINTRO_PATT_OPT x3 ++
  1519. fFORMULA_OPT x4 ++
  1520. fNODE "depinversion" 4
  1521. | CT_deprewrite_lr(x1) ->
  1522. fID x1 ++
  1523. fNODE "deprewrite_lr" 1
  1524. | CT_deprewrite_rl(x1) ->
  1525. fID x1 ++
  1526. fNODE "deprewrite_rl" 1
  1527. | CT_destruct(x1) ->
  1528. fID_OR_INT x1 ++
  1529. fNODE "destruct" 1
  1530. | CT_dhyp(x1) ->
  1531. fID x1 ++
  1532. fNODE "dhyp" 1
  1533. | CT_discriminate_eq(x1) ->
  1534. fID_OR_INT_OPT x1 ++
  1535. fNODE "discriminate_eq" 1
  1536. | CT_do(x1, x2) ->
  1537. fID_OR_INT x1 ++
  1538. fTACTIC_COM x2 ++
  1539. fNODE "do" 2
  1540. | CT_eapply(x1, x2) ->
  1541. fFORMULA x1 ++
  1542. fSPEC_LIST x2 ++
  1543. fNODE "eapply" 2
  1544. | CT_eauto(x1, x2) ->
  1545. fID_OR_INT_OPT x1 ++
  1546. fID_OR_INT_OPT x2 ++
  1547. fNODE "eauto" 2
  1548. | CT_eauto_with(x1, x2, x3) ->
  1549. fID_OR_INT_OPT x1 ++
  1550. fID_OR_INT_OPT x2 ++
  1551. fID_NE_LIST_OR_STAR x3 ++
  1552. fNODE "eauto_with" 3
  1553. | CT_elim(x1, x2, x3) ->
  1554. fFORMULA x1 ++
  1555. fSPEC_LIST x2 ++
  1556. fUSING x3 ++
  1557. fNODE "elim" 3
  1558. | CT_elim_type(x1) ->
  1559. fFORMULA x1 ++
  1560. fNODE "elim_type" 1
  1561. | CT_exact(x1) ->
  1562. fFORMULA x1 ++
  1563. fNODE "exact" 1
  1564. | CT_exact_no_check(x1) ->
  1565. fFORMULA x1 ++
  1566. fNODE "exact_no_check" 1
  1567. | CT_vm_cast_no_check(x1) ->
  1568. fFORMULA x1 ++
  1569. fNODE "vm_cast_no_check" 1
  1570. | CT_exists(x1) ->
  1571. fSPEC_LIST x1 ++
  1572. fNODE "exists" 1
  1573. | CT_fail(x1, x2) ->
  1574. fID_OR_INT x1 ++
  1575. fSTRING_OPT x2 ++
  1576. fNODE "fail" 2
  1577. | CT_first(x,l) ->
  1578. fTACTIC_COM x ++
  1579. (List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
  1580. fNODE "first" (1 + (List.length l))
  1581. | CT_firstorder(x1) ->
  1582. fTACTIC_OPT x1 ++
  1583. fNODE "firstorder" 1
  1584. | CT_firstorder_using(x1, x2) ->
  1585. fTACTIC_OPT x1 ++
  1586. fID_NE_LIST x2 ++
  1587. fNODE "firstorder_using" 2
  1588. | CT_firstorder_with(x1, x2) ->
  1589. fTACTIC_OPT x1 ++
  1590. fID_NE_LIST x2 ++
  1591. fNODE "firstorder_with" 2
  1592. | CT_fixtactic(x1, x2, x3) ->
  1593. fID_OPT x1 ++
  1594. fINT x2 ++
  1595. fFIX_TAC_LIST x3 ++
  1596. fNODE "fixtactic" 3
  1597. | CT_formula_marker(x1) ->
  1598. fFORMULA x1 ++
  1599. fNODE "formula_marker" 1
  1600. | CT_fresh(x1) ->
  1601. fSTRING_OPT x1 ++
  1602. fNODE "fresh" 1
  1603. | CT_generalize(x1) ->
  1604. fFORMULA_NE_LIST x1 ++
  1605. fNODE "generalize" 1
  1606. | CT_generalize_dependent(x1) ->
  1607. fFORMULA x1 ++
  1608. fNODE "generalize_dependent" 1
  1609. | CT_idtac(x1) ->
  1610. fSTRING_OPT x1 ++
  1611. fNODE "idtac" 1
  1612. | CT_induction(x1) ->
  1613. fID_OR_INT x1 ++
  1614. fNODE "induction" 1
  1615. | CT_info(x1) ->
  1616. fTACTIC_COM x1 ++
  1617. fNODE "info" 1
  1618. | CT_injection_eq(x1) ->
  1619. fID_OR_INT_OPT x1 ++
  1620. fNODE "injection_eq" 1
  1621. | CT_instantiate(x1, x2, x3) ->
  1622. fINT x1 ++
  1623. fFORMULA x2 ++
  1624. fCLAUSE x3 ++
  1625. fNODE "instantiate" 3
  1626. | CT_intro(x1) ->
  1627. fID_OPT x1 ++
  1628. fNODE "intro" 1
  1629. | CT_intro_after(x1, x2) ->
  1630. fID_OPT x1 ++
  1631. fID x2 ++
  1632. fNODE "intro_after" 2
  1633. | CT_intros(x1) ->
  1634. fINTRO_PATT_LIST x1 ++
  1635. fNODE "intros" 1
  1636. | CT_intros_until(x1) ->
  1637. fID_OR_INT x1 ++
  1638. fNODE "intros_until" 1
  1639. | CT_inversion(x1, x2, x3, x4) ->
  1640. fINV_TYPE x1 ++
  1641. fID_OR_INT x2 ++
  1642. fINTRO_PATT_OPT x3 ++
  1643. fID_LIST x4 ++
  1644. fNODE "inversion" 4
  1645. | CT_left(x1) ->
  1646. fSPEC_LIST x1 ++
  1647. fNODE "left" 1
  1648. | CT_let_ltac(x1, x2) ->
  1649. fLET_CLAUSES x1 ++
  1650. fLET_VALUE x2 ++
  1651. fNODE "let_ltac" 2
  1652. | CT_lettac(x1, x2, x3) ->
  1653. fID_OPT x1 ++
  1654. fFORMULA x2 ++
  1655. fCLAUSE x3 ++
  1656. fNODE "lettac" 3
  1657. | CT_match_context(x,l) ->
  1658. fCONTEXT_RULE x ++
  1659. (List.fold_left (++) (mt()) (List.map fCONTEXT_RULE l)) ++
  1660. fNODE "match_context" (1 + (List.length l))
  1661. | CT_match_context_reverse(x,l) ->
  1662. fCONTEXT_RULE x ++
  1663. (List.fold_left (++) (mt()) (List.map fCONTEXT_RULE l)) ++
  1664. fNODE "match_context_reverse" (1 + (List.length l))
  1665. | CT_match_tac(x1, x2) ->
  1666. fTACTIC_COM x1 ++
  1667. fMATCH_TAC_RULES x2 ++
  1668. fNODE "match_tac" 2
  1669. | CT_move_after(x1, x2) ->
  1670. fID x1 ++
  1671. fID x2 ++
  1672. fNODE "move_after" 2
  1673. | CT_new_destruct(x1, x2, x3) ->
  1674. (List.fold_left (++) (mt()) (List.map fFORMULA_OR_INT x1)) ++ (* Julien F. Est-ce correct? *)
  1675. fUSING x2 ++
  1676. fINTRO_PATT_OPT x3 ++
  1677. fNODE "new_destruct" 3
  1678. | CT_new_induction(x1, x2, x3) ->
  1679. (List.fold_left (++) (mt()) (List.map fFORMULA_OR_INT x1)) ++ (* Pierre C. Est-ce correct? *)
  1680. fUSING x2 ++
  1681. fINTRO_PATT_OPT x3 ++
  1682. fNODE "new_induction" 3
  1683. | CT_omega -> fNODE "omega" 0
  1684. | CT_orelse(x1, x2) ->
  1685. fTACTIC_COM x1 ++
  1686. fTACTIC_COM x2 ++
  1687. fNODE "orelse" 2
  1688. | CT_parallel(x,l) ->
  1689. fTACTIC_COM x ++
  1690. (List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
  1691. fNODE "parallel" (1 + (List.length l))
  1692. | CT_pose(x1, x2) ->
  1693. fID_OPT x1 ++
  1694. fFORMULA x2 ++
  1695. fNODE "pose" 2
  1696. | CT_progress(x1) ->
  1697. fTACTIC_COM x1 ++
  1698. fNODE "progress" 1
  1699. | CT_prolog(x1, x2) ->
  1700. fFORMULA_LIST x1 ++
  1701. fINT x2 ++
  1702. fNODE "prolog" 2
  1703. | CT_rec_tactic_in(x1, x2) ->
  1704. fREC_TACTIC_FUN_LIST x1 ++
  1705. fTACTIC_COM x2 ++
  1706. fNODE "rec_tactic_in" 2
  1707. | CT_reduce(x1, x2) ->
  1708. fRED_COM x1 ++
  1709. fCLAUSE x2 ++
  1710. fNODE "reduce" 2
  1711. | CT_refine(x1) ->
  1712. fFORMULA x1 ++
  1713. fNODE "refine" 1
  1714. | CT_reflexivity -> fNODE "reflexivity" 0
  1715. | CT_rename(x1, x2) ->
  1716. fID x1 ++
  1717. fID x2 ++
  1718. fNODE "rename" 2
  1719. | CT_repeat(x1) ->
  1720. fTACTIC_COM x1 ++
  1721. fNODE "repeat" 1
  1722. | CT_replace_with(x1, x2,x3,x4) ->
  1723. fFORMULA x1 ++
  1724. fFORMULA x2 ++
  1725. fCLAUSE x3 ++
  1726. fTACTIC_OPT x4 ++
  1727. fNODE "replace_with" 4
  1728. | CT_rewrite_lr(x1, x2, x3) ->
  1729. fFORMULA x1 ++
  1730. fSPEC_LIST x2 ++
  1731. fCLAUSE x3 ++
  1732. fNODE "rewrite_lr" 3
  1733. | CT_rewrite_rl(x1, x2, x3) ->
  1734. fFORMULA x1 ++
  1735. fSPEC_LIST x2 ++
  1736. fCLAUSE x3 ++
  1737. fNODE "rewrite_rl" 3
  1738. | CT_right(x1) ->
  1739. fSPEC_LIST x1 ++
  1740. fNODE "right" 1
  1741. | CT_ring(x1) ->
  1742. fFORMULA_LIST x1 ++
  1743. fNODE "ring" 1
  1744. | CT_simple_user_tac(x1, x2) ->
  1745. fID x1 ++
  1746. fTACTIC_ARG_LIST x2 ++
  1747. fNODE "simple_user_tac" 2
  1748. | CT_simplify_eq(x1) ->
  1749. fID_OR_INT_OPT x1 ++
  1750. fNODE "simplify_eq" 1
  1751. | CT_specialize(x1, x2, x3) ->
  1752. fINT_OPT x1 ++
  1753. fFORMULA x2 ++
  1754. fSPEC_LIST x3 ++
  1755. fNODE "specialize" 3
  1756. | CT_split(x1) ->
  1757. fSPEC_LIST x1 ++
  1758. fNODE "split" 1
  1759. | CT_subst(x1) ->
  1760. fID_LIST x1 ++
  1761. fNODE "subst" 1
  1762. | CT_superauto(x1, x2, x3, x4) ->
  1763. fINT_OPT x1 ++
  1764. fID_LIST x2 ++
  1765. fDESTRUCTING x3 ++
  1766. fUSINGTDB x4 ++
  1767. fNODE "superauto" 4
  1768. | CT_symmetry(x1) ->
  1769. fCLAUSE x1 ++
  1770. fNODE "symmetry" 1
  1771. | CT_tac_double(x1, x2) ->
  1772. fID_OR_INT x1 ++
  1773. fID_OR_INT x2 ++
  1774. fNODE "tac_double" 2
  1775. | CT_tacsolve(x,l) ->
  1776. fTACTIC_COM x ++
  1777. (List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
  1778. fNODE "tacsolve" (1 + (List.length l))
  1779. | CT_tactic_fun(x1, x2) ->
  1780. fID_OPT_NE_LIST x1 ++
  1781. fTACTIC_COM x2 ++
  1782. fNODE "tactic_fun" 2
  1783. | CT_then(x,l) ->
  1784. fTACTIC_COM x ++
  1785. (List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
  1786. fNODE "then" (1 + (List.length l))
  1787. | CT_transitivity(x1) ->
  1788. fFORMULA x1 ++
  1789. fNODE "transitivity" 1
  1790. | CT_trivial -> fNODE "trivial" 0
  1791. | CT_trivial_with(x1) ->
  1792. fID_NE_LIST_OR_STAR x1 ++
  1793. fNODE "trivial_with" 1
  1794. | CT_truecut(x1, x2) ->
  1795. fID_OPT x1 ++
  1796. fFORMULA x2 ++
  1797. fNODE "truecut" 2
  1798. | CT_try(x1) ->
  1799. fTACTIC_COM x1 ++
  1800. fNODE "try" 1
  1801. | CT_use(x1) ->
  1802. fFORMULA x1 ++
  1803. fNODE "use" 1
  1804. | CT_use_inversion(x1, x2, x3) ->
  1805. fID_OR_INT x1 ++
  1806. fFORMULA x2 ++
  1807. fID_LIST x3 ++
  1808. fNODE "use_inversion" 3
  1809. | CT_user_tac(x1, x2) ->
  1810. fID x1 ++
  1811. fTARG_LIST x2 ++
  1812. fNODE "user_tac" 2
  1813. and fTACTIC_OPT = function
  1814. | CT_coerce_NONE_to_TACTIC_OPT x -> fNONE x
  1815. | CT_coerce_TACTIC_COM_to_TACTIC_OPT x -> fTACTIC_COM x
  1816. and fTAC_DEF = function
  1817. | CT_tac_def(x1, x2) ->
  1818. fID x1 ++
  1819. fTACTIC_COM x2 ++
  1820. fNODE "tac_def" 2
  1821. and fTAC_DEF_NE_LIST = function
  1822. | CT_tac_def_ne_list(x,l) ->
  1823. fTAC_DEF x ++
  1824. (List.fold_left (++) (mt()) (List.map fTAC_DEF l)) ++
  1825. fNODE "tac_def_ne_list" (1 + (List.length l))
  1826. and fTARG = function
  1827. | CT_coerce_BINDING_to_TARG x -> fBINDING x
  1828. | CT_coerce_COFIXTAC_to_TARG x -> fCOFIXTAC x
  1829. | CT_coerce_FIXTAC_to_TARG x -> fFIXTAC x
  1830. | CT_coerce_FORMULA_OR_INT_to_TARG x -> fFORMULA_OR_INT x
  1831. | CT_coerce_PATTERN_to_TARG x -> fPATTERN x
  1832. | CT_coerce_SCOMMENT_CONTENT_to_TARG x -> fSCOMMENT_CONTENT x
  1833. | CT_coerce_SIGNED_INT_LIST_to_TARG x -> fSIGNED_INT_LIST x
  1834. | CT_coerce_SINGLE_OPTION_VALUE_to_TARG x -> fSINGLE_OPTION_VALUE x
  1835. | CT_coerce_SPEC_LIST_to_TARG x -> fSPEC_LIST x
  1836. | CT_coerce_TACTIC_COM_to_TARG x -> fTACTIC_COM x
  1837. | CT_coerce_TARG_LIST_to_TARG x -> fTARG_LIST x
  1838. | CT_coerce_UNFOLD_to_TARG x -> fUNFOLD x
  1839. | CT_coerce_UNFOLD_NE_LIST_to_TARG x -> fUNFOLD_NE_LIST x
  1840. and fTARG_LIST = function
  1841. | CT_targ_list l ->
  1842. (List.fold_left (++) (mt()) (List.map fTARG l)) ++
  1843. fNODE "targ_list" (List.length l)
  1844. and fTERM_CHANGE = function

Large files files are truncated, but you can click here to view the full file