daveduggan wrote

I still do not know how to simplify it using algebra.

Begin by thinking about the operation of the Mux. *sel* changes its behavior, *a* and *b* are just data. This means that *sel* is probably more important than *a* or *b*, so start the reduction with *sel*.

~a b sel + a ~b ~sel | + | a b ~sel + a b sel | | |

(~a b sel + a b sel) | + | (a ~b ~sel + a b ~sel) |
| gather terms with sel and ~sel |

(~a b + a b) sel | + | (a ~b + a b) ~sel |
| factor out sel and ~sel |

[(~a + a)b] sel | + | [a (~b + b)] ~sel |
| factor out b and a |

b sel | + | a ~sel |
| x + ~x = true |

Are you talking about submitting it to Coursera? If so, then submit your version that passes the test. There are no grading points deducted for lack of simplification.

--Mark