Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
% (find-angg "LATEX/2017distributivity.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2017distributivity.tex"))
% (defun d () (interactive) (find-xpdfpage "~/LATEX/2017distributivity.pdf"))
% (defun e () (interactive) (find-LATEX "2017distributivity.tex"))
% (defun u () (interactive) (find-latex-upload-links "2017distributivity"))
% (find-xpdfpage "~/LATEX/2017distributivity.pdf")
% (find-sh0 "cp -v  ~/LATEX/2017distributivity.pdf /tmp/")
% (find-sh0 "cp -v  ~/LATEX/2017distributivity.pdf /tmp/pen/")
%   file:///home/edrx/LATEX/2017distributivity.pdf
%               file:///tmp/2017distributivity.pdf
%           file:///tmp/pen/2017distributivity.pdf
% http://angg.twu.net/LATEX/2017distributivity.pdf

% (find-angg "LUA/distributivity.lua")
% (find-LATEXgrep "grep -nH -e istributi *.tex")

\documentclass[oneside]{book}
\usepackage[colorlinks]{hyperref} % (find-es "tex" "hyperref")
%\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
\usepackage{color}                % (find-LATEX "edrx15.sty" "colors")
\usepackage{colorweb}             % (find-es "tex" "colorweb")
%\usepackage{tikz}
%
% (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{edrx15}               % (find-angg "LATEX/edrx15.sty")
\input edrxaccents.tex            % (find-angg "LATEX/edrxaccents.tex")
\input edrxchars.tex              % (find-LATEX "edrxchars.tex")
\input edrxheadfoot.tex           % (find-dn4ex "edrxheadfoot.tex")
\input edrxgac2.tex               % (find-LATEX "edrxgac2.tex")
%
\begin{document}

\catcode`\^^J=10
\directlua{dednat6dir = "dednat6/"}
\directlua{dofile(dednat6dir.."dednat6.lua")}
\directlua{texfile(tex.jobname)}
\directlua{verbose()}
\directlua{output(preamble1)}
\def\expr#1{\directlua{output(tostring(#1))}}
\def\eval#1{\directlua{#1}}
\def\pu{\directlua{pu()}}

\directlua{dofile "edrxtikz.lua"} % (find-LATEX "edrxtikz.lua")
\directlua{dofile "edrxpict.lua"} % (find-LATEX "edrxpict.lua")
%L V.__tostring = function (v) return format("(%.3f,%.3f)", v[1], v[2]) end

% (fooi "->" "→" "|-" "⊢" "&" "∧")

%:*∧*\land *
%:*v*\lor *

This proof presents no problems:
%:
%:  ------  ------
%:  P∧Q⊢P  P⊢PvQ
%:  -------------   --------  ------  ------
%:     P∧Q⊢PvQ     Q∧R⊢PvQ  P∧R⊢R  Q∧R⊢R
%:     ---------------------  --------------
%:      (P∧R)v(Q∧R)⊢PvQ      (P∧R)v(Q∧R)⊢R
%:      ------------------------------------
%:            (P∧R)v(Q∧R)⊢(PvQ)∧R
%:  
%:            ^distr-ok  
%:  
$$\pu
  \ded{distr-ok}
$$

%:            P∧((PvQ)∧R)⊢P  P∧((PvQ)∧R)⊢R  Q∧((PvQ)∧R)⊢Q  Q∧((PvQ)∧R)⊢R  
%:            ------------------------------  ------------------------------ 
%:                   P∧((PvQ)∧R)⊢P∧R            Q∧((PvQ)∧R)⊢Q∧R          
%:                  -------------------         ------------------
%:                  P⊢((PvQ)∧R)→(P∧R)         Q⊢((PvQ)∧R)→(Q∧R)
%:                  -----------------------------------------------
%:  (PvQ)∧R⊢PvQ                  PvQ⊢((PvQ)∧R)→(P∧R)
%:  =======================    ------------------------
%:  (PvQ)∧R⊢(PvQ)∧((PvQ)∧R)    (PvQ)∧((PvQ)∧R)⊢P∧RvQ∧R
%:  -----------------------------------------------
%:            (PvQ)∧R⊢P∧RvQ∧R
%:  
%:            ^distr-ok-hard
%:  
% $$\pu
%   \ded{distr-ok-hard}
% $$

This one, which seems to require `$→$', fails in some way:
%:  
%:              (PvQ)∧R       (PvQ)∧R
%:              ------        -------
%:        [P]^1   R     [Q]^1   R
%:        ---------     ---------
%:              P∧R           Q∧R
%:            ------------   -----------
%:  (PvQ)∧R   (P∧R)v(Q∧R)  (P∧R)v(Q∧R)
%:  -------   --------------------------
%:    PvQ      (P∧R)v(Q∧R)
%:    ----------------1
%:          (P∧R)v(Q∧R)
%:  
%:          ^distr-weird-1
%:  
$$\pu
  \ded{distr-weird-1}
$$
%:  
%:  P,(PvQ)∧R⊢P  P,(PvQ)∧R⊢R  Q,(PvQ)∧R⊢Q  Q,(PvQ)∧R⊢R  
%:  --------------------------  --------------------------  
%:      P,(PvQ)∧R⊢P∧R              Q,(PvQ)∧R⊢Q∧R          
%:    ==================          ==================
%:    P,(PvQ)∧R⊢P∧RvQ∧R          Q,(PvQ)∧R⊢P∧RvQ∧R
%:    ----------------------      ------------------
%:    P⊢((PvQ)∧R)→(P∧RvQ∧R)      Q⊢((PvQ)∧R)→(P∧RvQ∧R)
%:    --------------------------------------------------
%:             PvQ⊢((PvQ)∧R)→(P∧RvQ∧R)
%:            ==========================
%:            PvQ∧R⊢((PvQ)∧R)→(P∧RvQ∧R)
%:  
%:            ^distr-weird-2
%:  
$$\pu
  \ded{distr-weird-2}
$$



\end{document}

% Local Variables:
% coding: utf-8-unix
% ee-anchor-format: "«%s»"
% End: