% (find-LATEX "2021lean-nng.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2021lean-nng.tex" :end))
% (defun C () (interactive) (find-LATEXSH "lualatex 2021lean-nng.tex" "Success!!!"))
% (defun D () (interactive) (find-pdf-page      "~/LATEX/2021lean-nng.pdf"))
% (defun d () (interactive) (find-pdftools-page "~/LATEX/2021lean-nng.pdf"))
% (defun e () (interactive) (find-LATEX "2021lean-nng.tex"))
% (defun l () (interactive) (find-LATEX "2021lean.lua"))
% (defun u () (interactive) (find-latex-upload-links "2021lean-nng"))
% (defun v () (interactive) (find-2a '(e) '(d)))
% (defun cv () (interactive) (C) (ee-kill-this-buffer) (v) (g))
% (defun d0 () (interactive) (find-ebuffer "2021lean-nng.pdf"))
%          (code-eec-LATEX "2021lean-nng")
% (find-pdf-page   "~/LATEX/2021lean-nng.pdf")
% (find-sh0 "cp -v  ~/LATEX/2021lean-nng.pdf /tmp/")
% (find-sh0 "cp -v  ~/LATEX/2021lean-nng.pdf /tmp/pen/")
%   file:///home/edrx/LATEX/2021lean-nng.pdf
%               file:///tmp/2021lean-nng.pdf
%           file:///tmp/pen/2021lean-nng.pdf
%  http://anggtwu.net/LATEX/2021lean-nng.pdf
% (find-LATEX "2019.mk")
% (find-lualatex-links "2021lean-nng")

% «.re»			(to "re")
% «.use_proofsty_lean»	(to "use_proofsty_lean")
% «.defftch»		(to "defftch")
% «.tree»		(to "tree")

\documentclass[oneside,12pt]{article}
\usepackage[colorlinks,citecolor=DarkRed,urlcolor=DarkRed]{hyperref} % (find-es "tex" "hyperref")
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
\usepackage[x11names,svgnames]{xcolor} % (find-es "tex" "xcolor")
%\usepackage{colorweb}                 % (find-es "tex" "colorweb")
%\usepackage{tikz}
\usepackage{stmaryrd}
%
% (find-dn6 "preamble6.lua" "preamble0")
\usepackage{proof}   % For derivation trees ("%:" lines)
%\input diagxy        % For 2D diagrams ("%D" lines)
%\xyoption{curve}     % For the ".curve=" feature in 2D diagrams
%
\usepackage{edrx21}               % (find-LATEX "edrx21.sty")
\input edrxaccents.tex            % (find-LATEX "edrxaccents.tex")
\input edrx21chars.tex            % (find-LATEX "edrx21chars.tex")
\input edrxheadfoot.tex           % (find-LATEX "edrxheadfoot.tex")
\input edrxgac2.tex               % (find-LATEX "edrxgac2.tex")
%\input 2017planar-has-defs.tex    % (find-LATEX "2017planar-has-defs.tex")
%
%\usepackage[backend=biber,
%   style=alphabetic]{biblatex}            % (find-es "tex" "biber")
%\addbibresource{catsem-slides.bib}        % (find-LATEX "catsem-slides.bib")
%
\usepackage{kluwer-fitch}                % (find-LATEX "fitch.sty")
%
% (find-es "tex" "geometry")
\usepackage[%a6paper, landscape,
            top=1.5cm, bottom=.25cm, left=1cm, right=1cm, includefoot
           ]{geometry}
\begin{document}

