Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/HOL/Tools/Ctr_Sugar/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 24 kB image not shown  

Quelle  case_translation.ML   Sprache: SML

 
(*  Title:      HOL/Tools/Ctr_Sugar/case_translation.ML
    Author:     Konrad Slind, Cambridge University Computer Laboratory
    Author:     Stefan Berghofer, TU Muenchen
    Author:     Dmitriy Traytel, TU Muenchen

Nested case expressions via a generic data slot for case combinators and constructors.
*)


signature
sig
  val indexify_names liststring list
  val   indexify_names string -> stringlist

  datatype config = Error | Warning | Quiet
  val case_tr: bool -> Proof.context -> term list -> term
  val lookup_by_constr: Proof.context -> string * typ -> (term * term listoption
  val lookup_by_constr_permissive: Proof.context -> string * typ -> (term * term listoption
  val lookup_by_case: Proof.context -> string -> (term * term listoption
  val make_case:  Proof.context -> config -> Name.context -> term -> (term * term) list -> term
  val print_case_translations: Proof.context -> unit
  val strip_case: Proof.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Proofbooltermterm
  val show_cases: bool Config.T
  val register:    : . >string >(erm  list option
end;

 Case_TranslationCASE_TRANSLATION=
struct

(** general utilities **)

fun indexify_names names =
  let
     index( :xs =
        (case AList   strip_case:Proofcontext>bool>term> (term*( * ) ) option
          NONE>
            if member (op =) xs x
            then( ^"): (x 2 :: )
            elsex:  xstab
        | SOME i => (x ^ string_of_int i) ::end
      | index [] java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    . ( = x 

fun make_tnamesfun make_tnames           =java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  let
type_name ,)="
      | type_name
           " ] ]
       type_name   index [ java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
          let val name' = | type_name (TVar ((name, idx) ) java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
          in if Symbol_Pos.      |type_name(Type(, ))=
in(type_name ;



(** data management **)

datatype datanamesmaptype_name)end
  constrsstring term term )  Symtab,
   

fun make_data (constrs, cases) = Data   constrs  *term )  .table

structure

  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  val java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  fun merge
    (Data {constrs = constrs1, cases       .merge( )(, )  val  list  
     Data ( Data{onstrscases >make_data f(, ));
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 13
  val case_tr:bool- roofcontext-termlist->term
      Symtab.merge (K true) (cases1, cases2));
);

fun map_data f =
  Datajava.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
 map_data (,)  ,cases;
fun map_cases f = map_data (fn (constrs, cases) => (constrs, f cases));

   fn

fun T_of_data (comb, constrs : term list) =
fastype_of
  =#  ;
>;

dest_Type_name;

constrs_of=# rep_dataval register >  >. >Context.eneric
val cases_of = #cases o  

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  let
     indexify_names names 
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    (case body_typeT java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
       tyco  > lookup(op= ab yco
   ( body_type ofTypetyco )>tyco _ = NONE)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
  end;

fun lookup_by_constr_permissive ctxt (c, T) =
  let
    val tab = Symtab.lookup_list (constrs_of  inthen    (ase hint of
e| tyco=
valdefault=            = x  ) index ((, + :)
    (*conservative wrt. overloaded constructors*)
  in
    (case hint of
      NONE      | ind []           ONE> (*permissive*)
    | SOME tyco =>  d;
        ( AList. op ) 
          ljava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end

val lookup_by_case



(** installation **) val' base_namename

funval  .;

val name_of = try dest_Const_name;


(* parse translation *)

fun constrain_Abs tT t = Syntax.const \<^syntax_const>          valx,' variantjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 43

SyntaxData java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
        val consts =| ((  x ))tTs
fun s    Conststhe_constraint Consts.interns;

        fun variant_free x used =
letvalx,used java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 13
in is_constx  variant_free 'e (x' used')end;

        fun abs p tTs t =
          Syntax.const
            fold constrain_AbstTs(bsfree p t)

        funabs_pat        fun  (Const (\<^const_syntax>\<open>Pure.dummy_pattern<>,T)used
              abs_pat t(               ( )used)java.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 41
|abs_patFree(  x ))tTs
              if is_const  val (, used' = u ;
          | abs_pat             tused =(,usedjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
          abs_pat__=;

        (* replace occurrences of dummy_pattern by distinct variables *)
        fun  (Const\^><>.\<>abs_patl ]
                  . ^\open\  .   java.lang.StringIndexOutOfBoundsException: Index 112 out of bounds for length 112
in ( T,' java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
          | replace_dummies=#  ;
              let  ymtab java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
                u'used replace_dummies usedjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
              t $ u'used' java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
            t  used

                 else snd. );
              let val (l', _) = replace_dummies (
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                 const\>\>case_elem<>$.strip_positionsl' r)
              end
          | dest_case1 _ = case_error "dest_case1";

fun Constjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fun case_tr _ : x:  : ts) =

        val errt =           info>java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
      
        . \^><>\\close $errt$$
          let                  java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
fn    > \^>                 (' ) used
( )
            (Syntax.const \<^const_syntax>\<open
                   . syntax_const>_\close 
   case_tr___ =case_error"";

val _ = Theory.                         subst_bounds(map Syntax_Transmark_bound_bodyxs,)


(* print translation *)

fun            mk_clause_ xxthenvariant_free x''(x, used)endjava.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
      let
        fun mk_clause (Constfoldconstrain_Abs  (  )
               s((<^><>c> _$$ )java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
               t]( Term):mk_clausesjava.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
mk_clause\><>\close)$pat)xs _=
                      list_comb (.const \<syntax_const\        |abs_patt$u  java.lang.StringIndexOutOfBoundsException: Range [39, 33) out of bounds for length 60
subst_bounds Syntax_Trans xs,                ' "java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 71
          | vu java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
funregister raw_case_combraw_constrs | replace_dummies  =(,);
                ](.build_contextTerm t): mk_clausesu
java.lang.StringIndexOutOfBoundsException: Range [18, 10) out of bounds for length 39
      in
         (Syntaxconst <syntax_const\opencase_syntax<close $  java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
          foldr1 (fn (t, u) => Syntax.const \<^syntax_const    valconstrs=Variablepolymorphic ctxtjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
( )
      end
  | case_tr'| t=[t;

     constr_keys=   ;


(* declarations *)

fun register raw_case_comb raw_constrs context =
  let
      (old_rev
    val      = Symtab.update(, );
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
v   ;
    al =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        t)=Thm (   )))java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
    val = name_of_data ;
     update_constrs =fold(fnkey >Symtabcons_listkey Tname data) 
 Symtab.update |k_clause ( \^>\>case_elem<lose,_ $pat ) xs java.lang.StringIndexOutOfBoundsException: Index 94 out of bounds for length 94
java.lang.StringIndexOutOfBoundsException: Range [4, 5) out of bounds for length 4
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    |> map_constrs update_constrs  came from. i = ~1 indicates that the clause was                     java.lang.StringIndexOutOfBoundsException: Range [2, 0) out of bounds for length 0
    > map_cases
  end

val  .java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  (Attrib.setup \<fun (oldr1fntu  .\syntax_const>\open_<close>$java.lang.StringIndexOutOfBoundsException: Range [85, 84) out of bounds for length 90
    (.term - . . >
      fnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   combinators constructors)


(* (Un)check phases *) coltyused  java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31

    | |Quiet

  of *int


(*Each pattern carries with it a tag i, which denotes the clause it
  came from. i = ~1 indicates that the clause was added by pattern
  completion.*)


(patsval  old   . ,Tnamedata);
foldTermdeclare_free_names( :: pats@map Freeprfx;

(*try to preserve names given by user*)
fun default_name end;
  (*Go through a list of rows and pick out the ones beginning with a


(*Produce an instance of a constructor, plus fresh variables for its arguments.*)

fun fresh_constr colty used c =
  let
    val T = dest_Const_type c;
    val Ts = binder_types T;
     (fn ( as (prfx p: ),rhs (,i))) >
     ty=  T;
    val ty_theta = Type.raw_match (ty, colty) Vartab.empty
TypeTYPE_MATCH= raise  (typemismatch,~);
    val c' = Envir.subst_term_types ty_theta c;
    val gvars = map (Envir.subst_term_types ty_theta o Free) (names ~~ Ts);
  in (' gvars) end;

(*Go through a list of rows and pick out the ones beginning with a
  pattern with constructor = name.*)

fun mk_group (name, T) rows =
  letval  =java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
    map2  args
      fnelseCASE_ERRORWrongfor  ,java.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 98
        (case strip_comb p of
 args>
            if name = name' then
               ;
                (((java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                 map2 default_name names args)
               raise CASE_ERROR" number of arguments for constructor ^quote , i)
            else ((in_group, row :: not_in_group), names)
        | _         part]]=[
    rows([,[)replicate k "")|>apply2
  end;  ( :cs =


(* Partitioning *)val(in_group not_in_group,names=mk_group  c)rows;

fun partition _ _ _ _ [] = raise CASE_ERROR ("partition: no rows",                  ' fold add_row_used used;
  | partition used constructors colty res_ty                  ' =
      let
        funpart][  ]
          | part [] ((_, (_, 
          | part (c :                      Ts  fastype_ofps
              let
                (,) )=mk_group c ;
                val used' = fold add_row_used in_group used;
                val (c', gvars) = fresh_constr colty
valin_group java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
                  if null in_group
                  then
let
                      val                    ,
 =
                        Name.variants (fold Term.declare_free_names gvars usedend
                          (
in
                      [((prfx, gvars @ map Free (xs ~~ Ts)),
                        (Const (\<^const_name>\<openjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    
                  
in
                {constructor = c',
                 new_formals=,
                 names = names,
                 groupgroup = in_group} : partcsnot_in_group
                          
partrows;

fun v_to_prfx (prfx, Free v :: pats) = (v :: prfx, pats)
  | v_to_prfx _ = raise CASE_ERROR ("mk_case: v_to_prfx", ~1);


(* Translation of pattern terms into nested case expressions. *)

fun mk_case ctxt used range_ty =
  let
valget_info  ctxt;

    fun expandelserow
           name=. a used
          if
            
              val       |](_ ) tm)): )=(tag) (* Done *)
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 27
                let val           val  =map ( ) _ ) >( )  
in(,cappps(subst_free ( )], ))end
             mapexpndconstructors end
          else [row> map_constrsjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 19

end

    apfst(]>v_to_prfx  ;
      | mk                   Attrib ^\open
      |case cname cTof
| (: us( as(  )_t )=.declaration_attribute java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
let  = fn(,p: ) _ ) = p )  in
            (case Optionvalsubproblems  usedconstructorsrange_ty;
              NONE =>
                let
                  val rows' = map (fn ( val dtrees)=
                    apfst (subst_free [(                        ( ( {, , ... =
                inval  =
|SOME (, ) )=java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
(  (cname, ) java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
                  NONE =>                              if  "then ,T x)
  ,) >
                    let
                      val pty = body_typeval =mapfastype_of @[];
valused  .  used
java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 0
sin pat_recttree )
                      val (pat_rect,|  t )=
split_list( ( n, . >
                          mk (new_formals @ us) group) subproblems)
                      |__ CASE_ERROR" "~
                        map2fnnew_formalsnames..} >
                          java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if =" elses (,t)java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
(new_formals java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 25
                        subproblems dtrees;
                      val types  >
gvarsmap   xjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
                      treecase_const @u]java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
                    n  else : )
            | SOME (t, i) =>
               raise    |  > I)pat[];
          end
      | mk_  =  , p: ps) rhsas _, i))=
    end;


(*Repeated variable occurrences in a pattern are not allowed.*)funstring_of_clause(at rhs( (name, , args=
java.lang.StringIndexOutOfBoundsException: Range [12, 3) out of bounds for length 41
  nxasFree)>
      (fn xs =>
        if member op aconv xs x then
         (  "repeatedlyin thepatternjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
quote. pat))
        else x :: xs)
   | _>I)patelse(, : not_in_groupnames

fun make_case ctxt configrows(], ],replicate "" =
  let
    fun string_of_clause (end
      Syntaxjava.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
(. Syntaxconst<yntax_const\open_case1<close>,
Syntax.uncheck_terms ctxt[pat rhs]))
|>Prettystring_of

val   no_repeat_vars    val _ = map (no_repeat_vars ctxt o= raise CASE_ERROR (Not onstructor pattern, i)
    val rows = map_index      mk_case ctxt used'rangeT [x] rows
val rangeT java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
              handleCASE_ERROR (msg,) =
        [] => case_error "no clauses given"
      | [T] => T
        =>  " cases havejava.lang.StringIndexOutOfBoundsException: Range [48, 46) out of bounds for length 68
    val used
    val (tags, case_tm) =
            case ( =)tagsmap(nd  ) rows of
    (sg,i >al =  ;
          
            (                        Name.ariants(fold . gvars 'java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
               cat_linesm (string_of_clause>undefined>java.lang.StringIndexOutOfBoundsException: Range [78, 73) out of bounds for length 86
      
        [] => ()
      | is =>
           
          else
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{constructor=c'
                fun  (Const(\<const_name><open>case_abs\<new_formals=gvars,
  in
    case_tm
  end;


(* term check *) part constructorsrowsend;

fun decode_clause (Const (\<^const_name>funv_to_prfx      in decode_clause ree,T) :xs 'nd
      let val (s', used') = Name.variant s used
lause t( (', T) : ) used'end
 (Const(\^const_name><open>case_elem\<>, _ $t $u) xs =
      (subst_bounds (xs,    decode_clause _ _  case_error "decode_clause";
  | decode_clause _ _   et

fun decode_cases (Const (\<^const_name>\<open>case_nil\<close>, _java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    |decode_cases(Const(\^const_name>\opencase_cons ),(, tag)) java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
_clauset] (amebuild_contextTerm ) : u
  | decode_cases _ =             

fun check_case   =  "";
  let
    funjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          make_case     decode_case( (\<const_name                 (, :) subst_free(,capp]rhs tag))end;
            .( )(decode_cases)
      | decode_case (t $ u) = decode_case t $ decode_case u
      | decode_case (t as Abs             .elserow;
                   decode_case($  = decode_case $decode_case
          java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      | decode_case t  ;
  in
|mk [ (_ [)( tag : _= ([, tm(
  end;

           Term.absfree  ( t)end


(* Pretty printing of nested case expressions *)

(* destruct one level of pattern matching *)  (u   endjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

fun 
  caseapfst s t f
    (SOME cname, ts as java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
      
        val (fun  ctxt used=
        fun strip_abs i t =
          let
               strip_abs_vars ;
            val j = length            | SOME (Const (SOME(            | SOME (Const
xs,)
              if         strip_abst =
                 pair          java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
              else chop i zs;
                Term.absys(strip_abs_body ;
            val xs' = map (pair x) (ropj( i (( )),]
             (xs1 xs2val '' =fold.declare_free_names usedjava.lang.StringIndexOutOfBoundsException: Range [71, 72) out of bounds for length 71
inval  partition constructors  ;
        fun is_dependent i t =
            k length(             xs1,xs2   jxs
          in <0orelseexists fn >j=k );
        fun count_casesval case_functions=
|  ,( ) )  . convbody] ( ;
        val is_undefined = name_ofletval k   (( asFree( T )>  =java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
          c (,body                               ~)
        val get_info = lookup_by_case ctxtval types=mapfastype_of( @ u)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72

        (case          |count_cases(, _, ), false);
          SOME (_, constructors) =>
                                         flat,)end

                 R  xjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 56
                  let
                    val Us|mk_             (constructors =java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
                    val k =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                     p no_repeat_varsctxtpat java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
                  in
(Const,mapi  opaconvxsxthen
                  end) (constructors ~~ fs                     kjava.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 51
                cases=
                  sort (int_ord o swap o apply2                  
                    fun make_case      java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
                sort                     sort (int_ord o swap o>\<>java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
                      _=  ( ctxt) ;
                  else Free (Name                     Term R
              
                SOME (x,
                  map                  java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 16
ses of
                      SOME (_, cs) =>
                         lengthcs= constructorsthen[dcases
                         fn _ java.lang.StringIndexOutOfBoundsException: Range [24, 24) out of bounds for length 16
                    NONE
                        (case cases'else fn(,(,java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 44
                          mk_case  used rangeT[( ' cases' of
                         (,cs :| (,cs  _ =
                             cs  java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
else length   length java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
                              [hd cases, (dummy, ([], default),  [hdcases(,([], efault false
                            else
                               fnc,,_)=  opaconv csc)  @
                                [(dummy, ([], default), false)])))
                                (ummy[,default,false])java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
            else NONE[] >(java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
        >NONE
      else
  | _ =>(


(* destruct nested patterns *) elsewarningjava.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 33

funencode_clause S  (,rhs
  fold                  (in(<^><open>\\,U -  -- ) .x t end)
            Termadd_freespat[]
       (\<^>\<>\<>,S-      
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
             \const_name<>\<,(-> -(- ) - ->T java.lang.StringIndexOutOfBoundsException: Index 91 out of bounds for length 91

fun encode_cases _ S T [] = Const (
    p:)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
(>case_cons -  >-  -  - )java.lang.StringIndexOutOfBoundsException: Index 91 out of bounds for length 91
         S p$   java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 62

fun encode_case recur (t, ps as (pat,  
let
        val tT = fastype_of t;
        val T = fastype_of rhsfuns' (atjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      in
Constfun ( \^><case_guard<> _$b  u $t) =
                 . curry(aconv exppatandalso
      end
  | encode_case _ _ = case_error "encode_case"          .exists_subterm(curry(

fun strip_case' ctxt d (pat, rhs) =
  (dest_case ctxtd(.build_context(Termdeclare_free_names          (ubst_free[,pat] pat,r') clausesjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
    SOME (exp as FreeinTerm. v(ecode_caset'java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      if Term.exists_subterm (curry (op aconv) exp) | decode_case     (,clauses=> (,mapsstrip_case d)clauses)
        not    decode_case
          Term.exists_subterm ; ctxtd  java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
      java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
        maps (strip_case d mapfn(,') =>
          (subst_free [(exp, pat')] pat, rhs')) clauses)
      else [(atrhs
  |

fun strip_case ctxt d t =
  c  ctxt Name. t  of
    SOME (x, clauses) => SOME (x, maps (strip_case' ctxt d) clauses)
|(case apfst name_of ( ) of

funstrip_case_full  =
        
    SOME        vlfs            valv,t)= Term t;
      encode_casestrip_case_full d)
        (strip_case_full ctxt      |_= t);
  valzs =java.lang.StringIndexOutOfBoundsException: Range [35, 22) out of bounds for length 38
      (caseval (xs, ys) =
        t$u =>strip_case_fullctxt d t $ strip_case_full ctxtd uifj<i  (zs @
       Abs=
          let val (vfun uncheck_case ctxtctxtts=
           .absfreev  if Co  show_cases
       java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 88


(* term uncheck *)

 show_cases Attrib.  (  xs1, u, xs2);

fun uncheck_case ctxt ts =         java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 31
fn t = if  Term.type_oftthen strip_case_full  truetelse
  else ts

val _ = Context.>> (Syntax_Phases.term_uncheck    alcases        funcount_cases( _, true)= java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40


(* outer syntax commands *)

funf   val pretty_term  Syntax.retty_termctxt;
  let
val cases=mapsnd (ymtabdest( ctxt));
    valtype_space=Proof_Contextlet

val= Ujava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44

    fun pretty_data ((PrettyblockoPrettyfbreaks
      let
        val name = Tname_of_data data;
        xname= . ctxtjava.lang.StringIndexOutOfBoundsException: Range [58, 55) out of bounds for length 59
valmarkup= markup type_space name
        val             . Pretty ": :(fold_rev cases[]java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
          (Pretty.block o Pretty.fbreaks        if then . R
[Prettyblock[.mark_str markup ),Pretty.str :]
            Prettyblock Pretty "combinator:" Pretty in
            Pretty.block (Pretty.str "constructors:" :: Pretty.brk 1 ::
mappretty_termctrs)]
      in (xname, prt) end;
  in
Prettybig_listcasetranslations # (ort_by1 m pretty_datacases))java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
    |>Pretty.writeln
  end;

val _ =
  Outer_Syntax.command \<^command_keyword>\<                     NONE =>
    "print registered case combinators and constructors"
    (Scan.val _=

end

Messung V0.5
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© 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.