diff --git a/src/Lean/Meta/SizeOf.lean b/src/Lean/Meta/SizeOf.lean index 932f59b65d..449f21da54 100644 --- a/src/Lean/Meta/SizeOf.lean +++ b/src/Lean/Meta/SizeOf.lean @@ -149,17 +149,15 @@ partial def mkSizeOfFn (recName : Name) (declName : Name): MetaM Unit := do trace[Meta.sizeOf] "declName: {declName}" trace[Meta.sizeOf] "type: {sizeOfType}" trace[Meta.sizeOf] "val: {sizeOfValue}" - -- We expose the `sizeOf` functions so that the `spec` theorems can be publicly `defeq` - withExporting do - addDecl <| Declaration.defnDecl { - name := declName - levelParams := levelParams - type := sizeOfType - value := sizeOfValue - safety := DefinitionSafety.safe - hints := ReducibilityHints.abbrev - } - enableRealizationsForConst declName + addDecl <| Declaration.defnDecl { + name := declName + levelParams := levelParams + type := sizeOfType + value := sizeOfValue + safety := DefinitionSafety.safe + hints := ReducibilityHints.abbrev + } + enableRealizationsForConst declName /-- Create `sizeOf` functions for all inductive datatypes in the mutual inductive declaration containing `typeName` @@ -469,7 +467,6 @@ private def mkSizeOfSpecTheorem (indInfo : InductiveVal) (sizeOfFns : Array Name type := thmType value := thmValue } - inferDefEqAttr thmName simpAttr.add thmName default .global grindAttr.add thmName grindAttrStx .global diff --git a/tests/elab/issue5661.lean b/tests/elab/issue5661.lean index dc2978ca48..8d1afc8359 100644 --- a/tests/elab/issue5661.lean +++ b/tests/elab/issue5661.lean @@ -1,5 +1,7 @@ import Lean.Meta.Basic +set_option warn.sorry false + inductive StructLike α where | mk : α → StructLike α @@ -8,7 +10,7 @@ inductive Nested where | other /-- -info: @[defeq] theorem Nested.nest.sizeOf_spec : ∀ (a : StructLike Nested), sizeOf (Nested.nest a) = 1 + sizeOf a := +info: theorem Nested.nest.sizeOf_spec : ∀ (a : StructLike Nested), sizeOf (Nested.nest a) = 1 + sizeOf a := fun a => Eq.refl (1 + sizeOf a) -/ #guard_msgs in diff --git a/tests/elab/issue5661.lean.out.expected b/tests/elab/issue5661.lean.out.expected deleted file mode 100644 index 50c168d81b..0000000000 --- a/tests/elab/issue5661.lean.out.expected +++ /dev/null @@ -1,2 +0,0 @@ -issue5661.lean:48:0-48:8: warning: declaration uses `sorry` -issue5661.lean:66:8-66:23: warning: declaration uses `sorry` diff --git a/tests/elab/sizeof1.lean.out.expected b/tests/elab/sizeof1.lean.out.expected index 2d01b8ea2f..1b2d0726e9 100644 --- a/tests/elab/sizeof1.lean.out.expected +++ b/tests/elab/sizeof1.lean.out.expected @@ -1,5 +1,5 @@ -@[defeq] theorem TreePos.leaf.sizeOf_spec.{u, v} : ∀ {α : Type u} {β : Type v} [inst : SizeOf α] [inst_1 : SizeOf β] - (a : α), sizeOf (TreePos.leaf a) = 1 + sizeOf a := +theorem TreePos.leaf.sizeOf_spec.{u, v} : ∀ {α : Type u} {β : Type v} [inst : SizeOf α] [inst_1 : SizeOf β] (a : α), + sizeOf (TreePos.leaf a) = 1 + sizeOf a := fun {α} {β} [SizeOf α] [SizeOf β] a => Eq.refl (1 + sizeOf a) theorem TreePos.node.sizeOf_spec.{u, v} : ∀ {α : Type u} {β : Type v} [inst : SizeOf α] [inst_1 : SizeOf β] (children : List (List (TreeNeg α β))), sizeOf (TreePos.node children) = 1 + sizeOf children := diff --git a/tests/elab/sizeof3.lean.out.expected b/tests/elab/sizeof3.lean.out.expected index 5a0e05e5c8..e7392d6d04 100644 --- a/tests/elab/sizeof3.lean.out.expected +++ b/tests/elab/sizeof3.lean.out.expected @@ -1,11 +1,10 @@ -@[defeq] theorem AList.nil.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β], - sizeOf AList.nil = 1 := +theorem AList.nil.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β], sizeOf AList.nil = 1 := fun {α β} [SizeOf α] [SizeOf β] => Eq.refl 1 -@[defeq] theorem AList.cons.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β] (a : α) - (t : BList α β), sizeOf (AList.cons a t) = 1 + sizeOf a + sizeOf t := +theorem AList.cons.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β] (a : α) (t : BList α β), + sizeOf (AList.cons a t) = 1 + sizeOf a + sizeOf t := fun {α β} [SizeOf α] [SizeOf β] a t => Eq.refl (1 + sizeOf a + sizeOf t) -@[defeq] theorem BList.cons.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β] (b : β) - (t : AList α β), sizeOf (BList.cons b t) = 1 + sizeOf b + sizeOf t := +theorem BList.cons.sizeOf_spec.{u} : ∀ {α β : Type u} [inst : SizeOf α] [inst_1 : SizeOf β] (b : β) (t : AList α β), + sizeOf (BList.cons b t) = 1 + sizeOf b + sizeOf t := fun {α β} [SizeOf α] [SizeOf β] b t => Eq.refl (1 + sizeOf b + sizeOf t) theorem Boo.mk.sizeOf_spec.{u} : ∀ {α : Type u} [inst : SizeOf α] (a : α) (cs : BList (Foo α) (Boo α)), sizeOf (Boo.mk a cs) = 1 + sizeOf a + sizeOf cs :=