*  rec3.ref

*$STRATEGY Applicative;

RecNumber {
   e.1 = <Rec ( ) e.1>;
 }

Rec {
  (e.1)  =  e.1;
  (e.1) e.3 (e.2) = <Rec1 (e.2) <Rec ((e.2) e.1) e.3> >;
 }

Rec1 {
  ( ) = ;
  ( ) ('1' e.2) e.3 = (e.2) <Rec1a e.3>;
  ('1' e.1) ( ) e.3 = <Rec1 (e.1) e.3>;
  ('1' e.1) ('1' e.2) (e.a) e.3 = (e.2) <Rec1b (e.1) (e.3) e.a>;
 }

Rec1a {
   = ;
  ('1' e.2) e.3 = (e.2) <Rec1a e.3>;
 }

Rec1b {
  (e.1) (e.3) = <Rec1 (e.1) e.3>;
  (e.1) ((e.a) e.3) '1' e.2 = (e.2) <Rec1b (e.1) (e.3) e.a>;
 }