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
|