I'm currently working on making proof trees for regular expressions in scheme. The suggested way of writing these in the course I'm taking is the following, which I've manually typed into TeX.
This however, is a tedious process, especially for long expressions. So what I am looking for is a sneaky way to make the type of proof tree shown above, or maybe an alternative, that can accomplish the same.
Edit:
Here is my code, I don't mind typing in the tree, but this way is really, really slow. So if there is a package that can do some of the positioning work for me I'd be a happy camper.
\phantom{ATOM}\ \ \ \ \ 1 is a Scheme integer\qquad\qquad\qquad (\%regexp (atom 2))\\
ATOM ---------------------\qquad\qquad SEQ ------------------------------------------------------------\\
\phantom{ATOM} (\%regexp (atom 1)) \qquad\qquad\qquad\ \ (\%regexp (seq (atom 2) (seq (atom 3) (seq (atom 4) (empty)))\\
\phantom{A}SEQ ---------------------------------------------------------------------------------------------\\
\phantom{ATOM} (\%regexp (seq (atom 1) (seq (atom 2) (seq (atom 3) (seq (atom 4) (empty))))))
Edit 2:
I've not kind of found a solution with the bussproofs package, but it's still not optimal, it gets a bit odd looking when the prooftrees get big.
My code for creating this is:
\begin{prooftree}
\def\ScoreOverhang{1pt}
\def\extraVskip{6pt}
\def\defaultHypSeparation{\hskip .2in}
\def\ruleScoreFiller{\hbox to1.1mm{\hss\vrule width0.9mm height0.4pt depth0.0pt\hss}}
\AxiomC{1 is a Scheme integer}
\LeftLabel{ATOM}
\UnaryInfC{(\%regexp (atom 1))}
\AxiomC{2 is a Scheme integer}
\LeftLabel{ATOM}
\UnaryInfC{(\%regexp (atom 2))}
\AxiomC{3 is a Scheme integer}
\LeftLabel{ATOM}
\UnaryInfC{(\%regexp (atom 3))}
\AxiomC{4 is a Scheme integer}
\LeftLabel{ATOM}
\UnaryInfC{(\%regexp (atom 4))}
\AxiomC{}
\LeftLabel{EMPTY}
\UnaryInfC{(\%regexp (empty))}
\LeftLabel{SEQ}
\BinaryInfC{(\%regexp (seq (atom 4) (empty)))}
\LeftLabel{SEQ}
\BinaryInfC{(\%regexp (seq (atom 3) (seq (atom 4) (empty))))}
\LeftLabel{SEQ}
\BinaryInfC{(\%regexp (seq (atom 2) (seq (atom 3) (seq (atom 4) (empty)))))}
\LeftLabel{SEQ}
\BinaryInfC{(\%regexp (seq (atom 1) (seq (atom 2) (seq (atom 3) (seq (atom 4) (empty))))))}
\end{prooftree}


documentenvironment. At least 2 packages provideprooftree, for example. (I know you say you usebussproofs, but not everyone will know that's the package which providesprooftree, especially if they knowprooftreesprovidesprooftree. – cfr Apr 28 '17 at 16:55ebproof?bussproofsis very popular, though. Also, could you be a bit more specific re. what you mean about them looking 'odd'. What would you like to be different? – cfr Apr 30 '17 at 21:20