The priority of a forward rule.
- normSafe
(n : Int)
: ForwardRulePriority
If the rule is a norm or safe rule, its priority is an integer.
- unsafe
(p : Percent)
: ForwardRulePriority
If the rule is an unsafe rule, its priority is a percentage representing the rule's success probability.
Instances For
Equations
Equations
Instances For
Equations
Equations
- Aesop.instBEqForwardRulePriority.beq (Aesop.ForwardRulePriority.normSafe a) (Aesop.ForwardRulePriority.normSafe b) = (a == b)
- Aesop.instBEqForwardRulePriority.beq (Aesop.ForwardRulePriority.unsafe a) (Aesop.ForwardRulePriority.unsafe b) = (a == b)
- Aesop.instBEqForwardRulePriority.beq xโยน xโ = false
Instances For
If a ForwardRulePriority contains a penalty, extract it.
Equations
- (Aesop.ForwardRulePriority.normSafe n).penalty? = some n
- (Aesop.ForwardRulePriority.unsafe p).penalty? = none
Instances For
If a ForwardRulePriority contains a success probability, extract it.
Equations
- (Aesop.ForwardRulePriority.unsafe p).successProbability? = some p
- (Aesop.ForwardRulePriority.normSafe n).successProbability? = none
Instances For
Compare two rule priorities. Less means higher priority ('better'). Norm/safe rules have higher priority than unsafe rules. Among norm/safe rules, lower penalty is better. Among unsafe rules, higher percentage is better.
Equations
- (Aesop.ForwardRulePriority.normSafe n).compare (Aesop.ForwardRulePriority.unsafe p) = Ordering.lt
- (Aesop.ForwardRulePriority.unsafe p).compare (Aesop.ForwardRulePriority.normSafe n) = Ordering.gt
- (Aesop.ForwardRulePriority.normSafe nโ).compare (Aesop.ForwardRulePriority.normSafe nโ) = compare nโ nโ
- (Aesop.ForwardRulePriority.unsafe pโ).compare (Aesop.ForwardRulePriority.unsafe pโ) = (compare pโ pโ).swap
Instances For
Equations
- Aesop.ForwardRulePriority.instOrd = { compare := Aesop.ForwardRulePriority.compare }
Equations
- One or more equations did not get rendered due to their size.
A forward rule.
- numPremises : Nat
- numLevelParams : Nat
- slotClusters : Array (Array Slot)
- conclusionDeps : Array PremiseIndex
- rulePatternInfo? : Option (RulePattern ร PremiseIndex)
- name : RuleName
The rule's name. Should be unique among all rules in a rule set.
- term : RuleTerm
The theorem from which this rule is derived.
- prio : ForwardRulePriority
The rule's priority.
Instances For
Equations
- Aesop.instInhabitedForwardRule = { default := Aesop.instInhabitedForwardRule.default }
Equations
- Aesop.instInhabitedForwardRule.default = { toForwardRuleInfo := default, name := default, term := default, prio := default }
Instances For
Equations
- Aesop.ForwardRule.instBEq = { beq := fun (rโ rโ : Aesop.ForwardRule) => rโ.name == rโ.name }
Equations
- Aesop.ForwardRule.instHashable = { hash := fun (r : Aesop.ForwardRule) => hash r.name }
Equations
- Aesop.ForwardRule.instOrd = { compare := fun (rโ rโ : Aesop.ForwardRule) => (compare rโ.prio rโ.prio).then (compare rโ.name rโ.name) }
Equations
- Aesop.ForwardRule.instToString = { toString := fun (r : Aesop.ForwardRule) => toString "[" ++ toString r.prio ++ toString "] " ++ toString r.name }
Is this rule a destruct rule (i.e., should we clear matched hyps)?
Equations
- r.destruct = match r.name.builder with | Aesop.BuilderName.destruct => true | x => false