Extra Qq helpers #
This file contains some additional functions for using the quote4 library more conveniently.
If e has type Sort u for some level u, return u and e : Q(Sort u).
Equations
- Qq.getLevelQ e = do let __do_lift ← Lean.Meta.getLevel e pure ⟨__do_lift, e⟩
Instances For
If e has type Type u for some level u, return u and e : Q(Type u).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Variant of inferTypeQ that yields a type in Type u rather than Sort u.
Throws an error if the type is a Prop or if it's otherwise not possible to represent
the universe as Type u (for example due to universe level metavariables).
Equations
- Qq.inferTypeQ' e = do let α ← Lean.Meta.inferType e let __discr ← Qq.getLevelQ' α match __discr with | ⟨v, α⟩ => pure ⟨v, ⟨α, e⟩⟩
Instances For
Return a local declaration whose type is definitionally equal to sort.
This is a Qq version of Lean.Meta.findLocalDeclWithType?
Equations
- Qq.findLocalDeclWithTypeQ? sort = do let __discr ← Lean.Meta.findLocalDeclWithType? q(«$sort») match __discr with | some fvarId => pure (some (Lean.Expr.fvar fvarId)) | x => pure none
Instances For
Returns a proof of p : Prop using decide p.
This is a Qq version of Lean.Meta.mkDecideProof.
Equations
Instances For
Join a list of elements of type α into a container β.
Usually β is q(Multiset α) or q(Finset α) or q(Set α).
As an example
mkSetLiteralQ q(Finset ℝ) (List.range 4 |>.map fun n : ℕ ↦ q($n•π))
produces the expression {0 • π, 1 • π, 2 • π, 3 • π} : Finset ℝ.
Returns the natural number literal n as used in the frontend. It is a OfNat.ofNat
application. Recall that all theorems and definitions containing numeric literals are encoded using
OfNat.ofNat applications in the frontend.
This is a Qq version of Lean.mkNatLit.