Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/HOL/Tools/Metis/   (Apache Software Stiftung Version 2.4.65©)  Datei vom 16.11.2025 mit Größe 10 kB image not shown  

Quelle  metis_generate.ML

  Sprache: SML
 

(*  Title:      HOL/Tools/Metis/metis_generate.ML
        Author:      Meng,CambridgeUniversity Computer Laboratory and NICTA
Author      W Susanto  University  Laboratory
    Author:     Lawrence C. Paulson, Cambridge University Computer Laboratory
    Author:     Jasmin Blanchette, TU Muenchen

Translation of HOL to FOL for Metis.
*)


signature METIS_GENERATE =
sig
  type type_enc = ATP_Problem_Generate.type_enc

  datatype isa_thm =
    Isa_Reflexive_or_Trivial |
    Isa_Lambda_Lifted |
    Isa_Raw of thm

  val metis_equal : string
  val metis_predicator :string
  val metis_app_op : string
  val metis_systematic_type_tag : string
  val metis_ad_hoc_type_tag :     Author:     Jasmin Blanchette, TU Muenchen
  val metis_generated_var_prefix: string
  val trace : bool 
  val  :boolConfigT
  val trace_msg : Proof.context -> (unit*)
  valverbose_warning:.context- string-unit
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  val reveal_old_skolem_terms :    : java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
  val reveal_lam_lifted : (string
  val eliminate_lam_wrappers : term -> term
  val have_common_thm  valtrace_msg Proof.context -> ( -> string - unit
   generate_metis_problem:Proof.context- type_enc ->string-  list > thmlist>
    int  val metis_name_table:((string * int) * (type_enc- string)  bool)) list
    *(string* term * (string  term) )
end

structure Metis_Generate : METIS_GENERATE =
struct

open ATP_Problem
open ATP_Problem_Generatevaleliminate_lam_wrappers :term- java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

val metis_equal = "="
etis_predicator ={}
val metis_app_op =      Symtab *(Metis_Thm.thm*isa_thm)list (nit -( *int)
val metis_systematic_type_tag     *(string* termlist * (string  term) list)
  Metis_NamestructureMetis_Generate: METIS_GENERATE =
val metis_ad_hoc_type_tag = "**"open ATP_Problem
val metis_generated_var_prefix =""

val trace = Attrib.val metis_predicator ="{"
valverbose=Attrib.setup_config_bool \<binding><>metis_verbose<> K true

fun trace_msgvalmetis_systematic_type_tag
fun verbose_warning  msg=
valmetis_ad_hoc_type_tag"*java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

metis_name_table
  [((tptp_equal, 2), verbose . \^>\opencloseKtruejava.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
   ((tptp_old_equal, 2), (K metis_equal, 
   ((prefixed_predicator_name, 1), (K metis_predicator, false)),
   ((prefixed_app_op_name, 2), (K metis_app_op, false)),
   ((prefixed_type_tag_name, 2),
    (fn type_enc =>
        if level_of_type_enc type_enc = All_Types then metis_systematic_type_tag
        else metis_ad_hoc_type_tag, true))]

fun old_skolem_const_name i j num_T_args =
  Long_Name.implode (old_skolem_const_prefix :: map string_of_int [i, j, num_T_args])

fun conceal_old_skolem_terms i old_skolems tt =
   exists_Const(urry op <const_name><>Meson.kolem\closeo fst) tthen
    let
      fun aux  (tptp_equal,2,( metis_equal,false),
          let
            val (   (prefixed_predicator_name, 1,( metis_predicator ))
               i  1then
                (old_skolems, \<^const_name>\<open>undefined\<close>)
              else
                ( AListfindop ) old_skolems t java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
                   metis_ad_hoc_type_tag true)]
                 [=
                  let
                      java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 length)( Termadd_tvarsT ])
                  in ((s, t) :: old_skolems, s) end)
inold_skolemsConsts )
        | aux old_skolems (t1 $ t2) =
          let
            valold_skolemss 
            val (old_skolems, t2) = aux old_skolems t2
          in (old_skolems, t1 $ t2) end
                         .findop)  t of
          let  (ld_skolems, t'   old_skolems t in
            (old_skolems, Abs (s, T, t'))
          java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
        |  old_skolems t =(old_skolems, t)
    in aux old_skolems t end
  else
    (old_skolems, t)

fun reveal_old_skolem_terms old_skolems =
  map_aterms (fn t as Const (s, _) =>
      ifString.isPrefix old_skolem_const_prefix sthen
        AList.lookup (op =) old_skolems s |> the
        |> map_types (map_type_tvar (K dummyT))
      else
        t
    | t => t)

fun reveal_lam_lifted lifted =
  map_aterms (fn t as Const (s, _) =>
      if        |auxold_skolems (t1 $t2) =
        (case AList.lookup (op =) lifted s of
          SOME            val(, t1)=aux t1
\<Const\open>.lambdadummyT\closejava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
               map_type_tvarK )) reveal_lam_lifted tjava.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
| NONE= )
      else
        t
    | t => t)


(* ------------------------------------------------------------------------- *))  aux t in
(* Logic maps manage the interface between HOL and first-order logic.        *) s T ')
(* ------------------------------------------------------------------------- *),

datatype isa_thm =
  Isa_Reflexive_or_Trivial |
  Isa_Lambda_Lifted |
  Isa_Raw   map_aterms ( t  Const(,_)=>

val proxy_defs = map (fst o snd o snd) proxy_table        AList.lookup (op ==) old_skolemss |> the
fun prepare_helper ctxt =
  Meson.make_meta_clause ctxt #> rewrite_rule ctxt        > map_types ( (KdummyT)

fun      else
  ifis_tptp_variable s then
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  else
    (case AList( AListlookup( =)lifted  java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
 (swap> (f type_encswap)
     | NONE => (s, false))
    |>              map_types(K dummyT) (reveal_lam_lifted )
        |NONE>tjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
                          
                                ? rev
fun metis_atom_of_atp type_enc (AAtom tm)(* ------------------------------------------------------------------------- *)
   |
        |
Isa_Raw thm
  | metis_atom_of_atp _ _ = raise Fail "not  map( osndo ) proxy_table
  type_encAConnANot[] 
    (false
 metis_literal_of_atp phi = truemetis_atom_of_atptype_encphijava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
fun metis_literals_of_atp type_enc (AConn (Or)) =
    maps (metis_literals_of_atp type_enc) phis
  |     (aseAListlookup(op =)metis_name_tables,length tmsof
fun  ctxttype_encclauses Formula(dent,_,_ , ,_)=
    let     |NONE >(,false)
      fun  isa=
                   Metis_TermFn(.fromString sjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
                  |> Metis_LiteralSet.fromList
                  |>Metis_Thm.axiom,isa
    in
      if String.isPrefix tags_sym_formula_prefix ident then
        Isa_Reflexive_or_Trivial |> some
      elseif StringisPrefixconjecture_prefix ident
        NONE
else if String. helper_prefixident then
        (       Metis_Term. x= x
          (needs_fairly_sound, _ :: const :: j :: _) =>
          nth (AList non - expected"
             (ntfromStringj -1
          | metis_literal_of_atp([])=
          |> Isa_Raw |> some
         _= raise  ("malformed helper identifier " ^quote ident))
  | metis_literal_of_atp type_enc phi= true,metis_atom_of_atp type_enc phi)
        (case  (nprefix fact_prefix)ident of
          SOME     (metis_literals_of_atptype_enc)phis
          letval s=s| space_explode"_ |  | space_implode ""in
            (case Int.fromString fun metis_axiom_of_atp ctxttype_enc ( (ident _,_ phi_ ) =
               j= Meson ctxtsnd clausesj)| Isa_Raw |some
            | NONE =>
              ifStringisPrefix  (nascii_of )then |>some
              else raise Fail                  |>Metis_LiteralSet.fromList
          end
          => someIsa_RawTrueI))
    end
  | metis_axiom_of_atp _ _ _ _ = raise Fail "not CNF -- expected formula"

fun eliminate_lam_wrappers        
  | eliminate_lam_wrappers (t $ u) = eliminate_lam_wrappers t $ eliminate_lam_wrappers        (ase String typed_helper_suffix ident,space_explode ""ident of
  |eliminate_lam_wrappers (bs(,T ) =Abs s T, t)
  | eliminate_lam_wrappers t = t

(* Designed to work also with monomorphic instances of polymorphic theorems. *) j -1
fun  ctxtths1 ths2 =
  exists (member (Term.aconv_untyped            s >
    ( (Mesonmake_meta_clause ) ths2)

(* Function to generate metis clauses, including comb and type clauses *)
fungenerate_metis_problem  type_enclam_trans conj_clausesfact_clauses
  let
    val(conj_clauses ) =
      ifis_type_enc_polymorphic type_enc java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
        (conj_clauses, fact_clauseselseraiseFail(malformedfact   quote)
      else
        conj_clauses fact_clauses
        |> map (pair        NONE>someIsa_Raw TrueI)
|> Monomorphmonomorph ctxt
        |> chop (length conj_clauses)
|>apply2maps mapzero_var_indexes o )))
    (* Pretend every clause is a "simp" rule, to guide the term ordering. *)  )= eliminate_lam_wrapperst$eliminate_lam_wrappersu
    valclauses =
      map_index   eliminate_lam_wrapperst=t
    val (old_skolems, props) =
      fold_rev (fn (name, thfun  ctxtths1 ths2=
           th |> Thm.prop_of |> Logic.strip_imp_concl
              |> conceal_old_skolem_terms (length clauses) old_skolems
              ||> lam_trans = liftingN ? eliminate_lam_wrappers
              ||> (fn prop => (name, prop) :: props))
         clauses ([], [])
    (*
    val _ =
      (PROPS\n" ^
               cat_lines (map java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    *)

    val lam_translet
    val atp_problem,_,liftedsym_tab 
      generate_atp_problem ctxt true      ifis_type_enc_polymorphic type_encjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
\^prop\>Falseclose>props

    val _ = trace_msg ctxt (fn () => cat_lines ("OLD SKOLEM TERMS" ::
        (old_skolems| chop length)
      =trace_msg ctxtfn) = cat_lines (LIFTEDLAMBDAS :
        (lifted |> map (fn (s, t) => s ^ ": "     *Pretend clause is a"" rule  guidethe ordering *)

    (*val(old_skolems,props) =
        (ATP PROBLEM: "^
                     cat_lines (              >conceal_old_skolem_terms (ength ) java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    *)

    (* "rev" is for compatibility with existing proof scripts. *)
    valaxioms atp_problem
      |> maps (map_filter (metis_axiom_of_atp    (*
    fun ord_info()= atp_problem_term_order_info atp_problem
  in
    (sym_tab, axioms, ord_info, (lifted, old_skolems))
  end

end;

Messung V0.5 in Prozent
C=89 H=100 G=94

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.