You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
\item This algorithm can be found as \identifier{math.polynomials.zhegalkin.infer_zhegalkin} in \cite{notebook:code}.
116
+
\item This algorithm is implemented in \cite{notebook:code} as
117
+
\WriteCodeRef{alg:infer_zhegalkin_polynomial}
117
118
\end{comments}
118
119
\begin{defproof}
119
120
We will prove correctness by induction. The base case \( n = 0 \) is vacuous, so suppose that \( n > 0 \) and that the algorithm is correct for less than \( n \) variables.
\item This algorithm can be found as \identifier{math.lambda_.curry_howard.derivation_to_proof.type_derivation_to_proof_tree} in \cite{notebook:code}.
654
+
\item This algorithm is implemented in \cite{notebook:code} as
655
+
\WriteCodeRef{alg:type_derivation_to_proof_tree}
655
656
656
657
\item When restricted to arrow types, this algorithm works just as well for \hyperref[def:lambda_term]{untyped} or even \hyperref[rem:mixed_lambda_term]{mixed} \(\muplambda\)-terms.
\item The term \( q_k \)\enquote{carries} either \( -1 \), \( 0 \) or \( 1 \) to be used in the next step.
101
-
\item This algorithm can be found as \identifier{math.arithmetic.bases.add_with_carrying} in \cite{notebook:code}.
102
+
\item This algorithm is implemented in \cite{notebook:code} as
103
+
\WriteCodeRef{alg:addition_with_carrying}
102
104
\end{comments}
103
105
\begin{defproof}
104
106
\SubProof{Proof that \( q_k \) is either \( -1 \), \( 0 \) or \( 1 \)} We will show by induction on \( k \) that \( q_k \) is either \( -1 \), \( 0 \) or \( 1 \). Note that, since \( b \geq 2 \), we have
where \( n = \sharp(\op*{Free}_\Bbbs(\varphi)) \).
17
17
\end{algorithm}
18
18
\begin{comments}
19
-
\item This algorithm can be found as \identifier{math.logic.substitution.apply_substitution_to_formula} in \cite{notebook:code}.
19
+
\item This algorithm is implemented in \cite{notebook:code} as
20
+
\WriteCodeRef{alg:fol_formula_substitution}
20
21
\item This substitution is defined as to have the properties listed in \cref{rem:variable_binding_properties}; we elaborate on this in \fullref{thm:alg:fol_formula_substitution}.
\item We will use this algorithm to show compatibility of propositional and first-order derivation relations in \cref{thm:fol_propositional_formula_translation_entailment}.
673
676
674
-
\item This algorithm can be found as \identifier{math.logic.propositional.apply_prop_proof_tree_translation} in \cite{notebook:code}.
677
+
\item This algorithm is implemented in \cite{notebook:code} as
\item This algorithm can be found as \identifier{math.logic.skolemization.formula_to_prenex_form} in \cite{notebook:code}. The bulk of the implementation is in the module \identifier{math.logic.transformation.pull_quantifiers}.
984
+
\item This algorithm is implemented in \cite{notebook:code} as
We can use induction on the \hyperref[def:graph_cardinality/order]{graph order} of the \hyperref[def:fol_formula_ast]{abstract syntax tree} of \(\varphi\) to show that \( M_{\logic{PNF}}(\varphi) \) is in prenex normal form. This is straightforward because, in every operation, we recursively \enquote{pull} quantifiers outwards.
\item The overall premise of Skolemization is described in \cref{rem:definitional_extensions_and_skolemization} and \cref{thm:skolemization_equisatisfiability} (the latter leading to \fullref{thm:skolems_theorem}).
1094
1098
\item There are two sources of ambiguity in the algorithm --- the choice of Skolem function symbols and the choice of the functions themselves. The disambiguation that we may find useful depends on the situation.
1095
-
\item This algorithm can be found as \identifier{math.logic.skolemization.skolemize} in \cite{notebook:code}.
1099
+
\item This algorithm is implemented in \cite{notebook:code} as
0 commit comments