;;; Hey, emacs(1), this is -*- Mode: TDL; Coding: utf-8; -*- got it? ;;; ;;; finally, perform some post-core fix-up: make sure variable equations are ;;; being propagated, delete transfer-internal meta EPs, et al. ;;; ;;; ;;; _fix_me_ ;;; the way +copy+ works, we cannot change variable bindings; using a variable ;;; for PRED, on the other hand, results in a spurious overwrite with the PRED ;;; regular expression. we should fix the way +copy+ works! for now, just go ;;; for a larg-ish set of rules ... :-{. (24-jul-04; oe) ;;; equate_m_cf := monotonic_mtr & [ CONTEXT.RELS < [ PRED equate, ARG0 #e0 & e, ARG1 #e1 & e ] >, INPUT.RELS < [ PRED #pred, LBL #h0, ARG0 #e1, MARG #h3 & h, TPC #u4, PSV #u5 ] >, FILTER.RELS < [ PRED equate_mark, LBL #h0, ARG0 #h3 ] >, OUTPUT.RELS < [ PRED #pred, LBL #h0, ARG0 #e0, MARG #h3, TPC #u4, PSV #u5 ], [ PRED equate_mark, LBL #h0, ARG0 #h3 ] >, FLAGS.EQUAL < #e0, #e1, #h3 > ]. equate_p_cf := monotonic_mtr & [ CONTEXT.RELS < [ PRED intersective_equate, ARG0 #i0 & i, ARG1 #i1 & i ], [ PRED intersective_equate, ARG0 #h0 & h, ARG1 #h1 & h ] >, INPUT.RELS < [ PRED #pred, LBL #h1, ARG0 #e2 & e, ARG1 #i1, ARG2 #x0 & x ] >, FILTER.RELS < [ PRED equate_mark, ARG0 #e2 ] >, OUTPUT.RELS < [ PRED #pred, LBL #h0, ARG0 #e2, ARG1 #i0, ARG2 #x0 & x ], [ PRED equate_mark, ARG0 #e2 ] >, FLAGS.SUBSUME < #i0, #i1, #h0, #h1, #e2, #x0 > ]. equate_a_cf := monotonic_mtr & [ CONTEXT.RELS < [ PRED intersective_equate, ARG0 #i0 & i, ARG1 #i1 & i ], [ PRED intersective_equate, ARG0 #h0 & h, ARG1 #h1 & h ] >, INPUT.RELS < [ PRED #pred, LBL #h1, ARG0 #e2 & e, ARG1 #i1 ] >, FILTER.RELS < [ PRED equate_mark, ARG0 #e2 ] >, OUTPUT.RELS < [ PRED #pred, LBL #h0, ARG0 #e2, ARG1 #i0 ], [ PRED equate_mark, ARG0 #e2 ] >, FLAGS.SUBSUME < #i0, #i1, #h0, #h1, #e2 > ]. ;;; ;;; in some case, we (need to) introduce new indices and want them to pick up ;;; number (or other properties) from another variable. ;;; num_equate_sg_cf := monotonic_mtr & [ CONTEXT.RELS < [ PRED num_equate, ARG0 #x0, ARG1 #x1 ], [ ARG0 #x1 & x & [ NUM sg ] ] >, INPUT.RELS < [ LBL #h0, ARG0 #x0 & [ NUM pl ] ] >, OUTPUT.RELS < +copy+ & [ ARG0 [ NUM sg ] ] > ]. num_equate_pl_cf := monotonic_mtr & [ CONTEXT.RELS < [ PRED num_equate, ARG0 #x0, ARG1 #x1 ], [ ARG0 #x1 & x & [ NUM pl ] ] >, INPUT.RELS < [ LBL #h0, ARG0 #x0 & [ NUM sg ] ] >, OUTPUT.RELS < +copy+ & [ ARG0 [ NUM pl ] ] > ]. equate_ditch_cf := elision_mtr & [ INPUT.RELS < [ PRED equate ] > ]. mark_ditch_cf := elision_mtr & [ INPUT.RELS < [ PRED equate_mark ] > ]. ;;; ;;; _fix_me_ ;;; see comments on `adjective_prp_participle_mtr' definition for the rationale ;;; behind the following mechanism. (29-may-06; oe) ;;; progressive_cf := monotonic_mtr & [ INPUT.RELS < [ LBL #h4 & h, ARG0 #e2 & e ], [ PRED progressive_mark, LBL #h4, ARG0 #e2 ] >, OUTPUT.RELS < +copy+ & [ ARG0 [ PROG +, TENSE untensed ] ] >, FLAGS.EQUAL < #h4, #e2 > ]. progressive_ditch_cf := elision_mtr & [ INPUT.RELS < [ PRED progressive_mark ] > ]. ;;; ;;; something in the same spirit, for the `n+n_n+p+q+n_sg_mtr' type, et al. we ;;; need to make sure these rules are invoked after the `num_equate' group of ;;; rules, so as to propagate the original values. ;;; sg_cf := monotonic_mtr & [ INPUT.RELS < [ PRED "~_n_", LBL #h0 & h, ARG0 #x1 & x ], [ PRED sg_mark, LBL #h0, ARG0 #x1 ] >, OUTPUT.RELS < +copy+ & [ ARG0 [ PERS 3, NUM sg, GRIND - ] ] >, FLAGS.EQUAL < #h0, #x1 > ]. pl_cf := monotonic_mtr & [ INPUT.RELS < [ PRED "~_n_", LBL #h0 & h, ARG0 #x1 & x ], [ PRED pl_mark, LBL #h0, ARG0 #x1 ] >, OUTPUT.RELS < +copy+ & [ ARG0 [ PERS 3, NUM pl, GRIND - ] ] >, FLAGS.EQUAL < #h0, #x1 > ]. number_mark_ditch_cf := elision_mtr & [ INPUT.RELS < [ PRED number_mark ] > ].