fact: Fixpoint fuse (c1:context) (c2:context) : context := match c1 with | Top_c => c2 | TwoLeftHole_c em tr c1' => TwoLeftHole_c em tr (fuse c1' c2) | TwoRightHole_c tl em c1' => TwoRightHole_c tl em (fuse c1' c2) | ThreeLeftHole_c el em er tr c1' => ThreeLeftHole_c el em er tr (fuse c1' c2) | ThreeMiddleHole_c tl el er tr c1' => ThreeMiddleHole_c tl el er tr (fuse c1' c2) | ThreeRightHole_c tl el em er c1' => ThreeRightHole_c tl el em er (fuse c1' c2) end.
imports: ExtLib.Structures.Monads ExtLib.Data.Monads.OptionMonad ExtLib.Programming.Extras