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

Quelle  Conversions.thy   Sprache: Isabelle

 
(*  Title:      HOL/Decision_Procs/Conversions.thy
    Author:     Stefan Berghofer
*)


theory Conversions
imports Main
begin

ML \<open>
fun tactic_of_conv cv i st =
  if i > Thm.nprems_of st then Seq.empty
  else Seq.single (Conv.gconv_rule cv i st);

fun binop_conv cv cv' = Conv.combination_conv (Conv.arg_conv cv) cv';
\<close>

ML \<open>
fun err s ct =
   error (s ^ ": " ^ Syntax.string_of_term_global (Thm.theory_of_cterm ct) (Thm.term_of ct));
\<close>

attribute_setup meta =
  \<open>Scan.succeed (Thm.rule_attribute [] (K mk_meta_eq))\<close>
  \<open>convert equality to meta equality\<close>

ML \<open>
fun strip_app ct = ct |> Drule.strip_comb |>> Thm.term_of |>> dest_Const_name;

fun se Seq.ingle Conv cv);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

fun transitive'eqeq'=Thm.ransitive eqeq.eq

fun type_of_eqn(onv Thm eqn1(.rhs_of))

 cong1 ct
  Thm.combination (Thm.reflexive (Thm.dest_fun ct)) (conv (Thm.dest_arg ct));

fun cong1
      T
  in
