package coq-serapi
Serialization library and protocol for machine interaction with the Coq proof assistant
Install
Dune Dependency
Authors
Maintainers
Sources
coq-serapi-8.13.0.0.13.1.tbz
sha256=530991b3e029102367184b96d8bd8a347c7172265a5815176a533b1061f8c6cf
sha512=c6cc5afcad3546c3fbcd8512f20a5ebd748f17529805c1d296959092fde8f31b77f7c7a06254f68c30eb6c6ad520bfbf03388505186a600e75d65ae3acd02c77
doc/src/serlib_ltac/ser_tacarg.ml.html
Source file ser_tacarg.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495
(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2016 *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (************************************************************************) (************************************************************************) (* Coq serialization API/Plugin *) (* Copyright 2016-2018 MINES ParisTech *) (************************************************************************) (* Status: Very Experimental *) (************************************************************************) open Serlib open Ltac_plugin module CAst = Ser_cAst module Constrexpr = Ser_constrexpr module Tactypes = Ser_tactypes module Genintern = Ser_genintern module Ltac_plugin = struct module G_rewrite = G_rewrite module Rewrite = Ser_rewrite module Tacexpr = Ser_tacexpr end (* Needed for compat with -pack build method used in Coq's make *) open Ltac_plugin (* Tacarg *) module A1 = struct type h1 = Constrexpr.constr_expr Tactypes.intro_pattern_expr CAst.t [@@deriving sexp] type h2 = Genintern.glob_constr_and_expr Tactypes.intro_pattern_expr CAst.t [@@deriving sexp] type h3 = Ltac_plugin.Tacexpr.intro_pattern [@@deriving sexp] end let ser_wit_simple_intropattern = let open A1 in Ser_genarg. { raw_ser = sexp_of_h1 ; raw_des = h1_of_sexp ; glb_ser = sexp_of_h2 ; glb_des = h2_of_sexp ; top_ser = sexp_of_h3 ; top_des = h3_of_sexp } let ser_wit_destruction_arg = Ser_genarg.{ raw_ser = Ser_tactics.sexp_of_destruction_arg (Ser_tactypes.sexp_of_with_bindings Ser_constrexpr.sexp_of_constr_expr); glb_ser = Ser_tactics.sexp_of_destruction_arg (Ser_tactypes.sexp_of_with_bindings Ser_genintern.sexp_of_glob_constr_and_expr); top_ser = Ser_tactics.(sexp_of_destruction_arg Ser_tactypes.sexp_of_delayed_open_constr_with_bindings); raw_des = Ser_tactics.destruction_arg_of_sexp (Ser_tactypes.with_bindings_of_sexp Ser_constrexpr.constr_expr_of_sexp); glb_des = Ser_tactics.destruction_arg_of_sexp (Ser_tactypes.with_bindings_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp); top_des = Ser_tactics.(destruction_arg_of_sexp Ser_tactypes.delayed_open_constr_with_bindings_of_sexp); } let ser_wit_tactic = Ser_genarg.{ raw_ser = Ser_tacexpr.sexp_of_raw_tactic_expr; glb_ser = Ser_tacexpr.sexp_of_glob_tactic_expr; top_ser = Ser_geninterp.Val.sexp_of_t; raw_des = Ser_tacexpr.raw_tactic_expr_of_sexp; glb_des = Ser_tacexpr.glob_tactic_expr_of_sexp; top_des = Ser_geninterp.Val.t_of_sexp; } let ser_wit_ltac = Ser_genarg.{ raw_ser = Ser_tacexpr.sexp_of_raw_tactic_expr; glb_ser = Ser_tacexpr.sexp_of_glob_tactic_expr; top_ser = Sexplib.Conv.sexp_of_unit; raw_des = Ser_tacexpr.raw_tactic_expr_of_sexp; glb_des = Ser_tacexpr.glob_tactic_expr_of_sexp; top_des = Sexplib.Conv.unit_of_sexp; } let ser_wit_quant_hyp = Ser_genarg.mk_uniform Ser_tactypes.sexp_of_quantified_hypothesis Ser_tactypes.quantified_hypothesis_of_sexp let ser_wit_bindings : (Constrexpr.constr_expr Tactypes.bindings, Genintern.glob_constr_and_expr Tactypes.bindings, EConstr.constr Tactypes.bindings Tactypes.delayed_open) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Ser_tactypes.sexp_of_bindings Ser_constrexpr.sexp_of_constr_expr; glb_ser = Ser_tactypes.sexp_of_bindings Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = Serlib_base.sexp_of_opaque ~typ:"wit_bindings/top"; raw_des = Ser_tactypes.bindings_of_sexp Ser_constrexpr.constr_expr_of_sexp; glb_des = Ser_tactypes.bindings_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp; top_des = Serlib_base.opaque_of_sexp ~typ:"wit_bindings/top"; } let ser_wit_constr_with_bindings : (Constrexpr.constr_expr Tactypes.with_bindings, Genintern.glob_constr_and_expr Tactypes.with_bindings, EConstr.constr Tactypes.with_bindings Tactypes.delayed_open) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Ser_tactypes.sexp_of_with_bindings Ser_constrexpr.sexp_of_constr_expr; glb_ser = Ser_tactypes.sexp_of_with_bindings Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = Serlib_base.sexp_of_opaque ~typ:"wit_constr_with_bindings/top"; raw_des = Ser_tactypes.with_bindings_of_sexp Ser_constrexpr.constr_expr_of_sexp; glb_des = Ser_tactypes.with_bindings_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp; top_des = Serlib_base.opaque_of_sexp ~typ:"wit_constr_with_bindings/top"; } (* G_ltac *) (* Defined in g_ltac but serialized here *) let ser_wit_ltac_info = let open Sexplib.Conv in Ser_genarg.{ raw_ser = sexp_of_int; glb_ser = sexp_of_unit; top_ser = sexp_of_unit; raw_des = int_of_sexp; glb_des = unit_of_sexp; top_des = unit_of_sexp; } let ser_wit_production_item = let open Sexplib.Conv in Ser_genarg.{ raw_ser = Ser_tacentries.(sexp_of_grammar_tactic_prod_item_expr sexp_of_raw_argument); glb_ser = sexp_of_unit; top_ser = sexp_of_unit; raw_des = Ser_tacentries.(grammar_tactic_prod_item_expr_of_sexp raw_argument_of_sexp); glb_des = unit_of_sexp; top_des = unit_of_sexp; } let ser_wit_ltac_production_sep = let open Sexplib.Conv in Ser_genarg.{ raw_ser = sexp_of_string; glb_ser = sexp_of_unit; top_ser = sexp_of_unit; raw_des = string_of_sexp; glb_des = unit_of_sexp; top_des = unit_of_sexp; } let ser_wit_ltac_selector = Ser_genarg.{ raw_ser = Ser_goal_select.sexp_of_t; glb_ser = Sexplib.Conv.sexp_of_unit; top_ser = Sexplib.Conv.sexp_of_unit; raw_des = Ser_goal_select.t_of_sexp; glb_des = Sexplib.Conv.unit_of_sexp; top_des = Sexplib.Conv.unit_of_sexp; } let ser_wit_ltac_tacdef_body = Ser_genarg.{ raw_ser = Ser_tacexpr.sexp_of_tacdef_body; glb_ser = Sexplib.Conv.sexp_of_unit; top_ser = Sexplib.Conv.sexp_of_unit; raw_des = Ser_tacexpr.tacdef_body_of_sexp; glb_des = Sexplib.Conv.unit_of_sexp; top_des = Sexplib.Conv.unit_of_sexp; } let ser_wit_ltac_tactic_level = Ser_genarg.{ raw_ser = Sexplib.Conv.sexp_of_int; glb_ser = Sexplib.Conv.sexp_of_unit; top_ser = Sexplib.Conv.sexp_of_unit; raw_des = Sexplib.Conv.int_of_sexp; glb_des = Sexplib.Conv.unit_of_sexp; top_des = Sexplib.Conv.unit_of_sexp; } let ser_wit_ltac_use_default = Ser_genarg.{ raw_ser = Sexplib.Conv.sexp_of_bool; glb_ser = Sexplib.Conv.sexp_of_unit; top_ser = Sexplib.Conv.sexp_of_unit; raw_des = Sexplib.Conv.bool_of_sexp; glb_des = Sexplib.Conv.unit_of_sexp; top_des = Sexplib.Conv.unit_of_sexp } (* From G_auto *) let ser_wit_auto_using = Ser_genarg.{ raw_ser = Sexplib.Conv.sexp_of_list Ser_constrexpr.sexp_of_constr_expr; glb_ser = Sexplib.Conv.sexp_of_list Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = Sexplib.Conv.sexp_of_list Ser_ltac_pretype.sexp_of_closed_glob_constr; raw_des = Sexplib.Conv.list_of_sexp Ser_constrexpr.constr_expr_of_sexp; glb_des = Sexplib.Conv.list_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp; top_des = Sexplib.Conv.list_of_sexp Ser_ltac_pretype.closed_glob_constr_of_sexp; } let ser_wit_hintbases = let open Sexplib.Conv in Ser_genarg.{ raw_ser = sexp_of_option (sexp_of_list sexp_of_string); glb_ser = sexp_of_option (sexp_of_list sexp_of_string); top_ser = sexp_of_option (sexp_of_list Ser_hints.sexp_of_hint_db_name); raw_des = option_of_sexp (list_of_sexp string_of_sexp); glb_des = option_of_sexp (list_of_sexp string_of_sexp); top_des = option_of_sexp (list_of_sexp Ser_hints.hint_db_name_of_sexp); } let ser_wit_hintbases_path = Ser_genarg.{ raw_ser = Ser_hints.(sexp_of_hints_path_gen Ser_libnames.sexp_of_qualid); glb_ser = Ser_hints.sexp_of_hints_path; top_ser = Ser_hints.sexp_of_hints_path; raw_des = Ser_hints.(hints_path_gen_of_sexp Ser_libnames.qualid_of_sexp); glb_des = Ser_hints.hints_path_of_sexp; top_des = Ser_hints.hints_path_of_sexp; } let ser_wit_hintbases_path_atom = Ser_genarg.{ raw_ser = Ser_hints.(sexp_of_hints_path_atom_gen Ser_libnames.sexp_of_qualid); glb_ser = Ser_hints.(sexp_of_hints_path_atom_gen Ser_names.GlobRef.sexp_of_t); top_ser = Ser_hints.(sexp_of_hints_path_atom_gen Ser_names.GlobRef.sexp_of_t); raw_des = Ser_hints.(hints_path_atom_gen_of_sexp Ser_libnames.qualid_of_sexp); glb_des = Ser_hints.(hints_path_atom_gen_of_sexp Ser_names.GlobRef.t_of_sexp); top_des = Ser_hints.(hints_path_atom_gen_of_sexp Ser_names.GlobRef.t_of_sexp); } let ser_wit_opthints = let open Sexplib.Conv in Ser_genarg.{ raw_ser = sexp_of_option (sexp_of_list sexp_of_string); glb_ser = sexp_of_option (sexp_of_list sexp_of_string); top_ser = sexp_of_option (sexp_of_list Ser_hints.sexp_of_hint_db_name); raw_des = option_of_sexp (list_of_sexp string_of_sexp); glb_des = option_of_sexp (list_of_sexp string_of_sexp); top_des = option_of_sexp (list_of_sexp Ser_hints.hint_db_name_of_sexp); } (* G_rewrite *) module G_rewrite = struct open Sexplib.Conv let wit_binders = Ltac_plugin.G_rewrite.wit_binders type binders_argtype = [%import: Ltac_plugin.G_rewrite.binders_argtype] [@@deriving sexp] let ser_wit_binders = Ser_genarg.mk_uniform sexp_of_binders_argtype binders_argtype_of_sexp let wit_glob_constr_with_bindings = Ltac_plugin.G_rewrite.wit_glob_constr_with_bindings let ser_wit_glob_constr_with_bindings = let open Sexplib.Conv in let _sexp_of_interp_sign = Serlib_base.sexp_of_opaque ~typ:"interp_sign" in let _interp_sign_of_sexp = Serlib_base.opaque_of_sexp ~typ:"interp_sign" in Ser_genarg.{ raw_ser = Ser_tactypes.sexp_of_with_bindings Ser_constrexpr.sexp_of_constr_expr; glb_ser = Ser_tactypes.sexp_of_with_bindings Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = sexp_of_pair _sexp_of_interp_sign Ser_tactypes.(sexp_of_with_bindings Ser_genintern.sexp_of_glob_constr_and_expr); raw_des = Ser_tactypes.with_bindings_of_sexp Ser_constrexpr.constr_expr_of_sexp; glb_des = Ser_tactypes.with_bindings_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp; top_des = pair_of_sexp _interp_sign_of_sexp Ser_tactypes.(with_bindings_of_sexp Ser_genintern.glob_constr_and_expr_of_sexp) } let wit_rewstrategy = Ltac_plugin.G_rewrite.wit_rewstrategy type raw_strategy = [%import: Ltac_plugin.G_rewrite.raw_strategy] [@@deriving sexp] type glob_strategy = [%import: Ltac_plugin.G_rewrite.glob_strategy] [@@deriving sexp] (* (G_rewrite.raw_strategy, G_rewrite.glob_strategy, Rewrite.strategy) *) let ser_wit_rewstrategy = Ser_genarg. { raw_ser = sexp_of_raw_strategy ; glb_ser = sexp_of_glob_strategy ; top_ser = Ltac_plugin.Rewrite.sexp_of_strategy ; raw_des = raw_strategy_of_sexp ; glb_des = glob_strategy_of_sexp ; top_des = Ltac_plugin.Rewrite.strategy_of_sexp } end let ser_wit_debug = let open Sexplib.Conv in Ser_genarg.mk_uniform sexp_of_bool bool_of_sexp let ser_wit_eauto_search_strategy = let open Sexplib.Conv in Ser_genarg.mk_uniform (sexp_of_option Ser_class_tactics.sexp_of_search_strategy) (option_of_sexp Ser_class_tactics.search_strategy_of_sexp) let ser_wit_withtac = let open Sexplib.Conv in Ser_genarg.mk_uniform (sexp_of_option Ser_tacexpr.sexp_of_raw_tactic_expr) (option_of_sexp Ser_tacexpr.raw_tactic_expr_of_sexp) (* extraargs *) open Sexplib.Conv module Names = Ser_names module Locus = Ser_locus type 'a gen_place = [%import: 'a Ltac_plugin.Extraargs.gen_place] [@@deriving sexp] type loc_place = [%import: Ltac_plugin.Extraargs.loc_place] [@@deriving sexp] type place = [%import: Ltac_plugin.Extraargs.place] [@@deriving sexp] let ser_wit_hloc = Ser_genarg.{ raw_ser = sexp_of_loc_place ; glb_ser = sexp_of_loc_place ; top_ser = sexp_of_place ; raw_des = loc_place_of_sexp ; glb_des = loc_place_of_sexp ; top_des = place_of_sexp } let ser_wit_lglob = Ser_genarg.{ raw_ser = Ser_constrexpr.sexp_of_constr_expr ; glb_ser = Ser_genintern.sexp_of_glob_constr_and_expr ; top_ser = sexp_of_pair Ser_geninterp.sexp_of_interp_sign Ser_glob_term.sexp_of_glob_constr ; raw_des = Ser_constrexpr.constr_expr_of_sexp ; glb_des = Ser_genintern.glob_constr_and_expr_of_sexp ; top_des = pair_of_sexp Ser_geninterp.interp_sign_of_sexp Ser_glob_term.glob_constr_of_sexp } let ser_wit_orient = let open Sexplib.Conv in Ser_genarg.mk_uniform sexp_of_bool bool_of_sexp let ser_wit_rename = let open Sexplib.Conv in Ser_genarg.mk_uniform (sexp_of_pair Ser_names.Id.sexp_of_t Ser_names.Id.sexp_of_t) (pair_of_sexp Ser_names.Id.t_of_sexp Ser_names.Id.t_of_sexp) let ser_wit_natural = let open Sexplib.Conv in Ser_genarg.mk_uniform sexp_of_int int_of_sexp let ser_wit_lconstr : (Constrexpr.constr_expr, Ser_genintern.glob_constr_and_expr, EConstr.t) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Ser_constrexpr.sexp_of_constr_expr; glb_ser = Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = Ser_eConstr.sexp_of_t; raw_des = Ser_constrexpr.constr_expr_of_sexp; glb_des = Ser_genintern.glob_constr_and_expr_of_sexp; top_des = Ser_eConstr.t_of_sexp; } let ser_wit_casted_constr : (Constrexpr.constr_expr, Ser_genintern.glob_constr_and_expr, EConstr.t) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Ser_constrexpr.sexp_of_constr_expr; glb_ser = Ser_genintern.sexp_of_glob_constr_and_expr; top_ser = Ser_eConstr.sexp_of_t; raw_des = Ser_constrexpr.constr_expr_of_sexp; glb_des = Ser_genintern.glob_constr_and_expr_of_sexp; top_des = Ser_eConstr.t_of_sexp; } let ser_wit_in_clause : (Names.lident Locus.clause_expr, Names.lident Locus.clause_expr, Names.Id.t Locus.clause_expr) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Ser_locus.sexp_of_clause_expr Ser_names.sexp_of_lident; glb_ser = Ser_locus.sexp_of_clause_expr Ser_names.sexp_of_lident; top_ser = Ser_locus.sexp_of_clause_expr Ser_names.Id.sexp_of_t; raw_des = Ser_locus.clause_expr_of_sexp Ser_names.lident_of_sexp; glb_des = Ser_locus.clause_expr_of_sexp Ser_names.lident_of_sexp; top_des = Ser_locus.clause_expr_of_sexp Ser_names.Id.t_of_sexp; } let ser_wit_by_arg_tac : (Tacexpr.raw_tactic_expr option, Tacexpr.glob_tactic_expr option, Tacinterp.value option) Ser_genarg.gen_ser = Ser_genarg.{ raw_ser = Sexplib.Conv.sexp_of_option Ser_tacexpr.sexp_of_raw_tactic_expr; glb_ser = Sexplib.Conv.sexp_of_option Ser_tacexpr.sexp_of_glob_tactic_expr; top_ser = Sexplib.Conv.sexp_of_option Ser_geninterp.Val.sexp_of_t; raw_des = Sexplib.Conv.option_of_sexp Ser_tacexpr.raw_tactic_expr_of_sexp; glb_des = Sexplib.Conv.option_of_sexp Ser_tacexpr.glob_tactic_expr_of_sexp; top_des = Sexplib.Conv.option_of_sexp Ser_geninterp.Val.t_of_sexp; } let ser_wit_lpar_id_colon = let open Sexplib.Conv in Ser_genarg.mk_uniform sexp_of_unit unit_of_sexp let ser_wit_occurences = let open Sexplib.Conv in Ser_genarg.{ raw_ser = Ser_locus.sexp_of_or_var (sexp_of_list sexp_of_int); glb_ser = Ser_locus.sexp_of_or_var (sexp_of_list sexp_of_int); top_ser = sexp_of_list sexp_of_int; raw_des = Ser_locus.or_var_of_sexp (list_of_sexp int_of_sexp); glb_des = Ser_locus.or_var_of_sexp (list_of_sexp int_of_sexp); top_des = list_of_sexp int_of_sexp; } let register () = Ser_genarg.register_genser Tacarg.wit_bindings ser_wit_bindings; Ser_genarg.register_genser Tacarg.wit_constr_with_bindings ser_wit_constr_with_bindings; Ser_genarg.register_genser Tacarg.wit_open_constr_with_bindings ser_wit_constr_with_bindings; Ser_genarg.register_genser Tacarg.wit_destruction_arg ser_wit_destruction_arg; Ser_genarg.register_genser Tacarg.wit_simple_intropattern ser_wit_simple_intropattern; (* Ser_genarg.register_genser Tacarg.wit_intro_pattern ser_wit_intropattern; *) Ser_genarg.register_genser Tacarg.wit_ltac ser_wit_ltac; Ser_genarg.register_genser Tacarg.wit_quant_hyp ser_wit_quant_hyp; (* Ser_genarg.register_genser Tacarg.wit_quantified_hypothesis ser_wit_quant_hyp; *) Ser_genarg.register_genser Tacarg.wit_tactic ser_wit_tactic; Ser_genarg.register_genser G_ltac.wit_ltac_info ser_wit_ltac_info; Ser_genarg.register_genser G_ltac.wit_ltac_production_item ser_wit_production_item; Ser_genarg.register_genser G_ltac.wit_ltac_production_sep ser_wit_ltac_production_sep; Ser_genarg.register_genser G_ltac.wit_ltac_selector ser_wit_ltac_selector; Ser_genarg.register_genser G_ltac.wit_ltac_tacdef_body ser_wit_ltac_tacdef_body; Ser_genarg.register_genser G_ltac.wit_ltac_tactic_level ser_wit_ltac_tactic_level; Ser_genarg.register_genser G_ltac.wit_ltac_use_default ser_wit_ltac_use_default; Ser_genarg.register_genser G_auto.wit_auto_using ser_wit_auto_using; Ser_genarg.register_genser G_auto.wit_hintbases ser_wit_hintbases; Ser_genarg.register_genser G_auto.wit_hints_path ser_wit_hintbases_path; Ser_genarg.register_genser G_auto.wit_hints_path_atom ser_wit_hintbases_path_atom; Ser_genarg.register_genser G_auto.wit_opthints ser_wit_opthints; Ser_genarg.register_genser G_rewrite.wit_binders G_rewrite.ser_wit_binders; Ser_genarg.register_genser G_rewrite.wit_glob_constr_with_bindings G_rewrite.ser_wit_glob_constr_with_bindings; Ser_genarg.register_genser G_rewrite.wit_rewstrategy G_rewrite.ser_wit_rewstrategy; Ser_genarg.register_genser G_class.wit_debug ser_wit_debug; Ser_genarg.register_genser G_class.wit_eauto_search_strategy ser_wit_eauto_search_strategy; Ser_genarg.register_genser G_obligations.wit_withtac ser_wit_withtac; Ser_genarg.register_genser Extraargs.wit_by_arg_tac ser_wit_by_arg_tac; Ser_genarg.register_genser Extraargs.wit_casted_constr ser_wit_casted_constr; Ser_genarg.register_genser Extraargs.wit_glob ser_wit_lglob; Ser_genarg.register_genser Extraargs.wit_hloc ser_wit_hloc; Ser_genarg.register_genser Extraargs.wit_in_clause ser_wit_in_clause; Ser_genarg.register_genser Extraargs.wit_lconstr ser_wit_lconstr; Ser_genarg.register_genser Extraargs.wit_lglob ser_wit_lglob; Ser_genarg.register_genser Extraargs.wit_natural ser_wit_natural; Ser_genarg.register_genser Extraargs.wit_orient ser_wit_orient; Ser_genarg.register_genser Extraargs.wit_occurrences ser_wit_occurences; Ser_genarg.register_genser Extraargs.wit_rename ser_wit_rename; Ser_genarg.register_genser Extraargs.wit_test_lpar_id_colon ser_wit_lpar_id_colon; () let _ = register ()
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>