src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
changeset 48321 c552d7f1720b
parent 48319 340187063d84
child 48331 f190a6dbb29b
equal deleted inserted replaced
48320:891a24a48155 48321:c552d7f1720b
    16   type minimize_command = ATP_Proof_Reconstruct.minimize_command
    16   type minimize_command = ATP_Proof_Reconstruct.minimize_command
    17 
    17 
    18   datatype mode = Auto_Try | Try | Normal | Auto_Minimize | Minimize
    18   datatype mode = Auto_Try | Try | Normal | Auto_Minimize | Minimize
    19 
    19 
    20   type params =
    20   type params =
    21     {debug: bool,
    21     {debug : bool,
    22      verbose: bool,
    22      verbose : bool,
    23      overlord: bool,
    23      overlord : bool,
    24      blocking: bool,
    24      blocking : bool,
    25      provers: string list,
    25      provers : string list,
    26      type_enc: string option,
    26      type_enc : string option,
    27      strict: bool,
    27      strict : bool,
    28      lam_trans: string option,
    28      lam_trans : string option,
    29      uncurried_aliases: bool option,
    29      uncurried_aliases : bool option,
    30      fact_filter: string option,
    30      learn : bool,
    31      max_facts: int option,
    31      fact_filter : string option,
    32      fact_thresholds: real * real,
    32      max_facts : int option,
    33      max_mono_iters: int option,
    33      fact_thresholds : real * real,
    34      max_new_mono_instances: int option,
    34      max_mono_iters : int option,
    35      isar_proof: bool,
    35      max_new_mono_instances : int option,
    36      isar_shrink_factor: int,
    36      isar_proof : bool,
    37      slice: bool,
    37      isar_shrink_factor : int,
    38      minimize: bool option,
    38      slice : bool,
    39      timeout: Time.time,
    39      minimize : bool option,
    40      preplay_timeout: Time.time,
    40      timeout : Time.time,
    41      expect: string}
    41      preplay_timeout : Time.time,
       
    42      expect : string}
    42 
    43 
    43   type relevance_fudge =
    44   type relevance_fudge =
    44     {local_const_multiplier : real,
    45     {local_const_multiplier : real,
    45      worse_irrel_freq : real,
    46      worse_irrel_freq : real,
    46      higher_order_irrel_weight : real,
    47      higher_order_irrel_weight : real,
    64   datatype prover_fact =
    65   datatype prover_fact =
    65     Untranslated_Fact of (string * stature) * thm |
    66     Untranslated_Fact of (string * stature) * thm |
    66     SMT_Weighted_Fact of (string * stature) * (int option * thm)
    67     SMT_Weighted_Fact of (string * stature) * (int option * thm)
    67 
    68 
    68   type prover_problem =
    69   type prover_problem =
    69     {state: Proof.state,
    70     {state : Proof.state,
    70      goal: thm,
    71      goal : thm,
    71      subgoal: int,
    72      subgoal : int,
    72      subgoal_count: int,
    73      subgoal_count : int,
    73      facts: prover_fact list}
    74      facts : prover_fact list}
    74 
    75 
    75   type prover_result =
    76   type prover_result =
    76     {outcome: failure option,
    77     {outcome : failure option,
    77      used_facts: (string * stature) list,
    78      used_facts : (string * stature) list,
    78      run_time: Time.time,
    79      run_time : Time.time,
    79      preplay: unit -> play,
    80      preplay : unit -> play,
    80      message: play -> string,
    81      message : play -> string,
    81      message_tail: string}
    82      message_tail : string}
    82 
    83 
    83   type prover =
    84   type prover =
    84     params -> ((string * string list) list -> string -> minimize_command)
    85     params -> ((string * string list) list -> string -> minimize_command)
    85     -> prover_problem -> prover_result
    86     -> prover_problem -> prover_result
    86 
    87 
   304 
   305 
   305 
   306 
   306 (** problems, results, ATPs, etc. **)
   307 (** problems, results, ATPs, etc. **)
   307 
   308 
   308 type params =
   309 type params =
   309   {debug: bool,
   310   {debug : bool,
   310    verbose: bool,
   311    verbose : bool,
   311    overlord: bool,
   312    overlord : bool,
   312    blocking: bool,
   313    blocking : bool,
   313    provers: string list,
   314    provers : string list,
   314    type_enc: string option,
   315    type_enc : string option,
   315    strict: bool,
   316    strict : bool,
   316    lam_trans: string option,
   317    lam_trans : string option,
   317    uncurried_aliases: bool option,
   318    uncurried_aliases : bool option,
   318    fact_filter: string option,
   319    learn : bool,
   319    max_facts: int option,
   320    fact_filter : string option,
   320    fact_thresholds: real * real,
   321    max_facts : int option,
   321    max_mono_iters: int option,
   322    fact_thresholds : real * real,
   322    max_new_mono_instances: int option,
   323    max_mono_iters : int option,
   323    isar_proof: bool,
   324    max_new_mono_instances : int option,
   324    isar_shrink_factor: int,
   325    isar_proof : bool,
   325    slice: bool,
   326    isar_shrink_factor : int,
   326    minimize: bool option,
   327    slice : bool,
   327    timeout: Time.time,
   328    minimize : bool option,
   328    preplay_timeout: Time.time,
   329    timeout : Time.time,
   329    expect: string}
   330    preplay_timeout : Time.time,
       
   331    expect : string}
   330 
   332 
   331 type relevance_fudge =
   333 type relevance_fudge =
   332   {local_const_multiplier : real,
   334   {local_const_multiplier : real,
   333    worse_irrel_freq : real,
   335    worse_irrel_freq : real,
   334    higher_order_irrel_weight : real,
   336    higher_order_irrel_weight : real,
   352 datatype prover_fact =
   354 datatype prover_fact =
   353   Untranslated_Fact of (string * stature) * thm |
   355   Untranslated_Fact of (string * stature) * thm |
   354   SMT_Weighted_Fact of (string * stature) * (int option * thm)
   356   SMT_Weighted_Fact of (string * stature) * (int option * thm)
   355 
   357 
   356 type prover_problem =
   358 type prover_problem =
   357   {state: Proof.state,
   359   {state : Proof.state,
   358    goal: thm,
   360    goal : thm,
   359    subgoal: int,
   361    subgoal : int,
   360    subgoal_count: int,
   362    subgoal_count : int,
   361    facts: prover_fact list}
   363    facts : prover_fact list}
   362 
   364 
   363 type prover_result =
   365 type prover_result =
   364   {outcome: failure option,
   366   {outcome : failure option,
   365    used_facts: (string * stature) list,
   367    used_facts : (string * stature) list,
   366    run_time: Time.time,
   368    run_time : Time.time,
   367    preplay: unit -> play,
   369    preplay : unit -> play,
   368    message: play -> string,
   370    message : play -> string,
   369    message_tail: string}
   371    message_tail : string}
   370 
   372 
   371 type prover =
   373 type prover =
   372   params -> ((string * string list) list -> string -> minimize_command)
   374   params -> ((string * string list) list -> string -> minimize_command)
   373   -> prover_problem -> prover_result
   375   -> prover_problem -> prover_result
   374 
   376