src/HOL/MicroJava/BV/Convert.ML
author kleing
Thu, 09 Mar 2000 13:50:58 +0100
changeset 8386 3e56677d3b98
parent 8139 037172b3623c
child 8389 130109a9b8c1
permissions -rw-r--r--
minor adjustments in branch and method invocation for completeness of LBV
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/BV/Convert.ML
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     2
    ID:         $Id$
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     3
    Author:     Cornelia Pusch
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     4
    Copyright   1999 Technische Universitaet Muenchen
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     5
*)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
8139
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
     7
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
     8
Goalw[sup_ty_opt_def] "G \\<turnstile> t <=o t";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
     9
by (exhaust_tac "t" 1);
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    10
by Auto_tac;
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    11
qed "sup_ty_opt_refl";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    12
Addsimps [sup_ty_opt_refl];
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    13
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    14
Goalw[sup_loc_def] "G \\<turnstile> t <=l t";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    15
by (induct_tac "t" 1);
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    16
by Auto_tac;
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    17
qed "sup_loc_refl";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    18
Addsimps [sup_loc_refl];
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    19
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    20
Goalw[sup_state_def] "G \\<turnstile> s <=s s";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    21
by Auto_tac;
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    22
qed "sup_state_refl";
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    23
Addsimps [sup_state_refl];
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    24
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    25
val widen_PrimT_conv1 =
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    26
 prove_typerel "(G \\<turnstile> PrimT x \\<preceq> T) = (T = PrimT x)"
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    27
 [ prove_widen_lemma "G\\<turnstile>S\\<preceq>T \\<Longrightarrow> S = PrimT x \\<longrightarrow> T = PrimT x"];
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    28
Addsimps [widen_PrimT_conv1];
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    29
8023
3e5ddca613dd re-shaped and re-ordered conversion relations
oheimb
parents: 8011
diff changeset
    30
Goalw [sup_ty_opt_def] "(G \\<turnstile> None <=o any) = (any = None)";
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    31
by(simp_tac (simpset() addsplits [option.split]) 1);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    32
qed "anyConvNone";
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    33
Addsimps [anyConvNone];
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    34
8023
3e5ddca613dd re-shaped and re-ordered conversion relations
oheimb
parents: 8011
diff changeset
    35
Goalw [sup_ty_opt_def] "(G \\<turnstile> Some ty' <=o Some ty) = (G \\<turnstile> ty' \\<preceq> ty)";
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    36
by(Simp_tac 1);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    37
qed "SomeanyConvSome";
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    38
Addsimps [SomeanyConvSome];
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    39
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    40
Goal
8023
3e5ddca613dd re-shaped and re-ordered conversion relations
oheimb
parents: 8011
diff changeset
    41
"(G \\<turnstile> Some(PrimT Integer) <=o X) = (X=None \\<or> (X=Some(PrimT Integer)))";
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    42
by (simp_tac (simpset() setloop (split_tac [ty.split,option.split]) addsimps [sup_ty_opt_def]) 1);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    43
qed "sup_PTS_eq";
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    44
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    45
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    46
8119
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    47
Goalw [sup_loc_def] "CFS \\<turnstile> [] <=l XT = (XT=[])";
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    48
by(Simp_tac 1);
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    49
qed "sup_loc_Nil";
8119
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    50
AddIffs [sup_loc_Nil];
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    51
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    52
8119
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    53
Goalw [sup_loc_def]
8023
3e5ddca613dd re-shaped and re-ordered conversion relations
oheimb
parents: 8011
diff changeset
    54
"CFS \\<turnstile> (Y#YT) <=l XT = (\\<exists>X XT'. XT=X#XT' \\<and> CFS \\<turnstile> Y <=o X \\<and> CFS \\<turnstile> YT <=l XT')";
8119
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    55
by(simp_tac (simpset() addsimps [list_all2_Cons1]) 1);
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    56
qed "sup_loc_Cons";
8119
60b606eddec8 Move some lemmas to List.
nipkow
parents: 8023
diff changeset
    57
AddIffs [sup_loc_Cons];
8139
037172b3623c reflexivity simp rules
kleing
parents: 8119
diff changeset
    58