simp [toBoolExpr]
x✝ : BoolExprNat
f : List Bool
g : Gate
x y : BoolExprNat
⊢ BoolExpr.eval (fun i => decide (i < (gate g x y).toBoolExpr.vars) && f.getD i false) (gate g x y).toBoolExpr =
    eval f (gate g x y)
x✝ : BoolExprNat
f : List Bool
g : Gate
x y : BoolExprNat
⊢ g.eval (BoolExpr.eval (fun i => decide (i < max x.toBoolExpr.vars y.toBoolExpr.vars) && f.getD i false) x.toBoolExpr)
      (BoolExpr.eval (fun i => decide (i < max x.toBoolExpr.vars y.toBoolExpr.vars) && f.getD i false) y.toBoolExpr) =
    g.eval (eval f x) (eval f y)