59 lines
3 KiB
Text
59 lines
3 KiB
Text
simplification rules for iff
|
|
[iff_self] #1, iff ?x_0 ?x_0 ↦ true
|
|
[false_iff] #1, iff false ?x_0 ↦ not ?x_0
|
|
[iff_false] #1, iff ?x_0 false ↦ not ?x_0
|
|
[true_iff] #1, iff true ?x_0 ↦ ?x_0
|
|
[iff_true] #1, iff ?x_0 true ↦ ?x_0
|
|
[false_iff_true] #0, iff false true ↦ false
|
|
[true_iff_false] #0, iff true false ↦ false
|
|
[not_iff_self] #1, iff (not ?x_0) ?x_0 ↦ false
|
|
[iff_not_self] #1, iff ?x_0 (not ?x_0) ↦ false
|
|
[nat.sub_le_iff_true] #2, le (sub ?x_0 ?x_1) ?x_0 ↦ true
|
|
[nat.zero_le_iff_true] #1, le 0 ?x_0 ↦ true
|
|
[nat.succ_le_self_iff_false] #1, le (succ ?x_0) ?x_0 ↦ false
|
|
[nat.pred_le_iff_true] #1, le (pred ?x_0) ?x_0 ↦ true
|
|
[nat.le_succ_iff_true] #1, le ?x_0 (succ ?x_0) ↦ true
|
|
[and_self] #1, and ?x_0 ?x_0 ↦ ?x_0
|
|
[and_not_self] #1, and ?x_0 (not ?x_0) ↦ false
|
|
[not_and_self] #1, and (not ?x_0) ?x_0 ↦ false
|
|
[false_and] #1, and false ?x_0 ↦ false
|
|
[and_false] #1, and ?x_0 false ↦ false
|
|
[true_and] #1, and true ?x_0 ↦ ?x_0
|
|
[and_true] #1, and ?x_0 true ↦ ?x_0
|
|
[and.left_comm] #3 perm, and ?x_0 (and ?x_1 ?x_2) ↦ and ?x_1 (and ?x_0 ?x_2)
|
|
[and.assoc] #3, and (and ?x_0 ?x_1) ?x_2 ↦ and ?x_0 (and ?x_1 ?x_2)
|
|
[and.comm] #2 perm, and ?x_0 ?x_1 ↦ and ?x_1 ?x_0
|
|
[heq_self_iff_true] #2, heq ?x_1 ?x_1 ↦ true
|
|
[nat.sub_lt_succ_iff_true] #2, lt (sub ?x_0 ?x_1) (succ ?x_0) ↦ true
|
|
[nat.lt_zero_iff_false] #1, lt ?x_0 0 ↦ false
|
|
[nat.self_lt_succ_iff_true] #1, lt ?x_0 (succ ?x_0) ↦ true
|
|
[nat.zero_lt_succ_iff_true] #1, lt 0 (succ ?x_0) ↦ true
|
|
[or_self] #1, or ?x_0 ?x_0 ↦ ?x_0
|
|
[false_or] #1, or false ?x_0 ↦ ?x_0
|
|
[or_false] #1, or ?x_0 false ↦ ?x_0
|
|
[true_or] #1, or true ?x_0 ↦ true
|
|
[or_true] #1, or ?x_0 true ↦ true
|
|
[or.left_comm] #3 perm, or ?x_0 (or ?x_1 ?x_2) ↦ or ?x_1 (or ?x_0 ?x_2)
|
|
[or.assoc] #3, or (or ?x_0 ?x_1) ?x_2 ↦ or ?x_0 (or ?x_1 ?x_2)
|
|
[or.comm] #2 perm, or ?x_0 ?x_1 ↦ or ?x_1 ?x_0
|
|
[eq_self_iff_true] #2, eq ?x_1 ?x_1 ↦ true
|
|
[simplifier.unit_simp.ite_and] #4, ite ?x_0 ?x_1 ?x_2 ↦ and (?x_0 → ?x_1) (not ?x_0 → ?x_2)
|
|
[simplifier.unit_simp.not_true_of_false] #0, not true ↦ false
|
|
[ne_self_iff_false] #2, not (eq ?x_1 ?x_1) ↦ false
|
|
[not_false_iff] #0, not false ↦ true
|
|
[simplifier.unit_simp.false_imp] #1, false → ?x_0 ↦ true
|
|
[simplifier.unit_simp.true_imp] #1, true → ?x_0 ↦ ?x_0
|
|
[simplifier.unit_simp.imp_true] #1, ?x_0 → true ↦ true
|
|
[simplifier.unit_simp.a_of_a] #1, ?x_0 → ?x_0 ↦ true
|
|
[simplifier.unit_simp.imp_and] #3, ?x_0 → and ?x_1 ?x_2 ↦ and (?x_0 → ?x_1) (?x_0 → ?x_2)
|
|
[simplifier.unit_simp.or_imp] #3, or ?x_0 ?x_1 → ?x_2 ↦ and (?x_0 → ?x_2) (?x_1 → ?x_2)
|
|
[simplifier.unit_simp.and_imp] #3, and ?x_0 ?x_1 → ?x_2 ↦ ?x_0 → ?x_1 → ?x_2
|
|
simplification rules for eq
|
|
[bla] #1, g ?x_0 ↦ add (f ?x_0) 1
|
|
[foo] #2, g ?x_0 ↦ 1
|
|
[foo] #2, f ?x_0 ↦ 0
|
|
[if_false] #3, ite false ?x_1 ?x_2 ↦ ?x_2
|
|
[if_true] #3, ite true ?x_1 ?x_2 ↦ ?x_1
|
|
[if_t_t] #4, ite ?x_0 ?x_3 ?x_3 ↦ ?x_3
|
|
[nat.zero_sub_eq_zero] #1, sub 0 ?x_0 ↦ 0
|
|
[nat.succ_sub_succ_eq_sub] #2, sub (succ ?x_0) (succ ?x_1) ↦ sub ?x_0 ?x_1
|