module /-! Applying `[instance]` after the fact should check for appropriate reducibility. -/ public def unexposed : Inhabited Nat := inferInstance /-- warning: instance `unexposed` must be marked with `@[expose]` -/ #guard_msgs in attribute [instance] unexposed /-- warning: instance `unexposed` must be marked with `@[reducible]` or `@[instance_reducible]` -/ #guard_msgs in attribute [local instance] unexposed @[expose] public def exposed : Inhabited Nat := inferInstance /-- warning: instance `exposed` must be marked with `@[reducible]` or `@[instance_reducible]` -/ #guard_msgs in attribute [instance] exposed /-- warning: instance `exposed` must be marked with `@[reducible]` or `@[instance_reducible]` -/ #guard_msgs in attribute [local instance] exposed @[expose, instance_reducible] public def exposedAndReducible : Inhabited Nat := inferInstance #guard_msgs in attribute [instance] exposedAndReducible #guard_msgs in attribute [local instance] exposedAndReducible instance bla : Add Int := ⟨Int.add⟩ #guard_msgs in attribute [irreducible] bla