src/HOL/Tools/ATP/atp_problem_generate.ML
changeset 50969 4179fa5c79fe
parent 50968 3686bc0d4df2
child 51651 21a932f64366
equal deleted inserted replaced
50968:3686bc0d4df2 50969:4179fa5c79fe
  1381   strictness <> Strict andalso is_type_surely_infinite ctxt true cached_Ts T
  1381   strictness <> Strict andalso is_type_surely_infinite ctxt true cached_Ts T
  1382 
  1382 
  1383 (* Finite types such as "unit", "bool", "bool * bool", and "bool => bool" are
  1383 (* Finite types such as "unit", "bool", "bool * bool", and "bool => bool" are
  1384    dangerous because their "exhaust" properties can easily lead to unsound ATP
  1384    dangerous because their "exhaust" properties can easily lead to unsound ATP
  1385    proofs. On the other hand, all HOL infinite types can be given the same
  1385    proofs. On the other hand, all HOL infinite types can be given the same
  1386    models in first-order logic (via Löwenheim-Skolem). *)
  1386    models in first-order logic (via Loewenheim-Skolem). *)
  1387 
  1387 
  1388 fun should_encode_type ctxt {maybe_finite_Ts, surely_infinite_Ts,
  1388 fun should_encode_type ctxt {maybe_finite_Ts, surely_infinite_Ts,
  1389                              maybe_nonmono_Ts}
  1389                              maybe_nonmono_Ts}
  1390                        (Nonmono_Types (strictness, _)) T =
  1390                        (Nonmono_Types (strictness, _)) T =
  1391     let val thy = Proof_Context.theory_of ctxt in
  1391     let val thy = Proof_Context.theory_of ctxt in