Skip to content

Commit 310d0dd

Browse files
committed
fix : only default to Prop for structures
1 parent c00a093 commit 310d0dd

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/Lean/Elab/Inductive.lean

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,13 +419,13 @@ where
419419
levelMVarToParam' (type : Expr) : TermElabM Expr := do
420420
Term.levelMVarToParam type (except := fun mvarId => univToInfer? == some mvarId)
421421

422-
def mkResultUniverse (us : Array Level) (rOffset : Nat) : Level :=
422+
def mkResultUniverse (us : Array Level) (rOffset : Nat) (defaultLevel : Level) : Level :=
423423
if us.isEmpty && rOffset == 0 then
424-
levelOne
424+
defaultLevel
425425
else
426426
let r := Level.mkNaryMax us.toList
427-
if rOffset == 0 && !r.isZero && !r.isNeverZero then
428-
mkLevelMax r levelOne |>.normalize
427+
if rOffset == 0 && !r.isZero && !r.isNeverZero && !defaultLevel.isZero then
428+
mkLevelMax r defaultLevel |>.normalize
429429
else
430430
r.normalize
431431

@@ -446,6 +446,7 @@ where
446446
go (u : Level) (rOffset : Nat) : OptionT (StateT (Array Level) Id) Unit := do
447447
match u, rOffset with
448448
| .max u v, rOffset => go u rOffset; go v rOffset
449+
| .zero, _ => return ()
449450
| .imax u v, rOffset => go u rOffset; go v rOffset
450451
| .succ u, rOffset+1 => go u rOffset
451452
| u, rOffset =>
@@ -513,7 +514,7 @@ private def updateResultingUniverse (views : Array InductiveView) (numParams : N
513514
throwError "failed to compute resulting universe level of inductive datatype, provide universe explicitly: {r}"
514515
let us ← collectUniverses views r rOffset numParams indTypes
515516
trace[Elab.inductive] "updateResultingUniverse us: {us}, r: {r}, rOffset: {rOffset}"
516-
let rNew := mkResultUniverse us rOffset
517+
let rNew := mkResultUniverse us rOffset levelOne
517518
assignLevelMVar r.mvarId! rNew
518519
indTypes.mapM fun indType => do
519520
let type ← instantiateMVars indType.type

src/Lean/Elab/Structure.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ private def updateResultingUniverse (fieldInfos : Array StructFieldInfo) (type :
644644
match r with
645645
| Level.mvar mvarId =>
646646
let us ← collectUniversesFromFields r rOffset fieldInfos
647-
let rNew := mkResultUniverse us rOffset
647+
let rNew := mkResultUniverse us rOffset levelZero
648648
assignLevelMVar mvarId rNew
649649
instantiateMVars type
650650
| _ => throwError "failed to compute resulting universe level of structure, provide universe explicitly"

0 commit comments

Comments
 (0)