src/FOL/ex/LocaleTest.thy
author ballarin
Thu, 24 Mar 2005 17:03:37 +0100
changeset 15624 484178635bd8
parent 15598 4ab52355bb53
child 15696 1da4ce092c0b
permissions -rw-r--r--
Further work on interpretation commands. New command `interpret' for interpretation in proof contexts.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     1
(*  Title:      FOL/ex/LocaleTest.thy
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     2
    ID:         $Id$
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     3
    Author:     Clemens Ballarin
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     4
    Copyright (c) 2005 by Clemens Ballarin
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     5
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     6
Collection of regression tests for locales.
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     7
*)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     8
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
     9
header {* Test of Locale instantiation *}
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    10
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    11
theory LocaleTest = FOL:
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    12
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    13
(* interpretation input syntax *)
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    14
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    15
locale L
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    16
locale M = fixes a and b and c
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    17
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    18
interpretation test [simp]: L + M a b c [x y z] .
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    19
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    20
print_interps L
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    21
print_interps M
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    22
15624
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    23
interpretation test [simp]: L print_interps M .
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    24
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    25
interpretation L .
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    26
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    27
(* processing of locale expression *)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    28
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    29
ML {* reset show_hyps *}
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    30
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    31
locale A = fixes a assumes asm_A: "a = a"
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    32
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    33
locale (open) B = fixes b assumes asm_B [simp]: "b = b"
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    34
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    35
locale C = A + B + assumes asm_C: "c = c"
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    36
  (* TODO: independent type var in c, prohibit locale declaration *)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    37
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    38
locale D = A + B + fixes d defines def_D: "d == (a = b)"
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    39
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    40
ML {* set show_sorts *}
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    41
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    42
typedecl i
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    43
arities i :: "term"
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    44
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    45
ML {* set Toplevel.debug *}
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    46
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    47
ML {* set show_hyps *}
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    48
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    49
interpretation p1: C ["X::'b" "Y::'b"] by (auto intro: A.intro C_axioms.intro)
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    50
  (* both X and Y get type 'b since 'b is the internal type of parameter b,
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    51
     not wanted, but put up with for now. *)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    52
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    53
print_interps A
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    54
15624
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    55
(* possible accesses
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    56
thm p1.a.asm_A thm LocaleTest.p1.a.asm_A
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    57
thm LocaleTest.asm_A thm p1.asm_A
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    58
*)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    59
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    60
(* without prefix *)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    61
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    62
interpretation C ["W::'b" "Z::'b"] by (auto intro: A.intro C_axioms.intro)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    63
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    64
print_interps A
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    65
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    66
(* possible accesses
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    67
thm a.asm_A thm asm_A thm LocaleTest.a.asm_A thm LocaleTest.asm_A
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    68
*)
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    69
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    70
interpretation p2: D [X Y "Y = X"] by (auto intro: A.intro simp: eq_commute)
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    71
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    72
print_interps D
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    73
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    74
(*
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    75
thm p2.a.asm_A
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    76
*)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    77
15624
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
    78
interpretation p3: D [X Y] .
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    79
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    80
(* duplicate: not registered *)
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    81
(*
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    82
thm p3.a.asm_A
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    83
*)
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    84
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    85
print_interps A
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    86
print_interps B
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    87
print_interps C
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    88
print_interps D
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    89
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    90
(* not permitted *)
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    91
(*
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    92
interpretation p4: A ["x::?'a1"] apply (rule A.intro) apply rule done
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    93
*)
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    94
print_interps A
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    95
15598
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    96
(* without a prefix *)
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    97
(* TODO!!!
4ab52355bb53 Registrations of global locale interpretations: improved, better naming.
ballarin
parents: 15596
diff changeset
    98
interpretation A [Z] apply - apply (auto intro: A.intro) done
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
    99
*)
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
   100
15624
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   101
theorem True
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   102
proof -
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   103
  fix alpha::i and beta::i and gamma::i
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   104
  assume "A(alpha)"
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   105
  then interpret p5: A [alpha] .
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   106
  print_interps A
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   107
  interpret p6: C [alpha beta] by (auto intro: C_axioms.intro)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   108
  print_interps A   (* p6 not added! *)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   109
  print_interps C
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   110
qed rule
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   111
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   112
(* lemma "bla.bla": True by rule *)
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   113
484178635bd8 Further work on interpretation commands. New command `interpret' for
ballarin
parents: 15598
diff changeset
   114
15596
8665d08085df First version of global registration command.
ballarin
parents:
diff changeset
   115
end