src/Cube/Cube.ML
author wenzelm
Thu, 16 Oct 1997 13:33:17 +0200
changeset 3884 5423e06b9fe6
parent 3771 ede66fb99880
child 4026 b94dc94be4b7
permissions -rw-r--r--
fixed merge_theories;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
     1
(*  Title:      Cube/Cube.ML
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
     3
    Author:     Tobias Nipkow
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1990  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
     6
For Cube.thy.  The systems of the Lambda-cube that extend simple types
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
open Cube;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
val simple = [s_b,strip_s,strip_b,app,lam_ss,pi_ss];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    13
val L2_thy =
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    14
  Cube.thy
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    15
  |> Theory.add_axioms
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    16
   [("pi_bs",  "[| A:[]; !!x. x:A ==> B(x):* |] ==> Prod(A,B):*"),
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    17
    ("lam_bs", "[| A:[]; !!x. x:A ==> f(x):B(x); !!x. x:A ==> B(x):* |] \
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    18
     \  ==> Abs(A,f) : Prod(A,B)")]
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    19
  |> Theory.add_name "L2";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
val lam_bs = get_axiom L2_thy "lam_bs";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
val pi_bs = get_axiom L2_thy "pi_bs";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
val L2 = simple @ [lam_bs,pi_bs];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    25
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    26
val Lomega_thy =
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    27
  Cube.thy
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    28
  |> Theory.add_axioms
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    29
   [("pi_bb",  "[| A:[]; !!x. x:A ==> B(x):[] |] ==> Prod(A,B):[]"),
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    30
    ("lam_bb", "[| A:[]; !!x. x:A ==> f(x):B(x); !!x. x:A ==> B(x):[] |] \
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    31
     \  ==> Abs(A,f) : Prod(A,B)")]
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    32
  |> Theory.add_name "Lomega";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    34
val lam_bb = get_axiom Lomega_thy "lam_bb";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    35
val pi_bb = get_axiom Lomega_thy "pi_bb";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
val Lomega = simple @ [lam_bb,pi_bb];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    37
3884
5423e06b9fe6 fixed merge_theories;
wenzelm
parents: 3771
diff changeset
    38
val LOmega_thy = merge_theories "LOmega" (L2_thy,Lomega_thy);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    39
val LOmega = simple @ [lam_bs,pi_bs,lam_bb,pi_bb];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    40
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    41
val LP_thy =
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    42
  Cube.thy
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    43
  |> Theory.add_axioms
420
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    44
   [("pi_sb",  "[| A:*; !!x. x:A ==> B(x):[] |] ==> Prod(A,B):[]"),
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    45
    ("lam_sb", "[| A:*; !!x. x:A ==> f(x):B(x); !!x. x:A ==> B(x):[] |] \
1e0f1973536d replaced extend_theory;
wenzelm
parents: 203
diff changeset
    46
     \  ==> Abs(A,f) : Prod(A,B)")]
3771
ede66fb99880 fully qualified names: Theory.add_XXX;
wenzelm
parents: 420
diff changeset
    47
  |> Theory.add_name "LP";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    48
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    49
val lam_sb = get_axiom LP_thy "lam_sb";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    50
val pi_sb = get_axiom LP_thy "pi_sb";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    51
val LP = simple @ [lam_sb,pi_sb];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    52
3884
5423e06b9fe6 fixed merge_theories;
wenzelm
parents: 3771
diff changeset
    53
val LP2_thy = merge_theories "LP2" (L2_thy,LP_thy);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    54
val LP2 = simple @ [lam_bs,pi_bs,lam_sb,pi_sb];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    55
3884
5423e06b9fe6 fixed merge_theories;
wenzelm
parents: 3771
diff changeset
    56
val LPomega_thy = merge_theories "LPomega" (LP_thy,Lomega_thy);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    57
val LPomega = simple @ [lam_bb,pi_bb,lam_sb,pi_sb];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    58
3884
5423e06b9fe6 fixed merge_theories;
wenzelm
parents: 3771
diff changeset
    59
val CC_thy = merge_theories "CC" (L2_thy,LPomega_thy);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    60
val CC = simple @ [lam_bs,pi_bs,lam_bb,pi_bb,lam_sb,pi_sb];