src/Tools/isac/Knowledge/Inverse_Z_Transform/Inverse_Z_Transform.thy
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 22 Sep 2011 14:24:34 +0200
branchdecompose-isar
changeset 42279 e2759e250604
parent 42278 753c1a5fe3aa
permissions -rwxr-xr-x
made Build_Inverse_Z_Transform.thy run

Build_Inverse_Z_Transform.thy imports Isac.thy for CalcTreeTEST;
Since Isac.thy has Inverse_Z_Transform.thy already as a subtheory
Build_..thy only mimics the process of building the knowledge for a new problem.
neuper@42256
     1
(* Title:  Test_Z_Transform
neuper@42256
     2
   Author: Jan Rocnik
neuper@42256
     3
   (c) copyright due to lincense terms.
neuper@42256
     4
12345678901234567890123456789012345678901234567890123456789012345678901234567890
neuper@42256
     5
        10        20        30        40        50        60        70        80
neuper@42256
     6
*)
neuper@42256
     7
neuper@42278
     8
theory Inverse_Z_Transform imports PolyEq DiffApp begin
neuper@42256
     9
neuper@42256
    10
axiomatization where 
neuper@42256
    11
  rule1: "1 = \<delta>[n]" and
neuper@42256
    12
  rule2: "|| z || > 1 ==> z / (z - 1) = u [n]" and
neuper@42256
    13
  rule3: "|| z || < 1 ==> z / (z - 1) = -u [-n - 1]" and 
neuper@42256
    14
  rule4: "|| z || > || \<alpha> || ==> z / (z - \<alpha>) = \<alpha>^^^n * u [n]" and
neuper@42256
    15
  rule5: "|| z || < || \<alpha> || ==> z / (z - \<alpha>) = -(\<alpha>^^^n) * u [-n - 1]" and
neuper@42256
    16
  rule6: "|| z || > 1 ==> z/(z - 1)^^^2 = n * u [n]"
neuper@42256
    17
neuper@42256
    18
axiomatization where
neuper@42256
    19
  ruleZY: "(X z = a / b) = (X' z = a / (z * b))"
neuper@42256
    20
neuper@42279
    21
subsection{*Define the Field Descriptions for the specification*}
neuper@42279
    22
consts
neuper@42279
    23
  filterExpression  :: "bool => una"
neuper@42279
    24
  stepResponse      :: "bool => una"
neuper@42279
    25
neuper@42256
    26
subsection{*Define the Specification*}
neuper@42256
    27
ML {*
neuper@42256
    28
val thy = @{theory};
neuper@42278
    29
neuper@42256
    30
store_pbt
neuper@42256
    31
 (prep_pbt thy "pbl_SP" [] e_pblID
neuper@42256
    32
 (["SignalProcessing"], [], e_rls, NONE, []));
neuper@42256
    33
store_pbt
neuper@42256
    34
 (prep_pbt thy "pbl_SP_Ztrans" [] e_pblID
neuper@42256
    35
 (["Z_Transform","SignalProcessing"], [], e_rls, NONE, []));
neuper@42256
    36
store_pbt
neuper@42256
    37
 (prep_pbt thy "pbl_SP_Ztrans_inv" [] e_pblID
neuper@42256
    38
 (["inverse", "Z_Transform", "SignalProcessing"],
neuper@42278
    39
  [("#Given" ,["filterExpression (X_eq::bool)"]),
neuper@42278
    40
   ("#Find"  ,["stepResponse (n_eq::bool)"])
neuper@42256
    41
  ],
neuper@42256
    42
  append_rls "e_rls" e_rls [(*for preds in where_*)], NONE, 
neuper@42277
    43
  [["SignalProcessing","Z_Transform","inverse"]]));
neuper@42256
    44
*}
neuper@42256
    45
neuper@42256
    46
subsection {*Define Name and Signature for the Method*}
neuper@42256
    47
consts
neuper@42256
    48
  InverseZTransform :: "[bool, bool] => bool"
neuper@42256
    49
    ("((Script InverseZTransform (_ =))// (_))" 9)
neuper@42256
    50
neuper@42277
    51
subsection {*Setup Parent Nodes in Hierarchy of Method*}
neuper@42256
    52
ML {*
neuper@42256
    53
store_met
neuper@42256
    54
 (prep_met thy "met_SP" [] e_metID
neuper@42256
    55
 (["SignalProcessing"], [],
neuper@42256
    56
   {rew_ord'="tless_true", rls'= e_rls, calc = [], srls = e_rls, prls = e_rls,
neuper@42256
    57
    crls = e_rls, nrls = e_rls}, "empty_script"));
neuper@42256
    58
store_met
neuper@42256
    59
 (prep_met thy "met_SP_Ztrans" [] e_metID
neuper@42256
    60
 (["SignalProcessing", "Z_Transform"], [],
neuper@42256
    61
   {rew_ord'="tless_true", rls'= e_rls, calc = [], srls = e_rls, prls = e_rls,
neuper@42256
    62
    crls = e_rls, nrls = e_rls}, "empty_script"));
neuper@42256
    63
val thy = @{theory}; (*latest version of thy required*)
neuper@42256
    64
store_met
neuper@42256
    65
 (prep_met thy "met_SP_Ztrans_inv" [] e_metID
neuper@42256
    66
 (["SignalProcessing", "Z_Transform", "inverse"], 
neuper@42278
    67
  [("#Given" ,["filterExpression (X_eq::bool)"]),
neuper@42278
    68
   ("#Find"  ,["stepResponse (n_eq::bool)"])
neuper@42256
    69
  ],
neuper@42256
    70
   {rew_ord'="tless_true", rls'= e_rls, calc = [], srls = e_rls, prls = e_rls,
neuper@42256
    71
    crls = e_rls, nrls = e_rls},
neuper@42256
    72
  "Script InverseZTransform (Xeq::bool) =" ^
neuper@42256
    73
  " (let X = Take Xeq;" ^
neuper@42256
    74
  "      X = Rewrite ruleZY False X" ^
neuper@42256
    75
  "  in X)"
neuper@42256
    76
 ));
neuper@42256
    77
*}
neuper@42256
    78
neuper@42256
    79
end
neuper@42256
    80