src/Tools/isac/Knowledge/LogExp.thy
author wneuper <Walther.Neuper@jku.at>
Wed, 11 Jan 2023 11:38:01 +0100
changeset 60650 06ec8abfd3bc
parent 60587 8af797c555a8
permissions -rw-r--r--
eliminate use of Thy_Info 12: TermC partially
neuper@37906
     1
(* all outcommented in order to demonstrate authoring:
neuper@37906
     2
   WN071203
neuper@37906
     3
*)
neuper@37954
     4
neuper@37954
     5
theory LogExp imports PolyEq begin
neuper@37906
     6
neuper@37906
     7
consts
neuper@37906
     8
neuper@37906
     9
  ln     :: "real => real"
neuper@37906
    10
  alog   :: "[real, real] => real" ("_ log _" 90)
neuper@37906
    11
neuper@52148
    12
axiomatization where
neuper@37906
    13
walther@60242
    14
  equality_pow:    "0 < a ==> (l = r) = (a \<up> l = a \<up> r)" and
walther@60242
    15
  (* this is what students   \<up> \<up> ^... are told to do *)
walther@60242
    16
  equality_power:  "((a log b) = c) = (a \<up> (a log b) = a \<up> c)" and
walther@60242
    17
  exp_invers_log:  "a \<up> (a log b) = b"
neuper@37954
    18
neuper@37954
    19
(** problems **)
wenzelm@60306
    20
wenzelm@60306
    21
problem pbl_test_equ_univ_log : "logarithmic/univariate/equation" =
wenzelm@60306
    22
  \<open>PolyEq_prls\<close>
Walther@60449
    23
  Method_Ref: "Equation/solve_log"
wenzelm@60306
    24
  CAS: "solve (e_e::bool, v_v)"
wenzelm@60306
    25
  Given: "equality e_e" "solveFor v_v"
wenzelm@60306
    26
  Where: "matches ((?a log ?v_v) = ?b) e_e"
wenzelm@60306
    27
  Find: "solutions v_v'i'"
wenzelm@60306
    28
  (*With: FIXME !? "||(lhs (Subst (v'i', v_v) e_e) - (rhs (Subst (v'i', v_v) e_e) || < eps)" *)
s1210629013@55380
    29
s1210629013@55373
    30
(** methods **)
wneuper@59545
    31
wneuper@59504
    32
partial_function (tailrec) solve_log :: "bool \<Rightarrow> real \<Rightarrow> bool list"
wneuper@59504
    33
  where
walther@59635
    34
"solve_log e_e v_v = (
walther@59635
    35
  let
walther@59635
    36
    e_e = (
walther@59637
    37
      (Rewrite ''equality_power'') #>
walther@59637
    38
      (Rewrite ''exp_invers_log'') #>
walther@59635
    39
      (Rewrite_Set ''norm_Poly'') ) e_e
walther@59635
    40
  in
walther@59635
    41
    [e_e])"
wenzelm@60303
    42
wenzelm@60303
    43
method met_equ_log : "Equation/solve_log" =
Walther@60586
    44
  \<open>{rew_ord = "termlessI", rls' = PolyEq_erls, prog_rls = Rule_Set.empty, where_rls = PolyEq_prls, calc = [],
Walther@60587
    45
    errpats = [], rew_rls = norm_Rational}\<close>
wenzelm@60303
    46
  Program: solve_log.simps
wenzelm@60303
    47
  Given: "equality e_e" "solveFor v_v"
wenzelm@60303
    48
  Where: "matches ((?a log ?v_v) = ?b) e_e"
wenzelm@60303
    49
  Find: "solutions v_v'i'"
wenzelm@60303
    50
wenzelm@60303
    51
ML \<open>
walther@60278
    52
\<close> ML \<open>
wneuper@59472
    53
\<close>
neuper@37906
    54
end