test/Pure/Isar/Keyword_ISAC.thy
author Walther Neuper <walther.neuper@jku.at>
Fri, 14 Aug 2020 12:36:33 +0200
changeset 60045 28e2088e7cf1
parent 60027 3e8c8c3dcd41
child 60135 45c05d7e6913
permissions -rw-r--r--
compare Outer_Syntax.command with Outer_Syntax.local_theory (from Naproche)
walther@60027
     1
theory Keyword_ISAC
wneuper@59433
     2
walther@60027
     3
imports Main
walther@60027
     4
keywords "ISAC" :: diag
wneuper@59442
     5
begin
wneuper@59433
     6
walther@60045
     7
ML \<open> (* original from Makarius 2018 *)
walther@60027
     8
val _ =
walther@60027
     9
  Outer_Syntax.command @{command_keyword ISAC} "embedded ISAC language"
walther@60027
    10
    (Parse.input Parse.cartouche >> (fn input =>
walther@60027
    11
      Toplevel.keep (fn _ => ignore (ML_Lex.read_source (*true*) input))))
wneuper@59433
    12
\<close>
wneuper@59433
    13
walther@60027
    14
ISAC \<open>any content "for" cartouche, 1 + 2 = 3\<close>
wneuper@59447
    15
wneuper@59433
    16
ISAC \<open>
walther@60027
    17
Problem ("Biegelinie", ["Biegelinien"])
wneuper@59433
    18
  Specification:
wneuper@59433
    19
    Model:
wneuper@59433
    20
      Given: "Traegerlaenge L", "Streckenlast q_0"
wneuper@59433
    21
      Where: "q_0 ist_integrierbar_auf {| 0, L |}", "0 < L"
wneuper@59433
    22
      Find: "Biegelinie y"
wneuper@59433
    23
      Relate: "Randbedingungen [ Q_0 = q_0 * L, M_b L = 0, y_0 = 0, d_d x y_0 = 0 ]"
wneuper@59433
    24
    References:
walther@60027
    25
      Theory: "Biegelinie"
walther@60027
    26
      Problem: ["Biegelinien"]
walther@60027
    27
      Method: ["Integrieren", "KonstanteBestimmen2"]
wneuper@59433
    28
  Solution:
walther@60027
    29
    Problem ("Biegelinie", ["vonBelastungZu", "Biegelinien"])
walther@60027
    30
    "[Q x = c + -1 * q_0 * x, M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^ 2,  y' x =  c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^ 2 + -1 * q_0 / 6 * x ^ 3),  y x =  c_4 + c_3 * x +  1 / (-1 * EI) *  (c_2 / 2 * x ^ 2 + c / 6 * x ^ 3 + -1 * q_0 / 24 * x ^ 4)]"
walther@60027
    31
    Problem ("Biegelinie", ["setzeRandbedingungen", "Biegelinien"])
walther@60027
    32
    "[L * q_0 = c, 0 = (2 * c_2 + 2 * L * c + -1 * L ^ 2 * q_0) / 2, 0 = c_4,  0 = c_3]"
walther@60027
    33
    "solveSystem [L * q_0 = c, 0 = (2 * c_2 + 2 * L * c + -1 * L ^ 2 * q_0) / 2, 0 = c_4,  0 = c_3] [c, c_1, c_2, c_4]"
walther@60027
    34
    "[c = -1 * L * q_0 / -1, c_2 = -1 * L ^ 2 * q_0 / 2, c_3 = 0, c_4 = 0]"
walther@60027
    35
    "y x = c_4 + c_3 * x + 1 / (-1 * EI) * (c_2 / 2 * x ^ 2 + c / 6 * x ^ 3 + -1 * q_0 / 24 * x ^ 4)"
walther@60027
    36
      Tactic Substitute "c_4 + c_3 * x +  1 / (-1 * EI) *  (c_2 / 2 * x ^ 2 + c / 6 * x ^ 3 + -1 * q_0 / 24 * x ^ 4)" "[c, c_1, c_2, c_4]"
walther@60027
    37
    "y x = 0 + 0 * x + 1 / (-1 * EI) * (-1 * L ^ 2 * q_0 / 2 / 2 * x ^ 2 + -1 * L * q_0 / -1 / 6 * x ^ 3 +  -1 * q_0 / 24 * x ^ 4)"
walther@60027
    38
      Tactic Rewrite_Set_Inst "[(bdv, x)]" "make_ratpoly_in" "y x"
walther@60027
    39
    "y x = -6 * q_0 * L ^ 2 / (-24 * EI) * x ^ 2 + 4 * L * q_0 / (-24 * EI) * x ^ 3 + -1 * q_0 / (-24 * EI) * x ^ 4"
walther@60027
    40
      Tactic Check_Postcond ["Biegelinien"]
walther@60027
    41
"y x = -6 * q_0 * L ^ 2 / (-24 * EI) * x ^ 2 + 4 * L * q_0 / (-24 * EI) * x ^ 3 + -1 * q_0 / (-24 * EI) * x ^ 4"
wneuper@59433
    42
\<close>
walther@60045
    43
walther@60027
    44
ML \<open>
walther@60027
    45
\<close> ML \<open>
walther@60027
    46
\<close> ML \<open>
walther@60027
    47
\<close>
walther@60027
    48
end