# Rules not feeding each other in ace transfer

**URL:** <https://delphinqa.ling.washington.edu/t/rules-not-feeding-each-other-in-ace-transfer/903>\
**Category:** ACE\
**Tags:** mt\
**Created:** [March 9, 2023, 3:08pm UTC](https://delphinqa.ling.washington.edu/t/rules-not-feeding-each-other-in-ace-transfer/903 "2023-03-09T15:08:25Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ebender](https://delphinqa.ling.washington.edu/letter_avatar_proxy/v4/letter/e/34f0e0/32.png) [@ebender](https://delphinqa.ling.washington.edu/u/ebender)\
**Post date:** [March 9, 2023, 3:08pm UTC](https://delphinqa.ling.washington.edu/t/rules-not-feeding-each-other-in-ace-transfer/903/1 "2023-03-09T15:08:25Z")

</div>

I have a set of transfer rules that each work individually but don’t seem to be feeding each other as I expect them to. I’m using ace for transfer. Here is an example pair of rules:

```auto
be-located-mtr := monotonic_mtr &                                                                                       
[ INPUT [ RELS < [ PRED "_be_located_v_rel",                                                                            
  LBL #lbl,                                                                                                             
  ARG0 #arg0,                                                                                                           
  ARG1 #arg1,                                                                                                           
  ARG2 #arg2 ] >,                                                                                                       
      HCONS < > ],                                                                                                      
  OUTPUT [ RELS < [ PRED "_in_p_rel",                                                                                   
   LBL #lbl,                                                                                                            
   ARG0 #arg0,                                                                                                          
   ARG1 #arg1,                                                                                                          
   ARG2 #arg2 ] > ]].     

in-be_in-mtr := monotonic_mtr &                                                                                         
[ INPUT [ RELS < [ PRED "_in_p_rel",                                                                                    
                   LBL #lbl,                                                                                            
                   ARG0 #arg0,                                                                                          
                   ARG1 #arg1,                                                                                          
                   ARG2 #arg2 ] >],                                                                                     
  OUTPUT [ RELS < [ PRED "_be.in_v_rel",                                                                                
                    LBL #lbl,                                                                                           
                    ARG0 #arg0,                                                                                         
                    ARG1 #arg1,                                                                                         
                    ARG2 #arg2 ] > ]].   

```

And the type monotonic\_mtr and its supertype are defined like this:

```auto
monotonic_mtr := mrs_transfer_rule &                                                                                    
[CONTEXT [ LTOP #h, INDEX #i],                                                                                        
  INPUT [LTOP #h, INDEX #i],                                                                                          
  OUTPUT [LTOP #h, INDEX #i] ].        

mrs_transfer_rule := top &                                                                                             
[ FILTER mrs,                                                                                                           
  CONTEXT mrs,                                                                                                          
  INPUT mrs,                                                                                                            
  OUTPUT mrs,                                                                                                           
  FLAGS flags ].                                                                                                        

```

Do I have the wrong expectation about rules feeding each other?

(For anyone wondering why I’d want that pair of rules, this is in the context of the MT demo at the end of Ling 567, accommodating slightly different approaches to this construction in different grammars.)

---

<div class="post-metadata">

**Author:** ![ebender](https://delphinqa.ling.washington.edu/letter_avatar_proxy/v4/letter/e/34f0e0/32.png) [@ebender](https://delphinqa.ling.washington.edu/u/ebender)\
**Post date:** [March 9, 2023, 3:08pm UTC](https://delphinqa.ling.washington.edu/t/rules-not-feeding-each-other-in-ace-transfer/903/2 "2023-03-09T15:08:44Z")

</div>

p.s. I meant to tag @sweaglesw here 🙂

---

<div class="post-metadata">

**Author:** ![ebender](https://delphinqa.ling.washington.edu/letter_avatar_proxy/v4/letter/e/34f0e0/32.png) [@ebender](https://delphinqa.ling.washington.edu/u/ebender)\
**Post date:** [March 11, 2026, 3:23pm UTC](https://delphinqa.ling.washington.edu/t/rules-not-feeding-each-other-in-ace-transfer/903/3 "2026-03-11T15:23:46Z")

</div>

Greetings all from week 10 of 567 – where I am hitting this same issue again. I know that transfer rules can feed each other in principle because if we’re not careful they spin. But I can’t get these two to do it, when I want them to feed each other.

Rule 1:

```auto
hungry-v-a-mtr := monotonic_omtr &
[ OUTPUT [ RELS < [PRED "_hungry_a_rel",
                   LBL #lbl,
                   ARG0 #arg0,
                   ARG1 #arg1 ] > ],
  INPUT [ RELS < [ PRED "_hungry_v_rel",
                     LBL #lbl,
                     ARG0 #arg0,
                     ARG1 #arg1 ] > ]].

```

Rule 2:

```auto
hungry-be-hungry-mtr := monotonic_mtr &
[ INPUT [ RELS < [ PRED "_hungry_a_rel",
                   LBL #lbl,
                   ARG0 #arg0,
                   ARG1 #arg1 ] > ],
  OUTPUT [ RELS < [ PRED "_be.hungry_v_rel",
                    LBL #lbl,
                    ARG0 #arg0,
                    ARG1 #arg1 ] > ]].

```

I’m very curious if this is something to do with the way the rules are written, or perhaps some flag (but that seems less likely).

Since I’m using ace as the transfer engine, this is partly a question for @sweaglesw …

(Edited to remove gratuitous HCONS stuff in Rule 2, but this doesn’t fix the issue.)
