Note: This function currently excludes lambdas that appear in forallE, lam, or letE types.
Equations
- Duper.occursInLambdaNotDirectlyBelowQuantifier c t = Duper.MClause.fold (fun (b : Bool) (e : Lean.Expr) => b || Duper.occursInLambdaNotDirectlyBelowQuantifier.visit t e false false) false c
Instances For
@[specialize #[]]
def
Duper.occursInLambdaNotDirectlyBelowQuantifier.visit
(t e : Lean.Expr)
(directlyBelowQuantifier inLambda : Bool)
:
Equations
Instances For
Equations
- Duper.occursInArgumentOfAppliedVariable c t = Duper.MClause.fold (fun (b : Bool) (e : Lean.Expr) => b || Duper.occursInArgumentOfAppliedVariable.visit t e false) false c
Instances For
@[specialize #[]]
def
Duper.occursInArgumentOfAppliedVariable.visit
(t e : Lean.Expr)
(inArgumentOfAppliedVariable : Bool)
:
Equations
Instances For
Returns true if t
is an mvar that occurs deeply in MClause c
.
A variable occurs deeply in an mclause c
if it occurs inside an argument of an applied
variable or inside a λ-expression that is not directly below a quantifier.
Equations
Instances For
A syntactic overapproximation of fluid or deep terms
Equations
- Duper.isFluidOrDeep c t = (Duper.Order.isFluid t || Duper.isDeep c t)