src/HOLCF/ex/Classlib.thy
author paulson
Fri, 31 Jan 1997 17:13:19 +0100
changeset 2572 8a47f85e7a03
parent 2570 24d7e8fb8261
child 2642 3c3a84cc85a9
permissions -rw-r--r--
ex_impE was incorrectly listed as Safe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     1
(*  Title:      FOCUS/Classlib.thy
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     2
    ID:         $ $
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     3
    Author:     Franz Regensburger
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     4
    Copyright   1995 Technical University Munich
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     5
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     6
Introduce various type classes
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     7
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     8
The 8bit package is needed for this theory
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     9
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    10
The type void of HOLCF/Void.thy is a witness for all the introduced classes.
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    11
Inspect theory Witness.thy for all the proofs. 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    12
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    13
the trivial instance for ++ -- ** // is LAM x y.(UU::void) 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    14
the trivial instance for .= and .<=  is LAM x y.(UU::tr)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    15
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    16
the class hierarchy is as follows
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    17
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    18
        pcpo 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    19
         |        
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    20
          ----------------
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    21
         |               | 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    22
         |      --------------------- 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    23
         |      |       |      |    | 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    24
        per   cplus  cminus ctimes cdvi
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    25
         |
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    26
       equiv
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    27
       /  \
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    28
      /    \
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    29
     |     |
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    30
    qpo    eq
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    31
     | 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    32
     |    
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    33
  qlinear
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    34
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    35
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    36
*)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    37
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    38
Classlib = HOLCF +
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    39
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    40
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    41
(* class cplus with characteristic constant  ++                         *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    42
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    43
classes cplus < pcpo	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    44
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    45
arities void :: cplus
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    46
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    47
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    48
	"++"	:: "'a::cplus -> 'a -> 'a"		(cinfixl 65)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    49
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    50
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    51
(* class cplus has no characteristic axioms                             *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    52
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    53
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    54
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    55
(* class cminus with characteristic constant --                         *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    56
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    57
classes cminus < pcpo	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    58
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    59
arities void :: cminus
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    60
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    61
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    62
	"--"	:: "'a::cminus -> 'a -> 'a"		(cinfixl 65)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    63
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    64
(* class cminus has no characteristic axioms                            *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    65
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    66
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    67
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    68
(* class ctimes with characteristic constant **                         *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    69
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    70
classes ctimes < pcpo	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    71
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    72
arities void :: ctimes
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    73
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    74
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    75
	"**"	:: "'a::ctimes -> 'a -> 'a"		(cinfixl 70)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    76
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    77
(* class ctimes has no characteristic axioms                            *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    78
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    79
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    80
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    81
(* class cdiv with characteristic constant //                           *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    82
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    83
classes cdiv < pcpo	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    84
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    85
arities void :: cdiv
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    86
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    87
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    88
	"//"	:: "'a::cdiv -> 'a -> 'a"		(cinfixl 70)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    89
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    90
(* class cdiv has no characteristic axioms                              *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    91
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    92
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    93
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    94
(* class per with characteristic constant .=                            *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    95
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    96
classes per < pcpo	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    97
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    98
arities void :: per
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    99
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   100
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   101
	".="	:: "'a::per -> 'a -> tr"	(cinfixl 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   102
syntax (symbols)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   103
	"op .=" :: "'a::per => 'a => tr"	(infixl "\\<doteq>" 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   104
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   105
rules 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   106
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   107
strict_per	"(UU .= x) = UU & (x .= UU) = UU"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   108
total_per	"[|x ~= UU; y ~= UU|] ==> (x .= y) ~= UU"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   109
flat_per	"flat (UU::'a::per)"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   110
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   111
sym_per		"(x .= y) = (y .= x)"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   112
trans_per	"[| (x .= y)=TT; (y .= z)=TT |] ==> (x .= z)=TT"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   113
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   114
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   115
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   116
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   117
(* class equiv is a refinement of of class per                          *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   118
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   119
classes equiv < per 	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   120
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   121
arities void :: equiv
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   122
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   123
rules 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   124
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   125
refl_per	"[|(x::'a::equiv) ~= UU|] ==> (x .= x)=TT"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   126
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   127
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   128
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   129
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   130
(* class eq is a refinement of of class equiv                           *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   131
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   132
classes eq < equiv  	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   133
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   134
arities void :: eq
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   135
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   136
rules 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   137
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   138
weq	"[| (x::'a::eq) ~= UU; y ~= UU |] ==> 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   139
	 (x = y --> (x .=y) = TT) & (x ~= y --> (x .= y)=FF)"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   140
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   141
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   142
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   143
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   144
(* class qpo with characteristic constant .<=                           *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   145
(*  .<= is a partial order wrt an equivalence                           *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   146
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   147
classes qpo < equiv	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   148
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   149
arities void :: qpo
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   150
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   151
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   152
	".<="	:: "'a::qpo -> 'a -> tr"	(cinfixl 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   153
syntax (symbols)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   154
	"op .<=":: "'a::qpo => 'a => tr"	(infixl "\\<preceq>" 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   155
rules 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   156
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   157
strict_qpo	"(UU .<= x) = UU & (x .<= UU) = UU"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   158
total_qpo	"[|x ~= UU; y ~= UU|] ==> (x .<= y) ~= UU"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   159
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   160
refl_qpo	"[|x ~= UU|] ==> (x .<= x)=TT"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   161
antisym_qpo	"[| (x .<= y)=TT; (y .<= x)=TT |] ==> (x .=  y)=TT"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   162
trans_qpo	"[| (x .<= y)=TT; (y .<= z)=TT |] ==> (x .<= z)=TT"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   163
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   164
antisym_qpo_rev	"(x .= y)=TT ==> (x .<= y)=TT & (y .<= x)=TT" 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   165
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   166
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   167
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   168
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   169
(* irreflexive part .< defined via .<=                                  *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   170
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   171
ops curried 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   172
	".<"	:: "'a::qpo -> 'a -> tr"	(cinfixl 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   173
syntax (symbols)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   174
	"op .<"	:: "'a::qpo => 'a => tr"	(infixl "\\<prec>" 55)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   175
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   176
defs
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   177
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   178
qless_def	"(op .<) Ú LAM x y.If x .= y then FF else x .<= y fi"
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   179
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   180
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   181
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   182
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   183
(* class qlinear is a refinement of of class qpo                        *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   184
 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   185
classes qlinear < qpo  	
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   186
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   187
arities void :: qlinear
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   188
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   189
rules 
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   190
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   191
qlinear	"[|(x::'a::qlinear) ~= UU; y ~= UU|] ==> (x .<= y)=TT Á (y .<= x)=TT "
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   192
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   193
(* -------------------------------------------------------------------- *)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   194
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
   195
end