rebracket-conj-gpr := rebracket_coord_gpr. conj-s-rev-and-gpr := conj_s_reverse_gpr & [ INPUT.RELS , OUTPUT.RELS ]. conj-s-rev-or-gpr := conj_s_reverse_gpr & [ INPUT.RELS , OUTPUT.RELS ]. conj-s-rev-and-neg-gpr := conj_s_reverse_neg_gpr & [ INPUT.RELS , OUTPUT.RELS ]. conj-s-rev-or-neg-gpr := conj_s_reverse_neg_gpr & [ INPUT.RELS , OUTPUT.RELS ]. ;; move these to follow conj-pairing rules #| ;; |B and C| => |... and it is the case that B and that C| ;; ;; Let's try doing without this for outermost conjunction. ;;thecase_top_gpr := conj_s_thecase_top_gpr & ;; [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase_top_gpr", ARG0.PORD pr133 ] ]. thecase-cleft-gpr := conj_s_thecase_nontop_cleft_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase-cleft-gpr", ARG0.PORD pr134 ] ]. thecase-cright-gpr := conj_s_thecase_nontop_cright_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase-cright-gpr", ARG0.PORD pr135 ] ]. |# ifnot-to-unless-gpr := if_not_to_unless_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "ifnot-to-unless-gpr", ARG0.PORD pr002 ] ]. ;; Drop "the case that" with "unless" ;; unless-the-case-gpr := unless_the_case_to_unless_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "unless-the-case-gpr", ARG0.PORD pr003 ] ]. same-to-and-loc-op-gpr := and_same_loc_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "same-to-and-loc-op-gpr", ARG0.PORD pr005 ] ]. same-to-and-size-op-gpr := and_same_size_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "same-to-and-size-op-gpr", ARG0.PORD pr006 ] ]. ;; binary coord of subjects coord-subj-comp-op-gpr := coord_subj_compar_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-comp-op-gpr", ARG0.PORD pr007 ] ]. coord-subj-three-op-gpr := coord_subj_threearg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-three-op-gpr", ARG0.PORD pr008 ] ]. coord-subj-two-neg-op-gpr := coord_subj_twoarg_neg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-neg-op-gpr", ARG0.PORD pr009 ] ]. coord-subj-two-pos-op-gpr := coord_subj_twoarg_pos_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-pos-op-gpr", ARG0.PORD pr010 ] ]. coord-subj-two-noprop-neg-op-gpr := coord_subj_twoarg_noprop_neg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-noprop-neg-op-gpr", ARG0.PORD pr011 ] ]. coord-subj-two-noprop-op-gpr := coord_subj_twoarg_noprop_pos_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-noprop-op-gpr", ARG0.PORD pr012 ] ]. coord-subj-one-neg-op-gpr := coord_subj_onearg_neg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-one-neg-op-gpr", ARG0.PORD pr013 ] ]. coord-subj-one-pos-op-gpr := coord_subj_onearg_pos_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-one-pos-op-gpr", ARG0.PORD pr014 ] ]. ;; n-ary coord coord-subj-comp-nary-op-gpr := coord_subj_compar_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-comp-nary-op-gpr", ARG0.PORD pr015 ] ]. coord-subj-three-nary-op-gpr := coord_subj_threearg_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-three-nary-op-gpr", ARG0.PORD pr016 ] ]. coord-subj-two-neg-nary-op-gpr := coord_subj_twoarg_neg_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-neg-nary-op-gpr", ARG0.PORD pr017 ] ]. coord-subj-two-pos-nary-op-gpr := coord_subj_twoarg_pos_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-pos-nary-op-gpr", ARG0.PORD pr018 ] ]. coord-subj-two-noprop-neg-nary-op-gpr := coord_subj_twoarg_noprop_neg_nary_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-noprop-neg-nary-op-gpr", ARG0.PORD pr019 ] ]. coord-subj-two-noprop-nary-op-gpr := coord_subj_twoarg_noprop_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-two-noprop-nary-op-gpr", ARG0.PORD pr020 ] ]. coord-subj-one-neg-nary-op-gpr := coord_subj_onearg_neg_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-one-neg-nary-op-gpr", ARG0.PORD pr021 ] ]. coord-subj-one-pos-nary-op-gpr := coord_subj_onearg_pos_nary_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-subj-one-pos-nary-op-gpr", ARG0.PORD pr022 ] ]. and-neg-but-op-gpr := and_neg_to_but_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "and-neg-but-op-gpr", ARG0.PORD pr023 ] ]. ;; B is a large cube ;; adj-predn-gpr := adj_and_predn_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "adj-predn-gpr", ARG0.PORD pr025 ] ]. ;; 2019-06-29 - Since we always reverse S conjuncts, don't need this one ;predn-adj-gpr := predn_and_adj_gpr & ; [ OUTPUT.RELS.LIST.FIRST [ CARG "predn-adj-gpr", ARG0.PORD pr026 ] ]. ;; B is smaller than C and (is) larger than D ;; coord-vp-two-op-gpr := coord_vp_twoarg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-vp-two-op-gpr", ARG0.PORD pr027 ] ]. coord-vp-one-op-gpr := coord_vp_onearg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-vp-one-op-gpr", ARG0.PORD pr028 ] ]. ;; "B is larger than C or D" ;; common-vp-comp-op-gpr := shared_vp_comp_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-comp-op-gpr", ARG0.PORD pr029 ] ]. ;; "B is in the same column as C or D" ;; common-vp-same-n-op-gpr := shared_vp_same_n_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-same-n-op-gpr", ARG0.PORD pr030 ] ]. ;; "B is to the right of C or D" ;; common-vp-dir-op-gpr := shared_vp_dir_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-dir-op-gpr", ARG0.PORD pr031 ] ]. ;; "B is in front of C or D" ;; common-vp-loc-op-gpr := shared_vp_loc_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-loc-op-gpr", ARG0.PORD pr032 ] ]. ;; "B is not in front of C or D" ;; common-vp-loc-neg-op-gpr := shared_vp_loc_neg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-loc-neg-op-gpr", ARG0.PORD pr033 ] ]. ;; "B is between C and D or E and F" ;; common-vp-threearg-op-gpr := shared_vp_threearg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-vp-threearg-op-gpr", ARG0.PORD pr034 ] ]. ;; "to the right or to the left of D" ;; common-ppof-left-op-gpr := shared_ppof_left_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-ppof-left-op-gpr", ARG0.PORD pr035 ] ]. common-ppof-right-op-gpr := shared_ppof_right_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-ppof-right-op-gpr", ARG0.PORD pr036 ] ]. ;; "to the right or left of D" ;; common-to-the-op-gpr := shared_to_the_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-to-the-op-gpr", ARG0.PORD pr037 ] ]. ;; Note - the following set need to be kept in this order, and roughly here ;; (not-to-nor and common_pred) ;; ;; Replace not(or) with nor ;; Order: follow coord_vp to create conjoined VPs needed as input ;; not-or-to-nor-op-gpr := neg_or_to_nor_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "not-or-to-nor-op-gpr", ARG0.PORD pr040 ] ]. ;; Replace not_the_case(or) with nor not-nom-or-to-nor-one-op-gpr := neg_nom_or_to_nor_onearg_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "not-nom-or-to-nor-one-op-gpr", ARG0.PORD pr041 ] ]. not-nom-or-to-nor-comp-op-gpr := neg_nom_or_to_nor_comp_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "not-nom-or-to-nor-comp-op-gpr", ARG0.PORD pr042 ] ]. not-nom-or-to-nor-two-op-gpr := neg_nom_or_to_nor_twoarg_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "not-nom-or-to-nor-two-op-gpr", ARG0.PORD pr043 ] ]. ;; "B is a cube or a tetrahedron" ;; common-pred-op-gpr := shared_pred_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-pred-op-gpr", ARG0.PORD pr044 ] ]. ifthen-to-onlyif-gpr := if_then_to_only_if_gpr & [ OUTPUT.RELS.LIST < [ CARG "ifthen-to-onlyif-gpr", ARG0.PORD pr045 ], ... > ]. ;; "B is small, and it is a cube" ;; conj-pro-subj-unamb-gpr := coord_s_pro_subj_unambig_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "conj-pro-subj-unamb-gpr", ARG0.PORD pr046 ] ]. ;; "B is larger than C, and it (i.e., B) is a cube" ;; conj-pro-subj-ambig-gpr := coord_s_pro_subj_ambig_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "conj-pro-subj-ambig-gpr", ARG0.PORD pr047 ] ]. ;; "If B is a cube, it is small" ;; cond-pro-subj-gpr := cond_s_pro_subj_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-gpr", ARG0.PORD pr048 ] ]. cond-pro-subj-ambig-gpr := cond_s_pro_subj_ambig_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-ambig-gpr", ARG0.PORD pr049 ] ]. cond-pro-subj-embed-cons-gpr := cond_s_pro_subj_embed_cons_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-embed-cons-gpr", ARG0.PORD pr050 ] ]. cond-pro-subj-embed-cons-neg-gpr := cond_s_pro_subj_embed_cons_neg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-embed-cons-neg-gpr", ARG0.PORD pr051 ] ]. cond-pro-subj-embed-ant-gpr := cond_s_pro_subj_embed_ant_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-embed-ant-gpr", ARG0.PORD pr052 ] ]. cond-pro-subj-embed-ant-neg-gpr := cond_s_pro_subj_embed_ant_neg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-embed-ant-neg-gpr", ARG0.PORD pr053 ] ]. unless-pro-subj-gpr := unless_s_pro_subj_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "unless-pro-subj-gpr", ARG0.PORD pr054 ] ]. unless-pro-subj-ambig-gpr := unless_s_pro_subj_ambig_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "unless-pro-subj-ambig-gpr", ARG0.PORD pr055 ] ]. ;; "B is small only if it is a cube" ;; onlyif-pro-subj-gpr := onlyif_s_pro_subj_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "onlyif-pro-subj-gpr", ARG0.PORD pr056 ] ]. ;; "B is small if and only if it is a cube" ;; iff-pro-subj-gpr := bicond_s_pro_subj_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-pro-subj-gpr", ARG0.PORD pr057 ] ]. ;; "B is a cube if and only if it is either medium or small" ;; iff-pro-subj-crdvp-gpr := bicond_s_pro_subj_coordvp_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-pro-subj-crdvp-gpr", ARG0.PORD pr058 ] ]. ;; If B is large, then C is ;; vp-ellip-if-pos-one-gpr := vp_ellipsis_if_pos_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-one-gpr", ARG0.PORD pr059 ] ]. ;; If B is larger than D, then C is ;; vp-ellip-if-pos-two-comp-gpr := vp_ellipsis_if_pos_twoarg_comp_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-two-comp-gpr", ARG0.PORD pr060 ] ]. ;; If B is large, then C isn't ;; vp-ellip-if-neg-one-gpr := vp_ellipsis_if_neg_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-neg-one-gpr", ARG0.PORD pr061 ] ]. ;; If B is a cube, then C is ;; vp-ellip-if-pos-two-gpr := vp_ellipsis_if_pos_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-two-gpr", ARG0.PORD pr062 ] ]. ;; If B is a cube, then C isn't ;; vp-ellip-if-neg-two-gpr := vp_ellipsis_if_neg_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-neg-two-gpr", ARG0.PORD pr063 ] ]. ;; C is large if and only if B is large. ;; vp-ellip-iff-pos-one-gpr := vp_ellipsis_iff_pos_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-iff-pos-one-gpr", ARG0.PORD pr064 ] ]. ;; C is larger than D if and only if B is. ;; vp-ellip-iff-pos-two-comp-gpr := vp_ellipsis_iff_pos_twoarg_comp_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-iff-pos-two-comp-gpr", ARG0.PORD pr065 ] ]. ;; C is large if and only if B isn't ;; vp-ellip-iff-neg-one-gpr := vp_ellipsis_iff_neg_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-iff-neg-one-gpr", ARG0.PORD pr066 ] ]. ;; C is a cube, if and only if B is ;; vp-ellip-iff-pos-two-gpr := vp_ellipsis_iff_pos_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-iff-pos-two-gpr", ARG0.PORD pr067 ] ]. ;; C is a cube, if and only if B isn't ;; vp-ellip-iff-neg-two-gpr := vp_ellipsis_iff_neg_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-iff-neg-two-gpr", ARG0.PORD pr068 ] ]. vp-ellip-coord-pos-one-gpr := vp_ellipsis_coord_pos_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-one-gpr", ARG0.PORD pr069 ] ]. ;; Replace with three specific instances - FIX #| vp-ellip-coord-pos-two-gpr := vp_ellipsis_coord_pos_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-two-gpr", ARG0.PORD pr070 ] ]. |# vp-ellip-coord-pos-two-gpr := vp_ellipsis_coord_pos_twoarg_gpr & [ INPUT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-two-gpr", ARG0.PORD pr070 ] ]. vp-ellip-coord-pos-two-dodec-gpr := vp_ellipsis_coord_pos_twoarg_gpr & [ INPUT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-two-gpr", ARG0.PORD pr070 ] ]. vp-ellip-coord-pos-two-tet-gpr := vp_ellipsis_coord_pos_twoarg_gpr & [ INPUT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-two-gpr", ARG0.PORD pr070 ] ]. vp-ellip-coord-pos-twoconj-gpr := vp_ellipsis_coord_pos_twoconj_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-coord-pos-twoconj-gpr", ARG0.PORD pr071 ] ]. iff-to-justincase-gpr := iff_to_just_in_case_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-to-justincase-gpr", ARG0.PORD pr072 ] ]. iff-to-justincasefact-gpr := iff_to_just_in_case_fact_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-to-justincasefact-gpr", ARG0.PORD pr073 ] ]. ;; Contrastive "and" to "but" ;; ;; Size ;; and-but-small-large-op-gpr := and_but_size_op_mtr & [ CONTEXT.RELS , FILTER.HCONS , OUTPUT.RELS.LIST.FIRST [ CARG "and-but-small-large-op-gpr", ARG0.PORD pr074 ] ]. and-but-small-large-2-op-gpr := and_but_size_op_mtr & [ CONTEXT.RELS , FILTER.HCONS , OUTPUT.RELS.LIST.FIRST [ CARG "and-but-small-large-2-op-gpr", ARG0.PORD pr075 ] ]. and-but-large-small-op-gpr := and_but_size_op_mtr & [ CONTEXT.RELS , FILTER.HCONS , OUTPUT.RELS.LIST.FIRST [ CARG "and-but-large-small-op-gpr", ARG0.PORD pr076 ] ]. and-but-large-small-2-op-gpr := and_but_size_op_mtr & [ CONTEXT.RELS , FILTER.HCONS , OUTPUT.RELS.LIST.FIRST [ CARG "and-but-large-small-2-op-gpr", ARG0.PORD pr077 ] ]. ;; and to but for same row/column ;; and-but-loc-op-gpr := and_but_location_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "and-but-loc-op-gpr", ARG0.PORD pr078 ] ]. ;; either-or => neither ;; either-to-neither-gpr := either_neither_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "either-to-neither-gpr", ARG0.PORD pr079 ] ]. ;; neither => neither of them ;; neither-part-op-gpr := neither_part_of_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "neither-part-op-gpr", ARG0.PORD pr081 ] ]. ;; none of X ;; none-of-op-gpr := none_part_of_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "none-of-op-gpr", ARG0.PORD pr082 ] ]. ;;; ;; and to but for front/back ;; and-but-pos-op-gpr := and_but_front_back_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "and-but-pos-op-gpr", ARG0.PORD pr083 ] ]. ;; "B is small; moreover, B is a cube" ;; semicol-and-op-gpr := coord_sent_semi_op_gpr & [ INPUT.RELS , OUTPUT.RELS ]. ;; "B is small; however, C is large" ;; semicol-but-op-gpr := coord_sent_semi_op_gpr & [ INPUT.RELS , OUTPUT.RELS ]. ;; Replace "if" with "provided (that)" ;; Order: precede addition of "also", and VP ellipsis ;; ifthen-to-provided-gpr := cond_to_provided_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "ifthen-to-provided-gpr", ARG0.PORD pr086 ] ]. ;; "if B is large, C is also large" ;; also-adv-cond-onearg-gpr := also_adverb_cond_onearg_gpr & [ OUTPUT.RELS ]. also-adv-cond-twoarg-comp-gpr := also_adverb_cond_twoarg_comp_gpr & [ OUTPUT.RELS ]. also-adv-cond-twoarg-gpr := also_adverb_cond_twoarg_gpr & [ OUTPUT.RELS ]. ;; Drop `then' if atomic consequent, as long as arg is not "thecasethat" ;; Order: should follow also_adv addition, to get variants with and without ;; drop-then-opt-gpr := drop_cond_then_mtr & [ OUTPUT.RELS , FLAGS.OPTIONAL + ]. drop-then-oblig-gpr := drop_cond_then_mtr & [ OUTPUT.RELS , FLAGS.OPTIONAL - ]. ;; "B is small if it is a cube" ;; Order: must follow drop of "then" ;; cond-pro-subj-rev-gpr := cond_s_pro_subj_rev_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-rev-gpr", ARG0.PORD pr092 ] ]. ;; "B is in front of D if it (i.e, B) is a cube" ;; cond-pro-subj-ambig-rev-gpr := cond_s_pro_subj_ambig_rev_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-ambig-rev-gpr", ARG0.PORD pr093 ] ]. ;; "B is small provided it is a cube" ;; Order: must follow drop of "then" ;; cond-pro-subj-rev-prov-gpr := cond_s_pro_subj_rev_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-rev-prov-gpr", ARG0.PORD pr094 ] ]. cond-pro-subj-ambig-rev-prov-gpr := cond_s_pro_subj_ambig_rev_gpr & [ CONTEXT.RELS , OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-subj-ambig-rev-prov-gpr", ARG0.PORD pr095 ] ]. ;; C is large if B is ;; Order: must follow drop of "then" ;; vp-ellip-if-pos-ante-one-gpr := vp_ellipsis_if_pos_ante_onearg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-ante-one-gpr", ARG0.PORD pr096 ] ]. ;; C is larger than B if D is ;; vp-ellip-if-pos-ante-two-comp-gpr := vp_ellipsis_if_pos_ante_twoarg_comp_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-ante-two-comp-gpr", ARG0.PORD pr097 ] ]. ;; C is a cube if B is ;; vp-ellip-if-pos-ante-two-gpr := vp_ellipsis_if_pos_ante_twoarg_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "vp-ellip-if-pos-ante-two-gpr", ARG0.PORD pr098 ] ]. ;; "one of A, B, and C" ;; one-of-set-two-gpr := one_of_set_twoarg_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "one-of-set-two-gpr", ARG0.PORD pr099 ] ]. one-of-set-one-gpr := one_of_set_onearg_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "one-of-set-one-gpr", ARG0.PORD pr100 ] ]. ;; Coord pro subj ;; "A and B are cubes, and they are small" ;; conj-pro-coord-subj-and-gpr := conjnct_pro_coord_subj_and_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "conj-pro-coord-subj-and-gpr", ARG0.PORD pr101 ] ]. conj-pro-coord-subj-or-gpr := conjnct_pro_coord_subj_or_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "conj-pro-coord-subj-or-gpr", ARG0.PORD pr102 ] ]. ;; "B and C are small only if they are cubes" ;; onlyif-pro-coord-subj-and-gpr := onlyif_s_pro_coord_subj_and_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "onlyif-pro-coord-subj-and-gpr", ARG0.PORD pr103 ] ]. onlyif-pro-coord-subj-or-gpr := onlyif_s_pro_coord_subj_or_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "onlyif-pro-coord-subj-or-gpr", ARG0.PORD pr104 ] ]. ;; "B and C are small if and only if they are cubes" ;; iff-pro-coord-subj-and-gpr := bicond_s_pro_coord_subj_and_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-pro-coord-subj-and-gpr", ARG0.PORD pr105 ] ]. iff-pro-coord-subj-or-gpr := bicond_s_pro_coord_subj_or_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "iff-pro-coord-subj-or-gpr", ARG0.PORD pr106 ] ]. coord-vp-prosub-two-op-gpr := coord_vp_prosubj_twoarg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-vp-prosub-two-op-gpr", ARG0.PORD pr107 ] ]. coord-vp-prosub-one-op-gpr := coord_vp_prosubj_onearg_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "coord-vp-prosub-one-op-gpr", ARG0.PORD pr108 ] ]. ;; "B is in front of or in back of C" ;; common-dobj-onepred-op-gpr := shared_dobj_onepred_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-dobj-onepred-op-gpr", ARG0.PORD pr109 ] ]. common-dobj-twopred-op-gpr := shared_dobj_twopred_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-dobj-twopred-op-gpr", ARG0.PORD pr110 ] ]. common-dobj-onetwopred-op-gpr := shared_dobj_onetwopred_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-dobj-onetwopred-op-gpr", ARG0.PORD pr111 ] ]. common-dobj-twoonepred-op-gpr := shared_dobj_twoonepred_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-dobj-twoonepred-op-gpr", ARG0.PORD pr112 ] ]. ;; "B is to the left of or right of C" common-noun-obj-op-gpr := shared_noun_obj_op_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "common-noun-obj-op-gpr", ARG0.PORD pr113 ] ]. ;; "If B and C are cubes, then they are small" ;; Order: follow common_dobj* which creates the plural to be replaced by the ;; pronoun ;; cond-pro-coord-subj-and-gpr := cond_s_pro_coord_subj_and_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-coord-subj-and-gpr", ARG0.PORD pr114 ] ]. cond-pro-coord-subj-or-gpr := cond_s_pro_coord_subj_or_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-coord-subj-or-gpr", ARG0.PORD pr115 ] ]. cond-pro-coord-subj-coord-cq-and-gpr := cond_s_pro_coord_subj_crd_cq_and_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-coord-subj-coord-cq-and-gpr", ARG0.PORD pr116 ] ]. cond-pro-coord-subj-coord-cq-or-gpr := cond_s_pro_coord_subj_crd_cq_or_gpr & [ OUTPUT.RELS.LIST.FIRST [ CARG "cond-pro-coord-subj-coord-cq-or-gpr", ARG0.PORD pr117 ] ]. ;; Add "both" adverb: "B and C are both cubes" ;; Order: follows coord of subjects to create the licensing plural NP ;; both-adv-op-gpr := both_adverb_op_mtr & [ OUTPUT.RELS ]. ;; Add "also" adverb with pronoun subj: "B is a cube iff it is also large";; also-adv-pro-op-gpr := also_adverb_op_mtr & [ CONTEXT.RELS.LIST < [ PRED pron_rel ], ... >, OUTPUT.RELS ]. ;; And "also" with partitive "B and C are cubes iff one of them is also large" ;; also-adv-part-op-gpr := also_adverb_op_mtr & [ CONTEXT.RELS.LIST < [ PRED part_of_rel ], ... >, OUTPUT.RELS ]. ;; Add "either" for double neg conditional ;; "If B is not a cube, then C is not a cube either" ;; either-adv-op-gpr := either_adverb_op_mtr & [ OUTPUT.RELS ]. ;; "one of them" ;; part-pron-one-op-gpr := partitive_pron_one_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "part-pron-one-op-gpr", ARG0.PORD pr122 ] ]. ;; "both of them" ;; part-pron-both-op-gpr := partitive_pron_both_op_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "part-pron-both-op-gpr", ARG0.PORD pr123 ] ]. ;; "at least one of them" ;; at-least-one-gpr := at_least_one_of_mtr & [ OUTPUT.RELS.LIST.FIRST [ CARG "at-least-one-gpr", ARG0.PORD pr124 ] ]. ;; "either/neither/both" ;; paired-either-nrev-gpr := paired_conj_event_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-either-rev-gpr := paired_conj_event_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-either-x-nrev-gpr := paired_conj_refind_or_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-either-x-rev-gpr := paired_conj_refind_or_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-nrev-gpr := paired_conj_event_both_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-rev-gpr := paired_conj_event_both_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-x-nrev-gpr := paired_conj_refind_arg2_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-x-rev-gpr := paired_conj_refind_arg2_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-xs-nrev-gpr := paired_conj_finsbj_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-xs-rev-gpr := paired_conj_finsbj_gpr & [ INPUT.RELS , OUTPUT.RELS ]. ;; 2019-07-02 - Maybe not needed, and unclear what intended for - CHECK #| paired-both-xn-nrev-gpr := paired_conj_nonfin_arg1_gpr & [ INPUT.RELS , OUTPUT.RELS ]. paired-both-xn-rev-gpr := paired_conj_nonfin_arg1_gpr & [ INPUT.RELS , OUTPUT.RELS ]. |# ;; These two may not be needed: for |either both A and B or both C and D| ;; paired-both-xl-gpr := paired_conj_refind_lind_gpr & [ OUTPUT.RELS ]. paired-both-xr-gpr := paired_conj_refind_rind_gpr & [ OUTPUT.RELS ]. ;; |B and C| => |... and it is the case that B and that C| ;; ;; Let's try doing without this for outermost conjunction. ;;thecase_top_gpr := conj_s_thecase_top_gpr & ;; [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase_top_gpr", ARG0.PORD pr133 ] ]. ;; DPF 2019-06-10 - This one should be included but is too expensive ;thecase-cleft-gpr := conj_s_thecase_nontop_cleft_gpr & ; [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase-cleft-gpr", ARG0.PORD pr134 ] ]. ;thecase-cright-gpr := conj_s_thecase_nontop_cright_gpr & ; [ OUTPUT.RELS.LIST.FIRST [ CARG "thecase-cright-gpr", ARG0.PORD pr135 ] ].