CMonad.hascasl.output revision c64d33a7fbeae730cbe65193fe3cc24e7aa1ddd6
class Functor < Type -> Type
class Monad < Functor
type List : Monad
var a : Type; b : Type
var m : Monad
op fail : m a
op return : a -> m a
var f : Functor
op fmap : (a -> b) -> f a -> f b
op empty : List a
type Set : Functor
op emptySet : Set a
. ((fun __=__[Set _var_10_v10]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_10_v10 * Set _var_10_v10 ->? Unit)
((op fail[Set; _var_10_v10]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
Set _var_10_v10,
(op emptySet[_var_10_v10] : forall a : Type . Set a_v-1) :
Set _var_10_v10) :
Unit
. ((fun __=__[List _var_23_v23]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
List _var_23_v23 * List _var_23_v23 ->? Unit)
((op fail[List; _var_23_v23]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
List _var_23_v23,
(op empty[_var_23_v23] : forall a : Type . List a_v-1) :
List _var_23_v23) :
Unit
op map : (a -> b) -> List a -> List b
op __bind__ : m a * (a -> m b) -> m b
var g : a -> b
var x : m a
. ((fun __=__[List a -> List b]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
(List a -> List b) * (List a -> List b) ->? Unit)
(((op fmap[a; b; List]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(a -> b) -> List a -> List b)
(var g : a -> b) :
List a -> List b,
((op map[a; b]
: forall a : Type; b : Type .
(a_v-1 -> b_v-2) -> List a_v-1 -> List b_v-2) :
(a -> b) -> List a -> List b)
(var g : a -> b) :
List a -> List b) :
Unit
. ((fun __=__[m b] : forall a : Type . a_v-1 * a_v-1 ->? Unit) :
m b * m b ->? Unit)
((((op fmap[a; b; m]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(a -> b) -> m a -> m b)
(var g : a -> b) :
m a -> m b)
(var x : m a) :
m b,
((op __bind__[m; a; b]
: forall m : Monad; a : Type; b : Type .
m_v-1 a_v-2 * (a_v-2 -> m_v-1 b_v-3) -> m_v-1 b_v-3) :
m a * (a -> m b) -> m b)
(var x : m a,
(\ (var y : a)
.! ((op return[b; m]
: forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1) :
b -> m b)
((var g : a -> b)(var y : a) : b) :
m b) :
a -> m b) :
m b) :
Unit
%% Classes ---------------------------------------------------------------
Functor < Type -> Type
Monad < Functor
%% Type Constructors -----------------------------------------------------
List : Monad
Logical : Type := Unit ->? Unit
Pred : Type -> Type := \ a : Type . a_v-1 ->? Unit
Set : Functor
Unit : Type
__*__ : Type+ -> Type+ -> Type
__-->__ : Type- -> Type+ -> Type < (__-->?__, __->__)
__-->?__ : Type- -> Type+ -> Type < __->?__
__->__ : Type- -> Type+ -> Type < __->?__
__->?__ : Type- -> Type+ -> Type
a : Type %(var_1)%
b : Type %(var_2)%
f : Functor %(var_4)%
m : Monad %(var_3)%
%% Assumptions -----------------------------------------------------------
__/\__ : ? Unit * ? Unit ->? Unit %(fun)%
__<=>__ : ? Unit * ? Unit ->? Unit %(fun)%
__=__ : forall a : Type . a_v-1 * a_v-1 ->? Unit %(fun)%
__=>__ : ? Unit * ? Unit ->? Unit %(fun)%
__=e=__ : forall a : Type . a_v-1 * a_v-1 ->? Unit %(fun)%
__\/__ : ? Unit * ? Unit ->? Unit %(fun)%
__bind__
: forall m : Monad; a : Type; b : Type .
m_v-1 a_v-2 * (a_v-2 -> m_v-1 b_v-3) -> m_v-1 b_v-3
%(op)%
__if__ : ? Unit * ? Unit ->? Unit %(fun)%
__when__else__
: forall a : Type . a_v-1 * ? Unit * a_v-1 ->? a_v-1 %(fun)%
bottom : forall a : Type . a_v-1 %(fun)%
def__ : forall a : Type . a_v-1 ->? Unit %(fun)%
empty : forall a : Type . List a_v-1 %(op)%
emptySet : forall a : Type . Set a_v-1 %(op)%
fail : forall m : Monad; a : Type . m_v-1 a_v-2 %(op)%
false : Unit %(fun)%
fmap
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2
%(op)%
g : a -> b %(var)%
map
: forall a : Type; b : Type .
(a_v-1 -> b_v-2) -> List a_v-1 -> List b_v-2
%(op)%
not__ : ? Unit ->? Unit %(fun)%
return : forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1 %(op)%
true : Unit %(fun)%
x : m a %(var)%
�__ : ? Unit ->? Unit %(fun)%
%% Sentences -------------------------------------------------------------
((fun __=__[Set _var_10_v10]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_10_v10 * Set _var_10_v10 ->? Unit)
((op fail[Set; _var_10_v10]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
Set _var_10_v10,
(op emptySet[_var_10_v10] : forall a : Type . Set a_v-1) :
Set _var_10_v10) :
Unit
((fun __=__[List _var_23_v23]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
List _var_23_v23 * List _var_23_v23 ->? Unit)
((op fail[List; _var_23_v23]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
List _var_23_v23,
(op empty[_var_23_v23] : forall a : Type . List a_v-1) :
List _var_23_v23) :
Unit
((fun __=__[List a -> List b]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
(List a -> List b) * (List a -> List b) ->? Unit)
(((op fmap[a; b; List]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(a -> b) -> List a -> List b)
(var g : a -> b) :
List a -> List b,
((op map[a; b]
: forall a : Type; b : Type .
(a_v-1 -> b_v-2) -> List a_v-1 -> List b_v-2) :
(a -> b) -> List a -> List b)
(var g : a -> b) :
List a -> List b) :
Unit
((fun __=__[m b] : forall a : Type . a_v-1 * a_v-1 ->? Unit) :
m b * m b ->? Unit)
((((op fmap[a; b; m]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(a -> b) -> m a -> m b)
(var g : a -> b) :
m a -> m b)
(var x : m a) :
m b,
((op __bind__[m; a; b]
: forall m : Monad; a : Type; b : Type .
m_v-1 a_v-2 * (a_v-2 -> m_v-1 b_v-3) -> m_v-1 b_v-3) :
m a * (a -> m b) -> m b)
(var x : m a,
(\ (var y : a)
.! ((op return[b; m]
: forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1) :
b -> m b)
((var g : a -> b)(var y : a) : b) :
m b) :
a -> m b) :
m b) :
Unit
%% Diagnostics -----------------------------------------------------------
*** Hint 7.5, is type variable 'a'
*** Hint 7.8, is type variable 'b'
*** Hint 9.5, is type variable 'm'
*** Hint 15.5, is type variable 'f'
*** Hint , in type of '((op fail[_var_13_v13; _var_14_v14]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
_var_13_v13 _var_14_v14,
(op emptySet[_var_15_v15] : forall a : Type . Set a_v-1) :
Set _var_15_v15)'
type '_var_13_v13 _var_14_v14 * Set _var_15_v15'
is not unifiable with type 'Unit ->? _var_6_v6 * _var_6_v6'
*** Hint ,
expected: Monad
found: Functor
*** Error , in term'((fun __=__[Set _var_10_v10]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_10_v10 * Set _var_10_v10 ->? Unit)
((op fail[Set; _var_10_v10]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
Set _var_10_v10,
(op emptySet[_var_10_v10] : forall a : Type . Set a_v-1) :
Set _var_10_v10) :
Unit' of type 'Unit'
unresolved constraints '{ Set : Monad }'
*** Hint , in type of '((op fail[_var_26_v26; _var_27_v27]
: forall m : Monad; a : Type . m_v-1 a_v-2) :
_var_26_v26 _var_27_v27,
(op empty[_var_28_v28] : forall a : Type . List a_v-1) :
List _var_28_v28)'
type '_var_26_v26 _var_27_v27 * List _var_28_v28'
is not unifiable with type 'Unit ->? _var_19_v19 * _var_19_v19'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_37_v37 -> _var_38_v38' (17.14)
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_48_v48 -> _var_49_v49' (29.13)
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_62_v62 -> _var_63_v63' (17.14)
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_73_v73 -> _var_74_v74' (29.13)
*** Hint , in type of '(((op fmap[_var_62_v62; _var_63_v63; _var_64_v64]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(_var_62_v62 -> _var_63_v63) -> _var_64_v64 _var_62_v62 -> _var_64_v64 _var_63_v63)
(var g : a -> b) :
_var_64_v64 _var_62_v62 -> _var_64_v64 _var_63_v63,
((op map[_var_73_v73; _var_74_v74]
: forall a : Type; b : Type .
(a_v-1 -> b_v-2) -> List a_v-1 -> List b_v-2) :
(_var_73_v73 -> _var_74_v74) -> List _var_73_v73 -> List _var_74_v74)
(var g : a -> b) :
List _var_73_v73 -> List _var_74_v74)'
type '(_var_64_v64 a -> _var_64_v64 b) * (List a -> List b)'
is not unifiable with type 'Unit ->? _var_32_v32 * _var_32_v32'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_96_v96 -> _var_97_v97' (17.14)
*** Hint , in type of '(var x : m a)'
type 'm a'
is not unifiable with type 'Unit ->? _var_98_v98 _var_96_v96'
*** Hint , in type of '(var y : a)'
typename 'a' (37.26)
is not unifiable with type 'Unit ->? a'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type 'Unit ->? _var_118_v118'
*** Hint , untypable application (with result type: Unit ->? _var_118_v118)
'g(y)'
*** Hint , in type of '(var y : a)'
typename 'a' (37.26)
is not unifiable with type 'Unit ->? a'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type 'Unit ->? _var_126_v126'
*** Hint , untypable application (with result type: Unit ->? _var_126_v126)
'g(y)'
*** Hint , in type of '(var x : m a,
(\ (var y : a)
.! ((op return[_var_126_v126; _var_127_v127]
: forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1) :
_var_126_v126 -> _var_127_v127 _var_126_v126)
((var g : a -> b)(var y : a) : b) :
_var_127_v127 _var_126_v126) :
_var_123_v123 -> _var_127_v127 _var_126_v126)'
type 'm a * (a -> _var_127_v127 b)'
is not unifiable with type 'Unit ->? _var_105_v105 _var_106_v106 *
(_var_106_v106 -> _var_105_v105 _var_107_v107)'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type '_var_135_v135 -> _var_136_v136' (17.14)
*** Hint , in type of '(var x : m a)'
type 'm a'
is not unifiable with type 'Unit ->? _var_137_v137 _var_135_v135'
*** Hint , in type of '(var y : a)'
typename 'a' (37.26)
is not unifiable with type 'Unit ->? a'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type 'Unit ->? _var_157_v157'
*** Hint , untypable application (with result type: Unit ->? _var_157_v157)
'g(y)'
*** Hint , in type of '(var y : a)'
typename 'a' (37.26)
is not unifiable with type 'Unit ->? a'
*** Hint , in type of '(var g : a -> b)'
typename 'b' (33.14)
is not unifiable with type 'Unit ->? _var_165_v165'
*** Hint , untypable application (with result type: Unit ->? _var_165_v165)
'g(y)'
*** Hint , in type of '(var x : m a,
(\ (var y : a)
.! ((op return[_var_165_v165; _var_166_v166]
: forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1) :
_var_165_v165 -> _var_166_v166 _var_165_v165)
((var g : a -> b)(var y : a) : b) :
_var_166_v166 _var_165_v165) :
_var_162_v162 -> _var_166_v166 _var_165_v165)'
type 'm a * (a -> _var_166_v166 b)'
is not unifiable with type 'Unit ->? _var_144_v144 _var_145_v145 *
(_var_145_v145 -> _var_144_v144 _var_146_v146)'
*** Hint , in type of '((((op fmap[a; _var_136_v136; _var_137_v137]
: forall a : Type; b : Type; f : Functor .
(a_v-1 -> b_v-2) -> f_v-3 a_v-1 -> f_v-3 b_v-2) :
(a -> _var_136_v136) -> _var_137_v137 a -> _var_137_v137 _var_136_v136)
(var g : a -> b) :
_var_137_v137 a -> _var_137_v137 _var_136_v136)
(var x : m a) :
_var_137_v137 _var_136_v136,
((op __bind__[_var_144_v144; a; _var_146_v146]
: forall m : Monad; a : Type; b : Type .
m_v-1 a_v-2 * (a_v-2 -> m_v-1 b_v-3) -> m_v-1 b_v-3) :
_var_144_v144 a *
(a -> _var_144_v144 _var_146_v146) -> _var_144_v144 _var_146_v146)
(var x : m a,
(\ (var y : a)
.! ((op return[_var_146_v146; _var_158_v158]
: forall a : Type; m : Monad . a_v-1 -> m_v-2 a_v-1) :
_var_146_v146 -> _var_158_v158 _var_146_v146)
((var g : a -> b)(var y : a) : b) :
_var_158_v158 _var_146_v146) :
_var_154_v154 -> _var_158_v158 _var_146_v146) :
_var_144_v144 _var_146_v146)'
type 'm b * m b'
is not unifiable with type 'Unit ->? _var_90_v90 * _var_90_v90'