Given a and b the operands for And, apply the simplification rules:
- When a := _ ∈ hypothesisContext.hypothesisMap,
- return
some b
- return
- When b := _ ∈ hypothesisContext.hypothesisMap,
- return
some a
- return
- When ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ a
- return
some False
- return
- When ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ b
- return
some False
- return
- Otherwise:
- return
none
- return
Equations
- One or more equations did not get rendered due to their size.
Instances For
Apply the following simplification/normalization rules on And :
- False ∧ e ==> False
- True ∧ e ==> e
- e1 ∧ e2 ==> e1 (if e1 =ₚₜᵣ e2)
- e ∧ ¬ e ==> False
- true = e ∧ false = e ==> False
- e1 ∧ (e1 → e2) ==> e1 ∧ e2 (if ¬ e2.hasLooseBVars)
- e1 ∧ (e2 → e1) ==> e1
- (e1 → e2) ∧ (¬ e1 → e2) ==> e2
- e1 ∧ e2 ==> e2 (if e1 := _ ∈ hypothesisContext.hypothesisMap)
- e1 ∧ e2 ==> e1 (if e2 := _ ∈ hypothesisContext.hypothesisMap)
- e1 ∧ e2 ==> False (if ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ e1)
- e1 ∧ e2 ==> False (if ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ e2)
- e1 ∧ e2 ==> e2 ∧ e1 (if e2 <ₒ e1)
Assume that f = Expr.const ``And.
An error is triggered when args.size ≠ 2 (i.e., only fully applied
Andexpected at this stage) TODO: consider additional simplification rules
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a and b the operands for And, apply the simplification rules:
- When
b := a → c ∧ ¬ c.hasLooseBVars- return
some a ∧ c
- return
- When
b := c → a- return
some a
- return
- When
a := c → d ∧ b := ¬ c → d- return
some d
- return
- Otherwise:
- return
none
- return
Equations
- One or more equations did not get rendered due to their size.
- Blaster.Optimize.optimizeAnd.andImpliesReduce? f a b = pure none
Instances For
Given a and b the operands for Or, apply the simplification rules:
- When a := _ ∈ hypothesisContext.hypothesisMap,
- return
some True
- return
- When b := _ ∈ hypothesisContext.hypothesisMap,
- return
some True
- return
- When ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ a
- return
some b
- return
- When ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ b
- return
some a
- return
- Otherwise:
- return
none
- return
Equations
- One or more equations did not get rendered due to their size.
Instances For
Apply the following simplification/normalization rules on Or :
- False ∨ e ==> e
- True ∨ e ==> True
- e1 ∨ e2 ==> e1 (if e1 =ₚₜᵣ e2)
- e ∨ ¬ e ==> True (classical)
- true = e ∨ false = e ==> True
- e1 ∨ (e1 → e2) ==> True
- e1 ∨ (e2 → e1) ==> (e2 → e1)
- e1 ∨ e2 ==> True (if e1 := _ ∈ hypothesisContext.hypothesisMap)
- e1 ∨ e2 ==> True (if e2 := _ ∈ hypothesisContext.hypothesisMap)
- e1 ∨ e2 ==> e2 (if ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ e1)
- e1 ∨ e2 ==> e1 (if ∃ e := _ ∈ hypothesisContext.hypothesisMap, e = ¬ e2)
- e1 ∨ e2 ==> e2 ∨ e1 (if e2 <ₒ e1)
Assume that f = Expr.const ``Or.
An error is triggered when args.size ≠ 2 (i.e., only fully applied
Orexpected at this stage) TODO: consider additional simplification rules
Equations
- One or more equations did not get rendered due to their size.
Instances For
Normalize p ↔ p to p → q ∧ p → q
An error is triggered when args.size ≠ 2 (i.e., only fully applied ↔ expected at this stage)
Equations
- One or more equations did not get rendered due to their size.