/-- `deny` is the absorbing top: it wins on either side. -/@[simp,grind=]theoremcombine_deny_left(d:Decision):combine.denyd=.deny:=d:Decision⊢ combineDecision.denyd=Decision.denyAll goals completed! 🐙@[simp,grind=]theoremcombine_deny_right(d:Decision):combined.deny=.deny:=d:Decision⊢ combinedDecision.deny=Decision.denyAll goals completed! 🐙/-- `notApplicable` is the identity: silence on either side changes nothing. -/@[simp,grind=]theoremcombine_na_left(d:Decision):combine.notApplicabled=d:=d:Decision⊢ combineDecision.notApplicabled=d⊢ combineDecision.notApplicableDecision.permit=Decision.permit⊢ combineDecision.notApplicableDecision.deny=Decision.deny⊢ combineDecision.notApplicableDecision.notApplicable=Decision.notApplicable⊢ combineDecision.notApplicableDecision.permit=Decision.permit⊢ combineDecision.notApplicableDecision.deny=Decision.deny⊢ combineDecision.notApplicableDecision.notApplicable=Decision.notApplicableAll goals completed! 🐙@[simp,grind=]theoremcombine_na_right(d:Decision):combined.notApplicable=d:=d:Decision⊢ combinedDecision.notApplicable=d⊢ combineDecision.permitDecision.notApplicable=Decision.permit⊢ combineDecision.denyDecision.notApplicable=Decision.deny⊢ combineDecision.notApplicableDecision.notApplicable=Decision.notApplicable⊢ combineDecision.permitDecision.notApplicable=Decision.permit⊢ combineDecision.denyDecision.notApplicable=Decision.deny⊢ combineDecision.notApplicableDecision.notApplicable=Decision.notApplicableAll goals completed! 🐙@[simp,grind=]theoremdenyOverrides_nil:denyOverrides[]=.notApplicable:=rfl@[simp,grind=]theoremdenyOverrides_cons(d:Decision)(rest:ListDecision):denyOverrides(d::rest)=combined(denyOverridesrest):=rfl@[simp,grind=]theoremdenyOverrides_deny(rest:ListDecision):denyOverrides(.deny::rest)=.deny:=rest:ListDecision⊢ denyOverrides(Decision.deny::rest)=Decision.denyAll goals completed! 🐙/-- The headline behaviour of `notApplicable`: a silent vote at the head just disappears. This is *why* `optimize` is sound. -/@[simp,grind=]theoremdenyOverrides_na(rest:ListDecision):denyOverrides(.notApplicable::rest)=denyOverridesrest:=rest:ListDecision⊢ denyOverrides(Decision.notApplicable::rest)=denyOverridesrestAll goals completed! 🐙