\catcode`\^^J=10
\directlua{dofile "dednat6load.lua"}  % (find-LATEX "dednat6load.lua")

\def\incgr#1#2{\myvcenter{\includegraphics[#1]{#2}}}
\def\scale#1#2{\scalebox{#1}{$#2$}}

% %L dofile "edrxtikz.lua"  -- (find-LATEX "edrxtikz.lua")
% %L dofile "edrxpict.lua"  -- (find-LATEX "edrxpict.lua")
% \pu


%L -- «re»  (to ".re")
%L -- (find-es "luatex" "re")
%L re = require "re"
%L
%L -- «use_proofsty_lean»  (to ".use_proofsty_lean")
%L -- (find-LATEX "2021lean.lua" "use_proofsty_lean")
%L dofile "2021lean.lua"
%L use_proofsty_lean()
%L
%L dofile "2021fitch.lua"


\pu

% «defftch»  (to ".defftch")
% (find-LATEX "edrx21.sty" "defub")
\directlua{dofile "2021fitch.lua"}    % (find-LATEX "2021fitch.lua")
\def\defftch#1#2{\expandafter\def\csname ftch-#1\endcsname{#2}}
\def\ifftchundefined#1{\expandafter\ifx\csname ftch-#1\endcsname\relax}
\def\ftch#1{\ifftchundefined{#1}
    \errmessage{UNDEFINED FTCH: #1}
  \else
    \csname ftch-#1\endcsname
  \fi
}


% «tree»  (to ".tree")
% (find-es "dednat" "lean-nng")
%



Tutorial world:

%:
%:
%:      x,y,z:mynat
%:   ------------------
%:   refl:[x*y+z=x*y+z]
%:
%:   ^tutorial-1/4
%:
%:   ----------------------               --------------            
%:   refl:[2*(x+7)=2*(x+7)]   h:[y=x+7]   refl:[2*y=2*y]   h:[y=x+7]   
%:   ----------------------------------   --------------------------   
%:     (rw.h):[2*y=2*(x+7)]                 (rw←h):[2*y=2*(x+7)]    
%:                                                                 
%:     ^tutorial-2/4a                       ^tutorial-2/4b          
%:
%:  --------------------                   --------------------------------
%:  refl:[succ.b=succ.b]    h:[succ.a=b]   refl:[succ(succ.a)=succ(succ.a)]    h:[succ.a=b]   
%:  ------------------------------------   ------------------------------------------------   
%:    (rw.h):[succ(succ.a)=succ.b]           (rw←h):[succ(succ.a)=succ.b]
%:                                                                                
%:    ^tutorial-3/4a                         ^tutorial-3/4b
%:
%:    --------------------
%:    refl:[succ.a=succ.a]  add_zero:[a+0=a]    add_succ:[a+succ.d=succ(a+d)]    
%:    --------------------------------------    -----------------------------   
%:    (rw.add_zero):[succ(a+0)=succ.a]          add_succ:[a+succ.0=succ(a+0)]                   
%:    -----------------------------------------------------------------------
%:    (rw.add_succ):[a+succ.0=succ.a]
%:
%:    ^tutorial-4/4
%:
%:
%:
\pu

Level 1/4: 
$$\ded{tutorial-1/4}$$

Level 2/4:
$$\ded{tutorial-2/4a}$$
$$\ded{tutorial-2/4b}$$

Level 3/4:
$$\ded{tutorial-3/4a}$$
$$\ded{tutorial-3/4b}$$

Level 4/4:
$$\ded{tutorial-4/4}$$



\bsk
\bsk
\bsk
\bsk


Note: this is a {\sl very improvised} translation of the first
exercises

of the Natural Numbers Game to Natural Deduction. I started learning

Lean in the beginning of oct/2021 and started to typeset these tress in

2021oct13, so this is very new and full of guesses --- mainly of the

kind ``with the right abbreviations I can write this term in this way''.

\msk

Some links:

{\footnotesize

\url{https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/}

\url{http://math.andrej.com/2021/06/24/the-dawn-of-formalized-mathematics/}

\url{http://math.andrej.com/asset/data/the-dawn-of-formalized-mathematics.pdf}

\url{http://www.youtube.com/watch?v=fty9QL4aSRc} Vladislav Zavialov - Haskell to Core

\url{https://leanprover-community.github.io/mathlib_docs/tactic/explode.html\#tactic.explode}

% (favp 35)
%    http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=35
\url{http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=35} $⟦·⟧$

%    http://angg.twu.net/LATEX/2021lean-nng.pdf
\url{http://angg.twu.net/LATEX/2021lean-nng.pdf} this PDF

\url{http://angg.twu.net/math-b.html} my home page

\url{http://angg.twu.net/dednat6.html}

}




\newpage


Addition world:
%:                                   ---------------------
%:                add_zero:[a+0=a]   refl:[succ(d)=succ.d]  (hd:[0+d=d])^1   add_succ:[a+succ.d=succ(a+d)]
%:   ----------   ----------------   -------------------------------------   -----------------------------
%:   refl:[0=0]   add_zero:[0+0=0]   (rw.hd):[succ(0+d)=succ.d]              add_succ:[0+succ.d=succ(0+d)]
%:   -----------------------------   ---------------------------------------------------------------------
%:   (rw.add_zero):[0+0=0]           (rw.add_succ):[0+succ.d=succ.d]
%:   -------------------------------------------------------------------1
%:   (induction.n.with.d.hd):[0+n=n]
%:
%:   ^addition-1/6a
%:
%:                           ---------------------
%:                           refl:[succ(d)=succ.d]  (hd:[0+d=d])^1
%:   ----------              -------------------------------------
%:   refl:[0=0]              (rw.hd):[succ(0+d)=succ.d]
%:   ---------------------   -------------------------------
%:   (rw.add_zero):[0+0=0]   (rw.add_succ):[0+succ.d=succ.d]
%:   -------------------------------------------------------1
%:   (induction.n.with.d.hd):[0+n=n]
%:
%:   ^addition-1/6b
%:
%:                             ---------------------
%:                             refl:[succ(d)=succ.d]  (hd:[0+d=d])^1
%:   ----------                -------------------------------------
%:   refl:[0=0]                (rw.hd):[succ(0+d)=succ.d]
%:   -----------------------   -----------------------------------
%:   (rw.add_zero.0):[0+0=0]   (rw.add_succ.0.d):[0+succ.d=succ.d]
%:   -----------------------------------------------------------1
%:   (induction.n.with.d.hd):[0+n=n]
%:
%:   ^addition-1/6c
%:
%:
%:
%:                                       (hd:[(a+b)+d=a+(b+d)])^1
%:                                       -------------------------------------
%:                                       (rw.hd):[succ((a+b)+d)=succ(a+(b+d))]
%:   --------------                      -----------------------------------------
%:   refl:[a+b=a+b]                      (rw.add_succ):[succ((a+b)+d)=a+succ(b+d)]
%:   ---------------------------         ------------------------------------------
%:   (rw.add_zero):[a+b=a+(b+0)]         (rw.add_succ):[succ((a+b)+d)=a+(b+succ.d)]
%:   -------------------------------     -------------------------------------------
%:   (rw.add_zero):[(a+b)+0=a+(b+0)]     (rw.add_succ):[(a+b)+(succ.d)=a+(b+succ.d)]
%:   -------------------------------------------------------------------------------1
%:   (induction.c.with.d.hd):[(a+b)+c=a+(b+c)]
%:
%:   ^addition-2/6
%:
%:                                                    (hc:[(succ a)+c=succ(a+c)])^1
%:   --------------------                             ------------------------------------------
%:   refl:[succ.a=succ.a]                             (rw.hc):[succ((succ.a)+c)=succ(succ(a+c))]
%:   ----------------------------------               ----------------------------------------------------
%:   (rw.add_zero.a):[succ.a=succ(a+0)]               (rw.add_succ.a.c):[succ((succ.a)+c)=succ(a+succ.c)]
%:   --------------------------------------------     -----------------------------------------------------
%:   (rw.add_zero(succ.a)):[(succ.a)+0=succ(a+0)]     (rw.add_succ.(succ.a).c):[(succ.a)+(succ.c)=succ(a+succ.c)]
%:   -------------------------------------------------------------------------------------1
%:   (induction.b.with.c.hc):[(succ.a)+b=succ(a+b)]
%:
%:   ^addition-3/6
%:
%:
%:  
%:                                       (hc:[a+c=c+a)])^1
%:   ----------                       -----------------------------
%:   refl:[a=a]                       (rw.hc):[succ(a+c)=succ(c+a)]
%:   -----------------------          ----------------------------------------
%:   (rw.zero_add.a):[a=0+a]          (rw.succ_add.c.a):[succ(a+c)=(succ.c)+a]
%:   -------------------------        -----------------------------------------
%:   (rw.add_zero.a):[a+0=0+a]        (rw.add_succ.a.c):[a+(succ.c)=(succ.c)+a]
%:   --------------------------------------------------------------------------1
%:   (induction.b.with.c.hc):[a+b=b+a]
%:
%:   ^addition-4/6
%:
\pu

Level 1/6:
$$\scale{0.85}{\ded{addition-1/6a}}$$
$$\scale{0.85}{\ded{addition-1/6b}}$$
$$\scale{0.85}{\ded{addition-1/6c}}$$

Level 2/6:
$$\scale{0.85}{\ded{addition-2/6}}$$

Level 3/6:
$$\scale{0.85}{\ded{addition-3/6}}$$

Level 4/6:
$$\scale{0.85}{\ded{addition-3/6}}$$

Level 5/6:

(I didn't draw the tree)

\msk

Level 6/6:

(I didn't draw the tree)

\newpage

Function world:

% (find-LATEX "2021fitch.lua")
% (find-LATEX "2021lean.lua")

\def\tac#1#2{(#1)(#2)}
\def\tac#1#2{#1 \; \ColorRed{⇒} \; #2}
\def\tac#1#2{$#1 \; \ColorRed{⇒} \; #2$}

%L FitchGrid.__index.texmiddle = function (fg, str)
%L    return lean_stranslate(str)
%L  end
%L FitchGrid.__index.texright = function (fg, str)
%L    return lean_stranslate(str)
%L  end
%L FitchGrid.__index.texright = function (fg, str)
%L    return "Hi"
%L  end



Level 1/9:
\msk

%F   / P,Q:Type
%F   | p:P
%F   | h:(P→Q)
%F   | ----
%F   \ α:Q           \tac{exact.h.p}{α:=h.p}
%L
%L defftch "function-1/9"
$\pu
  \ftch{function-1/9}
$

\bsk

Level 2/9:
\msk

%F   / / n:mynat
%F   | | ----
%F   | \ β:mynat         \tac{exact.2*n+3}{β:=2*n+3}
%F   \ α:(mynat→mynat)   \tac{intro.n}{α:=λn:mynat..β}
%L
%L defftch "function-2/9"
$\pu
  \ftch{function-2/9}
$

Level 3/9:
\msk

%F / P,Q,R,S,T,U:Type
%F | p:P
%F | h:P→Q
%F | i:Q→R
%F | j:Q→T
%F | k:S→T
%F | l:T→U
%F | -----
%F | q:Q      \tac{have.q:=h(p)}{}
%F | t:T      \tac{have.t:=j(q)}{}
%F \ u:U      \tac{exact.l.t}{u:=l.t}
%L defftch "function-3/9"
$$\pu
  \ftch{function-3/9}
$$





\newpage




%\printbibliography

\GenericWarning{Success:}{Success!!!}  % Used by `M-x cv'

\end{document}

%  __  __       _        
% |  \/  | __ _| | _____ 
% | |\/| |/ _` | |/ / _ \
% | |  | | (_| |   <  __/
% |_|  |_|\__,_|_|\_\___|
%                        
% <make>

 (eepitch-shell)
 (eepitch-kill)
 (eepitch-shell)
# (find-LATEXfile "2019planar-has-1.mk")
make -f 2019.mk STEM=2021lean-nng veryclean
make -f 2019.mk STEM=2021lean-nng pdf

% Local Variables:
% coding: utf-8-unix
% ee-tla: "lea"
% End:
