-- Let's test it:

-- testDescInd = equal (typ :>: (fromRight $ withTac, orig)) (B0,3)
--     where x = N (P ([("",0)] := DECL :<: SET))
--           y = N (P ([("",1)] := DECL :<: desc))
--           z = N (P ([("",2)] := DECL :<: SET))
--           typ = SET
--           withTac = opRun descOp [IND x y, z]
--           orig = indDescRun x y z

-- Just check that we can use Ind1:

-- testDescInd1 = isRight withTac
--     where x = N (P ([("",1)] := DECL :<: desc))
--           z = N (P ([("",2)] := DECL :<: SET))
--           typ = SET
--           withTac = opRun descOp [IND1 x, z]

-- Box on an Arg is supposed to build this term:

boxArgRun a f d p v = boxOp @@ [f $$ A (v $$ Fst),d,p,v $$ Snd]
boxArgRun a f d p v = boxOp @@ [f $$ A (v $$ Fst),d,p,v $$ Snd]
boxArgRun a f d p v = boxOp @@ [f $$ A (v $$ Fst),d,p,v $$ Snd]