unfold Given < Class , F , A , B , C , In1 , Out2 , Out1 > ( given ) : { a : Arbitrary < A > ; ab : Arbitrary < ( ( a : A ) => B ) > ; afb : Arbitrary < ( ( a : A ) => Kind < F , In1 , Out2 , Out1 , B > ) > ; b : Arbitrary < B > ; ba : Arbitrary < ( ( a : B ) => A ) > ; bc : Arbitrary < ( ( a : B ) => C ) > ; bfc : Arbitrary < ( ( a : B ) => Kind < F , In1 , Out2 , Out1 , C > ) > ; c : Arbitrary < C > ; cb : Arbitrary < ( ( a : C ) => B ) > ; equalsA : Equivalence < A > ; equalsB : Equivalence < B > ; equalsC : Equivalence < C > ; equalsFa : Equivalence < Kind < F , In1 , Out2 , Out1 , A > > ; equalsFb : Equivalence < Kind < F , In1 , Out2 , Out1 , B > > ; equalsFc : Equivalence < Kind < F , In1 , Out2 , Out1 , C > > ; F : Kind < Class , In1 , Out2 , Out1 , F > ; fa : Arbitrary < Kind < F , In1 , Out2 , Out1 , A > > ; fabOf : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : A ) => B ) > > ) ; fb : Arbitrary < Kind < F , In1 , Out2 , Out1 , B > > ; fbcOf : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : B ) => C ) > > ) ; fc : Arbitrary < Kind < F , In1 , Out2 , Out1 , C > > ; getArbitrary : LiftArbitrary < F , In1 , Out2 , Out1 > ; getEquivalence : LiftEquivalence < F , In1 , Out2 , Out1 > ; Monoid ?: Monoid < A > ; } Type Parameters Class extends TypeLambda F extends TypeLambda A B = A C = A In1 = never Out2 = unknown Out1 = unknown Returns { a : Arbitrary < A > ; ab : Arbitrary < ( ( a : A ) => B ) > ; afb : Arbitrary < ( ( a : A ) => Kind < F , In1 , Out2 , Out1 , B > ) > ; b : Arbitrary < B > ; ba : Arbitrary < ( ( a : B ) => A ) > ; bc : Arbitrary < ( ( a : B ) => C ) > ; bfc : Arbitrary < ( ( a : B ) => Kind < F , In1 , Out2 , Out1 , C > ) > ; c : Arbitrary < C > ; cb : Arbitrary < ( ( a : C ) => B ) > ; equalsA : Equivalence < A > ; equalsB : Equivalence < B > ; equalsC : Equivalence < C > ; equalsFa : Equivalence < Kind < F , In1 , Out2 , Out1 , A > > ; equalsFb : Equivalence < Kind < F , In1 , Out2 , Out1 , B > > ; equalsFc : Equivalence < Kind < F , In1 , Out2 , Out1 , C > > ; F : Kind < Class , In1 , Out2 , Out1 , F > ; fa : Arbitrary < Kind < F , In1 , Out2 , Out1 , A > > ; fabOf : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : A ) => B ) > > ) ; fb : Arbitrary < Kind < F , In1 , Out2 , Out1 , B > > ; fbcOf : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : B ) => C ) > > ) ; fc : Arbitrary < Kind < F , In1 , Out2 , Out1 , C > > ; getArbitrary : LiftArbitrary < F , In1 , Out2 , Out1 > ; getEquivalence : LiftEquivalence < F , In1 , Out2 , Out1 > ; Monoid ?: Monoid < A > ; } a : Arbitrary < A > ab : Arbitrary < ( ( a : A ) => B ) > afb : Arbitrary < ( ( a : A ) => Kind < F , In1 , Out2 , Out1 , B > ) > b : Arbitrary < B > ba : Arbitrary < ( ( a : B ) => A ) > bc : Arbitrary < ( ( a : B ) => C ) > bfc : Arbitrary < ( ( a : B ) => Kind < F , In1 , Out2 , Out1 , C > ) > c : Arbitrary < C > cb : Arbitrary < ( ( a : C ) => B ) > equalsA : Equivalence < A > equalsB : Equivalence < B > equalsC : Equivalence < C > equals Fa : Equivalence < Kind < F , In1 , Out2 , Out1 , A > > equals Fb : Equivalence < Kind < F , In1 , Out2 , Out1 , B > > equals Fc : Equivalence < Kind < F , In1 , Out2 , Out1 , C > > fa : Arbitrary < Kind < F , In1 , Out2 , Out1 , A > > fab Of : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : A ) => B ) > > ) fb : Arbitrary < Kind < F , In1 , Out2 , Out1 , B > > fbc Of : ( ( of : ( < T > ( a : T ) => Kind < F , In1 , Out2 , Out1 , T > ) ) => Arbitrary < Kind < F , In1 , Out2 , Out1 , ( ( a : B ) => C ) > > ) fc : Arbitrary < Kind < F , In1 , Out2 , Out1 , C > > Optional
Monoid ?: Monoid < A >
Unfold a ParameterizedGiven into an equivalence and arbitrary required by typeclass tests.