Did you know ... Search Documentation:
Pack ape -- prolog/utils/are_equivalent.pl
PublicShow source
author
- Kaarel Kaljurand
version
- 2011-07-21

BUG: Think if this code is correct and complete.

OBSOLETE COMMENT: Note that the DRACE-tester also uses the notion of equivalence defined here, but for DRACE it is sometimes too strict, e.g. DRACE NP considers reversing the arguments of `be' equivalence-preserving, to be able to perform the transformation:

John is every man. --> Every man is John.

But given the definition of equivalence here, they are not. Similarly:

If there is a man then it is necessary that a human is the man. --> Every man must be a human.
 check_equivalence(+Drs1:term, +Drs2:term) is det
Arguments:
Drs1- is an Attempto DRS
Drs2- is an Attempto DRS
 are_equivalent(+Drs1:term, +Drs2:term) is det
 are_equivalent(+Drs1:term, +Drs2:term, +Options:list) is det
 are_equivalent_x(+Drs1:term, +Drs2:term) is det
Arguments:
Drs1- is an Attempto DRS
Drs2- is an Attempto DRS
Options- is a list of options

The DRSs are equivalent iff they are well-formed and every condition list of Drs1 is a subset of some condition list of Drs2, and the other way around.

Valid options are:

ignore_sid(Bool)
If true then the sentence IDs are ignored during comparison, otherwise (default) the sentence IDs are taken into consideration.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

 are_equivalent(Arg1, Arg2, Arg3)