src/Tools/isac/IsacKnowledge/Atools.thy
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 12 Aug 2010 11:02:32 +0200
branchisac-update-Isa09-2
changeset 37906 e2b23ba9df13
child 37943 ab57fbfcfffd
permissions -rw-r--r--
moved isac + test to final dire-structure
neuper@37906
     1
(* tools for arithmetic
neuper@37906
     2
   author: Walther Neuper 010308
neuper@37906
     3
neuper@37906
     4
remove_thy"Atools";
neuper@37906
     5
use_thy"IsacKnowledge/Atools";
neuper@37906
     6
use_thy"IsacKnowledge/Isac";
neuper@37906
     7
neuper@37906
     8
use_thy_only"IsacKnowledge/Atools";
neuper@37906
     9
use_thy"IsacKnowledge/Isac";
neuper@37906
    10
*)
neuper@37906
    11
neuper@37906
    12
neuper@37906
    13
Atools = ComplexI + Descript +
neuper@37906
    14
neuper@37906
    15
(*-------------------- consts------------------------------------------------*)
neuper@37906
    16
consts
neuper@37906
    17
neuper@37906
    18
  Arbfix, Undef    :: real
neuper@37906
    19
  dummy            :: real
neuper@37906
    20
neuper@37906
    21
  some'_occur'_in  :: "[real list, 'a] => bool" ("some'_of _ occur'_in _")
neuper@37906
    22
  occurs'_in       :: "[real     , 'a] => bool" ("_ occurs'_in _")
neuper@37906
    23
neuper@37906
    24
 "pow"   :: [real, real] => real    (infixr "^^^" 80)
neuper@37906
    25
(* ~~~ power doesn't allow Free("2",real) ^ Free("2",nat)
neuper@37906
    26
                           ~~~~     ~~~~    ~~~~     ~~~*)
neuper@37906
    27
(*WN0603 at FE-interface encoded strings to '^', 
neuper@37906
    28
	see 'fun encode', fun 'decode'*)
neuper@37906
    29
neuper@37906
    30
  "abs"   :: real => real            ("(|| _ ||)")
neuper@37906
    31
(* ~~~ FIXXXME Isabelle2002 has abs already !!!*)
neuper@37906
    32
  "absset":: real set => real        ("(||| _ |||)")
neuper@37906
    33
  (*is numeral constant ?*)
neuper@37906
    34
  "is'_const" :: real => bool        ("_ is'_const" 10)
neuper@37906
    35
  (*is_const rename to is_num FIXXXME.WN.16.5.03 *)
neuper@37906
    36
  "is'_atom"  :: real => bool        ("_ is'_atom" 10)
neuper@37906
    37
  "is'_even"  :: real => bool        ("_ is'_even" 10)
neuper@37906
    38
		
neuper@37906
    39
  (* identity on term level*)
neuper@37906
    40
  "ident"     :: ['a, 'a] => bool    ("(_ =!=/ _)" [51, 51] 50)
neuper@37906
    41
neuper@37906
    42
  "argument'_in"    :: real => real ("argument'_in _" 10)
neuper@37906
    43
  "sameFunId"       :: [real, bool] => bool (**"same'_funid _ _" 10
neuper@37906
    44
	WN0609 changed the id, because ".. _ _" inhibits currying**)
neuper@37906
    45
  "filter'_sameFunId":: [real, bool list] => bool list 
neuper@37906
    46
					("filter'_sameFunId _ _" 10)
neuper@37906
    47
  "boollist2sum"    :: bool list => real
neuper@37906
    48
neuper@37906
    49
(*-------------------- rules -------------------------------------*)
neuper@37906
    50
rules (*for evaluating the assumptions of conditional rules*)
neuper@37906
    51
neuper@37906
    52
  last_thmI	"lastI (x#xs) = (if xs =!= [] then x else lastI xs)"
neuper@37906
    53
  real_unari_minus           "- a = (-1) * a"
neuper@37906
    54
neuper@37906
    55
  rle_refl                  "(n::real) <= n"
neuper@37906
    56
(*reflI                     "(t = t) = True"*)
neuper@37906
    57
  radd_left_cancel_le       "((k::real) + m <= k + n) = (m <= n)"
neuper@37906
    58
  not_true                  "(~ True) = False"
neuper@37906
    59
  not_false                 "(~ False) = True"
neuper@37906
    60
  and_true                  "(a & True) = a"
neuper@37906
    61
  and_false                 "(a & False) = False"
neuper@37906
    62
  or_true                   "(a | True) = True"
neuper@37906
    63
  or_false                  "(a | False) = a"
neuper@37906
    64
  and_commute               "(a & b) = (b & a)"
neuper@37906
    65
  or_commute                "(a | b) = (b | a)"
neuper@37906
    66
neuper@37906
    67
  (*.should be in Rational.thy, but: 
neuper@37906
    68
   needed for asms in e.g. d2_pqformula1 in PolyEq.ML, RootEq.ML.*)
neuper@37906
    69
  rat_leq1	          "[| b ~= 0; d ~= 0 |] ==> \
neuper@37906
    70
			  \((a / b) <= (c / d)) = ((a*d) <= (b*c))"(*Isa?*)
neuper@37906
    71
  rat_leq2	          "d ~= 0 ==> \
neuper@37906
    72
			  \( a      <= (c / d)) = ((a*d) <=    c )"(*Isa?*)
neuper@37906
    73
  rat_leq3	          "b ~= 0 ==> \
neuper@37906
    74
			  \((a / b) <=  c     ) = ( a    <= (b*c))"(*Isa?*)
neuper@37906
    75
neuper@37906
    76
end