(only non hidden objects are presented)
| DISP | curry_df | curry <f:Function:L>== curry <f> |
| ABS | curry | curry f == |
| THM | curry_wf | |
| DISP | uncurry_df | uncurry <f:function:L>== uncurry <f> |
| ABS | uncurry | uncurry f == |
| THM | uncurry_wf | |
| THM | curry_uncurry_inverse | |
| THM | uncurry_curry_inverse | |
| DISP | letrec_df | (letrec <f:Name> <b:Args & Body:L>) == (letrec <f> <b>) |
| ABS | letrec | (letrec f b[f]) == Y ( |
| DISP | letrec_body_df | = <b:Body:L> == = <b> |
| ABS | letrec_body | = b == b |
| DISP | letrec_arg_df | <x:Arg> <b:Args & Body:L> == <x> <b> |
| ABS | letrec_arg | x b[x] == |
| ML | letrec_unroll | let letrec_unrollTopC =
FwdMacroC
`letrec_unrollTopC`
(UnfoldC `letrec`
ANDTHENC HigherC YUnrollC
ANDTHENC ReduceC
ANDTHENC FoldC `letrec`)
|
| ML | letrec_tac | let LetrecMemberCD (name: token) = Unfold name 0 THEN Rewrite (HigherC letrec_unrollC) 0 THEN Auto ;; |
| DISP | theta_df | T== T |
| ABS | theta | T == ( |
| ML | theta_unroll | let theta_unrollC =
FwdMacroC
`theta_unrollC`
(AllC [UnfoldC `theta`;
HigherC RedexC;
FoldC `theta`;
NthC 1 RedexC;
NthC 1 RedexC])
|
| DISP | applicative_Y_df | Y |
| ABS | applicative_Y | Y |
| ML | applicative_Y_unroll | let applicative_Y_unrollC =
FwdMacroC
`applicative_Y_unrollC`
(AllC [UnfoldC `applicative_Y`;
(SweepUpC RedexC)
])
|