more robust and simpler adjustment computation
authorblanchet
Tue, 31 May 2011 16:38:36 +0200
changeset 43936ccf1c09dea82
parent 43935 269300fb83d0
child 43937 f181d66046d4
more robust and simpler adjustment computation
src/HOL/Tools/ATP/atp_reconstruct.ML
src/HOL/Tools/Metis/metis_reconstruct.ML
     1.1 --- a/src/HOL/Tools/ATP/atp_reconstruct.ML	Tue May 31 16:38:36 2011 +0200
     1.2 +++ b/src/HOL/Tools/ATP/atp_reconstruct.ML	Tue May 31 16:38:36 2011 +0200
     1.3 @@ -482,7 +482,8 @@
     1.4                  case strip_prefix_and_unascii schematic_var_prefix a of
     1.5                    SOME b => Var ((b, var_index), T)
     1.6                  | NONE =>
     1.7 -                  Var ((repair_variable_name Char.toLower a, var_index), T)
     1.8 +                  Var ((a |> textual ? repair_variable_name Char.toLower,
     1.9 +                        var_index), T)
    1.10            in list_comb (t, ts) end
    1.11    in do_term [] end
    1.12  
    1.13 @@ -547,7 +548,7 @@
    1.14          #>> quantify_over_var (case q of
    1.15                                   AForall => forall_of
    1.16                                 | AExists => exists_of)
    1.17 -                              (repair_variable_name Char.toLower s)
    1.18 +                              (s |> textual ? repair_variable_name Char.toLower)
    1.19        | AConn (ANot, [phi']) => do_formula (not pos) phi' #>> s_not
    1.20        | AConn (c, [phi1, phi2]) =>
    1.21          do_formula (pos |> c = AImplies ? not) phi1
     2.1 --- a/src/HOL/Tools/Metis/metis_reconstruct.ML	Tue May 31 16:38:36 2011 +0200
     2.2 +++ b/src/HOL/Tools/Metis/metis_reconstruct.ML	Tue May 31 16:38:36 2011 +0200
     2.3 @@ -216,7 +216,7 @@
     2.4  
     2.5  fun atp_name_from_metis s =
     2.6    case AList.find (op =) metis_name_table s of
     2.7 -    [(s', ary)] => (s', SOME ary)
     2.8 +    (s', ary) :: _ => (s', SOME ary)
     2.9    | _ => (s, NONE)
    2.10  fun atp_term_from_metis (Metis_Term.Fn (s, tms)) =
    2.11      ATerm (fst (atp_name_from_metis s), map atp_term_from_metis tms)
    2.12 @@ -525,14 +525,10 @@
    2.13                        " isa-term: " ^  Syntax.string_of_term ctxt tm ^
    2.14                        " fol-term: " ^ Metis_Term.toString t)
    2.15        fun path_finder_New tm [] _ = (tm, Bound 0)
    2.16 -        | path_finder_New tm (p :: ps) (t as Metis_Term.Fn (s, ts)) =
    2.17 +        | path_finder_New tm (p :: ps) (t as Metis_Term.Fn (_, ts)) =
    2.18            let
    2.19              val (tm1, args) = strip_comb tm
    2.20 -            val adjustment =
    2.21 -              case atp_name_from_metis s of
    2.22 -                (_, SOME _) => 0
    2.23 -              | (s', NONE) =>
    2.24 -                length ts - the_default 0 (Symtab.lookup sym_tab s')
    2.25 +            val adjustment = length ts - length args
    2.26              val p' = if adjustment > p then p else p - adjustment
    2.27              val tm_p = nth args p'
    2.28                handle Subscript =>