src/HOL/ex/Eval_Examples.thy
author krauss
Tue, 28 Sep 2010 09:54:07 +0200
changeset 39754 150f831ce4a3
parent 32067 e425fe0ff24a
child 40757 b469a373df31
permissions -rw-r--r--
no longer declare .psimps rules as [simp]. This regularly caused confusion (e.g., they show up in simp traces when the regular simp rules are disabled). In the few places where the rules are used, explicitly mentioning them actually clarifies the proof text.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30021
19c06d4763e0 stripped Id
haftmann
parents: 28952
diff changeset
     1
(* Author: Florian Haftmann, TU Muenchen *)
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     2
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     3
header {* Small examples for evaluation mechanisms *}
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     4
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     5
theory Eval_Examples
32067
e425fe0ff24a more canonical import
haftmann
parents: 30021
diff changeset
     6
imports Complex_Main
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     7
begin
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
     8
25099
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
     9
text {* evaluation oracle *}
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    10
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    11
lemma "True \<or> False" by eval
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    12
lemma "\<not> (Suc 0 = Suc 1)" by eval
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    13
lemma "[] = ([]\<Colon> int list)" by eval
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    14
lemma "[()] = [()]" by eval
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    15
lemma "fst ([]::nat list, Suc 0) = []" by eval
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    16
24292
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    17
text {* SML evaluation oracle *}
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    18
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    19
lemma "True \<or> False" by evaluation
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    20
lemma "\<not> (Suc 0 = Suc 1)" by evaluation
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    21
lemma "[] = ([]\<Colon> int list)" by evaluation
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    22
lemma "[()] = [()]" by evaluation
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    23
lemma "fst ([]::nat list, Suc 0) = []" by evaluation
26ac9fe0e80e added evaluation examples
haftmann
parents: 24280
diff changeset
    24
25099
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    25
text {* normalization *}
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    26
25099
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    27
lemma "True \<or> False" by normalization
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    28
lemma "\<not> (Suc 0 = Suc 1)" by normalization
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    29
lemma "[] = ([]\<Colon> int list)" by normalization
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    30
lemma "[()] = [()]" by normalization
b2c19b9964db lemmas with normalization
haftmann
parents: 24916
diff changeset
    31
lemma "fst ([]::nat list, Suc 0) = []" by normalization
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    32
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    33
text {* term evaluation *}
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    34
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    35
value "(Suc 2 + 1) * 4"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    36
value [code] "(Suc 2 + 1) * 4"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    37
value [SML] "(Suc 2 + 1) * 4"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    38
value [nbe] "(Suc 2 + 1) * 4"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    39
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    40
value "(Suc 2 + Suc 0) * Suc 3"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    41
value [code] "(Suc 2 + Suc 0) * Suc 3"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    42
value [SML] "(Suc 2 + Suc 0) * Suc 3"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    43
value [nbe] "(Suc 2 + Suc 0) * Suc 3"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    44
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    45
value "nat 100"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    46
value [code] "nat 100"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    47
value [SML] "nat 100"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    48
value [nbe] "nat 100"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    49
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    50
value "(10\<Colon>int) \<le> 12"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    51
value [code] "(10\<Colon>int) \<le> 12"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    52
value [SML] "(10\<Colon>int) \<le> 12"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    53
value [nbe] "(10\<Colon>int) \<le> 12"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    54
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    55
value "max (2::int) 4"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    56
value [code] "max (2::int) 4"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    57
value [SML] "max (2::int) 4"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    58
value [nbe] "max (2::int) 4"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    59
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    60
value "of_int 2 / of_int 4 * (1::rat)"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    61
value [code] "of_int 2 / of_int 4 * (1::rat)"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    62
value [SML] "of_int 2 / of_int 4 * (1::rat)"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    63
value [nbe] "of_int 2 / of_int 4 * (1::rat)"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    64
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    65
value "[]::nat list"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    66
value [code] "[]::nat list"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    67
value [SML] "[]::nat list"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    68
value [nbe] "[]::nat list"
24835
8c26128f8997 clarified relationship of code generator conversions and evaluations
haftmann
parents: 24659
diff changeset
    69
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    70
value "[(nat 100, ())]"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    71
value [code] "[(nat 100, ())]"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    72
value [SML] "[(nat 100, ())]"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    73
value [nbe] "[(nat 100, ())]"
24659
6b7ac2a43df8 more permissive
haftmann
parents: 24587
diff changeset
    74
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    75
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    76
text {* a fancy datatype *}
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    77
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    78
datatype ('a, 'b) bair =
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    79
    Bair "'a\<Colon>order" 'b
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    80
  | Shift "('a, 'b) cair"
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    81
  | Dummy unit
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    82
and ('a, 'b) cair =
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    83
    Cair 'a 'b
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    84
24587
4f2cbf6e563f multi-functional value keyword
haftmann
parents: 24423
diff changeset
    85
value "Shift (Cair (4::nat) [Suc 0])"
28227
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    86
value [code] "Shift (Cair (4::nat) [Suc 0])"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    87
value [SML] "Shift (Cair (4::nat) [Suc 0])"
77221ee0f7b9 generic value command
haftmann
parents: 26020
diff changeset
    88
value [nbe] "Shift (Cair (4::nat) [Suc 0])"
23268
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    89
572a483de1b0 renamed ex/Eval_Examples.thy;
wenzelm
parents:
diff changeset
    90
end