Equations
Equations
- Lean.IR.UnreachableBranches.instToStringValue = { toString := fun (v : Lean.IR.UnreachableBranches.Value) => toString (Std.format v) }
In truncate
, we approximate a value as top
if depth > truncateMaxDepth
.
TODO: add option to control this parameter.
Instances For
Make sure constructors of recursive inductive datatypes can only occur once in each path.
Values at depth > truncateMaxDepth are also approximated at top
.
We use this function this function to implement a simple widening operation for our abstract
interpreter.
Recall the widening functions is used to ensure termination in abstract interpreters.
Equations
Instances For
Widening operator that guarantees termination in our abstract interpreter.
Equations
- Lean.IR.UnreachableBranches.Value.widening env v₁ v₂ = Lean.IR.UnreachableBranches.Value.truncate env (v₁.merge v₂) ∅
Instances For
@[reducible, inline]
Equations
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
Equations
Instances For
- currFnIdx : Nat
- env : Environment
- lctx : LocalContext
Instances For
- assignments : Array Assignment
- visitedJps : Array (Std.HashSet JoinPointId)
Instances For
@[reducible, inline]
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Lean.IR.UnreachableBranches.interpExpr (Lean.IR.Expr.proj i x_1) = do let __do_lift ← Lean.IR.UnreachableBranches.findVarValue x_1 pure (Lean.IR.UnreachableBranches.projValue __do_lift i)
- Lean.IR.UnreachableBranches.interpExpr x✝ = pure Lean.IR.UnreachableBranches.Value.top
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.IR.UnreachableBranches.updateJPParamsAssignment
(j : JoinPointId)
(ys : Array Param)
(xs : Array Arg)
:
Return true if the assignment of at least one parameter has been updated.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.IR.UnreachableBranches.elimDead assignment (Lean.IR.Decl.fdecl f xs type b info) = (Lean.IR.Decl.fdecl f xs type b info).updateBody! (Lean.IR.UnreachableBranches.elimDeadAux assignment b)
- Lean.IR.UnreachableBranches.elimDead assignment d = d