Ifthenelse e bicondizionale

  • Creatore
    Topic
  • #45112
    Up
    0
    Down
    ::


    Cari tutti,
    per ragioni che, mi pare, non è essenziale riportare, ho ridefinito il comando \ifthenelse del pacchetto ifthen, aggiungendo un nuovo operatore, che potremmo chiamare \IF, ai tre operatori booleani (\NOT, \OR, e \AND) già definiti dal pacchetto ifthen. Si tratta del condizionale (se…allora), ossia di un operatore tale che `A \IF B’ è falsa con A vero e B falso, ed è vera altrimenti.
    Ora mi piacerebbe, se possibile, definire un operatore corrispondente al bicondizionale in logica (…se e solo se…), ossia un operatore, che potremmo chiamare \IFF, tale che `A \IFF B’ è vera con A e B entrambi veri o entrambi falsi, ed è falsa altrimenti.
    Senza dubbio a causa della mia incapacità, non ce l’ho fatta.
    Qualcuno è in grado di aiutarmi?

    Grazie in anticipo e buona giornata a tutti.
    Beppe Spolaore.
    N.B. L’ideale sarebbe se questo operatore avesse la stessa sintassi di \AND e \OR, ossia `argomento operatore argomento’. Ma ok…, andrebbe passabilmente bene anche se finisse per avere la classica sintassi latex `operatore{argomento}{argomento}’.

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #45113
      Up
      0
      Down
      ::

      Cari tutti,
      per ragioni che, mi pare, non è essenziale riportare, ho ridefinito il comando \ifthenelse del pacchetto ifthen, aggiungendo un nuovo operatore, che potremmo chiamare \IF, ai tre operatori booleani (\NOT, \OR, e \AND) già definiti dal pacchetto ifthen. Si tratta del condizionale (se…allora), ossia di un operatore tale che `A \IF B’ è falsa con A vero e B falso, ed è vera altrimenti.
      Ora mi piacerebbe, se possibile, definire un operatore corrispondente al bicondizionale in logica (…se e solo se…), ossia un operatore, che potremmo chiamare \IFF, tale che `A \IFF B’ è vera con A e B entrambi veri o entrambi falsi, ed è falsa altrimenti.
      Senza dubbio a causa della mia incapacità, non ce l’ho fatta.
      Qualcuno è in grado di aiutarmi?

      Grazie in anticipo e buona giornata a tutti.
      Beppe Spolaore.
      N.B. L’ideale sarebbe se questo operatore avesse la stessa sintassi di \AND e \OR, ossia `argomento operatore argomento’. Ma ok…, andrebbe passabilmente bene anche se finisse per avere la classica sintassi latex `operatore{argomento}{argomento}’.

      Come hai fatto per \IF?

      Ciao
      Enrico

    • #45114
      Up
      0
      Down
      ::


      Gentile Enrico,
      la definizione che ho aggiunto al comando \ifthenelse può essere espressa così (\TE@rightarrow è il nome “interno” dell’operatore condizionale):

      `\def\TE@rightarrow{\relax
      \noexpand\TE@setvalfalse\noexpand
      \else
      \noexpand\TE@setvaltrue\noexpand
      \fi
      \noexpand\TE@negatefalse\noexpand
      \fi\noexpand\ifTE@val\noexpand\else\noexpand\ifnum}`
      dove \ifTE@negate e \ifTE@val sono nuovi ifs introdotti da ifthen, al pari delle seguenti definizioni
      `\def\TE@setvaltrue{%
      \ifTE@negate\TE@valfalse\else\TE@valtrue\fi}
      \def\TE@setvalfalse{\let\ifTE@val\ifTE@negate}`

      Essenzialmente, la definizione di \TE@rightarrow è analoga a quella data da ifthen per l’operatore booleano \OR (nome interno \TE@or), con l’unica differenza che “\TE@setvalfalse” e “\TE@setvaltrue” sono invertiti.
      Spero sia sufficiente per capirci qualcosa. Grazie per l’attenzione e cordiali saluti,
      Beppe.

    • #45115
      Up
      0
      Down
      ::


      Ciao a tutti.
      Ho trovato una soluzione. Anche se la cosa non è, verosimilmente, di interesse generale, per amor di completezza posto una possibile definizione dell’operatore bicondizionale (nome interno \TE@leftrightarrow}:

      `\def\TE@leftrightarrow{\relax
      \noexpand\ifTE@negate\noexpand\TE@negatefalse\noexpand\else\noexpand
      \TE@negatetrue\noexpand\fi\noexpand
      \else
      \noexpand\TE@setvalfalse\noexpand
      \fi
      \noexpand\ifTE@negate\noexpand\TE@negatefalse\noexpand\else\noexpand
      \TE@negatetrue\noexpand\fi\noexpand
      \fi
      \noexpand\ifTE@val\noexpand\else\noexpand
      \ifnum}`

      Il (relativo) vantaggio di disporre di tutti gli operatori verocondizionali nella stessa sintassi degli operatori booleani è la possibilità di ottenere direttamente, data una formula della logica proposizionale scritta in latex (ossia usando i tradizionali comandi \rightarrow, \leftrightarrow, \land (o \wedge) ecc.) il suo valore di verità (data un’assegnazione), la sua tavola di verità, un responso di verità logica ecc. OK, suppongo che pochi considereranno questa possibilità molto eccitante… Ma tant’è.
      Au revoir.

Visualizzazione 2 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top