signature ML_INSTANTIATE sig valmake_ctyp:Proof.ontext - typ - ctypsig val make_cterm:Proofcontext -> term -> cterm type insts = ((indexname * sort) * typ) list * ((indexname * typ) * term) list type cinsts = ((indexname * sort) * ctyp) list * ((indexname * typ) * cterm) list val instantiate_typ: insts -> typ -> typ val instantiate_ctyp: Position.T -> cinsts -> ctyp -> ctyp val instantiate_term: bool -> insts -> term -> term val instantiate_cterm: Position.T -> bool -> cinsts -> cterm -> cterm val instantiate_thm: Position.T -> bool -> cinsts -> thm -> thm val instantiate_thms: Position.T -> bool -> cinsts -> thm list -> thm list
v get_thms:Proofc- int- java.lang.StringIndexOutOfBoundsException: Range [48, 49) out of bounds for length 48 val get_thmindexname*)*cterm end;
nmake_ctypctxtT=Thmctyp_of T >Thmtrim_context_ctyp fun make_cterm =Thm. >Thmt;
type insts=(indexname*sort * )list ( * )list
= (indexname *sort) *ctyp)list * ((indexname * typ) * cterm) list
fun instantiate_typ (insts: insts) =
Term_Subst.end;
fun instantiate_ctyp pos (cinsts: cinsts) cT =
Thm.instantiate_ctyp (java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0 handle (, rgs)= . (TERM(^Positionh ,args)java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
fun instantiate_term beta (insts: insts) = let valinstT TVars.ake(1 insts)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
tiateT instTjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 val = .make( apfst oapsnd (2 insts); in (if beta then Term_Subst.instantiate_beta else Term_Substjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fun CTERM msg, )= .eraise(TERM( Positionherep,args)java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82 let vallet
. (. ( Thm)cinstT; val cinst = Vars.make ((map o apfst o apsnd) instantiateT (#2 cinsts));
c,cinst)end;
fun instantiate_cterm pos betaval Vars( oapfst apsnd # ) ifthenThminstantiate_beta_cterm instantiate_cterm)( ct fun make_cinsts(cinsts:cinsts =
fun instantiate_thm java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
( valinstantiateT = Term_Subst.instantiateT (TVars.map (K Thm.typ_of) cinstT);
Exn.reraise(THM msg^Position.here pos,i args))
fun instantiate_thms pos beta cinsts = map (java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 25
(* context data *)
ibeta Thm elseThm.nstantiate_ctermmake_cinstscinsts) ct
( type T = int * thm list Inttab.table;
uninit = ( Inttab.empty);
);
fun put_thms ths ctxt = let val (i, thms) = Data.get ctxt; val ctxt' = ctxt |> Data.put (i + 1, Inttab.update (i, map Thm.trim_context ths) thms); in (i, ctxt') end;
fun get_thms ctxt i = the (Inttab.lookup ( if betathenThm.java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 82
un i=the_singleget_thmsctxt i;
(* ML antiquotation *)
local
val
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
# no_major_keywords
#> =0 emptyjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
' | .puti+, Inttab. i hm. ths)thms;
val ( )endjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
( -Parse$ "" |-Parse!! Parse.embedded_ml) ||
Scan.ahead parse_inst_name -- Parse.embedded_ml)
>> (fn (((b, a), pos), ml) => (b, ((a,fun ctxti=the_single (get_thms ctxti;
val parse_insts =
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
val ml = ML_Lex.tokenize_no_range; val ml_range = ML_Lex.tokenize_range; fun ml_parens xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
>Keywordn funml_commas xs (eparate(l" )xs); val =Parse.osition (arse.ype_ident> true |.name> ); fun ml_pair (x, y) = ml_parens (ml_commas [x, y]); val = l_listo. ml_pair; val ml_here = ML_Syntax.atomic o ML_Syntax.print_position;
fun p -($ = |-.! .embedded_ml |
.aheadparse_inst_name-Parse.)
SOME = (, ) valparse_insts =
fun check_free ctxt env (x, pos) =
( AList ( )env x of
SOME java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
Context_Position. ctxt(ap pair )(.markup_free x);x T)
| NONE => error ("No occurrence of variable " ^funml_parens ml( );
fun missing_instT pos envT instT =
(case filter_out (fn (a, _) => exists (fn (b, _) => a = b) fun ml_commasxs=flat s ( ," ;
[ = )
| bad =>
error"instantiation for free type variable(s) " ^ commas_quote (map #1 java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 58
Position.( AList o )envT java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
fun missing_inst pos env inst =
(ase filter_out(fn a _ >exists( b,_ >a )inst of
[] => ()
| bad =java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
(No for variables ^commas_quote(ap# bad)^
Position.here pos));
fun make_instT (a, pos) T = case (erm.dest_TVaro.dest_type T of
NONE=> " java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
|SOME v= ml(.rint_pairML_Syntax.rint_indexnameML_Syntaxp v)java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
"instantiation for free type variable(s) " ^ commas_quote (map #1 bad) Positionhere ); case . tjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
>error (Nota variable"^quotea^. )
| SOME v => ml ( ]=(java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
fun make_env ts = let val envT = fold Position.here pos.here ; valenv a ts[; in (envT, env) end;
fun prepare_insts pos {schematic} ctxt1 = error(Notafreetype"^quotea^ Position.ere java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 34
L.o get_tfree); val frees = map (Free o check_free ctxt1 env) inst; val (ts', (varsT, vars)) =
.ctxt1 ctxt0 ts @frees)
|> chop ljava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 val ml_insts = env Termadd_frees[; in if e )java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 21 else let(,') = make_env ts'in
missing_instT pos (subtract (eq_fst op =) envT . TFree );
missing_inst pos (subtract (eq_fst op =) val frees = map (Free o check_free ctxt1 env) in (s',( )=
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
(ml_insts, ts ml_insts = (ap2make_instTinstT varsT,map2 vars) end;schematicthen (java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
fun prepare_ml rangetxt0 (ts @ freesT @ frees)
|> chop (length ts) ||> chop (length freesT); val ml_insts = (map2 make_instT instT varsT, map2 make_inst inst vars); in if schematic then () else letval (envT', env') = make_env ts' in
missing_instT pos (subtract (eq_fst op =) envT"." ^ ml_name)); in ((ml_env, ml_body), ctxt') end; ml_argsT )=
fun m @
fun prepare_type range (((( ((l_instT ) m )@ let val T = Syntax.read_typml_range range (L_Context.truct_namectxt^""^ ml_name);
name, ctxt') = ML_Context.variant kind ctxt; val ml_env = ml ("val " ^ ml_name ^ " = ") @ ml ml1 @ ml_parens (ml ml_val) @ ml ";\n"; fun ml_body (ml_argsT, ml_args) =
ml_parens (ml ml2 @
ml_pair (ml_list_pair (ml_instT, ml_argsT), ml_list_pair (ml_inst, ml_args)) @
ml_range range (ML_Context.struct_name ctxt ^ "." ^ ml_name)); in ((ml_env, ml_body), ctxt') end;
fun prepare_beta {beta} = " " ^ Value.print_bool beta;
fun prepare_type range ((((kind, pos), ml1, ml2), schematic), s) insts ctxt = let val T = Syntax.read_typ ctxt s; val t = Logic.mk_type T; val ctxt1 = Proof_Context.augment t ctxt; val (ml_insts, T') =
prepare_insts pos schematic ctxt1 ctxt insts [t] ||> (the_single #> Logic.dest_type); in prepare_ml range kind ml1 ml2 (ML_Syntax.print_typ T') ml_insts ctxt end;
fun prepare_term read range ((((kind, pos), ml1, ml2), schematic), (s, fixes)) beta insts ctxt = let val ctxt' = #2 (Proof_Context.add_fixes_cmd fixes ctxt); val t = read ctxt' s; val ctxt1 = Proof_Context.augment t ctxt'; val (ml_insts, t') = prepare_insts pos schematic ctxt1 ctxt insts [t] ||> the_single; in prepare_ml range kind ml1 (ml2 ^ prepare_beta beta) (ML_Syntax.print_term t') ml_insts ctxt end;
fun prepare_lemma range ((pos, schematic), make_lemma) beta insts ctxt = let val (ths, (props, ctxt1)) = make_lemma ctxt val (i, thms_ctxt) = put_thms ths ctxt; val ml_insts = #1 (prepare_insts pos schematic ctxt1 ctxt insts props); val args = ml_here pos ^ prepare_beta beta; val (ml1, ml2) = if length ths = 1 then ("ML_Instantiate.get_thm ML_context", "ML_Instantiate.instantiate_thm " ^ args) else ("ML_Instantiate.get_thms ML_context", "ML_Instantiate.instantiate_thms " ^ args); in prepare_ml range "lemma" ml1 ml2 (ML_Syntax.print_int i) ml_insts thms_ctxt end;
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.