| author | urbanc |
| Thu, 23 Nov 2006 17:52:48 +0100 | |
| changeset 21488 | e1b260d204a0 |
| parent 17272 | c63e5220ed77 |
| child 21524 | 7843e2fd14a9 |
| permissions | -rw-r--r-- |
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
1 |
(* Title: HOL/Modelcheck/MuckeSyn.thy |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
2 |
ID: $Id$ |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
3 |
Author: Tobias Hamberger |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
4 |
Copyright 1999 TU Muenchen |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
5 |
*) |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
6 |
|
| 17272 | 7 |
theory MuckeSyn |
8 |
imports MuCalculus |
|
9 |
uses "mucke_oracle.ML" |
|
10 |
begin |
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
11 |
|
| 17272 | 12 |
(* extended with some operators and case treatment (which requires postprocessing with |
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
13 |
transform_case (from MuCalculus) (TH) *) |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
14 |
|
| 17272 | 15 |
nonterminals |
16 |
mutype |
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
17 |
decl decls |
| 17272 | 18 |
cases_syn case_syn |
| 10125 | 19 |
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
20 |
syntax (Mucke output) |
| 17272 | 21 |
True :: bool ("true")
|
22 |
False :: bool ("false")
|
|
23 |
Not :: "bool => bool" ("! _" [40] 40)
|
|
24 |
If :: "[bool, 'a, 'a] => 'a" ("('(if'((_)')/ '((_)')/ else/ '((_)'))')" 10)
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
25 |
|
| 17272 | 26 |
"op &" :: "[bool, bool] => bool" (infixr "&" 35) |
27 |
"op |" :: "[bool, bool] => bool" (infixr "|" 30) |
|
28 |
"op -->" :: "[bool, bool] => bool" (infixr "->" 25) |
|
29 |
"op =" :: "['a, 'a] => bool" ("(_ =/ _)" [51, 51] 50)
|
|
30 |
"_not_equal" :: "['a, 'a] => bool" ("(_ !=/ _)" [51, 51] 50)
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
31 |
|
| 17272 | 32 |
"ALL " :: "[idts, bool] => bool" ("'((3forall _./ _)')" [0, 10] 10)
|
33 |
"EX " :: "[idts, bool] => bool" ("'((3exists _./ _)')" [0, 10] 10)
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
34 |
|
| 17272 | 35 |
"_lambda" :: "[idts, 'a] => 'b" ("(3L _./ _)" 10)
|
36 |
"_applC" :: "[('b => 'a), cargs] => aprop" ("(1_/ '(_'))" [1000,1000] 999)
|
|
37 |
"_cargs" :: "['a, cargs] => cargs" ("_,/ _" [1000,1000] 1000)
|
|
38 |
||
39 |
"_idts" :: "[idt, idts] => idts" ("_,/ _" [1, 0] 0)
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
40 |
|
| 9368 | 41 |
"_tuple" :: "'a => tuple_args => 'a * 'b" ("(1_,/ _)")
|
| 17272 | 42 |
(* "@pttrn" :: "[pttrn, pttrns] => pttrn" ("_,/ _" [1, 0] 0)
|
43 |
"_pattern" :: "[pttrn, patterns] => pttrn" ("_,/ _" [1, 0] 0) *)
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
44 |
|
| 17272 | 45 |
"_decl" :: "[mutype,pttrn] => decl" ("_ _")
|
46 |
"_decls" :: "[decl,decls] => decls" ("_,/ _")
|
|
47 |
"" :: "decl => decls" ("_")
|
|
48 |
"_mu" :: "[decl,decls,'a pred] => 'a pred" ("mu _ '(_') _ ;")
|
|
49 |
"_mudec" :: "[decl,decls] => 'a pred" ("mu _ '(_') ;")
|
|
50 |
"_nu" :: "[decl,decls,'a pred] => 'a pred" ("nu _ '(_') _ ;")
|
|
51 |
"_nudec" :: "[decl,decls] => 'a pred" ("nu _ '(_') ;")
|
|
52 |
"_fun" :: "[decl,decls,'a pred] => 'a pred" ("_ '(_') _ ;")
|
|
53 |
"_dec" :: "[decl,decls] => 'a pred" ("_ '(_') ;")
|
|
54 |
||
55 |
"_Ex" :: "[decl,idts,'a pred] => 'a pred" ("'((3exists _ _./ _)')")
|
|
56 |
"_All" :: "[decl,idts,'a pred] => 'a pred" ("'((3forall _ _./ _)')")
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
57 |
|
| 17272 | 58 |
"Mu " :: "[idts, 'a pred] => 'a pred" ("(3mu _./ _)" 1000)
|
59 |
"Nu " :: "[idts, 'a pred] => 'a pred" ("(3nu _./ _)" 1000)
|
|
60 |
||
61 |
"_case_syntax":: "['a, cases_syn] => 'b" ("(case*_* / _ / esac*)" 10)
|
|
62 |
"_case1" :: "['a, 'b] => case_syn" ("(2*= _ :/ _;)" 10)
|
|
63 |
"" :: "case_syn => cases_syn" ("_")
|
|
64 |
"_case2" :: "[case_syn, cases_syn] => cases_syn" ("_/ _")
|
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
65 |
|
| 17272 | 66 |
(*Terms containing a case statement must be post-processed with the |
67 |
ML function transform_case. There, all asterikses before the "=" |
|
68 |
will be replaced by the expression between the two asterisks |
|
69 |
following "case" and the asterisk after esac will be deleted *) |
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
70 |
|
| 17272 | 71 |
oracle mc_mucke_oracle ("term") =
|
72 |
mk_mc_mucke_oracle |
|
|
6466
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
73 |
|
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
74 |
end |
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
75 |
|
|
2eba94dc5951
added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff
changeset
|
76 |