567 else if is_built_in_const thy stds x then |
567 else if is_built_in_const thy stds x then |
568 (* FIXME: find out if this case is necessary *) |
568 (* FIXME: find out if this case is necessary *) |
569 Op1 (Not, bool_T, Any, Op2 (Less, bool_T, Any, sub t2, sub t1)) |
569 Op1 (Not, bool_T, Any, Op2 (Less, bool_T, Any, sub t2, sub t1)) |
570 else |
570 else |
571 do_apply t0 ts |
571 do_apply t0 ts |
572 | (Const (@{const_name nat_gcd}, T), []) => Cst (Gcd, T, Any) |
572 | (Const (@{const_name Nitpick.nat_gcd}, T), []) => Cst (Gcd, T, Any) |
573 | (Const (@{const_name nat_lcm}, T), []) => Cst (Lcm, T, Any) |
573 | (Const (@{const_name Nitpick.nat_lcm}, T), []) => Cst (Lcm, T, Any) |
574 | (Const (x as (s as @{const_name uminus_class.uminus}, T)), []) => |
574 | (Const (x as (s as @{const_name uminus_class.uminus}, T)), []) => |
575 if is_built_in_const thy stds x then |
575 if is_built_in_const thy stds x then |
576 let val num_T = domain_type T in |
576 let val num_T = domain_type T in |
577 Op2 (Apply, num_T --> num_T, Any, |
577 Op2 (Apply, num_T --> num_T, Any, |
578 Cst (Subtract, num_T --> num_T --> num_T, Any), |
578 Cst (Subtract, num_T --> num_T --> num_T, Any), |
584 | (Const (@{const_name is_unknown}, _), [t1]) => |
584 | (Const (@{const_name is_unknown}, _), [t1]) => |
585 Op1 (IsUnknown, bool_T, Any, sub t1) |
585 Op1 (IsUnknown, bool_T, Any, sub t1) |
586 | (Const (@{const_name safe_The}, |
586 | (Const (@{const_name safe_The}, |
587 Type (@{type_name fun}, [_, T2])), [t1]) => |
587 Type (@{type_name fun}, [_, T2])), [t1]) => |
588 Op1 (SafeThe, T2, Any, sub t1) |
588 Op1 (SafeThe, T2, Any, sub t1) |
589 | (Const (@{const_name Frac}, T), []) => Cst (Fracs, T, Any) |
589 | (Const (@{const_name Nitpick.Frac}, T), []) => Cst (Fracs, T, Any) |
590 | (Const (@{const_name norm_frac}, T), []) => Cst (NormFrac, T, Any) |
590 | (Const (@{const_name Nitpick.norm_frac}, T), []) => |
|
591 Cst (NormFrac, T, Any) |
591 | (Const (@{const_name of_nat}, T as @{typ "nat => int"}), []) => |
592 | (Const (@{const_name of_nat}, T as @{typ "nat => int"}), []) => |
592 Cst (NatToInt, T, Any) |
593 Cst (NatToInt, T, Any) |
593 | (Const (@{const_name of_nat}, |
594 | (Const (@{const_name of_nat}, |
594 T as @{typ "unsigned_bit word => signed_bit word"}), []) => |
595 T as @{typ "unsigned_bit word => signed_bit word"}), []) => |
595 Cst (NatToInt, T, Any) |
596 Cst (NatToInt, T, Any) |