\documentclass{article} \input{~/projects/latex/janishutz-helpers.tex} \usepackage{tikz} \usetikzlibrary{positioning, arrows.meta} \usepackage{lmodern} \usepackage{ebproof} \usepackage{overarrows} \usepackage{bm} \NewOverArrowCommand{\overrightharpoon}{% end=\rightharpoonup } \ebproofset{separation=2.5em} \setFontType{sans} \multicolsep 5pt plus 2pt minus 2pt \setcounter{secnumdepth}{5} \makeatletter \renewcommand\subparagraph{% \@startsection{subparagraph}{5}{0mm}% {-.5\baselineskip}% {.25\baselineskip}% {\normalfont\normalsize\bfseries}} \makeatother \setup{Formal Methods \& Functional Programming} % ──────────────────────────────────────────────────────────────────── \begin{document} \startDocument \mediumverticalspacing \vspace{1cm} \begin{center} \includegraphics[width=0.5\linewidth]{~/projects/latex/assets/logo.jpg} \end{center} \vspace{2cm} \begin{center} \begin{Large} \quote{A funny quote by a professor} \end{Large} \hspace{3cm} - Prof. Dr. Professor Name, YEAR \end{center} \vspace{1.5cm} \begin{center} FS2026, ETHZ \begin{Large} Summary of the Lecture Slides \end{Large} \url{https://infsec.ethz.ch/education/ss2026/fmfp.html} \end{center} \newpage \printtoc{Aquamarine} % TODO: Strong and weak structural induction and more \newsection \section{Haskell} \input{parts/00_haskell/00_intro.tex} \input{parts/00_haskell/01_syntax.tex} \newsection \section{Induction Proofs} \label{sec:induction-proofs} \input{parts/01_induction-proofs/00_intro.tex} \input{parts/01_induction-proofs/01_mathematical-induction.tex} \input{parts/01_induction-proofs/02_structural-induction.tex} \input{parts/01_induction-proofs/03_induction-on-trees.tex} \input{parts/01_induction-proofs/04_other-induction.tex} \input{parts/01_induction-proofs/05_induction-on-proof-trees.tex} \input{parts/01_induction-proofs/06_induction-on-derivation-sequence.tex} \input{parts/01_induction-proofs/07_workflow.tex} % \input{parts/01_induction-proofs/} \newsection \section{Formal Reasoning} \input{parts/02_formal-reasoning/00_formal-proofs.tex} \input{parts/02_formal-reasoning/01_natural-deduction.tex} \input{parts/02_formal-reasoning/02_propositional-logic/00_syntax.tex} \input{parts/02_formal-reasoning/02_propositional-logic/01_semantics.tex} \input{parts/02_formal-reasoning/02_propositional-logic/02_deductive-system.tex} \input{parts/02_formal-reasoning/02_propositional-logic/03_natural-deduction-prop-logic.tex} \input{parts/02_formal-reasoning/02_propositional-logic/04_derivation-rules-overview.tex} \input{parts/02_formal-reasoning/03_first-order-logic/00_syntax.tex} \input{parts/02_formal-reasoning/03_first-order-logic/01_semantics.tex} \input{parts/02_formal-reasoning/03_first-order-logic/02_quantifiers.tex} \input{parts/02_formal-reasoning/04_equality.tex} \input{parts/02_formal-reasoning/05_correctness/00_intro.tex} \input{parts/02_formal-reasoning/05_correctness/01_termination.tex} \input{parts/02_formal-reasoning/05_correctness/02_behaviour.tex} % \input{parts/02_formal-reasoning/05_correctness/} % \input{parts/02_formal-reasoning/} \newsection \section{Typing} \input{parts/03_typing/00_intro.tex} \input{parts/03_typing/01_mini-haskell/00_syntax.tex} \input{parts/03_typing/01_mini-haskell/01_lambda-calculus.tex} \input{parts/03_typing/01_mini-haskell/02_further-rules.tex} \input{parts/03_typing/01_mini-haskell/03_type-inference.tex} \input{parts/03_typing/02_algebraic-data-types/00_correctness.tex} \input{parts/03_typing/02_algebraic-data-types/01_induction-nat-num.tex} \input{parts/03_typing/02_algebraic-data-types/02_lists.tex} \input{parts/03_typing/02_algebraic-data-types/03_trees.tex} \input{parts/03_typing/03_interpreter/00_intro.tex} \input{parts/03_typing/03_interpreter/01_read.tex} \input{parts/03_typing/03_interpreter/02_eval.tex} % \input{parts/03_typing/03_interpreter/} \newsection \section{Language Semantics} \input{parts/04_language-semantics/00_imp/00_syntax.tex} \input{parts/04_language-semantics/00_imp/01_semantics.tex} \input{parts/04_language-semantics/00_imp/02_properties.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/00_transition-systems.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/01_semantics.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/02_instantiations.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/03_termination.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/04_semantic-equivalence.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/05_unfolding-loops.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/06_deterministic-semantics.tex} \input{parts/04_language-semantics/01_operational-semantics/00_big-step-semantics/07_extensions-of-imp.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/00_structural-operational-semantics.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/01_rules.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/02_multi-step-derivation-seq.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/03_termintation.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/04_proofs.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/05_semantic-equivalence.tex} \input{parts/04_language-semantics/01_operational-semantics/01_small-step-semantics/06_extensions.tex} \input{parts/04_language-semantics/01_operational-semantics/02_equiv.tex} \input{parts/04_language-semantics/01_operational-semantics/03_rules-summary.tex} \input{parts/04_language-semantics/02_axiomatic-semantics/00_intro.tex} \input{parts/04_language-semantics/02_axiomatic-semantics/01_hoare-logic/00_triples-assertions.tex} \input{parts/04_language-semantics/02_axiomatic-semantics/01_hoare-logic/01_derivation-systems.tex} \input{parts/04_language-semantics/02_axiomatic-semantics/01_hoare-logic/02_total-correctness.tex} \input{parts/04_language-semantics/02_axiomatic-semantics/02_soundness-completeness.tex} % \input{parts/04_language-semantics/} \newsection \section{Modelling} \input{parts/05_modelling/00_intro.tex} \input{parts/05_modelling/01_promela/00_syntax.tex} \input{parts/05_modelling/01_promela/01_expressions.tex} \input{parts/05_modelling/01_promela/02_statements.tex} \input{parts/05_modelling/01_promela/03_macros.tex} \input{parts/05_modelling/02_linear-temporal-logic/00_linear-time-properties.tex} \input{parts/05_modelling/02_linear-temporal-logic/01_linear-temporal-logic.tex} % \input{parts/05_modelling/02_linear-temporal-logic/} % \input{parts/05_modelling/} \newsection \section{Exercises} \subsection{Introduction} \input{parts/06_exercises/00_intro.tex} \subsection{Functional Programming} \input{parts/06_exercises/01_fp/00_eval-strats.tex} \input{parts/06_exercises/01_fp/01_haskell.tex} \input{parts/06_exercises/01_fp/02_natural-deduction.tex} \input{parts/06_exercises/01_fp/03_type-inference.tex} % \input{parts/06_exercises/01_fp/} \subsection{Induction} For induction proofs, see Section~\ref{sec:induction-proofs}, which were moved up, since they are used in both FP and FM, as well as being mentioned a few times in the rest of the summary. \newpage \subsection{Formal Methods} \input{parts/06_exercises/02_fm/00_imp.tex} \input{parts/06_exercises/02_fm/01_operational-semantics.tex} \input{parts/06_exercises/02_fm/02_axiomatic-semantics.tex} \input{parts/06_exercises/02_fm/03_modelling.tex} \input{parts/06_exercises/02_fm/04_ltl.tex} % \input{parts/06_exercises/02_fm/} % \input{parts/06_exercises/} \newpage \input{parts/06_exercises/03_checklist.tex} \end{document}