CMonad.hascasl.output revision d48085f765fca838c1d972d2123601997174583d
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_12_v12]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_12_v12 * Set _var_12_v12 ->? Unit)
((op fail[_var_12_v12; Set]
: forall a : Type; m : Monad . m_v-2 a_v-1) :
Set _var_12_v12,
(op emptySet[_var_12_v12] : forall a : Type . Set a_v-1) :
Set _var_12_v12) :
Unit
. ((fun __=__[List _var_27_v27]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
List _var_27_v27 * List _var_27_v27 ->? Unit)
((op fail[_var_27_v27; List]
: forall a : Type; m : Monad . m_v-2 a_v-1) :
List _var_27_v27,
(op empty[_var_27_v27] : forall a : Type . List a_v-1) :
List _var_27_v27) :
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__[a; b; m]
: forall a : Type; b : Type; m : Monad .
m_v-3 a_v-1 * (a_v-1 -> m_v-3 b_v-2) -> m_v-3 b_v-2) :
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 -----------------------------------------------------
? : +Type -> Type
List : Monad
Logical : Type := ? 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 -> +Type -> +Type -> Type
__-->__ : -Type -> +Type -> Type < (__-->?__, __->__)
__-->?__ : -Type -> +Type -> Type < __->?__
__->__ : -Type -> +Type -> Type < __->?__
__->?__ : -Type -> +Type -> Type
%% Type Variables --------------------------------------------------------
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 a : Type; b : Type; m : Monad .
m_v-3 a_v-1 * (a_v-1 -> m_v-3 b_v-2) -> m_v-3 b_v-2
%(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 a : Type; m : Monad . m_v-2 a_v-1 %(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)%
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)%
�__ : ? Unit ->? Unit %(fun)%
%% Variables -------------------------------------------------------------
g : a -> b
x : m a
%% Sentences -------------------------------------------------------------
((fun __=__[Set _var_12_v12]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_12_v12 * Set _var_12_v12 ->? Unit)
((op fail[_var_12_v12; Set]
: forall a : Type; m : Monad . m_v-2 a_v-1) :
Set _var_12_v12,
(op emptySet[_var_12_v12] : forall a : Type . Set a_v-1) :
Set _var_12_v12) :
Unit
((fun __=__[List _var_27_v27]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
List _var_27_v27 * List _var_27_v27 ->? Unit)
((op fail[_var_27_v27; List]
: forall a : Type; m : Monad . m_v-2 a_v-1) :
List _var_27_v27,
(op empty[_var_27_v27] : forall a : Type . List a_v-1) :
List _var_27_v27) :
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__[a; b; m]
: forall a : Type; b : Type; m : Monad .
m_v-3 a_v-1 * (a_v-1 -> m_v-3 b_v-2) -> m_v-3 b_v-2) :
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 25.8, constrain 'Set : Monad' is unprovable
known kinds are: [ Functor ]
*** Error 25.8, in term'((fun __=__[Set _var_12_v12]
: forall a : Type . a_v-1 * a_v-1 ->? Unit) :
Set _var_12_v12 * Set _var_12_v12 ->? Unit)
((op fail[_var_12_v12; Set]
: forall a : Type; m : Monad . m_v-2 a_v-1) :
Set _var_12_v12,
(op emptySet[_var_12_v12] : forall a : Type . Set a_v-1) :
Set _var_12_v12) :
Unit' of type 'Unit'
unresolved constraints '{ Set : Monad }'
*** Hint 33.7, not a class 'a'
*** Hint 33.7, not a class 'b'
*** Hint 33.23, not a kind 'm a'