diff options
Diffstat (limited to 'man3/libnormalform_nimply.3')
| -rw-r--r-- | man3/libnormalform_nimply.3 | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/man3/libnormalform_nimply.3 b/man3/libnormalform_nimply.3 new file mode 100644 index 0000000..ca7a0e9 --- /dev/null +++ b/man3/libnormalform_nimply.3 @@ -0,0 +1,241 @@ +.TH LIBNORMALFORM_NIMPLY 3 LIBNORMALFORM +.SH NAME +libnormalform_nimply \- Material abjunction + +.SH SYNOPSIS +.nf +#include <libnormalform.h> + +LIBNORMALFORM_SENTENCE *libnormalform_nimply(LIBNORMALFORM_SENTENCE **\fIxs\fP); +LIBNORMALFORM_SENTENCE *libnormalform_nimplyl(LIBNORMALFORM_SENTENCE *\fIa\fP, ... /*, NULL */); +LIBNORMALFORM_SENTENCE *libnormalform_vnimply(LIBNORMALFORM_SENTENCE *\fIa\fP, va_list \fPargs\fP); +LIBNORMALFORM_SENTENCE *libnormalform_nimply_checked(size_t \fIn\fP, LIBNORMALFORM_SENTENCE **\fIxs\fP); +LIBNORMALFORM_SENTENCE *libnormalform_nimplyl_checked(size_t \fIn\fP, LIBNORMALFORM_SENTENCE *\fIa\fP, ... /*, NULL */); +LIBNORMALFORM_SENTENCE *libnormalform_vnimply_checked(size_t \fIn\fP, LIBNORMALFORM_SENTENCE *\fIa\fP, va_list \fPargs\fP); +LIBNORMALFORM_SENTENCE *libnormalform_nimply2(LIBNORMALFORM_SENTENCE *\fIp\fP, LIBNORMALFORM_SENTENCE *\fIq\fP); +#define LIBNORMALFORM_NIMPLY(...) /* ... */ +.fi +.PP +Link with +.IR -lnormalform . + +.SH DESCRIPTION +The +.BR libnormalform_nimply () +function creates a sentence that is logically +equivalent to the material abjunction of the +arguments. +.PP +The value of the +.I xs +parameter shall be a null-pointer terminated list +of subsentences. +.PP +The +.BR libnormalform_nimplyl () +function is a variant of +.BR libnormalform_nimply () +which uses variadic arguments instead of an array. +.PP +The +.BR libnormalform_vnimply () +function is a variant of +.BR libnormalform_nimplyl () +which takes an +.I va_list +in place of variadic arguments. +.PP +The +.BR libnormalform_nimply_checked (), +.BR libnormalform_nimplyl_checked (), +and +.BR libnormalform_vnimply_checked () +functions are variants of the +.BR libnormalform_nimply (), +.BR libnormalform_nimplyl (), +and +.BR libnormalform_vnimply () +functions respectively which assumes +that it is given +.I n +subsentances, and checks that all are +.RI non- NULL . +However, these functions still require +the list of subsentences to be terminated +using a null-pointer. +.PP +.I "libnormalform_nimply2(p, q)" +is equivalent to +.IR "libnormalform_nimplyl_checked(2, p, q, NULL)" . +.PP +The +.BR LIBNORMALFORM_NIMPLY +macro is a wrapper for the +.BR libnormalform_nimply_checked () +but is more similar to +.BR libnormalform_nimplyl (). +Unlike +.BR libnormalform_nimplyl (), +the argument list +.I must not +be terminated by a null-pointer, instead +the macro automatically as the null-pointer. +The macro will count the number of arguments +it is given, therefore it will fail it the +argument list is has an extra null-pointer. +.PP +The returned pointer shall either be +deallocated with the +.BR libnormalform_free (3) +function or be relinquished by being +used as part of another sentence. +.PP +These functions adopt the ownership of any +.I LIBNORMALFORM_SENTENCE * +passed into it. Therefore, the user shall +not attempt to deallocate input sentences. +This holds even on failure: if the function +fails, input sentences are deallocated. + +.SH RETURN VALUE +Upon successful completion, the +.BR libnormalform_nimply () +function and its variants return an object +representing the sentence; otherwise, the +functions return +.I NULL +and set +.I errno +to indicate the error. + +.SH ERRORS +These functions fails if: +.TP +.I ENOMEM +Insufficient memory was available to +create the sentence object. +.TP +.I EDOM +The function was not given any subsentences. +.PP +The +.BR libnormalform_nimply_checked (), +.BR libnormalform_nimplyl_checked (), +and +.BR libnormalform_vnimply_checked () +functions will also fail without setting +.I errno +if any of the first +.I n +.IR "LIBNORMALFORM_SENTENCE *" 's +are +.IR NULL . +Likewise, the +.BR libnormalform_nimply2 () +function will fail without setting +.I errno +if +.I p +or +.I q +is +.IR NULL . + +.SH ATTRIBUTES +For an explanation of the terms used in this +section, see +.BR attributes (7) +and +.IR "info \(dq(libc)POSIX Safety Concepts\(dq" . +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +.BR libnormalform_nimply (), +.br +.BR libnormalform_nimply_checked () +T} Thread safety MT-Safe race:\fIxs\fP and elements in \fIxs\fP +T{ +.BR libnormalform_nimplyl (), +.br +.BR libnormalform_nimplyl_checked (), +.br +.BR libnormalform_nimply2 (), +.br +.BR LIBNORMALFORM_NIMPLY () +T} Thread safety MT-Safe race:parameters +T{ +.BR libnormalform_vnimply (), +.br +.BR libnormalform_vnimply_checked () +T} Thread safety MT-Safe race:parameters and arguments in \fIargs\fP +T{ +.BR libnormalform_nimply (), +.br +.BR libnormalform_nimplyl (), +.br +.BR libnormalform_vnimply (), +.br +.BR libnormalform_nimply_checked (), +.br +.BR libnormalform_nimplyl_checked (), +.br +.BR libnormalform_vnimply_checked (), +.br +.BR libnormalform_vnimply2 (), +.br +.BR LIBNORMALFORM_NIMPLY () +T} Async-signal safety AS-Unsafe heap +T{ +.BR libnormalform_nimply (), +.br +.BR libnormalform_nimplyl (), +.br +.BR libnormalform_vnimply (), +.br +.BR libnormalform_nimply_checked (), +.br +.BR libnormalform_nimplyl_checked (), +.br +.BR libnormalform_vnimply_checked (), +.br +.BR libnormalform_vnimply2 (), +.br +.BR LIBNORMALFORM_NIMPLY () +T} Async-cancel safety AC-Safe mem, AC-Unsafe heap +.TE + +.SH NOTES +The connective is non-commutative and right-associative. It's truthtable is (0100). +.PP +The +.BR LIBNORMALFORM_NIMPLY () +macro requires ISO C23 support. +.PP +The +.BR libnormalform_nimply () +is primary function, the other functions are +just wrappers for the +.BR libnormalform_nimply () +function. +.PP +These functions creates a clause where each term is +connected with the NIMPLY connective. There is +unfortunately no generally meaningful interpretation: +adding false term on the left creates a contradiction, +while adding a true term on the left inverts the +original clause, whereas adding a false term on the +right does not change the result but adding a true +term on the right inverts the result only if all terms +are true. +.PP +Side-effects in the arguments of the macro +.BR LIBNORMALFORM_NIMPLY () +are guaranteed to be applied exactly once. +The side-effects in each macro are applied +in no particular order. + +.SH SEE ALSO +.BR libnormalform (7) |
