eliminate two FIXMEs in Nitpick's monotonicity check code
authorblanchet
Thu, 29 Oct 2009 21:57:59 +0100
changeset 33565113e235e84e3
parent 33564 e61ad1690c11
child 33566 118517551c12
eliminate two FIXMEs in Nitpick's monotonicity check code
src/HOL/Tools/Nitpick/nitpick_mono.ML
     1.1 --- a/src/HOL/Tools/Nitpick/nitpick_mono.ML	Thu Oct 29 16:06:28 2009 +0100
     1.2 +++ b/src/HOL/Tools/Nitpick/nitpick_mono.ML	Thu Oct 29 21:57:59 2009 +0100
     1.3 @@ -708,7 +708,7 @@
     1.4                    (CFun (left_set_C, S Neg,
     1.5                           CFun (right_set_C, S Neg, left_set_C)),
     1.6                     (gamma, cset |> add_ctype_is_right_unique right_set_C
     1.7 -                          (* FIXME: |> add_is_sub_ctype right_set_C left_set_C *)))
     1.8 +                                |> add_is_sub_ctype right_set_C left_set_C))
     1.9                  end
    1.10                | @{const_name ord_fun_inst.less_eq_fun} =>
    1.11                  do_fragile_set_operation T accum
    1.12 @@ -784,10 +784,8 @@
    1.13    let
    1.14      (* typ -> ctype *)
    1.15      val ctype_for = fresh_ctype_for_type cdata
    1.16 -    (* term -> accumulator -> ctype * accumulator *)
    1.17 -    val do_term = consider_term cdata
    1.18      (* term -> accumulator -> accumulator *)
    1.19 -    val do_boolean_term = snd oo do_term
    1.20 +    val do_term = snd oo consider_term cdata
    1.21      (* sign -> term -> accumulator -> accumulator *)
    1.22      fun do_formula _ _ (_, UnsolvableCSet) = unsolvable_accum
    1.23        | do_formula sn t (accum as (gamma as {bounds, frees, consts}, cset)) =
    1.24 @@ -812,11 +810,8 @@
    1.25            (* term -> term -> accumulator *)
    1.26            fun do_equals t1 t2 =
    1.27              case sn of
    1.28 -              Pos => do_boolean_term t accum
    1.29 -            | Neg => let
    1.30 -                       val (C1, accum) = do_term t1 accum
    1.31 -                       val (C2, accum) = do_term t2 accum
    1.32 -                     in accum (* FIXME: ||> add_ctypes_equal C1 C2 *) end
    1.33 +              Pos => do_term t accum
    1.34 +            | Neg => fold do_term [t1, t2] accum
    1.35          in
    1.36            case t of
    1.37              Const (s0 as @{const_name all}, _) $ Abs (_, T1, t1) =>
    1.38 @@ -844,10 +839,10 @@
    1.39            | @{const "op -->"} $ t1 $ t2 =>
    1.40              accum |> do_contra_formula t1 |> do_co_formula t2
    1.41            | Const (@{const_name If}, _) $ t1 $ t2 $ t3 =>
    1.42 -            accum |> do_boolean_term t1 |> do_co_formula t2 |> do_co_formula t3
    1.43 +            accum |> do_term t1 |> fold do_co_formula [t2, t3]
    1.44            | Const (@{const_name Let}, _) $ t1 $ t2 =>
    1.45              do_co_formula (betapply (t2, t1)) accum
    1.46 -          | _ => do_boolean_term t accum
    1.47 +          | _ => do_term t accum
    1.48          end
    1.49          |> tap (fn _ => print_g ("\<Gamma> \<turnstile> " ^
    1.50                                   Syntax.string_of_term ctxt t ^