src/Cube/Base.thy
author wenzelm
Sun, 29 Nov 1998 13:14:45 +0100
changeset 5986 6ebbc9e7cc20
parent 4584 3588b8f9613f
child 12110 f8b4b11cd79d
permissions -rw-r--r--
added oct_char;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4583
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     1
(*  Title:      Cube/Base.thy
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     3
    Author:     Tobias Nipkow
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     4
    Copyright   1993  University of Cambridge
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     5
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     6
Barendregt's Lambda-Cube.
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     7
*)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     8
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
     9
Base = Pure +
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    10
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    11
types
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    12
  term  context  typing
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    13
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    14
arities
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    15
  term :: logic
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    16
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    17
consts
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    18
  Abs, Prod     :: "[term, term => term] => term"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    19
  Trueprop      :: "[context, typing] => prop"          ("(_/ |- _)")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    20
  MT_context    :: "context"                            ("")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    21
  Context       :: "[typing, context] => context"       ("_ _")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    22
  star          :: "term"                               ("*")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    23
  box           :: "term"                               ("[]")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    24
  "^"           :: "[term, term] => term"               (infixl 20)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    25
  Has_type      :: "[term, term] => typing"             ("(_:/ _)" [0, 0] 5)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    26
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    27
syntax
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    28
  Trueprop1     :: "typing => prop"                     ("(_)")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    29
  ""            :: "id => context"                      ("_ ")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    30
  ""            :: "var => context"                     ("_ ")
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    31
  Lam           :: "[idt, term, term] => term"          ("(3Lam _:_./ _)" [0, 0, 0] 10)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    32
  Pi            :: "[idt, term, term] => term"          ("(3Pi _:_./ _)" [0, 0] 10)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    33
  "->"          :: "[term, term] => term"               (infixr 10)
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    34
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    35
translations
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    36
  (prop) "x:X"  == (prop) "|- x:X"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    37
  "Lam x:A. B"  == "Abs(A, %x. B)"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    38
  "Pi x:A. B"   => "Prod(A, %x. B)"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    39
  "A -> B"      => "Prod(A, _K(B))"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    40
4584
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    41
syntax (symbols)
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    42
  Trueprop      :: "[context, typing] => prop"          ("(_/ \\<turnstile> _)")
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    43
  box           :: "term"                               ("\\<box>")
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    44
  Lam           :: "[idt, term, term] => term"          ("(3\\<Lambda>_:_./ _)" [0, 0, 0] 10)
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    45
  Pi            :: "[idt, term, term] => term"          ("(3\\<Pi>_:_./ _)" [0, 0] 10)
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    46
  "op ->"       :: "[term, term] => term"               (infixr "\\<rightarrow>" 10)
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    47
3588b8f9613f added symbols syntax;
wenzelm
parents: 4583
diff changeset
    48
4583
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    49
rules
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    50
  s_b           "*: []"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    51
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    52
  strip_s       "[| A:*;  a:A ==> G |- x:X |] ==> a:A G |- x:X"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    53
  strip_b       "[| A:[]; a:A ==> G |- x:X |] ==> a:A G |- x:X"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    54
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    55
  app           "[| F:Prod(A, B); C:A |] ==> F^C: B(C)"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    56
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    57
  pi_ss         "[| A:*; !!x. x:A ==> B(x):* |] ==> Prod(A, B):*"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    58
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    59
  lam_ss        "[| A:*; !!x. x:A ==> f(x):B(x); !!x. x:A ==> B(x):* |]
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    60
                   ==> Abs(A, f) : Prod(A, B)"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    61
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    62
  beta          "Abs(A, f)^a == f(a)"
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    63
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    64
end
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    65
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    66
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    67
ML
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    68
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    69
val print_translation = [("Prod", dependent_tr' ("Pi", "op ->"))];
6d9be46ea566 reorganized into individual theories;
wenzelm
parents:
diff changeset
    70