2015-11-05 05:53:12 +00:00
|
|
|
/- Basic pi congruence -/
|
|
|
|
import logic.connectives logic.quantifiers
|
|
|
|
|
|
|
|
namespace pi_congr1
|
|
|
|
constants (p1 q1 p2 q2 p3 q3 : Prop) (H1 : p1 ↔ q1) (H2 : p2 ↔ q2) (H3 : p3 ↔ q3)
|
2015-11-16 19:01:53 +00:00
|
|
|
namespace tst
|
|
|
|
attribute congr_forall [congr]
|
|
|
|
attribute congr_imp [congr]
|
|
|
|
attribute H1 [simp]
|
|
|
|
attribute H2 [simp]
|
|
|
|
attribute H3 [simp]
|
|
|
|
end tst
|
2015-11-05 05:53:12 +00:00
|
|
|
|
2015-11-16 19:01:53 +00:00
|
|
|
#simplify iff tst 1 p1 -- Broken?
|
|
|
|
#simplify iff tst 1 p1 → p2
|
|
|
|
#simplify iff tst 1 p1 → p2 → p3
|
2015-11-05 05:53:12 +00:00
|
|
|
|
|
|
|
end pi_congr1
|
|
|
|
|
|
|
|
namespace pi_congr2
|
|
|
|
universe l
|
|
|
|
constants (T : Type.{l}) (P Q : T → Prop) (H : ∀ (x : T), P x ↔ Q x)
|
2015-11-16 19:01:53 +00:00
|
|
|
namespace tst
|
|
|
|
attribute H [simp]
|
|
|
|
end tst
|
2015-11-05 05:53:12 +00:00
|
|
|
constant (x : T)
|
|
|
|
|
2015-11-16 19:01:53 +00:00
|
|
|
#simplify iff tst 1 (∀ (x : T), P x)
|
2015-11-05 05:53:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
end pi_congr2
|