Cached proof nodes for conjugacy-invariant length bounds #
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implicit_reducible]
Equations
@[implicit_reducible]
Equations
Equations
- LeanPool.Polylean.instBEqProofNode.beq LeanPool.Polylean.ProofNode.empty LeanPool.Polylean.ProofNode.empty = true
- LeanPool.Polylean.instBEqProofNode.beq (LeanPool.Polylean.ProofNode.gen a) (LeanPool.Polylean.ProofNode.gen b) = (a == b)
- LeanPool.Polylean.instBEqProofNode.beq (LeanPool.Polylean.ProofNode.triang a a_1) (LeanPool.Polylean.ProofNode.triang b b_1) = (a == b && a_1 == b_1)
- LeanPool.Polylean.instBEqProofNode.beq (LeanPool.Polylean.ProofNode.conj a a_1) (LeanPool.Polylean.ProofNode.conj b b_1) = (a == b && a_1 == b_1)
- LeanPool.Polylean.instBEqProofNode.beq (LeanPool.Polylean.ProofNode.power a a_1) (LeanPool.Polylean.ProofNode.power b b_1) = (a == b && a_1 == b_1)
- LeanPool.Polylean.instBEqProofNode.beq x✝¹ x✝ = false
Instances For
The word whose length bound is justified by a proof node.
Equations
- LeanPool.Polylean.ProofNode.empty.top = #[]
- (LeanPool.Polylean.ProofNode.gen a).top = #[a]
- (LeanPool.Polylean.ProofNode.triang a a_1).top = a ++ a_1
- (LeanPool.Polylean.ProofNode.conj a a_1).top = a_1 ^ a
- (LeanPool.Polylean.ProofNode.power a a_1).top = a_1
Instances For
Render a proof node as a human-readable proof step.
Equations
- One or more equations did not get rendered due to their size.
- LeanPool.Polylean.ProofNode.empty.toString = "l(e) = 0 (trivial word)"
- (LeanPool.Polylean.ProofNode.gen a).toString = toString "l(" ++ toString a ++ toString ") = 1 (normalization)"
- (LeanPool.Polylean.ProofNode.conj a a_1).toString = toString "l(" ++ toString a_1 ++ toString "^" ++ toString a ++ toString ") = l(" ++ toString a_1 ++ toString ") (conjugacy invariance)"
- (LeanPool.Polylean.ProofNode.power a a_1).toString = toString "l(w) ≤ l(" ++ toString (a_1 ^ a) ++ toString ")/" ++ toString a ++ toString " (homogeneity)"
Instances For
@[implicit_reducible]
Equations
The previously derived words needed by this proof node.
Equations
Instances For
Length immediately justified by a base proof node, if any.
Equations
Instances For
Cache of floating-point length bounds for array-backed words.
Cache of proof nodes witnessing the best known bound for each word.
@[irreducible]
Compute a floating-point length bound while caching the proof nodes used.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Recursively expand cached proof nodes needed to justify a word.
Equations
- LeanPool.Polylean.resolveProof w = do let cache ← ST.Ref.get LeanPool.Polylean.proofCache LeanPool.Polylean.resolveProofWithFuel✝ (cache.size + 1) w
Instances For
Recompute the derived length from cached proof nodes, panicking if a node is absent.
Equations
- LeanPool.Polylean.derivedLength w = do let cache ← ST.Ref.get LeanPool.Polylean.proofCache LeanPool.Polylean.derivedLengthWithFuel✝ (cache.size + 1) w
Instances For
Recompute the derived length together with the list of proof nodes used.
Equations
- LeanPool.Polylean.derivedProof w = do let cache ← ST.Ref.get LeanPool.Polylean.proofCache LeanPool.Polylean.derivedProofWithFuel✝ (cache.size + 1) w