Double.hascasl.output revision 96646aed2ae087b942ae23f15bbe729a8f7c43d3
var a : Type; b < a
op twice2 : forall a : Type; b < a : Type . (a ->? b) -> a ->? b
= \ ((var f : a ->? b))((var x : a))
. (var f : a ->? b) ((var f : a ->? b) (var x : a)) as b
op twice3 : forall a : Type; b < a : Type . (a ->? b) * a ->? b
= \ ((var f : a ->? b), (var x : a))
. (var f : a ->? b) ((var f : a ->? b) (var x : a))
as (a ->? b) * a ->? b
op twice : forall a : Type; b < a : Type . (a ->? b) -> a ->? b
= \ ((var f : a ->? a))((var x : a))
. (var f : a ->? a) ((var f : a ->? a) (var x : a))
as (a ->? b) -> a ->? b
var f : a ->? b; x : a
. (fun __=__[b] : forall a : Type . a * a ->? Unit)
((((op twice[a; b] :
forall a : Type; b < a : Type . (a ->? b) -> a ->? b)
(var f : a ->? b))
(var x : a),
(var f : a ->? b) ((var f : a ->? b) (var x : a))))
%% Type Constructors -----------------------------------------------------
? : +Type -> Type
Logical : Type := ? Unit
Pred : -Type -> Type := \ a : -Type . a ->? Unit
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 < a : Type %(var_2)%
%% Assumptions -----------------------------------------------------------
__/\__ : ? Unit * ? Unit ->? Unit %(fun)%
__<=>__ : ? Unit * ? Unit ->? Unit %(fun)%
__=__ : forall a : Type . a * a ->? Unit %(fun)%
__=>__ : ? Unit * ? Unit ->? Unit %(fun)%
__=e=__ : forall a : Type . a * a ->? Unit %(fun)%
__\/__ : ? Unit * ? Unit ->? Unit %(fun)%
__if__ : ? Unit * ? Unit ->? Unit %(fun)%
__when__else__ : forall a : Type . a * ? Unit * a ->? a %(fun)%
bottom : forall a : Type . a %(fun)%
def__ : forall a : Type . a ->? Unit %(fun)%
false : Unit %(fun)%
not__ : ? Unit ->? Unit %(fun)%
true : Unit %(fun)%
twice
: forall a : Type; b < a : Type . (a ->? b) -> a ->? b
%(op)%
= \ ((var f : a ->? a))((var x : a))
. (var f : a ->? a) ((var f : a ->? a) (var x : a))
as (a ->? b) -> a ->? b
twice2
: forall a : Type; b < a : Type . (a ->? b) -> a ->? b
%(op)%
= \ ((var f : a ->? b))((var x : a))
. (var f : a ->? b) ((var f : a ->? b) (var x : a)) as b
twice3
: forall a : Type; b < a : Type . (a ->? b) * a ->? b
%(op)%
= \ ((var f : a ->? b), (var x : a))
. (var f : a ->? b) ((var f : a ->? b) (var x : a))
as (a ->? b) * a ->? b
�__ : ? Unit ->? Unit %(fun)%
%% Variables -------------------------------------------------------------
f : a ->? b
x : a
%% Sentences -------------------------------------------------------------
forall f : a ->? b; x : a
. ((twice2 (f)) x) = (f (f (x)) as b) %(def_twice2)%
twice3 =
(\ (f, x) . f (f (x)) as (a ->? b) * a ->? b) %(def_twice3)%
twice =
(\ (f)(x) . f (f (x)) as (a ->? b) -> a ->? b) %(def_twice)%
((twice (f)) x) = (f (f (x)))
%% Diagnostics -----------------------------------------------------------
*** Hint 1.6, is type variable 'a'
*** Hint 9.7, not a kind 'a ->? b'
*** Hint 9.20, not a class 'a'