(a, false, b, true, c) : prod num (prod Prop (prod num (prod Prop num))) prod.mk a (prod.mk false (prod.mk b (prod.mk true c))) : prod num (prod Prop (prod num (prod Prop num))) (a, false, b, true, c) : prod (prod (prod (prod num Prop) num) Prop) num prod.mk (prod.mk (prod.mk (prod.mk c true) b) false) a : prod (prod (prod (prod num Prop) num) Prop) num (a, false, b, true, c) : prod (prod (prod (prod num Prop) num) Prop) num prod.mk (prod.mk (prod.mk (prod.mk a false) b) true) c : prod (prod (prod (prod num Prop) num) Prop) num (a, false, b, true, c) : prod num (prod Prop (prod num (prod Prop num))) prod.mk c (prod.mk true (prod.mk b (prod.mk false a))) : prod num (prod Prop (prod num (prod Prop num)))