Normalisation Rules #
@[implicit_reducible]
Equations
- Aesop.instInhabitedNormRuleInfo = { default := Aesop.instInhabitedNormRuleInfo.default }
Equations
- Aesop.instInhabitedNormRuleInfo.default = { penalty := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.instOrdNormRuleInfo = { compare := fun (i j : Aesop.NormRuleInfo) => compare i.penalty j.penalty }
@[implicit_reducible]
Equations
- Aesop.instLTNormRuleInfo = ltOfOrd
@[implicit_reducible]
Equations
- Aesop.instLENormRuleInfo = leOfOrd
@[reducible, inline]
Equations
Instances For
@[implicit_reducible]
Equations
- Aesop.instToStringNormRule = { toString := fun (r : Aesop.NormRule) => toString "[" ++ toString r.extra.penalty ++ toString "] " ++ toString r.name }
Equations
Instances For
Equations
Instances For
Safe and Almost Safe Rules #
@[implicit_reducible]
Equations
- Aesop.instInhabitedSafety = { default := Aesop.instInhabitedSafety.default }
Instances For
@[implicit_reducible]
Equations
- Aesop.Safety.instToString = { toString := fun (x : Aesop.Safety) => match x with | Aesop.Safety.safe => "safe" | Aesop.Safety.almostSafe => "almostSafe" }
Equations
- Aesop.instInhabitedSafeRuleInfo.default = { penalty := default, safety := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.instInhabitedSafeRuleInfo = { default := Aesop.instInhabitedSafeRuleInfo.default }
@[implicit_reducible]
Equations
- Aesop.instOrdSafeRuleInfo = { compare := fun (i j : Aesop.SafeRuleInfo) => compare i.penalty j.penalty }
@[implicit_reducible]
Equations
- Aesop.instLTSafeRuleInfo = ltOfOrd
@[implicit_reducible]
Equations
- Aesop.instLESafeRuleInfo = leOfOrd
@[reducible, inline]
Equations
Instances For
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
Equations
Instances For
Unsafe Rules #
@[implicit_reducible]
Equations
Equations
- Aesop.instInhabitedUnsafeRuleInfo.default = { successProbability := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.instOrdUnsafeRuleInfo = { compare := fun (i j : Aesop.UnsafeRuleInfo) => compare j.successProbability i.successProbability }
@[implicit_reducible]
Equations
- Aesop.instLTUnsafeRuleInfo = ltOfOrd
@[implicit_reducible]
Equations
- Aesop.instLEUnsafeRuleInfo = leOfOrd
@[reducible, inline]
Equations
Instances For
@[implicit_reducible]
Equations
- Aesop.instToStringUnsafeRule = { toString := fun (r : Aesop.UnsafeRule) => toString "[" ++ toString r.extra.successProbability.toHumanString ++ toString "] " ++ toString r.name }
Instances For
Regular Rules #
- safe (r : SafeRule) : RegularRule
- unsafe (r : UnsafeRule) : RegularRule
Instances For
Equations
Instances For
@[implicit_reducible]
Equations
- Aesop.instInhabitedRegularRule = { default := Aesop.instInhabitedRegularRule.default }
Equations
- Aesop.instBEqRegularRule.beq (Aesop.RegularRule.safe a) (Aesop.RegularRule.safe b) = (a == b)
- Aesop.instBEqRegularRule.beq (Aesop.RegularRule.unsafe a) (Aesop.RegularRule.unsafe b) = (a == b)
- Aesop.instBEqRegularRule.beq xโยน xโ = false
Instances For
@[implicit_reducible]
Equations
- Aesop.instBEqRegularRule = { beq := Aesop.instBEqRegularRule.beq }
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
Equations
Instances For
Equations
- (Aesop.RegularRule.safe r).isSafe = true
- (Aesop.RegularRule.unsafe r).isSafe = false
Instances For
Equations
- (Aesop.RegularRule.safe r).isUnsafe = false
- (Aesop.RegularRule.unsafe r).isUnsafe = true
Instances For
@[inline]
def
Aesop.RegularRule.withRule
{ฮฒ : Sort u_1}
(f : {ฮฑ : Type} โ Rule ฮฑ โ ฮฒ)
:
RegularRule โ ฮฒ
Equations
- Aesop.RegularRule.withRule f (Aesop.RegularRule.safe r) = f r
- Aesop.RegularRule.withRule f (Aesop.RegularRule.unsafe r) = f r
Instances For
Equations
- r.name = Aesop.RegularRule.withRule (fun {ฮฑ : Type} (x : Aesop.Rule ฮฑ) => x.name) r
Instances For
Equations
- r.indexingMode = Aesop.RegularRule.withRule (fun {ฮฑ : Type} (x : Aesop.Rule ฮฑ) => x.indexingMode) r
Instances For
Equations
- r.tac = Aesop.RegularRule.withRule (fun {ฮฑ : Type} (x : Aesop.Rule ฮฑ) => x.tac) r
Instances For
Normalisation Simp Rules #
A global rule for the norm simplifier. Each SimpEntry represents a member
of the simp set, e.g. a declaration whose type is an equality or a smart
unfolding theorem for a declaration.
- name : RuleName
- entries : Array Lean.Meta.SimpEntry
Instances For
@[implicit_reducible]
Equations
- Aesop.instInhabitedNormSimpRule = { default := Aesop.instInhabitedNormSimpRule.default }
Equations
- Aesop.instInhabitedNormSimpRule.default = { name := default, entries := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.NormSimpRule.instBEq = { beq := fun (r s : Aesop.NormSimpRule) => r.name == s.name }
@[implicit_reducible]
Equations
- Aesop.NormSimpRule.instHashable = { hash := fun (r : Aesop.NormSimpRule) => hash r.name }
A local rule for the norm simplifier.
- id : Lean.Name
- simpTheorem : Lean.Term
Instances For
@[implicit_reducible]
Equations
Equations
- Aesop.instInhabitedLocalNormSimpRule.default = { id := default, simpTheorem := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.LocalNormSimpRule.instBEq = { beq := fun (rโ rโ : Aesop.LocalNormSimpRule) => rโ.id == rโ.id }
@[implicit_reducible]
Equations
- Aesop.LocalNormSimpRule.instHashable = { hash := fun (r : Aesop.LocalNormSimpRule) => hash r.id }
Equations
- r.name = { name := r.id, builder := Aesop.BuilderName.simp, phase := Aesop.PhaseName.norm, scope := Aesop.ScopeName.local }
Instances For
- decl : Lean.Name
- unfoldThm? : Option Lean.Name
Instances For
@[implicit_reducible]
Equations
- Aesop.instInhabitedUnfoldRule = { default := Aesop.instInhabitedUnfoldRule.default }
Equations
- Aesop.instInhabitedUnfoldRule.default = { decl := default, unfoldThm? := default }
Instances For
@[implicit_reducible]
Equations
- Aesop.UnfoldRule.instBEq = { beq := fun (r s : Aesop.UnfoldRule) => r.decl == s.decl }
@[implicit_reducible]
Equations
- Aesop.UnfoldRule.instHashable = { hash := fun (r : Aesop.UnfoldRule) => hash r.decl }
Equations
- r.name = { name := r.decl, builder := Aesop.BuilderName.unfold, phase := Aesop.PhaseName.norm, scope := Aesop.ScopeName.global }