- fixed: Lean.Meta.CongrArgKind
- fixedNoParam: Lean.Meta.CongrArgKind
- eq: Lean.Meta.CongrArgKind
- cast: Lean.Meta.CongrArgKind
- heq: Lean.Meta.CongrArgKind
- subsingletonInst: Lean.Meta.CongrArgKind
Equations
- Lean.Meta.instInhabitedCongrArgKind = { default := Lean.Meta.CongrArgKind.fixed }
- type : Lean.Expr
- proof : Lean.Expr
- argKinds : Array Lean.Meta.CongrArgKind
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Meta.mkHCongrWithArity.withNewEqs
{α : Type}
(xs : Array Lean.Expr)
(ys : Array Lean.Expr)
(k : Array Lean.Expr → Array Lean.Meta.CongrArgKind → Lean.MetaM α)
:
Equations
- Lean.Meta.mkHCongrWithArity.withNewEqs xs ys k = Lean.Meta.mkHCongrWithArity.withNewEqs.loop xs ys k 0 #[] #[]
partial def
Lean.Meta.mkHCongrWithArity.withNewEqs.loop
{α : Type}
(xs : Array Lean.Expr)
(ys : Array Lean.Expr)
(k : Array Lean.Expr → Array Lean.Meta.CongrArgKind → Lean.MetaM α)
(i : Nat)
(eqs : Array Lean.Expr)
(kinds : Array Lean.Meta.CongrArgKind)
:
Equations
- Lean.Meta.mkHCongr f = do let a ← Lean.Meta.getFunInfo f Lean.Meta.mkHCongrWithArity f (Lean.Meta.FunInfo.getArity a)
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Meta.mkCongrSimpCore?
(f : Lean.Expr)
(info : Lean.Meta.FunInfo)
(kinds : Array Lean.Meta.CongrArgKind)
:
Create a congruence theorem that is useful for the simplifier.
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Meta.mkCongrSimpCore?.mk?
(f : Lean.Expr)
(info : Lean.Meta.FunInfo)
(kinds : Array Lean.Meta.CongrArgKind)
:
Create a congruence theorem that is useful for the simplifier.
In this kind of theorem, if the i-th argument is a cast
argument, then the theorem
contains an input a_i
representing the i-th argument in the left-hand-side, and
it appears with a cast (e.g., Eq.drec ... a_i ...
) in the right-hand-side.
The idea is that the right-hand-side of this theorem "tells" the simplifier
how the resulting term looks like.
Equations
- One or more equations did not get rendered due to their size.
partial def
Lean.Meta.mkCongrSimpCore?.mk?.go
(f : Lean.Expr)
(info : Lean.Meta.FunInfo)
(kinds : Array Lean.Meta.CongrArgKind)
(lhss : Array Lean.Expr)
(i : Nat)
(rhss : Array Lean.Expr)
(eqs : Array (Option Lean.Expr))
(hyps : Array Lean.Expr)
:
Equations
- Lean.Meta.mkCongrSimpCore?.mkProof type kinds = Lean.Meta.mkCongrSimpCore?.mkProof.go kinds 0 type
partial def
Lean.Meta.mkCongrSimpCore?.mkProof.go
(kinds : Array Lean.Meta.CongrArgKind)
(i : Nat)
(type : Lean.Expr)
:
Equations
- Lean.Meta.mkCongrSimp? f = do let info ← Lean.Meta.getFunInfo f Lean.Meta.mkCongrSimpCore? f info (Lean.Meta.getCongrSimpKinds info)