deconstructUnitors
Deconstruct a left or right unitor [inverse] morphism.
deconstructUnitors (e : Lean.Expr) (eLvl : Lean.Level) (left hom : Bool) : Lean.MetaM (Lean.Expr × Lean.Expr)deconstructUnitors (e : Lean.Expr) (eLvl : Lean.Level) (left hom : Bool) : Lean.MetaM (Lean.Expr × Lean.Expr)
Code
def deconstructUnitors (e : Expr) (eLvl : Level) (left hom : Bool) :
MetaM (Expr × Expr) := do
let args := e.getAppArgs
let SX := args[args.size - 1]!
let X ← getTypeFromSFinKer SX
let ex ← idME X
let (X₀, x₀Lvl) ← getOriginalType X
let ex₀ ← constructMeasurableEquiv X₀ x₀Lvl eLvl
let const_args := [eLvl, x₀Lvl, eLvl, Level.zero]
let const_name :=
if left then
if hom then ``leftUnitor_hom
else ``leftUnitor_inv
else
if hom then ``rightUnitor_hom
else ``rightUnitor_inv
let const := mkConst const_name const_args
let unitor_proof_eq ← mkAppM' const #[SX, ex, ex₀]
return (← getKernelRHSEqProofType unitor_proof_eq, unitor_proof_eq)Actions: Source · Open Issue
Meaning last changed in v4.34.0-rc2-1-g439785b (2026-08-23).
Self-contained, with its dependencies inlined and proofs replaced by sorry: download the raw file · open it in the Lean web editor.
Dependency graph
Audit surface: 5 project declarations, 112 external constants
✓ Proved: no sorry anywhere in its closure
This is the tool's own reading of one build's recorded axioms, and it is not robust against an author who wants it to pass. Checking meant to be relied on should go through Comparator, which replays the proof through the kernel from an export against an explicit list of permitted axioms.