次のやり方
とにかく、デフォルトの場合にまとめられるところをまとめるという考えでいくと
match t1, t2, t3, t4, t5, t6, t7 with | 特殊な場合 => | s1, s2, s3, s4, s5, s6, s7 => Node s1 (Node s2 (Node s3 (Node s4 (Node s5 (Node s6 s7))))) end
とするのがよいという結論になった。
「特殊な場合」にマッチするの部分集合をとし、「デフォルトの場合」の結果ツリーの全体からなるの部分集合をとする。
を解けばいい。
まず、の場合を考えてみると、
match t1, t2, t3, t4, t5, t6, t7 with | Leaf, Leaf, Leaf, Leaf, Leaf, Leaf, s1 => f_1 s1 | s1, s2, s3, s4, s5, s6, s7 => Node s1 (Node s2 (Node s3 (Node s4 (Node s5 (Node s6 s7))))) end
の形になり、少し計算すると
であることが分かる。よって は
となる。
で完成する。これで場合わけを圧縮すると6通りになる。
例によって、方向の場合わけがうまくいかない。