Equations
- Duper.instHashableLit = { hash := Duper.hashLit✝ }
Equations
- Duper.instInhabitedLitSide = { default := Duper.LitSide.lhs }
Equations
- Duper.instBEqLitSide = { beq := Duper.beqLitSide✝ }
Equations
- Duper.instHashableLitSide = { hash := Duper.hashLitSide✝ }
Equations
Instances For
Equations
- Duper.instToMessageDataLitSide = { toMessageData := Duper.LitSide.format }
Equations
Instances For
Equations
- Duper.instBEqLitPos = { beq := Duper.beqLitPos✝ }
Equations
- Duper.instHashableLitPos = { hash := Duper.hashLitPos✝ }
Equations
- Duper.Lit.fromExpr ((((Lean.Expr.const `Eq lvl).app ty).app lhs).app rhs) = { sign := true, lvl := lvl[0]!, ty := ty, lhs := lhs, rhs := rhs }
- Duper.Lit.fromExpr ((((Lean.Expr.const `Ne lvl).app ty).app lhs).app rhs) = { sign := false, lvl := lvl[0]!, ty := ty, lhs := lhs, rhs := rhs }
- Duper.Lit.fromExpr x✝ = dbgTrace (toString "Lit.fromExpr :: Unexpected Expression: " ++ toString x✝ ++ toString "") fun (x : Unit) => Duper.Lit.fromSingleExpr x✝
Instances For
def
Duper.Lit.instantiateLevelParamsArray
(l : Lit)
(paramNames : Array Lean.Name)
(levels : Array Lean.Level)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Duper.Lit.mapMByPos
{m : Type → Type u_1}
[Monad m]
[MonadLiftT Lean.MetaM m]
(f : Lean.Expr → Array ExprPos → m Lean.Expr)
(l : Lit)
(poses : Array LitPos)
:
m Lit
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Duper.Lit.fold f init l = f (f init l.lhs) l.rhs
Instances For
def
Duper.Lit.foldM
{β : Type v}
{m : Type v → Type w}
[Monad m]
(f : β → Lean.Expr → LitPos → m β)
(init : β)
(l : Lit)
:
m β
Equations
- Duper.Lit.foldM f init l = do let __do_lift ← f init l.lhs { side := Duper.LitSide.lhs, pos := Duper.ExprPos.empty } f __do_lift l.rhs { side := Duper.LitSide.rhs, pos := Duper.ExprPos.empty }
Instances For
def
Duper.Lit.foldGreenM
{m : Type → Type u_1}
{β : Type}
[Monad m]
[MonadLiftT Lean.MetaM m]
(f : β → Lean.Expr → LitPos → m β)
(init : β)
(l : Lit)
:
m β
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Duper.Lit.getAtPos!
{m : Type → Type u_1}
[Monad m]
[MonadLiftT Lean.MetaM m]
(l : Lit)
(pos : LitPos)
:
Equations
Instances For
def
Duper.Lit.replaceAtPos?
{m : Type → Type u_1}
[Monad m]
[MonadLiftT Lean.MetaM m]
(l : Lit)
(pos : LitPos)
(replacement : Lean.Expr)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Duper.Lit.replaceAtPos!
{m : Type → Type}
[Monad m]
[MonadLiftT Lean.MetaM m]
[Lean.MonadError m]
(l : Lit)
(pos : LitPos)
(replacement : Lean.Expr)
:
m Lit
Equations
- One or more equations did not get rendered due to their size.
Instances For
This function acts as Meta.kabstract except that it takes a LitPos rather than Occurrences and expects the given expression to consist only of applications up to the given ExprPos. Additionally, since the exact position is given, we don't need to pass in Meta.kabstract's second argument p
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- lit.makeLhs Duper.LitSide.lhs = lit
- lit.makeLhs Duper.LitSide.rhs = lit.symm
Instances For
Equations
- lit.getSide Duper.LitSide.lhs = lit.lhs
- lit.getSide Duper.LitSide.rhs = lit.rhs
Instances For
Equations
- lit.getOtherSide side = lit.getSide side.toggleSide
Instances For
Equations
- Duper.Lit.instToFormat = { format := fun (lit : Duper.Lit) => Std.format lit.toExpr }
Equations
- Duper.Lit.instToMessageData = { toMessageData := fun (lit : Duper.Lit) => Lean.MessageData.ofExpr lit.toExpr }
def
Duper.Lit.compare
(ord : Lean.Expr → Lean.Expr → Bool → Lean.MetaM Comparison)
(alreadyReduced : Bool)
(l₁ l₂ : Lit)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Duper.instBEqClause = { beq := Duper.beqClause✝ }
Equations
- Duper.instHashableClause = { hash := Duper.hashClause✝ }
- lit : Nat
Instances For
Equations
- Duper.instBEqClausePos = { beq := Duper.beqClausePos✝ }
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Duper.instToMessageDataClausePos = { toMessageData := Duper.ClausePos.format }
Equations
- Duper.Clause.fromSingleExpr paramNames e = { paramNames := paramNames, bVarTypes := #[], lits := #[Duper.Lit.fromSingleExpr e] }
Instances For
Equations
- Duper.Clause.litsToExpr [] = Lean.mkConst `False
- Duper.Clause.litsToExpr [l] = l.toExpr
- Duper.Clause.litsToExpr (l :: ls) = Lean.mkApp2 (Lean.mkConst `Or) l.toExpr (Duper.Clause.litsToExpr ls)
Instances For
Equations
Instances For
def
Duper.Clause.mapMUpdateType
{m : Type → Type u_1}
[instMonad : Monad m]
(c : Clause)
(f : Lean.Expr → m Lean.Expr)
:
m Clause
Equations
- c.mapMUpdateType f = do let bVarTypes ← Array.mapM f c.bVarTypes let lits ← Array.mapM (Duper.Lit.mapM f) c.lits pure { paramNames := c.paramNames, bVarTypes := bVarTypes, lits := lits }
Instances For
def
Duper.Clause.instantiateLevelParamsArray
(c : Clause)
(paramNames : Array Lean.Name)
(levels : Array Lean.Level)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- c.toForallExpr = Array.foldr (fun (ty b : Lean.Expr) => Lean.mkForall Lean.Name.anonymous Lean.BinderInfo.default ty b) c.toExpr c.bVarTypes
Instances For
Equations
- c.toLambdaExpr = Array.foldr (fun (ty b : Lean.Expr) => Lean.mkLambda Lean.Name.anonymous Lean.BinderInfo.default ty b) c.toExpr c.bVarTypes
Instances For
Equations
- Duper.Clause.fromForallExpr.deForall (Lean.Expr.forallE binderName ty body binderInfo) = match Duper.Clause.fromForallExpr.deForall body with | (l, e) => (ty :: l, e)
- Duper.Clause.fromForallExpr.deForall x✝ = ([], x✝)
Instances For
Equations
- Duper.Clause.fromForallExpr.litsFromExpr (((Lean.Expr.const `Or us).app litexpr).app other) = Duper.Lit.fromExpr litexpr :: Duper.Clause.fromForallExpr.litsFromExpr other
- Duper.Clause.fromForallExpr.litsFromExpr (Lean.Expr.const `False us) = []
- Duper.Clause.fromForallExpr.litsFromExpr x✝ = [Duper.Lit.fromExpr x✝]
Instances For
Equations
- Duper.Clause.instToFormat = { format := fun (c : Duper.Clause) => Std.format c.toForallExpr }
Equations
- Duper.Clause.instToMessageData = { toMessageData := fun (c : Duper.Clause) => Lean.MessageData.ofExpr c.toForallExpr }
Determines the precedence clause c
should have for clause selection. Lower values indicate higher precedence
Equations
- c.selectionPrecedence goalDistance = c.weight + goalDistance
Instances For
Equations
Instances For
Equations
- Duper.Clause.instToMessageDataProdClausePos = { toMessageData := Duper.Clause.ClauseAndClausePos.format }