| \section{Proofs of Properties} \label{app:proof} |
| \subsection{Soundness of FPS}\label{app:proof:soundness_fps} |
|
|
| \noindent\textbf{Theorem.}\ \textit{FPS is \textbf{sound}: for any problem $P$ and direct answer $\hat a$ resulted from FPS, $P(\hat a)$ holds.} |
|
|
| \begin{proof} The Lean 4 proof state of FPS initializes as: |
| \begin{lstlisting}[frame=single,mathescape] |
| case $h$ |
| $(v_1 : T_1) \dots (v_n : T_n)$ |
| $(h_1 : \phi_1) \cdots (h_p : \phi_p)$ |
| $\vdash (\psi_1 \wedge \dots \wedge \psi_q)[a \mapsto ?a]$ |
| case $a$ |
| $(v_1 : T_1) \dots (v_n : T_n)$ |
| $(h_1 : \phi_1) \cdots (h_p : \phi_p)$ |
| $\vdash T_a$ |
| \end{lstlisting} |
| Therefore, upon finishing the proof, we can extract from the Lean 4 kernel: |
| \begin{itemize} |
| \item A term $\hat{a} : T_a$ filling the metavariable $?a$ from the initial goal \texttt{case} $a$ |
| \item A proof term $h$ from the initial goal \texttt{case} $h$. |
| \end{itemize} |
|
|
| Since $?a$ is filled by $\hat a$, $h$ is actually a proof of $(\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), (\wedge_{i=1}^q \psi_i))[a \mapsto \hat{a}]$, i.e. $P(\hat a)$. |
|
|
| Therefore, $P(\hat a)$ holds by the proof term $h$. |
| \end{proof} |
|
|
|
|
|
|
| \subsection{Expressivenss of D-FPS for Find-All Problems}\label{app:proof:expressiveness_dfps} |
|
|
| \noindent\textbf{Theorem.}\ \textit{Regarding find-all problems, the expressiveness of D-FPS is at least as strong as that of FPS.} |
|
|
| \begin{proof} |
| We construct an injection from an arbitrary find-all FPS problem to D-FPS while preserving semantics. |
|
|
| Suppose the FPS problem consists of $(V, (a : T_a), \Phi, \Psi)$ and the ground-truth answer is $\bar a$. We have |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), (\wedge_{i=1}^q \psi_i)[a\mapsto \bar a]$$ |
|
|
| Therefore, the following assertion holds. |
| \begin{equation}\label{eq:sufficienty} |
| \forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (a : T_a), (a = \bar a) \rightarrow (\wedge_{i=1}^q \psi_i) |
| \end{equation} |
|
|
| Since it is a find-all problem, $\bar a$ is the only answer (for find-unique-one problems) or the complete collection of all valid answers (for multiple-answer problems). The following assertion holds. |
| \begin{equation}\label{eq:necessity} |
| \forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (a : T_a), (\wedge_{i=1}^q \psi_i) \rightarrow (a = \bar a) |
| \end{equation} |
|
|
| Therefore, composing Prop.~\ref{eq:sufficienty} and Prop.~\ref{eq:necessity}, the following proposition holds: |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (a : T_a), (\wedge_{i=1}^q \psi_i) \leftrightarrow (a = \bar a)$$ |
| i.e. |
| $$ |
| \forall_{i=1}^n (v_i : T_i), \forall (a : T_a), \forall_{i=1}^p (h_i : \phi_i), ((\wedge_{i=1}^q \psi_i) \leftrightarrow A)[A \mapsto a=\bar a] |
| $$ |
| which corresponds to the D-FPS problem $(V\cup\{(a : T_a)\}, (A : \texttt{Prop}), \Phi, \{\bigwedge_{i=1}^q\psi_i \leftrightarrow A\})$ with ground-truth answer $\bar A = (a = \bar a)$. |
| \end{proof} |
|
|
| Specifically, a multiple-answer problem with ground-truth answer $\bar a$ formulated in FPS as |
| $(V, (a : \texttt{Set}\ T_x), \Phi, \{a = \{x : T_x | \bigwedge_{i=1}^q \psi_i\}\})$ |
| or |
| $(V \cup \{(x : T_x)\}, (a : \texttt{Set}\ T_x), \Phi, \{\bigwedge_{i=1}^q \psi_i \leftrightarrow x\in a\})$ |
| can be mapped into D-FPS as |
| $(V \cup \{(x : T_x)\}, (A : \texttt{Prop}), \Phi, \{\bigwedge_{i=1}^q \psi_i \leftrightarrow A\})$ |
| with ground-truth answer $\bar A := x \in \bar a$ (neither $a$ nor $x$ occurs free in $\Phi$). |
|
|
| \subsection{Completeness of D-FPS for Find-All Problems}\label{app:proof:completeness_dfps} |
|
|
| \noindent\textbf{Theorem.}\ \textit{D-FPS is \textbf{complete}: for any find-all problem with ground-truth $\bar A$, for any direct answer $\hat A$ resulted from D-FPS, the following proposition holds: $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \bar A \rightarrow \hat A$$} |
| \begin{proof} |
| Suppose the D-FPS problem consists of $(V, (A : \texttt{Prop}), \Phi, \{\psi \leftrightarrow A\})$ and the Lean 4 proof state is initializes as: |
| \begin{lstlisting}[frame=single,mathescape] |
| case $h^{\rightarrow}$ -- Forward Solving |
| $(v_1 : T_1) \dots (v_n : T_n)$ |
| $(h_1 : \phi_1) \cdots (h_p : \phi_p)$ |
| $(h^\prime : \psi)$ |
| $\vdash ?A$ |
| case $h^{\leftarrow}$ -- Backward Provinng |
| $(v_1 : T_1) \dots (v_n : T_n)$ |
| $(h_1 : \phi_1) \cdots (h_p : \phi_p)$ |
| $(h_a :\ ?A)$ |
| $\vdash \psi$ |
| case $A$ -- Hole of the answer |
| $(v_1 : T_1) \dots (v_n : T_n)$ |
| $(h_1 : \phi_1) \cdots (h_p : \phi_p)$ |
| $\vdash \texttt{Prop}$ |
| \end{lstlisting} |
| Therefore, upon finishing forward-solving, we can extract from the Lean 4 kernel: |
| \begin{itemize} |
| \item A term $\hat{A} : \texttt{Prop}$ filling the metavariable $?A$ from the initial goal \texttt{case} $A$ |
| \item A proof term $h^{\rightarrow}$ from the initial goal \texttt{case} $h^{\rightarrow}$. |
| \end{itemize} |
|
|
| Since $?A$ is filled by $\hat A$, $h^{\rightarrow}$ is actually a proof of |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (h^\prime : \psi), \hat A$$ |
|
|
| The ground-truth $\bar A$ satisfies |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), (\psi \leftrightarrow \bar A)$$ |
|
|
| Therefore, we have |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (h^\prime : \bar A), \hat A$$ |
| i.e., |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \bar A \rightarrow \hat A$$ |
| \end{proof} |
|
|
| \subsection{Soundness of D-FPS for Find-All Problems}\label{app:proof:soundness_dfps} |
|
|
| \noindent\textbf{Theorem.}\ \textit{D-FPS is \textbf{sound}: for any find-all problem with ground-truth $\bar A$, for any direct answer $\hat A$ resulted from D-FPS, if the backward-proving is finished, the following proposition holds: $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \hat A \rightarrow \bar A$$} |
| \begin{proof} |
| Upon finishing backward-proving, apart from $\hat{A}$, we can extract a proof term $h^{\leftarrow}$ from the initial goal \texttt{case} $h^{\leftarrow}$. |
|
|
| Since $?A$ is filled by $\hat A$, $h^{\leftarrow}$ is actually a proof of |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), (\forall (h_a : ?A), \psi)[?A \mapsto \hat A]$$ |
| i.e., |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (h_a : \hat A), \psi$$ |
|
|
| The ground-truth $\bar A$ satisfies |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), (\psi \leftrightarrow \bar A)$$ |
|
|
| Therefore, we have |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \forall (h_a : \hat A), \bar A$$ |
| i.e., |
| $$\forall_{i=1}^n (v_i : T_i), \forall_{i=1}^p (h_i : \phi_i), \hat A \rightarrow \bar A$$ |
| \end{proof} |
|
|
| Notably, for find-unique-one problems (only one valid answer exists) with queriable $a$, if it is expressed in D-FPS as in Appendix~\ref{app:proof:expressiveness_dfps} and concludes a direct answer of the form $\hat A = (a = \hat a)$, a backward proof is not required anymore (completeness implies soundness). Because of the uniqueness of $\bar a$ and Assumption~\ref{ass:satisfiable}, the valid answer term $\hat a$ must be the unique one. |
|
|