Compare commits

...

1 Commits

Author SHA1 Message Date
Kyle Miller
f94b73b6f9 feat: abstract proofs in all declaration types
(draft)

Todo:
* perf measurements
* figure out unknown constant error in `tests/lean/magical.lean`
2025-02-21 10:22:13 -08:00
2 changed files with 9 additions and 4 deletions

View File

@@ -88,11 +88,15 @@ def applyAttributesOf (preDefs : Array PreDefinition) (applicationTime : Attribu
applyAttributesAt preDef.declName preDef.modifiers.attrs applicationTime
def abstractNestedProofs (preDef : PreDefinition) : MetaM PreDefinition := withRef preDef.ref do
if preDef.kind.isTheorem || preDef.kind.isExample then
if preDef.kind.isExample then
pure preDef
else do
let value Meta.abstractNestedProofs preDef.declName preDef.value
pure { preDef with value := value }
else
let type Meta.abstractNestedProofs preDef.declName preDef.type
if preDef.kind.isTheorem then
pure { preDef with type }
else
let value Meta.abstractNestedProofs preDef.declName preDef.value
pure { preDef with type, value }
/-- Auxiliary method for (temporarily) adding pre definition as an axiom -/
def addAsAxiom (preDef : PreDefinition) : MetaM Unit := do

View File

@@ -6,3 +6,4 @@ but the projected value is not, it has type
Nat
magical.lean:5:8-5:18: error: (kernel) invalid projection
h.2
magical.lean:5:8-5:18: error: (kernel) unknown constant 'witness_eq.proof_1'