lean4-htt/tests/lean/coe.lean
2024-02-10 04:58:28 +00:00

53 lines
912 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Lean
structure WrappedNat where
val : Nat
structure WrappedFun (α) where
fn : Nat → α
structure WrappedType where
typ : Type
attribute [coe] WrappedNat.val
instance : Coe WrappedNat Nat where coe := WrappedNat.val
#eval Lean.Meta.registerCoercion ``WrappedFun.fn (some ⟨2, 1, .coeFun⟩)
instance : CoeFun (WrappedFun α) (fun _ => Nat → α) where coe := WrappedFun.fn
#eval Lean.Meta.registerCoercion ``WrappedType.typ (some ⟨1, 0, .coeSort⟩)
instance : CoeSort WrappedType Type where coe := WrappedType.typ
section coe
variable (n : WrappedNat)
#check (↑n : Nat)
#check n.val
end coe
section coeFun
variable (f : WrappedFun Nat) (g : Nat → WrappedFun Nat) (h : WrappedFun (WrappedFun Nat))
#check f.fn
#check ⇑f
#check ⇑f 1
#check ⇑(g 1)
#check g 1 2
#check ⇑h
end coeFun
section coeSort
variable (t : WrappedType)
#check t.typ
#check ↥t
end coeSort