equal
deleted
inserted
replaced
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 |