2015-11-05 05:53:12 +00:00
|
|
|
-- Simplifying the operator with a user-defined congruence
|
|
|
|
import logic.connectives
|
|
|
|
|
|
|
|
constants (P1 Q1 P2 Q2 P3 Q3 : Prop) (H1 : P1 ↔ Q1) (H2 : P2 ↔ Q2) (H3 : P3 ↔ Q3)
|
|
|
|
constants (f g : Prop → Prop → Prop)
|
|
|
|
constants (Hf : and = f) (Hg : f = g)
|
2015-11-16 19:01:53 +00:00
|
|
|
namespace tst
|
2015-11-05 05:53:12 +00:00
|
|
|
attribute H1 [simp]
|
|
|
|
attribute H2 [simp]
|
|
|
|
attribute H3 [simp]
|
|
|
|
attribute Hf [simp]
|
|
|
|
attribute Hg [simp]
|
2015-11-16 19:01:53 +00:00
|
|
|
end tst
|
2015-11-05 05:53:12 +00:00
|
|
|
|
2015-11-16 19:01:53 +00:00
|
|
|
#simplify iff tst 2 (and P1 (and P2 P3))
|
|
|
|
#simplify iff tst 2 (and P1 (iff P2 P3))
|