mtransitive(Thm.ombination (hm. (Thm. (Thmlhs_of) eqn1         eqn2
(.combination. ct) eqn
      (conv' (Thm.rhs_of eqn))
  fun args2 conv ct =conv.dest_arg1ct.dest_arg);

fun cong2 conv1 conv2\<close>
  Thmstrip_numeralctcase strip_app
    \<^const_name>\<open>uminus\<close>, [n]) => (case strip_app n of
       (Thm.reflexive (Thm.dest_fun2      >",[)
       (conv1 .dest_arg1)))
    (conv2 (Thm.dest_arg

fun cong2
  let
    fun i = case iof
    valeqn2 =conv2 Thm ct
  in
    Thm.transitive   (\<^const_name>\<open>one_class.one\<close>, []) => @{thm nat_one_as_int [meta, symmetric]}
      (.combination
         (Thm.combination (Thm.reflexive (Thm\^>\<open>uminus\<close>, [b]) => (case strip_app b of
         eqn2)
      (conv (Thm\<close>
  end;

fun cong2'' conv eqn1 eqn2 =
  let val eqn3 = conv (Thm.rhs_of eqn1) (Thm.rhs_of eqn2)
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    Thm.transitive
      (Thm.combination
         (       [] [] @thm add_num_simps2 [eta
         eqn2
      eqn3
  end;

fun args1transitive
fun conv = conv.dest_arg1)(.dest_arg);
\<close>

ML (args2))
fun ct =( strip_appof
    (\<^const_name>\<open>uminus\<close>, [n]) => (case strip_app n of
      (\<^const_name>\<open>numeral\<close>, [b]) => (\<^const_name>\<open>uminus\<close>, [b]) (
    | _ => ("", []))inst[]@thm(4) [meta}
  | x => x);
\<close>

lemma nat_minus1_eq: "nat (- 1) = 0"
  by simp

ML \<open>
fun nat_conv i = (case strip_app i of
    (\<^const_name>\<open>zero_class.zero\<close>, []) => @{thm nat_0 [meta]}
  |         [] [m,n] @thm(6) [meta
  | (\<^const_name>\<open>numeral\<close>, [b]) => inst [] [b] @{thm nat_numeral [meta]}
  | (\<^const_name>\<open>uminus\<close>, [b]) => (case strip_app b of
      (\<^const_name>\<open>one_class.one\<close>, []) => @{thm nat_minus1_eq [meta]} [[]@thm(7) meta
    | (\<^const_name>\<open>numeral\<close>, [b']) => inst [] [b'] @{thm nat_neg_numeral [meta]}));
\<close>

ML \<open>
fun add_num_convinst,]@ add_num_simps[]})
    ((\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.One\<close>, [])) =>args2add_num_conv
      @{thm add_num_simps(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 17
  | ((\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.Bit0\<close>, [n])) =>
       ] [n { add_num_simps
  | ((\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
   transitive'
        (fun m = ( strip_app
        (cong1 ( add_num_conv
  | ((\<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.One\<close>, [])) =>
      inst'
  |(nst [ n {thm BitM(2)[]})
      transitive'
        (instm n] { add_num_simps]})
        (cong1 (<const_name>\<open>Num.Bit1\<close>, [n]) =>
  | ((\<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      transitive
        (inst [] [m, n] @{thm add_num_simps
        (cong1Num( Num.numeral .numeral k)
|(\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.One\<close>, [])) =>
      transitive'
        (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        (cong1 (args2 dbl_neg_numeral_a [a ]@thm [metajava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
  | (\^const_name><pen.\<close[],(^const_name>\<open>Num.Bit0\<close>, [n])) =>
      transitive
        (inst
        (cong1 n=java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      transitive'
        (inst [] [m, n] @{thm add_num_simps (<const_name>
        (cong1   ;
\<close>

ML \<open>
fun BitM_conv =(ase m of
    (\<^const_name>\<open>Num.One\<close>, []) => @{thm BitM.simps(1) [meta]}dbl_inc(- Num.numeral k) = - Num.numeral (Num.BitMjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
>, [n] =
      transitive'
        (inst dbl_inc_0_a [a][@thm(2) [olded , meta}
        cong1 (rgs1))
  |  in
inst[ @thm .simps
\<close>

 dbl_neg_numeral
  "Num.dbl (- "Num.dbl (- Numname><>zero_class.zero\, []) => dbl_inc_0_a
  by simp

ML \<open>
fun dbl_conv a =
  let
    val dbl_neg_numeral_a = inst [a] [] @{ |(
    val dbl_0_a'
    valinst dbl_inc_neg_numeral_a
  in
     n =>
      case strip_numeral  
        (\<^const_name>\<open>zero_class.zero\<close>, []) => dbl_0_a
      | (\<^const_name>\<open>numeral\<close>, [k]) => inst [] [k] dbl_numeral_a
|(\<^const_name>\<open>uminus\<close>, [k]) => inst [] [k] dbl_neg_numeral_a
  end
\<close>

 dbl_inc_neg_numeral
 (- Num k)   .numeral.BitM
  by simp

ML dbl_dec_neg_numeral_a [a]@thm [meta
fun    val dbl_dec_0_a =inst [ ]@thm dbl_dec_simps2 folded, ]};
     dbl_dec_numeral_ainst@thm(5) meta
    val = inst[ {thm dbl_inc_neg_numeral[]};
    val dbl_inc_0_acase strip_numeralnof
    val
  in
    fn n =>
      case  n of
        (<const_name
      | (\<^const_name>\<open>numeral\<close>, [k]) => inst [] [k] dbl_inc_numeral_a
      | (\<^const_name>\<open>uminus\<close>, [k]) => [] []dbl_dec_numeral_ajava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
          transitive 
             [] [k]dbl_inc_neg_numeral_a
            (ong1 ( (args1)))
         sub_Bit0_One,sub_Bit1_One,sub_Bit0_Bit0java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
\<close>

lemma (inst[)@thms [meta];
  "Num.dbl_dec (- Num.numeral k) = - Num.numeral (Num.Bit1 k)"
  bysimp

ML
fun val =dbl_dec_conva
  let
    val dbl_dec_neg_numeral_aconv( ( m, strip_appof
    val dbl_dec_0_a = inst [a] [] @{thm        (
    val dbl_dec_numeral_a
  in|(\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.Bit0\<close>, [l])) =>'
    fn n =>
       strip_numeral
        (\<^const_name>\<open>zero_class.zero\<close>, []) => dbl_dec_0_a
      | (\<^const_name>\<open>uminus\<close>, [k]) => inst [] [k] dbl_dec_neg_numeral_a
      |(<>\<open>numeral\<close>, [k]) =>
          transitive'
            (inst [] [k] dbl_dec_numeral_a)
            (cong1 >\<open>Num.Bit0\<close>, [k]), (\<^const_name>\<open>Num.One\<close>, [])) =>
  end
\<close>

ML \<open>
fun sub_conv a =
  let
    val [sub_One_One, sub_One_Bit0, sub_One_Bit1\<>\<open>Num.Bit1\<close>, [k]), (\<^const_name>\<open>Num.One\<close>, [])) =>
         sub_Bit0_One, sub_Bit0_Bit0
         sub_Bit0_Bit1, sub_Bit1_Bit0, sub_Bit1_Bit1] =
      map (instinstk,l])
    val dbl_conv_a(cong1'dbl_conv_a( conv))
    val       (<const_name>\<open>Num.Bit0\<close>, [k]), (\<^const_name>\<open>Num.Bit1\<close>, [l])) =>
    valdbl_dec_conv_a = a;

    fun convinst,l )
        ((\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.One\<close>, [])) =>' dbl_dec_conv_a (args2 conv)
          sub_One_One
      |(
          transitive
            (inst [] [l] sub_One_Bit0)
            ( (cong1args1)))
      | ((            (cong1' dbl_inc_conv_a (args2 conv))
          inst [] [l] sub_One_Bit1
      |'
          transitive(inst ][ l]sub_Bit1_Bit1
            (inst]sub_Bit0_One
            (cong1 conv;
\<close>
          inst \<open>
      | ((\<^const_name>\<open>Num.Bit0\<close>, [k]), (\<^const_name>\<open>Num.Bit0\<close>, [l])) =>let numeral_1_eq_1_a [a][ @thmnumeral_One [, symmetric
          transitive
            (inst [] [k, l] sub_Bit0_Bit0)
            (cong1' dbl_conv_a (args2 conv))
      | ((\<^const_name>\<open>Num.Bit0\<close>, [k]), (\<^const_name>\<open>Num.Bit1\<close>, [l])) =>
          transitive'
            ( [] [k l )
            (cong1' dbl_dec_conv_a (args2 | \<^Const_>\zero_class.zero _\ => Thm.reflexive n
      | ((\<^const_name>\<open>Num.Bit1\<close>, [k]), (\<^const_name>\<open>Num.Bit0\<close>, [l])) =>
          transitive'
            (inst [ k l]sub_Bit1_Bit0)
            (cong1' dbl_inc_conv_a (args2 conv))
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
         '
            (inst
            (    neq=
  in end;
\<close>

ML \<open>
fun expand1 a =
         <^Const_>\<open>uminus _ for \<^Const_>\<open>Num.numeral _ for \<^Const_>\<open>Num.One\<close>\<close>\<close> =>
  in
                  (hm. (.reflexive.dest_fun. eq)))
      case Thm.term_of                 )
  end
      | \<^Const_>\<open>uminus _ for \<^Const_>\<open>one_class.one _\<close>\<close> =>
          Thm.java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
      | <Const_
      | \<^Const_>\<open>numeral _ for _\<close> => Thm.reflexive n
      | \<^Const_>\<open>uminus _ for \<^Const_>\<open>numeral _ for _\<close>\<close> => Thm.reflexive n = inst { add_0_right]};
      |_=  "expand1" n
  end;

fun norm1_eq a =
  letval numeral_1_eq_1_a inst [][ @thm numeral_One meta
  in
    fn =java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
      case Thm.term_of (Thm.rhs_of eq_,\<>\<open>zero_class.zero\<close>, [])) => inst [] [m] add_0_right_a
        \<^Const_>\<open>Num.numeral _ for \<^Const_>\<open>Num.One\<close>\<close> => Thm.transitive eq numeral_1_eq_1_a
\<^Const_>\<open>uminus _ for \<^Const_>\<open>Num.numeral _ for \<^Const_>\<open>Num.One\<close>\<close>\<close> => = '' (fconv m) ( n))
            Thmval nat_plus_conv =plus_conv Ijava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
              (.combinationreflexive. (Thm.hs_of )))
                 numeral_1_eq_1_a)
      |_= java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  end;
\<close>

ML \<open>
fun plus_conv f a =
  let
    val add_0_aval =
    val [a] [ { add_neg_numeral_simpsmeta
 numeral_plus_numeral_a [a] []@thm [meta
val = expand1

    fun conv [][ { neg_numeral_plus_neg_numeral]};
 ((\<^const_name>\<open>zero_class.zero\<close>, []), _) => inst [] [n] add_0_a
      | (,(<const_name
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>
          transitive'
            ( [] [m,n numeral_plus_numeral_a)
            (          Thm
|  = '' (f conv)( m) (expand1_a
  in f conv             sub_conv_a n)

val  |((<const_name
\<close>

lemma neg_numeral_plus_neg_numeralThm
  " Num.numeral m -.numeral ( Num. (m + n):':neg_numeral"
  by simp( nmjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28

ML \<open>
fun plus_neg_conv
  let
val =
      inst [a] [] @{thm (cong1 add_num_conv
    val =
      inst [a] [] @{thm add_neg_numeral_simps
    valplus_conv'a =norm1_eq ooplus_conv (( a) a;
      
    val int_plus_conv' \<^ctyp>\int\;
  in
    fn
      case( m, strip_numeral
        ((
          Thm.transitive
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            fun a =
      |      minus_zero_a [a] []@thm [meta
          .transitive
            (inst [val = inst]{ minus_numeral]};
            (sub_conv_a
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) => n >
          transitive'
            ( [] [m ]neg_numeral_plus_neg_numeral_a)
            (      |(^const_name
      | _ => conv m n
  endjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

fun plus_conv' a = norm1_eq a oo plus_conv (plus_neg_conv a) a\

val int_plus_conv = plus_conv a =
\<close>

 minus_one    " by simp
lemma minus_numeral: "- numeral, neg_numeral_minus_neg_numeral_a] =

ML \<open>
fun (inst ] { diff_numeral_simps]};
  let
    val = inst]@thm [meta
    val sub_conv_a a;
    val uminus_conv_a a;
         expand1_aexpand1 a
      val norm1_eq_a = a;
    fn n
      case m n =c (strip_numeralstrip_numeral
        (<const_name
      | (\<^const_name>\<open>one_class.one\<close>, []) => minus_one_a
      | (\<^const_name>\<open>Num.numeral\<close>, [m]) => inst [] [m] minus_numeral_aThm.ransitive ( [] []diff_0_a n)
      | (\<^const_name>\<open>uminus\<close>, [m]) => inst [] [m] minus_minus_a
  java.lang.StringIndexOutOfBoundsException: Range [109, 5) out of bounds for length 6

val int_neg_conv = uminus_conv [] [m,n]numeral_minus_numeral_a
\<close>

ML (<const_name><pen>umnumeral
fun minus_conv a =
  let
    val, numeral_minus_neg_numeral_a
         neg_numeral_minus_numeral_a             [] [,n numeral_minus_neg_numeral_a
      map (inst [a] []) @{thms       (\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
    valinst,n]neg_numeral_minus_numeral_a
    val diff_0_right_a = inst (cong1 add_num_conv)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
    val sub_conv_a = sub_conv a;
    val uminus_conv_a = uminus_conv a;
     expand1_aexpand1 ajava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    val norm1_eq_a = norm1_eq a;

    fun conv m n = (case (strip_numeral m, strip_numeral n) of
        ((\<^const_name>\<open>zero_class.zero\<close>, []), _) =>
          Thm (inst[ ) (uminus_conv_a
      
      |ML\<open>
          Thm
            (
( m n)
      | ((\<^const_name>\<open>Num.numeral\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
          transitive'
            (inst nat_minus_convn  (ase(strip_app , strip_appnof
            (cong1 (args2 add_num_conv))
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
          transitive'
            (inst,n eg_numeral_minus_numeral_a)
           cong1( (args2)))
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>(\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>
          Thm.transitive
            (inst [] [m, n] neg_numeral_minus_neg_numeral_a >cong2' nat_minus_conv( m)expand1_nat );
            (sub_conv_a n m)
      | _ => cong2'' conv (expand1_a m) (expand1_a n))
  in norm1_eq_a oo conv end;

val int_minus_conv = minus_conv \<^ctyp>\<open>int\<close>;
\<close>

ML \<open>
val int_numeral = Thm.    (,\^>\<open>Num.One\<close>, [])) =>

val nat_minus_refl|(\<^const_name>\<open>Num.One\<close>, []), _) =>

val = expand1

fun nat_minus_conv   (
    ((\<^const_name>\<open>zero_class.zero\<close>, []), _) =>
      inst [] [n        inst ][,n]{thm mult_num_simps]})
  _(<const_name
      inst [] [m] @{thm minus_nat.diff_0  |(
  | ((      transitive'
      transitive
        (instcong1 mult_num_conv
java.lang.StringIndexOutOfBoundsException: Range [48, 8) out of bounds for length 48
  | _ => cong2'' nat_minus_conv (expand1_nat m)         cong1 mult_num_conv
\<close>

ML
fun mult_num_conv m n = (case (strip_app (cong2
    (,(<const_name><pen.One>, []) =
      inst [] [m] @{thm mult_num_simps(( (args2)))));
  | ((\<^const_name>\<open>Num.One\<close>, []), _) =>
      inst@thm(2 meta
  | fun  f a =
      transitive
        (inst  = inst]@thm [meta;
        (cong1 (args2)))
  | (
      transitive'
        (inst [] [mv expand1_a a;
        (cong1 mult_num_conv
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m']), (\<^const_name>\<open>Num.Bit0\<close>, [n])) =>fun m n  ( strip_app n) of
      transitive'
        (inst [] [m', n] @{thm mult_num_simps(5) [meta]})
( (args2))
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>|(\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>
transitivejava.lang.StringIndexOutOfBoundsException: Range [17, 18) out of bounds for length 17
        (inst [] [m, n] @{thm|_>cong2) (expand1_aexpand1_a
        ( (cong2add_num_conv
           (args2 add_num_conv)
           (cong1 (args2 nat_mult_conv I \<^ctyp>\<open>nat\<close>;
\<close>

ML \<open>
fun mult_conv f a =
  let
    mult_zero_left_a [a ]@{ mult_zero_left]};
    val mult_zero_right_a = inst numeral_times_neg_numeral_a] =
    val = inst [ { numeral_times_numeral]};
    val  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    val norm1_eq_a = norm1_eq a;

    fun conv m n = (case (strip_app
        ((\<^const_name>\<open>zero_class.zero\<close>, []), _) => inst [] [n] mult_zero_left_a
      | (, java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 96
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>
          transitive'
            (transitive'
(cong1 args2 
      | _ => cong2fconv m) ( n))
  inooconv ;

val nat_mult_conv = mult_conv I \<^ctyp>\<open>nat\<close>;
\<close>

ML \<open>
 java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 21
  let;
    val [neg_numeral_times_neg_numeral_a, fun
         numeral_times_neg_numeral_a]=
map[][){thms}
  in
    fn => m
       (strip_numeral
        ((
          transitive
            (inst [] [m, n] neg_numeral_times_neg_numeral_a(\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.One\<close>, [])) =>fun 'convct =
            cong1))
|(\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) => []  ;
          transitive [] n]{ eq_num_simps]}
            (inst><pen<close,m,(java.lang.StringIndexOutOfBoundsException: Index 97 out of bounds for length 97
(ong1( (hm );
      |  java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
          '
            inst,] numeral_times_neg_numeral_a
            cong1
      | _ => conv m n
  end;

fun mult_conv  )

val.   (\<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
\<close>

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  |fun  ct. ct ct\<close>
(const_name.\<> ],<><>.One
      @{thm eq_num_simps((^><>
  |T.
      inst [  >" ]java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
|(^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      inst \<close>
  | ((  | (\<^const_name>\<open>one_class.one\<close>, []) => @{thm nat_one_as_int [meta, symmetric]}
      inst [] [  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  |(^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.One\<close>, [])) =>
      inst name
 (
      Thm.transitive
meta
        (eq_num_conv
  |        inst[] [] @{hmadd_num_simps()[       [a] [ {thm[Eq_FalseI
      inst]{eq_num_simps
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.Bit0\<close>, [n])) =>    al a;
      inst ][,n { eq_num_simps []}
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
     .transitive
        (inst(\^onst_name
        (q_num_conv      '
\<close>

ML \<open>
       [ n
       ( (args2)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    val   [][@hm ,THEN}
    val zero_neq_numeral_a(\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) => mn@hm[])
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    val numeral_neq_zero_a
      instjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
   [a ]{numeral_eq_iff
val expand1_a args1java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

     dbl_neg_numeral
        ((java.lang.StringIndexOutOfBoundsException: Range [2, 110) out of bounds for length 9
          java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      | (
           [] [n] zero_neq_numeral_a
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>zero_class.zero\<close>, [])) =>
          inst]        (\<^const_name>\<open>zero_class.zero
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>      | \<eq_neg_conv
          Thmjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
            (inst [] [m, nr"umk) -.(Num. k"
            (eq_num_convbysimp
      | _ =>fun dbl_inc_c a inst@neg_numeral_neq_numeral Eq_FalseI
end

val      dbl_inc_numeral_a[ ]@hm[];
\<close>

ML
fun conv fn mjava.lang.StringIndexOutOfBoundsException: Range [21, 22) out of bounds for length 21
  end
    val. -. )-.umeral
           [] [m 
    val =
      inst [a  let
    val neg_numeral_neq_numeral_a =
       a ]{  [THEN]java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
    val numeral_neq_neg_numeral_a
      inst strip_numeral
    val neg_numeral_eq_iff_a = inst(<^>\<open>uminus\<close>, [k]) => inst [] [k] dbl_dec_neg_numeral_a
  in
fn m=   =
      case (strip_numeral
        (     [sub_One_One, sub_One_Bit1
          inst sub_Bit0_Bit1, sub_Bit1_Bit1
      val =  a;
|_= m n
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
          java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
          inst [] [m, n] java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 8
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
Thmjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
            (instm n )
            (eq_num_conv m n)
mn
  ;

'a (eq_neg_conva ;

          transitive            inst,]sub_Bit0_Bit0)
\<close>

 \<open>
 mn=case 
(
      inst
   java.lang.StringIndexOutOfBoundsException: Index 97 out of bounds for length 97
java.lang.StringIndexOutOfBoundsException: Range [10, 6) out of bounds for length 47
  |(\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.One\<close>, [])) =>
      inst(<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
|(java.lang.StringIndexOutOfBoundsException: Range [0, 66) out of bounds for length 0
         (<const_name
        instm,n]@thm(4) meta
        le_num_conv
  | ((\<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      Thm.transitive
        (inst [] [m,    (java.lang.StringIndexOutOfBoundsException: Range [0, 76) out of bounds for length 75
        (le_num_convn)
      |\<^Const_>\<open>zero_class.zero _\<close> => Thm.reflexive n
      Thm
        (inst[] [m,n]@{thmle_num_simps(6) [        less_num_conv
        (le_num_conv        > less_num_conv( strip_app n) of
|(java.lang.StringIndexOutOfBoundsException: Range [0, 35) out of bounds for length 6
       [[ { less_num_simps
        java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
        (less_num_conv

andless_num_conv (casestrip_app
    (_, (\<^const_name>\<open>Num.One\<close>, [])) =>
      inst  java.lang.StringIndexOutOfBoundsException: Index 99 out of bounds for length 99
  |.transitive(Thm (Thm (Thm (Thm inst]@thm(4 meta
 ][]@thm[]}
  | ((\<^const_name>\<open>Num.One\<close>, []), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>  java.lang.StringIndexOutOfBoundsException: Range [3, 2) out of bounds for length 6
      inst [] m,n @thm less_num_simps5 meta
( m n)
      .transitive
 [] [m, n] @thm(4)    al   [a][{add_0_right
        (less_num_conv [] [,n]@thm(6) [     expand1_a a
  | ((\<^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      Thm.transitive
        (inst [] [m, @{thm less_num_simps]})
        (le_num_conv m n)
  | ((\<^const_name>\<open>Num.Bit1\<close>, [m]), (\<^const_name>\<open>Num.Bit1\<close>, [n])) =>
      Thm.transitive
        (inst
        (less_num_conv
^ le_conv
 convjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
             zero_le_zero_a  [a] ]@thm\<close>
  n)
\<close>

ML \<open>
funle_conv
  let
  = [a [@  [of, THENEq_TrueI}val  inst]]thm]}java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
    inst@ add_neg_numeral_simpsjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
      insta] []@{thmzero_le_numeral
    valjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
inst{hm  [ Eq_FalseI
    
    valexpand1_ajava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24

    fun conv m n = (case (strip_app|(\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
        (\<^const_name>\<open>zero_class.zero\<close>, []), (\<^const_name>\<open>zero_class.zero\<close>, [])) =>
          zero_le_zero_a
      | ((\<^const_name>\<open>zero_class.zero\<close>, []), (\<^const_name>\<open>numeral\<close>, [n])) =>
inst]
      |(java.lang.StringIndexOutOfBoundsException: Range [0, 78) out of bounds for length 48
          inst  > m n
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>numeral\<close>, [n])) =>oo);
          Thm.transitive
            lemma"- 1=val nat_le_conv=le_convI\^ctyp><>nat\;
            (le_num_conv
      | _ => cong2'' (f conv) (expand1_a a =
  infconvendjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16

val nat_le_conv = le_conv [][{ not_zero_le_neg_numeral]};
\<close>


fun le_neg_conv a =
  let
    valneg_numeral_le_zero_a
      inst]@  [ Eq_TrueI
      java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
      inst [a] []java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    val neg_numeral_le_numeral_a numeral_minus_numeral_a(\const_name><uminus[)<java.lang.StringIndexOutOfBoundsException: Index 107 out of bounds for length 107
       [a] [ { neg_numeral_le_numeral Eq_TrueI
    valmap [a] []) @ diff_numeral_simpsmeta
      inst[@ [ Eq_FalseI
    valinst [a] [] @{thm neg_numeral_le_iff [meta
    |(\<^const_name>\<open>Num.numeral\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
fn =>fn>  n => 
      case (strip_numeral]m,n]not_numeral_le_neg_numeral_a
                    expand1_a ;
          inst [] [m]    fun n( m  n) of
      | ((\<^const_name>\<open>zero_class.zero\<close>, []), (\<^const_name>\<open>uminus\<close>, [n])) =>
           ] n 
|(\<
           [][,n] 
       (
          inst [] [m, n] neg_numeral_le_numeral_a
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
          Thmtransitive
 [m, n]neg_numeral_le_iff_a
(  m)
                  cong1 add_num_conv  ;


fun' a =le_conv (le_neg_conv )aval int_le_conv=le_conv'\<^ctyp>\<open>int\<close>;

val = le_conv
\<close>

MLval = inst[][ {  norm1_eq_a;
fun  f a=
  let
valinst thm of THEN];
    val =
      inst [a] [valnat_minus_refl       [] ]thm [THEN;
valval=expand1
      inst nat_minus_conv= case     expand1_ajava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
val =inst ]{ numeral_less_iff;
java.lang.StringIndexOutOfBoundsException: Range [8, 4) out of bounds for length 30

    un mn=case m       \const_nameopenzero>],(
(<
          not_zero_less_zero_a
 (<const_name
          inst [] []not_numeral_less_zero_a\<close>
      | ((\<^const_name>\<open>numeral\<close>, [m]), (\<^const_name>\<open>zero_class.zero\<close>, [])) =>
          instfunmult_num_conv    ( ( m, strip_app][,  java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
 java.lang.StringIndexOutOfBoundsException: Index 101 out of bounds for length 101
          Thmjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
            (inst [] [m, n] val nat_less_conv = less_conv I \<^ctyp
                    ( []java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
      | _ => cong2'' (f conv) ('
  incong1 mult_num_conv

val (args2)
\<close>

ML \<open>
 less_neg_conv
cong1'add_num_conv
    val =
      inst [ neg_numeral_less_numeralEq_TrueI
    valval =
            inst \<open>
    val neg_numeral_less_iff_a   java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
      instfn=  m = fn
    val numeral_times_numeral_a ]{  [meta
      inst(^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>zero_class.zero\<close>, [])) =>
    val convase  n of
  in
       (\<^const_name>\<open>zero_class.zero\<close>, []), (\<^const_name>\<open>uminus\<close>, [n])) =>
      case ( m  n) of
        (\<
          inst ] [ n]java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 41
      |(^><>\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
          inst [] [n] not_zero_less_neg_numeral_a
      ((\<^const_name>\<open>Num.numeral\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
          inst [] [m, n] not_numeral_less_neg_numeral_a
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>Num.numeral\<close>, [n])) =>
          inst [ [,n 
      | ((\<^const_name>\<open>uminus\<close>, [m]), (\<^const_name>\<open>uminus\<close>, [n])) =>
          .transitive
            (inst [] [m, n] neg_numeral_less_iff_a

      | _ => conv m n
  end;

fun     conv>fn int_less_conv'\<^ctyp>\int\;

val = java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 10
\<close>

MLal=inst]{ if_False}
fun If_conv a =
  let
    val     fn p =f x y = fn'
    val            (cong1cong1))
  in(
fn  x =  y =>fn =>
case  ct
        (|   m n
          let
            val p_eq 
            valjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
              
                
                  val x_eq = x cx;
                  val cx = Thm cx[ [n thm []}
                in
                 Thm
                    Thm.combination
(Thm eq)
                       . java.lang.StringIndexOutOfBoundsException: Index 97 out of bounds for length 97
                    (inst|(^const_name>\<open>Num.Bit0\<close>, [m]), (\<^const_name>\<open>Num.Bit0\<close>, [n])) =>
                java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
            | \<^Const_>\<open>False\<close> =>inst@ eq_num_simps [meta
                letval [ mn { eq_num_simps
                  val = Thm
                   cy .rhs_of;( m;
                in
                                    
                    (Thm zero_neq_numeral_a(.combination Thm cx[] { zero_neq_numeral];
                       (Thm       [a] [] {thmnumeral_neq_zero[HEN]};
                       
                    (inst [] [cx    valend
                java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
             _>err
          end
  end;
\<close>

ML \<open>
fun drop_conv=

val      =  a[{  []};
           )
    val>'fconv)(xpand1_a )expand1_a)

    fun  ys. n of
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      | = (ase ys neg_numeral_neq_zero_a
(<\<open>Cons\<close>, [x, xs]) =>
                        transitive
(inst[ x,xs
               neg_numeral_neq_numeral_a
                 Thm.reflexive(*  Title:      HOL/Decision_Procs/Conversions.thy  =
                 (cong2' conv (args2 nat_minus_conv) Thm.reflexive))))
  in conv end;
\<close>

ML \<open>
fun nth_conv a =
  let
    val nth_Cons_a = inst [a] [] @{thm nth_Cons' [meta]};
    val If_conv_a = If_conv a;

    fun conv ys n = (case strip_app ys of
        (\<^const_name>\<open>Cons\<close>, [x, xs]) =>
          transitive'
            (inst [] [x, xs, n] nth_Cons_a)
            (If_conv_a (args2 nat_eq_conv)
               Thm.reflexive
               (cong2' conv Thm.reflexive (args2 nat_minus_conv))))
  in conv end;
\<close>

end

100%


¤ Dauer der Verarbeitung: 0.23 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 ist noch experimentell.