38 lines
1 KiB
Text
38 lines
1 KiB
Text
|
/-
|
|||
|
1. A ∧ B → C ==> { A → B → C }
|
|||
|
2. A ∨ B → C ==> { A → C, B → C }
|
|||
|
3. A → B ∧ C ==> { A → C, A → C }
|
|||
|
4. A ↔ B ==> { (A → B) ∧ (B → A) }
|
|||
|
5. Push negations inside ∧ and ∨ (when using classical)
|
|||
|
6. ite A B C ==> { A → B, ¬ A → C }
|
|||
|
-/
|
|||
|
|
|||
|
open simplifier.unit_simp
|
|||
|
set_option simplify.max_steps 100000
|
|||
|
|
|||
|
namespace vars
|
|||
|
variables {A B C D E F G : Prop}
|
|||
|
variables [A_dec : decidable A]
|
|||
|
|
|||
|
#simplify iff env 0 A → B ∧ C
|
|||
|
#simplify iff env 0 A → B ∧ C ∧ D
|
|||
|
#simplify iff env 0 A → B ∧ C → D
|
|||
|
#simplify iff env 0 A → B ∧ C → D ∧ E
|
|||
|
#simplify iff env 0 A → B ∧ C → D ∨ E → F ∧ G
|
|||
|
#simplify iff env 0 A → B ∧ C → D ∨ E → ((F → G) ∧ (G → F))
|
|||
|
|
|||
|
end vars
|
|||
|
|
|||
|
namespace cs
|
|||
|
|
|||
|
constants {A B C D E F G : Prop}
|
|||
|
constants [A_dec : decidable A]
|
|||
|
|
|||
|
attribute A_dec [instance]
|
|||
|
|
|||
|
#simplify iff env 0 ite A B C
|
|||
|
#simplify iff env 0 ite A B C → B ∧ C
|
|||
|
#simplify iff env 0 A → (ite A B C)
|
|||
|
#simplify iff env 0 A → B ∧ (ite A B C) → D ∨ E → ((F → G) ∧ (G → F))
|
|||
|
end cs
|