BEARBEITEN

BEARBEITEN

Das möchte ich erreichen:

1.r                             (Given)
2.(t ∧ r) → s                   (Given)
3.(p → t) → (q → ¬s)            (Given)
    4.t ∧ r                     (Assumption)

Hier ist, was ich bekommen habe:

Bildbeschreibung hier eingeben

Hier ist mein Code

\documentclass[11pt]{article}

\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}

\begin{document}

\section{formal proof}
\textbf{(a)}
\begin{proof}
    \begin{align*}
    &1. r& &&\text{(Given)}\\
    &2. (t \land r) \imp s&  &&\text{(Given)}\\
    &3. (p \imp t) \imp (q \imp \neg s)& &&\text{(Given)}\\
    &&4. t \land r& &&\text{(Assumption)}
    \end{align*}
\end{proof}

\end{document}

Das Problem:

Wie mache ich die Einrückung innerhalb eines formalen Beweises? Es macht mir nichts aus, wenn der Text auf der rechten Seite nicht perfekt ausgerichtet ist, aber ich hätte gerne die richtige Einrückung. Die Einrückung, die durch den obigen Code erzeugt wird, ist zu groß.

Wie Sie wahrscheinlich schon bemerkt haben, bin ich neu bei LaTex. Ich bin für alle Vorschläge dankbar. Es wäre auch schön, wenn es ein Paket für solche Dinge gäbe.

Danke!

Bearbeiten

Ein vollständiger formaler Beweis würde etwa so aussehen:

1.r                             (Given)
2.(t ∧ r) → s                   (Given)
3.(p → t) → (q → ¬s)            (Given)
    4.t ∧ r                     (Assumption)
    5.t                         (From 4)
    6.s                         (From 2, 4)
        7. (p → t)              (Assumption)
        8. p                    (From 5, 7)
        ...
    ...
...

Antwort1

Sie können so etwas tun

\documentclass{article}

\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}

\newenvironment{level}%
{\addtolength{\itemindent}{2em}}%
{\addtolength{\itemindent}{-2em}}

\begin{document}

\section{formal proof}
\textbf{(a)}
\begin{proof}\leavevmode
    \begin{enumerate}
    \item $r$ \hfill(Given)
    \begin{level}
    \item $(t \land r) \imp s$ \hfill (Given)
    \item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
      \begin{level}
        \item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
        \item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
      \end{level}
    \item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
    \end{level}
    \item $t \land r$ \hfill (Assumption)
    \end{enumerate}
\end{proof}

\end{document}

In diesem Fall levelvergrößert und verkleinert die Umgebung den Einzug der Elemente in der Liste automatisch. Sie können die Länge ändern, indem Sie die 2emGröße ändern.

Bildbeschreibung hier eingeben

Antwort2

Sie können verwenden enumerateundenumitem

\documentclass[11pt]{article}

\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}

\usepackage{enumitem}

\begin{document}

\section{formal proof}
\textbf{(a)}
\begin{proof}\leavevmode
    \begin{enumerate}[ref=\arabic*]
    \item $r$ \hfill(Given)
    \item $(t \land r) \imp s$ \hfill (Given)\label{enum:second}
    \item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
    \begin{enumerate}[start=4,label=\arabic*.,ref=\arabic*]
    \item $t \land r$ \hfill (Assumption)\label{enum:fourth}
    \item $t$ \hfill         (From~\ref{enum:fourth})\label{enum:fifth}
    \item $s$ \hfill          (From~\ref{enum:second},~\ref{enum:fourth})
    \begin{enumerate}[start=7,label=\arabic*.,ref=\arabic*]
    \item $(p \imp t)$ \hfill   (Assumption)\label{enum:seventh}
     \item $p$  \hfill          (From~\ref{enum:fifth},~\ref{enum:seventh})
    \end{enumerate}
    \end{enumerate}
    \end{enumerate}
\end{proof}

\end{document}

Bildbeschreibung hier eingeben

\labelBitte beachten Sie, dass ich als Referenz einen Mechanismus verwendet habe \ref. Um die Abstände weiter anzupassen, lesen Sie bitte das enumitemPakethandbuch (verfügbar unter www.texdoc.net).

Antwort3

Ich denke, es wäre am besten, ein Paket zu verwenden, das für den Satz dieser Art von Beweisen entwickelt wurde. lplfitchkommt dem wahrscheinlich am nächsten. Es zeichnet Regeln, um die Bereiche zu markieren, aber diese können mithilfe von entfernt werden etoolbox. Das Folgende patcht den Hauptbeweisbefehl \fitchprf, sodass die Regeln für die Dauer des Beweises 0pt haben. Die normale Breite der Regeln in Tabellen wird am Ende wiederhergestellt.

lplfitchbietet auch eine Reihe von Funktionen, die den Satz solcher Beweise erleichtern sollen. Beispielsweise definiert es eine Reihe logischer Symbole mit entsprechendem Abstand. (Weitere Einzelheiten finden Sie im Handbuch.)

\documentclass[11pt]{article}
\usepackage{mathtools,amsthm,amssymb}
\usepackage{lplfitch}
\usepackage{etoolbox}
\newlength\savearrayrulewidth
\setlength\savearrayrulewidth{\arrayrulewidth}
\pretocmd{\fitchprf}{\setlength{\arrayrulewidth}{0pt}}{\typeout{Great!}}{\typeout{Oh, no!}}
\apptocmd{\fitchprf}{\setlength{\arrayrulewidth}{\savearrayrulewidth}}{\typeout{Great!}}{\typeout{Oh, no!}}
\begin{document}

\fitchprf{%
  \pline[1]{r}[(Given)]\\
  \pline[2]{(t \land r) \lif s}[(Given)]\\
  \pline[3]{(p \lif t) \lif (q \lif \lnot s)}[(Given)]
}{%
  \subproof{%
    \pline[4]{t \land r}[(Assumption)]
  }{%
  }\\
}

\end{document}

Fitch-Style-Beweis ohne Regeln

BEARBEITEN

Ob dies nützlich ist oder nicht, hängt auch vom verwendeten System ab, aber das Paket bietet auch Begründungen verschiedener Art. Um den Beweis ein wenig fortzusetzen:

\fitchprf{%
  \pline[1]{r}[(Given)]\\
  \pline[2]{(t \land r) \lif s}[(Given)]\\
  \pline[3]{(p \lif t) \lif (q \lif \lnot s)}[(Given)]
}{%
  \subproof{%
    \pline[4]{t \land r}[(Assumption)]
  }{%
    \pline[5]{s}[\life{2}{4}]\\
    \pline[6]{t}[\lande{5}]\\
    \subproof{%
      \pline[7]{p \lif t}[(Assumption)]
    }{%
      \pline[8]{q \lif \lnot s}[\life{3}{7}]
    }
  }\\
}

produziert

Beweise mit Begründungen

verwandte Informationen