6fc0e41439
The congruence closure module treats these two terms as the same thing. So, we should take this into account when building proofs
44 lines
876 B
Text
44 lines
876 B
Text
import data.list
|
|
set_option blast.subst false
|
|
set_option blast.simp false
|
|
|
|
definition t1 (a b : nat) : (a = b) ↔ (b = a) :=
|
|
by blast
|
|
|
|
print t1
|
|
|
|
definition t2 (a b : nat) : (a = b) = (b = a) :=
|
|
by blast
|
|
|
|
print t2
|
|
|
|
definition t3 (a b : nat) : (a = b) == (b = a) :=
|
|
by blast
|
|
|
|
print t3
|
|
|
|
open perm
|
|
|
|
definition t4 (a b : list nat) : (a ~ b) ↔ (b ~ a) :=
|
|
by blast
|
|
|
|
definition t5 (a b : list nat) : (a ~ b) = (b ~ a) :=
|
|
by blast
|
|
|
|
definition t6 (a b : list nat) : (a ~ b) == (b ~ a) :=
|
|
by blast
|
|
|
|
definition t7 (p : Prop) (a b : nat) : a = b → b ≠ a → p :=
|
|
by blast
|
|
|
|
definition t8 (a b : Prop) : (a ↔ b) → ((b ↔ a) ↔ (a ↔ b)) :=
|
|
by blast
|
|
|
|
definition t9 (a b c : nat) : b = c → (a = b ↔ c = a) :=
|
|
by blast
|
|
|
|
definition t10 (a b c : list nat) : b ~ c → (a ~ b ↔ c ~ a) :=
|
|
by blast
|
|
|
|
definition t11 (a b c : list nat) : b ~ c → ((a ~ b) = (c ~ a)) :=
|
|
by blast
|