Seite 1 von 2

Logische Operatoren auf Metaebene

Verfasst: Fr 12. Aug 2016, 12:19
von Magenta
Hallo zusammen,

ich suche eine Möglichkeit, ausgehen von \Box und \Diamond ein wenig andere Operatoren zusätzlich zu bekommen.
\documentclass[11pt,openany]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
Formeln auf der objektsprachlichen Ebene: $\Box p $ und $ \Diamond q$, soweit gut.

Formeln auf der metasprachlichen Ebene: \textsf{I}$\Box \alpha$, nicht schön, aber machbar. 

Hier brauch ich einen Zusatz.$\Diamond \beta$, am liebsten eine Doppellinie auf der linken Seite des Diamanten. 
\end{document}


Schöner wäre, auch für die Meta-Box, eine Lösung über eine \newcommand-Definition, aber TexStudio findet meine Idee
 \newcommand{\Boxi}{\ensuremath{\textfs{I}$\Box$}} 
überhaupt nicht gut. Das gibt nur die Fehlermeldung: "Undefined control sequence. $\Boxi", mit der ich nicht viel anfangen kann. :(


Hat jemand eine Ahnung, was ich da falsch mache? Und insgesamt eine kluge Idee?

Liebe Grüße,

Magenta

Verfasst: Fr 12. Aug 2016, 13:28
von sudo
Ich würde den Operatoren sinnvolle Namen geben und diese auch als Operatoren definieren.
Andere Operatoren enthalten auch kein \ensuremath. Daher würde ich das auch weglassen.
Bei \textsf waren zwei Buchstaben vertauscht. Deswegen der Undefined control sequence-Fehler.
Wenn schon \ensuremath, müssen auf jeden falls die $ raus. Sonst gehst du je wieder raus aus dem Mathe-Modus.
Wenn du keinen anderen Diamanten findest kannst du entweder mit metafonts (skaliert richtig mit der Schriftgröße) oder mit tikz (Längen dann bitte in ex) ein eigenes Symbol zeichnen.
\documentclass[11pt,openany]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}

\DeclareMathOperator{\foo}{\textsf{I}\Box}
\newcommand{\Boxi}{\ensuremath{\textsf{I}\Box}}
\begin{document}
Der Unterschied zwischen $\Boxi \beta$ und $\foo \beta$ ist der Abstand, da ein Operator einen anderen Abstand zum Operanden hat, als zwei Variablen zueinander.
\end{document}

Verfasst: Fr 12. Aug 2016, 17:13
von Magenta
Hallo Sudo,

vielen Dank für die Antwort! War ja klar, dass ich da Unsinn habe. :D

(Leider sind das halbwegs sinnvolle Benennungen. Ich brauche sie alle und so ziemliche alle doppelt (\forall, \exists, \Box, \Diamond), denn ich habe in meiner Arbeit ein Kapitel zur modalen Prädikatenlogik. :roll: )

Liebe Grüße,

Magenta

Verfasst: Mo 15. Aug 2016, 12:17
von sudo
Mit sinnvoll benennen meine ich vorallem, dass du beschreibst, was der Operator macht und nicht, wie er aussieht. \Box wird den Operanden vermutlich nicht einpacken, oder? Und selbst wenn, würde ich ihn dann eher \Einpacken als \Box nennen.

Hat dir der Rest geholfen, deinen Fehler zu beheben? Dann kannst du auch den Status entsprechend anpassen. Danke für die Rückmeldung.

Verfasst: Mo 15. Aug 2016, 18:55
von Magenta
Nochmal hallo :),

stimmt: Status ändern! Danke für die Erinnerung.

Deinen Kommentar verstehe ich nicht ganz. Ich brauche die Box als Box vor einer Formel, das ist das übliche Zeichen für "Es ist notwendig, dass" in der Modallogik. Nun gibt es zu jeder Sprache auf der Objektebene aber auch eine auf der Metaebene. Übersichtlicher wird eine Argumentation, wenn die unterschiedlichen Sprachebenen durch unterschiedliche Zeichen deutlich werden. Daher das nicht unübliche Vorgehen, auf einer Seite des Operators eine Doppellinie zu setzen.

Inzwischen habe ich mir eine andere Möglichkeit überlegt und kennzeichne die Ebene, wenig kreativ, durch ein hocgestelltes "m".

Da ich aber ein ziemlicher Tex-Neeb bin, war Dein Hinweis auf
 \DeclareMathOperator{} 


echt Gold wert. Dafür vielen Dank!

Magenta

Verfasst: Mo 15. Aug 2016, 20:30
von sudo
Wie ich schon mit dem Beispiel \Einpacken deutlich machen wollte: Benenne die Operatoren nach ihrer Aufgabe: \NotwendigObjekt und \NotwendigMeta
\forall und \exists heißt ja auch nicht \UmgedrehtesA und \UmgedrehtesE.

Außerdem gibt es den Befehl \Box ja schon. Das ist zwar die Box, die du möchtest, allerdings nicht mit dem richtigen Abstand zwischen Operator und Operand.

PS: Wenn du Hilfe brauchst den Diamanten mit Strich zu definieren. Poste das ruhig als neue Frage. Dafür sind wir ja ein Hilfeforum. Dadurch, dass du den Operator als eigenen Befehl definierst, kannst du das auch später jederzeit ändern.

Verfasst: Mo 15. Aug 2016, 23:32
von Magenta
Ich glaube, wir reden gerade ein bisschen an einander vorbei.

Die modalaussagenlogische Formel:
 \[\Box p \rightarrow \Diamond p\] 
beispielsweise kann gelesen werden: "Wenn Box p, dann Diamand p.", und der Modallogiker versteht dich. Machen Techniker sehr gern.

Wenn's um die Interpretation geht, dann nutzt man eher die etwas aufgeladenere Lesart "Wenn es notwendig ist, dass p, dann ist es auch möglich, dass p.". Wenn ich jetzt aber über die Operatoren und ihre rechnerischen Eigenschaften spreche, dann scheint das Sprechen von "Box" und "Diamand" irgendwie natürlicher (falls an Diskussionen zum Thema "Modallogik" irgendetwas natürlich sein kann :lol: ).

Verfasst: Mi 17. Aug 2016, 09:42
von sudo
Sind \Box und \Diamond dann mit \DeclareMathOperator (um-)definiert?

Verfasst: Mi 17. Aug 2016, 19:25
von Magenta
Nein. An einer solchen Stelle brauche ich keinen Schnickschnack, sondern die ganz normalen Operatoren auf der Objektebene der formalen Sprache.

Interessiert Dich das wirklich? :)

Verfasst: Mi 17. Aug 2016, 20:18
von sudo
Ich hatte schon im ersten Post versucht rüberzubringen, dass \DeclareMathOperator oder \operatorname den Abstand zum Operanden verbessern.
sudo hat geschrieben:
\documentclass[11pt,openany]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}

\DeclareMathOperator{\foo}{\textsf{I}\Box}
\newcommand{\Boxi}{\ensuremath{\textsf{I}\Box}}
\begin{document}
Der Unterschied zwischen $\Boxi \beta$ und $\foo \beta$ ist der Abstand, da ein Operator einen anderen Abstand zum Operanden hat, als zwei Variablen zueinander.
\end{document}