Prelude.hascasl.output revision a53ebc0a0f88e83f51667b4f26eee6ed1d440b2b
%% predefined universe containing all types,
%% superclass of all other classes
class Type < Type
var s : Type; t : Type
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% invisible type "Unit" for formulae
type Unit
%% flat cpo with bottom
%% type aliases
pred true, false : Unit
pred __/\__, __\/__, __=>__, __if__, __<=>__ : Unit * Unit
pred not : Unit
pred __=__ : s * s
%% =e=
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (builtin) type (constructors)
type __->?__ : Type- -> Type+ -> Type
%% nested pairs are different from n-tupels (n > 2)
type __*__ : Type+ -> Type+ -> Type
%% ...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% "pred p args = e" abbreviates "op p args :? unit = e"
%% CASL requires "<=>" for pred-defn and disallows "()" as result
op def, tt : Pred s
var x : s
program (op def[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
= \ (var x : s) : s . ()
%% def is also total (identical to tt)
program (op tt[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
= \ (var x : s) : s . ()
%% tt is total "op tt(x: s): unit = ()"
%% total function type
type __->__ : Type- -> Type+ -> Type
type __->__(s : Type)(t : Type) < s_v1 ->? t_v2
%% total functions
op __res__ : forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1
= \ (var x : s, var y : t) .! (var x : s) as s_v1
op fst : forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1
= \ (var x : s, var y : t) .! (var x : s) as s_v1
%% trivial because its the strict function property
. (fun __=__[_var_33_v33 * _var_35_v35 ->? _var_33_v33]
: forall s : Type . s_v-1 * s_v-1 ->? Unit)
(op fst[_var_33_v33; _var_35_v35]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1,
op __res__[_var_33_v33; _var_35_v35]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Internal Logic
pred eq : s * s
. (fun __=__[s ->? Unit]
: forall s : Type . s_v-1 * s_v-1 ->? Unit)
(\ (var x : s) : s
. (pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var x : s),
op tt[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
. (fun __=__[s * s ->? s]
: forall s : Type . s_v-1 * s_v-1 ->? Unit)
(\ (var x : s, var y : s)
. (op __res__[s; Unit]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var x : s,
(pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)),
\ (var x : s, var y : s)
. (op __res__[s; Unit]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var y : s,
(pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)))
%% then %def
%% notation "\ ." abbreviates "\bla:unit."
%% where "bla" is never used, but only "()" instead
%% for type inference
%% an implicit cast from s to ?s of a term "e" yields the term "\ . e"
type s < ? s_v1
%% the cast from ?s to s is still done manually here (for the strict "und")
%% use "And" instead of "und" to avoid cast from "?unit" to "unit"
%% the type instance for the first "eq" should be "?t"
%% this is explicitely enforced by "\ .f(x)"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Recursion (requires "free type nat ::= 0 | Suc(nat)" and "+"
type nat
class Cpo < Type
{var c : Cpo; pred __<<=__ : c * c; ;
pred isChain : forall c : Cpo . nat -> c_v-1;
pred isBound : forall c : Cpo . c_v-1 * (nat -> c_v-1);
op sup : (nat -> c) ->? c;}
class Pcpo < Cpo
{var p : Pcpo; op bottom : p;}
class instance Flatcpo < Cpo
{var f : Flatcpo;}
var c : Cpo; d : Cpo
type instance __*__ : Cpo+ -> Cpo+ -> Cpo
var x1 : c; x2 : c; y1 : d; y2 : d
type instance __*__ : Pcpo+ -> Pcpo+ -> Pcpo
type Unit : Pcpo
%% Pcont
type instance __-->?__ : Cpo- -> Cpo+ -> Pcpo
type __-->?__(c : Cpo)(d : Cpo) < c_v155 ->? d_v160
%% Tcont
type instance __-->__ : Cpo- -> Cpo+ -> Cpo
type __-->__(c : Cpo)(d : Cpo) < c_v155 -->? d_v160
var f : c --> d; g : c --> d
type instance __-->__ : Cpo- -> Pcpo+ -> Pcpo
op undefined : forall c : Cpo; p : Pcpo . c_v-1 -->? p_v-2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% user stuff
free type bool ::= true |
false
type bool : Flatcpo
type nat : Flatcpo
%% Classes ---------------------------------------------------------------
Cpo < Type
Flatcpo < Cpo
Pcpo < Cpo
%% Type Constructors -----------------------------------------------------
Logical : Type := Unit ->? Unit
Pred : Type -> Type := \ a : Type . a_v-1 ->? Unit
Unit : Pcpo
__*__
: (Cpo+ -> Cpo+ -> Cpo, Pcpo+ -> Pcpo+ -> Pcpo,
Type+ -> Type+ -> Type)
__-->__
: (Cpo- -> Cpo+ -> Cpo, Cpo- -> Pcpo+ -> Pcpo,
Type- -> Type+ -> Type) < (c_v155 -->? d_v160, __-->?__, __->__)
__-->?__
: (Cpo- -> Cpo+ -> Pcpo,
Type- -> Type+ -> Type) < (c_v155 ->? d_v160, __->?__)
__->__ : Type- -> Type+ -> Type < (s_v1 ->? t_v2, __->?__)
__->?__ : Type- -> Type+ -> Type
bool
: Flatcpo
%[free type bool
::= true : bool
false : bool]%
c : Cpo %(var_155)%
d : Cpo %(var_160)%
f : Flatcpo %(var_159)%
nat : Flatcpo
p : Pcpo %(var_158)%
s : Type %(var_1)%
t : Type %(var_2)%
%% Assumptions -----------------------------------------------------------
__/\__ : Unit * Unit ->? Unit %(fun)%
__<<=__ : forall c : Cpo . c_v-1 * c_v-1 ->? Unit %(pred)%
__<=>__ : Unit * Unit ->? Unit %(fun)%
__=__ : forall s : Type . s_v-1 * s_v-1 ->? Unit %(fun)%
__=>__ : Unit * Unit ->? Unit %(fun)%
__=e=__ : forall a : Type . a_v-1 * a_v-1 ->? Unit %(fun)%
__\/__ : Unit * Unit ->? Unit %(fun)%
__if__ : Unit * Unit ->? Unit %(fun)%
__res__
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1
%(op)% = \ (var x : s, var y : t) .! (var x : s) as s_v1
__when__else__
: forall a : Type . a_v-1 * ? Unit * a_v-1 ->? a_v-1 %(fun)%
bottom : forall p : Pcpo . p_v-1 %(fun)%
def : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit) %(op)%
def__ : forall a : Type . a_v-1 ->? Unit %(fun)%
eq : forall s : Type . s_v-1 * s_v-1 ->? Unit %(pred)%
f : c --> d %(var)%
false
: bool %(construct bool)%
: Unit ->? Unit %(pred)%
: Unit %(fun)%
fst
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1
%(op)% = \ (var x : s, var y : t) .! (var x : s) as s_v1
g : c --> d %(var)%
isBound : forall c : Cpo . c_v-1 * (nat -> c_v-1) ->? Unit %(pred)%
isChain : forall c : Cpo . (nat -> c_v-1) ->? Unit %(pred)%
not : Unit ->? Unit %(pred)%
not__ : ? Unit ->? Unit %(fun)%
sup : forall c : Cpo . (nat -> c_v-1) ->? c_v-1 %(op)%
true
: bool %(construct bool)%
: Unit ->? Unit %(pred)%
: Unit %(fun)%
tt : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit) %(op)%
undefined : forall c : Cpo; p : Pcpo . c_v-1 -->? p_v-2 %(op)%
x : s %(var)%
x1 : c %(var)%
x2 : c %(var)%
y1 : d %(var)%
y2 : d %(var)%
�__ : ? Unit ->? Unit %(fun)%
%% Sentences -------------------------------------------------------------
program (op def[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
= \ (var x : s) : s . () %(pe_def)%
program (op tt[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
= \ (var x : s) : s . () %(pe_tt)%
forall x : s; y : t
. (fun __=__ : forall a : Type . a_v-1 * a_v-1 ->? Unit)
((op __res__ : forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var x : s, var y : t),
(var x : s) as s_v1) %(def___res__)%
forall x : s; y : t
. (fun __=__ : forall a : Type . a_v-1 * a_v-1 ->? Unit)
((op fst : forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var x : s, var y : t),
(var x : s) as s_v1) %(def_fst)%
(fun __=__[_var_33_v33 * _var_35_v35 ->? _var_33_v33]
: forall s : Type . s_v-1 * s_v-1 ->? Unit)
(op fst[_var_33_v33; _var_35_v35]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1,
op __res__[_var_33_v33; _var_35_v35]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(fun __=__[s ->? Unit] : forall s : Type . s_v-1 * s_v-1 ->? Unit)
(\ (var x : s) : s
. (pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var x : s),
op tt[s] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))
(fun __=__[s * s ->? s] : forall s : Type . s_v-1 * s_v-1 ->? Unit)
(\ (var x : s, var y : s)
. (op __res__[s; Unit]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var x : s,
(pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)),
\ (var x : s, var y : s)
. (op __res__[s; Unit]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var y : s,
(pred eq[s] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)))
free type bool
::= true : bool
false : bool %(ga_bool)%
%% Diagnostics -----------------------------------------------------------
*** Error 4.7, illegal universe class declaration 'Type'
*** Hint 6.5, is type variable 's'
*** Hint 6.7, is type variable 't'
*** Hint 11.6, redeclared type 'Unit'
*** Error 14.11, illegal type pattern argument '__'
*** Error 15.8, illegal type pattern argument '__'
*** Error 17.6, illegal overloading of predefined identifier 'true'
*** Error 17.12, illegal overloading of predefined identifier 'false'
*** Error 19.9, illegal overloading of predefined identifier '__/\__'
*** Error 19.17, illegal overloading of predefined identifier '__\/__'
*** Error 19.25, illegal overloading of predefined identifier '__=>__'
*** Error 19.33, illegal overloading of predefined identifier '__if__'
*** Error 19.40, illegal overloading of predefined identifier '__<=>__'
*** Error 22.8, illegal overloading of predefined identifier '__=__'
*** Hint 27.8, redeclared type '__->?__'
*** Hint 30.8, redeclared type '__*__'
*** Error 31.6, illegal type pattern '__ * __ * __'
*** Hint 42.16, variable shadows global name(s) 'x'
*** Hint 44.15, variable shadows global name(s) 'x'
*** Error 46.11, unexpected mixfix token: und
*** Hint 50.8, redeclared type '__->__'
*** Error 52.8, incompatible kind of: __->__
expected: Type- -> Type+ -> Type
found: Type -> Type -> Type
*** Error 54.42, ambiguous mixfix term
def__(f(x))
def(f)(x)
*** Error 54.32, unexpected mixfix token: all
*** Error 54.6, unexpected mixfix token: :
*** Hint 58.13, variable shadows global name(s) 'x'
*** Hint 59.9, variable shadows global name(s) 'x'
*** Hint 60.9, no type match for: snd
with (maximal) type: _var_11_v11 ->? t
known types:
*** Hint 60.9, untypable application (with result type: t)
'snd(x : s, var y : t)'
*** Error 60.30, no typing for 'program snd(x : s, var y : t) : t = y'
*** Error 65.18, ambiguous mixfix term
def(__res__(x, y))
def__(__res__(x, y))
*** Error 65.59, unexpected mixfix token: und
*** Hint 66.3, in type of '(op fst[_var_28_v28; _var_29_v29]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1,
op __res__[_var_30_v30; _var_31_v31]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)'
type '(_var_28_v28 * _var_29_v29 ->? _var_28_v28) *
(_var_30_v30 * _var_31_v31 ->? _var_30_v30)' (59.12)
is not unifiable with type 'Unit ->? _var_14_v14 * _var_15_v15' (22.14)
*** Hint 74.5, variable shadows global name(s) 'x'
*** Hint 74.14, in type of '(var x : s, var x : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_44_v44 * _var_45_v45' (72.11)
*** Hint 74.5, variable shadows global name(s) 'x'
*** Hint 74.14, in type of '(var x : s, var x : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_55_v55 * _var_56_v56' (72.11)
*** Hint 74.11, in type of '(\ (var x : s) : s
. (pred eq[_var_54_v54] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var x : s),
op tt[_var_57_v57] : forall s : Type . Pred s_v-1@(s_v-1 ->? Unit))'
type '(s ->? Unit) * Pred _var_57_v57@(_var_57_v57 ->? Unit)' (74.8)
is not unifiable with type 'Unit ->? _var_38_v38 * _var_39_v39' (22.14)
*** Hint 75.6, variable shadows global name(s) 'x'
*** Hint 75.24, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_76_v76 * _var_77_v77' (72.11)
*** Hint 75.24, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_81_v81 * _var_82_v82' (72.11)
*** Hint 75.15, in type of '(var x : s,
(pred eq[_var_80_v80] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s))'
type 's * Unit' (40.9)
is not unifiable with type 'Unit ->? _var_71_v71 * _var_72_v72' (58.16)
*** Hint 75.35, variable shadows global name(s) 'x'
*** Hint 75.53, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_95_v95 * _var_96_v96' (72.11)
*** Hint 75.53, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_100_v100 * _var_101_v101' (72.11)
*** Hint 75.44, in type of '(var y : s,
(pred eq[_var_99_v99] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s))'
type 's * Unit' (75.40)
is not unifiable with type 'Unit ->? _var_90_v90 * _var_91_v91' (58.16)
*** Hint 75.6, variable shadows global name(s) 'x'
*** Hint 75.24, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_122_v122 * _var_123_v123' (72.11)
*** Hint 75.24, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_127_v127 * _var_128_v128' (72.11)
*** Hint 75.15, in type of '(var x : s,
(pred eq[_var_126_v126] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s))'
type 's * Unit' (40.9)
is not unifiable with type 'Unit ->? _var_117_v117 * _var_118_v118' (58.16)
*** Hint 75.35, variable shadows global name(s) 'x'
*** Hint 75.53, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_141_v141 * _var_142_v142' (72.11)
*** Hint 75.53, in type of '(var x : s, var y : s)'
type 's * s' (40.9)
is not unifiable with type 'Unit ->? _var_146_v146 * _var_147_v147' (72.11)
*** Hint 75.44, in type of '(var y : s,
(pred eq[_var_145_v145] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s))'
type 's * Unit' (75.40)
is not unifiable with type 'Unit ->? _var_136_v136 * _var_137_v137' (58.16)
*** Hint 75.17, in type of '(\ (var x : s, var y : s)
. (op __res__[_var_115_v115; _var_116_v116]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var x : s,
(pred eq[_var_121_v121] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)),
\ (var x : s, var y : s)
. (op __res__[_var_134_v134; _var_135_v135]
: forall s : Type; t : Type . s_v-1 * t_v-2 ->? s_v-1)
(var y : s,
(pred eq[_var_140_v140] : forall s : Type . s_v-1 * s_v-1)
(var x : s, var y : s)))'
type '(s * s ->? s) * (s * s ->? s)' (40.9)
is not unifiable with type 'Unit ->? _var_62_v62 * _var_63_v63' (22.14)
*** Hint 85.6, redeclared type 's'
*** Error 85.6, merge: TypeVarDefn of 's'
*** Error 85.11, illegal supertype for variable '? s_v1'
*** Hint 87.9, no type match for: all
with (maximal) type: _var_152_v152 ->? Unit ->? Unit
known types:
*** Hint 87.9, untypable application (with result type: Unit ->? Unit)
'all(var p : s ->? Unit)'
*** Error 87.38, no typing for 'program all(var p : s ->? Unit) : Unit ->? Unit = eq(p, tt)'
*** Error 90.45, unexpected mixfix token: t1
*** Error 93.11, unexpected mixfix token: impl
*** Error 93.58, unexpected mixfix token: And
*** Error 95.11, unexpected mixfix token: or
*** Error 96.21, unexpected mixfix token: impl
*** Error 95.48, unexpected mixfix token: all
*** Error 99.32, unexpected mixfix token: impl
*** Error 99.17, unexpected mixfix token: all
*** Error 98.39, unexpected mixfix token: all
*** Error 101.29, unexpected mixfix token: all
*** Error 103.44, unexpected mixfix token: impl
*** Error 108.51, unexpected mixfix token: impl
*** Error 108.22, unexpected mixfix token: all
*** Error 108.3, unexpected mixfix token: all
*** Hint 117.5, is type variable 'c'
*** Error 121.3, unexpected mixfix token: all
*** Error 122.31, unexpected mixfix token: und
*** Error 122.3, unexpected mixfix token: all
*** Error 123.31, unexpected mixfix token: und
*** Error 123.3, unexpected mixfix token: all
*** Error 125.55, unexpected mixfix token: Suc
*** Error 125.32, unexpected mixfix token: all
*** Hint 126.15, variable shadows global name(s) 'x'
*** Error 126.38, unexpected mixfix token: all
*** Error 131.56, unexpected mixfix token: impl
*** Error 130.32, unexpected mixfix token: impl
*** Error 130.3, unexpected mixfix token: all
*** Error 134.31, unexpected mixfix token: impl
*** Error 134.3, unexpected mixfix token: all
*** Hint 139.5, is type variable 'p'
*** Error 141.4, illegal overloading of predefined identifier 'bottom'
*** Error 143.3, unexpected mixfix token: all
*** Hint 148.6, is type variable 'f'
*** Error 150.15, unexpected mixfix token: [
*** Hint 153.5, is type variable 'c'
*** Hint 153.5, redeclared type 'c'
*** Hint 153.8, is type variable 'd'
*** Error 159.45, unexpected mixfix token: und
*** Error 169.9, incompatible kind of: __-->?__
expected: Type- -> Type+ -> Type
found: Type -> Type -> Type
*** Error 171.35, unexpected mixfix token: und
*** Error 174.45, unexpected mixfix token: +
*** Error 173.40, unexpected mixfix token: und
*** Error 172.39, unexpected mixfix token: und
*** Error 171.9, unexpected mixfix token: all
*** Error 170.7, unexpected mixfix token: :
*** Error 176.51, unexpected mixfix token: impl
*** Error 176.31, unexpected mixfix token: all
*** Error 181.9, incompatible kind of: __-->__
expected: Type- -> Type+ -> Type
found: Type -> Type -> Type
*** Error 182.46, ambiguous mixfix term
def__(f(x))
def(f)(x)
*** Error 182.36, unexpected mixfix token: all
*** Error 182.7, unexpected mixfix token: :
*** Error 186.26, unexpected mixfix token: c
*** Error 190.9, incompatible kind of: p_v158 -->? p_v158
expected: Cpo-
found: Type
*** Error 193.32, unexpected mixfix token: impl
*** Error 192.27, unexpected mixfix token: Y
*** Error 192.3, unexpected mixfix token: all
*** Error 195.27, unexpected mixfix token: Y
*** Error 200.20, illegal overloading of predefined identifier 'true'
*** Error 200.27, illegal overloading of predefined identifier 'false'