4
(* LEM: This is actually generated automatically *)
8
(str ("vernac$" ^ s)) ++
15
(str ("vernac$" ^ s1)) ++
18
let f_atom_string = str;;
19
let f_atom_int = int;;
20
let rec fAST = function
21
| CT_coerce_ID_OR_INT_to_AST x -> fID_OR_INT x
22
| CT_coerce_ID_OR_STRING_to_AST x -> fID_OR_STRING x
23
| CT_coerce_SINGLE_OPTION_VALUE_to_AST x -> fSINGLE_OPTION_VALUE x
24
| CT_astnode(x1, x2) ->
31
| CT_astslam(x1, x2) ->
35
and fAST_LIST = function
37
(List.fold_left (++) (mt()) (List.map fAST l)) ++
38
fNODE "ast_list" (List.length l)
39
and fBINARY = function
40
| CT_binary x -> fATOM "binary" ++
43
and fBINDER = function
44
| CT_coerce_DEF_to_BINDER x -> fDEF x
45
| CT_binder(x1, x2) ->
49
| CT_binder_coercion(x1, x2) ->
52
fNODE "binder_coercion" 2
53
and fBINDER_LIST = function
55
(List.fold_left (++) (mt()) (List.map fBINDER l)) ++
56
fNODE "binder_list" (List.length l)
57
and fBINDER_NE_LIST = function
58
| CT_binder_ne_list(x,l) ->
60
(List.fold_left (++) (mt()) (List.map fBINDER l)) ++
61
fNODE "binder_ne_list" (1 + (List.length l))
62
and fBINDING = function
63
| CT_binding(x1, x2) ->
67
and fBINDING_LIST = function
68
| CT_binding_list l ->
69
(List.fold_left (++) (mt()) (List.map fBINDING l)) ++
70
fNODE "binding_list" (List.length l)
72
| CT_false -> fNODE "false" 0
73
| CT_true -> fNODE "true" 0
75
| CT_case x -> fATOM "case" ++
78
and fCLAUSE = function
79
| CT_clause(x1, x2) ->
80
fHYP_LOCATION_LIST_OR_STAR x1 ++
83
and fCOERCION_OPT = function
84
| CT_coerce_NONE_to_COERCION_OPT x -> fNONE x
85
| CT_coercion_atm -> fNODE "coercion_atm" 0
86
and fCOFIXTAC = function
87
| CT_cofixtac(x1, x2) ->
91
and fCOFIX_REC = function
92
| CT_cofix_rec(x1, x2, x3, x4) ->
98
and fCOFIX_REC_LIST = function
99
| CT_cofix_rec_list(x,l) ->
101
(List.fold_left (++) (mt()) (List.map fCOFIX_REC l)) ++
102
fNODE "cofix_rec_list" (1 + (List.length l))
103
and fCOFIX_TAC_LIST = function
104
| CT_cofix_tac_list l ->
105
(List.fold_left (++) (mt()) (List.map fCOFIXTAC l)) ++
106
fNODE "cofix_tac_list" (List.length l)
107
and fCOMMAND = function
108
| CT_coerce_COMMAND_LIST_to_COMMAND x -> fCOMMAND_LIST x
109
| CT_coerce_EVAL_CMD_to_COMMAND x -> fEVAL_CMD x
110
| CT_coerce_SECTION_BEGIN_to_COMMAND x -> fSECTION_BEGIN x
111
| CT_coerce_THEOREM_GOAL_to_COMMAND x -> fTHEOREM_GOAL x
115
| CT_abstraction(x1, x2, x3) ->
119
fNODE "abstraction" 3
120
| CT_add_field(x1, x2, x3, x4) ->
126
| CT_add_natural_feature(x1, x2) ->
127
fNATURAL_FEATURE x1 ++
129
fNODE "add_natural_feature" 2
130
| CT_addpath(x1, x2) ->
134
| CT_arguments_scope(x1, x2) ->
137
fNODE "arguments_scope" 2
138
| CT_bind_scope(x1, x2) ->
151
| CT_close_scope(x1) ->
153
fNODE "close_scope" 1
154
| CT_coercion(x1, x2, x3, x4, x5) ->
161
| CT_cofix_decl(x1) ->
162
fCOFIX_REC_LIST x1 ++
164
| CT_compile_module(x1, x2, x3) ->
168
fNODE "compile_module" 3
169
| CT_declare_module(x1, x2, x3, x4) ->
171
fMODULE_BINDER_LIST x2 ++
172
fMODULE_TYPE_CHECK x3 ++
174
fNODE "declare_module" 4
175
| CT_define_notation(x1, x2, x3, x4) ->
180
fNODE "define_notation" 4
181
| CT_definition(x1, x2, x3, x4, x5) ->
188
| CT_delim_scope(x1, x2) ->
191
fNODE "delim_scope" 2
195
| CT_derive_depinversion(x1, x2, x3, x4) ->
200
fNODE "derive_depinversion" 4
201
| CT_derive_inversion(x1, x2, x3, x4) ->
206
fNODE "derive_inversion" 4
207
| CT_derive_inversion_with(x1, x2, x3, x4) ->
212
fNODE "derive_inversion_with" 4
213
| CT_explain_proof(x1) ->
215
fNODE "explain_proof" 1
216
| CT_explain_prooftree(x1) ->
218
fNODE "explain_prooftree" 1
219
| CT_export_id(x1) ->
222
| CT_extract_to_file(x1, x2) ->
225
fNODE "extract_to_file" 2
226
| CT_extraction(x1) ->
238
| CT_guarded -> fNODE "guarded" 0
239
| CT_hint_destruct(x1, x2, x3, x4, x5, x6) ->
242
fDESTRUCT_LOCATION x3 ++
246
fNODE "hint_destruct" 6
247
| CT_hint_extern(x1, x2, x3, x4) ->
252
fNODE "hint_extern" 4
253
| CT_hintrewrite(x1, x2, x3, x4) ->
255
fFORMULA_NE_LIST x2 ++
258
fNODE "hintrewrite" 4
259
| CT_hints(x1, x2, x3) ->
264
| CT_hints_immediate(x1, x2) ->
265
fFORMULA_NE_LIST x1 ++
267
fNODE "hints_immediate" 2
268
| CT_hints_resolve(x1, x2) ->
269
fFORMULA_NE_LIST x1 ++
271
fNODE "hints_resolve" 2
272
| CT_hyp_search_pattern(x1, x2) ->
274
fIN_OR_OUT_MODULES x2 ++
275
fNODE "hyp_search_pattern" 2
276
| CT_implicits(x1, x2) ->
280
| CT_import_id(x1) ->
283
| CT_ind_scheme(x1) ->
284
fSCHEME_SPEC_LIST x1 ++
286
| CT_infix(x1, x2, x3, x4) ->
298
| CT_kill_node(x1) ->
305
| CT_local_close_scope(x1) ->
307
fNODE "local_close_scope" 1
308
| CT_local_define_notation(x1, x2, x3, x4) ->
313
fNODE "local_define_notation" 4
314
| CT_local_hint_destruct(x1, x2, x3, x4, x5, x6) ->
317
fDESTRUCT_LOCATION x3 ++
321
fNODE "local_hint_destruct" 6
322
| CT_local_hint_extern(x1, x2, x3, x4) ->
327
fNODE "local_hint_extern" 4
328
| CT_local_hints(x1, x2, x3) ->
332
fNODE "local_hints" 3
333
| CT_local_hints_immediate(x1, x2) ->
334
fFORMULA_NE_LIST x1 ++
336
fNODE "local_hints_immediate" 2
337
| CT_local_hints_resolve(x1, x2) ->
338
fFORMULA_NE_LIST x1 ++
340
fNODE "local_hints_resolve" 2
341
| CT_local_infix(x1, x2, x3, x4) ->
346
fNODE "local_infix" 4
347
| CT_local_open_scope(x1) ->
349
fNODE "local_open_scope" 1
350
| CT_local_reserve_notation(x1, x2) ->
353
fNODE "local_reserve_notation" 2
357
| CT_locate_file(x1) ->
359
fNODE "locate_file" 1
360
| CT_locate_lib(x1) ->
363
| CT_locate_notation(x1) ->
365
fNODE "locate_notation" 1
366
| CT_mind_decl(x1, x2) ->
370
| CT_ml_add_path(x1) ->
372
fNODE "ml_add_path" 1
373
| CT_ml_declare_modules(x1) ->
374
fSTRING_NE_LIST x1 ++
375
fNODE "ml_declare_modules" 1
376
| CT_ml_print_modules -> fNODE "ml_print_modules" 0
377
| CT_ml_print_path -> fNODE "ml_print_path" 0
378
| CT_module(x1, x2, x3, x4) ->
380
fMODULE_BINDER_LIST x2 ++
381
fMODULE_TYPE_CHECK x3 ++
384
| CT_module_type_decl(x1, x2, x3) ->
386
fMODULE_BINDER_LIST x2 ++
387
fMODULE_TYPE_OPT x3 ++
388
fNODE "module_type_decl" 3
389
| CT_no_inline(x1) ->
392
| CT_omega_flag(x1, x2) ->
396
| CT_open_scope(x1) ->
399
| CT_print -> fNODE "print" 0
400
| CT_print_about(x1) ->
402
fNODE "print_about" 1
403
| CT_print_all -> fNODE "print_all" 0
404
| CT_print_classes -> fNODE "print_classes" 0
405
| CT_print_ltac id ->
408
| CT_print_coercions -> fNODE "print_coercions" 0
409
| CT_print_grammar(x1) ->
411
fNODE "print_grammar" 1
412
| CT_print_graph -> fNODE "print_graph" 0
413
| CT_print_hint(x1) ->
416
| CT_print_hintdb(x1) ->
418
fNODE "print_hintdb" 1
419
| CT_print_rewrite_hintdb(x1) ->
421
fNODE "print_rewrite_hintdb" 1
425
| CT_print_implicit(x1) ->
427
fNODE "print_implicit" 1
428
| CT_print_loadpath -> fNODE "print_loadpath" 0
429
| CT_print_module(x1) ->
431
fNODE "print_module" 1
432
| CT_print_module_type(x1) ->
434
fNODE "print_module_type" 1
435
| CT_print_modules -> fNODE "print_modules" 0
436
| CT_print_natural(x1) ->
438
fNODE "print_natural" 1
439
| CT_print_natural_feature(x1) ->
440
fNATURAL_FEATURE x1 ++
441
fNODE "print_natural_feature" 1
442
| CT_print_opaqueid(x1) ->
444
fNODE "print_opaqueid" 1
445
| CT_print_path(x1, x2) ->
449
| CT_print_proof(x1) ->
451
fNODE "print_proof" 1
452
| CT_print_scope(x1) ->
454
fNODE "print_scope" 1
455
| CT_print_setoids -> fNODE "print_setoids" 0
456
| CT_print_scopes -> fNODE "print_scopes" 0
457
| CT_print_section(x1) ->
459
fNODE "print_section" 1
460
| CT_print_states -> fNODE "print_states" 0
461
| CT_print_tables -> fNODE "print_tables" 0
462
| CT_print_universes(x1) ->
464
fNODE "print_universes" 1
465
| CT_print_visibility(x1) ->
467
fNODE "print_visibility" 1
471
| CT_proof_no_op -> fNODE "proof_no_op" 0
472
| CT_proof_with(x1) ->
475
| CT_pwd -> fNODE "pwd" 0
476
| CT_quit -> fNODE "quit" 0
477
| CT_read_module(x1) ->
479
fNODE "read_module" 1
480
| CT_rec_ml_add_path(x1) ->
482
fNODE "rec_ml_add_path" 1
483
| CT_recaddpath(x1, x2) ->
487
| CT_record(x1, x2, x3, x4, x5, x6) ->
493
fRECCONSTR_LIST x6 ++
495
| CT_remove_natural_feature(x1, x2) ->
496
fNATURAL_FEATURE x1 ++
498
fNODE "remove_natural_feature" 2
499
| CT_require(x1, x2, x3) ->
502
fID_NE_LIST_OR_STRING x3 ++
504
| CT_reserve(x1, x2) ->
508
| CT_reserve_notation(x1, x2) ->
511
fNODE "reserve_notation" 2
515
| CT_reset_section(x1) ->
517
fNODE "reset_section" 1
518
| CT_restart -> fNODE "restart" 0
519
| CT_restore_state(x1) ->
521
fNODE "restore_state" 1
529
| CT_scomments(x1) ->
530
fSCOMMENT_CONTENT_LIST x1 ++
532
| CT_search(x1, x2) ->
534
fIN_OR_OUT_MODULES x2 ++
536
| CT_search_about(x1, x2) ->
537
fID_OR_STRING_NE_LIST x1 ++
538
fIN_OR_OUT_MODULES x2 ++
539
fNODE "search_about" 2
540
| CT_search_pattern(x1, x2) ->
542
fIN_OR_OUT_MODULES x2 ++
543
fNODE "search_pattern" 2
544
| CT_search_rewrite(x1, x2) ->
546
fIN_OR_OUT_MODULES x2 ++
547
fNODE "search_rewrite" 2
548
| CT_section_end(x1) ->
550
fNODE "section_end" 1
551
| CT_section_struct(x1, x2, x3) ->
555
fNODE "section_struct" 3
556
| CT_set_natural(x1) ->
558
fNODE "set_natural" 1
559
| CT_set_natural_default -> fNODE "set_natural_default" 0
560
| CT_set_option(x1) ->
563
| CT_set_option_value(x1, x2) ->
565
fSINGLE_OPTION_VALUE x2 ++
566
fNODE "set_option_value" 2
567
| CT_set_option_value2(x1, x2) ->
569
fID_OR_STRING_NE_LIST x2 ++
570
fNODE "set_option_value2" 2
577
| CT_show_existentials -> fNODE "show_existentials" 0
578
| CT_show_goal(x1) ->
581
| CT_show_implicit(x1) ->
583
fNODE "show_implicit" 1
584
| CT_show_intro -> fNODE "show_intro" 0
585
| CT_show_intros -> fNODE "show_intros" 0
586
| CT_show_node -> fNODE "show_node" 0
587
| CT_show_proof -> fNODE "show_proof" 0
588
| CT_show_proofs -> fNODE "show_proofs" 0
589
| CT_show_script -> fNODE "show_script" 0
590
| CT_show_tree -> fNODE "show_tree" 0
591
| CT_solve(x1, x2, x3) ->
596
| CT_strategy(CT_level_list x1) ->
597
List.fold_left (++) (mt())
598
(List.map (fun(l,q) -> fLEVEL l ++ fID_LIST q ++ fNODE "pair"2) x1) ++
599
fNODE "strategy" (List.length x1)
600
| CT_suspend -> fNODE "suspend" 0
601
| CT_syntax_macro(x1, x2, x3) ->
605
fNODE "syntax_macro" 3
606
| CT_tactic_definition(x1) ->
607
fTAC_DEF_NE_LIST x1 ++
608
fNODE "tactic_definition" 1
609
| CT_test_natural_feature(x1, x2) ->
610
fNATURAL_FEATURE x1 ++
612
fNODE "test_natural_feature" 2
613
| CT_theorem_struct(x1, x2) ->
616
fNODE "theorem_struct" 2
623
| CT_unfocus -> fNODE "unfocus" 0
624
| CT_unset_option(x1) ->
626
fNODE "unset_option" 1
627
| CT_unsethyp -> fNODE "unsethyp" 0
628
| CT_unsetundo -> fNODE "unsetundo" 0
629
| CT_user_vernac(x1, x2) ->
632
fNODE "user_vernac" 2
633
| CT_variable(x1, x2) ->
635
fBINDER_NE_LIST x2 ++
637
| CT_write_module(x1, x2) ->
640
fNODE "write_module" 2
641
and fLEVEL = function
642
| CT_Opaque -> fNODE "opaque" 0
643
| CT_Level n -> fINT n ++ fNODE "level" 1
644
| CT_Expand -> fNODE "expand" 0
645
and fCOMMAND_LIST = function
646
| CT_command_list(x,l) ->
648
(List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
649
fNODE "command_list" (1 + (List.length l))
650
and fCOMMENT = function
651
| CT_comment x -> fATOM "comment" ++
654
and fCOMMENT_S = function
656
(List.fold_left (++) (mt()) (List.map fCOMMENT l)) ++
657
fNODE "comment_s" (List.length l)
658
and fCONSTR = function
659
| CT_constr(x1, x2) ->
663
| CT_constr_coercion(x1, x2) ->
666
fNODE "constr_coercion" 2
667
and fCONSTR_LIST = function
668
| CT_constr_list l ->
669
(List.fold_left (++) (mt()) (List.map fCONSTR l)) ++
670
fNODE "constr_list" (List.length l)
671
and fCONTEXT_HYP_LIST = function
672
| CT_context_hyp_list l ->
673
(List.fold_left (++) (mt()) (List.map fPREMISE_PATTERN l)) ++
674
fNODE "context_hyp_list" (List.length l)
675
and fCONTEXT_PATTERN = function
676
| CT_coerce_FORMULA_to_CONTEXT_PATTERN x -> fFORMULA x
677
| CT_context(x1, x2) ->
681
and fCONTEXT_RULE = function
682
| CT_context_rule(x1, x2, x3) ->
683
fCONTEXT_HYP_LIST x1 ++
684
fCONTEXT_PATTERN x2 ++
686
fNODE "context_rule" 3
687
| CT_def_context_rule(x1) ->
689
fNODE "def_context_rule" 1
690
and fCONVERSION_FLAG = function
691
| CT_beta -> fNODE "beta" 0
692
| CT_delta -> fNODE "delta" 0
693
| CT_evar -> fNODE "evar" 0
694
| CT_iota -> fNODE "iota" 0
695
| CT_zeta -> fNODE "zeta" 0
696
and fCONVERSION_FLAG_LIST = function
697
| CT_conversion_flag_list l ->
698
(List.fold_left (++) (mt()) (List.map fCONVERSION_FLAG l)) ++
699
fNODE "conversion_flag_list" (List.length l)
700
and fCONV_SET = function
702
(List.fold_left (++) (mt()) (List.map fID l)) ++
703
fNODE "unf" (List.length l)
705
(List.fold_left (++) (mt()) (List.map fID l)) ++
706
fNODE "unfbut" (List.length l)
707
and fCO_IND = function
708
| CT_co_ind x -> fATOM "co_ind" ++
711
and fDECL_NOTATION_OPT = function
712
| CT_coerce_NONE_to_DECL_NOTATION_OPT x -> fNONE x
713
| CT_decl_notation(x1, x2, x3) ->
717
fNODE "decl_notation" 3
724
| CT_defn x -> fATOM "defn" ++
727
and fDEFN_OR_THM = function
728
| CT_coerce_DEFN_to_DEFN_OR_THM x -> fDEFN x
729
| CT_coerce_THM_to_DEFN_OR_THM x -> fTHM x
730
and fDEF_BODY = function
731
| CT_coerce_CONTEXT_PATTERN_to_DEF_BODY x -> fCONTEXT_PATTERN x
732
| CT_coerce_EVAL_CMD_to_DEF_BODY x -> fEVAL_CMD x
736
and fDEF_BODY_OPT = function
737
| CT_coerce_DEF_BODY_to_DEF_BODY_OPT x -> fDEF_BODY x
738
| CT_coerce_FORMULA_OPT_to_DEF_BODY_OPT x -> fFORMULA_OPT x
740
| CT_dep x -> fATOM "dep" ++
743
and fDESTRUCTING = function
744
| CT_coerce_NONE_to_DESTRUCTING x -> fNONE x
745
| CT_destructing -> fNODE "destructing" 0
746
and fDESTRUCT_LOCATION = function
747
| CT_conclusion_location -> fNODE "conclusion_location" 0
748
| CT_discardable_hypothesis -> fNODE "discardable_hypothesis" 0
749
| CT_hypothesis_location -> fNODE "hypothesis_location" 0
750
and fDOTDOT_OPT = function
751
| CT_coerce_NONE_to_DOTDOT_OPT x -> fNONE x
752
| CT_dotdot -> fNODE "dotdot" 0
755
fMATCH_PATTERN_NE_LIST x1 ++
758
and fEQN_LIST = function
760
(List.fold_left (++) (mt()) (List.map fEQN l)) ++
761
fNODE "eqn_list" (List.length l)
762
and fEVAL_CMD = function
763
| CT_eval(x1, x2, x3) ->
768
and fFIXTAC = function
769
| CT_fixtac(x1, x2, x3) ->
774
and fFIX_BINDER = function
775
| CT_coerce_FIX_REC_to_FIX_BINDER x -> fFIX_REC x
776
| CT_fix_binder(x1, x2, x3, x4) ->
782
and fFIX_BINDER_LIST = function
783
| CT_fix_binder_list(x,l) ->
785
(List.fold_left (++) (mt()) (List.map fFIX_BINDER l)) ++
786
fNODE "fix_binder_list" (1 + (List.length l))
787
and fFIX_REC = function
788
| CT_fix_rec(x1, x2, x3, x4, x5) ->
790
fBINDER_NE_LIST x2 ++
795
and fFIX_REC_LIST = function
796
| CT_fix_rec_list(x,l) ->
798
(List.fold_left (++) (mt()) (List.map fFIX_REC l)) ++
799
fNODE "fix_rec_list" (1 + (List.length l))
800
and fFIX_TAC_LIST = function
801
| CT_fix_tac_list l ->
802
(List.fold_left (++) (mt()) (List.map fFIXTAC l)) ++
803
fNODE "fix_tac_list" (List.length l)
804
and fFORMULA = function
805
| CT_coerce_BINARY_to_FORMULA x -> fBINARY x
806
| CT_coerce_ID_to_FORMULA x -> fID x
807
| CT_coerce_NUM_to_FORMULA x -> fNUM x
808
| CT_coerce_SORT_TYPE_to_FORMULA x -> fSORT_TYPE x
809
| CT_coerce_TYPED_FORMULA_to_FORMULA x -> fTYPED_FORMULA x
812
fFORMULA_NE_LIST x2 ++
814
| CT_arrowc(x1, x2) ->
821
| CT_cases(x1, x2, x3) ->
822
fMATCHED_FORMULA_NE_LIST x1 ++
826
| CT_cofixc(x1, x2) ->
828
fCOFIX_REC_LIST x2 ++
830
| CT_elimc(x1, x2, x3, x4) ->
836
| CT_existvarc -> fNODE "existvarc" 0
839
fFIX_BINDER_LIST x2 ++
841
| CT_if(x1, x2, x3, x4) ->
847
| CT_inductive_let(x1, x2, x3, x4) ->
849
fID_OPT_NE_LIST x2 ++
852
fNODE "inductive_let" 4
853
| CT_labelled_arg(x1, x2) ->
856
fNODE "labelled_arg" 2
857
| CT_lambdac(x1, x2) ->
858
fBINDER_NE_LIST x1 ++
861
| CT_let_tuple(x1, x2, x3, x4) ->
862
fID_OPT_NE_LIST x1 ++
867
| CT_letin(x1, x2) ->
871
| CT_notation(x1, x2) ->
875
| CT_num_encapsulator(x1, x2) ->
878
fNODE "num_encapsulator" 2
879
| CT_prodc(x1, x2) ->
880
fBINDER_NE_LIST x1 ++
885
fFORMULA_NE_LIST x2 ++
887
and fFORMULA_LIST = function
888
| CT_formula_list l ->
889
(List.fold_left (++) (mt()) (List.map fFORMULA l)) ++
890
fNODE "formula_list" (List.length l)
891
and fFORMULA_NE_LIST = function
892
| CT_formula_ne_list(x,l) ->
894
(List.fold_left (++) (mt()) (List.map fFORMULA l)) ++
895
fNODE "formula_ne_list" (1 + (List.length l))
896
and fFORMULA_OPT = function
897
| CT_coerce_FORMULA_to_FORMULA_OPT x -> fFORMULA x
898
| CT_coerce_ID_OPT_to_FORMULA_OPT x -> fID_OPT x
899
and fFORMULA_OR_INT = function
900
| CT_coerce_FORMULA_to_FORMULA_OR_INT x -> fFORMULA x
901
| CT_coerce_ID_OR_INT_to_FORMULA_OR_INT x -> fID_OR_INT x
902
and fGRAMMAR = function
903
| CT_grammar_none -> fNODE "grammar_none" 0
904
and fHYP_LOCATION = function
905
| CT_coerce_UNFOLD_to_HYP_LOCATION x -> fUNFOLD x
906
| CT_intype(x1, x2) ->
910
| CT_invalue(x1, x2) ->
914
and fHYP_LOCATION_LIST_OR_STAR = function
915
| CT_coerce_STAR_to_HYP_LOCATION_LIST_OR_STAR x -> fSTAR x
916
| CT_hyp_location_list l ->
917
(List.fold_left (++) (mt()) (List.map fHYP_LOCATION l)) ++
918
fNODE "hyp_location_list" (List.length l)
920
| CT_ident x -> fATOM "ident" ++
926
| CT_metaid x -> fATOM "metaid" ++
929
and fIDENTITY_OPT = function
930
| CT_coerce_NONE_to_IDENTITY_OPT x -> fNONE x
931
| CT_identity -> fNODE "identity" 0
932
and fID_LIST = function
934
(List.fold_left (++) (mt()) (List.map fID l)) ++
935
fNODE "id_list" (List.length l)
936
and fID_LIST_LIST = function
937
| CT_id_list_list l ->
938
(List.fold_left (++) (mt()) (List.map fID_LIST l)) ++
939
fNODE "id_list_list" (List.length l)
940
and fID_LIST_OPT = function
941
| CT_coerce_ID_LIST_to_ID_LIST_OPT x -> fID_LIST x
942
| CT_coerce_NONE_to_ID_LIST_OPT x -> fNONE x
943
and fID_NE_LIST = function
944
| CT_id_ne_list(x,l) ->
946
(List.fold_left (++) (mt()) (List.map fID l)) ++
947
fNODE "id_ne_list" (1 + (List.length l))
948
and fID_NE_LIST_OR_STAR = function
949
| CT_coerce_ID_NE_LIST_to_ID_NE_LIST_OR_STAR x -> fID_NE_LIST x
950
| CT_coerce_STAR_to_ID_NE_LIST_OR_STAR x -> fSTAR x
951
and fID_NE_LIST_OR_STRING = function
952
| CT_coerce_ID_NE_LIST_to_ID_NE_LIST_OR_STRING x -> fID_NE_LIST x
953
| CT_coerce_STRING_to_ID_NE_LIST_OR_STRING x -> fSTRING x
954
and fID_OPT = function
955
| CT_coerce_ID_to_ID_OPT x -> fID x
956
| CT_coerce_NONE_to_ID_OPT x -> fNONE x
957
and fID_OPT_LIST = function
958
| CT_id_opt_list l ->
959
(List.fold_left (++) (mt()) (List.map fID_OPT l)) ++
960
fNODE "id_opt_list" (List.length l)
961
and fID_OPT_NE_LIST = function
962
| CT_id_opt_ne_list(x,l) ->
964
(List.fold_left (++) (mt()) (List.map fID_OPT l)) ++
965
fNODE "id_opt_ne_list" (1 + (List.length l))
966
and fID_OPT_OR_ALL = function
967
| CT_coerce_ID_OPT_to_ID_OPT_OR_ALL x -> fID_OPT x
968
| CT_all -> fNODE "all" 0
969
and fID_OR_INT = function
970
| CT_coerce_ID_to_ID_OR_INT x -> fID x
971
| CT_coerce_INT_to_ID_OR_INT x -> fINT x
972
and fID_OR_INT_OPT = function
973
| CT_coerce_ID_OPT_to_ID_OR_INT_OPT x -> fID_OPT x
974
| CT_coerce_ID_OR_INT_to_ID_OR_INT_OPT x -> fID_OR_INT x
975
| CT_coerce_INT_OPT_to_ID_OR_INT_OPT x -> fINT_OPT x
976
and fID_OR_STAR = function
977
| CT_coerce_ID_to_ID_OR_STAR x -> fID x
978
| CT_coerce_STAR_to_ID_OR_STAR x -> fSTAR x
979
and fID_OR_STRING = function
980
| CT_coerce_ID_to_ID_OR_STRING x -> fID x
981
| CT_coerce_STRING_to_ID_OR_STRING x -> fSTRING x
982
and fID_OR_STRING_NE_LIST = function
983
| CT_id_or_string_ne_list(x,l) ->
985
(List.fold_left (++) (mt()) (List.map fID_OR_STRING l)) ++
986
fNODE "id_or_string_ne_list" (1 + (List.length l))
987
and fIMPEXP = function
988
| CT_coerce_NONE_to_IMPEXP x -> fNONE x
989
| CT_export -> fNODE "export" 0
990
| CT_import -> fNODE "import" 0
991
and fIND_SPEC = function
992
| CT_ind_spec(x1, x2, x3, x4, x5) ->
997
fDECL_NOTATION_OPT x5 ++
999
and fIND_SPEC_LIST = function
1000
| CT_ind_spec_list l ->
1001
(List.fold_left (++) (mt()) (List.map fIND_SPEC l)) ++
1002
fNODE "ind_spec_list" (List.length l)
1004
| CT_int x -> fATOM "int" ++
1007
and fINTRO_PATT = function
1008
| CT_coerce_ID_to_INTRO_PATT x -> fID x
1009
| CT_disj_pattern(x,l) ->
1010
fINTRO_PATT_LIST x ++
1011
(List.fold_left (++) (mt()) (List.map fINTRO_PATT_LIST l)) ++
1012
fNODE "disj_pattern" (1 + (List.length l))
1013
and fINTRO_PATT_LIST = function
1014
| CT_intro_patt_list l ->
1015
(List.fold_left (++) (mt()) (List.map fINTRO_PATT l)) ++
1016
fNODE "intro_patt_list" (List.length l)
1017
and fINTRO_PATT_OPT = function
1018
| CT_coerce_ID_OPT_to_INTRO_PATT_OPT x -> fID_OPT x
1019
| CT_coerce_INTRO_PATT_to_INTRO_PATT_OPT x -> fINTRO_PATT x
1020
and fINT_LIST = function
1022
(List.fold_left (++) (mt()) (List.map fINT l)) ++
1023
fNODE "int_list" (List.length l)
1024
and fINT_NE_LIST = function
1025
| CT_int_ne_list(x,l) ->
1027
(List.fold_left (++) (mt()) (List.map fINT l)) ++
1028
fNODE "int_ne_list" (1 + (List.length l))
1029
and fINT_OPT = function
1030
| CT_coerce_INT_to_INT_OPT x -> fINT x
1031
| CT_coerce_NONE_to_INT_OPT x -> fNONE x
1032
and fINT_OR_LOCN = function
1033
| CT_coerce_INT_to_INT_OR_LOCN x -> fINT x
1034
| CT_coerce_LOCN_to_INT_OR_LOCN x -> fLOCN x
1035
and fINT_OR_NEXT = function
1036
| CT_coerce_INT_to_INT_OR_NEXT x -> fINT x
1037
| CT_next_level -> fNODE "next_level" 0
1038
and fINV_TYPE = function
1039
| CT_inv_clear -> fNODE "inv_clear" 0
1040
| CT_inv_regular -> fNODE "inv_regular" 0
1041
| CT_inv_simple -> fNODE "inv_simple" 0
1042
and fIN_OR_OUT_MODULES = function
1043
| CT_coerce_NONE_to_IN_OR_OUT_MODULES x -> fNONE x
1044
| CT_in_modules(x1) ->
1046
fNODE "in_modules" 1
1047
| CT_out_modules(x1) ->
1049
fNODE "out_modules" 1
1050
and fLET_CLAUSE = function
1051
| CT_let_clause(x1, x2, x3) ->
1055
fNODE "let_clause" 3
1056
and fLET_CLAUSES = function
1057
| CT_let_clauses(x,l) ->
1059
(List.fold_left (++) (mt()) (List.map fLET_CLAUSE l)) ++
1060
fNODE "let_clauses" (1 + (List.length l))
1061
and fLET_VALUE = function
1062
| CT_coerce_DEF_BODY_to_LET_VALUE x -> fDEF_BODY x
1063
| CT_coerce_TACTIC_COM_to_LET_VALUE x -> fTACTIC_COM x
1064
and fLOCAL_OPT = function
1065
| CT_coerce_NONE_to_LOCAL_OPT x -> fNONE x
1066
| CT_local -> fNODE "local" 0
1067
and fLOCN = function
1068
| CT_locn x -> fATOM "locn" ++
1069
(f_atom_string x) ++
1071
and fMATCHED_FORMULA = function
1072
| CT_coerce_FORMULA_to_MATCHED_FORMULA x -> fFORMULA x
1073
| CT_formula_as(x1, x2) ->
1076
fNODE "formula_as" 2
1077
| CT_formula_as_in(x1, x2, x3) ->
1081
fNODE "formula_as_in" 3
1082
| CT_formula_in(x1, x2) ->
1085
fNODE "formula_in" 2
1086
and fMATCHED_FORMULA_NE_LIST = function
1087
| CT_matched_formula_ne_list(x,l) ->
1088
fMATCHED_FORMULA x ++
1089
(List.fold_left (++) (mt()) (List.map fMATCHED_FORMULA l)) ++
1090
fNODE "matched_formula_ne_list" (1 + (List.length l))
1091
and fMATCH_PATTERN = function
1092
| CT_coerce_ID_OPT_to_MATCH_PATTERN x -> fID_OPT x
1093
| CT_coerce_NUM_to_MATCH_PATTERN x -> fNUM x
1094
| CT_pattern_app(x1, x2) ->
1095
fMATCH_PATTERN x1 ++
1096
fMATCH_PATTERN_NE_LIST x2 ++
1097
fNODE "pattern_app" 2
1098
| CT_pattern_as(x1, x2) ->
1099
fMATCH_PATTERN x1 ++
1101
fNODE "pattern_as" 2
1102
| CT_pattern_delimitors(x1, x2) ->
1104
fMATCH_PATTERN x2 ++
1105
fNODE "pattern_delimitors" 2
1106
| CT_pattern_notation(x1, x2) ->
1108
fMATCH_PATTERN_LIST x2 ++
1109
fNODE "pattern_notation" 2
1110
and fMATCH_PATTERN_LIST = function
1111
| CT_match_pattern_list l ->
1112
(List.fold_left (++) (mt()) (List.map fMATCH_PATTERN l)) ++
1113
fNODE "match_pattern_list" (List.length l)
1114
and fMATCH_PATTERN_NE_LIST = function
1115
| CT_match_pattern_ne_list(x,l) ->
1117
(List.fold_left (++) (mt()) (List.map fMATCH_PATTERN l)) ++
1118
fNODE "match_pattern_ne_list" (1 + (List.length l))
1119
and fMATCH_TAC_RULE = function
1120
| CT_match_tac_rule(x1, x2) ->
1121
fCONTEXT_PATTERN x1 ++
1123
fNODE "match_tac_rule" 2
1124
and fMATCH_TAC_RULES = function
1125
| CT_match_tac_rules(x,l) ->
1126
fMATCH_TAC_RULE x ++
1127
(List.fold_left (++) (mt()) (List.map fMATCH_TAC_RULE l)) ++
1128
fNODE "match_tac_rules" (1 + (List.length l))
1129
and fMODIFIER = function
1130
| CT_entry_type(x1, x2) ->
1133
fNODE "entry_type" 2
1137
| CT_lefta -> fNODE "lefta" 0
1138
| CT_nona -> fNODE "nona" 0
1139
| CT_only_parsing -> fNODE "only_parsing" 0
1140
| CT_righta -> fNODE "righta" 0
1141
| CT_set_item_level(x1, x2) ->
1144
fNODE "set_item_level" 2
1145
| CT_set_level(x1) ->
1148
and fMODIFIER_LIST = function
1149
| CT_modifier_list l ->
1150
(List.fold_left (++) (mt()) (List.map fMODIFIER l)) ++
1151
fNODE "modifier_list" (List.length l)
1152
and fMODULE_BINDER = function
1153
| CT_module_binder(x1, x2) ->
1156
fNODE "module_binder" 2
1157
and fMODULE_BINDER_LIST = function
1158
| CT_module_binder_list l ->
1159
(List.fold_left (++) (mt()) (List.map fMODULE_BINDER l)) ++
1160
fNODE "module_binder_list" (List.length l)
1161
and fMODULE_EXPR = function
1162
| CT_coerce_ID_OPT_to_MODULE_EXPR x -> fID_OPT x
1163
| CT_module_app(x1, x2) ->
1166
fNODE "module_app" 2
1167
and fMODULE_TYPE = function
1168
| CT_coerce_ID_to_MODULE_TYPE x -> fID x
1169
| CT_module_type_with_def(x1, x2, x3) ->
1173
fNODE "module_type_with_def" 3
1174
| CT_module_type_with_mod(x1, x2, x3) ->
1178
fNODE "module_type_with_mod" 3
1179
and fMODULE_TYPE_CHECK = function
1180
| CT_coerce_MODULE_TYPE_OPT_to_MODULE_TYPE_CHECK x -> fMODULE_TYPE_OPT x
1181
| CT_only_check(x1) ->
1183
fNODE "only_check" 1
1184
and fMODULE_TYPE_OPT = function
1185
| CT_coerce_ID_OPT_to_MODULE_TYPE_OPT x -> fID_OPT x
1186
| CT_coerce_MODULE_TYPE_to_MODULE_TYPE_OPT x -> fMODULE_TYPE x
1187
and fNATURAL_FEATURE = function
1188
| CT_contractible -> fNODE "contractible" 0
1189
| CT_implicit -> fNODE "implicit" 0
1190
| CT_nat_transparent -> fNODE "nat_transparent" 0
1191
and fNONE = function
1192
| CT_none -> fNODE "none" 0
1194
| CT_int_encapsulator x -> fATOM "int_encapsulator" ++
1195
(f_atom_string x) ++
1197
and fNUM_TYPE = function
1198
| CT_num_type x -> fATOM "num_type" ++
1199
(f_atom_string x) ++
1201
and fOMEGA_FEATURE = function
1202
| CT_coerce_STRING_to_OMEGA_FEATURE x -> fSTRING x
1203
| CT_flag_action -> fNODE "flag_action" 0
1204
| CT_flag_system -> fNODE "flag_system" 0
1205
| CT_flag_time -> fNODE "flag_time" 0
1206
and fOMEGA_MODE = function
1207
| CT_set -> fNODE "set" 0
1208
| CT_switch -> fNODE "switch" 0
1209
| CT_unset -> fNODE "unset" 0
1210
and fORIENTATION = function
1211
| CT_lr -> fNODE "lr" 0
1212
| CT_rl -> fNODE "rl" 0
1213
and fPATTERN = function
1214
| CT_pattern_occ(x1, x2) ->
1217
fNODE "pattern_occ" 2
1218
and fPATTERN_NE_LIST = function
1219
| CT_pattern_ne_list(x,l) ->
1221
(List.fold_left (++) (mt()) (List.map fPATTERN l)) ++
1222
fNODE "pattern_ne_list" (1 + (List.length l))
1223
and fPATTERN_OPT = function
1224
| CT_coerce_NONE_to_PATTERN_OPT x -> fNONE x
1225
| CT_coerce_PATTERN_to_PATTERN_OPT x -> fPATTERN x
1226
and fPREMISE = function
1227
| CT_coerce_TYPED_FORMULA_to_PREMISE x -> fTYPED_FORMULA x
1228
| CT_eval_result(x1, x2, x3) ->
1232
fNODE "eval_result" 3
1233
| CT_premise(x1, x2) ->
1237
and fPREMISES_LIST = function
1238
| CT_premises_list l ->
1239
(List.fold_left (++) (mt()) (List.map fPREMISE l)) ++
1240
fNODE "premises_list" (List.length l)
1241
and fPREMISE_PATTERN = function
1242
| CT_premise_pattern(x1, x2) ->
1244
fCONTEXT_PATTERN x2 ++
1245
fNODE "premise_pattern" 2
1246
and fPROOF_SCRIPT = function
1247
| CT_proof_script l ->
1248
(List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
1249
fNODE "proof_script" (List.length l)
1250
and fRECCONSTR = function
1251
| CT_defrecconstr(x1, x2, x3) ->
1255
fNODE "defrecconstr" 3
1256
| CT_defrecconstr_coercion(x1, x2, x3) ->
1260
fNODE "defrecconstr_coercion" 3
1261
| CT_recconstr(x1, x2) ->
1265
| CT_recconstr_coercion(x1, x2) ->
1268
fNODE "recconstr_coercion" 2
1269
and fRECCONSTR_LIST = function
1270
| CT_recconstr_list l ->
1271
(List.fold_left (++) (mt()) (List.map fRECCONSTR l)) ++
1272
fNODE "recconstr_list" (List.length l)
1273
and fREC_TACTIC_FUN = function
1274
| CT_rec_tactic_fun(x1, x2, x3) ->
1276
fID_OPT_NE_LIST x2 ++
1278
fNODE "rec_tactic_fun" 3
1279
and fREC_TACTIC_FUN_LIST = function
1280
| CT_rec_tactic_fun_list(x,l) ->
1281
fREC_TACTIC_FUN x ++
1282
(List.fold_left (++) (mt()) (List.map fREC_TACTIC_FUN l)) ++
1283
fNODE "rec_tactic_fun_list" (1 + (List.length l))
1284
and fRED_COM = function
1286
fCONVERSION_FLAG_LIST x1 ++
1292
| CT_hnf -> fNODE "hnf" 0
1293
| CT_lazy(x1, x2) ->
1294
fCONVERSION_FLAG_LIST x1 ++
1298
fPATTERN_NE_LIST x1 ++
1300
| CT_red -> fNODE "red" 0
1301
| CT_cbvvm -> fNODE "vm_compute" 0
1306
fUNFOLD_NE_LIST x1 ++
1308
and fRETURN_INFO = function
1309
| CT_coerce_NONE_to_RETURN_INFO x -> fNONE x
1310
| CT_as_and_return(x1, x2) ->
1313
fNODE "as_and_return" 2
1317
and fRULE = function
1318
| CT_rule(x1, x2) ->
1319
fPREMISES_LIST x1 ++
1322
and fRULE_LIST = function
1324
(List.fold_left (++) (mt()) (List.map fRULE l)) ++
1325
fNODE "rule_list" (List.length l)
1326
and fSCHEME_SPEC = function
1327
| CT_scheme_spec(x1, x2, x3, x4) ->
1332
fNODE "scheme_spec" 4
1333
and fSCHEME_SPEC_LIST = function
1334
| CT_scheme_spec_list(x,l) ->
1336
(List.fold_left (++) (mt()) (List.map fSCHEME_SPEC l)) ++
1337
fNODE "scheme_spec_list" (1 + (List.length l))
1338
and fSCOMMENT_CONTENT = function
1339
| CT_coerce_FORMULA_to_SCOMMENT_CONTENT x -> fFORMULA x
1340
| CT_coerce_ID_OR_STRING_to_SCOMMENT_CONTENT x -> fID_OR_STRING x
1341
and fSCOMMENT_CONTENT_LIST = function
1342
| CT_scomment_content_list l ->
1343
(List.fold_left (++) (mt()) (List.map fSCOMMENT_CONTENT l)) ++
1344
fNODE "scomment_content_list" (List.length l)
1345
and fSECTION_BEGIN = function
1349
and fSECTION_BODY = function
1350
| CT_section_body l ->
1351
(List.fold_left (++) (mt()) (List.map fCOMMAND l)) ++
1352
fNODE "section_body" (List.length l)
1353
and fSIGNED_INT = function
1354
| CT_coerce_INT_to_SIGNED_INT x -> fINT x
1358
and fSIGNED_INT_LIST = function
1359
| CT_signed_int_list l ->
1360
(List.fold_left (++) (mt()) (List.map fSIGNED_INT l)) ++
1361
fNODE "signed_int_list" (List.length l)
1362
and fSINGLE_OPTION_VALUE = function
1363
| CT_coerce_INT_to_SINGLE_OPTION_VALUE x -> fINT x
1364
| CT_coerce_STRING_to_SINGLE_OPTION_VALUE x -> fSTRING x
1365
and fSORT_TYPE = function
1366
| CT_sortc x -> fATOM "sortc" ++
1367
(f_atom_string x) ++
1369
and fSPEC_LIST = function
1370
| CT_coerce_BINDING_LIST_to_SPEC_LIST x -> fBINDING_LIST x
1371
| CT_coerce_FORMULA_LIST_to_SPEC_LIST x -> fFORMULA_LIST x
1372
and fSPEC_OPT = function
1373
| CT_coerce_NONE_to_SPEC_OPT x -> fNONE x
1374
| CT_spec -> fNODE "spec" 0
1375
and fSTAR = function
1376
| CT_star -> fNODE "star" 0
1377
and fSTAR_OPT = function
1378
| CT_coerce_NONE_to_STAR_OPT x -> fNONE x
1379
| CT_coerce_STAR_to_STAR_OPT x -> fSTAR x
1380
and fSTRING = function
1381
| CT_string x -> fATOM "string" ++
1382
(f_atom_string x) ++
1384
and fSTRING_NE_LIST = function
1385
| CT_string_ne_list(x,l) ->
1387
(List.fold_left (++) (mt()) (List.map fSTRING l)) ++
1388
fNODE "string_ne_list" (1 + (List.length l))
1389
and fSTRING_OPT = function
1390
| CT_coerce_NONE_to_STRING_OPT x -> fNONE x
1391
| CT_coerce_STRING_to_STRING_OPT x -> fSTRING x
1392
and fTABLE = function
1393
| CT_coerce_ID_to_TABLE x -> fID x
1394
| CT_table(x1, x2) ->
1398
and fTACTIC_ARG = function
1399
| CT_coerce_EVAL_CMD_to_TACTIC_ARG x -> fEVAL_CMD x
1400
| CT_coerce_FORMULA_OR_INT_to_TACTIC_ARG x -> fFORMULA_OR_INT x
1401
| CT_coerce_TACTIC_COM_to_TACTIC_ARG x -> fTACTIC_COM x
1402
| CT_coerce_TERM_CHANGE_to_TACTIC_ARG x -> fTERM_CHANGE x
1403
| CT_void -> fNODE "void" 0
1404
and fTACTIC_ARG_LIST = function
1405
| CT_tactic_arg_list(x,l) ->
1407
(List.fold_left (++) (mt()) (List.map fTACTIC_ARG l)) ++
1408
fNODE "tactic_arg_list" (1 + (List.length l))
1409
and fTACTIC_COM = function
1410
| CT_abstract(x1, x2) ->
1417
| CT_any_constructor(x1) ->
1419
fNODE "any_constructor" 1
1420
| CT_apply(x1, x2) ->
1424
| CT_assert(x1, x2) ->
1428
| CT_assumption -> fNODE "assumption" 0
1432
| CT_auto_with(x1, x2) ->
1434
fID_NE_LIST_OR_STAR x2 ++
1436
| CT_autorewrite(x1, x2) ->
1439
fNODE "autorewrite" 2
1443
| CT_case_type(x1) ->
1446
| CT_casetac(x1, x2) ->
1453
| CT_change(x1, x2) ->
1457
| CT_change_local(x1, x2, x3) ->
1461
fNODE "change_local" 3
1465
| CT_clear_body(x1) ->
1467
fNODE "clear_body" 1
1468
| CT_cofixtactic(x1, x2) ->
1470
fCOFIX_TAC_LIST x2 ++
1471
fNODE "cofixtactic" 2
1472
| CT_condrewrite_lr(x1, x2, x3, x4) ->
1477
fNODE "condrewrite_lr" 4
1478
| CT_condrewrite_rl(x1, x2, x3, x4) ->
1483
fNODE "condrewrite_rl" 4
1484
| CT_constructor(x1, x2) ->
1487
fNODE "constructor" 2
1488
| CT_contradiction -> fNODE "contradiction" 0
1489
| CT_contradiction_thm(x1, x2) ->
1492
fNODE "contradiction_thm" 2
1496
| CT_cutrewrite_lr(x1, x2) ->
1499
fNODE "cutrewrite_lr" 2
1500
| CT_cutrewrite_rl(x1, x2) ->
1503
fNODE "cutrewrite_rl" 2
1504
| CT_dauto(x1, x2) ->
1508
| CT_dconcl -> fNODE "dconcl" 0
1509
| CT_decompose_list(x1, x2) ->
1512
fNODE "decompose_list" 2
1513
| CT_decompose_record(x1) ->
1515
fNODE "decompose_record" 1
1516
| CT_decompose_sum(x1) ->
1518
fNODE "decompose_sum" 1
1519
| CT_depinversion(x1, x2, x3, x4) ->
1522
fINTRO_PATT_OPT x3 ++
1524
fNODE "depinversion" 4
1525
| CT_deprewrite_lr(x1) ->
1527
fNODE "deprewrite_lr" 1
1528
| CT_deprewrite_rl(x1) ->
1530
fNODE "deprewrite_rl" 1
1531
| CT_destruct(x1) ->
1537
| CT_discriminate_eq(x1) ->
1538
fID_OR_INT_OPT x1 ++
1539
fNODE "discriminate_eq" 1
1544
| CT_eapply(x1, x2) ->
1548
| CT_eauto(x1, x2) ->
1549
fID_OR_INT_OPT x1 ++
1550
fID_OR_INT_OPT x2 ++
1552
| CT_eauto_with(x1, x2, x3) ->
1553
fID_OR_INT_OPT x1 ++
1554
fID_OR_INT_OPT x2 ++
1555
fID_NE_LIST_OR_STAR x3 ++
1556
fNODE "eauto_with" 3
1557
| CT_elim(x1, x2, x3) ->
1562
| CT_elim_type(x1) ->
1568
| CT_exact_no_check(x1) ->
1570
fNODE "exact_no_check" 1
1571
| CT_vm_cast_no_check(x1) ->
1573
fNODE "vm_cast_no_check" 1
1577
| CT_fail(x1, x2) ->
1583
(List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
1584
fNODE "first" (1 + (List.length l))
1585
| CT_firstorder(x1) ->
1587
fNODE "firstorder" 1
1588
| CT_firstorder_using(x1, x2) ->
1591
fNODE "firstorder_using" 2
1592
| CT_firstorder_with(x1, x2) ->
1595
fNODE "firstorder_with" 2
1596
| CT_fixtactic(x1, x2, x3) ->
1601
| CT_formula_marker(x1) ->
1603
fNODE "formula_marker" 1
1607
| CT_generalize(x1) ->
1608
fFORMULA_NE_LIST x1 ++
1609
fNODE "generalize" 1
1610
| CT_generalize_dependent(x1) ->
1612
fNODE "generalize_dependent" 1
1616
| CT_induction(x1) ->
1622
| CT_injection_eq(x1) ->
1623
fID_OR_INT_OPT x1 ++
1624
fNODE "injection_eq" 1
1625
| CT_instantiate(x1, x2, x3) ->
1629
fNODE "instantiate" 3
1633
| CT_intro_after(x1, x2) ->
1636
fNODE "intro_after" 2
1638
fINTRO_PATT_LIST x1 ++
1640
| CT_intros_until(x1) ->
1642
fNODE "intros_until" 1
1643
| CT_inversion(x1, x2, x3, x4) ->
1646
fINTRO_PATT_OPT x3 ++
1652
| CT_let_ltac(x1, x2) ->
1656
| CT_lettac(x1, x2, x3) ->
1661
| CT_match_context(x,l) ->
1663
(List.fold_left (++) (mt()) (List.map fCONTEXT_RULE l)) ++
1664
fNODE "match_context" (1 + (List.length l))
1665
| CT_match_context_reverse(x,l) ->
1667
(List.fold_left (++) (mt()) (List.map fCONTEXT_RULE l)) ++
1668
fNODE "match_context_reverse" (1 + (List.length l))
1669
| CT_match_tac(x1, x2) ->
1671
fMATCH_TAC_RULES x2 ++
1673
| CT_move_after(x1, x2) ->
1676
fNODE "move_after" 2
1677
| CT_new_destruct(x1, x2, x3) ->
1678
(List.fold_left (++) (mt()) (List.map fFORMULA_OR_INT x1)) ++ (* Julien F. Est-ce correct? *)
1680
fINTRO_PATT_OPT x3 ++
1681
fNODE "new_destruct" 3
1682
| CT_new_induction(x1, x2, x3) ->
1683
(List.fold_left (++) (mt()) (List.map fFORMULA_OR_INT x1)) ++ (* Pierre C. Est-ce correct? *)
1685
fINTRO_PATT_OPT x3 ++
1686
fNODE "new_induction" 3
1687
| CT_omega -> fNODE "omega" 0
1688
| CT_orelse(x1, x2) ->
1692
| CT_parallel(x,l) ->
1694
(List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
1695
fNODE "parallel" (1 + (List.length l))
1696
| CT_pose(x1, x2) ->
1700
| CT_progress(x1) ->
1703
| CT_prolog(x1, x2) ->
1707
| CT_rec_tactic_in(x1, x2) ->
1708
fREC_TACTIC_FUN_LIST x1 ++
1710
fNODE "rec_tactic_in" 2
1711
| CT_reduce(x1, x2) ->
1718
| CT_reflexivity -> fNODE "reflexivity" 0
1719
| CT_rename(x1, x2) ->
1726
| CT_replace_with(x1, x2,x3,x4) ->
1731
fNODE "replace_with" 4
1732
| CT_rewrite_lr(x1, x2, x3) ->
1736
fNODE "rewrite_lr" 3
1737
| CT_rewrite_rl(x1, x2, x3) ->
1741
fNODE "rewrite_rl" 3
1748
| CT_simple_user_tac(x1, x2) ->
1750
fTACTIC_ARG_LIST x2 ++
1751
fNODE "simple_user_tac" 2
1752
| CT_simplify_eq(x1) ->
1753
fID_OR_INT_OPT x1 ++
1754
fNODE "simplify_eq" 1
1755
| CT_specialize(x1, x2, x3) ->
1759
fNODE "specialize" 3
1766
| CT_superauto(x1, x2, x3, x4) ->
1772
| CT_symmetry(x1) ->
1775
| CT_tac_double(x1, x2) ->
1778
fNODE "tac_double" 2
1779
| CT_tacsolve(x,l) ->
1781
(List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
1782
fNODE "tacsolve" (1 + (List.length l))
1783
| CT_tactic_fun(x1, x2) ->
1784
fID_OPT_NE_LIST x1 ++
1786
fNODE "tactic_fun" 2
1789
(List.fold_left (++) (mt()) (List.map fTACTIC_COM l)) ++
1790
fNODE "then" (1 + (List.length l))
1791
| CT_transitivity(x1) ->
1793
fNODE "transitivity" 1
1794
| CT_trivial -> fNODE "trivial" 0
1795
| CT_trivial_with(x1) ->
1796
fID_NE_LIST_OR_STAR x1 ++
1797
fNODE "trivial_with" 1
1798
| CT_truecut(x1, x2) ->
1808
| CT_use_inversion(x1, x2, x3) ->
1812
fNODE "use_inversion" 3
1813
| CT_user_tac(x1, x2) ->
1817
and fTACTIC_OPT = function
1818
| CT_coerce_NONE_to_TACTIC_OPT x -> fNONE x
1819
| CT_coerce_TACTIC_COM_to_TACTIC_OPT x -> fTACTIC_COM x
1820
and fTAC_DEF = function
1821
| CT_tac_def(x1, x2) ->
1825
and fTAC_DEF_NE_LIST = function
1826
| CT_tac_def_ne_list(x,l) ->
1828
(List.fold_left (++) (mt()) (List.map fTAC_DEF l)) ++
1829
fNODE "tac_def_ne_list" (1 + (List.length l))
1830
and fTARG = function
1831
| CT_coerce_BINDING_to_TARG x -> fBINDING x
1832
| CT_coerce_COFIXTAC_to_TARG x -> fCOFIXTAC x
1833
| CT_coerce_FIXTAC_to_TARG x -> fFIXTAC x
1834
| CT_coerce_FORMULA_OR_INT_to_TARG x -> fFORMULA_OR_INT x
1835
| CT_coerce_PATTERN_to_TARG x -> fPATTERN x
1836
| CT_coerce_SCOMMENT_CONTENT_to_TARG x -> fSCOMMENT_CONTENT x
1837
| CT_coerce_SIGNED_INT_LIST_to_TARG x -> fSIGNED_INT_LIST x
1838
| CT_coerce_SINGLE_OPTION_VALUE_to_TARG x -> fSINGLE_OPTION_VALUE x
1839
| CT_coerce_SPEC_LIST_to_TARG x -> fSPEC_LIST x
1840
| CT_coerce_TACTIC_COM_to_TARG x -> fTACTIC_COM x
1841
| CT_coerce_TARG_LIST_to_TARG x -> fTARG_LIST x
1842
| CT_coerce_UNFOLD_to_TARG x -> fUNFOLD x
1843
| CT_coerce_UNFOLD_NE_LIST_to_TARG x -> fUNFOLD_NE_LIST x
1844
and fTARG_LIST = function
1846
(List.fold_left (++) (mt()) (List.map fTARG l)) ++
1847
fNODE "targ_list" (List.length l)
1848
and fTERM_CHANGE = function
1849
| CT_check_term(x1) ->
1851
fNODE "check_term" 1
1852
| CT_inst_term(x1, x2) ->
1856
and fTEXT = function
1857
| CT_coerce_ID_to_TEXT x -> fID x
1858
| CT_text_formula(x1) ->
1860
fNODE "text_formula" 1
1862
(List.fold_left (++) (mt()) (List.map fTEXT l)) ++
1863
fNODE "text_h" (List.length l)
1865
(List.fold_left (++) (mt()) (List.map fTEXT l)) ++
1866
fNODE "text_hv" (List.length l)
1868
(List.fold_left (++) (mt()) (List.map fTEXT l)) ++
1869
fNODE "text_op" (List.length l)
1870
| CT_text_path(x1) ->
1871
fSIGNED_INT_LIST x1 ++
1874
(List.fold_left (++) (mt()) (List.map fTEXT l)) ++
1875
fNODE "text_v" (List.length l)
1876
and fTHEOREM_GOAL = function
1880
| CT_theorem_goal(x1, x2, x3, x4) ->
1885
fNODE "theorem_goal" 4
1887
| CT_thm x -> fATOM "thm" ++
1888
(f_atom_string x) ++
1890
and fTHM_OPT = function
1891
| CT_coerce_NONE_to_THM_OPT x -> fNONE x
1892
| CT_coerce_THM_to_THM_OPT x -> fTHM x
1893
and fTYPED_FORMULA = function
1894
| CT_typed_formula(x1, x2) ->
1897
fNODE "typed_formula" 2
1898
and fUNFOLD = function
1899
| CT_coerce_ID_to_UNFOLD x -> fID x
1900
| CT_unfold_occ(x1, x2) ->
1903
fNODE "unfold_occ" 2
1904
and fUNFOLD_NE_LIST = function
1905
| CT_unfold_ne_list(x,l) ->
1907
(List.fold_left (++) (mt()) (List.map fUNFOLD l)) ++
1908
fNODE "unfold_ne_list" (1 + (List.length l))
1909
and fUSING = function
1910
| CT_coerce_NONE_to_USING x -> fNONE x
1911
| CT_using(x1, x2) ->
1915
and fUSINGTDB = function
1916
| CT_coerce_NONE_to_USINGTDB x -> fNONE x
1917
| CT_usingtdb -> fNODE "usingtdb" 0
1919
| CT_var x -> fATOM "var" ++
1920
(f_atom_string x) ++
1922
and fVARG = function
1923
| CT_coerce_AST_to_VARG x -> fAST x
1924
| CT_coerce_AST_LIST_to_VARG x -> fAST_LIST x
1925
| CT_coerce_BINDER_to_VARG x -> fBINDER x
1926
| CT_coerce_BINDER_LIST_to_VARG x -> fBINDER_LIST x
1927
| CT_coerce_BINDER_NE_LIST_to_VARG x -> fBINDER_NE_LIST x
1928
| CT_coerce_FORMULA_LIST_to_VARG x -> fFORMULA_LIST x
1929
| CT_coerce_FORMULA_OPT_to_VARG x -> fFORMULA_OPT x
1930
| CT_coerce_FORMULA_OR_INT_to_VARG x -> fFORMULA_OR_INT x
1931
| CT_coerce_ID_OPT_OR_ALL_to_VARG x -> fID_OPT_OR_ALL x
1932
| CT_coerce_ID_OR_INT_OPT_to_VARG x -> fID_OR_INT_OPT x
1933
| CT_coerce_INT_LIST_to_VARG x -> fINT_LIST x
1934
| CT_coerce_SCOMMENT_CONTENT_to_VARG x -> fSCOMMENT_CONTENT x
1935
| CT_coerce_STRING_OPT_to_VARG x -> fSTRING_OPT x
1936
| CT_coerce_TACTIC_OPT_to_VARG x -> fTACTIC_OPT x
1937
| CT_coerce_VARG_LIST_to_VARG x -> fVARG_LIST x
1938
and fVARG_LIST = function
1940
(List.fold_left (++) (mt()) (List.map fVARG l)) ++
1941
fNODE "varg_list" (List.length l)
1942
and fVERBOSE_OPT = function
1943
| CT_coerce_NONE_to_VERBOSE_OPT x -> fNONE x
1944
| CT_verbose -> fNODE "verbose" 0